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?