Развертывание кода документа из центра знаний IBM - PullRequest
0 голосов
/ 04 февраля 2019

Это по-прежнему единственный или самый эффективный способ разблокировать документ из файловой сети?

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 часов.документ.

1 Ответ

0 голосов
/ 05 февраля 2019

Для извлечения объекта из папки требуется только одно: удалить соответствующий объект ReferentialContainmentRelationship.Последний может быть получен несколькими способами, но при условии, что вы знаете папку, из которой вы хотите разархивировать, самый простой способ - использовать метод unfile на Folder:

ReferentialContainmentRelationship rcr = folder.unfile(document);
rcr.save(RefreshMode.NO_REFRESH);

Код, который вы разместили, кажется, является адаптацией чего-то, предназначенного для более общих задач.Я не верю, что документация рекомендует разархивировать из одной папки таким образом.В любом случае, если документ, который вы разархивируете, не будет помещен во многие тысячи папок, даже если это ненужное усложнение, его откроют за считанные секунды, а не часы.Возможно, что-то не так с вашей системой.

...