как разблокировать объекты в IBM Content Navigator из вызова веб-службы SOA - PullRequest
0 голосов
/ 25 апреля 2019

В моем SOA есть два приложения, торгующие информацией о документах взад и вперед. Одним из них является IBM FileNet / Content Navigator . Теперь другое приложение не может вызывать документы в filenet, когда эти документы извлекаются в filenet. Обычно это можно решить, войдя в Filenet вручную и щелкнув правой кнопкой мыши документ и выбрав отменить извлечение.

Поскольку задержка действительно связана с моей интеграцией с SOA, я хочу иметь возможность выполнить это действие «отменить извлечение» в filenet через вызов веб-службы в моем SOA. Это позволило бы сэкономить много времени, затрачиваемого на ручные действия по разблокировке документов. Я использую Oracle SOA suite 11g (и 12c), и мой процесс в значительной степени переносится BPELs . У меня уже есть хороший веб-сервис, взаимодействующий с Filenet. Однако мне нужно будет создать новую операцию «UnlockDocument» для взаимодействия и выполнения этого действия в файловой сети.

Что мне нужно: Мне нужен код, который бы охватывал операцию «UnlockDocument» в среде файловой сети, или какой-то подобный прием, который бы выполнял работу. Любая информация (также не связанная с кодом!) О том, как я могу действовать, очень приветствуется, и я буду продолжать обновлять свой пост, если найду больше информации сам!

Спасибо за вашу помощь!

Jesper

1 Ответ

0 голосов
/ 19 июня 2019

Оказывается, в веб-сервисе filenet невозможна операция «UnlockDocument» или «CancelCheckout». Однако я нашел изящный обходной путь, который позволяет вам сделать именно это.

Когда документ извлекается в filenet через клиент или через веб-сервисный вызов операции: "CheckoutAction". Копия документа выполняется внутри файловой сети с тем же VersionSeriesId, что и у исходного документа, но со свойством Isreserved = 'true'. Если вы выполняете «DeleteAction» над этой копией, вы по существу воссоздаете шаг «Отмена проверки», доступный в клиенте filenet. «DeleteAction» требует ObjectId и не работает на VersionSeriesId. Чтобы получить этот ObjectID через вызов веб-службы, вам нужно сделать SOAPCall, который получает это ObjectID. Чтобы отменить начальную проверку, должен быть сделан второй SOAPCall, который удаляет документ с полученным на предыдущем шаге ObjectID, он же: «копия». Вот два примера использования SOAPCalls:

ExecuteSearchRequest SoapCall:

<soap:Envelope xmlns:soap="http://www.w3.org/2003/05/soap-envelope" xmlns:sch="http://www.filenet.com/ns/fnce/2006/11/ws/schema">
   <soap:Header>
      <sch:Localization>
         <sch:Locale>en_EN</sch:Locale>
         <sch:Timezone/>
      </sch:Localization>
   </soap:Header>
   <soap:Body>
      <sch:ExecuteSearchRequest xsi:type="RepositorySearch" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
         <sch:SearchScope xsi:type="ObjectStoreScope" objectStore="ObjectStoreXXX"/>
         <sch:SearchSQL>SELECT [Id] FROM Document WHERE VersionSeries = {"enter the VersionSeriesID of the initial document without quotes"} AND IsReserved = true</sch:SearchSQL>
      </sch:ExecuteSearchRequest>
   </soap:Body>
</soap:Envelope>

DeleteActionRequest SoapCall:

<soap:Envelope xmlns:soap="http://www.w3.org/2003/05/soap-envelope" xmlns:sch="http://www.filenet.com/ns/fnce/2006/11/ws/schema">
   <soap:Header>
      <sch:Localization>
         <sch:Locale>en-EN</sch:Locale>
         <sch:Timezone/>
      </sch:Localization>
   </soap:Header>
   <soap:Body>
      <sch:ExecuteChangesRequest xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
         <sch:ChangeRequest>
            <sch:TargetSpecification classId="Document" objectId="{"enter the objectId of the previously obtained document without quotes"}" objectStore="ObjectStoreO7"/>
            <sch:Action xsi:type="sch:DeleteAction"/>
         </sch:ChangeRequest>
      </sch:ExecuteChangesRequest>
   </soap:Body>
</soap:Envelope>

Теперь, чтобы заставить это работать с SOA, вам нужно будет дважды вызывать веб-сервис filenet из вашего BPEL. Сначала с первой операцией: ExecuteSearchRequest, которая дает вам ObjectId, необходимый для отмены извлечения, затем со второй операцией ExecuteChangesRequest, которая удаляет правильный документ, отменяя первоначальную проверку. Эти операции перечислены в приведенных выше примерах SOAP. Кроме того, вам нужно добавить WS-security в ваш исходящий заголовок с рабочими учетными данными для доступа к службе Filenet. В противном случае вы не сможете подключиться с помощью filenet.

Это стоило мне много времени, поэтому я надеюсь, что это поможет кому-то, кроме меня. Наслаждайтесь мастерством удаления извлечения файловой сети!

...