update 优化 调整任务监听名称

dev
疯狂的狮子Li 7 months ago
parent a37597ee7d
commit 4b19b384d3

@ -8,13 +8,13 @@ import org.springframework.cloud.bus.event.RemoteApplicationEvent;
import java.io.Serial; import java.io.Serial;
/** /**
* *
* *
* @author may * @author may
*/ */
@Data @Data
@EqualsAndHashCode(callSuper = true) @EqualsAndHashCode(callSuper = true)
public class ProcessCreateTaskEvent extends RemoteApplicationEvent { public class ProcessTaskEvent extends RemoteApplicationEvent {
@Serial @Serial
private static final long serialVersionUID = 1L; private static final long serialVersionUID = 1L;
@ -59,7 +59,7 @@ public class ProcessCreateTaskEvent extends RemoteApplicationEvent {
*/ */
private String status; private String status;
public ProcessCreateTaskEvent() { public ProcessTaskEvent() {
super(new Object(), SpringUtils.getApplicationName(), DEFAULT_DESTINATION_FACTORY.getDestination(null)); super(new Object(), SpringUtils.getApplicationName(), DEFAULT_DESTINATION_FACTORY.getDestination(null));
} }
} }

@ -4,9 +4,9 @@ import lombok.extern.slf4j.Slf4j;
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.workflow.api.event.ProcessCreateTaskEvent;
import org.dromara.workflow.api.event.ProcessDeleteEvent; import org.dromara.workflow.api.event.ProcessDeleteEvent;
import org.dromara.workflow.api.event.ProcessEvent; import org.dromara.workflow.api.event.ProcessEvent;
import org.dromara.workflow.api.event.ProcessTaskEvent;
import org.dromara.workflow.common.ConditionalOnEnable; import org.dromara.workflow.common.ConditionalOnEnable;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
@ -56,20 +56,20 @@ public class FlowProcessEventHandler {
* @param instance * @param instance
* @param taskId id * @param taskId id
*/ */
public void processCreateTaskHandler(String flowCode, Instance instance, Long taskId) { public void processTaskHandler(String flowCode, Instance instance, Long taskId) {
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(), instance.getNodeType(), instance.getNodeCode(), instance.getNodeName(), taskId);
ProcessCreateTaskEvent processCreateTaskEvent = new ProcessCreateTaskEvent(); ProcessTaskEvent processTaskEvent = new ProcessTaskEvent();
processCreateTaskEvent.setTenantId(tenantId); processTaskEvent.setTenantId(tenantId);
processCreateTaskEvent.setFlowCode(flowCode); processTaskEvent.setFlowCode(flowCode);
processCreateTaskEvent.setBusinessId(instance.getBusinessId()); processTaskEvent.setBusinessId(instance.getBusinessId());
processCreateTaskEvent.setNodeType(instance.getNodeType()); processTaskEvent.setNodeType(instance.getNodeType());
processCreateTaskEvent.setNodeCode(instance.getNodeCode()); processTaskEvent.setNodeCode(instance.getNodeCode());
processCreateTaskEvent.setNodeName(instance.getNodeName()); processTaskEvent.setNodeName(instance.getNodeName());
processCreateTaskEvent.setTaskId(taskId); processTaskEvent.setTaskId(taskId);
processCreateTaskEvent.setStatus(instance.getFlowStatus()); processTaskEvent.setStatus(instance.getFlowStatus());
SpringUtils.context().publishEvent(processCreateTaskEvent); SpringUtils.context().publishEvent(processTaskEvent);
} }
/** /**

@ -54,15 +54,7 @@ public class WorkflowGlobalListener implements GlobalListener {
*/ */
@Override @Override
public void create(ListenerVariable listenerVariable) { public void create(ListenerVariable listenerVariable) {
Instance instance = listenerVariable.getInstance();
Definition definition = listenerVariable.getDefinition();
FlowParams flowParams = listenerVariable.getFlowParams();
Map<String, Object> variable = flowParams.getVariable();
Task task = listenerVariable.getTask();
if (task != null) {
// 判断流程状态(发布审批中事件)
flowProcessEventHandler.processCreateTaskHandler(definition.getFlowCode(), instance, task.getId());
}
} }
/** /**
@ -100,13 +92,6 @@ public class WorkflowGlobalListener implements GlobalListener {
flowTask.setPermissionList(List.of(instance.getCreateBy())); flowTask.setPermissionList(List.of(instance.getCreateBy()));
} }
} }
// 申请人提交事件
Boolean submit = MapUtil.getBool(variable, FlowConstant.SUBMIT);
if (submit != null && submit) {
flowProcessEventHandler.processHandler(definition.getFlowCode(), instance, instance.getFlowStatus(), variable, true);
}
variable.remove(FlowConstant.SUBMIT);
flowParams.variable(variable);
} }
/** /**
@ -118,6 +103,7 @@ public class WorkflowGlobalListener implements GlobalListener {
public void finish(ListenerVariable listenerVariable) { public void finish(ListenerVariable listenerVariable) {
Instance instance = listenerVariable.getInstance(); Instance instance = listenerVariable.getInstance();
Definition definition = listenerVariable.getDefinition(); Definition definition = listenerVariable.getDefinition();
Task task = listenerVariable.getTask();
Map<String, Object> params = new HashMap<>(); Map<String, Object> params = new HashMap<>();
FlowParams flowParams = listenerVariable.getFlowParams(); FlowParams flowParams = listenerVariable.getFlowParams();
if (ObjectUtil.isNotNull(flowParams)) { if (ObjectUtil.isNotNull(flowParams)) {
@ -128,20 +114,28 @@ public class WorkflowGlobalListener implements GlobalListener {
// 办理意见 // 办理意见
params.put("message", flowParams.getMessage()); params.put("message", flowParams.getMessage());
} }
// 判断流程状态(发布:撤销,退回,作废,终止,已完成事件) Map<String, Object> variable = flowParams.getVariable();
String status = determineFlowStatus(instance); //申请人提交事件
if (StringUtils.isNotBlank(status)) { Boolean submit = MapUtil.getBool(variable, FlowConstant.SUBMIT);
flowProcessEventHandler.processHandler(definition.getFlowCode(), instance, status, params, false); if (submit != null && submit) {
flowProcessEventHandler.processHandler(definition.getFlowCode(), instance, instance.getFlowStatus(), variable, true);
} else {
// 判断流程状态(发布:撤销,退回,作废,终止,已完成事件)
String status = determineFlowStatus(instance);
if (StringUtils.isNotBlank(status)) {
flowProcessEventHandler.processHandler(definition.getFlowCode(), instance, status, params, false);
}
}
//发布任务事件
if (task != null) {
flowProcessEventHandler.processTaskHandler(definition.getFlowCode(), instance, task.getId());
} }
if (ObjectUtil.isNull(flowParams)) { if (ObjectUtil.isNull(flowParams)) {
return; return;
} }
Map<String, Object> variable = flowParams.getVariable();
// 只有办理或者退回的时候才执行消息通知和抄送 // 只有办理或者退回的时候才执行消息通知和抄送
if (TaskStatusEnum.PASS.getStatus().equals(flowParams.getHisStatus()) if (TaskStatusEnum.PASS.getStatus().equals(flowParams.getHisStatus())
|| TaskStatusEnum.BACK.getStatus().equals(flowParams.getHisStatus())) { || TaskStatusEnum.BACK.getStatus().equals(flowParams.getHisStatus())) {
Task task = listenerVariable.getTask();
if (variable != null) { if (variable != null) {
if (variable.containsKey(FlowConstant.FLOW_COPY_LIST)) { if (variable.containsKey(FlowConstant.FLOW_COPY_LIST)) {
List<FlowCopyBo> flowCopyList = (List<FlowCopyBo>) variable.get(FlowConstant.FLOW_COPY_LIST); List<FlowCopyBo> flowCopyList = (List<FlowCopyBo>) variable.get(FlowConstant.FLOW_COPY_LIST);
@ -160,6 +154,7 @@ public class WorkflowGlobalListener implements GlobalListener {
variableMap.remove(FlowConstant.FLOW_COPY_LIST); variableMap.remove(FlowConstant.FLOW_COPY_LIST);
variableMap.remove(FlowConstant.MESSAGE_TYPE); variableMap.remove(FlowConstant.MESSAGE_TYPE);
variableMap.remove(FlowConstant.MESSAGE_NOTICE); variableMap.remove(FlowConstant.MESSAGE_NOTICE);
variableMap.remove(FlowConstant.SUBMIT);
instance.setVariable(FlowEngine.jsonConvert.objToStr(variableMap)); instance.setVariable(FlowEngine.jsonConvert.objToStr(variableMap));
insService.updateById(instance); insService.updateById(instance);
} }

@ -16,9 +16,9 @@ import org.dromara.common.mybatis.core.domain.BaseEntity;
import org.dromara.common.mybatis.core.page.PageQuery; import org.dromara.common.mybatis.core.page.PageQuery;
import org.dromara.common.mybatis.core.page.TableDataInfo; import org.dromara.common.mybatis.core.page.TableDataInfo;
import org.dromara.common.tenant.helper.TenantHelper; import org.dromara.common.tenant.helper.TenantHelper;
import org.dromara.workflow.api.event.ProcessCreateTaskEvent;
import org.dromara.workflow.api.event.ProcessDeleteEvent; import org.dromara.workflow.api.event.ProcessDeleteEvent;
import org.dromara.workflow.api.event.ProcessEvent; import org.dromara.workflow.api.event.ProcessEvent;
import org.dromara.workflow.api.event.ProcessTaskEvent;
import org.dromara.workflow.common.ConditionalOnEnable; import org.dromara.workflow.common.ConditionalOnEnable;
import org.dromara.workflow.domain.TestLeave; import org.dromara.workflow.domain.TestLeave;
import org.dromara.workflow.domain.bo.TestLeaveBo; import org.dromara.workflow.domain.bo.TestLeaveBo;
@ -168,19 +168,17 @@ public class TestLeaveServiceImpl implements ITestLeaveService {
/** /**
* *
* @EventListener(condition = "#processCreateTaskEvent.flowCode=='leave1'") * @EventListener(condition = "#processTaskEvent.flowCode=='leave1'")
* key * key
* if ("xxx".equals(processCreateTaskEvent.getNodeCode())) { * if ("xxx".equals(processTaskEvent.getNodeCode())) {
* //执行业务逻辑 * //执行业务逻辑
* } * }
* *
* @param processCreateTaskEvent * @param processTaskEvent
*/ */
@EventListener(condition = "#processCreateTaskEvent.flowCode.startsWith('leave')") @EventListener(condition = "#processTaskEvent.flowCode.startsWith('leave')")
public void processCreateTaskHandler(ProcessCreateTaskEvent processCreateTaskEvent) { public void processTaskHandler(ProcessTaskEvent processTaskEvent) {
TenantHelper.dynamic(processCreateTaskEvent.getTenantId(), () -> { log.info("当前任务创建了{}", processTaskEvent.toString());
log.info("当前任务创建了{}", processCreateTaskEvent.toString());
});
} }
/** /**

Loading…
Cancel
Save