CE更新事件:以任何方式将属性值之前/之后传递给工作流?

时间:2018-07-29 02:44:14

标签: filenet-p8 filenet-content-engine filenet-cpe

我已经在添加,更新和删除事件上配置了FileNet工作流订阅。该工作流程将调用Java组件以发送通知消息(给第三方)。

我们希望在“更新”事件的通知消息中看到“之前”和“之后”属性值。

触发订阅的“事件”对象具有“修改后的属性”成员,因此我希望可以在工作流中创建相应的“ ModifiedProperties”字符串数组,并具有订阅映射“ Update.ModifiedProperties = ModifiedProperties” ”。不幸的是,事件的“ ModifiedProperties”仅给出了 NEW 值,而不是“ before”值。   <=因此,我看不到任何直接从订阅中获取“之前/之后”值的方法...

看起来“ UpdateEvent”对象也有一个“ OriginalObject”成员……我也许能够使用Java API从OriginalObject中获取“ before”值。

问:这种获取前后文档属性值的听起来合理的方法吗?

问:有什么想法如何将“ OriginalObject”对象从预订传递到工作流,以便Java组件可以使用它?

目标平台为P8 5.2.1;我正在开发P8 5.5。

1 个答案:

答案 0 :(得分:3)

是的,唯一的原始值方法是通过OriginalObject对象。将数据获取到工作流的最快方法是使用可订阅的对象。

因此,解决您的问题的方法是定义一个自定义对象,其中包含描述新属性值和旧属性值的属性。您可以在自定义事件处理程序中创建此自定义对象,该事件处理程序在文档的更新事件上触发。在这里,您可以使用原始对象填充自定义对象的属性:

Document document = (Document) event.get_OriginalObject();;
Iterator<?> iterator = event.get_ModifiedProperties().iterator();
while (iterator.hasNext()) {
    String modifiedProperty = (String) iterator.next();

    // TODO: Fetch the values from the original object 
    // and set them on the custom object. The details depend
    // on the data structure you choose.
}

接下来,您将创建一个自定义对象的创建触发的工作流订阅。您可以将自定义对象的属性映射到工作流的数据字段。在启动的工作流程中,您可以定义附件并指定自定义对象是发起附件。现在,您可以使用CE_Operation队列方法并在处理完成后删除自定义对象。