更新document新版本的内容

        Document是可版本化对象,在我们最初创建并check in一个新的document时,我们就初始化了一个新的版本,而当我们在将此版本check out编辑后进行check in,则我们便得到了该文档的一个新的版本。下面展现文档版本变化过程中添加文档内容和保留上个版本文档内容的过程。

	Connection conn = CEHelper.getConnection();
		CEHelper.pushSubject(conn, "Administrator", "filenet");
		ObjectStore os = CEHelper.getObjectStore(conn);
		
		Document doc = Factory.Document.fetchInstance(os, new Id("{1FC02DF6-7EDE-49BE-998A-801BB6012C75}"), null);
		Document doc0 = Factory.Document.fetchInstance(os, new Id("{1FC02DF6-7EDE-49BE-998A-801BB6012C75}"), null);
		
		logger.info(!doc.get_IsReserved());

		if(!doc.get_IsCurrentVersion()){
			doc = (Document)doc.get_CurrentVersion();
			doc0 = (Document)doc.get_CurrentVersion();
		}
		
		logger.info(!doc.get_IsReserved());
		if(!doc.get_IsReserved()){
			doc.checkout(ReservationType.EXCLUSIVE, null,null, doc.getProperties());
			doc.save(RefreshMode.REFRESH);
		}
		doc = (Document)doc.get_Reservation();
		
		logger.info(!doc.get_IsReserved());
		
		ContentElementList oldCEL = doc.get_ContentElements();
		logger.info(String.valueOf(oldCEL.size()));
		
		
		ContentElementList newCEL = Factory.ContentElement.createList();
		ContentTransfer ct = Factory.ContentTransfer.createInstance();
		try{
			ct.setCaptureSource(new FileInputStream("c:\\log4j1.log"));
		}catch(FileNotFoundException e){
			e.printStackTrace();
		}
		newCEL.add(ct);
		
		logger.info(doc0.get_ContentElements().size());
		InputStream is = doc0.accessContentStream(0);
		ContentTransfer ct2 = Factory.ContentTransfer.createInstance();
		ct2.setCaptureSource(is);
		newCEL.add(ct2);

		InputStream is3 = doc0.accessContentStream(1);
		ContentTransfer ct3 = Factory.ContentTransfer.createInstance();
		ct3.setCaptureSource(is3);
		newCEL.add(ct3);

		InputStream is4 = doc0.accessContentStream(1);
		ContentTransfer ct4 = Factory.ContentTransfer.createInstance();
		ct4.setCaptureSource(is4);
		newCEL.add(ct4);
		
		doc.set_ContentElements(newCEL);
		doc.save(RefreshMode.REFRESH);
		
		doc.checkin(AutoClassify.DO_NOT_AUTO_CLASSIFY, CheckinType.MAJOR_VERSION);
		doc.save(RefreshMode.REFRESH);
			
		
		CEHelper.popSubject();


               在上述操作过程中,需要注意获取document的当前版本,并将其check out进入Reservation版本,进而更改其内容(content)。在获取之前版本的content时,不要直接引用其ContentTransfer,而要获取其accessContentStream重新建立ContentTransfer,完成document content的设置

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值