update - 调整发起人的自动通过的执行逻辑,未测试
This commit is contained in:
parent
b02d59382a
commit
2abd8050ad
@ -0,0 +1,65 @@
|
||||
package cn.axzo.workflow.core.engine.listener;
|
||||
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.flowable.common.engine.impl.cfg.TransactionListener;
|
||||
import org.flowable.common.engine.impl.interceptor.CommandContext;
|
||||
import org.flowable.common.engine.impl.interceptor.CommandContextCloseListener;
|
||||
import org.flowable.common.engine.impl.interceptor.CommandExecutor;
|
||||
import org.flowable.job.service.impl.asyncexecutor.AsyncExecutor;
|
||||
|
||||
/**
|
||||
* TODO
|
||||
*
|
||||
* @author wangli
|
||||
* @since 2024/4/28 21:59
|
||||
*/
|
||||
@Slf4j
|
||||
public class InitiatorAsyncApprovedListener implements TransactionListener, CommandContextCloseListener {
|
||||
protected AsyncExecutor asyncExecutor;
|
||||
protected CommandExecutor commandExecutor;
|
||||
|
||||
public InitiatorAsyncApprovedListener(AsyncExecutor asyncExecutor) {
|
||||
this.asyncExecutor = asyncExecutor;
|
||||
}
|
||||
|
||||
public InitiatorAsyncApprovedListener(AsyncExecutor asyncExecutor, CommandExecutor commandExecutor) {
|
||||
this(asyncExecutor);
|
||||
this.commandExecutor = commandExecutor;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void execute(CommandContext commandContext) {
|
||||
// TODO
|
||||
asyncExecutor.executeAsyncJob();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void closing(CommandContext commandContext) {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void afterSessionsFlush(CommandContext commandContext) {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void closed(CommandContext commandContext) {
|
||||
execute(commandContext);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void closeFailure(CommandContext commandContext) {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public Integer order() {
|
||||
return 10;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean multipleAllowed() {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
@ -52,9 +52,8 @@ public class InternalExtAxTaskInstEvent_lo_Listener extends AbstractBpmnEventLis
|
||||
INTERNAL_INITIATOR)));
|
||||
if (Objects.isNull(assigner)) {
|
||||
// 兼容历史数据
|
||||
assigner =
|
||||
BpmnTaskDelegateAssigner.toObjectCompatible(runtimeService.getVariable(delegateTask.getProcessInstanceId(),
|
||||
OLD_INTERNAL_INITIATOR));
|
||||
assigner = getContext().getInitiator(() ->
|
||||
BpmnTaskDelegateAssigner.toObjectCompatible(runtimeService.getVariable(delegateTask.getProcessInstanceId(), OLD_INTERNAL_INITIATOR)));
|
||||
}
|
||||
assignee = assigner.buildAssigneeId();
|
||||
} else {
|
||||
|
||||
@ -1,15 +1,18 @@
|
||||
package cn.axzo.workflow.server.controller.listener.task;
|
||||
|
||||
import cn.axzo.workflow.common.enums.BpmnFlowNodeType;
|
||||
import cn.axzo.workflow.common.model.request.bpmn.task.BpmnTaskAuditDTO;
|
||||
import cn.axzo.workflow.common.model.request.bpmn.task.BpmnTaskDelegateAssigner;
|
||||
import cn.axzo.workflow.common.model.request.bpmn.task.ExtHiTaskSearchDTO;
|
||||
import cn.axzo.workflow.core.common.context.TaskOperationContext;
|
||||
import cn.axzo.workflow.core.common.utils.BpmnMetaParserHelper;
|
||||
import cn.axzo.workflow.core.engine.cmd.CustomApproveTaskCmd;
|
||||
import cn.axzo.workflow.core.engine.job.AsyncApproveTaskJobHandler;
|
||||
import cn.axzo.workflow.core.listener.AbstractBpmnEventListener;
|
||||
import cn.axzo.workflow.core.listener.BpmnTaskEventListener;
|
||||
import cn.axzo.workflow.core.repository.entity.ExtAxHiTaskInst;
|
||||
import cn.axzo.workflow.core.service.ExtAxHiTaskInstService;
|
||||
import cn.hutool.json.JSONUtil;
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.flowable.bpmn.model.FlowElement;
|
||||
@ -23,6 +26,8 @@ import org.flowable.engine.TaskService;
|
||||
import org.flowable.engine.impl.cfg.ProcessEngineConfigurationImpl;
|
||||
import org.flowable.engine.impl.persistence.entity.ActivityInstanceEntity;
|
||||
import org.flowable.engine.impl.util.CommandContextUtil;
|
||||
import org.flowable.job.service.JobService;
|
||||
import org.flowable.job.service.impl.persistence.entity.JobEntity;
|
||||
import org.flowable.task.api.history.HistoricTaskInstance;
|
||||
import org.flowable.task.service.delegate.DelegateTask;
|
||||
import org.springframework.core.Ordered;
|
||||
@ -81,15 +86,47 @@ public class AutoOperatorEvent_101_Listener extends AbstractBpmnEventListener<Ta
|
||||
log.info("AutoOperatorEventListener#onCreated...{}", delegateTask.getTaskDefinitionKey());
|
||||
|
||||
if (Objects.equals(NODE_STARTER.getType(), delegateTask.getTaskDefinitionKey())) {
|
||||
ProcessEngineConfigurationImpl processEngineConfiguration = CommandContextUtil.getProcessEngineConfiguration();
|
||||
JobService jobService = processEngineConfiguration.getJobServiceConfiguration().getJobService();
|
||||
|
||||
JobEntity job = jobService.createJob();
|
||||
// 这里的 executionId 可为 null
|
||||
job.setExecutionId(delegateTask.getExecutionId());
|
||||
job.setProcessInstanceId(delegateTask.getProcessInstanceId());
|
||||
job.setProcessDefinitionId(delegateTask.getProcessDefinitionId());
|
||||
job.setElementId(delegateTask.getTaskDefinitionKey());
|
||||
job.setElementName(delegateTask.getName());
|
||||
job.setJobHandlerType(AsyncApproveTaskJobHandler.TYPE);
|
||||
job.setTenantId(delegateTask.getTenantId());
|
||||
|
||||
BpmnTaskAuditDTO dto = new BpmnTaskAuditDTO();
|
||||
dto.setTaskId(delegateTask.getId());
|
||||
|
||||
BpmnTaskDelegateAssigner initiator = getContext().getInitiator(() -> BpmnTaskDelegateAssigner.toObjectCompatible(delegateTask.getVariable(INTERNAL_INITIATOR)));
|
||||
if (Objects.nonNull(initiator)) {
|
||||
delegateTask.setVariable(INTERNAL_TASK_RELATION_ASSIGNEE_INFO + delegateTask.getId(),
|
||||
initiator.toJson());
|
||||
}
|
||||
dto.setApprover(initiator);
|
||||
// 携带自定义的数据
|
||||
job.setCustomValues(JSONUtil.toJsonStr(dto));
|
||||
|
||||
// 创建异步任务并调度
|
||||
jobService.createAsyncJob(job, false);
|
||||
jobService.scheduleAsyncJob(job);
|
||||
|
||||
|
||||
|
||||
/*BpmnTaskDelegateAssigner initiator = getContext().getInitiator(() -> BpmnTaskDelegateAssigner.toObjectCompatible(delegateTask.getVariable(INTERNAL_INITIATOR)));
|
||||
if (Objects.nonNull(initiator)) {
|
||||
delegateTask.setVariable(INTERNAL_TASK_RELATION_ASSIGNEE_INFO + delegateTask.getId(),
|
||||
initiator.toJson());
|
||||
}
|
||||
|
||||
delegateTask.setTransientVariable(TASK_COMPLETE_OPERATION_TYPE + delegateTask.getId(),
|
||||
APPROVED.getStatus());
|
||||
// 直接完成
|
||||
taskService.complete(delegateTask.getId(), runtimeService.getVariables(delegateTask.getExecutionId()));
|
||||
taskService.complete(delegateTask.getId(), runtimeService.getVariables(delegateTask.getExecutionId()));*/
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
@ -99,7 +99,7 @@ public class RocketMqBpmnTaskEvent_102_Listener extends AbstractBpmnEventListene
|
||||
}
|
||||
|
||||
public ProcessTaskDTO build(DelegateTask delegateTask, ProcessTaskEventEnum type) {
|
||||
Process mainProcess = repositoryService.getBpmnModel(delegateTask.getProcessDefinitionId()).getMainProcess();
|
||||
Process mainProcess = getContext().getProcess(() -> repositoryService.getBpmnModel(delegateTask.getProcessDefinitionId()).getMainProcess());
|
||||
ProcessTaskDTO dto = new ProcessTaskDTO()
|
||||
.setType(type)
|
||||
.setCategory(getDeployment(delegateTask.getProcessInstanceId()).getCategory())
|
||||
|
||||
Loading…
Reference in New Issue
Block a user