从 IBM 知识中心取消存档文档代码

Unfiling a document code from IBM knowledge center

这仍然是从 filenet 取消归档文档的唯一方法或最有效的方法吗?

static PropertyFilter pf = new PropertyFilter(); 

pf.addIncludeProperty(new FilterElement(null, null, null, "Containers", 
null));
// Get document to be unfiled.
Document doc = Factory.Document.fetchInstance(os, new Id("{8854236F-02D6- 40AB-B4B2-59B6756154D8}"), pf);

// Iterate all folders that contain the document, until the desired 
folder is found.
ReferentialContainmentRelationshipSet rcrs = doc.get_Containers();
Iterator iter = rcrs.iterator();
while (iter.hasNext() )
{
   ReferentialContainmentRelationship rcr = 
(ReferentialContainmentRelationship)iter.next();
   Folder folder = (Folder)rcr.get_Tail();
   if (folder.get_Id().equals(new Id("{C40106FE-B510-4222-BB42- 6D2FD5D21123}")))
   {
      rcr.delete();
      rcr.save(RefreshMode.REFRESH);
      break;
   }
}

此代码执行了它应该执行的操作,但有时取消归档一份文档最多需要 4 个小时。

从文件夹中取消归档对象只需要一件事:删除相应的 ReferentialContainmentRelationship 对象。后者可以通过多种方式获得,但假设您知道要从中取消归档的文件夹,最直接的方法是在 Folder:

上使用 unfile 方法
ReferentialContainmentRelationship rcr = folder.unfile(document);
rcr.save(RefreshMode.NO_REFRESH);

您发布的代码似乎是对指定用于更通用任务的代码的改编。我不相信文档建议以这种方式从单个文件夹中取消归档。无论如何,除非您要取消归档的文档被归档到数千个文件夹中,否则即使有这种不必要的复杂情况,取消归档也只是几秒钟的事情,而不是几个小时。您的系统可能有问题。