diff --git a/workflow-engine-common/src/main/java/cn/axzo/workflow/common/constant/BpmnConstants.java b/workflow-engine-common/src/main/java/cn/axzo/workflow/common/constant/BpmnConstants.java index 062dc507b..5f60e0a68 100644 --- a/workflow-engine-common/src/main/java/cn/axzo/workflow/common/constant/BpmnConstants.java +++ b/workflow-engine-common/src/main/java/cn/axzo/workflow/common/constant/BpmnConstants.java @@ -107,4 +107,18 @@ public interface BpmnConstants { * 全局的停用/下架等状态描述 */ Integer DISABLED = 0; + + //=============== 消息推送时的变量集合中 key 的命名 ================= + String VAR_INITIATOR_USER_NAME = "initiatorUserName"; + String VAR_PROCESS_INSTANCE_NAME = "processInstanceName"; + String VAR_PROCESS_INSTANCE_ID = "processInstanceId"; + String VAR_PROCESS_START_TIME = "processStartTime"; + String VAR_PROCESS_END_TIME = "processEndTime"; + String VAR_BUSINESS_NAME = "businessName"; + + String VAR_TASK_USER_NAME = "taskUserName"; + String VAR_ACTIVITY_NAME = "activityName"; + String VAR_TASK_START_TIME = "taskStartTime"; + String VAR_PROCESS_RESULT = "processResult"; + String VAR_OPERATOR_TYPE = "operatorType"; } diff --git a/workflow-engine-common/src/main/java/cn/axzo/workflow/common/constant/MetaInfoConstants.java b/workflow-engine-common/src/main/java/cn/axzo/workflow/common/constant/MetaInfoConstants.java index c46891342..7d5706069 100644 --- a/workflow-engine-common/src/main/java/cn/axzo/workflow/common/constant/MetaInfoConstants.java +++ b/workflow-engine-common/src/main/java/cn/axzo/workflow/common/constant/MetaInfoConstants.java @@ -11,7 +11,5 @@ public interface MetaInfoConstants { String MODEL_TYPE = "modelType"; String MODEL_TYPE_PROCESS = "MODEL_PROCESS"; String MODEL_TYPE_FORM = "MODEL_FORM"; - - String MODEL_DESCRIPTION = "modelDescription"; } 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 e892eacb8..d81342a04 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 @@ -27,6 +27,18 @@ public class MessagePushEventImpl implements MessagePushEvent { this.type = type; } + /** + * 使用该对象时需遵守,如果是 task 级的,一定要传 taskId, 其他参数则都是必传 + *
+ * 该对象的消费场景会对 taskId 做条件判断
+ *
+ * @param type
+ * @param assigner
+ * @param noticeConfig
+ * @param processInstanceId
+ * @param tenantId
+ * @param taskId
+ */
public MessagePushEventImpl(FlowableEventType type, BpmnTaskDelegateAssigner assigner,
BpmnNoticeConf noticeConfig, String processInstanceId, String tenantId, String taskId) {
this.type = type;
diff --git a/workflow-engine-server/src/main/java/cn/axzo/workflow/server/controller/listener/activity/RocketMqBpmActivityEventListener.java b/workflow-engine-server/src/main/java/cn/axzo/workflow/server/controller/listener/activity/RocketMqBpmActivityEventListener.java
index 53ebe574d..96b5fb3f4 100644
--- a/workflow-engine-server/src/main/java/cn/axzo/workflow/server/controller/listener/activity/RocketMqBpmActivityEventListener.java
+++ b/workflow-engine-server/src/main/java/cn/axzo/workflow/server/controller/listener/activity/RocketMqBpmActivityEventListener.java
@@ -10,9 +10,6 @@ import lombok.extern.slf4j.Slf4j;
import org.flowable.common.engine.api.delegate.event.FlowableEngineEvent;
import org.flowable.engine.delegate.event.FlowableActivityCancelledEvent;
import org.flowable.engine.delegate.event.FlowableActivityEvent;
-import org.flowable.engine.delegate.event.FlowableMultiInstanceActivityCancelledEvent;
-import org.flowable.engine.delegate.event.FlowableMultiInstanceActivityCompletedEvent;
-import org.flowable.engine.delegate.event.FlowableMultiInstanceActivityEvent;
import org.springframework.core.Ordered;
import org.springframework.stereotype.Component;
@@ -52,11 +49,6 @@ public class RocketMqBpmActivityEventListener implements BpmnActivityEventListen
FlowableActivityEvent flowableEvent = (FlowableActivityEvent) event;
dto.setActivityId(flowableEvent.getActivityId());
dto.setActivityName(flowableEvent.getActivityName());
-
- } else if (event instanceof FlowableMultiInstanceActivityEvent) {
- FlowableMultiInstanceActivityEvent flowableEvent = (FlowableMultiInstanceActivityEvent) event;
- dto.setActivityId(flowableEvent.getActivityId());
- dto.setActivityName(flowableEvent.getActivityName());
}
log.info("RocketMqBpmActivityEventListener#onStarted MQ.Data: {}", JSON.toJSONString(dto));
sendMessageQueue(dto, PROCESS_ACTIVITY_STARTED);
@@ -77,11 +69,6 @@ public class RocketMqBpmActivityEventListener implements BpmnActivityEventListen
FlowableActivityEvent flowableEvent = (FlowableActivityEvent) event;
dto.setActivityId(flowableEvent.getActivityId());
dto.setActivityName(flowableEvent.getActivityName());
- } else if (event instanceof FlowableMultiInstanceActivityCompletedEvent) {
- FlowableMultiInstanceActivityCompletedEvent flowableEvent =
- (FlowableMultiInstanceActivityCompletedEvent) event;
- dto.setActivityId(flowableEvent.getActivityId());
- dto.setActivityName(flowableEvent.getActivityName());
}
log.info("RocketMqBpmActivityEventListener#onCompleted MQ.Data: {}", JSON.toJSONString(dto));
sendMessageQueue(dto, PROCESS_ACTIVITY_COMPLETED);
@@ -102,11 +89,6 @@ public class RocketMqBpmActivityEventListener implements BpmnActivityEventListen
FlowableActivityCancelledEvent flowableEvent = (FlowableActivityCancelledEvent) event;
dto.setActivityId(flowableEvent.getActivityId());
dto.setActivityName(flowableEvent.getActivityName());
- } else if (event instanceof FlowableMultiInstanceActivityCancelledEvent) {
- FlowableMultiInstanceActivityCancelledEvent flowableEvent =
- (FlowableMultiInstanceActivityCancelledEvent) event;
- dto.setActivityId(flowableEvent.getActivityId());
- dto.setActivityName(flowableEvent.getActivityName());
}
log.info("RocketMqBpmActivityEventListener#onCancelled MQ.Data: {}", JSON.toJSONString(dto));
diff --git a/workflow-engine-server/src/main/java/cn/axzo/workflow/server/controller/listener/notice/MessagePushEventListener.java b/workflow-engine-server/src/main/java/cn/axzo/workflow/server/controller/listener/notice/MessagePushEventListener.java
index 130298a9d..08b1d3618 100644
--- a/workflow-engine-server/src/main/java/cn/axzo/workflow/server/controller/listener/notice/MessagePushEventListener.java
+++ b/workflow-engine-server/src/main/java/cn/axzo/workflow/server/controller/listener/notice/MessagePushEventListener.java
@@ -4,6 +4,7 @@ import cn.axzo.framework.rocketmq.Event;
import cn.axzo.framework.rocketmq.EventProducer;
import cn.axzo.workflow.common.enums.MessagePushEventEnum;
import cn.axzo.workflow.common.model.request.bpmn.process.BpmnProcessInstanceQueryDTO;
+import cn.axzo.workflow.common.model.request.bpmn.task.BpmnTaskDelegateAssigner;
import cn.axzo.workflow.common.model.response.bpmn.process.BpmnProcessInstanceVO;
import cn.axzo.workflow.common.model.response.mq.MessagePushDTO;
import cn.axzo.workflow.core.engine.event.MessagePushEvent;
@@ -12,12 +13,33 @@ import cn.axzo.workflow.core.service.BpmnProcessInstanceService;
import com.alibaba.fastjson.JSON;
import lombok.AllArgsConstructor;
import lombok.extern.slf4j.Slf4j;
+import org.flowable.engine.HistoryService;
+import org.flowable.task.api.history.HistoricTaskInstance;
import org.springframework.core.Ordered;
import org.springframework.stereotype.Component;
+import org.springframework.util.CollectionUtils;
import org.springframework.util.StringUtils;
+import java.text.SimpleDateFormat;
+import java.util.Collections;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
import java.util.Objects;
+import static cn.axzo.workflow.common.constant.BpmnConstants.INTERNAL_INITIATOR;
+import static cn.axzo.workflow.common.constant.BpmnConstants.INTERNAL_TASK_RELATION_ASSIGNEE_LIST_INFO_SNAPSHOT;
+import static cn.axzo.workflow.common.constant.BpmnConstants.VAR_ACTIVITY_NAME;
+import static cn.axzo.workflow.common.constant.BpmnConstants.VAR_BUSINESS_NAME;
+import static cn.axzo.workflow.common.constant.BpmnConstants.VAR_INITIATOR_USER_NAME;
+import static cn.axzo.workflow.common.constant.BpmnConstants.VAR_OPERATOR_TYPE;
+import static cn.axzo.workflow.common.constant.BpmnConstants.VAR_PROCESS_END_TIME;
+import static cn.axzo.workflow.common.constant.BpmnConstants.VAR_PROCESS_INSTANCE_ID;
+import static cn.axzo.workflow.common.constant.BpmnConstants.VAR_PROCESS_INSTANCE_NAME;
+import static cn.axzo.workflow.common.constant.BpmnConstants.VAR_PROCESS_RESULT;
+import static cn.axzo.workflow.common.constant.BpmnConstants.VAR_PROCESS_START_TIME;
+import static cn.axzo.workflow.common.constant.BpmnConstants.VAR_TASK_START_TIME;
+import static cn.axzo.workflow.common.constant.BpmnConstants.VAR_TASK_USER_NAME;
import static cn.axzo.workflow.common.enums.MessagePushEventEnum.PROCESS_PUSH_NOTICE;
import static cn.axzo.workflow.common.enums.MessagePushEventEnum.PROCESS_PUSH_PENDING;
import static cn.axzo.workflow.common.enums.MessagePushEventEnum.PROCESS_PUSH_SMS;
@@ -35,15 +57,15 @@ public class MessagePushEventListener implements BpmnMessagePushEventListener, O
private final EventProducer> eventProducer;
private final BpmnProcessInstanceService processInstanceService;
+ private final HistoryService historyService;
@Override
public void onNotice(MessagePushEvent event) {
if (Objects.isNull(event.getNoticeConfig()) || !StringUtils.hasLength(event.getNoticeConfig().getNoticeMessageId()) || Objects.isNull(event.getAssigner())) {
return;
}
- BpmnProcessInstanceVO processInstanceVO = getBpmnProcessInstanceVO(event);
- MessagePushDTO dto = build(event.getNoticeConfig().getNoticeMessageId(), PROCESS_PUSH_NOTICE,
- processInstanceVO, event);
+ MessagePushDTO dto = build(event.getNoticeConfig().getNoticeMessageId(), PROCESS_PUSH_NOTICE, event,
+ collectionVariable(event));
log.info("MessagePushEventListener#onNotice MQ.Data: {}", JSON.toJSONString(dto));
sendMessageQueue(dto, PROCESS_PUSH_NOTICE);
}
@@ -54,9 +76,8 @@ public class MessagePushEventListener implements BpmnMessagePushEventListener, O
if (Objects.isNull(event.getNoticeConfig()) || !StringUtils.hasLength(event.getNoticeConfig().getPendingMessageId()) || Objects.isNull(event.getAssigner())) {
return;
}
- BpmnProcessInstanceVO processInstanceVO = getBpmnProcessInstanceVO(event);
- MessagePushDTO dto = build(event.getNoticeConfig().getNoticeMessageId(), PROCESS_PUSH_PENDING,
- processInstanceVO, event);
+ MessagePushDTO dto = build(event.getNoticeConfig().getNoticeMessageId(), PROCESS_PUSH_PENDING, event,
+ collectionVariable(event));
log.info("MessagePushEventListener#onPending MQ.Data: {}", JSON.toJSONString(dto));
sendMessageQueue(dto, PROCESS_PUSH_PENDING);
}
@@ -66,28 +87,68 @@ public class MessagePushEventListener implements BpmnMessagePushEventListener, O
if (Objects.isNull(event.getNoticeConfig()) || !StringUtils.hasLength(event.getNoticeConfig().getSmsId()) || Objects.isNull(event.getAssigner())) {
return;
}
- BpmnProcessInstanceVO processInstanceVO = getBpmnProcessInstanceVO(event);
- MessagePushDTO dto = build(event.getNoticeConfig().getNoticeMessageId(), PROCESS_PUSH_SMS,
- processInstanceVO, event);
+ MessagePushDTO dto = build(event.getNoticeConfig().getNoticeMessageId(), PROCESS_PUSH_SMS, event,
+ collectionVariable(event));
log.info("MessagePushEventListener#onSms MQ.Data: {}", JSON.toJSONString(dto));
sendMessageQueue(dto, PROCESS_PUSH_SMS);
}
+ private Map