update 优化 调整监听器事件参数代码

This commit is contained in:
疯狂的狮子Li 2025-04-09 11:53:40 +08:00
parent b50904c6ff
commit a690ece164
3 changed files with 20 additions and 30 deletions

View File

@ -6,6 +6,7 @@ import org.dromara.common.core.domain.event.ProcessDeleteEvent;
import org.dromara.common.core.domain.event.ProcessEvent;
import org.dromara.common.core.utils.SpringUtils;
import org.dromara.common.tenant.helper.TenantHelper;
import org.dromara.warm.flow.core.entity.Instance;
import org.dromara.workflow.common.ConditionalOnEnable;
import org.springframework.stereotype.Component;
@ -26,28 +27,25 @@ public class FlowProcessEventHandler {
* 总体流程监听(例如: 草稿撤销退回作废终止已完成单任务完成等)
*
* @param flowCode 流程定义编码
* @param businessId 业务id
* @param nodeType 节点类型0开始节点 1中间节点 2结束节点 3互斥网关 4并行网关
* @param nodeCode 流程节点编码
* @param nodeName 流程节点名称
* @param instance 实例数据
* @param status 流程状态
* @param params 办理参数
* @param submit 当为true时为申请人节点办理
*/
public void processHandler(String flowCode, String businessId, Integer nodeType, String nodeCode, String nodeName,
public void processHandler(String flowCode, Instance instance,
String status, Map<String, Object> params, boolean submit) {
String tenantId = TenantHelper.getTenantId();
log.info("【流程事件发布】租户ID: {}, 流程编码: {}, 业务ID: {}, 状态: {}, 节点类型: {}, 节点编码: {}, 节点名称: {}, 是否申请人节点: {}, 参数: {}",
tenantId, flowCode, businessId, status, nodeType, nodeCode, nodeName, submit, params);
tenantId, flowCode, instance.getBusinessId(), status, instance.getNodeType(), instance.getNodeCode(), instance.getNodeName(), submit, params);
ProcessEvent processEvent = new ProcessEvent();
processEvent.setTenantId(tenantId);
processEvent.setFlowCode(flowCode);
processEvent.setBusinessId(businessId);
processEvent.setNodeType(nodeType);
processEvent.setNodeCode(nodeCode);
processEvent.setNodeName(nodeName);
processEvent.setBusinessId(instance.getBusinessId());
processEvent.setNodeType(instance.getNodeType());
processEvent.setNodeCode(instance.getNodeCode());
processEvent.setNodeName(instance.getNodeName());
processEvent.setStatus(status);
processEvent.setParams(params);
processEvent.setSubmit(submit);
@ -58,24 +56,21 @@ public class FlowProcessEventHandler {
* 执行创建任务监听
*
* @param flowCode 流程定义编码
* @param nodeType 节点类型0开始节点 1中间节点 2结束节点 3互斥网关 4并行网关
* @param nodeCode 流程节点编码
* @param nodeName 流程节点名称
* @param instance 实例数据
* @param taskId 任务id
* @param businessId 业务id
*/
public void processCreateTaskHandler(String flowCode, Integer nodeType, String nodeCode, String nodeName, Long taskId, String businessId) {
public void processCreateTaskHandler(String flowCode, Instance instance, Long taskId) {
String tenantId = TenantHelper.getTenantId();
log.info("发布流程任务事件, 租户ID: {}, 流程编码: {}, 节点类型: {}, 节点编码: {}, 节点名称: {}, 任务ID: {}, 业务ID: {}",
tenantId, flowCode, nodeType, nodeCode, nodeName, taskId, businessId);
log.info("发布流程任务事件, 租户ID: {}, 流程编码: {}, 业务ID: {}, 节点类型: {}, 节点编码: {}, 节点名称: {}, 任务ID: {}",
tenantId, flowCode, instance.getBusinessId(), instance.getNodeType(), instance.getNodeCode(), instance.getNodeName(), taskId);
ProcessCreateTaskEvent processCreateTaskEvent = new ProcessCreateTaskEvent();
processCreateTaskEvent.setTenantId(tenantId);
processCreateTaskEvent.setFlowCode(flowCode);
processCreateTaskEvent.setNodeType(nodeType);
processCreateTaskEvent.setNodeCode(nodeCode);
processCreateTaskEvent.setNodeName(nodeName);
processCreateTaskEvent.setBusinessId(instance.getBusinessId());
processCreateTaskEvent.setNodeType(instance.getNodeType());
processCreateTaskEvent.setNodeCode(instance.getNodeCode());
processCreateTaskEvent.setNodeName(instance.getNodeName());
processCreateTaskEvent.setTaskId(taskId);
processCreateTaskEvent.setBusinessId(businessId);
SpringUtils.context().publishEvent(processCreateTaskEvent);
}

View File

@ -47,13 +47,10 @@ public class WorkflowGlobalListener implements GlobalListener {
public void create(ListenerVariable listenerVariable) {
Instance instance = listenerVariable.getInstance();
Definition definition = listenerVariable.getDefinition();
String businessId = instance.getBusinessId();
String flowStatus = instance.getFlowStatus();
Task task = listenerVariable.getTask();
if (task != null && BusinessStatusEnum.WAITING.getStatus().equals(flowStatus)) {
if (task != null && BusinessStatusEnum.WAITING.getStatus().equals(instance.getFlowStatus())) {
// 判断流程状态发布审批中事件
flowProcessEventHandler.processCreateTaskHandler(definition.getFlowCode(), task.getNodeType(),
task.getNodeCode(), task.getNodeName(), task.getId(), businessId);
flowProcessEventHandler.processCreateTaskHandler(definition.getFlowCode(), instance, task.getId());
}
}
@ -97,8 +94,7 @@ public class WorkflowGlobalListener implements GlobalListener {
// 判断流程状态发布撤销退回作废终止已完成事件
String status = determineFlowStatus(instance);
if (StringUtils.isNotBlank(status)) {
flowProcessEventHandler.processHandler(definition.getFlowCode(), instance.getBusinessId(), instance.getNodeType(),
instance.getNodeCode(), instance.getNodeName(), status, params, false);
flowProcessEventHandler.processHandler(definition.getFlowCode(), instance, status, params, false);
}
}

View File

@ -162,8 +162,7 @@ public class FlwTaskServiceImpl implements IFlwTaskService {
Definition definition = defService.getById(flowTask.getDefinitionId());
// 检查流程状态是否为草稿已撤销或已退回状态若是则执行流程提交监听
if (BusinessStatusEnum.isDraftOrCancelOrBack(ins.getFlowStatus())) {
flowProcessEventHandler.processHandler(definition.getFlowCode(), ins.getBusinessId(), ins.getNodeType(),
ins.getNodeCode(), ins.getNodeName(), ins.getFlowStatus(), null, true);
flowProcessEventHandler.processHandler(definition.getFlowCode(), ins, ins.getFlowStatus(), null, true);
}
// 设置弹窗处理人
Map<String, Object> assigneeMap = setPopAssigneeMap(completeTaskBo.getAssigneeMap(), ins.getVariableMap());