代码之家  ›  专栏  ›  技术社区  ›  paulsm4

CE更新事件:是否有任何方法可以将前后属性值传递到工作流?

  •  1
  • paulsm4  · 技术社区  · 7 年前

    我配置了一个关于添加、更新和删除事件的FileNet工作流订阅。工作流调用Java组件来发送通知消息(向第三方发送)。

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

    触发订阅的“event”对象具有“modified properties”成员,因此我希望可以在工作流中创建相应的“modifiedProperties”字符串数组,并使订阅映射“update.modifiedProperties=modifiedProperties”。不幸的是,事件的“modifiedproperties”只提供 新的 值,而不是“before”值。 <=所以我看不到直接从订阅获取“before/after”值的任何方法…

    看起来“updateEvent”对象也有一个“originalObject”成员…我可以使用Java API从原始对象中获得“以前”的值。

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

    问:有什么想法,如何将“原始对象”对象从订阅到工作流,所以Java组件可以使用它?

    目标平台是p8 5.2.1;我正在p8 5.5上开发。

    1 回复  |  直到 7 年前
        1
  •  3
  •   Ricardo    7 年前

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

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

    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_操作队列方法,您现在可以在处理完成后删除自定义对象。

    推荐文章