FileNet ContentElement 签出

Posted

技术标签:

【中文标题】FileNet ContentElement 签出【英文标题】:FileNet ContentElement CheckOut 【发布时间】:2017-05-22 19:10:20 【问题描述】:

我有一个代码模块,并且支持 jars 作为内容元素。每当我更改 java 代码并想要更新新的 jar 时,我都会进行签出和签入。但是在这个过程中,我check out的时候,所有的支持jar也需要手动添加。有没有办法只签出我要更新的 jar,留下支持的 jar?

【问题讨论】:

【参考方案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();
            



        

    

【讨论】:

以上是关于FileNet ContentElement 签出的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Flux FlexForm 配置中选择和存储 ContentElement UID?

FileNet:FileNet 文件夹中的文档总数

Filenet - 从 Filenet Workflow 中的用户 ID 中获取电子邮件 ID

从文档中删除 SID - FileNet

FileNet:获取存储区域上的可用空间

Filenet - 投票批准路由