update 优化 工作流任务创建监听器 传递流程参数

This commit is contained in:
疯狂的狮子Li 2025-07-09 10:43:22 +08:00
parent 03fca40c7d
commit 74e3d232f5
4 changed files with 11 additions and 4 deletions

View File

@ -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;
}

View File

@ -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);
}

View File

@ -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;

View File

@ -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())) {