From 00ecd83eb24bffa31315c2455779dbd1e2b36ae3 Mon Sep 17 00:00:00 2001 From: wangli <274027703@qq.com> Date: Thu, 4 Dec 2025 16:08:31 +0800 Subject: [PATCH 1/5] =?UTF-8?q?feat(REQ-5865)=20-=20=E6=B7=BB=E5=8A=A0?= =?UTF-8?q?=E6=89=A7=E8=A1=8C=E8=BF=87=E7=A8=8B=E6=97=A5=E5=BF=97?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ext/listener/TaskEntityEventHandle.java | 38 ++++++++++++------- 1 file changed, 24 insertions(+), 14 deletions(-) diff --git a/workflow-engine-server/src/main/java/cn/axzo/workflow/server/engine/ext/listener/TaskEntityEventHandle.java b/workflow-engine-server/src/main/java/cn/axzo/workflow/server/engine/ext/listener/TaskEntityEventHandle.java index 5baa7408d..3ced88921 100644 --- a/workflow-engine-server/src/main/java/cn/axzo/workflow/server/engine/ext/listener/TaskEntityEventHandle.java +++ b/workflow-engine-server/src/main/java/cn/axzo/workflow/server/engine/ext/listener/TaskEntityEventHandle.java @@ -97,32 +97,35 @@ public class TaskEntityEventHandle implements EntityEventHandle { @Override public void onCreate(TaskEntity taskEntity) { + log.info("TaskEntityEventHandle#onCreate processInstanceId: {}, taskEntityId: {}", taskEntity.getProcessInstanceId(), taskEntity.getTaskDefinitionKey()); // 记录发起人 boolean isNodeStarter = Objects.equals(taskEntity.getTaskDefinitionKey(), NODE_STARTER.getType()); BpmnModel bpmnModel = ProcessDefinitionUtil.getBpmnModel(taskEntity.getProcessDefinitionId()); FlowElement flowElement = bpmnModel.getFlowElement(taskEntity.getTaskDefinitionKey()); - ExtAxProcessLog log = new ExtAxProcessLog(); - log.setProcessInstanceId(taskEntity.getProcessInstanceId()); - log.setTenantId(taskEntity.getTenantId()); - log.setActivityId(taskEntity.getTaskDefinitionKey()); - log.setActivityName(taskEntity.getName()); - log.setApprovalMethod((isNodeStarter ? nobody : getApprovalMethod(flowElement).orElse(nobody)).getType()); - log.setNodeType((getNodeType(flowElement).orElse(BpmnFlowNodeType.NODE_EMPTY)).getType()); - log.setNodeMode((isNodeStarter ? BpmnFlowNodeMode.GENERAL : getNodeMode(flowElement)).getType()); - log.setTaskId(taskEntity.getId()); + ExtAxProcessLog processLog = new ExtAxProcessLog(); + processLog.setProcessInstanceId(taskEntity.getProcessInstanceId()); + processLog.setTenantId(taskEntity.getTenantId()); + processLog.setActivityId(taskEntity.getTaskDefinitionKey()); + processLog.setActivityName(taskEntity.getName()); + processLog.setApprovalMethod((isNodeStarter ? nobody : getApprovalMethod(flowElement).orElse(nobody)).getType()); + processLog.setNodeType((getNodeType(flowElement).orElse(BpmnFlowNodeType.NODE_EMPTY)).getType()); + processLog.setNodeMode((isNodeStarter ? BpmnFlowNodeMode.GENERAL : getNodeMode(flowElement)).getType()); + processLog.setTaskId(taskEntity.getId()); String operationDesc = taskEntity.getVariable(COMMENT_TYPE_OPERATION_DESC, String.class); - log.setOperationDesc(StringUtils.hasText(operationDesc) ? operationDesc : HANDLING.getDesc()); - log.setStartTime(taskEntity.getCreateTime()); - log.setStatus(PROCESSING.getStatus()); - log.setSignature(getActivitySignature(flowElement)); + processLog.setOperationDesc(StringUtils.hasText(operationDesc) ? operationDesc : HANDLING.getDesc()); + processLog.setStartTime(taskEntity.getCreateTime()); + processLog.setStatus(PROCESSING.getStatus()); + processLog.setSignature(getActivitySignature(flowElement)); - processLogService.insert(log); + log.info("TaskEntityEventHandle#onCreate insert:{}", JSON.toJSONString(processLog)); + processLogService.insert(processLog); } @Override public void onInitialized(TaskEntity taskEntity) { + log.info("TaskEntityEventHandle#onInitialized processInstanceId: {}, taskEntityId: {}", taskEntity.getProcessInstanceId(), taskEntity.getTaskDefinitionKey()); Process process = ProcessDefinitionUtil.getProcess(taskEntity.getProcessDefinitionId()); ExtAxProcessLog queryLog = new ExtAxProcessLog(); queryLog.setProcessInstanceId(taskEntity.getProcessInstanceId()); @@ -132,15 +135,18 @@ public class TaskEntityEventHandle implements EntityEventHandle { .ifPresent(updateLog::setButtonConf); BpmnMetaParserHelper.getFormFieldPermissionConf(process.getFlowElement(taskEntity.getTaskDefinitionKey())) .ifPresent(updateLog::setFormFieldPermissionConf); + log.info("TaskEntityEventHandle#onInitialized update, queryLog: {}, updateLog: {}", JSON.toJSONString(queryLog), JSON.toJSONString(updateLog)); processLogService.update(queryLog, updateLog); } @Override public void onUpdated(TaskEntity taskEntity) { + log.info("TaskEntityEventHandle#onUpdated processInstanceId: {}, taskEntityId: {}", taskEntity.getProcessInstanceId(), taskEntity.getTaskDefinitionKey()); if (Objects.equals(HIDDEN_ASSIGNEE_ID, taskEntity.getAssignee())) { ExtAxProcessLog queryLog = new ExtAxProcessLog(); queryLog.setProcessInstanceId(taskEntity.getProcessInstanceId()); queryLog.setTaskId(taskEntity.getId()); + log.info("TaskEntityEventHandle#onUpdated delete: {}", JSON.toJSONString(queryLog)); processLogService.delete(queryLog); } else { ProcessEngineConfigurationImpl processEngineConfiguration = CommandContextUtil.getProcessEngineConfiguration(); @@ -157,6 +163,7 @@ public class TaskEntityEventHandle implements EntityEventHandle { // 快照审批人的组织架构信息 OrgStructureSnapshotInfo snapshotInfo = buildApproverOrgStructureInfo(assignee, taskEntity); + log.info("TaskEntityEventHandle#onUpdated updateAssigneeAndSnapshot, queryLog: {}, assignee: {}, snapshotInfo: {}", JSON.toJSONString(queryLog), JSON.toJSONString(assignee), JSON.toJSONString(snapshotInfo)); processLogService.updateAssigneeAndSnapshot(queryLog, assignee, snapshotInfo); }); } @@ -230,6 +237,7 @@ public class TaskEntityEventHandle implements EntityEventHandle { @Override public void onDeleted(TaskEntity taskEntity) { + log.info("TaskEntityEventHandle#onDeleted processInstanceId: {}, taskEntityId: {}", taskEntity.getProcessInstanceId(), taskEntity.getTaskDefinitionKey()); ExtAxProcessLog queryLog = new ExtAxProcessLog(); queryLog.setProcessInstanceId(taskEntity.getProcessInstanceId()); queryLog.setTaskId(taskEntity.getId()); @@ -289,6 +297,7 @@ public class TaskEntityEventHandle implements EntityEventHandle { update.setOperationDesc("抄送" + carbonCopies.size() + "人"); } + log.info("TaskEntityEventHandle#onDeleted update, queryLog: {}, update: {}", JSON.toJSONString(queryLog), JSON.toJSONString(update)); processLogService.update(queryLog, update); if (needDelete) { @@ -296,6 +305,7 @@ public class TaskEntityEventHandle implements EntityEventHandle { ExtAxProcessLog deleteLog = new ExtAxProcessLog(); deleteLog.setProcessInstanceId(taskEntity.getProcessInstanceId()); deleteLog.setTaskId(taskEntity.getId()); + log.info("TaskEntityEventHandle#onDeleted delete, deleteLog: {}", JSON.toJSONString(deleteLog)); processLogService.delete(deleteLog); } } From ce8b67ed15ff7450c23dd9885f1b6108ef9fc414 Mon Sep 17 00:00:00 2001 From: wangli <274027703@qq.com> Date: Thu, 4 Dec 2025 16:51:05 +0800 Subject: [PATCH 2/5] =?UTF-8?q?feat(REQ-5865)=20-=20=E6=B7=BB=E5=8A=A0?= =?UTF-8?q?=E6=89=A7=E8=A1=8C=E8=BF=87=E7=A8=8B=E6=97=A5=E5=BF=97?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/web/bpmn/BpmnProcessActivityController.java | 1 + 1 file changed, 1 insertion(+) diff --git a/workflow-engine-server/src/main/java/cn/axzo/workflow/server/controller/web/bpmn/BpmnProcessActivityController.java b/workflow-engine-server/src/main/java/cn/axzo/workflow/server/controller/web/bpmn/BpmnProcessActivityController.java index bdc654c12..444e821df 100644 --- a/workflow-engine-server/src/main/java/cn/axzo/workflow/server/controller/web/bpmn/BpmnProcessActivityController.java +++ b/workflow-engine-server/src/main/java/cn/axzo/workflow/server/controller/web/bpmn/BpmnProcessActivityController.java @@ -81,6 +81,7 @@ public class BpmnProcessActivityController extends BasicPopulateAvatarController @Override @RepeatSubmit public CommonResponse trigger(@Validated @RequestBody BpmnActivityTriggerDTO dto) { + log.info("businessNode trigger ===>>>参数:{}", JSON.toJSONString(dto)); String header = request.getHeader(HEADER_SERVER_NAME); String remoteAddr = request.getRemoteAddr(); log.info("业务节点唤醒 trigger ===>>>参数:{}, 请求来自微服务: {}, ip: {}", JSON.toJSONString(dto), header, remoteAddr); From 65540e1685e1201d887b0b6e1a458901acf8396c Mon Sep 17 00:00:00 2001 From: wangli <274027703@qq.com> Date: Thu, 4 Dec 2025 16:54:45 +0800 Subject: [PATCH 3/5] =?UTF-8?q?feat(REQ-5865)=20-=20=E6=B7=BB=E5=8A=A0?= =?UTF-8?q?=E6=89=A7=E8=A1=8C=E8=BF=87=E7=A8=8B=E6=97=A5=E5=BF=97?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../axzo/workflow/core/engine/cmd/CustomActivityTriggerCmd.java | 2 ++ .../core/service/impl/BpmnProcessActivityServiceImpl.java | 1 + 2 files changed, 3 insertions(+) diff --git a/workflow-engine-core/src/main/java/cn/axzo/workflow/core/engine/cmd/CustomActivityTriggerCmd.java b/workflow-engine-core/src/main/java/cn/axzo/workflow/core/engine/cmd/CustomActivityTriggerCmd.java index d22f4769d..111e7404a 100644 --- a/workflow-engine-core/src/main/java/cn/axzo/workflow/core/engine/cmd/CustomActivityTriggerCmd.java +++ b/workflow-engine-core/src/main/java/cn/axzo/workflow/core/engine/cmd/CustomActivityTriggerCmd.java @@ -48,6 +48,7 @@ public class CustomActivityTriggerCmd extends AbstractCommand implements S @Override public Void execute(CommandContext commandContext) { + log.info("CustomActivityTriggerCmd execute start, dto: {}", JSON.toJSONString(dto)); ProcessEngineConfigurationImpl processEngineConfiguration = CommandContextUtil.getProcessEngineConfiguration(commandContext); @@ -68,6 +69,7 @@ public class CustomActivityTriggerCmd extends AbstractCommand implements S addComment(commandContext, task, COMMENT_TYPE_OPERATION_DESC, "已同意"); RuntimeService runtimeService = processEngineConfiguration.getRuntimeService(); + log.info("CustomActivityTriggerCmd triggerAsync"); runtimeService.triggerAsync(dto.getTriggerId()); return null; } diff --git a/workflow-engine-core/src/main/java/cn/axzo/workflow/core/service/impl/BpmnProcessActivityServiceImpl.java b/workflow-engine-core/src/main/java/cn/axzo/workflow/core/service/impl/BpmnProcessActivityServiceImpl.java index 5a6a085d2..131a8515a 100644 --- a/workflow-engine-core/src/main/java/cn/axzo/workflow/core/service/impl/BpmnProcessActivityServiceImpl.java +++ b/workflow-engine-core/src/main/java/cn/axzo/workflow/core/service/impl/BpmnProcessActivityServiceImpl.java @@ -47,6 +47,7 @@ public class BpmnProcessActivityServiceImpl implements BpmnProcessActivityServic @Override @Transactional(rollbackFor = Exception.class) public void trigger(BpmnActivityTriggerDTO dto) { + log.info("processActivityService trigger called"); CommandExecutor commandExecutor = processEngineConfiguration.getCommandExecutor(); if (Boolean.TRUE.equals(dto.getAsync())) { commandExecutor.execute(new CustomActivityTriggerAsyncCmd(dto)); From 9a0945fac108ed3ad2afdf34a5d9e51f8a1b51b4 Mon Sep 17 00:00:00 2001 From: wangli <274027703@qq.com> Date: Thu, 4 Dec 2025 17:25:03 +0800 Subject: [PATCH 4/5] =?UTF-8?q?feat(REQ-5865)=20-=20=E8=A7=A3=E5=86=B3=20t?= =?UTF-8?q?riggerAsync=20=E5=90=8E=EF=BC=8C=E4=B8=9A=E5=8A=A1=E8=8A=82?= =?UTF-8?q?=E7=82=B9=E6=96=87=E6=A1=88=E6=B6=88=E5=A4=B1=E7=9A=84=E9=97=AE?= =?UTF-8?q?=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../core/engine/cmd/helper/CustomTaskHelper.java | 10 +++++++++- .../engine/ext/listener/TaskEntityEventHandle.java | 4 +++- 2 files changed, 12 insertions(+), 2 deletions(-) diff --git a/workflow-engine-core/src/main/java/cn/axzo/workflow/core/engine/cmd/helper/CustomTaskHelper.java b/workflow-engine-core/src/main/java/cn/axzo/workflow/core/engine/cmd/helper/CustomTaskHelper.java index ab58d0007..a39a566bc 100644 --- a/workflow-engine-core/src/main/java/cn/axzo/workflow/core/engine/cmd/helper/CustomTaskHelper.java +++ b/workflow-engine-core/src/main/java/cn/axzo/workflow/core/engine/cmd/helper/CustomTaskHelper.java @@ -283,6 +283,10 @@ public class CustomTaskHelper { } public static void addComment(CommandContext commandContext, TaskEntity task, String type, String message) { + addComment(commandContext, task, type, message, false); + } + + public static void addComment(CommandContext commandContext, TaskEntity task, String type, String message, boolean withVariableLocal) { if (!StringUtils.hasText(type) || !StringUtils.hasText(message)) { return; } @@ -307,7 +311,11 @@ public class CustomTaskHelper { comment.setFullMessage(message); processEngineConfiguration.getCommentEntityManager().insert(comment); - task.setTransientVariableLocal(type, message); + if (withVariableLocal) { + task.setVariableLocal(type, message); + } else { + task.setTransientVariableLocal(type, message); + } } public static Attachment addAttachment(CommandContext commandContext, Task task, AttachmentDTO attachmentDto) { diff --git a/workflow-engine-server/src/main/java/cn/axzo/workflow/server/engine/ext/listener/TaskEntityEventHandle.java b/workflow-engine-server/src/main/java/cn/axzo/workflow/server/engine/ext/listener/TaskEntityEventHandle.java index 3ced88921..6f796d710 100644 --- a/workflow-engine-server/src/main/java/cn/axzo/workflow/server/engine/ext/listener/TaskEntityEventHandle.java +++ b/workflow-engine-server/src/main/java/cn/axzo/workflow/server/engine/ext/listener/TaskEntityEventHandle.java @@ -45,6 +45,7 @@ import java.util.Collections; import java.util.Date; import java.util.List; import java.util.Objects; +import java.util.Optional; import java.util.stream.Collectors; import static cn.axzo.workflow.common.constant.BpmnConstants.AND_SIGN_EXPRESSION; @@ -265,7 +266,7 @@ public class TaskEntityEventHandle implements EntityEventHandle { if (Objects.nonNull(advice) && StringUtils.hasText(advice.toString())) { update.setAdvice(advice.toString()); } - Object operationDesc = taskEntity.getTransientVariableLocal(COMMENT_TYPE_OPERATION_DESC); + Object operationDesc = Optional.ofNullable(taskEntity.getTransientVariableLocal(COMMENT_TYPE_OPERATION_DESC)).orElse(taskEntity.getVariableLocal(COMMENT_TYPE_OPERATION_DESC)); if (Objects.nonNull(operationDesc) && StringUtils.hasText(operationDesc.toString())) { update.setOperationDesc(Objects.nonNull(assignee) ? (StringUtils.hasText(assignee.getAssignerName()) ? assignee.getAssignerName() : "") + operationDesc @@ -275,6 +276,7 @@ public class TaskEntityEventHandle implements EntityEventHandle { (StringUtils.hasText(assignee.getAssignerName()) ? assignee.getAssignerName() : "") : ""); } + taskEntity.removeVariableLocal(COMMENT_TYPE_OPERATION_DESC); String completionType = taskEntity.getVariable(TASK_COMPLETE_OPERATION_TYPE + taskEntity.getId(), String.class); From a49f9bad15bed93914b0f30fe20a6084b1f8aa2a Mon Sep 17 00:00:00 2001 From: wangli <274027703@qq.com> Date: Mon, 8 Dec 2025 10:20:01 +0800 Subject: [PATCH 5/5] =?UTF-8?q?feat(REQ-5865)=20-=20=E8=A7=A3=E5=86=B3=20t?= =?UTF-8?q?riggerAsync=20=E5=90=8E=EF=BC=8C=E4=B8=9A=E5=8A=A1=E8=8A=82?= =?UTF-8?q?=E7=82=B9=E6=96=87=E6=A1=88=E6=B6=88=E5=A4=B1=E7=9A=84=E9=97=AE?= =?UTF-8?q?=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../axzo/workflow/core/engine/cmd/CustomActivityTriggerCmd.java | 2 +- .../server/engine/ext/listener/TaskEntityEventHandle.java | 1 + 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/workflow-engine-core/src/main/java/cn/axzo/workflow/core/engine/cmd/CustomActivityTriggerCmd.java b/workflow-engine-core/src/main/java/cn/axzo/workflow/core/engine/cmd/CustomActivityTriggerCmd.java index 111e7404a..03d97a8f9 100644 --- a/workflow-engine-core/src/main/java/cn/axzo/workflow/core/engine/cmd/CustomActivityTriggerCmd.java +++ b/workflow-engine-core/src/main/java/cn/axzo/workflow/core/engine/cmd/CustomActivityTriggerCmd.java @@ -67,7 +67,7 @@ public class CustomActivityTriggerCmd extends AbstractCommand implements S return null; } - addComment(commandContext, task, COMMENT_TYPE_OPERATION_DESC, "已同意"); + addComment(commandContext, task, COMMENT_TYPE_OPERATION_DESC, "已同意", true); RuntimeService runtimeService = processEngineConfiguration.getRuntimeService(); log.info("CustomActivityTriggerCmd triggerAsync"); runtimeService.triggerAsync(dto.getTriggerId()); diff --git a/workflow-engine-server/src/main/java/cn/axzo/workflow/server/engine/ext/listener/TaskEntityEventHandle.java b/workflow-engine-server/src/main/java/cn/axzo/workflow/server/engine/ext/listener/TaskEntityEventHandle.java index 6f796d710..34575c4c3 100644 --- a/workflow-engine-server/src/main/java/cn/axzo/workflow/server/engine/ext/listener/TaskEntityEventHandle.java +++ b/workflow-engine-server/src/main/java/cn/axzo/workflow/server/engine/ext/listener/TaskEntityEventHandle.java @@ -267,6 +267,7 @@ public class TaskEntityEventHandle implements EntityEventHandle { update.setAdvice(advice.toString()); } Object operationDesc = Optional.ofNullable(taskEntity.getTransientVariableLocal(COMMENT_TYPE_OPERATION_DESC)).orElse(taskEntity.getVariableLocal(COMMENT_TYPE_OPERATION_DESC)); + log.info("TaskEntityEventHandle#onDeleted processInstanceId: {}, operationDesc: {}", taskEntity.getProcessInstanceId(), operationDesc); if (Objects.nonNull(operationDesc) && StringUtils.hasText(operationDesc.toString())) { update.setOperationDesc(Objects.nonNull(assignee) ? (StringUtils.hasText(assignee.getAssignerName()) ? assignee.getAssignerName() : "") + operationDesc