mirror of
				https://github.com/dromara/RuoYi-Vue-Plus.git
				synced 2025-11-04 16:23:42 +08:00 
			
		
		
		
	update 优化 工作流任务创建监听器 传递流程参数
This commit is contained in:
		@@ -4,6 +4,7 @@ import lombok.Data;
 | 
			
		||||
 | 
			
		||||
import java.io.Serial;
 | 
			
		||||
import java.io.Serializable;
 | 
			
		||||
import java.util.Map;
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * 流程任务监听
 | 
			
		||||
@@ -56,4 +57,9 @@ public class ProcessTaskEvent implements Serializable {
 | 
			
		||||
     */
 | 
			
		||||
    private String status;
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * 办理参数
 | 
			
		||||
     */
 | 
			
		||||
    private Map<String, Object> params;
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
@@ -56,7 +56,7 @@ public class FlowProcessEventHandler {
 | 
			
		||||
     * @param instance   实例数据
 | 
			
		||||
     * @param taskId     任务id
 | 
			
		||||
     */
 | 
			
		||||
    public void processTaskHandler(String flowCode, Instance instance, Long taskId) {
 | 
			
		||||
    public void processTaskHandler(String flowCode, Instance instance, Long taskId, Map<String, Object> params) {
 | 
			
		||||
        String tenantId = TenantHelper.getTenantId();
 | 
			
		||||
        log.info("【流程任务事件发布】租户ID: {}, 流程编码: {}, 业务ID: {}, 节点类型: {}, 节点编码: {}, 节点名称: {}, 任务ID: {}",
 | 
			
		||||
            tenantId, flowCode, instance.getBusinessId(), instance.getNodeType(), instance.getNodeCode(), instance.getNodeName(), taskId);
 | 
			
		||||
@@ -69,6 +69,7 @@ public class FlowProcessEventHandler {
 | 
			
		||||
        processTaskEvent.setNodeName(instance.getNodeName());
 | 
			
		||||
        processTaskEvent.setTaskId(taskId);
 | 
			
		||||
        processTaskEvent.setStatus(instance.getFlowStatus());
 | 
			
		||||
        processTaskEvent.setParams(params);
 | 
			
		||||
        SpringUtils.context().publishEvent(processTaskEvent);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -130,7 +130,7 @@ public class WorkflowGlobalListener implements GlobalListener {
 | 
			
		||||
        }
 | 
			
		||||
        //发布任务事件
 | 
			
		||||
        if (task != null) {
 | 
			
		||||
            flowProcessEventHandler.processTaskHandler(definition.getFlowCode(), instance, task.getId());
 | 
			
		||||
            flowProcessEventHandler.processTaskHandler(definition.getFlowCode(), instance, task.getId(), params);
 | 
			
		||||
        }
 | 
			
		||||
        if (ObjectUtil.isNull(flowParams)) {
 | 
			
		||||
            return;
 | 
			
		||||
 
 | 
			
		||||
@@ -136,7 +136,7 @@ public class TestLeaveServiceImpl implements ITestLeaveService {
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * 总体流程监听(例如: 草稿,撤销,退回,作废,终止,已完成,单任务完成等)
 | 
			
		||||
     * 总体流程监听(例如: 草稿,撤销,退回,作废,终止,已完成等)
 | 
			
		||||
     * 正常使用只需#processEvent.flowCode=='leave1'
 | 
			
		||||
     * 示例为了方便则使用startsWith匹配了全部示例key
 | 
			
		||||
     *
 | 
			
		||||
@@ -164,7 +164,7 @@ public class TestLeaveServiceImpl implements ITestLeaveService {
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * 执行任务创建监听
 | 
			
		||||
     * 执行任务创建监听(也代表上一条任务完成事件)
 | 
			
		||||
     * 示例:也可通过  @EventListener(condition = "#processTaskEvent.flowCode=='leave1'")进行判断
 | 
			
		||||
     * 在方法中判断流程节点key
 | 
			
		||||
     * if ("xxx".equals(processTaskEvent.getNodeCode())) {
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user