update - 抄送节点生成 Task ,方便在日志中查询
This commit is contained in:
parent
6890438167
commit
8cd7c6476a
@ -147,7 +147,7 @@ public final class BpmnMetaParserHelper {
|
||||
return Optional.empty();
|
||||
}
|
||||
List<BpmnCarbonCopyConf> confs = new ArrayList<>();
|
||||
elements.get(0).getChildElements().get(CONFIG_CARBON_COPY).forEach(e -> {
|
||||
elements.get(0).getChildElements().getOrDefault(CONFIG_CARBON_COPY, Collections.emptyList()).forEach(e -> {
|
||||
BpmnCarbonCopyConf bpmnCarbonCopyConf = new BpmnCarbonCopyConf();
|
||||
buildCarbonCopyConfig(e, bpmnCarbonCopyConf);
|
||||
confs.add(bpmnCarbonCopyConf);
|
||||
|
||||
@ -3,11 +3,14 @@ package cn.axzo.workflow.core.engine.behavior;
|
||||
import cn.axzo.workflow.core.service.ExtAxHiTaskInstService;
|
||||
import org.flowable.bpmn.model.Activity;
|
||||
import org.flowable.bpmn.model.ReceiveTask;
|
||||
import org.flowable.bpmn.model.ServiceTask;
|
||||
import org.flowable.bpmn.model.UserTask;
|
||||
import org.flowable.common.engine.api.delegate.Expression;
|
||||
import org.flowable.engine.impl.bpmn.behavior.AbstractBpmnActivityBehavior;
|
||||
import org.flowable.engine.impl.bpmn.behavior.ParallelMultiInstanceBehavior;
|
||||
import org.flowable.engine.impl.bpmn.behavior.ReceiveTaskActivityBehavior;
|
||||
import org.flowable.engine.impl.bpmn.behavior.SequentialMultiInstanceBehavior;
|
||||
import org.flowable.engine.impl.bpmn.behavior.ServiceTaskDelegateExpressionActivityBehavior;
|
||||
import org.flowable.engine.impl.bpmn.behavior.UserTaskActivityBehavior;
|
||||
import org.flowable.engine.impl.bpmn.parser.factory.DefaultActivityBehaviorFactory;
|
||||
|
||||
@ -43,6 +46,16 @@ public class CustomActivityBehaviorFactory extends DefaultActivityBehaviorFactor
|
||||
return new CustomReceiveTaskActivityBehavior(receiveTask, hiTaskInstService);
|
||||
}
|
||||
|
||||
@Override
|
||||
public ServiceTaskDelegateExpressionActivityBehavior createServiceTaskDelegateExpressionActivityBehavior(ServiceTask serviceTask) {
|
||||
|
||||
Expression delegateExpression = expressionManager.createExpression(serviceTask.getImplementation());
|
||||
return new CustomServiceTaskDelegateExpressionActivityBehavior(serviceTask.getId(), delegateExpression,
|
||||
getSkipExpressionFromServiceTask(serviceTask),
|
||||
createFieldDeclarations(serviceTask.getFieldExtensions()),
|
||||
serviceTask.getMapExceptions(), serviceTask.isTriggerable(), serviceTask);
|
||||
}
|
||||
|
||||
public void setHiTaskInstService(ExtAxHiTaskInstService hiTaskInstService) {
|
||||
this.hiTaskInstService = hiTaskInstService;
|
||||
}
|
||||
|
||||
@ -1,10 +1,22 @@
|
||||
package cn.axzo.workflow.core.engine.behavior;
|
||||
|
||||
import cn.axzo.workflow.common.enums.BpmnProcessInstanceResultEnum;
|
||||
import cn.axzo.workflow.core.engine.event.ReceiveTaskExtInstCreateEvent;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.flowable.bpmn.model.MapExceptionEntry;
|
||||
import org.flowable.bpmn.model.ServiceTask;
|
||||
import org.flowable.common.engine.api.delegate.Expression;
|
||||
import org.flowable.common.engine.api.delegate.event.FlowableEventDispatcher;
|
||||
import org.flowable.common.engine.impl.interceptor.CommandContext;
|
||||
import org.flowable.engine.delegate.DelegateExecution;
|
||||
import org.flowable.engine.impl.bpmn.behavior.ServiceTaskDelegateExpressionActivityBehavior;
|
||||
import org.flowable.engine.impl.bpmn.parser.FieldDeclaration;
|
||||
import org.flowable.engine.impl.cfg.ProcessEngineConfigurationImpl;
|
||||
import org.flowable.engine.impl.persistence.entity.ExecutionEntity;
|
||||
import org.flowable.engine.impl.util.CommandContextUtil;
|
||||
import org.flowable.engine.impl.util.TaskHelper;
|
||||
import org.flowable.task.service.TaskService;
|
||||
import org.flowable.task.service.impl.persistence.entity.TaskEntity;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
@ -16,22 +28,41 @@ import java.util.List;
|
||||
* @author wangli
|
||||
* @since 13/03/2024 14:17
|
||||
*/
|
||||
@Slf4j
|
||||
public class CustomServiceTaskDelegateExpressionActivityBehavior extends ServiceTaskDelegateExpressionActivityBehavior {
|
||||
|
||||
protected final ServiceTask serviceTask;
|
||||
|
||||
public CustomServiceTaskDelegateExpressionActivityBehavior(String serviceTaskId, Expression expression,
|
||||
Expression skipExpression,
|
||||
List<FieldDeclaration> fieldDeclarations,
|
||||
List<MapExceptionEntry> mapExceptions,
|
||||
boolean triggerable) {
|
||||
boolean triggerable, ServiceTask serviceTask) {
|
||||
super(serviceTaskId, expression, skipExpression, fieldDeclarations, mapExceptions, triggerable);
|
||||
this.serviceTask = serviceTask;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void execute(DelegateExecution execution) {
|
||||
CommandContext commandContext = CommandContextUtil.getCommandContext();
|
||||
ProcessEngineConfigurationImpl processEngineConfiguration =
|
||||
CommandContextUtil.getProcessEngineConfiguration(commandContext);
|
||||
TaskService taskService = processEngineConfiguration.getTaskServiceConfiguration().getTaskService();
|
||||
TaskEntity task = taskService.createTask();
|
||||
task.setExecutionId(execution.getId());
|
||||
task.setTaskDefinitionKey(serviceTask.getId());
|
||||
task.setPropagatedStageInstanceId(execution.getPropagatedStageInstanceId());
|
||||
task.setName(serviceTask.getName());
|
||||
TaskHelper.insertTask(task, (ExecutionEntity) execution, false, false);
|
||||
|
||||
// 添加 taskInst 扩展表数据
|
||||
FlowableEventDispatcher eventDispatcher = processEngineConfiguration.getEventDispatcher();
|
||||
eventDispatcher.dispatchEvent(new ReceiveTaskExtInstCreateEvent(execution.getProcessInstanceId(),
|
||||
// 这里直接设置状态为"approved"是无奈为之.
|
||||
// 正常的操作应该学习 cn.axzo.workflow.core.engine.behavior.CustomReceiveTaskActivityBehavior 这个类
|
||||
execution.getCurrentActivityId(), task.getId(), BpmnProcessInstanceResultEnum.APPROVED),
|
||||
processEngineConfiguration.getEngineCfgKey());
|
||||
super.execute(execution);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void leave(DelegateExecution execution) {
|
||||
super.leave(execution);
|
||||
}
|
||||
}
|
||||
|
||||
Loading…
Reference in New Issue
Block a user