自定义对象的工作流事件
在对象上创建自定义事件
以下是如何在对象上创建自定义工作流事件 (wt.workflow.engine.WfCustomEvent) 的示例。在此示例中,自定义事件为 MY_EVENT。
1. 将以下条目添加到 <Windchill>\src\wt\workflow\engine\WfCustomEventTypeResource.java:
@RBEntry("MY_EVENT")
public static final String MY_EVENT = "MY_EVENT";
2. 将以下条目添加到 <Windchill>\src\wt\workflow\robots\synchEventResource.java:
@RBEntry("MY_EVENT")
public static final String PRIVATE_CONSTANT_39 =
"*/wt.workflow.engine.WfCustomEventTypeResource/MY_EVENT";
|
将用户定义的事件声明为新的变量。例如,如果 synchEventResource.java 文件中的可用资源总数为 39,则将 MY_EVENT 声明为第 40 个变量。
public static final String PRIVATE_CONSTANT_<next_count>=“*/<Classpath>/<Custom_Event>”;
|
3. 通过在 Windchill shell 中运行以下命令来重新构建资源:
◦ ant -f bin/tools.xml class -Dclass.includes=wt/workflow/robots/synchEventResource.java
◦ ant -f bin/tools.xml class -Dclass.includes=wt/workflow/engine/WfCustomEventTypeResource.java
ant -f codebase/MakeJar.xml custUpdate
5. 清除客户端机器的 Java Plug-In 缓存。
6. 重新启动方法服务器。
7. 使用工作流进程编辑器设计一个包含同步自动机的工作流模板,如下所示:
在同步自动机特性窗口中:
a. 选择对象事件
b. 确保 MY_EVENT 列出在事件下拉列表中。
c. 选择 MY_EVENT
d. 在初始表达式和路由选择表达式中写入适当的表达式。
有关工作流进程编辑器的详细信息,请参阅
Windchill 帮助中心中的
基础管理。
激发自定义事件
继续上述示例时,如需激发自定义事件,则需要以下代码。
java.util.Hashtable valueMap = new java.util.Hashtable();
wt.workflow.engine.WfEngineServerHelper.service.emitCustomObjectEvent ("MY_EVENT",
primaryBusinessObject, valueMap);
其中:
• MY_EVENT 是上文中创建的自定义事件。或者,在同步自动机特性窗口的事件下拉列表中选择的任何事件都将在其原有位置被替换。
• PrimaryBusinessObject 是要在其上激发事件的对象。也就是说,同步自动机将监听其 MY_EVENT (自定义事件) 的对象。
|
自定义事件可从任何自定义代码或从表达式自动机激发。
|
在处理已激发事件时,无法从事件中检索 valueMap 散列表,因为同步表达式语法不提供针对基于对象的事件获取事件对象的方法。