Merge branch 'feature/REQ-3023' into 'master'
Feature/req 3023 See merge request universal/infrastructure/backend/workflow-engine!15
This commit is contained in:
commit
41ff7bca68
@ -8,6 +8,7 @@ import lombok.Data;
|
||||
import lombok.NoArgsConstructor;
|
||||
|
||||
import javax.validation.constraints.NotBlank;
|
||||
import java.io.Serializable;
|
||||
|
||||
/**
|
||||
* 推动业务节点继续执行
|
||||
@ -20,7 +21,9 @@ import javax.validation.constraints.NotBlank;
|
||||
@AllArgsConstructor
|
||||
@NoArgsConstructor
|
||||
@Builder
|
||||
public class BpmnActivityTriggerDTO {
|
||||
public class BpmnActivityTriggerDTO implements Serializable {
|
||||
|
||||
private static final long serialVersionUID = 1759998765977414031L;
|
||||
|
||||
/**
|
||||
* 业务节点的触发 ID
|
||||
@ -34,4 +37,9 @@ public class BpmnActivityTriggerDTO {
|
||||
*/
|
||||
@ApiModelProperty(value = "是否异步", notes = "异步时,只接收请求便返回数据")
|
||||
private Boolean async = true;
|
||||
|
||||
/**
|
||||
* 流程定义节点id
|
||||
*/
|
||||
private String activityId;
|
||||
}
|
||||
|
||||
@ -75,6 +75,9 @@ public class CustomReceiveTaskActivityBehavior extends ReceiveTaskActivityBehavi
|
||||
eventDispatcher.dispatchEvent(new ExtTaskInstUpdateEvent(execution.getProcessInstanceId(),
|
||||
receiveTask.getId(), task.getId(), APPROVED),
|
||||
processEngineConfiguration.getEngineCfgKey());
|
||||
|
||||
// 解决两个业务节点相邻时,无法正确的往下流转的问题
|
||||
TaskHelper.deleteTask(task, null, true, true, true);
|
||||
} else {
|
||||
log.warn("ReceiveTask is null, executionId: {}, activityId: {}", execution.getId(),
|
||||
execution.getCurrentActivityId());
|
||||
|
||||
@ -5,6 +5,7 @@ import cn.axzo.workflow.common.exception.WorkflowEngineException;
|
||||
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;
|
||||
@ -30,6 +31,7 @@ import static cn.axzo.workflow.common.code.BpmnTaskRespCode.ACTIVITY_TRIGGER_NOT
|
||||
*/
|
||||
public class CustomActivityTriggerAsyncCmd extends AbstractCommand<String> implements Serializable {
|
||||
|
||||
private static final long serialVersionUID = 4037000685442842145L;
|
||||
private static final Logger log = LoggerFactory.getLogger(CustomActivityTriggerAsyncCmd.class);
|
||||
private final BpmnActivityTriggerDTO dto;
|
||||
|
||||
@ -46,9 +48,11 @@ public class CustomActivityTriggerAsyncCmd extends AbstractCommand<String> imple
|
||||
public String execute(CommandContext commandContext) {
|
||||
ProcessEngineConfigurationImpl processEngineConfiguration =
|
||||
CommandContextUtil.getProcessEngineConfiguration(commandContext);
|
||||
RuntimeService runtimeService = processEngineConfiguration.getRuntimeService();
|
||||
Execution execution = runtimeService.createExecutionQuery().executionId(dto.getTriggerId()).singleResult();
|
||||
if (Objects.isNull(execution)) {
|
||||
TaskEntity task = (TaskEntity) processEngineConfiguration.getTaskService().createTaskQuery()
|
||||
.executionId(dto.getTriggerId())
|
||||
.taskDefinitionKey(StringUtils.isBlank(dto.getActivityId()) ? null : dto.getActivityId())
|
||||
.singleResult();
|
||||
if (Objects.isNull(task)) {
|
||||
throw new WorkflowEngineException(ACTIVITY_TRIGGER_NOT_EXISTS, dto.getTriggerId());
|
||||
}
|
||||
|
||||
@ -59,7 +63,10 @@ public class CustomActivityTriggerAsyncCmd extends AbstractCommand<String> imple
|
||||
ProcessEngineConfigurationImpl processEngineConfiguration =
|
||||
CommandContextUtil.getProcessEngineConfiguration(commandContext);
|
||||
TaskService taskService = processEngineConfiguration.getTaskService();
|
||||
TaskEntity task = (TaskEntity) taskService.createTaskQuery().executionId(dto.getTriggerId()).singleResult();
|
||||
TaskEntity task = (TaskEntity) taskService.createTaskQuery()
|
||||
.executionId(dto.getTriggerId())
|
||||
.taskDefinitionKey(StringUtils.isBlank(dto.getActivityId()) ? null : dto.getActivityId())
|
||||
.singleResult();
|
||||
JobService jobService = processEngineConfiguration.getJobServiceConfiguration().getJobService();
|
||||
|
||||
JobEntity job = jobService.createJob();
|
||||
|
||||
@ -1,8 +1,9 @@
|
||||
package cn.axzo.workflow.core.engine.cmd;
|
||||
|
||||
import cn.axzo.workflow.common.model.request.bpmn.task.BpmnActivityTriggerDTO;
|
||||
import cn.axzo.workflow.common.exception.WorkflowEngineException;
|
||||
import cn.axzo.workflow.common.model.request.bpmn.task.BpmnActivityTriggerDTO;
|
||||
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.impl.cfg.ProcessEngineConfigurationImpl;
|
||||
@ -14,8 +15,8 @@ import org.slf4j.LoggerFactory;
|
||||
import java.io.Serializable;
|
||||
import java.util.Objects;
|
||||
|
||||
import static cn.axzo.workflow.common.constant.BpmnConstants.COMMENT_TYPE_OPERATION_DESC;
|
||||
import static cn.axzo.workflow.common.code.BpmnTaskRespCode.ACTIVITY_TRIGGER_NOT_EXISTS;
|
||||
import static cn.axzo.workflow.common.constant.BpmnConstants.COMMENT_TYPE_OPERATION_DESC;
|
||||
import static cn.axzo.workflow.core.engine.cmd.helper.CustomTaskHelper.addComment;
|
||||
|
||||
/**
|
||||
@ -26,6 +27,7 @@ import static cn.axzo.workflow.core.engine.cmd.helper.CustomTaskHelper.addCommen
|
||||
*/
|
||||
public class CustomActivityTriggerCmd extends AbstractCommand<Void> implements Serializable {
|
||||
|
||||
private static final long serialVersionUID = 5806130509691903321L;
|
||||
private static final Logger log = LoggerFactory.getLogger(CustomActivityTriggerCmd.class);
|
||||
private final BpmnActivityTriggerDTO dto;
|
||||
|
||||
@ -41,10 +43,12 @@ public class CustomActivityTriggerCmd extends AbstractCommand<Void> implements S
|
||||
@Override
|
||||
public Void execute(CommandContext commandContext) {
|
||||
ProcessEngineConfigurationImpl processEngineConfiguration =
|
||||
CommandContextUtil.getProcessEngineConfiguration(commandContext);
|
||||
CommandContextUtil.getProcessEngineConfiguration(commandContext);
|
||||
|
||||
TaskEntity task = (TaskEntity) processEngineConfiguration.getTaskService()
|
||||
.createTaskQuery().executionId(dto.getTriggerId()).singleResult();
|
||||
TaskEntity task = (TaskEntity) processEngineConfiguration.getTaskService().createTaskQuery()
|
||||
.executionId(dto.getTriggerId())
|
||||
.taskDefinitionKey(StringUtils.isBlank(dto.getActivityId()) ? null : dto.getActivityId())
|
||||
.singleResult();
|
||||
if (Objects.isNull(task)) {
|
||||
throw new WorkflowEngineException(ACTIVITY_TRIGGER_NOT_EXISTS, dto.getTriggerId());
|
||||
}
|
||||
|
||||
@ -3,7 +3,6 @@ package cn.axzo.workflow.core.engine.cmd;
|
||||
import cn.axzo.workflow.common.exception.WorkflowEngineException;
|
||||
import cn.axzo.workflow.common.model.request.bpmn.task.BpmnTaskDelegateAssigner;
|
||||
import cn.axzo.workflow.common.model.request.form.FormPermissionMetaInfo;
|
||||
import cn.axzo.workflow.common.util.ExpressionUtil;
|
||||
import cn.axzo.workflow.core.common.utils.BpmnMetaParserHelper;
|
||||
import cn.axzo.workflow.core.common.utils.FormHelper;
|
||||
import cn.axzo.workflow.core.repository.entity.ExtAxBpmnFormRelation;
|
||||
@ -22,29 +21,18 @@ import org.flowable.form.api.FormDefinition;
|
||||
import org.flowable.form.api.FormEngineConfigurationApi;
|
||||
import org.flowable.form.api.FormInstanceInfo;
|
||||
import org.flowable.form.api.FormRepositoryService;
|
||||
import org.flowable.form.api.FormService;
|
||||
import org.flowable.form.model.FormField;
|
||||
import org.flowable.form.model.SimpleFormModel;
|
||||
import org.flowable.task.api.history.HistoricTaskInstance;
|
||||
import org.springframework.util.CollectionUtils;
|
||||
import org.springframework.util.StringUtils;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.Objects;
|
||||
import java.util.*;
|
||||
import java.util.function.Function;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
import static cn.axzo.workflow.common.code.BpmnInstanceRespCode.PROCESS_INSTANCE_ID_NOT_EXISTS;
|
||||
import static cn.axzo.workflow.common.code.BpmnTaskRespCode.TASK_COMPLETE_FAIL_NOT_EXISTS;
|
||||
import static cn.axzo.workflow.common.code.FormInstanceRespCode.FORM_PARAM_ERROR;
|
||||
import static cn.axzo.workflow.common.constant.FormConstants.FIELD_PROPERTY_DEFAULT_VALUE;
|
||||
import static cn.axzo.workflow.common.constant.FormConstants.FIELD_PROPERTY_EDITABLE;
|
||||
import static cn.axzo.workflow.common.constant.FormConstants.FIELD_PROPERTY_HIDDEN;
|
||||
import static cn.axzo.workflow.common.constant.FormConstants.FIELD_PROPERTY_READONLY;
|
||||
import static cn.axzo.workflow.common.constant.FormConstants.FIELD_PROPERTY_REQUIRED;
|
||||
import static cn.axzo.workflow.common.enums.BpmnFlowNodeType.NODE_STARTER;
|
||||
import static cn.axzo.workflow.common.enums.BpmnProcessInstanceResultEnum.PROCESSING;
|
||||
|
||||
@ -201,7 +189,9 @@ public class GetFormInstanceAndPermissionCmd implements Command<FormInstanceInfo
|
||||
Map<String, List<BpmnTaskDelegateAssigner>> assignerMap = new HashMap<>();
|
||||
logs.forEach(e -> {
|
||||
if (assignerMap.containsKey(e.getActivityId())) {
|
||||
assignerMap.get(e.getActivityId()).addAll(e.getAssigneeFull());
|
||||
if (!CollectionUtils.isEmpty(e.getAssigneeFull())) {
|
||||
assignerMap.get(e.getActivityId()).addAll(e.getAssigneeFull());
|
||||
}
|
||||
} else {
|
||||
assignerMap.put(e.getActivityId(), new ArrayList<>(ListUtils.emptyIfNull(e.getAssigneeFull())));
|
||||
}
|
||||
@ -238,7 +228,7 @@ public class GetFormInstanceAndPermissionCmd implements Command<FormInstanceInfo
|
||||
FormDefinition formDefinition = formRepositoryService.createFormDefinitionQuery().deploymentId(relation.getFormDeploymentId()).singleResult();
|
||||
|
||||
// 获取表单定义+字段内容
|
||||
return commandContext.getCommandExecutor().execute(new CustomGetFormInstanceModelCmd(null, null, formDefinition.getId(), taskId, processInstanceId, instance.getTenantId() ,null, false ));
|
||||
return commandContext.getCommandExecutor().execute(new CustomGetFormInstanceModelCmd(null, null, formDefinition.getId(), taskId, processInstanceId, instance.getTenantId(), null, false));
|
||||
}
|
||||
|
||||
private void preCheckParam() {
|
||||
|
||||
@ -71,7 +71,7 @@ public class AsyncTermNodeAlterJobHandler extends AbstractJobHandler implements
|
||||
alterDTO.setTaskId(task.getId());
|
||||
alterDTO.setStartTime(task.getCreateTime());
|
||||
alterDTO.setPrettyStartTime(DateUtil.formatDateTime(task.getCreateTime()));
|
||||
if (refreshProperties.getSendDingTalk()) {
|
||||
if (Boolean.TRUE.equals(refreshProperties.getSendDingTalk())) {
|
||||
alter.invoke(alterDTO);
|
||||
}
|
||||
}
|
||||
|
||||
@ -11,6 +11,7 @@ import com.google.common.collect.Lists;
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.apache.commons.collections4.ListUtils;
|
||||
import org.apache.commons.lang3.math.NumberUtils;
|
||||
import org.flowable.bpmn.model.BpmnModel;
|
||||
import org.flowable.bpmn.model.FlowElement;
|
||||
import org.flowable.bpmn.model.Process;
|
||||
@ -29,22 +30,11 @@ import java.util.Date;
|
||||
import java.util.List;
|
||||
import java.util.Objects;
|
||||
|
||||
import static cn.axzo.workflow.common.constant.BpmnConstants.AND_SIGN_EXPRESSION;
|
||||
import static cn.axzo.workflow.common.constant.BpmnConstants.COMMENT_TYPE_ADVICE;
|
||||
import static cn.axzo.workflow.common.constant.BpmnConstants.COMMENT_TYPE_OPERATION_DESC;
|
||||
import static cn.axzo.workflow.common.constant.BpmnConstants.HIDDEN_ASSIGNEE_ID;
|
||||
import static cn.axzo.workflow.common.constant.BpmnConstants.INTERNAL_ACTIVITY_RELATION_ASSIGNEE_LIST_INFO_SNAPSHOT;
|
||||
import static cn.axzo.workflow.common.constant.BpmnConstants.INTERNAL_TASK_RELATION_ASSIGNEE_INFO;
|
||||
import static cn.axzo.workflow.common.constant.BpmnConstants.NO_ASSIGNEE;
|
||||
import static cn.axzo.workflow.common.constant.BpmnConstants.TASK_COMPLETE_OPERATION_TYPE;
|
||||
import static cn.axzo.workflow.common.constant.BpmnConstants.*;
|
||||
import static cn.axzo.workflow.common.enums.ApprovalMethodEnum.nobody;
|
||||
import static cn.axzo.workflow.common.enums.BpmnFlowNodeMode.AND;
|
||||
import static cn.axzo.workflow.common.enums.BpmnFlowNodeMode.GENERAL;
|
||||
import static cn.axzo.workflow.common.enums.BpmnFlowNodeMode.OR;
|
||||
import static cn.axzo.workflow.common.enums.BpmnFlowNodeMode.*;
|
||||
import static cn.axzo.workflow.common.enums.BpmnFlowNodeType.NODE_STARTER;
|
||||
import static cn.axzo.workflow.common.enums.BpmnProcessInstanceResultEnum.APPROVED;
|
||||
import static cn.axzo.workflow.common.enums.BpmnProcessInstanceResultEnum.DELETED;
|
||||
import static cn.axzo.workflow.common.enums.BpmnProcessInstanceResultEnum.PROCESSING;
|
||||
import static cn.axzo.workflow.common.enums.BpmnProcessInstanceResultEnum.*;
|
||||
import static cn.axzo.workflow.core.common.enums.BpmnProcessTaskResultEnum.PENDING;
|
||||
import static cn.axzo.workflow.core.common.utils.BpmnMetaParserHelper.getApprovalMethod;
|
||||
import static cn.axzo.workflow.core.common.utils.BpmnMetaParserHelper.getNodeType;
|
||||
@ -147,7 +137,7 @@ public class TaskEntityEventHandle implements EntityEventHandle<TaskEntity> {
|
||||
BpmnTaskDelegateAssigner assignee = BpmnTaskDelegateAssigner.toObjectCompatible(taskEntity.getVariable(INTERNAL_TASK_RELATION_ASSIGNEE_INFO + taskEntity.getId()));
|
||||
if (Objects.nonNull(assignee) && !Objects.equals(NO_ASSIGNEE, assignee.buildAssigneeId())) {
|
||||
update.setAssigneeFull(Lists.newArrayList(assignee));
|
||||
update.setAssigneeId(Long.valueOf(assignee.getPersonId()));
|
||||
update.setAssigneeId(NumberUtils.isDigits(assignee.getPersonId()) ? Long.valueOf(assignee.getPersonId()) : null);
|
||||
update.setAssigneeTenantId(assignee.getTenantId());
|
||||
update.setAssigneeName(assignee.getAssignerName());
|
||||
update.setAssigneeOuId(assignee.getOuId());
|
||||
|
||||
@ -62,7 +62,7 @@ public class BpmnProcessActivityController extends BasicPopulateAvatarController
|
||||
@Deprecated
|
||||
public CommonResponse<Boolean> trigger(@NotBlank(message = "触发 ID 不能为空") @RequestParam String triggerId) {
|
||||
log.info("业务节点唤醒 trigger2 ===>>>参数:{}", triggerId);
|
||||
return trigger(new BpmnActivityTriggerDTO(triggerId, true));
|
||||
return trigger(new BpmnActivityTriggerDTO(triggerId, true, null));
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
Loading…
Reference in New Issue
Block a user