diff --git a/workflow-engine-common/src/main/java/cn/axzo/workflow/common/constant/BpmConstants.java b/workflow-engine-common/src/main/java/cn/axzo/workflow/common/constant/BpmConstants.java
index 7fb16200f..39ad3cb44 100644
--- a/workflow-engine-common/src/main/java/cn/axzo/workflow/common/constant/BpmConstants.java
+++ b/workflow-engine-common/src/main/java/cn/axzo/workflow/common/constant/BpmConstants.java
@@ -25,8 +25,12 @@ public interface BpmConstants {
String INTERNAL_PROCESS_TYPE_CANCEL = "_INTERNAL_PROCESS_TYPE_CANCEL";
String INTERNAL_PROCESS_TYPE_REJECT = "_INTERNAL_PROCESS_TYPE_REJECT";
String INTERNAL_SPECIFY_NEXT_APPROVER = "_INTERNAL_SPECIFY_NEXT_APPROVER";
- String INTERNAL_TASK_RELATION_ASSIGNEE_INFO = "[_ASSIGNEE_INFO_]";
+ // String INTERNAL_TASK_RELATION_ASSIGNEE_INFO = "[_ASSIGNEE_INFO_]";
+ // 用于多实例审批时,保存计算出来的审批人
+ String INTERNAL_TASK_RELATION_ASSIGNEE_LIST_INFO = "[_ASSIGNEE_LIST_INFO_]";
+ // 单任务节点,
String INTERNAL_TASK_RELATION_ASSIGNEE_INFO_SNAPSHOT = "[_ASSIGNEE_INFO_SNAPSHOT_]";
+ String INTERNAL_TASK_RELATION_ASSIGNEE_LIST_INFO_SNAPSHOT = "[_ASSIGNEE_LIST_INFO_SNAPSHOT_]";
String PROCESS_PREFIX = "Flowable";
diff --git a/workflow-engine-common/src/main/java/cn/axzo/workflow/common/model/request/bpmn/task/BpmnTaskAuditDTO.java b/workflow-engine-common/src/main/java/cn/axzo/workflow/common/model/request/bpmn/task/BpmnTaskAuditDTO.java
index ff0403f66..9067c8b3c 100644
--- a/workflow-engine-common/src/main/java/cn/axzo/workflow/common/model/request/bpmn/task/BpmnTaskAuditDTO.java
+++ b/workflow-engine-common/src/main/java/cn/axzo/workflow/common/model/request/bpmn/task/BpmnTaskAuditDTO.java
@@ -35,7 +35,6 @@ public class BpmnTaskAuditDTO {
/**
* 下级审批人
*/
- @ApiModelProperty(value = "下级审批人", notes = "可为空,定义选择审批人,如果不为空,则覆盖下一级任务的审核人")
- @NotNull(message = "下级审批不能为空", groups = ValidGroup.Insert.class)
+ @ApiModelProperty(value = "下级审批人信息", notes = "可为空,定义选择审批人,如果不为空,则覆盖下一级任务的审核人")
private BpmnTaskDelegateAssigner nextApprover;
}
diff --git a/workflow-engine-common/src/main/java/cn/axzo/workflow/common/model/response/bpmn/task/BpmnTaskInstanceVO.java b/workflow-engine-common/src/main/java/cn/axzo/workflow/common/model/response/bpmn/task/BpmnTaskInstanceVO.java
index df10405e5..38ff603b6 100644
--- a/workflow-engine-common/src/main/java/cn/axzo/workflow/common/model/response/bpmn/task/BpmnTaskInstanceVO.java
+++ b/workflow-engine-common/src/main/java/cn/axzo/workflow/common/model/response/bpmn/task/BpmnTaskInstanceVO.java
@@ -1,5 +1,6 @@
package cn.axzo.workflow.common.model.response.bpmn.task;
+import cn.axzo.workflow.common.model.request.bpmn.task.BpmnTaskDelegateAssigner;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
@@ -29,8 +30,7 @@ public class BpmnTaskInstanceVO {
@ApiModelProperty(value = "任务归属人")
private String owner;
@ApiModelProperty(value = "任务审批人")
- // TODO 调整审批人
- private String assignee;
+ private BpmnTaskDelegateAssigner assigner;
@ApiModelProperty(value = "任务创建时间")
private Date createTime;
@ApiModelProperty(value = "租户")
diff --git a/workflow-engine-core/src/main/java/cn/axzo/workflow/core/common/utils/BpmTransformUtil.java b/workflow-engine-core/src/main/java/cn/axzo/workflow/core/common/utils/BpmTransformUtil.java
index 97bf6edb1..5394ea39c 100644
--- a/workflow-engine-core/src/main/java/cn/axzo/workflow/core/common/utils/BpmTransformUtil.java
+++ b/workflow-engine-core/src/main/java/cn/axzo/workflow/core/common/utils/BpmTransformUtil.java
@@ -38,6 +38,7 @@ import java.util.stream.Collectors;
import static cn.axzo.workflow.common.constant.BpmConstants.AND_SIGN_EXPRESSION;
import static cn.axzo.workflow.common.constant.BpmConstants.BPM_ALLOW_SKIP_USER_TASK;
import static cn.axzo.workflow.common.constant.BpmConstants.END_EVENT_ID;
+import static cn.axzo.workflow.common.constant.BpmConstants.INTERNAL_TASK_RELATION_ASSIGNEE_LIST_INFO;
import static cn.axzo.workflow.common.constant.BpmConstants.OR_SIGN_EXPRESSION;
import static cn.axzo.workflow.core.common.enums.BpmErrorCode.CONVERTOR_META_DATA_FORMAT_ERROR;
import static cn.axzo.workflow.core.common.enums.BpmErrorCode.CONVERTOR_UNKNOW_NODE_TYPE;
@@ -373,7 +374,7 @@ public class BpmTransformUtil {
MultiInstanceLoopCharacteristics multiInstanceLoopCharacteristics =
new MultiInstanceLoopCharacteristics();
// 审批人集合参数
- multiInstanceLoopCharacteristics.setInputDataItem(userTask.getId() + "_assigneeList");
+ multiInstanceLoopCharacteristics.setInputDataItem(INTERNAL_TASK_RELATION_ASSIGNEE_LIST_INFO + userTask.getId());
// 迭代集合
multiInstanceLoopCharacteristics.setElementVariable("assigneeName");
// 并行
diff --git a/workflow-engine-core/src/main/java/cn/axzo/workflow/core/listener/BpmTaskEventListener.java b/workflow-engine-core/src/main/java/cn/axzo/workflow/core/listener/BpmTaskEventListener.java
index 5ea0893ec..998ae8d01 100644
--- a/workflow-engine-core/src/main/java/cn/axzo/workflow/core/listener/BpmTaskEventListener.java
+++ b/workflow-engine-core/src/main/java/cn/axzo/workflow/core/listener/BpmTaskEventListener.java
@@ -11,22 +11,22 @@ public interface BpmTaskEventListener extends Ordered {
/**
* 用户任务已创建,未指派审核人
*/
- void onCreated(DelegateTask delegateTask);
+ default void onCreated(DelegateTask delegateTask) {}
/**
* 用户任务已指派审核人
*/
- void onAssigned(DelegateTask delegateTask);
+ default void onAssigned(DelegateTask delegateTask) {}
/**
* 用户任务已通过
*
* 仅审核通过一个用户任务时触发, 如果任务是拒绝了, 则直接走实例取消事件
*/
- void onCompleted(DelegateTask delegateTask);
+ default void onCompleted(DelegateTask delegateTask) {}
/**
* 用户任务已删除
*/
- void onDeleted(DelegateTask delegateTask);
+ default void onDeleted(DelegateTask delegateTask) {}
}
diff --git a/workflow-engine-core/src/main/java/cn/axzo/workflow/core/service/converter/BpmnTaskConverter.java b/workflow-engine-core/src/main/java/cn/axzo/workflow/core/service/converter/BpmnTaskConverter.java
index 7bc1d2ca0..76df145a9 100644
--- a/workflow-engine-core/src/main/java/cn/axzo/workflow/core/service/converter/BpmnTaskConverter.java
+++ b/workflow-engine-core/src/main/java/cn/axzo/workflow/core/service/converter/BpmnTaskConverter.java
@@ -27,7 +27,6 @@ public interface BpmnTaskConverter extends EntityConverter vos = bpmnTaskConverter.toVos(query.list());
+ List snapshotTaskIds =
+ vos.stream().map(i -> INTERNAL_TASK_RELATION_ASSIGNEE_INFO_SNAPSHOT + i.getTaskId()).collect(Collectors.toList());
+ Map instanceMap = runtimeService.getVariableInstances(processInstanceId,
+ snapshotTaskIds);
+ vos.forEach(i -> i.setAssigner((BpmnTaskDelegateAssigner) instanceMap.get(INTERNAL_TASK_RELATION_ASSIGNEE_INFO_SNAPSHOT + i.getTaskId()).getValue()));
+ return vos;
}
/**
@@ -535,18 +541,13 @@ public class BpmnTaskServiceImpl implements BpmnTaskService {
if (Objects.isNull(dto.getTargetAssigner())) {
taskService.setAssignee(task.getId(), "");
runtimeService.removeVariable(task.getProcessInstanceId(), INTERNAL_SPECIFY_NEXT_APPROVER);
- runtimeService.removeVariable(task.getProcessInstanceId() + task.getTaskDefinitionKey(),
- INTERNAL_TASK_RELATION_ASSIGNEE_INFO);
- runtimeService.removeVariable(task.getProcessInstanceId() + task.getTaskDefinitionKey(),
+ runtimeService.removeVariable(task.getProcessInstanceId() + task.getId(),
INTERNAL_TASK_RELATION_ASSIGNEE_INFO_SNAPSHOT);
} else {
runtimeService.setVariable(task.getProcessInstanceId(), INTERNAL_SPECIFY_NEXT_APPROVER,
dto.getTargetAssigner());
runtimeService.setVariable(task.getProcessInstanceId(),
- INTERNAL_TASK_RELATION_ASSIGNEE_INFO + task.getTaskDefinitionKey(),
- dto.getTargetAssigner().buildAssigneeId());
- runtimeService.setVariable(task.getProcessInstanceId(),
- INTERNAL_TASK_RELATION_ASSIGNEE_INFO_SNAPSHOT + task.getTaskDefinitionKey(),
+ INTERNAL_TASK_RELATION_ASSIGNEE_INFO_SNAPSHOT + task.getId(),
dto.getTargetAssigner());
taskService.setAssignee(task.getId(), dto.getTargetAssigner().buildAssigneeId());
diff --git a/workflow-engine-server/src/main/java/cn/axzo/workflow/server/controller/delegate/BpmnDefaultTaskDelegateImpl.java b/workflow-engine-server/src/main/java/cn/axzo/workflow/server/controller/delegate/BpmnDefaultTaskDelegateImpl.java
index 55a26d34e..43f539385 100644
--- a/workflow-engine-server/src/main/java/cn/axzo/workflow/server/controller/delegate/BpmnDefaultTaskDelegateImpl.java
+++ b/workflow-engine-server/src/main/java/cn/axzo/workflow/server/controller/delegate/BpmnDefaultTaskDelegateImpl.java
@@ -6,9 +6,11 @@ import cn.axzo.workflow.core.deletage.BpmTaskDelegate;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Service;
+import org.springframework.util.CollectionUtils;
import java.util.ArrayList;
import java.util.List;
+import java.util.Objects;
import java.util.Optional;
import static cn.axzo.workflow.common.constant.BpmConstants.INTERNAL_SPECIFY_NEXT_APPROVER;
@@ -29,6 +31,69 @@ public class BpmnDefaultTaskDelegateImpl implements BpmTaskDelegate {
Optional.ofNullable(delegateTask.getVariables().get(INTERNAL_SPECIFY_NEXT_APPROVER)).ifPresent(next -> {
assigners.add((BpmnTaskDelegateAssigner) next);
});
+
+ if (CollectionUtils.isEmpty(assigners)) {
+ if (Objects.equals("NODE1694773129716_0.9426625492049914_1", delegateTask.getTaskDefinitionKey())) {
+ // 或签
+ BpmnTaskDelegateAssigner assigner1 = new BpmnTaskDelegateAssigner();
+ assigner1.setAssignee("1");
+ assigner1.setAssigneeType("5");
+ assigner1.setAssignerName("或签人1");
+ assigner1.setPersonId("100001");
+ assigner1.setTenantId("296");
+ assigners.add(assigner1);
+ } else if (Objects.equals("NODE1695291557658_0.7106808048056956_1", delegateTask.getTaskDefinitionKey())) {
+ // 会签节点
+ BpmnTaskDelegateAssigner assigner1 = new BpmnTaskDelegateAssigner();
+ assigner1.setAssignee("1");
+ assigner1.setAssigneeType("5");
+ assigner1.setAssignerName("会签人1");
+ assigner1.setPersonId("100001");
+ assigner1.setTenantId("296");
+ assigners.add(assigner1);
+
+ BpmnTaskDelegateAssigner assigner2 = new BpmnTaskDelegateAssigner();
+ assigner2.setAssignee("2");
+ assigner2.setAssigneeType("5");
+ assigner2.setAssignerName("会签人2");
+ assigner2.setPersonId("100002");
+ assigner2.setTenantId("296");
+ assigners.add(assigner2);
+
+ BpmnTaskDelegateAssigner assigner3 = new BpmnTaskDelegateAssigner();
+ assigner3.setAssignee("3");
+ assigner3.setAssigneeType("5");
+ assigner3.setAssignerName("会签人3");
+ assigner3.setPersonId("100003");
+ assigner3.setTenantId("296");
+ assigners.add(assigner3);
+
+ BpmnTaskDelegateAssigner assigner4 = new BpmnTaskDelegateAssigner();
+ assigner4.setAssignee("4");
+ assigner4.setAssigneeType("5");
+ assigner4.setAssignerName("会签人4");
+ assigner4.setPersonId("100004");
+ assigner4.setTenantId("296");
+ assigners.add(assigner4);
+ } else if (Objects.equals("NODE1694770290894_0.4227607475273871_1", delegateTask.getTaskDefinitionKey())) {
+ // 或签节点
+ BpmnTaskDelegateAssigner assigner1 = new BpmnTaskDelegateAssigner();
+ assigner1.setAssignee("1");
+ assigner1.setAssigneeType("5");
+ assigner1.setAssignerName("或签人1");
+ assigner1.setPersonId("100001");
+ assigner1.setTenantId("296");
+ assigners.add(assigner1);
+
+ BpmnTaskDelegateAssigner assigner2 = new BpmnTaskDelegateAssigner();
+ assigner2.setAssignee("2");
+ assigner2.setAssigneeType("5");
+ assigner2.setAssignerName("或签人2");
+ assigner2.setPersonId("100001");
+ assigner2.setTenantId("296");
+ assigners.add(assigner2);
+ }
+ }
return assigners;
}
}
diff --git a/workflow-engine-server/src/main/java/cn/axzo/workflow/server/controller/listener/CustomBpmTaskTaskEventListener.java b/workflow-engine-server/src/main/java/cn/axzo/workflow/server/controller/listener/CustomBpmTaskTaskEventListener.java
index 4de032eb9..f70e7162b 100644
--- a/workflow-engine-server/src/main/java/cn/axzo/workflow/server/controller/listener/CustomBpmTaskTaskEventListener.java
+++ b/workflow-engine-server/src/main/java/cn/axzo/workflow/server/controller/listener/CustomBpmTaskTaskEventListener.java
@@ -1,8 +1,17 @@
package cn.axzo.workflow.server.controller.listener;
+import cn.axzo.workflow.common.model.request.bpmn.task.BpmnTaskDelegateAssigner;
import cn.axzo.workflow.core.listener.BpmTaskEventListener;
import lombok.extern.slf4j.Slf4j;
import org.flowable.task.service.delegate.DelegateTask;
+import org.springframework.stereotype.Component;
+import org.springframework.util.CollectionUtils;
+
+import java.util.List;
+import java.util.Objects;
+
+import static cn.axzo.workflow.common.constant.BpmConstants.INTERNAL_TASK_RELATION_ASSIGNEE_INFO_SNAPSHOT;
+import static cn.axzo.workflow.common.constant.BpmConstants.INTERNAL_TASK_RELATION_ASSIGNEE_LIST_INFO_SNAPSHOT;
/**
* 自定义实现的流程监听器, 实现了 Ordered 接口
@@ -13,7 +22,7 @@ import org.flowable.task.service.delegate.DelegateTask;
* @since 2023/9/25 18:50
*/
@Slf4j
-//@Component
+@Component
public class CustomBpmTaskTaskEventListener implements BpmTaskEventListener {
@Override
public void onCreated(DelegateTask delegateTask) {
@@ -22,6 +31,17 @@ public class CustomBpmTaskTaskEventListener implements BpmTaskEventListener {
@Override
public void onAssigned(DelegateTask delegateTask) {
+ List assignerList =
+ (List) delegateTask.getVariable(INTERNAL_TASK_RELATION_ASSIGNEE_LIST_INFO_SNAPSHOT + delegateTask.getTaskDefinitionKey());
+ if (CollectionUtils.isEmpty(assignerList)) {
+ return;
+ }
+ // identityId_identityType
+ String assignee = delegateTask.getAssignee();
+ assignerList.stream().filter(i -> Objects.equals(assignee, i.buildAssigneeId())).findFirst().ifPresent(i -> {
+ // 保存每个 taskId 的审批人
+ delegateTask.setVariable(INTERNAL_TASK_RELATION_ASSIGNEE_INFO_SNAPSHOT + delegateTask.getId(), i);
+ });
log.info("task assigned...");
}
diff --git a/workflow-engine-server/src/main/java/cn/axzo/workflow/server/controller/listener/RocketMqBpmProcessEventListener.java b/workflow-engine-server/src/main/java/cn/axzo/workflow/server/controller/listener/RocketMqBpmProcessEventListener.java
index ad1e79d06..047165be5 100644
--- a/workflow-engine-server/src/main/java/cn/axzo/workflow/server/controller/listener/RocketMqBpmProcessEventListener.java
+++ b/workflow-engine-server/src/main/java/cn/axzo/workflow/server/controller/listener/RocketMqBpmProcessEventListener.java
@@ -2,6 +2,7 @@ package cn.axzo.workflow.server.controller.listener;
import cn.axzo.framework.rocketmq.Event;
import cn.axzo.framework.rocketmq.EventProducer;
+import cn.axzo.workflow.common.enums.ProcessInstanceEventEnum;
import cn.axzo.workflow.common.model.request.bpmn.task.BpmnTaskDelegateAssigner;
import cn.axzo.workflow.common.model.response.mq.ProcessInstanceDTO;
import cn.axzo.workflow.core.listener.BpmProcessEventListener;
@@ -19,7 +20,11 @@ import org.springframework.stereotype.Component;
import javax.annotation.Resource;
import static cn.axzo.workflow.common.constant.BpmConstants.INTERNAL_INITIATOR;
-import static cn.axzo.workflow.common.enums.ProcessInstanceEventEnum.*;
+import static cn.axzo.workflow.common.enums.ProcessInstanceEventEnum.PROCESS_INSTANCE_CANCELLED;
+import static cn.axzo.workflow.common.enums.ProcessInstanceEventEnum.PROCESS_INSTANCE_COMPLETED;
+import static cn.axzo.workflow.common.enums.ProcessInstanceEventEnum.PROCESS_INSTANCE_CREATED;
+import static cn.axzo.workflow.common.enums.ProcessInstanceEventEnum.PROCESS_INSTANCE_REJECTED;
+import static cn.axzo.workflow.common.enums.ProcessInstanceEventEnum.PROCESS_INSTANCE_STARTED;
/**
@@ -61,13 +66,7 @@ public class RocketMqBpmProcessEventListener implements BpmProcessEventListener
.setBusinessKey(((ExecutionEntityImpl) event.getEntity()).getBusinessKey())
.setBusinessProcessInstanceName(((ExecutionEntityImpl) event.getEntity()).getName());
log.info("RocketMqBpmProcessEventListener#onCreated MQ.Data: {}", JSON.toJSONString(dto));
- eventProducer.send(Event.builder()
- .shardingKey(event.getProcessInstanceId())
- .eventCode(PROCESS_INSTANCE_CREATED.getEventCode())
- .targetId(event.getProcessInstanceId())
- .targetType(PROCESS_INSTANCE_CREATED.getTag())
- .data(dto)
- .build());
+ sendMessageQueue(dto, PROCESS_INSTANCE_CREATED);
}
@Override
@@ -95,13 +94,7 @@ public class RocketMqBpmProcessEventListener implements BpmProcessEventListener
.setBusinessKey(((ExecutionEntityImpl) event.getEntity()).getProcessInstance().getBusinessKey())
.setBusinessProcessInstanceName(((ExecutionEntityImpl) event.getEntity()).getProcessInstance().getName());
log.info("RocketMqBpmProcessEventListener#onStarted MQ.Data: {}", JSON.toJSONString(dto));
- eventProducer.send(Event.builder()
- .shardingKey(((ExecutionEntityImpl) event.getEntity()).getProcessInstanceId())
- .eventCode(PROCESS_INSTANCE_STARTED.getEventCode())
- .targetId(((ExecutionEntityImpl) event.getEntity()).getProcessInstanceId())
- .targetType(PROCESS_INSTANCE_STARTED.getTag())
- .data(dto)
- .build());
+ sendMessageQueue(dto, PROCESS_INSTANCE_STARTED);
}
@Override
@@ -129,13 +122,7 @@ public class RocketMqBpmProcessEventListener implements BpmProcessEventListener
.setBusinessProcessInstanceName(((ExecutionEntityImpl) ((FlowableProcessCancelledEventImpl) event).getExecution()).getName())
.setCancelReason(String.valueOf(event.getCause()));
log.info("RocketMqBpmProcessEventListener#onCancelled MQ.Data: {}", JSON.toJSONString(dto));
- eventProducer.send(Event.builder()
- .shardingKey(event.getProcessInstanceId())
- .eventCode(PROCESS_INSTANCE_CANCELLED.getEventCode())
- .targetId(event.getProcessInstanceId())
- .targetType(PROCESS_INSTANCE_CANCELLED.getTag())
- .data(dto)
- .build());
+ sendMessageQueue(dto, PROCESS_INSTANCE_CANCELLED);
}
/**
@@ -168,13 +155,7 @@ public class RocketMqBpmProcessEventListener implements BpmProcessEventListener
.setBusinessProcessInstanceName(((ExecutionEntityImpl) ((FlowableProcessCancelledEventImpl) event).getExecution()).getName())
.setCancelReason(String.valueOf(event.getCause()));
log.info("RocketMqBpmProcessEventListener#onRejected MQ.Data: {}", JSON.toJSONString(dto));
- eventProducer.send(Event.builder()
- .shardingKey(event.getProcessInstanceId())
- .eventCode(PROCESS_INSTANCE_REJECTED.getEventCode())
- .targetId(event.getProcessInstanceId())
- .targetType(PROCESS_INSTANCE_REJECTED.getTag())
- .data(dto)
- .build());
+ sendMessageQueue(dto, PROCESS_INSTANCE_REJECTED);
}
@Override
@@ -184,7 +165,7 @@ public class RocketMqBpmProcessEventListener implements BpmProcessEventListener
JSON.toJSONString(event));
}
Deployment deployment =
- repositoryService.createDeploymentQuery().deploymentId(((ExecutionEntityImpl) ((FlowableProcessCancelledEventImpl) event).getExecution()).getDeploymentId())
+ repositoryService.createDeploymentQuery().deploymentId(((ExecutionEntityImpl) event.getEntity()).getDeploymentId())
.singleResult();
ProcessInstanceDTO dto = new ProcessInstanceDTO()
.setType(PROCESS_INSTANCE_COMPLETED)
@@ -192,20 +173,25 @@ public class RocketMqBpmProcessEventListener implements BpmProcessEventListener
.setProcessInstanceId(event.getProcessInstanceId())
.setCurrentElementKey("取消流程实例无节点信息")
.setProcessDefinitionId(event.getProcessDefinitionId())
- .setProcessDefinitionKey(((ExecutionEntityImpl) ((FlowableProcessCancelledEventImpl) event).getExecution()).getProcessDefinitionKey())
- .setProcessDefinitionVersion(((ExecutionEntityImpl) ((FlowableProcessCancelledEventImpl) event).getExecution()).getProcessDefinitionVersion())
- .setInitiator(((FlowableProcessCancelledEventImpl) event).getExecution().getVariable(INTERNAL_INITIATOR, BpmnTaskDelegateAssigner.class))
- .setVariables(((FlowableProcessCancelledEventImpl) event).getExecution().getVariables())
- .setStartTime(((ExecutionEntityImpl) ((FlowableProcessCancelledEventImpl) event).getExecution()).getStartTime())
- .setTenantId(((FlowableProcessCancelledEventImpl) event).getExecution().getTenantId())
- .setBusinessKey(((FlowableProcessCancelledEventImpl) event).getExecution().getProcessInstanceBusinessKey())
- .setBusinessProcessInstanceName(((ExecutionEntityImpl) ((FlowableProcessCancelledEventImpl) event).getExecution()).getName());
+ .setProcessDefinitionKey(((ExecutionEntityImpl) event.getEntity()).getProcessDefinitionKey())
+ .setProcessDefinitionVersion(((ExecutionEntityImpl) event.getEntity()).getProcessDefinitionVersion())
+ .setInitiator(((ExecutionEntityImpl) event.getEntity()).getVariable(INTERNAL_INITIATOR,
+ BpmnTaskDelegateAssigner.class))
+ .setVariables(((ExecutionEntityImpl) event.getEntity()).getVariables())
+ .setStartTime(((ExecutionEntityImpl) event.getEntity()).getStartTime())
+ .setTenantId(((ExecutionEntityImpl) event.getEntity()).getTenantId())
+ .setBusinessKey(((ExecutionEntityImpl) event.getEntity()).getProcessInstanceBusinessKey())
+ .setBusinessProcessInstanceName(((ExecutionEntityImpl) event.getEntity()).getName());
log.info("RocketMqBpmProcessEventListener#onCompleted MQ.Data: {}", JSON.toJSONString(dto));
+ sendMessageQueue(dto, PROCESS_INSTANCE_COMPLETED);
+ }
+
+ private void sendMessageQueue(ProcessInstanceDTO dto, ProcessInstanceEventEnum eventEnum) {
eventProducer.send(Event.builder()
- .shardingKey(event.getProcessInstanceId())
- .eventCode(PROCESS_INSTANCE_COMPLETED.getEventCode())
- .targetId(event.getProcessInstanceId())
- .targetType(PROCESS_INSTANCE_COMPLETED.getTag())
+ .shardingKey(dto.getProcessInstanceId())
+ .eventCode(eventEnum.getEventCode())
+ .targetId(dto.getProcessInstanceId())
+ .targetType(eventEnum.getTag())
.data(dto)
.build());
}
diff --git a/workflow-engine-server/src/main/java/cn/axzo/workflow/server/controller/listener/RocketMqBpmTaskEventListener.java b/workflow-engine-server/src/main/java/cn/axzo/workflow/server/controller/listener/RocketMqBpmTaskEventListener.java
index 96857e5d0..73580a00d 100644
--- a/workflow-engine-server/src/main/java/cn/axzo/workflow/server/controller/listener/RocketMqBpmTaskEventListener.java
+++ b/workflow-engine-server/src/main/java/cn/axzo/workflow/server/controller/listener/RocketMqBpmTaskEventListener.java
@@ -17,8 +17,11 @@ import org.springframework.stereotype.Component;
import javax.annotation.Resource;
import static cn.axzo.workflow.common.constant.BpmConstants.INTERNAL_INITIATOR;
-import static cn.axzo.workflow.common.constant.BpmConstants.INTERNAL_SPECIFY_NEXT_APPROVER;
-import static cn.axzo.workflow.common.enums.ProcessTaskEventEnum.*;
+import static cn.axzo.workflow.common.constant.BpmConstants.INTERNAL_TASK_RELATION_ASSIGNEE_INFO_SNAPSHOT;
+import static cn.axzo.workflow.common.enums.ProcessTaskEventEnum.PROCESS_TASK_ASSIGNED;
+import static cn.axzo.workflow.common.enums.ProcessTaskEventEnum.PROCESS_TASK_COMPLETED;
+import static cn.axzo.workflow.common.enums.ProcessTaskEventEnum.PROCESS_TASK_CREATED;
+import static cn.axzo.workflow.common.enums.ProcessTaskEventEnum.PROCESS_TASK_DELETED;
/**
@@ -94,7 +97,7 @@ public class RocketMqBpmTaskEventListener implements BpmTaskEventListener {
.setCurrentElementName(delegateTask.getName())
.setProcessDefinitionId(delegateTask.getProcessDefinitionId())
.setInitiator(delegateTask.getVariable(INTERNAL_INITIATOR, BpmnTaskDelegateAssigner.class))
- .setApprover(delegateTask.getVariable(INTERNAL_SPECIFY_NEXT_APPROVER, BpmnTaskDelegateAssigner.class))
+ .setApprover(delegateTask.getVariable(INTERNAL_TASK_RELATION_ASSIGNEE_INFO_SNAPSHOT + delegateTask.getId(), BpmnTaskDelegateAssigner.class))
.setVariables(delegateTask.getVariables())
.setStartTime(delegateTask.getCreateTime())
.setTenantId(delegateTask.getTenantId());