# 工作项变更通知
当在流程运行过程中,需要针对插入记录、更新记录和删除记录进行通知,可以使用bps的工作项变更通知功能。
# 接口列表
接口描述 | 接口全名 |
---|---|
流程更新通知扩展接口 | com.primeton.workflow.api.IWorkListChangeNotifier |
# 开发依赖包
<dependency>
<groupId>com.primeton.bps</groupId>
<artifactId>bps-server-service-instancepool</artifactId>
<version>${bps.version}</version>
</dependency>
# 开发说明
添加依赖
实现com.primeton.workflow.api.IWorkListChangeNotifier接口,分别在notifyInsert、notifyUpdate、notifyRemove方法中实现更新通知、修改通知、删除通知逻辑
在bps的_srv/config/wfengine-config.xml中修改配置,如下:
<module name="worklist_change_notify"> <group name="listener_class"> <!-- 工作列表变更通知功能开关 --> <configValue key="is_notify">false</configValue> <!-- 工作列表变更通知功能接口实现类配置 --> <configValue key="name">org.gocom.workflow.taskcenter.adapter.bps.WorkListChangeNotifier</configValue> </group> </module>
修改is_notify为true,name为实现类的全路径名称
注意事项:
变更通知只针对工作项、参与者、流程进行触发,同时,如果调用bps的批量操作接口,是不会触发变更通知的。
例如:com.primeton.workflow.api2.IWFProcessInstApi.deleteProcessInstBatch(long[])批量删除流程实例不会触发变更通知
com.primeton.workflow.api2.IWFProcessInstApi.deleteProcessInstance(long)单个删除流程实例会触发变更通知
在变更通知中,如果调用了删除流程通知,则从上下文中获取流程信息的接口不会拿到流程相关信息,需要从com.eos.workflow.data.WFDelProcessInst中获取工作项、活动以及流程实例信息。
# 开发示例
创建普通的Java、maven项目(不是springboot项目),项目结构如下
└─src └─main ├─java └─com └─bps └─change TestChenge.java
pom中增加依赖(bps.version具体值取决于依赖bps的版本)
<dependency> <groupId>com.primeton.bps</groupId> <artifactId>bps-server-service-instancepool</artifactId> <version>${bps.version}</version> </dependency>
创建触发器类,例如
package com.bps.change; import com.primeton.workflow.api.IWorkListChangeNotifier; /** * 这里创建了一个在工作项完成后的全局触发事件 */ public class TestChange implements IWorkListChangeNotifier { @Override public void notifyInsert(WFUserObject obj, Map option) { //插入通知 } @Override public void notifyRemove(WFUserObject obj, Map option) { //删除通知 } @Override public void notifyUpdate(WFUserObject obj, Map option) { //修改通知 } }
修改_srv/config/wfengine-config.xml文件
完成后使用mvn install命令打成jar包,然后放到bps的lib目录下,重启bps即可