Оказывается, в веб-сервисе 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.
Это стоило мне много времени, поэтому я надеюсь, что это поможет кому-то, кроме меня. Наслаждайтесь мастерством удаления извлечения файловой сети!