update 优化工作流流程监听增加节点信息

master
AprilWind 9 months ago
parent 70aa14ecf8
commit b50904c6ff

@ -27,10 +27,20 @@ public class ProcessCreateTaskEvent implements Serializable {
private String flowCode;
/**
*
* 0 1 2 3 4
*/
private Integer nodeType;
/**
*
*/
private String nodeCode;
/**
*
*/
private String nodeName;
/**
* id
*/

@ -33,7 +33,22 @@ public class ProcessEvent implements Serializable {
private String businessId;
/**
*
* 0 1 2 3 4
*/
private Integer nodeType;
/**
*
*/
private String nodeCode;
/**
*
*/
private String nodeName;
/**
*
*/
private String status;

@ -27,16 +27,27 @@ public class FlowProcessEventHandler {
*
* @param flowCode
* @param businessId id
* @param status
* @param nodeType 0 1 2 3 4
* @param nodeCode
* @param nodeName
* @param status
* @param params
* @param submit true
*/
public void processHandler(String flowCode, String businessId, String status, Map<String, Object> params, boolean submit) {
public void processHandler(String flowCode, String businessId, Integer nodeType, String nodeCode, String nodeName,
String status, Map<String, Object> params, boolean submit) {
String tenantId = TenantHelper.getTenantId();
log.info("发布流程事件租户ID: {}, 流程状态: {}, 流程编码: {}, 业务ID: {}, 是否申请人节点办理: {}", tenantId, status, flowCode, businessId, submit);
log.info("【流程事件发布】租户ID: {}, 流程编码: {}, 业务ID: {}, 状态: {}, 节点类型: {}, 节点编码: {}, 节点名称: {}, 是否申请人节点: {}, 参数: {}",
tenantId, flowCode, businessId, status, nodeType, nodeCode, nodeName, 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.setStatus(status);
processEvent.setParams(params);
processEvent.setSubmit(submit);
@ -47,17 +58,22 @@ public class FlowProcessEventHandler {
*
*
* @param flowCode
* @param nodeCode
* @param nodeType 0 1 2 3 4
* @param nodeCode
* @param nodeName
* @param taskId id
* @param businessId id
*/
public void processCreateTaskHandler(String flowCode, String nodeCode, Long taskId, String businessId) {
public void processCreateTaskHandler(String flowCode, Integer nodeType, String nodeCode, String nodeName, Long taskId, String businessId) {
String tenantId = TenantHelper.getTenantId();
log.info("发布流程任务事件, 租户ID: {}, 流程编码: {}, 节点编码: {}, 任务ID: {}, 业务ID: {}", tenantId, flowCode, nodeCode, taskId, businessId);
log.info("发布流程任务事件, 租户ID: {}, 流程编码: {}, 节点类型: {}, 节点编码: {}, 节点名称: {}, 任务ID: {}, 业务ID: {}",
tenantId, flowCode, nodeType, nodeCode, nodeName, taskId, businessId);
ProcessCreateTaskEvent processCreateTaskEvent = new ProcessCreateTaskEvent();
processCreateTaskEvent.setTenantId(tenantId);
processCreateTaskEvent.setFlowCode(flowCode);
processCreateTaskEvent.setNodeType(nodeType);
processCreateTaskEvent.setNodeCode(nodeCode);
processCreateTaskEvent.setNodeName(nodeName);
processCreateTaskEvent.setTaskId(taskId);
processCreateTaskEvent.setBusinessId(businessId);
SpringUtils.context().publishEvent(processCreateTaskEvent);

@ -52,7 +52,8 @@ public class WorkflowGlobalListener implements GlobalListener {
Task task = listenerVariable.getTask();
if (task != null && BusinessStatusEnum.WAITING.getStatus().equals(flowStatus)) {
// 判断流程状态(发布审批中事件)
flowProcessEventHandler.processCreateTaskHandler(definition.getFlowCode(), task.getNodeCode(), task.getId(), businessId);
flowProcessEventHandler.processCreateTaskHandler(definition.getFlowCode(), task.getNodeType(),
task.getNodeCode(), task.getNodeName(), task.getId(), businessId);
}
}
@ -83,8 +84,6 @@ public class WorkflowGlobalListener implements GlobalListener {
public void finish(ListenerVariable listenerVariable) {
Instance instance = listenerVariable.getInstance();
Definition definition = listenerVariable.getDefinition();
String businessId = instance.getBusinessId();
String flowStatus = instance.getFlowStatus();
Map<String, Object> params = new HashMap<>();
FlowParams flowParams = listenerVariable.getFlowParams();
if (ObjectUtil.isNotNull(flowParams)) {
@ -96,20 +95,21 @@ public class WorkflowGlobalListener implements GlobalListener {
params.put("message", flowParams.getMessage());
}
// 判断流程状态(发布:撤销,退回,作废,终止,已完成事件)
String status = determineFlowStatus(instance, flowStatus);
String status = determineFlowStatus(instance);
if (StringUtils.isNotBlank(status)) {
flowProcessEventHandler.processHandler(definition.getFlowCode(), businessId, status, params, false);
flowProcessEventHandler.processHandler(definition.getFlowCode(), instance.getBusinessId(), instance.getNodeType(),
instance.getNodeCode(), instance.getNodeName(), status, params, false);
}
}
/**
*
*
*
* @param instance
* @param flowStatus
* @param instance
* @return
*/
private String determineFlowStatus(Instance instance, String flowStatus) {
private String determineFlowStatus(Instance instance) {
String flowStatus = instance.getFlowStatus();
if (StringUtils.isNotBlank(flowStatus) && BusinessStatusEnum.initialState(flowStatus)) {
log.info("流程实例当前状态: {}", flowStatus);
return flowStatus;

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

Loading…
Cancel
Save