From 98e3292257dcb8192e42961edd79b1aa9261bf3c Mon Sep 17 00:00:00 2001 From: wangli <274027703@qq.com> Date: Mon, 22 Apr 2024 16:59:50 +0800 Subject: [PATCH] =?UTF-8?q?update=20-=20=E5=9C=A8=E5=8F=91=E9=80=81?= =?UTF-8?q?=E5=BE=85=E5=8A=9E=E6=97=B6,=E9=80=8F=E4=BC=A0=E7=94=A8?= =?UTF-8?q?=E4=BA=8E=E6=9F=A5=E8=AF=A2=E8=83=BD=E7=94=A8=E6=8C=89=E9=92=AE?= =?UTF-8?q?=E7=9A=84=E5=89=8D=E7=BD=AE=E6=95=B0=E6=8D=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../engine/cmd/helper/CustomTaskHelper.java | 8 ++- .../core/engine/event/MessagePushEvent.java | 4 ++ .../engine/event/MessagePushEventBuilder.java | 3 +- .../engine/event/MessagePushEventImpl.java | 56 ++++++++++++++++++- .../RocketMqMessagePushEventListener.java | 1 + .../MessagePushTaskEvent_103_Listener.java | 5 +- 6 files changed, 69 insertions(+), 8 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 8aaa69247..e4ecd868a 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 @@ -86,9 +86,13 @@ public class CustomTaskHelper { } private static void setParentTaskId(TaskEntity originTask, Execution subExecution) { - CommandContextUtil.getEntityCache().findInCache(TaskEntity.class).stream().filter(i -> Objects.equals(i.getExecutionId(), subExecution.getId())).findAny().ifPresent(i -> i.setParentTaskId(originTask.getId())); + CommandContextUtil.getEntityCache().findInCache(TaskEntity.class).stream() + .filter(i -> Objects.equals(i.getExecutionId(), subExecution.getId())) + .findAny().ifPresent(i -> i.setParentTaskId(originTask.getId())); - CommandContextUtil.getEntityCache().findInCache(HistoricTaskInstanceEntity.class).stream().filter(i -> Objects.equals(i.getExecutionId(), subExecution.getId())).findAny().ifPresent(i -> i.setParentTaskId(originTask.getId())); + CommandContextUtil.getEntityCache().findInCache(HistoricTaskInstanceEntity.class).stream() + .filter(i -> Objects.equals(i.getExecutionId(), subExecution.getId())) + .findAny().ifPresent(i -> i.setParentTaskId(originTask.getId())); } /** diff --git a/workflow-engine-core/src/main/java/cn/axzo/workflow/core/engine/event/MessagePushEvent.java b/workflow-engine-core/src/main/java/cn/axzo/workflow/core/engine/event/MessagePushEvent.java index 03abf8d3e..fea407c50 100644 --- a/workflow-engine-core/src/main/java/cn/axzo/workflow/core/engine/event/MessagePushEvent.java +++ b/workflow-engine-core/src/main/java/cn/axzo/workflow/core/engine/event/MessagePushEvent.java @@ -20,6 +20,10 @@ public interface MessagePushEvent extends FlowableEvent { String getProcessInstanceId(); + String getProcessDefinitionKey(); + + String getCurrentTaskDefinitionKey(); + String getTenantId(); String getTaskId(); diff --git a/workflow-engine-core/src/main/java/cn/axzo/workflow/core/engine/event/MessagePushEventBuilder.java b/workflow-engine-core/src/main/java/cn/axzo/workflow/core/engine/event/MessagePushEventBuilder.java index 5af3d70cf..60c76741c 100644 --- a/workflow-engine-core/src/main/java/cn/axzo/workflow/core/engine/event/MessagePushEventBuilder.java +++ b/workflow-engine-core/src/main/java/cn/axzo/workflow/core/engine/event/MessagePushEventBuilder.java @@ -53,9 +53,10 @@ public class MessagePushEventBuilder { public static MessagePushEventImpl createPendingPushEvent(List assigners, BpmnNoticeConf noticeConf, String processInstanceId, + String processDefinitionId, String currentTaskDefinitionKey, String tenantId, String taskId) { MessagePushEventImpl newEvent = new MessagePushEventImpl(PENDING_PUSH, assigners, noticeConf, processInstanceId, - tenantId, taskId); + processDefinitionId, currentTaskDefinitionKey, tenantId, taskId); return newEvent; } diff --git a/workflow-engine-core/src/main/java/cn/axzo/workflow/core/engine/event/MessagePushEventImpl.java b/workflow-engine-core/src/main/java/cn/axzo/workflow/core/engine/event/MessagePushEventImpl.java index 28dabc436..12d81578d 100644 --- a/workflow-engine-core/src/main/java/cn/axzo/workflow/core/engine/event/MessagePushEventImpl.java +++ b/workflow-engine-core/src/main/java/cn/axzo/workflow/core/engine/event/MessagePushEventImpl.java @@ -19,6 +19,8 @@ public class MessagePushEventImpl implements MessagePushEvent { private List assigners; private BpmnNoticeConf noticeConfig; private String processInstanceId; + private String processDefinitionId; + private String currentTaskDefinitionKey; private String tenantId; private String taskId; @@ -35,14 +37,13 @@ public class MessagePushEventImpl implements MessagePushEvent { * 该对象的消费场景会对 taskId 做条件判断 * * @param type - * @param assigner + * @param assigners * @param noticeConfig * @param processInstanceId * @param tenantId * @param taskId */ - public MessagePushEventImpl(FlowableEventType type, List assigners, - BpmnNoticeConf noticeConfig, String processInstanceId, String tenantId, String taskId) { + public MessagePushEventImpl(FlowableEventType type, List assigners, BpmnNoticeConf noticeConfig, String processInstanceId, String tenantId, String taskId) { this.type = type; this.assigners = assigners; this.noticeConfig = noticeConfig; @@ -51,6 +52,33 @@ public class MessagePushEventImpl implements MessagePushEvent { this.taskId = taskId; } + /** + * 使用该对象时需遵守,如果是 task 级的,一定要传 taskId, 其他参数则都是必传 + *

+ * 该对象的消费场景会对 taskId 做条件判断 + * + * @param type + * @param assigners + * @param noticeConfig + * @param processInstanceId + * @param processDefinitionId + * @param currentTaskDefinitionKey + * @param tenantId + * @param taskId + */ + public MessagePushEventImpl(FlowableEventType type, List assigners, + BpmnNoticeConf noticeConfig, String processInstanceId, String processDefinitionId, + String currentTaskDefinitionKey, String tenantId, String taskId) { + this.type = type; + this.assigners = assigners; + this.noticeConfig = noticeConfig; + this.processInstanceId = processInstanceId; + this.processDefinitionId = processDefinitionId; + this.currentTaskDefinitionKey = currentTaskDefinitionKey; + this.tenantId = tenantId; + this.taskId = taskId; + } + @Override public FlowableEventType getType() { return type; @@ -83,10 +111,32 @@ public class MessagePushEventImpl implements MessagePushEvent { return processInstanceId; } + @Override + public String getProcessDefinitionKey() { + return ""; + } + public void setProcessInstanceId(String processInstanceId) { this.processInstanceId = processInstanceId; } + public String getProcessDefinitionId() { + return processDefinitionId; + } + + public void setProcessDefinitionId(String processDefinitionId) { + this.processDefinitionId = processDefinitionId; + } + + @Override + public String getCurrentTaskDefinitionKey() { + return currentTaskDefinitionKey; + } + + public void setCurrentTaskDefinitionKey(String currentTaskDefinitionKey) { + this.currentTaskDefinitionKey = currentTaskDefinitionKey; + } + @Override public String getTenantId() { return tenantId; diff --git a/workflow-engine-server/src/main/java/cn/axzo/workflow/server/controller/listener/notice/RocketMqMessagePushEventListener.java b/workflow-engine-server/src/main/java/cn/axzo/workflow/server/controller/listener/notice/RocketMqMessagePushEventListener.java index 880a51845..28a08ddb3 100644 --- a/workflow-engine-server/src/main/java/cn/axzo/workflow/server/controller/listener/notice/RocketMqMessagePushEventListener.java +++ b/workflow-engine-server/src/main/java/cn/axzo/workflow/server/controller/listener/notice/RocketMqMessagePushEventListener.java @@ -144,6 +144,7 @@ public class RocketMqMessagePushEventListener extends AbstractBpmnEventListener< JSONUtil.toJsonStr(event.getAssigners())); } if (Objects.nonNull(event.getNoticeConfig().getPending())) { + // TODO 发送待办时, 计算当前人能操作的按钮有哪些? MessagePushDTO dto = build(event.getNoticeConfig().getPending().getPendingMessageId(), PROCESS_PUSH_PENDING, event, collectionVariable(event)); sendMessageQueue(dto, PROCESS_PUSH_PENDING); diff --git a/workflow-engine-server/src/main/java/cn/axzo/workflow/server/controller/listener/task/MessagePushTaskEvent_103_Listener.java b/workflow-engine-server/src/main/java/cn/axzo/workflow/server/controller/listener/task/MessagePushTaskEvent_103_Listener.java index a1a395822..634734d3a 100644 --- a/workflow-engine-server/src/main/java/cn/axzo/workflow/server/controller/listener/task/MessagePushTaskEvent_103_Listener.java +++ b/workflow-engine-server/src/main/java/cn/axzo/workflow/server/controller/listener/task/MessagePushTaskEvent_103_Listener.java @@ -152,8 +152,9 @@ public class MessagePushTaskEvent_103_Listener extends AbstractBpmnEventListener assigners.stream().filter(i -> Objects.equals(delegateTask.getAssignee(), i.buildAssigneeId())).findAny() .ifPresent(i -> { MessagePushEventImpl event = - MessagePushEventBuilder.createEvent(MessagePushEventType.PENDING_PUSH, - Lists.newArrayList(i), noticeConf, processInstance.getProcessInstanceId(), + MessagePushEventBuilder.createPendingPushEvent(Lists.newArrayList(i), + noticeConf, processInstance.getProcessInstanceId(), + processInstance.getProcessDefinitionId(), userTask.getId(), processInstance.getTenantId(), delegateTask.getId()); if (log.isDebugEnabled()) { log.debug("发送推送待办的消息: {}", JSONUtil.toJsonStr(event));