Эх сурвалжийг харах

追加 nodeKey 允许节点名称非唯一

hubin 1 жил өмнө
parent
commit
7e8357348b

+ 2 - 2
src/main/java/com/aizuda/boot/modules/flw/entity/vo/PendingApprovalTaskVO.java

@@ -47,8 +47,8 @@ public class PendingApprovalTaskVO {
     @Schema(description = "当前任务名称")
     private String taskName;
 
-    @Schema(description = "任务显示名称")
-    private String displayName;
+    @Schema(description = "任务 key 唯一标识")
+    private String taskKey;
     /**
      * 任务类型 {@link com.aizuda.bpm.engine.core.enums.TaskType}
      */

+ 2 - 2
src/main/java/com/aizuda/boot/modules/flw/entity/vo/PendingClaimTaskVO.java

@@ -47,8 +47,8 @@ public class PendingClaimTaskVO {
     @Schema(description = "当前任务名称")
     private String taskName;
 
-    @Schema(description = "任务显示名称")
-    private String displayName;
+    @Schema(description = "任务 key 唯一标识")
+    private String taskKey;
     /**
      * 任务类型 {@link com.aizuda.bpm.engine.core.enums.TaskType}
      */

+ 5 - 2
src/main/java/com/aizuda/boot/modules/flw/entity/vo/ProcessTaskVO.java

@@ -24,8 +24,11 @@ public class ProcessTaskVO {
     @Schema(description = "流程名称")
     private String processName;
 
-    @Schema(description = "当前所在节点")
-    private String currentNode;
+    @Schema(description = "当前所在节点名称")
+    private String currentNodeName;
+
+    @Schema(description = "当前所在节点key")
+    private String currentNodeKey;
 
     @Schema(description = "流程实例ID")
     private Long instanceId;

+ 1 - 1
src/main/java/com/aizuda/boot/modules/flw/service/impl/FlwProcessServiceImpl.java

@@ -169,7 +169,7 @@ public class FlwProcessServiceImpl extends ServiceImpl<FlwProcessMapper, FlwProc
         ApiAssert.fail(null == dto.getCategoryId(), "流程定义分类ID不存在");
         ProcessModel processModel = FlowLongContext.fromJson(dto.getModelContent(), ProcessModel.class);
         NodeModel rootNode = processModel.getNodeConfig();
-        ApiAssert.fail(ModelHelper.checkDuplicateNodeNames(rootNode), "模型节点名称不允许重复");
+        ApiAssert.fail(ModelHelper.checkDuplicateNodeKeys(rootNode), "模型节点名称不允许重复");
         ApiAssert.fail(null == rootNode.getChildNode(), "必须存在两个以上节点");
         int checkConditionNode = ModelHelper.checkConditionNode(rootNode);
         if (checkConditionNode > 0) {

+ 2 - 2
src/main/java/com/aizuda/boot/modules/flw/service/impl/ProcessTaskServiceImpl.java

@@ -111,7 +111,7 @@ public class ProcessTaskServiceImpl implements IProcessTaskService {
         if (null != dto.getTaskId()) {
             FlwTask flwTask = this.getFlwTask(dto.getTaskId());
             ProcessModel processModel = flwExtInstance.model();
-            NodeModel nodeModel = processModel.getNode(flwTask.getTaskName());
+            NodeModel nodeModel = processModel.getNode(flwTask.getTaskKey());
             Map<String, Object> extendConfig = nodeModel.getExtendConfig();
             if (null != extendConfig) {
                 // 表单配置内容
@@ -187,7 +187,7 @@ public class ProcessTaskServiceImpl implements IProcessTaskService {
     public List<String> listPreviousNodeNames(Long taskId) {
         FlwTask flwTask = this.getFlwTask(taskId);
         ProcessModel processModel = flowLongEngine.runtimeService().getProcessModelByInstanceId(flwTask.getInstanceId());
-        return ModelHelper.getAllPreviousNodeNames(processModel.getNode(flwTask.getTaskName()));
+        return ModelHelper.getAllPreviousNodeKeys(processModel.getNode(flwTask.getTaskName()));
     }
 
     @Override

+ 5 - 5
src/main/resources/mapper/FlowlongMapper.xml

@@ -37,7 +37,7 @@
 
     <select id="selectPagePendingClaim" resultType="com.aizuda.boot.modules.flw.entity.vo.PendingClaimTaskVO">
         SELECT i.process_id,p.process_name,i.id AS instance_id,i.instance_state,i.create_by AS launch_by,i.create_time AS launch_time,
-        t."id" AS task_id,t.create_time,t.task_name,t.display_name,t.task_type,t.perform_type,t.expire_time,t.remind_time,t.remind_repeat
+        t."id" AS task_id,t.create_time,t.task_name,t.task_key,t.task_type,t.perform_type,t.expire_time,t.remind_time,t.remind_repeat
         FROM flw_task t JOIN flw_task_actor a ON t.id=a.task_id LEFT JOIN flw_his_instance i ON i.id=t.instance_id LEFT JOIN flw_process p ON i.process_id=p.id
         WHERE a.id IN (SELECT f.id FROM flw_task_actor f JOIN sys_user_role r ON r.role_id||''=f.actor_id WHERE f.actor_type=1 AND r.user_id=#{dto.userId}
         UNION ALL SELECT f.id FROM flw_task_actor f JOIN sys_user_department r ON r.department_id||''=f.actor_id WHERE f.actor_type=2 AND r.user_id=#{dto.userId})
@@ -46,28 +46,28 @@
 
     <select id="selectPagePendingApproval" resultType="com.aizuda.boot.modules.flw.entity.vo.PendingApprovalTaskVO">
         SELECT i.process_id,p.process_name,i.id AS instance_id,i.instance_state,i.create_by AS launch_by,i.create_time AS launch_time,
-        t.id AS task_id,t.create_time,t.task_name,t.display_name,t.task_type,t.perform_type,t.assignor,t.expire_time,t.remind_time,t.remind_repeat
+        t.id AS task_id,t.create_time,t.task_name,t.task_key,t.task_type,t.perform_type,t.assignor,t.expire_time,t.remind_time,t.remind_repeat
         FROM flw_task t JOIN flw_task_actor a ON t.id=a.task_id LEFT JOIN flw_his_instance i ON i.id=t.instance_id LEFT JOIN flw_process p ON i.process_id=p.id
         WHERE a.actor_type=0 AND a.actor_id=#{dto.createId}
         <include refid="sqlConditionProcessTask"></include>
     </select>
 
     <select id="selectPageMyApplication" resultType="com.aizuda.boot.modules.flw.entity.vo.ProcessTaskVO">
-        SELECT i.process_id,p.process_name,i.current_node,i.id AS instance_id,i.instance_state,i.create_id,i.create_by,i.create_time,i.expire_time,i.end_time,i.duration
+        SELECT i.process_id,p.process_name,i.current_node_name,i.current_node_key,i.id AS instance_id,i.instance_state,i.create_id,i.create_by,i.create_time,i.expire_time,i.end_time,i.duration
         FROM flw_his_instance i LEFT JOIN flw_process p ON i.process_id=p.id
         WHERE i.create_id=#{dto.createId}
         <include refid="sqlConditionProcessTask"></include>
     </select>
 
     <select id="selectPageMyReceived" resultType="com.aizuda.boot.modules.flw.entity.vo.ProcessTaskVO">
-        SELECT i.process_id,p.process_name,i.current_node,i.id AS instance_id,i.instance_state,i.create_id,i.create_by,i.create_time,i.expire_time,i.end_time,i.duration
+        SELECT i.process_id,p.process_name,i.current_node_name,i.current_node_key,i.id AS instance_id,i.instance_state,i.create_id,i.create_by,i.create_time,i.expire_time,i.end_time,i.duration
         FROM flw_his_instance i LEFT JOIN flw_process p ON i.process_id=p.id JOIN flw_his_task t ON i.id=t.instance_id JOIN flw_his_task_actor a ON t.id=a.task_id
         WHERE t.task_type=2 AND a.actor_id=#{dto.createId}
         <include refid="sqlConditionProcessTask"></include>
     </select>
 
     <select id="selectPageApproved" resultType="com.aizuda.boot.modules.flw.entity.vo.ProcessTaskVO">
-        SELECT i.process_id,p.process_name,i.current_node,i.id AS instance_id,i.instance_state,i.create_id,i.create_by,i.create_time,i.expire_time,i.end_time,i.duration
+        SELECT i.process_id,p.process_name,i.current_node_name,i.current_node_key,i.id AS instance_id,i.instance_state,i.create_id,i.create_by,i.create_time,i.expire_time,i.end_time,i.duration
         FROM flw_his_instance i LEFT JOIN flw_process p ON i.process_id=p.id
         WHERE EXISTS (SELECT 1 FROM flw_his_task c JOIN flw_his_task_actor a ON c.id=a.task_id WHERE i.id=c.instance_id AND a.actor_id=#{dto.createId})
         <include refid="sqlConditionProcessTask"></include>