mirror of
https://github.com/dromara/RuoYi-Vue-Plus.git
synced 2025-12-27 18:46:00 +08:00
update 优化 任务执行监听器 传递任务的相关数据 不传递实例相关数据了(避免并行节点覆盖问题)
This commit is contained in:
@@ -7,6 +7,7 @@ import org.dromara.common.core.domain.event.ProcessEvent;
|
|||||||
import org.dromara.common.core.utils.SpringUtils;
|
import org.dromara.common.core.utils.SpringUtils;
|
||||||
import org.dromara.common.tenant.helper.TenantHelper;
|
import org.dromara.common.tenant.helper.TenantHelper;
|
||||||
import org.dromara.warm.flow.core.entity.Instance;
|
import org.dromara.warm.flow.core.entity.Instance;
|
||||||
|
import org.dromara.warm.flow.core.entity.Task;
|
||||||
import org.dromara.workflow.common.ConditionalOnEnable;
|
import org.dromara.workflow.common.ConditionalOnEnable;
|
||||||
import org.springframework.stereotype.Component;
|
import org.springframework.stereotype.Component;
|
||||||
|
|
||||||
@@ -55,22 +56,22 @@ public class FlowProcessEventHandler {
|
|||||||
*
|
*
|
||||||
* @param flowCode 流程定义编码
|
* @param flowCode 流程定义编码
|
||||||
* @param instance 实例数据
|
* @param instance 实例数据
|
||||||
* @param taskId 任务id
|
* @param nextTask 任务
|
||||||
* @param params 上一个任务的办理参数
|
* @param params 上一个任务的办理参数
|
||||||
*/
|
*/
|
||||||
public void processTaskHandler(String flowCode, Instance instance, Long taskId, Map<String, Object> params) {
|
public void processTaskHandler(String flowCode, Instance instance, Task nextTask, Map<String, Object> params) {
|
||||||
String tenantId = TenantHelper.getTenantId();
|
String tenantId = TenantHelper.getTenantId();
|
||||||
log.info("【流程任务事件发布】租户ID: {}, 流程编码: {}, 业务ID: {}, 节点类型: {}, 节点编码: {}, 节点名称: {}, 任务ID: {}",
|
log.info("【流程任务事件发布】租户ID: {}, 流程编码: {}, 业务ID: {}, 节点类型: {}, 节点编码: {}, 节点名称: {}, 任务ID: {}",
|
||||||
tenantId, flowCode, instance.getBusinessId(), instance.getNodeType(), instance.getNodeCode(), instance.getNodeName(), taskId);
|
tenantId, flowCode, instance.getBusinessId(), nextTask.getNodeType(), nextTask.getNodeCode(), nextTask.getNodeName(), nextTask.getId());
|
||||||
ProcessTaskEvent processTaskEvent = new ProcessTaskEvent();
|
ProcessTaskEvent processTaskEvent = new ProcessTaskEvent();
|
||||||
processTaskEvent.setTenantId(tenantId);
|
processTaskEvent.setTenantId(tenantId);
|
||||||
processTaskEvent.setFlowCode(flowCode);
|
processTaskEvent.setFlowCode(flowCode);
|
||||||
processTaskEvent.setInstanceId(instance.getId());
|
processTaskEvent.setInstanceId(instance.getId());
|
||||||
processTaskEvent.setBusinessId(instance.getBusinessId());
|
processTaskEvent.setBusinessId(instance.getBusinessId());
|
||||||
processTaskEvent.setNodeType(instance.getNodeType());
|
processTaskEvent.setNodeType(nextTask.getNodeType());
|
||||||
processTaskEvent.setNodeCode(instance.getNodeCode());
|
processTaskEvent.setNodeCode(nextTask.getNodeCode());
|
||||||
processTaskEvent.setNodeName(instance.getNodeName());
|
processTaskEvent.setNodeName(nextTask.getNodeName());
|
||||||
processTaskEvent.setTaskId(taskId);
|
processTaskEvent.setTaskId(nextTask.getId());
|
||||||
processTaskEvent.setStatus(instance.getFlowStatus());
|
processTaskEvent.setStatus(instance.getFlowStatus());
|
||||||
processTaskEvent.setParams(params);
|
processTaskEvent.setParams(params);
|
||||||
SpringUtils.context().publishEvent(processTaskEvent);
|
SpringUtils.context().publishEvent(processTaskEvent);
|
||||||
|
|||||||
@@ -208,7 +208,7 @@ public class WorkflowGlobalListener implements GlobalListener {
|
|||||||
//发布任务事件
|
//发布任务事件
|
||||||
if (CollUtil.isNotEmpty(nextTasks)) {
|
if (CollUtil.isNotEmpty(nextTasks)) {
|
||||||
for (Task nextTask : nextTasks) {
|
for (Task nextTask : nextTasks) {
|
||||||
flowProcessEventHandler.processTaskHandler(definition.getFlowCode(), instance, nextTask.getId(), params);
|
flowProcessEventHandler.processTaskHandler(definition.getFlowCode(), instance, nextTask, params);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (ObjectUtil.isNull(flowParams)) {
|
if (ObjectUtil.isNull(flowParams)) {
|
||||||
|
|||||||
Reference in New Issue
Block a user