update - 修复业务节点通过 triggerId 触发会报错的问题
This commit is contained in:
parent
ee5da87fdc
commit
b94f38434e
@ -1,8 +1,8 @@
|
||||
package cn.axzo.workflow.core.engine.behavior;
|
||||
|
||||
import cn.axzo.workflow.common.enums.BpmnProcessInstanceResultEnum;
|
||||
import cn.axzo.workflow.core.engine.event.ReceiveTaskExtInstCreateEventImpl;
|
||||
import cn.axzo.workflow.core.repository.entity.ExtAxHiTaskInst;
|
||||
import cn.axzo.workflow.core.engine.event.ReceiveTaskExtInstCompleteEvent;
|
||||
import cn.axzo.workflow.core.engine.event.ReceiveTaskExtInstCreateEvent;
|
||||
import cn.axzo.workflow.core.service.ExtAxHiTaskInstService;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.flowable.bpmn.model.ReceiveTask;
|
||||
@ -52,12 +52,10 @@ public class CustomReceiveTaskActivityBehavior extends ReceiveTaskActivityBehavi
|
||||
TaskHelper.insertTask(task, (ExecutionEntity) execution, false, false);
|
||||
|
||||
// 添加 taskInst 扩展表数据
|
||||
ExtAxHiTaskInst entity = new ExtAxHiTaskInst();
|
||||
entity.setProcInstId(execution.getProcessInstanceId());
|
||||
entity.setTaskDefinitionKey(execution.getCurrentActivityId());
|
||||
entity.setTaskId(task.getId());
|
||||
entity.setStatus(BpmnProcessInstanceResultEnum.PROCESSING.getStatus());
|
||||
hiTaskInstService.save(entity);
|
||||
FlowableEventDispatcher eventDispatcher = processEngineConfiguration.getEventDispatcher();
|
||||
eventDispatcher.dispatchEvent(new ReceiveTaskExtInstCreateEvent(execution.getProcessInstanceId(),
|
||||
execution.getCurrentActivityId(), task.getId(), BpmnProcessInstanceResultEnum.PROCESSING),
|
||||
processEngineConfiguration.getEngineCfgKey());
|
||||
}
|
||||
|
||||
@Override
|
||||
@ -71,7 +69,7 @@ public class CustomReceiveTaskActivityBehavior extends ReceiveTaskActivityBehavi
|
||||
Task task = taskService.createTaskQuery().executionId(execution.getId())
|
||||
.taskDefinitionKey(execution.getCurrentActivityId()).singleResult();
|
||||
if (Objects.nonNull(task)) {
|
||||
eventDispatcher.dispatchEvent(new ReceiveTaskExtInstCreateEventImpl(execution.getProcessInstanceId(),
|
||||
eventDispatcher.dispatchEvent(new ReceiveTaskExtInstCompleteEvent(execution.getProcessInstanceId(),
|
||||
receiveTask.getId(), task.getId(), BpmnProcessInstanceResultEnum.APPROVED),
|
||||
processEngineConfiguration.getEngineCfgKey());
|
||||
} else {
|
||||
|
||||
@ -13,18 +13,18 @@ import java.util.List;
|
||||
* @author wangli
|
||||
* @since 2024/2/5 18:46
|
||||
*/
|
||||
public enum ReceiveTaskCreateEventType implements FlowableEventType {
|
||||
|
||||
public enum ReceiveTaskEventType implements FlowableEventType {
|
||||
CREATE,
|
||||
COMPLETE;
|
||||
public static final ReceiveTaskCreateEventType[] EMPTY_ARRAY = new ReceiveTaskCreateEventType[]{};
|
||||
public static final ReceiveTaskEventType[] EMPTY_ARRAY = new ReceiveTaskEventType[]{};
|
||||
|
||||
public static ReceiveTaskCreateEventType[] getTypesFromString(String string) {
|
||||
List<ReceiveTaskCreateEventType> result = new ArrayList<>();
|
||||
public static ReceiveTaskEventType[] getTypesFromString(String string) {
|
||||
List<ReceiveTaskEventType> result = new ArrayList<>();
|
||||
if (string != null && !string.isEmpty()) {
|
||||
String[] split = StringUtils.split(string, ",");
|
||||
for (String typeName : split) {
|
||||
boolean found = false;
|
||||
for (ReceiveTaskCreateEventType type : values()) {
|
||||
for (ReceiveTaskEventType type : values()) {
|
||||
if (typeName.toUpperCase().equals(type.name())) {
|
||||
result.add(type);
|
||||
found = true;
|
||||
@ -3,7 +3,7 @@ package cn.axzo.workflow.core.engine.event;
|
||||
import cn.axzo.workflow.common.enums.BpmnProcessInstanceResultEnum;
|
||||
import org.flowable.common.engine.api.delegate.event.FlowableEventType;
|
||||
|
||||
import static cn.axzo.workflow.core.engine.event.ReceiveTaskCreateEventType.COMPLETE;
|
||||
import static cn.axzo.workflow.core.engine.event.ReceiveTaskEventType.COMPLETE;
|
||||
|
||||
/**
|
||||
* 接收任务的扩展任务记录表创建的事件实现
|
||||
@ -11,15 +11,15 @@ import static cn.axzo.workflow.core.engine.event.ReceiveTaskCreateEventType.COMP
|
||||
* @author wangli
|
||||
* @since 2024/2/5 18:27
|
||||
*/
|
||||
public class ReceiveTaskExtInstCreateEventImpl implements ReceiveTaskExtInstCreateEvent {
|
||||
public class ReceiveTaskExtInstCompleteEvent implements ReceiveTaskExtInstEvent {
|
||||
|
||||
private final String processInstanceId;
|
||||
private final String activityId;
|
||||
private final String taskId;
|
||||
private final BpmnProcessInstanceResultEnum resultEnum;
|
||||
|
||||
public ReceiveTaskExtInstCreateEventImpl(String processInstanceId, String activityId, String taskId,
|
||||
BpmnProcessInstanceResultEnum resultEnum) {
|
||||
public ReceiveTaskExtInstCompleteEvent(String processInstanceId, String activityId, String taskId,
|
||||
BpmnProcessInstanceResultEnum resultEnum) {
|
||||
this.processInstanceId = processInstanceId;
|
||||
this.activityId = activityId;
|
||||
this.taskId = taskId;
|
||||
@ -1,22 +1,50 @@
|
||||
package cn.axzo.workflow.core.engine.event;
|
||||
|
||||
import cn.axzo.workflow.common.enums.BpmnProcessInstanceResultEnum;
|
||||
import org.flowable.common.engine.api.delegate.event.FlowableEvent;
|
||||
import org.flowable.common.engine.api.delegate.event.FlowableEventType;
|
||||
|
||||
import static cn.axzo.workflow.core.engine.event.ReceiveTaskEventType.COMPLETE;
|
||||
|
||||
/**
|
||||
* 接收任务的扩展任务记录表创建的事件
|
||||
* 接收任务的扩展任务记录表创建的事件实现
|
||||
*
|
||||
* @author wangli
|
||||
* @since 2024/2/5 18:26
|
||||
* @since 2024/2/5 18:27
|
||||
*/
|
||||
public interface ReceiveTaskExtInstCreateEvent extends FlowableEvent {
|
||||
public class ReceiveTaskExtInstCreateEvent implements ReceiveTaskExtInstEvent {
|
||||
|
||||
String getProcessInstanceId();
|
||||
private final String processInstanceId;
|
||||
private final String activityId;
|
||||
private final String taskId;
|
||||
private final BpmnProcessInstanceResultEnum resultEnum;
|
||||
|
||||
String getActivityId();
|
||||
public ReceiveTaskExtInstCreateEvent(String processInstanceId, String activityId, String taskId,
|
||||
BpmnProcessInstanceResultEnum resultEnum) {
|
||||
this.processInstanceId = processInstanceId;
|
||||
this.activityId = activityId;
|
||||
this.taskId = taskId;
|
||||
this.resultEnum = resultEnum;
|
||||
}
|
||||
|
||||
String getTaskId();
|
||||
public String getProcessInstanceId() {
|
||||
return processInstanceId;
|
||||
}
|
||||
|
||||
BpmnProcessInstanceResultEnum getResultEnum();
|
||||
public String getActivityId() {
|
||||
return activityId;
|
||||
}
|
||||
|
||||
public String getTaskId() {
|
||||
return taskId;
|
||||
}
|
||||
|
||||
public BpmnProcessInstanceResultEnum getResultEnum() {
|
||||
return resultEnum;
|
||||
}
|
||||
|
||||
@Override
|
||||
public FlowableEventType getType() {
|
||||
return COMPLETE;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@ -0,0 +1,22 @@
|
||||
package cn.axzo.workflow.core.engine.event;
|
||||
|
||||
import cn.axzo.workflow.common.enums.BpmnProcessInstanceResultEnum;
|
||||
import org.flowable.common.engine.api.delegate.event.FlowableEvent;
|
||||
|
||||
/**
|
||||
* 接收任务的扩展任务记录表创建的事件
|
||||
*
|
||||
* @author wangli
|
||||
* @since 2024/2/5 18:26
|
||||
*/
|
||||
public interface ReceiveTaskExtInstEvent extends FlowableEvent {
|
||||
|
||||
String getProcessInstanceId();
|
||||
|
||||
String getActivityId();
|
||||
|
||||
String getTaskId();
|
||||
|
||||
BpmnProcessInstanceResultEnum getResultEnum();
|
||||
|
||||
}
|
||||
@ -1,6 +1,6 @@
|
||||
package cn.axzo.workflow.core.listener.impl;
|
||||
|
||||
import cn.axzo.workflow.core.engine.event.ReceiveTaskCreateEventType;
|
||||
import cn.axzo.workflow.core.engine.event.ReceiveTaskEventType;
|
||||
import cn.axzo.workflow.core.engine.event.ReceiveTaskExtInstCreateEvent;
|
||||
import cn.axzo.workflow.core.repository.entity.ExtAxHiTaskInst;
|
||||
import cn.axzo.workflow.core.service.ExtAxHiTaskInstService;
|
||||
@ -11,9 +11,11 @@ import org.flowable.common.engine.api.delegate.event.AbstractFlowableEventListen
|
||||
import org.flowable.common.engine.api.delegate.event.FlowableEvent;
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
import java.util.Objects;
|
||||
import java.util.Set;
|
||||
|
||||
import static cn.axzo.workflow.core.engine.event.ReceiveTaskCreateEventType.COMPLETE;
|
||||
import static cn.axzo.workflow.core.engine.event.ReceiveTaskEventType.COMPLETE;
|
||||
import static cn.axzo.workflow.core.engine.event.ReceiveTaskEventType.CREATE;
|
||||
|
||||
/**
|
||||
* TODO
|
||||
@ -24,10 +26,11 @@ import static cn.axzo.workflow.core.engine.event.ReceiveTaskCreateEventType.COMP
|
||||
@AllArgsConstructor
|
||||
@Component
|
||||
@Slf4j
|
||||
public class ReceiveTaskExtInstCreateEventListener extends AbstractFlowableEventListener {
|
||||
public class ReceiveTaskExtInstventListener extends AbstractFlowableEventListener {
|
||||
private final ExtAxHiTaskInstService extAxHiTaskInstService;
|
||||
public static final Set<ReceiveTaskCreateEventType> SUPPORT_EVENTS =
|
||||
ImmutableSet.<ReceiveTaskCreateEventType>builder()
|
||||
public static final Set<ReceiveTaskEventType> SUPPORT_EVENTS =
|
||||
ImmutableSet.<ReceiveTaskEventType>builder()
|
||||
.add(CREATE)
|
||||
.add(COMPLETE)
|
||||
.build();
|
||||
|
||||
@ -35,9 +38,15 @@ public class ReceiveTaskExtInstCreateEventListener extends AbstractFlowableEvent
|
||||
public void onEvent(FlowableEvent flowableEvent) {
|
||||
if (flowableEvent instanceof ReceiveTaskExtInstCreateEvent) {
|
||||
ReceiveTaskExtInstCreateEvent event = (ReceiveTaskExtInstCreateEvent) flowableEvent;
|
||||
ReceiveTaskCreateEventType type = (ReceiveTaskCreateEventType) event.getType();
|
||||
if (SUPPORT_EVENTS.contains(type)) {
|
||||
saveExtTaskInst(event);
|
||||
ReceiveTaskEventType type = (ReceiveTaskEventType) event.getType();
|
||||
switch (type) {
|
||||
case CREATE:
|
||||
saveExtTaskInst(event);
|
||||
break;
|
||||
case COMPLETE:
|
||||
updateExtTaskInst(event);
|
||||
break;
|
||||
default:
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -47,6 +56,14 @@ public class ReceiveTaskExtInstCreateEventListener extends AbstractFlowableEvent
|
||||
return true;
|
||||
}
|
||||
|
||||
private void updateExtTaskInst(ReceiveTaskExtInstCreateEvent event) {
|
||||
ExtAxHiTaskInst entity = extAxHiTaskInstService.getByTaskId(event.getTaskId(), event.getProcessInstanceId());
|
||||
if (Objects.nonNull(entity)) {
|
||||
entity.setStatus(event.getResultEnum().getStatus());
|
||||
extAxHiTaskInstService.update(entity);
|
||||
}
|
||||
}
|
||||
|
||||
private void saveExtTaskInst(ReceiveTaskExtInstCreateEvent event) {
|
||||
ExtAxHiTaskInst entity = new ExtAxHiTaskInst();
|
||||
entity.setProcInstId(event.getProcessInstanceId());
|
||||
Loading…
Reference in New Issue
Block a user