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