update - 添加流程被终止后的事件广播和处理逻辑

This commit is contained in:
wangli 2024-01-11 17:30:55 +08:00
parent 12ea405ba2
commit 4f0538156e
3 changed files with 45 additions and 1 deletions

View File

@ -14,6 +14,7 @@ public enum ProcessInstanceEventEnum {
PROCESS_INSTANCE_STARTED("process-instance", "process-instance-started", "流程实例已开始"),
PROCESS_INSTANCE_CANCELLED("process-instance", "process-instance-cancelled", "流程实例已取消"),
PROCESS_INSTANCE_REJECTED("process-instance", "process-instance-rejected", "流程实例已驳回"),
PROCESS_INSTANCE_ABORTED("process-instance", "process-instance-aborted", "流程实例已终止"),
PROCESS_INSTANCE_COMPLETED("process-instance", "process-instance-completed", "流程实例已结束"),
;
private final String module;

View File

@ -52,6 +52,17 @@ public class MessagePushProcessEventListener implements BpmnProcessEventListener
}
}
@Override
public void onAborted(FlowableCancelledEvent event) {
if (log.isDebugEnabled()) {
log.debug("MessagePushProcessEventListener#onAborted...{}", event.getProcessInstanceId());
}
pendingComplete(event);
if (log.isDebugEnabled()) {
log.debug("MessagePushProcessEventListener#onAborted...end: {}", event.getProcessInstanceId());
}
}
@Override
public void onCompleted(FlowableEngineEntityEvent event) {
if (log.isDebugEnabled()) {

View File

@ -23,6 +23,7 @@ import org.springframework.stereotype.Component;
import javax.annotation.Resource;
import static cn.axzo.workflow.common.constant.BpmnConstants.INTERNAL_INITIATOR;
import static cn.axzo.workflow.common.enums.ProcessInstanceEventEnum.PROCESS_INSTANCE_ABORTED;
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;
@ -158,7 +159,7 @@ public class RocketMqBpmnProcessEventListener implements BpmnProcessEventListene
.setType(PROCESS_INSTANCE_REJECTED)
.setCategory(deployment.getCategory())
.setProcessInstanceId(event.getProcessInstanceId())
.setCurrentElementKey("取消流程实例无节点信息")
.setCurrentElementKey("驳回流程实例无节点信息")
.setProcessDefinitionId(event.getProcessDefinitionId())
.setProcessDefinitionKey(((ExecutionEntityImpl) ((FlowableProcessCancelledEventImpl) event).getExecution()).getProcessDefinitionKey())
.setProcessDefinitionVersion(((ExecutionEntityImpl) ((FlowableProcessCancelledEventImpl) event).getExecution()).getProcessDefinitionVersion())
@ -176,6 +177,37 @@ public class RocketMqBpmnProcessEventListener implements BpmnProcessEventListene
}
}
@Override
public void onAborted(FlowableCancelledEvent event) {
if (log.isDebugEnabled()) {
log.debug("MessagePushProcessEventListener#onAborted...{}", event.getProcessInstanceId());
}
Deployment deployment =
repositoryService.createDeploymentQuery().deploymentId(((ExecutionEntityImpl) ((FlowableProcessCancelledEventImpl) event).getExecution()).getDeploymentId())
.singleResult();
Process mainProcess = repositoryService.getBpmnModel(event.getProcessDefinitionId()).getMainProcess();
ProcessInstanceDTO dto = new ProcessInstanceDTO()
.setType(PROCESS_INSTANCE_ABORTED)
.setCategory(deployment.getCategory())
.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())
.setCancelReason(String.valueOf(event.getCause()));
BpmnMetaParserHelper.getNoticeConfig(mainProcess).ifPresent(dto::setNoticeConf);
sendMessageQueue(dto, PROCESS_INSTANCE_ABORTED);
if (log.isDebugEnabled()) {
log.debug("MessagePushProcessEventListener#onAborted...end: {}", event.getProcessInstanceId());
}
}
@Override
public void onCompleted(FlowableEngineEntityEvent event) {
if (log.isDebugEnabled()) {