2017-05-22 10 views
1

코드 모듈이 있고 내용 요소로 jar를 지원합니다. Java 코드를 변경하고 새 항아리를 업데이트 할 때마다 체크 아웃하고 체크인합니다. 그러나이 과정에서 체크 아웃 할 때 모든 지원 jar도 수동으로 추가해야합니다. 지원되는 항아리를 남겨두고 업데이트하려는 항아리를 체크 아웃 할 수있는 방법이 있습니까?FileNet ContentElement CheckOut

답변

1

이것을 달성하기 위해 간단한 코드를 작성했습니다. 희망이 다른 사람들을 도웁니다

import java.io.File; 
    import java.io.FileInputStream; 
    import java.io.FileNotFoundException; 
    import java.util.LinkedHashMap; 
    import java.util.Map; 

    import javax.security.auth.Subject; 

    import com.filenet.api.admin.CodeModule; 
    import com.filenet.api.collection.ContentElementList; 
    import com.filenet.api.constants.AutoClassify; 
    import com.filenet.api.constants.CheckinType; 
    import com.filenet.api.constants.RefreshMode; 
    import com.filenet.api.constants.ReservationType; 
    import com.filenet.api.core.Connection; 
    import com.filenet.api.core.ContentTransfer; 
    import com.filenet.api.core.Domain; 
    import com.filenet.api.core.Factory; 
    import com.filenet.api.core.ObjectStore; 
    import com.filenet.api.util.UserContext; 

    public class UpdateCodeModule { 

     public static void main(String[] arg){ 
     com.filenet.api.admin.CodeModule module=null; 
     try{ 
      Connection conn = Factory.Connection.getConnection("http://server:port/wsi/FNCEWS40MTOM"); 

      Subject subject = UserContext.createSubject(conn, "user_id", "password", "FileNetP8WSI"); 
      UserContext uc = UserContext.get(); 
      uc.pushSubject(subject); 
      Domain domain = Factory.Domain.fetchInstance(conn, "domain_name", null); 

      ObjectStore os = Factory.ObjectStore.fetchInstance(domain, "objectstore name", null); 
      module = Factory.CodeModule.getInstance(os, "/CodeModules/codemodulename"); 
      module.clearPendingActions(); 

      module.checkout(ReservationType.OBJECT_STORE_DEFAULT, null, "CodeModule", null); 
      module.save(RefreshMode.REFRESH); 
      ContentElementList element = Factory.ContentElement.createList(); 


      CodeModule resveration = (CodeModule)module.get_Reservation(); 
      File[] jars = new File("path to jars").listFiles(); 
      LinkedHashMap<String, File> likedMap=new LinkedHashMap<String, File>();; 
      for (File file : jars) { 
       if(file.getName().equalsIgnoreCase("codemodule.jar")){ 
       likedMap.put(file.getName(), file); 

       } 
      } 
      for (File file : jars) { 
       if(!file.getName().equalsIgnoreCase("codemodule.jar")){ 
       likedMap.put(file.getName(), file); 

       } 
      } 
      for (Map.Entry<String, File> file : likedMap.entrySet()) { 
       ContentTransfer ct = Factory.ContentTransfer.createInstance(); 
       try { 
       ct.setCaptureSource(new FileInputStream(file.getValue())); 
       ct.set_RetrievalName(file.getKey()); 
       } catch (FileNotFoundException e) { 
       // TODO Auto-generated catch block 
       e.printStackTrace(); 
       } 
       element.add(ct); 
      } 
      resveration.set_ContentElements(element); 
      resveration.checkin(AutoClassify.DO_NOT_AUTO_CLASSIFY, CheckinType.MAJOR_VERSION); 
      resveration.save(RefreshMode.REFRESH); 
      resveration.promoteVersion(); 
     }catch(Exception e){ 
      e.printStackTrace(); 
     }finally{ 
      module.cancelCheckout(); 
      } 



     } 

    }