feat: 子流程-添加高亮
This commit is contained in:
parent
9698fee364
commit
0e48458ef7
|
@ -816,6 +816,8 @@ public class SimpleModelUtils {
|
||||||
if (childProcessSetting.getOutVariable() != null && !childProcessSetting.getOutVariable().isEmpty()) {
|
if (childProcessSetting.getOutVariable() != null && !childProcessSetting.getOutVariable().isEmpty()) {
|
||||||
callActivity.setOutParameters(childProcessSetting.getOutVariable());
|
callActivity.setOutParameters(childProcessSetting.getOutVariable());
|
||||||
}
|
}
|
||||||
|
// 添加节点类型
|
||||||
|
addNodeType(node.getType(), callActivity);
|
||||||
return callActivity;
|
return callActivity;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -865,6 +867,8 @@ public class SimpleModelUtils {
|
||||||
|| nodeType == BpmSimpleModelNodeTypeEnum.APPROVE_NODE
|
|| nodeType == BpmSimpleModelNodeTypeEnum.APPROVE_NODE
|
||||||
|| nodeType == BpmSimpleModelNodeTypeEnum.TRANSACTOR_NODE
|
|| nodeType == BpmSimpleModelNodeTypeEnum.TRANSACTOR_NODE
|
||||||
|| nodeType == BpmSimpleModelNodeTypeEnum.COPY_NODE
|
|| nodeType == BpmSimpleModelNodeTypeEnum.COPY_NODE
|
||||||
|
|| nodeType == BpmSimpleModelNodeTypeEnum.CHILD_PROCESS
|
||||||
|
|| nodeType == BpmSimpleModelNodeTypeEnum.ASYNC_CHILD_PROCESS
|
||||||
|| nodeType == BpmSimpleModelNodeTypeEnum.END_NODE) {
|
|| nodeType == BpmSimpleModelNodeTypeEnum.END_NODE) {
|
||||||
// 添加元素
|
// 添加元素
|
||||||
resultNodes.add(currentNode);
|
resultNodes.add(currentNode);
|
||||||
|
|
|
@ -320,6 +320,7 @@ public class BpmProcessInstanceServiceImpl implements BpmProcessInstanceService
|
||||||
// 遍历 tasks 列表,只处理已结束的 UserTask
|
// 遍历 tasks 列表,只处理已结束的 UserTask
|
||||||
// 为什么不通过 activities 呢?因为,加签场景下,它只存在于 tasks,没有 activities,导致如果遍历 activities
|
// 为什么不通过 activities 呢?因为,加签场景下,它只存在于 tasks,没有 activities,导致如果遍历 activities
|
||||||
// 的话,它无法成为一个节点
|
// 的话,它无法成为一个节点
|
||||||
|
// TODO @芋艿:子流程只有activity,这里获取不到已结束的子流程
|
||||||
List<HistoricTaskInstance> endTasks = filterList(tasks, task -> task.getEndTime() != null);
|
List<HistoricTaskInstance> endTasks = filterList(tasks, task -> task.getEndTime() != null);
|
||||||
List<ActivityNode> approvalNodes = convertList(endTasks, task -> {
|
List<ActivityNode> approvalNodes = convertList(endTasks, task -> {
|
||||||
FlowElement flowNode = BpmnModelUtils.getFlowElementById(bpmnModel, task.getTaskDefinitionKey());
|
FlowElement flowNode = BpmnModelUtils.getFlowElementById(bpmnModel, task.getTaskDefinitionKey());
|
||||||
|
@ -390,7 +391,7 @@ public class BpmProcessInstanceServiceImpl implements BpmProcessInstanceService
|
||||||
List<HistoricTaskInstance> tasks) {
|
List<HistoricTaskInstance> tasks) {
|
||||||
// 构建运行中的任务,基于 activityId 分组
|
// 构建运行中的任务,基于 activityId 分组
|
||||||
List<HistoricActivityInstance> runActivities = filterList(activities, activity -> activity.getEndTime() == null
|
List<HistoricActivityInstance> runActivities = filterList(activities, activity -> activity.getEndTime() == null
|
||||||
&& (StrUtil.equalsAny(activity.getActivityType(), ELEMENT_TASK_USER)));
|
&& (StrUtil.equalsAny(activity.getActivityType(), ELEMENT_TASK_USER, ELEMENT_CALL_ACTIVITY)));
|
||||||
Map<String, List<HistoricActivityInstance>> runningTaskMap = convertMultiMap(runActivities,
|
Map<String, List<HistoricActivityInstance>> runningTaskMap = convertMultiMap(runActivities,
|
||||||
HistoricActivityInstance::getActivityId);
|
HistoricActivityInstance::getActivityId);
|
||||||
|
|
||||||
|
@ -404,7 +405,7 @@ public class BpmProcessInstanceServiceImpl implements BpmProcessInstanceService
|
||||||
HistoricActivityInstance firstActivity = CollUtil.getFirst(taskActivities); // 取第一个任务,会签/或签的任务,开始时间相同
|
HistoricActivityInstance firstActivity = CollUtil.getFirst(taskActivities); // 取第一个任务,会签/或签的任务,开始时间相同
|
||||||
ActivityNode activityNode = new ActivityNode().setId(firstActivity.getActivityId())
|
ActivityNode activityNode = new ActivityNode().setId(firstActivity.getActivityId())
|
||||||
.setName(firstActivity.getActivityName())
|
.setName(firstActivity.getActivityName())
|
||||||
.setNodeType(ObjUtil.defaultIfNull(parseNodeType(flowNode), // 目的:解决“办理节点”的识别
|
.setNodeType(ObjUtil.defaultIfNull(parseNodeType(flowNode), // 目的:解决“办理节点”和"子流程"的识别
|
||||||
BpmSimpleModelNodeTypeEnum.APPROVE_NODE.getType()))
|
BpmSimpleModelNodeTypeEnum.APPROVE_NODE.getType()))
|
||||||
.setStatus(BpmTaskStatusEnum.RUNNING.getStatus())
|
.setStatus(BpmTaskStatusEnum.RUNNING.getStatus())
|
||||||
.setCandidateStrategy(BpmnModelUtils.parseCandidateStrategy(flowNode))
|
.setCandidateStrategy(BpmnModelUtils.parseCandidateStrategy(flowNode))
|
||||||
|
@ -413,6 +414,9 @@ public class BpmProcessInstanceServiceImpl implements BpmProcessInstanceService
|
||||||
// 处理每个任务的 tasks 属性
|
// 处理每个任务的 tasks 属性
|
||||||
for (HistoricActivityInstance activity : taskActivities) {
|
for (HistoricActivityInstance activity : taskActivities) {
|
||||||
HistoricTaskInstance task = taskMap.get(activity.getTaskId());
|
HistoricTaskInstance task = taskMap.get(activity.getTaskId());
|
||||||
|
if (task == null) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
activityNode.getTasks().add(BpmProcessInstanceConvert.INSTANCE.buildApprovalTaskInfo(task));
|
activityNode.getTasks().add(BpmProcessInstanceConvert.INSTANCE.buildApprovalTaskInfo(task));
|
||||||
// 加签子任务,需要过滤掉已经完成的加签子任务
|
// 加签子任务,需要过滤掉已经完成的加签子任务
|
||||||
List<HistoricTaskInstance> childrenTasks = filterList(
|
List<HistoricTaskInstance> childrenTasks = filterList(
|
||||||
|
@ -503,6 +507,12 @@ public class BpmProcessInstanceServiceImpl implements BpmProcessInstanceService
|
||||||
activityNode.setCandidateUserIds(candidateUserIds);
|
activityNode.setCandidateUserIds(candidateUserIds);
|
||||||
return activityNode;
|
return activityNode;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// 4. 子流程节点
|
||||||
|
if (BpmSimpleModelNodeTypeEnum.CHILD_PROCESS.getType().equals(node.getType()) ||
|
||||||
|
BpmSimpleModelNodeTypeEnum.ASYNC_CHILD_PROCESS.getType().equals(node.getType())) {
|
||||||
|
return activityNode;
|
||||||
|
}
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue