update - 调整引擎事件的处理逻辑, 让各事件处理逻辑更通用标准
This commit is contained in:
parent
20820d1bce
commit
ea6d073812
@ -12,6 +12,7 @@ import lombok.extern.slf4j.Slf4j;
|
||||
import org.flowable.common.engine.api.delegate.event.AbstractFlowableEventListener;
|
||||
import org.flowable.common.engine.api.delegate.event.FlowableEvent;
|
||||
import org.springframework.stereotype.Component;
|
||||
import org.springframework.util.StringUtils;
|
||||
|
||||
import java.util.Objects;
|
||||
import java.util.Set;
|
||||
@ -28,7 +29,7 @@ import static cn.axzo.workflow.core.engine.event.ReceiveTaskEventType.UPDATE;
|
||||
@AllArgsConstructor
|
||||
@Component
|
||||
@Slf4j
|
||||
public class ReceiveTaskExtInstEventListener extends AbstractFlowableEventListener {
|
||||
public class ExtTaskInstEventListener extends AbstractFlowableEventListener {
|
||||
private final ExtAxHiTaskInstService extAxHiTaskInstService;
|
||||
public static final Set<ReceiveTaskEventType> SUPPORT_EVENTS =
|
||||
ImmutableSet.<ReceiveTaskEventType>builder()
|
||||
@ -60,23 +61,33 @@ public class ReceiveTaskExtInstEventListener extends AbstractFlowableEventListen
|
||||
return true;
|
||||
}
|
||||
|
||||
private void updateExtTaskInst(ExtTaskInstUpdateEvent event) {
|
||||
ExtAxHiTaskInst entity = extAxHiTaskInstService.getByTaskId(event.getTaskId(), event.getProcessInstanceId());
|
||||
if (Objects.nonNull(entity)) {
|
||||
entity.setAssignee(event.getAssignee());
|
||||
entity.setStatus(event.getResultEnum().getStatus());
|
||||
extAxHiTaskInstService.update(entity);
|
||||
}
|
||||
}
|
||||
|
||||
private void saveExtTaskInst(ExtTaskInstCreateEvent event) {
|
||||
ExtAxHiTaskInst entity = new ExtAxHiTaskInst();
|
||||
entity.setProcInstId(event.getProcessInstanceId());
|
||||
entity.setTaskDefinitionKey(event.getActivityId());
|
||||
entity.setTaskId(event.getTaskId());
|
||||
entity.setAssignee(event.getAssignee());
|
||||
if (StringUtils.hasText(event.getAssignee())) {
|
||||
entity.setAssignee(event.getAssignee());
|
||||
}
|
||||
entity.setStatus(event.getResultEnum().getStatus());
|
||||
extAxHiTaskInstService.save(entity);
|
||||
}
|
||||
|
||||
private void updateExtTaskInst(ExtTaskInstUpdateEvent event) {
|
||||
ExtAxHiTaskInst entity = extAxHiTaskInstService.getByTaskId(event.getTaskId(), event.getProcessInstanceId());
|
||||
|
||||
if (Objects.nonNull(entity)) {
|
||||
if (StringUtils.hasText(event.getAssignee())) {
|
||||
entity.setAssignee(event.getAssignee());
|
||||
}
|
||||
entity.setStatus(event.getResultEnum().getStatus());
|
||||
extAxHiTaskInstService.update(entity);
|
||||
} else {
|
||||
// 如果一个任务,如果没有设置人,那么就不会先执行 saveExtTaskInst 方法,
|
||||
// 所以,这里做一个兜底,如果没有查询到,有协助新建该对象
|
||||
ExtTaskInstCreateEvent create = new ExtTaskInstCreateEvent(event.getProcessInstanceId(),
|
||||
event.getActivityId(), event.getTaskId(), event.getAssignee(), event.getResultEnum());
|
||||
saveExtTaskInst(create);
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -43,17 +43,20 @@ public class InternalExtAxTaskInstEvent_min_Listener implements BpmnTaskEventLis
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onCreated(DelegateTask delegateTask) {
|
||||
ProcessEngineConfigurationImpl processEngineConfiguration =
|
||||
CommandContextUtil.getProcessEngineConfiguration();
|
||||
FlowableEventDispatcher eventDispatcher = processEngineConfiguration.getEventDispatcher();
|
||||
eventDispatcher.dispatchEvent(new ExtTaskInstCreateEvent(delegateTask.getProcessInstanceId(),
|
||||
delegateTask.getTaskDefinitionKey(), delegateTask.getId(), PROCESSING),
|
||||
processEngineConfiguration.getEngineCfgKey());
|
||||
public void onAssigned(DelegateTask delegateTask) {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onAssigned(DelegateTask delegateTask) {
|
||||
public void onCreated(DelegateTask delegateTask) {
|
||||
// ProcessEngineConfigurationImpl processEngineConfiguration =
|
||||
// CommandContextUtil.getProcessEngineConfiguration();
|
||||
// FlowableEventDispatcher eventDispatcher = processEngineConfiguration.getEventDispatcher();
|
||||
// eventDispatcher.dispatchEvent(new ExtTaskInstUpdateEvent(delegateTask.getProcessInstanceId(),
|
||||
// delegateTask.getTaskDefinitionKey(), delegateTask.getId(), PROCESSING),
|
||||
// processEngineConfiguration.getEngineCfgKey());
|
||||
|
||||
|
||||
String assignee;
|
||||
// 记录发起人
|
||||
if (Objects.equals(delegateTask.getTaskDefinitionKey(), NODE_STARTER.getType())) {
|
||||
@ -74,10 +77,9 @@ public class InternalExtAxTaskInstEvent_min_Listener implements BpmnTaskEventLis
|
||||
ProcessEngineConfigurationImpl processEngineConfiguration =
|
||||
CommandContextUtil.getProcessEngineConfiguration();
|
||||
FlowableEventDispatcher eventDispatcher = processEngineConfiguration.getEventDispatcher();
|
||||
eventDispatcher.dispatchEvent(new ExtTaskInstUpdateEvent(delegateTask.getProcessInstanceId(),
|
||||
eventDispatcher.dispatchEvent(new ExtTaskInstCreateEvent(delegateTask.getProcessInstanceId(),
|
||||
delegateTask.getTaskDefinitionKey(), delegateTask.getId(), assignee, PROCESSING),
|
||||
processEngineConfiguration.getEngineCfgKey());
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@ -1,6 +1,7 @@
|
||||
package cn.axzo.workflow.core.repository.entity;
|
||||
|
||||
import cn.axzo.framework.data.mybatisplus.model.BaseEntity;
|
||||
import com.baomidou.mybatisplus.annotation.FieldStrategy;
|
||||
import com.baomidou.mybatisplus.annotation.TableField;
|
||||
import com.baomidou.mybatisplus.annotation.TableName;
|
||||
import lombok.Data;
|
||||
@ -50,7 +51,7 @@ public class ExtAxHiTaskInst extends BaseEntity<ExtAxHiTaskInst> {
|
||||
/**
|
||||
* 同意的人
|
||||
*/
|
||||
@TableField("assignee")
|
||||
@TableField(value = "assignee", updateStrategy = FieldStrategy.NOT_EMPTY, insertStrategy = FieldStrategy.NOT_EMPTY)
|
||||
private String assignee;
|
||||
|
||||
}
|
||||
|
||||
@ -94,8 +94,6 @@ import static cn.axzo.workflow.common.constant.BpmnConstants.INTERNAL_PROCESS_AG
|
||||
import static cn.axzo.workflow.common.constant.BpmnConstants.OLD_INTERNAL_INITIATOR;
|
||||
import static cn.axzo.workflow.common.constant.BpmnConstants.PENDING_TEMPLATE_VARIABLE;
|
||||
import static cn.axzo.workflow.common.constant.BpmnConstants.WORKFLOW_ENGINE_VERSION;
|
||||
import static cn.axzo.workflow.common.enums.ApprovalMethodEnum.autoPassed;
|
||||
import static cn.axzo.workflow.common.enums.ApprovalMethodEnum.autoRejection;
|
||||
import static cn.axzo.workflow.common.enums.ApprovalMethodEnum.human;
|
||||
import static cn.axzo.workflow.common.enums.BpmnFlowNodeMode.AND;
|
||||
import static cn.axzo.workflow.common.enums.BpmnFlowNodeMode.EXCEPTIONAL;
|
||||
@ -771,19 +769,8 @@ public class BpmnProcessInstanceServiceImpl implements BpmnProcessInstanceServic
|
||||
userTask, engineExecutionStartListener));
|
||||
node.setForecastAssigners(forecastAssigners);
|
||||
if (CollectionUtils.isEmpty(forecastAssigners)) {
|
||||
getApproverEmptyHandleType(userTask).ifPresent(emptyHandleType -> {
|
||||
switch (emptyHandleType) {
|
||||
case autoPassed:
|
||||
node.setApprovalMethod(autoPassed);
|
||||
break;
|
||||
case autoRejection:
|
||||
node.setApprovalMethod(autoRejection);
|
||||
break;
|
||||
default:
|
||||
node.setNodeMode(EXCEPTIONAL);
|
||||
break;
|
||||
}
|
||||
});
|
||||
getApproverEmptyHandleType(userTask).ifPresent(emptyHandleType ->
|
||||
node.setNodeMode(EXCEPTIONAL));
|
||||
}
|
||||
}
|
||||
} else if (i instanceof ServiceTask) {
|
||||
|
||||
@ -60,10 +60,10 @@ import static cn.axzo.workflow.core.common.enums.BpmnProcessTaskResultEnum.REJEC
|
||||
@Slf4j
|
||||
@Component
|
||||
@AllArgsConstructor
|
||||
public class AutoOperatorEvent_102_Listener implements BpmnTaskEventListener, Ordered {
|
||||
public class AutoOperatorEvent_103_Listener implements BpmnTaskEventListener, Ordered {
|
||||
@Override
|
||||
public int getOrder() {
|
||||
return Integer.MIN_VALUE + 102;
|
||||
return Integer.MIN_VALUE + 103;
|
||||
}
|
||||
|
||||
private final TaskService taskService;
|
||||
@ -74,15 +74,11 @@ public class AutoOperatorEvent_102_Listener implements BpmnTaskEventListener, Or
|
||||
|
||||
@Override
|
||||
public void onAssigned(DelegateTask delegateTask) {
|
||||
Process mainProcess = repositoryService.getBpmnModel(delegateTask.getProcessDefinitionId()).getMainProcess();
|
||||
UserTask userTask = (UserTask) mainProcess.getFlowElement(delegateTask.getTaskDefinitionKey());
|
||||
// Process mainProcess = repositoryService.getBpmnModel(delegateTask.getProcessDefinitionId())
|
||||
// .getMainProcess();
|
||||
// UserTask userTask = (UserTask) mainProcess.getFlowElement(delegateTask.getTaskDefinitionKey());
|
||||
|
||||
|
||||
boolean exists = checkApproverExists(delegateTask, userTask, mainProcess);
|
||||
if (exists) {
|
||||
taskService.addComment(delegateTask.getId(), delegateTask.getProcessInstanceId(), COMMENT_TYPE_ADVICE,
|
||||
"同一审批人,自动过审");
|
||||
autoPass(delegateTask);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
@ -107,6 +103,13 @@ public class AutoOperatorEvent_102_Listener implements BpmnTaskEventListener, Or
|
||||
Process mainProcess = repositoryService.getBpmnModel(delegateTask.getProcessDefinitionId()).getMainProcess();
|
||||
UserTask userTask = (UserTask) mainProcess.getFlowElement(delegateTask.getTaskDefinitionKey());
|
||||
|
||||
boolean exists = checkApproverExists(delegateTask, userTask, mainProcess);
|
||||
if (exists) {
|
||||
taskService.addComment(delegateTask.getId(), delegateTask.getProcessInstanceId(), COMMENT_TYPE_ADVICE,
|
||||
"同一审批人,自动过审");
|
||||
autoPass(delegateTask);
|
||||
}
|
||||
|
||||
// 检测节点自身配置是否有自动操作
|
||||
checkApprovalMethod(delegateTask, userTask);
|
||||
|
||||
@ -47,10 +47,10 @@ import static cn.axzo.workflow.core.engine.event.BizSpecifyAssigneeEventType.ADD
|
||||
@Slf4j
|
||||
@Component
|
||||
@AllArgsConstructor
|
||||
public class MessagePushTaskEvent_103_Listener implements BpmnTaskEventListener, Ordered {
|
||||
public class MessagePushTaskEvent_102_Listener implements BpmnTaskEventListener, Ordered {
|
||||
@Override
|
||||
public int getOrder() {
|
||||
return Integer.MIN_VALUE + 103;
|
||||
return Integer.MIN_VALUE + 102;
|
||||
}
|
||||
|
||||
private final RuntimeService runtimeService;
|
||||
@ -55,18 +55,6 @@ public class RocketMqBpmnTaskEvent_101_Listener implements BpmnTaskEventListener
|
||||
@Value("${sendMq:true}")
|
||||
private Boolean sendMQ;
|
||||
|
||||
@Override
|
||||
public void onCreated(DelegateTask delegateTask) {
|
||||
if (log.isDebugEnabled()) {
|
||||
log.debug("RocketMqBpmnTaskEventListener#onCreated...{}", delegateTask.getTaskDefinitionKey());
|
||||
}
|
||||
ProcessTaskDTO dto = build(delegateTask, PROCESS_TASK_CREATED);
|
||||
sendMessageQueue(dto, PROCESS_TASK_CREATED);
|
||||
if (log.isDebugEnabled()) {
|
||||
log.debug("RocketMqBpmnTaskEventListener#onCreated...end: {}", delegateTask.getTaskDefinitionKey());
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onAssigned(DelegateTask delegateTask) {
|
||||
if (log.isDebugEnabled()) {
|
||||
@ -82,6 +70,18 @@ public class RocketMqBpmnTaskEvent_101_Listener implements BpmnTaskEventListener
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onCreated(DelegateTask delegateTask) {
|
||||
if (log.isDebugEnabled()) {
|
||||
log.debug("RocketMqBpmnTaskEventListener#onCreated...{}", delegateTask.getTaskDefinitionKey());
|
||||
}
|
||||
ProcessTaskDTO dto = build(delegateTask, PROCESS_TASK_CREATED);
|
||||
sendMessageQueue(dto, PROCESS_TASK_CREATED);
|
||||
if (log.isDebugEnabled()) {
|
||||
log.debug("RocketMqBpmnTaskEventListener#onCreated...end: {}", delegateTask.getTaskDefinitionKey());
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onCompleted(DelegateTask delegateTask) {
|
||||
if (log.isDebugEnabled()) {
|
||||
|
||||
Loading…
Reference in New Issue
Block a user