diff --git a/workflow-engine-core/src/main/java/cn/axzo/workflow/core/engine/cmd/CustomActivityTriggerAsyncCmd.java b/workflow-engine-core/src/main/java/cn/axzo/workflow/core/engine/cmd/CustomActivityTriggerAsyncCmd.java index c1bd71440..98ffe6110 100644 --- a/workflow-engine-core/src/main/java/cn/axzo/workflow/core/engine/cmd/CustomActivityTriggerAsyncCmd.java +++ b/workflow-engine-core/src/main/java/cn/axzo/workflow/core/engine/cmd/CustomActivityTriggerAsyncCmd.java @@ -5,29 +5,22 @@ import cn.axzo.workflow.common.model.request.bpmn.task.BpmnActivityTriggerDTO; import cn.axzo.workflow.core.engine.job.AsyncActivityTriggerJobHandler; import cn.hutool.json.JSONUtil; import com.alibaba.fastjson.JSON; -import org.apache.commons.lang3.StringUtils; import org.flowable.common.engine.impl.interceptor.CommandContext; -import org.flowable.engine.RuntimeService; import org.flowable.engine.TaskService; -import org.flowable.engine.history.HistoricProcessInstance; import org.flowable.engine.impl.cfg.ProcessEngineConfigurationImpl; import org.flowable.engine.impl.util.CommandContextUtil; -import org.flowable.engine.runtime.Execution; import org.flowable.job.service.JobService; import org.flowable.job.service.impl.persistence.entity.JobEntity; -import org.flowable.task.api.Task; +import org.flowable.task.api.TaskQuery; import org.flowable.task.service.impl.persistence.entity.TaskEntity; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import org.springframework.util.CollectionUtils; +import org.springframework.util.StringUtils; import java.io.Serializable; -import java.util.List; import java.util.Objects; -import java.util.stream.Collectors; import static cn.axzo.workflow.common.code.BpmnTaskRespCode.ACTIVITY_TRIGGER_NOT_EXISTS; -import static cn.axzo.workflow.core.engine.cmd.CustomActivityTriggerCmd.findLatestByCreateTime; import static cn.axzo.workflow.core.engine.cmd.CustomActivityTriggerCmd.validateActivityConfig; /** @@ -53,57 +46,55 @@ public class CustomActivityTriggerAsyncCmd extends AbstractCommand imple @Override public String execute(CommandContext commandContext) { - ProcessEngineConfigurationImpl processEngineConfiguration = - CommandContextUtil.getProcessEngineConfiguration(commandContext); - RuntimeService runtimeService = processEngineConfiguration.getRuntimeService(); - List list = runtimeService.createExecutionQuery().executionId(dto.getTriggerId()).list(); - log.info("execution list size: {}, executionId: {}, id: {}", list.size(), dto.getTriggerId(), org.springframework.util.StringUtils.collectionToCommaDelimitedString(list.stream().map(Execution::getId).collect(Collectors.toSet()))); - - if (list.size() == 1) { - HistoricProcessInstance instance = processEngineConfiguration.getHistoryService().createHistoricProcessInstanceQuery().processInstanceId(list.get(0).getProcessInstanceId()).singleResult(); - log.info("instance business status : {}", Objects.nonNull(instance) ? instance.getBusinessStatus() : "未找到实例"); - } - - List tasks = processEngineConfiguration.getTaskService().createTaskQuery() - .executionId(dto.getTriggerId()).list(); - if (CollectionUtils.isEmpty(tasks)) { - log.info("未通过 triggerId 找到任务集合,无法继续触发,executionId: {}", dto.getTriggerId()); - throw new WorkflowEngineException(ACTIVITY_TRIGGER_NOT_EXISTS, dto.getTriggerId()); - } - if (org.springframework.util.StringUtils.hasText(dto.getActivityId())) { - tasks = tasks.stream() - .filter(task -> Objects.equals(task.getTaskDefinitionKey(), dto.getActivityId())) - .collect(Collectors.toList()); - } - - TaskEntity task = (TaskEntity) findLatestByCreateTime(tasks).orElse(null); - if (Objects.isNull(task)) { - log.info("未找到对应的任务,无法继续触发,executionId: {}, activityId: {}", dto.getTriggerId(), dto.getActivityId()); - throw new WorkflowEngineException(ACTIVITY_TRIGGER_NOT_EXISTS, dto.getTriggerId()); - } - if (!validateActivityConfig((task))) { - log.info("业务节点唤醒时,发现节点已经修改配置,无法继续唤醒,processInstanceId:{}, taskDefinitionKey={}", task.getProcessInstanceId(), task.getTaskDefinitionKey()); - return null; - } - // ProcessEngineConfigurationImpl processEngineConfiguration = // CommandContextUtil.getProcessEngineConfiguration(commandContext); -// TaskQuery taskQuery = processEngineConfiguration.getTaskService().createTaskQuery() -// .executionId(dto.getTriggerId()); -// if (StringUtils.isNotBlank(dto.getActivityId())) { -// taskQuery.taskDefinitionKey(dto.getActivityId()); -// } -// List list = taskQuery.list(); -// log.info("tasks size: {}, activityIds: {}", list.size(), org.springframework.util.StringUtils.collectionToCommaDelimitedString(list.stream().map(Task::getTaskDefinitionKey).collect(Collectors.toList()))); -// TaskEntity task = (TaskEntity) taskQuery.singleResult(); -// if (Objects.isNull(task)) { -// throw new WorkflowEngineException(ACTIVITY_TRIGGER_NOT_EXISTS, dto.getTriggerId()); +// RuntimeService runtimeService = processEngineConfiguration.getRuntimeService(); +// List list = runtimeService.createExecutionQuery().executionId(dto.getTriggerId()).list(); +// log.info("execution list size: {}, executionId: {}, id: {}", list.size(), dto.getTriggerId(), org.springframework.util.StringUtils.collectionToCommaDelimitedString(list.stream().map(Execution::getId).collect(Collectors.toSet()))); +// +// if (list.size() == 1) { +// HistoricProcessInstance instance = processEngineConfiguration.getHistoryService().createHistoricProcessInstanceQuery().processInstanceId(list.get(0).getProcessInstanceId()).singleResult(); +// log.info("instance business status : {}", Objects.nonNull(instance) ? instance.getBusinessStatus() : "未找到实例"); // } // -// if (!validateActivityConfig(task)) { -// log.info("业务节点唤醒时,发现节点已经修改配置,无法继续唤醒,processInstanceId:{}, taskDefinitionKey={}", task.getProcessInstanceId(), task.getTaskDefinitionKey()); -// return ""; +// List tasks = processEngineConfiguration.getTaskService().createTaskQuery() +// .executionId(dto.getTriggerId()).list(); +// if (CollectionUtils.isEmpty(tasks)) { +// log.info("未通过 triggerId 找到任务集合,无法继续触发,executionId: {}", dto.getTriggerId()); +// throw new WorkflowEngineException(ACTIVITY_TRIGGER_NOT_EXISTS, dto.getTriggerId()); // } +// if (org.springframework.util.StringUtils.hasText(dto.getActivityId())) { +// tasks = tasks.stream() +// .filter(task -> Objects.equals(task.getTaskDefinitionKey(), dto.getActivityId())) +// .collect(Collectors.toList()); +// } +// +// TaskEntity task = (TaskEntity) findLatestByCreateTime(tasks).orElse(null); +// if (Objects.isNull(task)) { +// log.info("未找到对应的任务,无法继续触发,executionId: {}, activityId: {}", dto.getTriggerId(), dto.getActivityId()); +// throw new WorkflowEngineException(ACTIVITY_TRIGGER_NOT_EXISTS, dto.getTriggerId()); +// } +// if (!validateActivityConfig((task))) { +// log.info("业务节点唤醒时,发现节点已经修改配置,无法继续唤醒,processInstanceId:{}, taskDefinitionKey={}", task.getProcessInstanceId(), task.getTaskDefinitionKey()); +// return null; +// } + + ProcessEngineConfigurationImpl processEngineConfiguration = + CommandContextUtil.getProcessEngineConfiguration(commandContext); + TaskQuery taskQuery = processEngineConfiguration.getTaskService().createTaskQuery() + .executionId(dto.getTriggerId()); + if (StringUtils.hasText(dto.getActivityId())) { + taskQuery.taskDefinitionKey(dto.getActivityId()); + } + TaskEntity task = (TaskEntity) taskQuery.singleResult(); + if (Objects.isNull(task)) { + throw new WorkflowEngineException(ACTIVITY_TRIGGER_NOT_EXISTS, dto.getTriggerId()); + } + + if (!validateActivityConfig(task)) { + log.info("业务节点唤醒时,发现节点已经修改配置,无法继续唤醒,processInstanceId:{}, taskDefinitionKey={}", task.getProcessInstanceId(), task.getTaskDefinitionKey()); + return ""; + } return startAsync(commandContext); } @@ -113,7 +104,7 @@ public class CustomActivityTriggerAsyncCmd extends AbstractCommand imple TaskService taskService = processEngineConfiguration.getTaskService(); TaskEntity task = (TaskEntity) taskService.createTaskQuery() .executionId(dto.getTriggerId()) - .taskDefinitionKey(StringUtils.isBlank(dto.getActivityId()) ? null : dto.getActivityId()) + .taskDefinitionKey(StringUtils.hasText(dto.getActivityId()) ? dto.getActivityId() : null) .singleResult(); JobService jobService = processEngineConfiguration.getJobServiceConfiguration().getJobService(); diff --git a/workflow-engine-core/src/main/java/cn/axzo/workflow/core/engine/cmd/CustomActivityTriggerCmd.java b/workflow-engine-core/src/main/java/cn/axzo/workflow/core/engine/cmd/CustomActivityTriggerCmd.java index 04a8cfafe..fa21734df 100644 --- a/workflow-engine-core/src/main/java/cn/axzo/workflow/core/engine/cmd/CustomActivityTriggerCmd.java +++ b/workflow-engine-core/src/main/java/cn/axzo/workflow/core/engine/cmd/CustomActivityTriggerCmd.java @@ -9,16 +9,14 @@ import org.flowable.bpmn.model.BpmnModel; import org.flowable.bpmn.model.FlowElement; import org.flowable.common.engine.impl.interceptor.CommandContext; import org.flowable.engine.RuntimeService; -import org.flowable.engine.history.HistoricProcessInstance; import org.flowable.engine.impl.cfg.ProcessEngineConfigurationImpl; import org.flowable.engine.impl.util.CommandContextUtil; import org.flowable.engine.impl.util.ProcessDefinitionUtil; -import org.flowable.engine.runtime.Execution; import org.flowable.task.api.Task; +import org.flowable.task.api.TaskQuery; import org.flowable.task.service.impl.persistence.entity.TaskEntity; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import org.springframework.util.CollectionUtils; import org.springframework.util.StringUtils; import java.io.Serializable; @@ -26,7 +24,6 @@ import java.util.Comparator; import java.util.List; import java.util.Objects; import java.util.Optional; -import java.util.stream.Collectors; import static cn.axzo.workflow.common.code.BpmnTaskRespCode.ACTIVITY_TRIGGER_NOT_EXISTS; import static cn.axzo.workflow.common.constant.BpmnConstants.COMMENT_TYPE_OPERATION_DESC; @@ -55,68 +52,66 @@ public class CustomActivityTriggerCmd extends AbstractCommand implements S @Override public Void execute(CommandContext commandContext) { - ProcessEngineConfigurationImpl processEngineConfiguration = - CommandContextUtil.getProcessEngineConfiguration(commandContext); - RuntimeService runtimeService = processEngineConfiguration.getRuntimeService(); - List list = runtimeService.createExecutionQuery().executionId(dto.getTriggerId()).list(); - log.info("execution list size: {}, executionId: {}, id: {}", list.size(), dto.getTriggerId(), org.springframework.util.StringUtils.collectionToCommaDelimitedString(list.stream().map(Execution::getId).collect(Collectors.toSet()))); - - if (list.size() == 1) { - HistoricProcessInstance instance = processEngineConfiguration.getHistoryService().createHistoricProcessInstanceQuery().processInstanceId(list.get(0).getProcessInstanceId()).singleResult(); - log.info("instance business status : {}", Objects.nonNull(instance) ? instance.getBusinessStatus() : "未找到实例"); - } - - List tasks = processEngineConfiguration.getTaskService().createTaskQuery() - .executionId(dto.getTriggerId()).list(); - if (CollectionUtils.isEmpty(tasks)) { - log.info("未通过 triggerId 找到任务集合,无法继续触发,executionId: {}", dto.getTriggerId()); - throw new WorkflowEngineException(ACTIVITY_TRIGGER_NOT_EXISTS, dto.getTriggerId()); - } - if (StringUtils.hasText(dto.getActivityId())) { - tasks = tasks.stream() - .filter(task -> Objects.equals(task.getTaskDefinitionKey(), dto.getActivityId())) - .collect(Collectors.toList()); - } - - TaskEntity task = (TaskEntity) findLatestByCreateTime(tasks).orElse(null); - if (Objects.isNull(task)) { - log.info("未找到对应的任务,无法继续触发,executionId: {}, activityId: {}", dto.getTriggerId(), dto.getActivityId()); - throw new WorkflowEngineException(ACTIVITY_TRIGGER_NOT_EXISTS, dto.getTriggerId()); - } - if (!validateActivityConfig((task))) { - log.info("业务节点唤醒时,发现节点已经修改配置,无法继续唤醒,processInstanceId:{}, taskDefinitionKey={}", task.getProcessInstanceId(), task.getTaskDefinitionKey()); - return null; - } - - - addComment(commandContext, task, COMMENT_TYPE_OPERATION_DESC, "已同意"); - runtimeService.trigger(dto.getTriggerId()); - return null; - // ProcessEngineConfigurationImpl processEngineConfiguration = // CommandContextUtil.getProcessEngineConfiguration(commandContext); +// RuntimeService runtimeService = processEngineConfiguration.getRuntimeService(); +// List list = runtimeService.createExecutionQuery().executionId(dto.getTriggerId()).list(); +// log.info("execution list size: {}, executionId: {}, id: {}", list.size(), dto.getTriggerId(), org.springframework.util.StringUtils.collectionToCommaDelimitedString(list.stream().map(Execution::getId).collect(Collectors.toSet()))); // -// TaskQuery taskQuery = processEngineConfiguration.getTaskService().createTaskQuery() -// .executionId(dto.getTriggerId()); -// if (StringUtils.isNotBlank(dto.getActivityId())) { -// taskQuery.taskDefinitionKey(dto.getActivityId()); +// if (list.size() == 1) { +// HistoricProcessInstance instance = processEngineConfiguration.getHistoryService().createHistoricProcessInstanceQuery().processInstanceId(list.get(0).getProcessInstanceId()).singleResult(); +// log.info("instance business status : {}", Objects.nonNull(instance) ? instance.getBusinessStatus() : "未找到实例"); // } -// List list = taskQuery.list(); -// log.info("tasks size: {}, activityIds: {}", list.size(), org.springframework.util.StringUtils.collectionToCommaDelimitedString(list.stream().map(Task::getTaskDefinitionKey).collect(Collectors.toList()))); -// TaskEntity task = (TaskEntity) taskQuery.singleResult(); -// if (Objects.isNull(task)) { +// +// List tasks = processEngineConfiguration.getTaskService().createTaskQuery() +// .executionId(dto.getTriggerId()).list(); +// if (CollectionUtils.isEmpty(tasks)) { +// log.info("未通过 triggerId 找到任务集合,无法继续触发,executionId: {}", dto.getTriggerId()); // throw new WorkflowEngineException(ACTIVITY_TRIGGER_NOT_EXISTS, dto.getTriggerId()); // } +// if (StringUtils.hasText(dto.getActivityId())) { +// tasks = tasks.stream() +// .filter(task -> Objects.equals(task.getTaskDefinitionKey(), dto.getActivityId())) +// .collect(Collectors.toList()); +// } // -// if (!validateActivityConfig(task)) { +// TaskEntity task = (TaskEntity) findLatestByCreateTime(tasks).orElse(null); +// if (Objects.isNull(task)) { +// log.info("未找到对应的任务,无法继续触发,executionId: {}, activityId: {}", dto.getTriggerId(), dto.getActivityId()); +// throw new WorkflowEngineException(ACTIVITY_TRIGGER_NOT_EXISTS, dto.getTriggerId()); +// } +// if (!validateActivityConfig((task))) { // log.info("业务节点唤醒时,发现节点已经修改配置,无法继续唤醒,processInstanceId:{}, taskDefinitionKey={}", task.getProcessInstanceId(), task.getTaskDefinitionKey()); // return null; // } // +// // addComment(commandContext, task, COMMENT_TYPE_OPERATION_DESC, "已同意"); -// RuntimeService runtimeService = processEngineConfiguration.getRuntimeService(); // runtimeService.trigger(dto.getTriggerId()); // return null; + + ProcessEngineConfigurationImpl processEngineConfiguration = + CommandContextUtil.getProcessEngineConfiguration(commandContext); + + TaskQuery taskQuery = processEngineConfiguration.getTaskService().createTaskQuery() + .executionId(dto.getTriggerId()); + if (StringUtils.hasText(dto.getActivityId())) { + taskQuery.taskDefinitionKey(dto.getActivityId()); + } + TaskEntity task = (TaskEntity) taskQuery.singleResult(); + if (Objects.isNull(task)) { + throw new WorkflowEngineException(ACTIVITY_TRIGGER_NOT_EXISTS, dto.getTriggerId()); + } + + if (!validateActivityConfig(task)) { + log.info("业务节点唤醒时,发现节点已经修改配置,无法继续唤醒,processInstanceId:{}, taskDefinitionKey={}", task.getProcessInstanceId(), task.getTaskDefinitionKey()); + return null; + } + + addComment(commandContext, task, COMMENT_TYPE_OPERATION_DESC, "已同意"); + RuntimeService runtimeService = processEngineConfiguration.getRuntimeService(); + runtimeService.triggerAsync(dto.getTriggerId()); + return null; } public static Optional findLatestByCreateTime(List tasks) {