update - 抄送逻辑配置解析,在审批日志中对抄送节点执行抄送人查询
This commit is contained in:
parent
dcdfe5f63d
commit
d7e81bcfa5
@ -1,5 +1,8 @@
|
|||||||
package cn.axzo.workflow.common.enums;
|
package cn.axzo.workflow.common.enums;
|
||||||
|
|
||||||
|
import java.util.Arrays;
|
||||||
|
import java.util.Objects;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 审批人所在范围枚举
|
* 审批人所在范围枚举
|
||||||
*
|
*
|
||||||
@ -37,4 +40,11 @@ public enum ApproverScopeEnum {
|
|||||||
public boolean selectWorkspace() {
|
public boolean selectWorkspace() {
|
||||||
return this == ApproverScopeEnum.projectWorkspace;
|
return this == ApproverScopeEnum.projectWorkspace;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static ApproverScopeEnum valueOfProcessor(String processor) {
|
||||||
|
return Arrays.stream(ApproverScopeEnum.values())
|
||||||
|
.filter(i -> Objects.equals(i.getProcessor(), processor))
|
||||||
|
.findAny()
|
||||||
|
.orElse(null);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -11,30 +11,32 @@ import java.util.Objects;
|
|||||||
*/
|
*/
|
||||||
public enum CarbonCopyObjectType {
|
public enum CarbonCopyObjectType {
|
||||||
|
|
||||||
ent_role("ent_role", "单位内指定角色", "entWorkspaceProcessor"),
|
ent_role("ent_role", "role", "单位内指定角色", "entWorkspaceProcessor"),
|
||||||
ent_position("ent_position", "单位内指定岗位", "entWorkspaceProcessor"),
|
ent_position("ent_position", "position", "单位内指定岗位", "entWorkspaceProcessor"),
|
||||||
ent_identity("ent_identity", "单位内指定身份", "entWorkspaceProcessor"),
|
ent_identity("ent_identity", "identity", "单位内指定身份", "entWorkspaceProcessor"),
|
||||||
|
|
||||||
project_role("project_role", "项目部内指定角色", "projectWorkspaceProcessor"),
|
project_role("project_role", "role", "项目部内指定角色", "projectWorkspaceProcessor"),
|
||||||
project_position("project_position", "项目部内指定岗位", "projectWorkspaceProcessor"),
|
project_position("project_position", "position", "项目部内指定岗位", "projectWorkspaceProcessor"),
|
||||||
project_identity("project_identity", "项目部内指定身份", "projectWorkspaceProcessor"),
|
project_identity("project_identity", "identity", "项目部内指定身份", "projectWorkspaceProcessor"),
|
||||||
|
|
||||||
specify_user("specify_user", "指定人员", "common"),
|
specify_user("specify_user", "specify_user", "指定人员", "common"),
|
||||||
|
|
||||||
// initiator("initiator", "发起人"),
|
approver_relation("approver_relation", "approver_relation", "审批相关人员", "common"),
|
||||||
// approver("approver", "审批人"),
|
// 以下 4 个是 approver_relation 的选项值
|
||||||
// ent_initiator_leader("ent_initiator_leader", "单位内发起人主管"),
|
initiator("initiator", "initiator", "发起人", "common"),
|
||||||
// project_initiator_leader("project_initiator_leader", "项目部内发起人主管"),
|
approver("approver", "approver", "审批人", "common"),
|
||||||
|
ent_initiator_leader("ent_initiator_leader", "initiatorLeader", "单位内发起人主管", "entWorkspaceProcessor"),
|
||||||
approve_relation("approve_relation", "审批相关人员", "common"),
|
project_initiator_leader("project_initiator_leader", "initiatorLeader", "项目部内发起人主管", "projectWorkspaceProcessor"),
|
||||||
;
|
;
|
||||||
|
|
||||||
private String type;
|
private String type;
|
||||||
|
private String simpleType;
|
||||||
private String desc;
|
private String desc;
|
||||||
private String processor;
|
private String processor;
|
||||||
|
|
||||||
CarbonCopyObjectType(String type, String desc, String processor) {
|
CarbonCopyObjectType(String type, String simpleType, String desc, String processor) {
|
||||||
this.type = type;
|
this.type = type;
|
||||||
|
this.simpleType = simpleType;
|
||||||
this.desc = desc;
|
this.desc = desc;
|
||||||
this.processor = processor;
|
this.processor = processor;
|
||||||
}
|
}
|
||||||
@ -47,6 +49,14 @@ public enum CarbonCopyObjectType {
|
|||||||
this.type = type;
|
this.type = type;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public String getSimpleType() {
|
||||||
|
return simpleType;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setSimpleType(String simpleType) {
|
||||||
|
this.simpleType = simpleType;
|
||||||
|
}
|
||||||
|
|
||||||
public String getDesc() {
|
public String getDesc() {
|
||||||
return desc;
|
return desc;
|
||||||
}
|
}
|
||||||
@ -69,4 +79,5 @@ public enum CarbonCopyObjectType {
|
|||||||
.findAny()
|
.findAny()
|
||||||
.orElse(null);
|
.orElse(null);
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@ -30,7 +30,7 @@ public class BpmnCarbonCopyConf implements Serializable {
|
|||||||
private CarbonCopyObjectType carbonCopyObjectType;
|
private CarbonCopyObjectType carbonCopyObjectType;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 具体的对象值, JSON 格式的字符串: "[{}, {}]"
|
* 具体的对象值, JSON 格式的字符串: "[{'name': '', value: ''},{},{},{}, {}]"
|
||||||
*/
|
*/
|
||||||
private String specifyValue;
|
private String specifyValue;
|
||||||
|
|
||||||
|
|||||||
@ -88,7 +88,7 @@ public class ProcessInstanceDTO implements Serializable {
|
|||||||
/**
|
/**
|
||||||
* 取消流程实例的特殊字段
|
* 取消流程实例的特殊字段
|
||||||
*/
|
*/
|
||||||
private String cancelReason;
|
private String reason;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 模型对应的通知模板配置信息
|
* 模型对应的通知模板配置信息
|
||||||
|
|||||||
@ -300,25 +300,25 @@ public final class BpmnMetaParserHelper {
|
|||||||
return Optional.ofNullable(elements.get(0));
|
return Optional.ofNullable(elements.get(0));
|
||||||
}
|
}
|
||||||
|
|
||||||
public static Optional<UserTask> getPreNode(FlowElement userTask, DelegateExecution execution,
|
public static Optional<UserTask> getPreNode(FlowElement flowElement, DelegateExecution execution,
|
||||||
BpmnModel bpmnModel) {
|
BpmnModel bpmnModel) {
|
||||||
if (Objects.isNull(bpmnModel)) {
|
if (Objects.isNull(bpmnModel)) {
|
||||||
bpmnModel = ProcessDefinitionUtil.getBpmnModel(execution.getProcessDefinitionId());
|
bpmnModel = ProcessDefinitionUtil.getBpmnModel(execution.getProcessDefinitionId());
|
||||||
}
|
}
|
||||||
if (userTask instanceof UserTask) {
|
if (flowElement instanceof UserTask) {
|
||||||
UserTask task = (UserTask) userTask;
|
UserTask task = (UserTask) flowElement;
|
||||||
if (CollectionUtils.isEmpty(task.getIncomingFlows())) {
|
if (CollectionUtils.isEmpty(task.getIncomingFlows())) {
|
||||||
return Optional.empty();
|
return Optional.empty();
|
||||||
}
|
}
|
||||||
//preNode
|
//preNode
|
||||||
FlowElement flowElement = bpmnModel.getFlowElement(task.getIncomingFlows().get(0).getSourceRef());
|
FlowElement preFlowElement = bpmnModel.getFlowElement(task.getIncomingFlows().get(0).getSourceRef());
|
||||||
|
|
||||||
if (Objects.isNull(flowElement)) {
|
if (Objects.isNull(preFlowElement)) {
|
||||||
return Optional.empty();
|
return Optional.empty();
|
||||||
} else if (!(flowElement instanceof UserTask)) {
|
} else if (!(preFlowElement instanceof UserTask)) {
|
||||||
return getPreNode(flowElement, execution, bpmnModel);
|
return getPreNode(preFlowElement, execution, bpmnModel);
|
||||||
} else {
|
} else {
|
||||||
return Optional.of((UserTask) flowElement);
|
return Optional.of((UserTask) preFlowElement);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return Optional.empty();
|
return Optional.empty();
|
||||||
|
|||||||
@ -1,7 +1,7 @@
|
|||||||
package cn.axzo.workflow.core.deletage;
|
package cn.axzo.workflow.core.deletage;
|
||||||
|
|
||||||
import cn.axzo.workflow.common.model.request.bpmn.task.BpmnTaskDelegateAssigner;
|
import cn.axzo.workflow.common.model.request.bpmn.task.BpmnTaskDelegateAssigner;
|
||||||
import org.flowable.bpmn.model.UserTask;
|
import org.flowable.bpmn.model.FlowElement;
|
||||||
import org.flowable.engine.delegate.DelegateExecution;
|
import org.flowable.engine.delegate.DelegateExecution;
|
||||||
|
|
||||||
import java.util.Collections;
|
import java.util.Collections;
|
||||||
@ -25,12 +25,12 @@ public interface BpmnTaskAssigneeSelector {
|
|||||||
/**
|
/**
|
||||||
* 查询具体审批人
|
* 查询具体审批人
|
||||||
*/
|
*/
|
||||||
List<BpmnTaskDelegateAssigner> select(UserTask userTask, DelegateExecution execution, Boolean throwException);
|
List<BpmnTaskDelegateAssigner> select(FlowElement flowElement, DelegateExecution execution, Boolean throwException);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 审批人筛选项获取类型
|
* 审批人筛选项获取类型
|
||||||
*/
|
*/
|
||||||
default List<String> getTypes(UserTask userTask) {
|
default List<String> getTypes(FlowElement flowElement) {
|
||||||
return Collections.emptyList();
|
return Collections.emptyList();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -2,7 +2,7 @@ package cn.axzo.workflow.core.deletage;
|
|||||||
|
|
||||||
import cn.axzo.workflow.common.model.request.bpmn.task.BpmnTaskDelegateAssigner;
|
import cn.axzo.workflow.common.model.request.bpmn.task.BpmnTaskDelegateAssigner;
|
||||||
import com.alibaba.fastjson.JSON;
|
import com.alibaba.fastjson.JSON;
|
||||||
import org.flowable.bpmn.model.UserTask;
|
import org.flowable.bpmn.model.FlowElement;
|
||||||
import org.flowable.engine.delegate.DelegateExecution;
|
import org.flowable.engine.delegate.DelegateExecution;
|
||||||
import org.springframework.util.CollectionUtils;
|
import org.springframework.util.CollectionUtils;
|
||||||
|
|
||||||
@ -45,12 +45,12 @@ public class MockTaskAssigneeSelector implements BpmnTaskAssigneeSelector {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public List<BpmnTaskDelegateAssigner> select(UserTask userTask, DelegateExecution execution,
|
public List<BpmnTaskDelegateAssigner> select(FlowElement flowElement, DelegateExecution execution,
|
||||||
Boolean throwException) {
|
Boolean throwException) {
|
||||||
List<BpmnTaskDelegateAssigner> users = new ArrayList<>();
|
List<BpmnTaskDelegateAssigner> users = new ArrayList<>();
|
||||||
|
|
||||||
// 优先读取 Nacos 配置
|
// 优先读取 Nacos 配置
|
||||||
firstParseNacos(userTask, execution, users);
|
firstParseNacos(flowElement, execution, users);
|
||||||
if (!CollectionUtils.isEmpty(users)) {
|
if (!CollectionUtils.isEmpty(users)) {
|
||||||
return users;
|
return users;
|
||||||
}
|
}
|
||||||
@ -67,11 +67,12 @@ public class MockTaskAssigneeSelector implements BpmnTaskAssigneeSelector {
|
|||||||
return users;
|
return users;
|
||||||
}
|
}
|
||||||
|
|
||||||
private void firstParseNacos(UserTask userTask, DelegateExecution execution, List<BpmnTaskDelegateAssigner> users) {
|
private void firstParseNacos(FlowElement flowElement, DelegateExecution execution,
|
||||||
|
List<BpmnTaskDelegateAssigner> users) {
|
||||||
if (global) {
|
if (global) {
|
||||||
users.addAll(assigneeMap.getOrDefault(userTask.getId(), Collections.emptyList()));
|
users.addAll(assigneeMap.getOrDefault(flowElement.getId(), Collections.emptyList()));
|
||||||
} else if (Objects.equals(category, execution.getProcessDefinitionId().split(":")[0])) {
|
} else if (Objects.equals(category, execution.getProcessDefinitionId().split(":")[0])) {
|
||||||
users.addAll(assigneeMap.getOrDefault(userTask.getId(), Collections.emptyList()));
|
users.addAll(assigneeMap.getOrDefault(flowElement.getId(), Collections.emptyList()));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -1,6 +1,6 @@
|
|||||||
package cn.axzo.workflow.core.deletage.approverscope;
|
package cn.axzo.workflow.core.deletage.approverscope;
|
||||||
|
|
||||||
import org.flowable.bpmn.model.UserTask;
|
import org.flowable.bpmn.model.FlowElement;
|
||||||
import org.flowable.engine.delegate.DelegateExecution;
|
import org.flowable.engine.delegate.DelegateExecution;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -10,7 +10,7 @@ import org.flowable.engine.delegate.DelegateExecution;
|
|||||||
*/
|
*/
|
||||||
public interface ApproverScopeProcessor {
|
public interface ApproverScopeProcessor {
|
||||||
|
|
||||||
default ApproverScopeDTO build(UserTask userTask, DelegateExecution execution) {
|
default ApproverScopeDTO build(FlowElement flowElement, DelegateExecution execution) {
|
||||||
return ApproverScopeDTO.builder().build();
|
return ApproverScopeDTO.builder().build();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -4,7 +4,7 @@ import cn.axzo.workflow.common.enums.WorkspaceType;
|
|||||||
import cn.axzo.workflow.common.model.dto.CooperationOrgDTO;
|
import cn.axzo.workflow.common.model.dto.CooperationOrgDTO;
|
||||||
import cn.axzo.workflow.common.model.dto.CooperationOrgDTO.OrgScope;
|
import cn.axzo.workflow.common.model.dto.CooperationOrgDTO.OrgScope;
|
||||||
import cn.hutool.core.collection.CollUtil;
|
import cn.hutool.core.collection.CollUtil;
|
||||||
import org.flowable.bpmn.model.UserTask;
|
import org.flowable.bpmn.model.FlowElement;
|
||||||
import org.flowable.engine.delegate.DelegateExecution;
|
import org.flowable.engine.delegate.DelegateExecution;
|
||||||
import org.springframework.stereotype.Component;
|
import org.springframework.stereotype.Component;
|
||||||
import org.springframework.util.CollectionUtils;
|
import org.springframework.util.CollectionUtils;
|
||||||
@ -26,7 +26,7 @@ import static cn.axzo.workflow.common.constant.BpmnConstants.BIZ_ORG_RELATION;
|
|||||||
public class EntWorkspaceProcessor implements ApproverScopeProcessor {
|
public class EntWorkspaceProcessor implements ApproverScopeProcessor {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public ApproverScopeDTO build(UserTask userTask, DelegateExecution execution) {
|
public ApproverScopeDTO build(FlowElement flowElement, DelegateExecution execution) {
|
||||||
// 获取组织信息
|
// 获取组织信息
|
||||||
CooperationOrgDTO orgDTO = (CooperationOrgDTO) execution.getVariables().get(BIZ_ORG_RELATION);
|
CooperationOrgDTO orgDTO = (CooperationOrgDTO) execution.getVariables().get(BIZ_ORG_RELATION);
|
||||||
ApproverScopeDTO build = ApproverScopeDTO.builder().build();
|
ApproverScopeDTO build = ApproverScopeDTO.builder().build();
|
||||||
|
|||||||
@ -6,6 +6,7 @@ import cn.axzo.workflow.common.model.request.bpmn.task.BpmnTaskDelegateAssigner;
|
|||||||
import cn.axzo.workflow.core.common.utils.BpmnMetaParserHelper;
|
import cn.axzo.workflow.core.common.utils.BpmnMetaParserHelper;
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
import org.apache.commons.lang3.StringUtils;
|
import org.apache.commons.lang3.StringUtils;
|
||||||
|
import org.flowable.bpmn.model.FlowElement;
|
||||||
import org.flowable.bpmn.model.UserTask;
|
import org.flowable.bpmn.model.UserTask;
|
||||||
import org.flowable.engine.delegate.DelegateExecution;
|
import org.flowable.engine.delegate.DelegateExecution;
|
||||||
import org.springframework.stereotype.Component;
|
import org.springframework.stereotype.Component;
|
||||||
@ -26,8 +27,8 @@ import static cn.axzo.workflow.common.constant.BpmnConstants.INTERNAL_ACTIVITY_R
|
|||||||
public class PreTaskUserProcessor implements ApproverScopeProcessor {
|
public class PreTaskUserProcessor implements ApproverScopeProcessor {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public ApproverScopeDTO build(UserTask userTask, DelegateExecution execution) {
|
public ApproverScopeDTO build(FlowElement flowElement, DelegateExecution execution) {
|
||||||
Optional<UserTask> preUserTaskOpt = BpmnMetaParserHelper.getPreNode(userTask, execution, null);
|
Optional<UserTask> preUserTaskOpt = BpmnMetaParserHelper.getPreNode(flowElement, execution, null);
|
||||||
if (!preUserTaskOpt.isPresent()) {
|
if (!preUserTaskOpt.isPresent()) {
|
||||||
log.info("the current node has no pre node, skip");
|
log.info("the current node has no pre node, skip");
|
||||||
return ApproverScopeDTO.builder().build();
|
return ApproverScopeDTO.builder().build();
|
||||||
|
|||||||
@ -4,7 +4,7 @@ import cn.axzo.workflow.common.enums.WorkspaceType;
|
|||||||
import cn.axzo.workflow.common.model.dto.CooperationOrgDTO;
|
import cn.axzo.workflow.common.model.dto.CooperationOrgDTO;
|
||||||
import cn.axzo.workflow.common.model.dto.CooperationOrgDTO.OrgScope;
|
import cn.axzo.workflow.common.model.dto.CooperationOrgDTO.OrgScope;
|
||||||
import cn.hutool.core.collection.CollUtil;
|
import cn.hutool.core.collection.CollUtil;
|
||||||
import org.flowable.bpmn.model.UserTask;
|
import org.flowable.bpmn.model.FlowElement;
|
||||||
import org.flowable.engine.delegate.DelegateExecution;
|
import org.flowable.engine.delegate.DelegateExecution;
|
||||||
import org.springframework.stereotype.Component;
|
import org.springframework.stereotype.Component;
|
||||||
|
|
||||||
@ -24,7 +24,7 @@ import static cn.axzo.workflow.common.constant.BpmnConstants.BIZ_ORG_RELATION;
|
|||||||
public class ProjectWorkspaceProcessor implements ApproverScopeProcessor {
|
public class ProjectWorkspaceProcessor implements ApproverScopeProcessor {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public ApproverScopeDTO build(UserTask userTask, DelegateExecution execution) {
|
public ApproverScopeDTO build(FlowElement flowElement, DelegateExecution execution) {
|
||||||
// 发起项目部
|
// 发起项目部
|
||||||
CooperationOrgDTO orgDTO =(CooperationOrgDTO) execution.getVariables().get(BIZ_ORG_RELATION);
|
CooperationOrgDTO orgDTO =(CooperationOrgDTO) execution.getVariables().get(BIZ_ORG_RELATION);
|
||||||
if (Objects.isNull(orgDTO)) {
|
if (Objects.isNull(orgDTO)) {
|
||||||
|
|||||||
@ -4,14 +4,26 @@ import cn.axzo.workflow.common.enums.CarbonCopyObjectType;
|
|||||||
import cn.axzo.workflow.common.model.request.bpmn.BpmnCarbonCopyConf;
|
import cn.axzo.workflow.common.model.request.bpmn.BpmnCarbonCopyConf;
|
||||||
import cn.axzo.workflow.common.model.request.bpmn.task.BpmnTaskDelegateAssigner;
|
import cn.axzo.workflow.common.model.request.bpmn.task.BpmnTaskDelegateAssigner;
|
||||||
import cn.axzo.workflow.core.engine.listener.EngineExecutionStartListener;
|
import cn.axzo.workflow.core.engine.listener.EngineExecutionStartListener;
|
||||||
|
import com.alibaba.fastjson.JSON;
|
||||||
|
import com.alibaba.fastjson.JSONObject;
|
||||||
|
import com.google.common.collect.Lists;
|
||||||
|
import org.flowable.bpmn.model.CustomProperty;
|
||||||
import org.flowable.bpmn.model.ServiceTask;
|
import org.flowable.bpmn.model.ServiceTask;
|
||||||
import org.flowable.common.engine.impl.interceptor.Command;
|
import org.flowable.common.engine.impl.interceptor.Command;
|
||||||
import org.flowable.common.engine.impl.interceptor.CommandContext;
|
import org.flowable.common.engine.impl.interceptor.CommandContext;
|
||||||
|
import org.flowable.engine.delegate.DelegateExecution;
|
||||||
|
import org.flowable.engine.impl.cfg.ProcessEngineConfigurationImpl;
|
||||||
|
import org.flowable.engine.impl.util.CommandContextUtil;
|
||||||
|
import org.flowable.engine.runtime.Execution;
|
||||||
import org.springframework.util.CollectionUtils;
|
import org.springframework.util.CollectionUtils;
|
||||||
|
|
||||||
import java.io.Serializable;
|
import java.io.Serializable;
|
||||||
|
import java.util.ArrayList;
|
||||||
import java.util.Collections;
|
import java.util.Collections;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
import java.util.stream.Collectors;
|
||||||
|
|
||||||
|
import static cn.axzo.workflow.core.engine.cmd.helper.CustomTaskHelper.removeDuplicateByPersonId;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 抄送节点,计算全量被抄送人,并主动去重
|
* 抄送节点,计算全量被抄送人,并主动去重
|
||||||
@ -41,24 +53,70 @@ public class CustomCarbonCopyUserTaskAssigneeCmd implements Command<List<BpmnTas
|
|||||||
if (CollectionUtils.isEmpty(carbons)) {
|
if (CollectionUtils.isEmpty(carbons)) {
|
||||||
return Collections.emptyList();
|
return Collections.emptyList();
|
||||||
}
|
}
|
||||||
|
ProcessEngineConfigurationImpl processEngineConfiguration =
|
||||||
|
CommandContextUtil.getProcessEngineConfiguration(commandContext);
|
||||||
|
List<Execution> list =
|
||||||
|
processEngineConfiguration.getRuntimeService().createExecutionQuery().processInstanceId(processInstanceId).list();
|
||||||
|
List<BpmnTaskDelegateAssigner> assigners = new ArrayList<>();
|
||||||
carbons.forEach(carbon -> {
|
carbons.forEach(carbon -> {
|
||||||
CarbonCopyObjectType carbonCopyObjectType = carbon.getCarbonCopyObjectType();
|
CarbonCopyObjectType carbonCopyObjectType = carbon.getCarbonCopyObjectType();
|
||||||
switch (carbonCopyObjectType) {
|
switch (carbonCopyObjectType) {
|
||||||
case ent_role:
|
case ent_role:
|
||||||
case ent_identity:
|
case ent_identity:
|
||||||
case ent_position:
|
case ent_position:
|
||||||
break;
|
|
||||||
case project_role:
|
case project_role:
|
||||||
case project_identity:
|
case project_identity:
|
||||||
case project_position:
|
case project_position:
|
||||||
|
CustomProperty property = new CustomProperty();
|
||||||
|
property.setName(carbonCopyObjectType.getType());
|
||||||
|
property.setSimpleValue(carbon.getSpecifyValue());
|
||||||
|
serviceTask.setCustomProperties(Lists.newArrayList(property));
|
||||||
|
assigners.addAll(engineExecutionStartListener.approverSelect(carbonCopyObjectType.getSimpleType()
|
||||||
|
, serviceTask, (DelegateExecution) list.get(0), false));
|
||||||
|
break;
|
||||||
|
case approver_relation:
|
||||||
|
getApproverRelationUser(carbon, carbonCopyObjectType, assigners, list);
|
||||||
break;
|
break;
|
||||||
case approve_relation:
|
|
||||||
case specify_user:
|
case specify_user:
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
return Collections.emptyList();
|
return removeDuplicateByPersonId(assigners);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private void getApproverRelationUser(BpmnCarbonCopyConf carbon,
|
||||||
|
CarbonCopyObjectType carbonCopyObjectType,
|
||||||
|
List<BpmnTaskDelegateAssigner> assigners,
|
||||||
|
List<Execution> list) {
|
||||||
|
List<String> values = JSON.parseArray(carbon.getSpecifyValue(), String.class)
|
||||||
|
.stream().map(JSON::parseObject)
|
||||||
|
.map(i -> i.getString("value"))
|
||||||
|
.collect(Collectors.toList());
|
||||||
|
values.forEach(value -> {
|
||||||
|
CarbonCopyObjectType approverRelationConf = CarbonCopyObjectType.valueOfType(value);
|
||||||
|
switch (approverRelationConf) {
|
||||||
|
case initiator:
|
||||||
|
break;
|
||||||
|
case approver:
|
||||||
|
// 历史真正有同意和驳回动作的人
|
||||||
|
break;
|
||||||
|
case ent_initiator_leader:
|
||||||
|
case project_initiator_leader:
|
||||||
|
CustomProperty property = new CustomProperty();
|
||||||
|
property.setName(approverRelationConf.getType());
|
||||||
|
JSONObject jsonObject = new JSONObject();
|
||||||
|
jsonObject.put("value", value);
|
||||||
|
property.setSimpleValue(JSON.toJSONString(Lists.newArrayList(jsonObject)));
|
||||||
|
serviceTask.setCustomProperties(Lists.newArrayList(property));
|
||||||
|
assigners.addAll(engineExecutionStartListener.approverSelect(carbonCopyObjectType.getSimpleType()
|
||||||
|
, serviceTask, (DelegateExecution) list.get(0), false));
|
||||||
|
default:
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@ -14,6 +14,7 @@ import com.alibaba.fastjson.JSON;
|
|||||||
import com.google.common.collect.Lists;
|
import com.google.common.collect.Lists;
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
import org.apache.maven.artifact.versioning.DefaultArtifactVersion;
|
import org.apache.maven.artifact.versioning.DefaultArtifactVersion;
|
||||||
|
import org.flowable.bpmn.model.FlowElement;
|
||||||
import org.flowable.bpmn.model.Process;
|
import org.flowable.bpmn.model.Process;
|
||||||
import org.flowable.bpmn.model.UserTask;
|
import org.flowable.bpmn.model.UserTask;
|
||||||
import org.flowable.engine.delegate.DelegateExecution;
|
import org.flowable.engine.delegate.DelegateExecution;
|
||||||
@ -202,10 +203,11 @@ public class EngineExecutionStartListener implements ExecutionListener {
|
|||||||
* 根据审批人指定类型查询审批人
|
* 根据审批人指定类型查询审批人
|
||||||
*
|
*
|
||||||
* @param type "审批人指定"方式 {@link ApproverSpecifyEnum}
|
* @param type "审批人指定"方式 {@link ApproverSpecifyEnum}
|
||||||
* @param userTask 当前节点, 这个对象会包含配置元数据, 可以在该方法中或者基于 BpmnTaskAssigneeSelector 建一个抽象类, 做解析元数据公共方法
|
* @param flowElement 当前节点, 这个对象会包含配置元数据, 可以在该方法中或者基于 BpmnTaskAssigneeSelector 建一个抽象类, 做解析元数据公共方法
|
||||||
* @return
|
* @return
|
||||||
*/
|
*/
|
||||||
public List<BpmnTaskDelegateAssigner> approverSelect(String type, UserTask userTask, DelegateExecution execution,
|
public List<BpmnTaskDelegateAssigner> approverSelect(String type, FlowElement flowElement,
|
||||||
|
DelegateExecution execution,
|
||||||
Boolean throwException) {
|
Boolean throwException) {
|
||||||
List<BpmnTaskDelegateAssigner> assigners = new ArrayList<>();
|
List<BpmnTaskDelegateAssigner> assigners = new ArrayList<>();
|
||||||
|
|
||||||
@ -236,13 +238,13 @@ public class EngineExecutionStartListener implements ExecutionListener {
|
|||||||
log.debug("当前系统 Nacos 配置中开启了 mock: {}, 将使用 mock 方式查找审批人", mock);
|
log.debug("当前系统 Nacos 配置中开启了 mock: {}, 将使用 mock 方式查找审批人", mock);
|
||||||
}
|
}
|
||||||
assigners.addAll(new MockTaskAssigneeSelector(assigneeMap, global, category)
|
assigners.addAll(new MockTaskAssigneeSelector(assigneeMap, global, category)
|
||||||
.select(userTask, execution, throwException));
|
.select(flowElement, execution, throwException));
|
||||||
} else {
|
} else {
|
||||||
selectors.forEach(select -> {
|
selectors.forEach(select -> {
|
||||||
if (select.support(type)) {
|
if (select.support(type)) {
|
||||||
log.info("审批任务节点 Id:{}, Name: {}, 审批人指定枚举: {}", userTask.getId(), userTask.getName(), type);
|
log.info("审批任务节点 Id:{}, Name: {}, 审批人指定枚举: {}", flowElement.getId(), flowElement.getName(), type);
|
||||||
List<BpmnTaskDelegateAssigner> selected = select.select(userTask, execution, throwException);
|
List<BpmnTaskDelegateAssigner> selected = select.select(flowElement, execution, throwException);
|
||||||
log.info("审批任务节点 Id:{} 的审批人集合为: {}", userTask.getId(), JSON.toJSONString(selected));
|
log.info("审批任务节点 Id:{} 的审批人集合为: {}", flowElement.getId(), JSON.toJSONString(selected));
|
||||||
assigners.addAll(selected);
|
assigners.addAll(selected);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|||||||
@ -21,6 +21,7 @@ import org.flowable.engine.repository.Model;
|
|||||||
import org.flowable.engine.repository.ProcessDefinition;
|
import org.flowable.engine.repository.ProcessDefinition;
|
||||||
import org.flowable.engine.repository.ProcessDefinitionQuery;
|
import org.flowable.engine.repository.ProcessDefinitionQuery;
|
||||||
import org.springframework.stereotype.Service;
|
import org.springframework.stereotype.Service;
|
||||||
|
import org.springframework.transaction.annotation.Transactional;
|
||||||
import org.springframework.util.CollectionUtils;
|
import org.springframework.util.CollectionUtils;
|
||||||
import org.springframework.util.StringUtils;
|
import org.springframework.util.StringUtils;
|
||||||
|
|
||||||
@ -110,6 +111,7 @@ public class BpmnProcessDefinitionServiceImpl implements BpmnProcessDefinitionSe
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@Transactional(rollbackFor = Exception.class)
|
||||||
public void updateProcessDefinition(BpmnProcessDefinitionUpdateDTO dto) {
|
public void updateProcessDefinition(BpmnProcessDefinitionUpdateDTO dto) {
|
||||||
Model model = repositoryService.getModel(dto.getProcessModelId());
|
Model model = repositoryService.getModel(dto.getProcessModelId());
|
||||||
if (Objects.isNull(model)) {
|
if (Objects.isNull(model)) {
|
||||||
|
|||||||
@ -392,7 +392,7 @@ public class BpmnProcessInstanceServiceImpl implements BpmnProcessInstanceServic
|
|||||||
baseQuerySql.append(")");
|
baseQuerySql.append(")");
|
||||||
}
|
}
|
||||||
if (StringUtils.isNotBlank(dto.getBusinessStatus())) {
|
if (StringUtils.isNotBlank(dto.getBusinessStatus())) {
|
||||||
baseQuerySql.append(" AND RES.BUSINESS_STATUS_ = #{businessStatus}'");
|
baseQuerySql.append(" AND RES.BUSINESS_STATUS_ = #{businessStatus}");
|
||||||
query.parameter("businessStatus", dto.getBusinessStatus());
|
query.parameter("businessStatus", dto.getBusinessStatus());
|
||||||
}
|
}
|
||||||
if (Objects.nonNull(dto.getStartTime()) && Objects.nonNull(dto.getEndTime())) {
|
if (Objects.nonNull(dto.getStartTime()) && Objects.nonNull(dto.getEndTime())) {
|
||||||
|
|||||||
@ -1,6 +1,8 @@
|
|||||||
package cn.axzo.workflow.server.controller.delegate;
|
package cn.axzo.workflow.server.controller.delegate;
|
||||||
|
|
||||||
import cn.axzo.framework.domain.web.result.ApiResult;
|
import cn.axzo.framework.domain.web.result.ApiResult;
|
||||||
|
import cn.axzo.workflow.common.enums.ApproverScopeEnum;
|
||||||
|
import cn.axzo.workflow.common.enums.CarbonCopyObjectType;
|
||||||
import cn.axzo.workflow.common.model.request.bpmn.task.BpmnTaskDelegateAssigner;
|
import cn.axzo.workflow.common.model.request.bpmn.task.BpmnTaskDelegateAssigner;
|
||||||
import cn.axzo.workflow.core.common.exception.WorkflowEngineException;
|
import cn.axzo.workflow.core.common.exception.WorkflowEngineException;
|
||||||
import cn.axzo.workflow.core.common.utils.BpmnMetaParserHelper;
|
import cn.axzo.workflow.core.common.utils.BpmnMetaParserHelper;
|
||||||
@ -14,6 +16,9 @@ import cn.hutool.http.HttpStatus;
|
|||||||
import cn.hutool.json.JSONUtil;
|
import cn.hutool.json.JSONUtil;
|
||||||
import com.alibaba.fastjson.JSON;
|
import com.alibaba.fastjson.JSON;
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
|
import org.flowable.bpmn.model.CustomProperty;
|
||||||
|
import org.flowable.bpmn.model.FlowElement;
|
||||||
|
import org.flowable.bpmn.model.ServiceTask;
|
||||||
import org.flowable.bpmn.model.UserTask;
|
import org.flowable.bpmn.model.UserTask;
|
||||||
import org.flowable.engine.delegate.DelegateExecution;
|
import org.flowable.engine.delegate.DelegateExecution;
|
||||||
import org.springframework.beans.BeansException;
|
import org.springframework.beans.BeansException;
|
||||||
@ -23,9 +28,9 @@ import org.springframework.util.CollectionUtils;
|
|||||||
import org.springframework.util.StopWatch;
|
import org.springframework.util.StopWatch;
|
||||||
import org.springframework.util.StringUtils;
|
import org.springframework.util.StringUtils;
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
import java.util.Collections;
|
import java.util.Collections;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Objects;
|
|
||||||
import java.util.function.Supplier;
|
import java.util.function.Supplier;
|
||||||
import java.util.stream.Collectors;
|
import java.util.stream.Collectors;
|
||||||
|
|
||||||
@ -47,40 +52,50 @@ public abstract class AbstractBpmnTaskAssigneeSelector implements BpmnTaskAssign
|
|||||||
private EngineExecutionStartListener executionStartListener;
|
private EngineExecutionStartListener executionStartListener;
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public List<BpmnTaskDelegateAssigner> select(UserTask userTask, DelegateExecution execution,
|
public List<BpmnTaskDelegateAssigner> select(FlowElement flowElement, DelegateExecution execution,
|
||||||
Boolean throwException) {
|
Boolean throwException) {
|
||||||
List<BpmnTaskDelegateAssigner> assigners =
|
List<BpmnTaskDelegateAssigner> assigners = new ArrayList<>();
|
||||||
(List<BpmnTaskDelegateAssigner>) BpmnMetaParserHelper.getApproverScope(userTask)
|
if (flowElement instanceof UserTask) {
|
||||||
.map(approverScopeEnum -> {
|
assigners.addAll(BpmnMetaParserHelper.getApproverScope((UserTask) flowElement)
|
||||||
if (Objects.isNull(approverScopeEnum.getProcessor())) {
|
.map(approverScopeEnum -> privateSelector(approverScopeEnum, flowElement, execution,
|
||||||
return Collections.emptyList();
|
throwException))
|
||||||
}
|
.orElseGet(Collections::emptyList));
|
||||||
ApproverScopeProcessor processor =
|
} else if (flowElement instanceof ServiceTask) {
|
||||||
applicationContext.getBean(approverScopeEnum.getProcessor(),
|
List<CustomProperty> customProperties = ((ServiceTask) flowElement).getCustomProperties();
|
||||||
ApproverScopeProcessor.class);
|
if (!CollectionUtils.isEmpty(customProperties)) {
|
||||||
ApproverScopeDTO scopeDto = processor.build(userTask, execution);
|
String processor = CarbonCopyObjectType.valueOfType(customProperties.get(0).getName()).getProcessor();
|
||||||
if (CollectionUtils.isEmpty(scopeDto.getOrgScopes())
|
assigners.addAll(privateSelector(ApproverScopeEnum.valueOfProcessor(processor), flowElement,
|
||||||
&& CollectionUtils.isEmpty(scopeDto.getWorkerTeamScopes())) {
|
execution, throwException));
|
||||||
if (throwException) {
|
}
|
||||||
throw new WorkflowEngineException(ENGINE_USER_TASK_PARAM_ERROR, userTask.getId(),
|
}
|
||||||
approverScopeEnum.getDesc());
|
|
||||||
}
|
|
||||||
}
|
|
||||||
try {
|
|
||||||
return invokeService(userTask, execution, scopeDto);
|
|
||||||
} catch (Throwable t) {
|
|
||||||
if (throwException) {
|
|
||||||
throw new WorkflowEngineException(ENGINE_USER_TASK_CALC_ERROR, userTask.getId(),
|
|
||||||
this.getType(), t.getMessage());
|
|
||||||
} else {
|
|
||||||
return Collections.emptyList();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}).orElseGet(Collections::emptyList);
|
|
||||||
return assigners.stream().filter(i -> StringUtils.hasText(i.getPersonId())).collect(Collectors.toList());
|
return assigners.stream().filter(i -> StringUtils.hasText(i.getPersonId())).collect(Collectors.toList());
|
||||||
}
|
}
|
||||||
|
|
||||||
protected List<BpmnTaskDelegateAssigner> invokeService(UserTask userTask, DelegateExecution execution,
|
private List<BpmnTaskDelegateAssigner> privateSelector(ApproverScopeEnum processorType, FlowElement flowElement,
|
||||||
|
DelegateExecution execution, Boolean throwException) {
|
||||||
|
ApproverScopeProcessor processor = applicationContext.getBean(processorType.getProcessor(),
|
||||||
|
ApproverScopeProcessor.class);
|
||||||
|
ApproverScopeDTO scopeDto = processor.build(flowElement, execution);
|
||||||
|
if (CollectionUtils.isEmpty(scopeDto.getOrgScopes())
|
||||||
|
&& CollectionUtils.isEmpty(scopeDto.getWorkerTeamScopes())) {
|
||||||
|
if (throwException) {
|
||||||
|
throw new WorkflowEngineException(ENGINE_USER_TASK_PARAM_ERROR, flowElement.getId(),
|
||||||
|
processorType.getDesc());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
try {
|
||||||
|
return invokeService(flowElement, execution, scopeDto);
|
||||||
|
} catch (Throwable t) {
|
||||||
|
if (throwException) {
|
||||||
|
throw new WorkflowEngineException(ENGINE_USER_TASK_CALC_ERROR, flowElement.getId(),
|
||||||
|
this.getType(), t.getMessage());
|
||||||
|
} else {
|
||||||
|
return Collections.emptyList();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
protected List<BpmnTaskDelegateAssigner> invokeService(FlowElement flowElement, DelegateExecution execution,
|
||||||
ApproverScopeDTO scopeDto) {
|
ApproverScopeDTO scopeDto) {
|
||||||
return Collections.emptyList();
|
return Collections.emptyList();
|
||||||
}
|
}
|
||||||
@ -97,7 +112,8 @@ public abstract class AbstractBpmnTaskAssigneeSelector implements BpmnTaskAssign
|
|||||||
JSONUtil.toJsonStr(result));
|
JSONUtil.toJsonStr(result));
|
||||||
try {
|
try {
|
||||||
if (stopWatch.getTotalTimeSeconds() > executionStartListener.getApiTimeout()) {
|
if (stopWatch.getTotalTimeSeconds() > executionStartListener.getApiTimeout()) {
|
||||||
DingTalkUtils.sendDingTalkForSlowUrl(applicationContext.getEnvironment().getProperty("spring.profiles.active"),
|
DingTalkUtils.sendDingTalkForSlowUrl(applicationContext.getEnvironment()
|
||||||
|
.getProperty("spring.profiles.active"),
|
||||||
stopWatch.getTotalTimeSeconds(),
|
stopWatch.getTotalTimeSeconds(),
|
||||||
extInfo,
|
extInfo,
|
||||||
param,
|
param,
|
||||||
@ -115,14 +131,27 @@ public abstract class AbstractBpmnTaskAssigneeSelector implements BpmnTaskAssign
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public List<String> getTypes(UserTask userTask) {
|
public List<String> getTypes(FlowElement flowElement) {
|
||||||
// 默认解析格式:[{"name":"预算员", "value":"xxxx"}]
|
// 默认解析格式:[{"name":"预算员", "value":"xxxx"}]
|
||||||
try {
|
try {
|
||||||
return BpmnMetaParserHelper.getApproverSpecifyValue(userTask)
|
if (flowElement instanceof UserTask) {
|
||||||
.map(value -> JSON.parseArray(value, String.class).stream().map(JSON::parseObject)
|
return BpmnMetaParserHelper.getApproverSpecifyValue((UserTask) flowElement)
|
||||||
.map(i -> i.getString("value"))
|
.map(value -> JSON.parseArray(value, String.class).stream().map(JSON::parseObject)
|
||||||
.collect(Collectors.toList()))
|
.map(i -> i.getString("value"))
|
||||||
.orElse(Collections.emptyList());
|
.collect(Collectors.toList()))
|
||||||
|
.orElse(Collections.emptyList());
|
||||||
|
} else if (flowElement instanceof ServiceTask) {
|
||||||
|
List<CustomProperty> customProperties = ((ServiceTask) flowElement).getCustomProperties();
|
||||||
|
if (CollectionUtils.isEmpty(customProperties)) {
|
||||||
|
return Collections.emptyList();
|
||||||
|
}
|
||||||
|
return JSON.parseArray(customProperties.get(0).getSimpleValue(), String.class)
|
||||||
|
.stream().map(JSON::parseObject)
|
||||||
|
.map(i -> i.getString("value"))
|
||||||
|
.collect(Collectors.toList());
|
||||||
|
} else {
|
||||||
|
return Collections.emptyList();
|
||||||
|
}
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
throw new WorkflowEngineException(CONVERTOR_META_DATA_FORMAT_ERROR, "AbstractBpmnTaskAssigneeSelector" +
|
throw new WorkflowEngineException(CONVERTOR_META_DATA_FORMAT_ERROR, "AbstractBpmnTaskAssigneeSelector" +
|
||||||
"#getTypes", e.getMessage());
|
"#getTypes", e.getMessage());
|
||||||
|
|||||||
@ -4,6 +4,7 @@ import cn.axzo.workflow.common.enums.ApproverSpecifyEnum;
|
|||||||
import cn.axzo.workflow.common.model.request.bpmn.task.BpmnTaskDelegateAssigner;
|
import cn.axzo.workflow.common.model.request.bpmn.task.BpmnTaskDelegateAssigner;
|
||||||
import cn.axzo.workflow.core.common.utils.BpmnMetaParserHelper;
|
import cn.axzo.workflow.core.common.utils.BpmnMetaParserHelper;
|
||||||
import com.alibaba.fastjson.JSON;
|
import com.alibaba.fastjson.JSON;
|
||||||
|
import org.flowable.bpmn.model.FlowElement;
|
||||||
import org.flowable.bpmn.model.UserTask;
|
import org.flowable.bpmn.model.UserTask;
|
||||||
import org.flowable.engine.delegate.DelegateExecution;
|
import org.flowable.engine.delegate.DelegateExecution;
|
||||||
import org.springframework.stereotype.Component;
|
import org.springframework.stereotype.Component;
|
||||||
@ -30,10 +31,13 @@ public class BasedFixedPersonTaskAssigneeSelector extends AbstractBpmnTaskAssign
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public List<BpmnTaskDelegateAssigner> select(UserTask userTask, DelegateExecution execution,
|
public List<BpmnTaskDelegateAssigner> select(FlowElement flowElement, DelegateExecution execution,
|
||||||
Boolean throwException) {
|
Boolean throwException) {
|
||||||
List<BpmnTaskDelegateAssigner> assigners = new ArrayList<>();
|
List<BpmnTaskDelegateAssigner> assigners = new ArrayList<>();
|
||||||
BpmnMetaParserHelper.getApproverSpecifyValue(userTask)
|
if (!(flowElement instanceof UserTask)) {
|
||||||
|
return super.select(flowElement, execution, throwException);
|
||||||
|
}
|
||||||
|
BpmnMetaParserHelper.getApproverSpecifyValue((UserTask) flowElement)
|
||||||
.ifPresent(s -> assigners.addAll(JSON.parseArray(s, BpmnTaskDelegateAssigner.class)));
|
.ifPresent(s -> assigners.addAll(JSON.parseArray(s, BpmnTaskDelegateAssigner.class)));
|
||||||
return assigners;
|
return assigners;
|
||||||
}
|
}
|
||||||
|
|||||||
@ -10,7 +10,7 @@ import cn.hutool.core.bean.BeanUtil;
|
|||||||
import cn.hutool.core.collection.CollUtil;
|
import cn.hutool.core.collection.CollUtil;
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
import org.apache.commons.collections4.ListUtils;
|
import org.apache.commons.collections4.ListUtils;
|
||||||
import org.flowable.bpmn.model.UserTask;
|
import org.flowable.bpmn.model.FlowElement;
|
||||||
import org.flowable.engine.delegate.DelegateExecution;
|
import org.flowable.engine.delegate.DelegateExecution;
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
import org.springframework.stereotype.Component;
|
import org.springframework.stereotype.Component;
|
||||||
@ -42,13 +42,13 @@ public class BasedIdentityTaskAssigneeSelector extends AbstractBpmnTaskAssigneeS
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public List<BpmnTaskDelegateAssigner> select(UserTask userTask, DelegateExecution execution,
|
public List<BpmnTaskDelegateAssigner> select(FlowElement flowElement, DelegateExecution execution,
|
||||||
Boolean throwException) {
|
Boolean throwException) {
|
||||||
return super.select(userTask, execution, throwException);
|
return super.select(flowElement, execution, throwException);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected List<BpmnTaskDelegateAssigner> invokeService(UserTask userTask, DelegateExecution execution,
|
protected List<BpmnTaskDelegateAssigner> invokeService(FlowElement flowElement, DelegateExecution execution,
|
||||||
ApproverScopeDTO scopeDto) {
|
ApproverScopeDTO scopeDto) {
|
||||||
ListFlowTaskAssignerReq req = ListFlowTaskAssignerReq.builder()
|
ListFlowTaskAssignerReq req = ListFlowTaskAssignerReq.builder()
|
||||||
.orgScopes(ListUtils.emptyIfNull(scopeDto.getOrgScopes()).stream()
|
.orgScopes(ListUtils.emptyIfNull(scopeDto.getOrgScopes()).stream()
|
||||||
@ -57,16 +57,16 @@ public class BasedIdentityTaskAssigneeSelector extends AbstractBpmnTaskAssigneeS
|
|||||||
.workerTeamScopes(ListUtils.emptyIfNull(scopeDto.getWorkerTeamScopes()).stream()
|
.workerTeamScopes(ListUtils.emptyIfNull(scopeDto.getWorkerTeamScopes()).stream()
|
||||||
.map(w -> BeanUtil.copyProperties(w, ListFlowTaskAssignerReq.OrgScope.class))
|
.map(w -> BeanUtil.copyProperties(w, ListFlowTaskAssignerReq.OrgScope.class))
|
||||||
.collect(Collectors.toList()))
|
.collect(Collectors.toList()))
|
||||||
.identityCodes(super.getTypes(userTask))
|
.identityCodes(super.getTypes(flowElement))
|
||||||
.build();
|
.build();
|
||||||
|
|
||||||
List<FlowTaskAssignerResp> flowTaskAssigners =
|
List<FlowTaskAssignerResp> flowTaskAssigners =
|
||||||
parseApiResult(() -> flowSupportApi.listTaskAssignerByIdentity(req),
|
parseApiResult(() -> flowSupportApi.listTaskAssignerByIdentity(req),
|
||||||
"审批节点: " + userTask.getId() + ", 通过身份查询审批人",
|
"审批节点: " + flowElement.getId() + ", 通过身份查询审批人",
|
||||||
"cn.axzo.karma.client.feign.FlowSupportApi.listTaskAssignerByIdentity", req);
|
"cn.axzo.karma.client.feign.FlowSupportApi.listTaskAssignerByIdentity", req);
|
||||||
|
|
||||||
if (CollUtil.isEmpty(flowTaskAssigners)) {
|
if (CollUtil.isEmpty(flowTaskAssigners)) {
|
||||||
return super.invokeService(userTask, execution, scopeDto);
|
return super.invokeService(flowElement, execution, scopeDto);
|
||||||
}
|
}
|
||||||
return BeanUtil.copyToList(flowTaskAssigners, BpmnTaskDelegateAssigner.class);
|
return BeanUtil.copyToList(flowTaskAssigners, BpmnTaskDelegateAssigner.class);
|
||||||
}
|
}
|
||||||
|
|||||||
@ -3,7 +3,7 @@ package cn.axzo.workflow.server.controller.delegate;
|
|||||||
import cn.axzo.workflow.common.enums.ApproverSpecifyEnum;
|
import cn.axzo.workflow.common.enums.ApproverSpecifyEnum;
|
||||||
import cn.axzo.workflow.common.model.request.bpmn.task.BpmnTaskDelegateAssigner;
|
import cn.axzo.workflow.common.model.request.bpmn.task.BpmnTaskDelegateAssigner;
|
||||||
import cn.axzo.workflow.core.common.exception.WorkflowEngineException;
|
import cn.axzo.workflow.core.common.exception.WorkflowEngineException;
|
||||||
import org.flowable.bpmn.model.UserTask;
|
import org.flowable.bpmn.model.FlowElement;
|
||||||
import org.flowable.engine.delegate.DelegateExecution;
|
import org.flowable.engine.delegate.DelegateExecution;
|
||||||
import org.springframework.stereotype.Component;
|
import org.springframework.stereotype.Component;
|
||||||
|
|
||||||
@ -32,7 +32,7 @@ public class BasedInitiatorLeaderRecursionTaskAssigneeSelector extends AbstractB
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public List<BpmnTaskDelegateAssigner> select(UserTask userTask, DelegateExecution execution,
|
public List<BpmnTaskDelegateAssigner> select(FlowElement flowElement, DelegateExecution execution,
|
||||||
Boolean throwException) {
|
Boolean throwException) {
|
||||||
throw new WorkflowEngineException(ENGINE_USER_TASK_TYPE_NOT_SUPPORT);
|
throw new WorkflowEngineException(ENGINE_USER_TASK_TYPE_NOT_SUPPORT);
|
||||||
}
|
}
|
||||||
|
|||||||
@ -11,7 +11,7 @@ import cn.hutool.core.bean.BeanUtil;
|
|||||||
import cn.hutool.core.collection.CollUtil;
|
import cn.hutool.core.collection.CollUtil;
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
import org.apache.commons.collections4.ListUtils;
|
import org.apache.commons.collections4.ListUtils;
|
||||||
import org.flowable.bpmn.model.UserTask;
|
import org.flowable.bpmn.model.FlowElement;
|
||||||
import org.flowable.engine.delegate.DelegateExecution;
|
import org.flowable.engine.delegate.DelegateExecution;
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
import org.springframework.stereotype.Component;
|
import org.springframework.stereotype.Component;
|
||||||
@ -46,19 +46,19 @@ public class BasedInitiatorLeaderTaskAssigneeSelector extends AbstractBpmnTaskAs
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public List<BpmnTaskDelegateAssigner> select(UserTask userTask, DelegateExecution execution,
|
public List<BpmnTaskDelegateAssigner> select(FlowElement flowElement, DelegateExecution execution,
|
||||||
Boolean throwException) {
|
Boolean throwException) {
|
||||||
return super.select(userTask, execution, throwException);
|
return super.select(flowElement, execution, throwException);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected List<BpmnTaskDelegateAssigner> invokeService(UserTask userTask, DelegateExecution execution,
|
protected List<BpmnTaskDelegateAssigner> invokeService(FlowElement flowElement, DelegateExecution execution,
|
||||||
ApproverScopeDTO scopeDto) {
|
ApproverScopeDTO scopeDto) {
|
||||||
// 获取发起人
|
// 获取发起人
|
||||||
BpmnTaskDelegateAssigner initiator =
|
BpmnTaskDelegateAssigner initiator =
|
||||||
(BpmnTaskDelegateAssigner) execution.getVariables().getOrDefault(INTERNAL_INITIATOR, null);
|
(BpmnTaskDelegateAssigner) execution.getVariables().getOrDefault(INTERNAL_INITIATOR, null);
|
||||||
if (Objects.isNull(initiator)) {
|
if (Objects.isNull(initiator)) {
|
||||||
return super.invokeService(userTask, execution, scopeDto);
|
return super.invokeService(flowElement, execution, scopeDto);
|
||||||
}
|
}
|
||||||
FlowTaskAssignerReq req = FlowTaskAssignerReq.builder()
|
FlowTaskAssignerReq req = FlowTaskAssignerReq.builder()
|
||||||
.orgScopes(ListUtils.emptyIfNull(scopeDto.getOrgScopes()).stream()
|
.orgScopes(ListUtils.emptyIfNull(scopeDto.getOrgScopes()).stream()
|
||||||
@ -71,11 +71,11 @@ public class BasedInitiatorLeaderTaskAssigneeSelector extends AbstractBpmnTaskAs
|
|||||||
|
|
||||||
List<FlowTaskAssigner> flowTaskAssigners =
|
List<FlowTaskAssigner> flowTaskAssigners =
|
||||||
parseApiResult(() -> organizationalNodeUserApi.listFlowTaskAssigner(req),
|
parseApiResult(() -> organizationalNodeUserApi.listFlowTaskAssigner(req),
|
||||||
"审批节点: " + userTask.getId() + ", 通过发起人主管查询审批人",
|
"审批节点: " + flowElement.getId() + ", 通过发起人主管查询审批人",
|
||||||
"cn.axzo.maokai.api.client.OrganizationalNodeUserApi.listFlowTaskAssigner", req);
|
"cn.axzo.maokai.api.client.OrganizationalNodeUserApi.listFlowTaskAssigner", req);
|
||||||
|
|
||||||
if (CollUtil.isEmpty(flowTaskAssigners)) {
|
if (CollUtil.isEmpty(flowTaskAssigners)) {
|
||||||
return super.invokeService(userTask, execution, scopeDto);
|
return super.invokeService(flowElement, execution, scopeDto);
|
||||||
}
|
}
|
||||||
return BeanUtil.copyToList(flowTaskAssigners, BpmnTaskDelegateAssigner.class);
|
return BeanUtil.copyToList(flowTaskAssigners, BpmnTaskDelegateAssigner.class);
|
||||||
}
|
}
|
||||||
|
|||||||
@ -10,7 +10,7 @@ import cn.hutool.core.bean.BeanUtil;
|
|||||||
import cn.hutool.core.collection.CollUtil;
|
import cn.hutool.core.collection.CollUtil;
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
import org.apache.commons.collections4.ListUtils;
|
import org.apache.commons.collections4.ListUtils;
|
||||||
import org.flowable.bpmn.model.UserTask;
|
import org.flowable.bpmn.model.FlowElement;
|
||||||
import org.flowable.engine.delegate.DelegateExecution;
|
import org.flowable.engine.delegate.DelegateExecution;
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
import org.springframework.stereotype.Component;
|
import org.springframework.stereotype.Component;
|
||||||
@ -42,28 +42,28 @@ public class BasedPositionTaskAssigneeSelector extends AbstractBpmnTaskAssigneeS
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public List<BpmnTaskDelegateAssigner> select(UserTask userTask, DelegateExecution execution,
|
public List<BpmnTaskDelegateAssigner> select(FlowElement flowElement, DelegateExecution execution,
|
||||||
Boolean throwException) {
|
Boolean throwException) {
|
||||||
return super.select(userTask, execution, throwException);
|
return super.select(flowElement, execution, throwException);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected List<BpmnTaskDelegateAssigner> invokeService(UserTask userTask, DelegateExecution execution,
|
protected List<BpmnTaskDelegateAssigner> invokeService(FlowElement flowElement, DelegateExecution execution,
|
||||||
ApproverScopeDTO scopeDto) {
|
ApproverScopeDTO scopeDto) {
|
||||||
FlowTaskAssignerReq req = FlowTaskAssignerReq.builder()
|
FlowTaskAssignerReq req = FlowTaskAssignerReq.builder()
|
||||||
.orgScopes(ListUtils.emptyIfNull(scopeDto.getOrgScopes()).stream()
|
.orgScopes(ListUtils.emptyIfNull(scopeDto.getOrgScopes()).stream()
|
||||||
.map(e -> BeanUtil.copyProperties(e, FlowTaskAssignerReq.OrgScope.class))
|
.map(e -> BeanUtil.copyProperties(e, FlowTaskAssignerReq.OrgScope.class))
|
||||||
.collect(Collectors.toList()))
|
.collect(Collectors.toList()))
|
||||||
.jobCodes(super.getTypes(userTask))
|
.jobCodes(super.getTypes(flowElement))
|
||||||
.build();
|
.build();
|
||||||
|
|
||||||
List<FlowTaskAssigner> flowTaskAssigners =
|
List<FlowTaskAssigner> flowTaskAssigners =
|
||||||
parseApiResult(() -> organizationalNodeUserApi.listFlowTaskAssigner(req),
|
parseApiResult(() -> organizationalNodeUserApi.listFlowTaskAssigner(req),
|
||||||
"审批节点: " + userTask.getId() + ", 通过岗位查询审批人",
|
"审批节点: " + flowElement.getId() + ", 通过岗位查询审批人",
|
||||||
"cn.axzo.maokai.api.client.OrganizationalNodeUserApi.listFlowTaskAssigner", req);
|
"cn.axzo.maokai.api.client.OrganizationalNodeUserApi.listFlowTaskAssigner", req);
|
||||||
|
|
||||||
if (CollUtil.isEmpty(flowTaskAssigners)) {
|
if (CollUtil.isEmpty(flowTaskAssigners)) {
|
||||||
return super.invokeService(userTask, execution, scopeDto);
|
return super.invokeService(flowElement, execution, scopeDto);
|
||||||
}
|
}
|
||||||
return BeanUtil.copyToList(flowTaskAssigners, BpmnTaskDelegateAssigner.class);
|
return BeanUtil.copyToList(flowTaskAssigners, BpmnTaskDelegateAssigner.class);
|
||||||
}
|
}
|
||||||
|
|||||||
@ -10,7 +10,7 @@ import cn.axzo.workflow.core.deletage.approverscope.ApproverScopeDTO;
|
|||||||
import cn.hutool.core.collection.CollUtil;
|
import cn.hutool.core.collection.CollUtil;
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
import org.apache.commons.collections4.ListUtils;
|
import org.apache.commons.collections4.ListUtils;
|
||||||
import org.flowable.bpmn.model.UserTask;
|
import org.flowable.bpmn.model.FlowElement;
|
||||||
import org.flowable.engine.delegate.DelegateExecution;
|
import org.flowable.engine.delegate.DelegateExecution;
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
import org.springframework.stereotype.Component;
|
import org.springframework.stereotype.Component;
|
||||||
@ -43,13 +43,13 @@ public class BasedRoleTaskAssigneeSelector extends AbstractBpmnTaskAssigneeSelec
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public List<BpmnTaskDelegateAssigner> select(UserTask userTask, DelegateExecution execution,
|
public List<BpmnTaskDelegateAssigner> select(FlowElement flowElement, DelegateExecution execution,
|
||||||
Boolean throwException) {
|
Boolean throwException) {
|
||||||
return super.select(userTask, execution, throwException);
|
return super.select(flowElement, execution, throwException);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected List<BpmnTaskDelegateAssigner> invokeService(UserTask userTask, DelegateExecution execution,
|
protected List<BpmnTaskDelegateAssigner> invokeService(FlowElement flowElement, DelegateExecution execution,
|
||||||
ApproverScopeDTO scopeDto) {
|
ApproverScopeDTO scopeDto) {
|
||||||
Set<Long> workspaceIdSet = ListUtils.emptyIfNull(scopeDto.getOrgScopes()).stream()
|
Set<Long> workspaceIdSet = ListUtils.emptyIfNull(scopeDto.getOrgScopes()).stream()
|
||||||
.map(OrgScope::getWorkspaceId)
|
.map(OrgScope::getWorkspaceId)
|
||||||
@ -58,19 +58,19 @@ public class BasedRoleTaskAssigneeSelector extends AbstractBpmnTaskAssigneeSelec
|
|||||||
|
|
||||||
// ouIds、workspaceIds 只能传其中一个 然后代码过滤
|
// ouIds、workspaceIds 只能传其中一个 然后代码过滤
|
||||||
RoleUserParam param = RoleUserParam.builder()
|
RoleUserParam param = RoleUserParam.builder()
|
||||||
.roleIds(super.getTypes(userTask).stream().map(Long::valueOf).collect(Collectors.toSet()))
|
.roleIds(super.getTypes(flowElement).stream().map(Long::valueOf).collect(Collectors.toSet()))
|
||||||
.ouIds(ListUtils.emptyIfNull(scopeDto.getOrgScopes()).stream()
|
.ouIds(ListUtils.emptyIfNull(scopeDto.getOrgScopes()).stream()
|
||||||
.map(OrgScope::getOuId)
|
.map(OrgScope::getOuId)
|
||||||
.collect(Collectors.toList()))
|
.collect(Collectors.toList()))
|
||||||
.build();
|
.build();
|
||||||
List<SaasRoleUserDTO> flowTaskAssigners = parseApiResult(() -> tyrSaasRoleUserApi.roleUserList(param),
|
List<SaasRoleUserDTO> flowTaskAssigners = parseApiResult(() -> tyrSaasRoleUserApi.roleUserList(param),
|
||||||
"审批节点: " + userTask.getId() + ", 通过角色查询审批人",
|
"审批节点: " + flowElement.getId() + ", 通过角色查询审批人",
|
||||||
"cn.axzo.tyr.client.feign.TyrSaasRoleUserApi.roleUserList", param)
|
"cn.axzo.tyr.client.feign.TyrSaasRoleUserApi.roleUserList", param)
|
||||||
.stream().filter(f -> workspaceIdSet.contains(f.getWorkspaceId()))
|
.stream().filter(f -> workspaceIdSet.contains(f.getWorkspaceId()))
|
||||||
.collect(Collectors.toList());
|
.collect(Collectors.toList());
|
||||||
|
|
||||||
if (CollUtil.isEmpty(flowTaskAssigners)) {
|
if (CollUtil.isEmpty(flowTaskAssigners)) {
|
||||||
return super.invokeService(userTask, execution, scopeDto);
|
return super.invokeService(flowElement, execution, scopeDto);
|
||||||
}
|
}
|
||||||
return flowTaskAssigners.stream().map(u -> BpmnTaskDelegateAssigner.builder()
|
return flowTaskAssigners.stream().map(u -> BpmnTaskDelegateAssigner.builder()
|
||||||
.assignee(String.valueOf(u.getIdentityId()))
|
.assignee(String.valueOf(u.getIdentityId()))
|
||||||
|
|||||||
@ -5,7 +5,7 @@ import cn.axzo.workflow.common.model.request.bpmn.task.BpmnTaskDelegateAssigner;
|
|||||||
import com.google.common.collect.Lists;
|
import com.google.common.collect.Lists;
|
||||||
import lombok.AllArgsConstructor;
|
import lombok.AllArgsConstructor;
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
import org.flowable.bpmn.model.UserTask;
|
import org.flowable.bpmn.model.FlowElement;
|
||||||
import org.flowable.engine.RuntimeService;
|
import org.flowable.engine.RuntimeService;
|
||||||
import org.flowable.engine.delegate.DelegateExecution;
|
import org.flowable.engine.delegate.DelegateExecution;
|
||||||
import org.springframework.stereotype.Component;
|
import org.springframework.stereotype.Component;
|
||||||
@ -38,7 +38,7 @@ public class PreNodeSpecifiedTaskAssigneeSelector extends AbstractBpmnTaskAssign
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public List<BpmnTaskDelegateAssigner> select(UserTask userTask, DelegateExecution execution,
|
public List<BpmnTaskDelegateAssigner> select(FlowElement flowElement, DelegateExecution execution,
|
||||||
Boolean throwException) {
|
Boolean throwException) {
|
||||||
BpmnTaskDelegateAssigner assigner = runtimeService.getVariable(execution.getProcessInstanceId(),
|
BpmnTaskDelegateAssigner assigner = runtimeService.getVariable(execution.getProcessInstanceId(),
|
||||||
INTERNAL_SPECIFY_NEXT_APPROVER, BpmnTaskDelegateAssigner.class);
|
INTERNAL_SPECIFY_NEXT_APPROVER, BpmnTaskDelegateAssigner.class);
|
||||||
|
|||||||
@ -10,7 +10,7 @@ import cn.hutool.core.bean.BeanUtil;
|
|||||||
import cn.hutool.core.collection.CollUtil;
|
import cn.hutool.core.collection.CollUtil;
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
import org.apache.commons.collections4.ListUtils;
|
import org.apache.commons.collections4.ListUtils;
|
||||||
import org.flowable.bpmn.model.UserTask;
|
import org.flowable.bpmn.model.FlowElement;
|
||||||
import org.flowable.engine.delegate.DelegateExecution;
|
import org.flowable.engine.delegate.DelegateExecution;
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
import org.springframework.stereotype.Component;
|
import org.springframework.stereotype.Component;
|
||||||
@ -43,13 +43,13 @@ public class TransferToAdminTaskAssigneeSelector extends AbstractBpmnTaskAssigne
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public List<BpmnTaskDelegateAssigner> select(UserTask userTask, DelegateExecution execution,
|
public List<BpmnTaskDelegateAssigner> select(FlowElement flowElement, DelegateExecution execution,
|
||||||
Boolean throwException) {
|
Boolean throwException) {
|
||||||
return super.select(userTask, execution, throwException);
|
return super.select(flowElement, execution, throwException);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected List<BpmnTaskDelegateAssigner> invokeService(UserTask userTask, DelegateExecution execution,
|
protected List<BpmnTaskDelegateAssigner> invokeService(FlowElement flowElement, DelegateExecution execution,
|
||||||
ApproverScopeDTO scopeDto) {
|
ApproverScopeDTO scopeDto) {
|
||||||
ListFlowTaskAssignerReq.ListFlowTaskAssignerReqBuilder builder = ListFlowTaskAssignerReq.builder();
|
ListFlowTaskAssignerReq.ListFlowTaskAssignerReqBuilder builder = ListFlowTaskAssignerReq.builder();
|
||||||
if (!CollectionUtils.isEmpty(scopeDto.getOrgScopes())) {
|
if (!CollectionUtils.isEmpty(scopeDto.getOrgScopes())) {
|
||||||
@ -65,11 +65,11 @@ public class TransferToAdminTaskAssigneeSelector extends AbstractBpmnTaskAssigne
|
|||||||
ListFlowTaskAssignerReq req = builder.build();
|
ListFlowTaskAssignerReq req = builder.build();
|
||||||
List<FlowTaskAssignerResp> flowTaskAssigners =
|
List<FlowTaskAssignerResp> flowTaskAssigners =
|
||||||
parseApiResult(() -> flowSupportApi.listTaskAssignerAdmin(req),
|
parseApiResult(() -> flowSupportApi.listTaskAssignerAdmin(req),
|
||||||
"审批节点: " + userTask.getId() + ", 通过管理员查询审批人",
|
"审批节点: " + flowElement.getId() + ", 通过管理员查询审批人",
|
||||||
"cn.axzo.karma.client.feign.FlowSupportApi.listTaskAssignerAdmin", req);
|
"cn.axzo.karma.client.feign.FlowSupportApi.listTaskAssignerAdmin", req);
|
||||||
|
|
||||||
if (CollUtil.isEmpty(flowTaskAssigners)) {
|
if (CollUtil.isEmpty(flowTaskAssigners)) {
|
||||||
return super.invokeService(userTask, execution, scopeDto);
|
return super.invokeService(flowElement, execution, scopeDto);
|
||||||
}
|
}
|
||||||
return BeanUtil.copyToList(flowTaskAssigners, BpmnTaskDelegateAssigner.class);
|
return BeanUtil.copyToList(flowTaskAssigners, BpmnTaskDelegateAssigner.class);
|
||||||
}
|
}
|
||||||
|
|||||||
@ -150,7 +150,7 @@ public class RocketMqBpmnProcessEventListener implements BpmnProcessEventListene
|
|||||||
.setTenantId(((FlowableProcessCancelledEventImpl) event).getExecution().getTenantId())
|
.setTenantId(((FlowableProcessCancelledEventImpl) event).getExecution().getTenantId())
|
||||||
.setBusinessKey(((FlowableProcessCancelledEventImpl) event).getExecution().getProcessInstanceBusinessKey())
|
.setBusinessKey(((FlowableProcessCancelledEventImpl) event).getExecution().getProcessInstanceBusinessKey())
|
||||||
.setBusinessProcessInstanceName(((ExecutionEntityImpl) ((FlowableProcessCancelledEventImpl) event).getExecution()).getName())
|
.setBusinessProcessInstanceName(((ExecutionEntityImpl) ((FlowableProcessCancelledEventImpl) event).getExecution()).getName())
|
||||||
.setCancelReason(String.valueOf(event.getCause()));
|
.setReason(String.valueOf(event.getCause()));
|
||||||
BpmnMetaParserHelper.getNoticeConfig(mainProcess).ifPresent(dto::setNoticeConf);
|
BpmnMetaParserHelper.getNoticeConfig(mainProcess).ifPresent(dto::setNoticeConf);
|
||||||
String version = (String) runtimeService.getVariable(event.getProcessInstanceId(), WORKFLOW_ENGINE_VERSION);
|
String version = (String) runtimeService.getVariable(event.getProcessInstanceId(), WORKFLOW_ENGINE_VERSION);
|
||||||
if (Objects.isNull(version)) {
|
if (Objects.isNull(version)) {
|
||||||
@ -191,7 +191,7 @@ public class RocketMqBpmnProcessEventListener implements BpmnProcessEventListene
|
|||||||
.setTenantId(((FlowableProcessCancelledEventImpl) event).getExecution().getTenantId())
|
.setTenantId(((FlowableProcessCancelledEventImpl) event).getExecution().getTenantId())
|
||||||
.setBusinessKey(((FlowableProcessCancelledEventImpl) event).getExecution().getProcessInstanceBusinessKey())
|
.setBusinessKey(((FlowableProcessCancelledEventImpl) event).getExecution().getProcessInstanceBusinessKey())
|
||||||
.setBusinessProcessInstanceName(((ExecutionEntityImpl) ((FlowableProcessCancelledEventImpl) event).getExecution()).getName())
|
.setBusinessProcessInstanceName(((ExecutionEntityImpl) ((FlowableProcessCancelledEventImpl) event).getExecution()).getName())
|
||||||
.setCancelReason(String.valueOf(event.getCause()));
|
.setReason(String.valueOf(event.getCause()));
|
||||||
BpmnMetaParserHelper.getNoticeConfig(mainProcess).ifPresent(dto::setNoticeConf);
|
BpmnMetaParserHelper.getNoticeConfig(mainProcess).ifPresent(dto::setNoticeConf);
|
||||||
String version = (String) runtimeService.getVariable(event.getProcessInstanceId(), WORKFLOW_ENGINE_VERSION);
|
String version = (String) runtimeService.getVariable(event.getProcessInstanceId(), WORKFLOW_ENGINE_VERSION);
|
||||||
if (Objects.isNull(version)) {
|
if (Objects.isNull(version)) {
|
||||||
@ -227,7 +227,7 @@ public class RocketMqBpmnProcessEventListener implements BpmnProcessEventListene
|
|||||||
.setTenantId(((FlowableProcessCancelledEventImpl) event).getExecution().getTenantId())
|
.setTenantId(((FlowableProcessCancelledEventImpl) event).getExecution().getTenantId())
|
||||||
.setBusinessKey(((FlowableProcessCancelledEventImpl) event).getExecution().getProcessInstanceBusinessKey())
|
.setBusinessKey(((FlowableProcessCancelledEventImpl) event).getExecution().getProcessInstanceBusinessKey())
|
||||||
.setBusinessProcessInstanceName(((ExecutionEntityImpl) ((FlowableProcessCancelledEventImpl) event).getExecution()).getName())
|
.setBusinessProcessInstanceName(((ExecutionEntityImpl) ((FlowableProcessCancelledEventImpl) event).getExecution()).getName())
|
||||||
.setCancelReason(String.valueOf(event.getCause()));
|
.setReason(String.valueOf(event.getCause()));
|
||||||
BpmnMetaParserHelper.getNoticeConfig(mainProcess).ifPresent(dto::setNoticeConf);
|
BpmnMetaParserHelper.getNoticeConfig(mainProcess).ifPresent(dto::setNoticeConf);
|
||||||
String version = (String) runtimeService.getVariable(event.getProcessInstanceId(), WORKFLOW_ENGINE_VERSION);
|
String version = (String) runtimeService.getVariable(event.getProcessInstanceId(), WORKFLOW_ENGINE_VERSION);
|
||||||
if (Objects.isNull(version)) {
|
if (Objects.isNull(version)) {
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user