我已经在添加,更新和删除事件上配置了FileNet工作流订阅。该工作流程将调用Java组件以发送通知消息(给第三方)。
我们希望在“更新”事件的通知消息中看到“之前”和“之后”属性值。
触发订阅的“事件”对象具有“修改后的属性”成员,因此我希望可以在工作流中创建相应的“ ModifiedProperties”字符串数组,并具有订阅映射“ Update.ModifiedProperties = ModifiedProperties” ”。不幸的是,事件的“ ModifiedProperties”仅给出了 NEW 值,而不是“ before”值。 <=因此,我看不到任何直接从订阅中获取“之前/之后”值的方法...
看起来“ UpdateEvent”对象也有一个“ OriginalObject”成员……我也许能够使用Java API从OriginalObject中获取“ before”值。
问:这种获取前后文档属性值的听起来合理的方法吗?
问:有什么想法如何将“ OriginalObject”对象从预订传递到工作流,以便Java组件可以使用它?
目标平台为P8 5.2.1;我正在开发P8 5.5。
答案 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队列方法并在处理完成后删除自定义对象。