# 工作项变更通知

当在流程运行过程中,需要针对插入记录更新记录删除记录进行通知,可以使用bps的工作项变更通知功能。

# 接口列表

接口描述 接口全名
流程更新通知扩展接口 com.primeton.workflow.api.IWorkListChangeNotifier

# 开发依赖包

<dependency>
    <groupId>com.primeton.bps</groupId>
    <artifactId>bps-server-service-instancepool</artifactId>
    <version>${bps.version}</version>
</dependency>

# 开发说明

  1. 添加依赖

  2. 实现com.primeton.workflow.api.IWorkListChangeNotifier接口,分别在notifyInsert、notifyUpdate、notifyRemove方法中实现更新通知、修改通知、删除通知逻辑

  3. 在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中获取工作项、活动以及流程实例信息。

# 开发示例

  1. 创建普通的Java、maven项目(不是springboot项目),项目结构如下

    └─src
        └─main
            ├─java
              └─com
                  └─bps
                      └─change
                              TestChenge.java
    
  2. pom中增加依赖(bps.version具体值取决于依赖bps的版本)

    <dependency>
        <groupId>com.primeton.bps</groupId>
        <artifactId>bps-server-service-instancepool</artifactId>
        <version>${bps.version}</version>
    </dependency>
    
  3. 创建触发器类,例如

    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) {
    		//修改通知
    	}
    }
    
  4. 修改_srv/config/wfengine-config.xml文件

  5. 完成后使用mvn install命令打成jar包,然后放到bps的lib目录下,重启bps即可

上次更新: 2023/7/20下午12:25:28