Commit 0e48458ef7e85bb6bc8ba5e663885b32164a59f8
1 parent
9698fee3
feat: 子流程-添加高亮
Showing
2 changed files
with
16 additions
and
2 deletions
yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/framework/flowable/core/util/SimpleModelUtils.java
| ... | ... | @@ -816,6 +816,8 @@ public class SimpleModelUtils { |
| 816 | 816 | if (childProcessSetting.getOutVariable() != null && !childProcessSetting.getOutVariable().isEmpty()) { |
| 817 | 817 | callActivity.setOutParameters(childProcessSetting.getOutVariable()); |
| 818 | 818 | } |
| 819 | + // 添加节点类型 | |
| 820 | + addNodeType(node.getType(), callActivity); | |
| 819 | 821 | return callActivity; |
| 820 | 822 | } |
| 821 | 823 | |
| ... | ... | @@ -865,6 +867,8 @@ public class SimpleModelUtils { |
| 865 | 867 | || nodeType == BpmSimpleModelNodeTypeEnum.APPROVE_NODE |
| 866 | 868 | || nodeType == BpmSimpleModelNodeTypeEnum.TRANSACTOR_NODE |
| 867 | 869 | || nodeType == BpmSimpleModelNodeTypeEnum.COPY_NODE |
| 870 | + || nodeType == BpmSimpleModelNodeTypeEnum.CHILD_PROCESS | |
| 871 | + || nodeType == BpmSimpleModelNodeTypeEnum.ASYNC_CHILD_PROCESS | |
| 868 | 872 | || nodeType == BpmSimpleModelNodeTypeEnum.END_NODE) { |
| 869 | 873 | // 添加元素 |
| 870 | 874 | resultNodes.add(currentNode); | ... | ... |
yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/service/task/BpmProcessInstanceServiceImpl.java
| ... | ... | @@ -320,6 +320,7 @@ public class BpmProcessInstanceServiceImpl implements BpmProcessInstanceService |
| 320 | 320 | // 遍历 tasks 列表,只处理已结束的 UserTask |
| 321 | 321 | // 为什么不通过 activities 呢?因为,加签场景下,它只存在于 tasks,没有 activities,导致如果遍历 activities |
| 322 | 322 | // 的话,它无法成为一个节点 |
| 323 | + // TODO @芋艿:子流程只有activity,这里获取不到已结束的子流程 | |
| 323 | 324 | List<HistoricTaskInstance> endTasks = filterList(tasks, task -> task.getEndTime() != null); |
| 324 | 325 | List<ActivityNode> approvalNodes = convertList(endTasks, task -> { |
| 325 | 326 | FlowElement flowNode = BpmnModelUtils.getFlowElementById(bpmnModel, task.getTaskDefinitionKey()); |
| ... | ... | @@ -390,7 +391,7 @@ public class BpmProcessInstanceServiceImpl implements BpmProcessInstanceService |
| 390 | 391 | List<HistoricTaskInstance> tasks) { |
| 391 | 392 | // 构建运行中的任务,基于 activityId 分组 |
| 392 | 393 | List<HistoricActivityInstance> runActivities = filterList(activities, activity -> activity.getEndTime() == null |
| 393 | - && (StrUtil.equalsAny(activity.getActivityType(), ELEMENT_TASK_USER))); | |
| 394 | + && (StrUtil.equalsAny(activity.getActivityType(), ELEMENT_TASK_USER, ELEMENT_CALL_ACTIVITY))); | |
| 394 | 395 | Map<String, List<HistoricActivityInstance>> runningTaskMap = convertMultiMap(runActivities, |
| 395 | 396 | HistoricActivityInstance::getActivityId); |
| 396 | 397 | |
| ... | ... | @@ -404,7 +405,7 @@ public class BpmProcessInstanceServiceImpl implements BpmProcessInstanceService |
| 404 | 405 | HistoricActivityInstance firstActivity = CollUtil.getFirst(taskActivities); // 取第一个任务,会签/或签的任务,开始时间相同 |
| 405 | 406 | ActivityNode activityNode = new ActivityNode().setId(firstActivity.getActivityId()) |
| 406 | 407 | .setName(firstActivity.getActivityName()) |
| 407 | - .setNodeType(ObjUtil.defaultIfNull(parseNodeType(flowNode), // 目的:解决“办理节点”的识别 | |
| 408 | + .setNodeType(ObjUtil.defaultIfNull(parseNodeType(flowNode), // 目的:解决“办理节点”和"子流程"的识别 | |
| 408 | 409 | BpmSimpleModelNodeTypeEnum.APPROVE_NODE.getType())) |
| 409 | 410 | .setStatus(BpmTaskStatusEnum.RUNNING.getStatus()) |
| 410 | 411 | .setCandidateStrategy(BpmnModelUtils.parseCandidateStrategy(flowNode)) |
| ... | ... | @@ -413,6 +414,9 @@ public class BpmProcessInstanceServiceImpl implements BpmProcessInstanceService |
| 413 | 414 | // 处理每个任务的 tasks 属性 |
| 414 | 415 | for (HistoricActivityInstance activity : taskActivities) { |
| 415 | 416 | HistoricTaskInstance task = taskMap.get(activity.getTaskId()); |
| 417 | + if (task == null) { | |
| 418 | + continue; | |
| 419 | + } | |
| 416 | 420 | activityNode.getTasks().add(BpmProcessInstanceConvert.INSTANCE.buildApprovalTaskInfo(task)); |
| 417 | 421 | // 加签子任务,需要过滤掉已经完成的加签子任务 |
| 418 | 422 | List<HistoricTaskInstance> childrenTasks = filterList( |
| ... | ... | @@ -503,6 +507,12 @@ public class BpmProcessInstanceServiceImpl implements BpmProcessInstanceService |
| 503 | 507 | activityNode.setCandidateUserIds(candidateUserIds); |
| 504 | 508 | return activityNode; |
| 505 | 509 | } |
| 510 | + | |
| 511 | + // 4. 子流程节点 | |
| 512 | + if (BpmSimpleModelNodeTypeEnum.CHILD_PROCESS.getType().equals(node.getType()) || | |
| 513 | + BpmSimpleModelNodeTypeEnum.ASYNC_CHILD_PROCESS.getType().equals(node.getType())) { | |
| 514 | + return activityNode; | |
| 515 | + } | |
| 506 | 516 | return null; |
| 507 | 517 | } |
| 508 | 518 | ... | ... |