Commit 6b0520d7795796d61054ec31c3c53edacd50218f

Authored by jason
1 parent dd0bba47

仿钉钉流程设计- 流程抄送增加流程活动 Id 字段

sql/mysql/bpm_update.sql 0 → 100644
  1 +-- ----------------------------
  2 +-- 流程抄送表新加流程活动编号
  3 +-- ----------------------------
  4 +ALTER TABLE `pro-test`.`bpm_process_instance_copy`
  5 + ADD COLUMN `activity_id` varchar(64) NULL COMMENT '流程活动编号' AFTER `category`,
  6 + MODIFY COLUMN `task_id` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT '' COMMENT '任务编号' AFTER `category`;
0 7 \ No newline at end of file
... ...
yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/controller/admin/task/BpmProcessInstanceController.java
... ... @@ -157,8 +157,7 @@ public class BpmProcessInstanceController {
157 157 return success(true);
158 158 }
159 159  
160   - // TODO @jason:有个 get-form-fields-permission
161   - @GetMapping("/form-fields-permission")
  160 + @GetMapping("/get-form-fields-permission")
162 161 @Operation(summary = "获得流程实例表单字段权限", description = "在【我的流程】菜单中,进行调用")
163 162 @PreAuthorize("@ss.hasPermission('bpm:process-instance:query')")
164 163 public CommonResult<Map<String, String>> getProcessInstanceFormFieldsPermission(
... ...
yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/dal/dataobject/task/BpmProcessInstanceCopyDO.java
... ... @@ -48,10 +48,16 @@ public class BpmProcessInstanceCopyDO extends BaseDO {
48 48 * 冗余 ProcessInstance 的 category 字段
49 49 */
50 50 private String category;
51   -
  51 + /**
  52 + * 流程活动编号
  53 + * <p/>
  54 + * 对应 BPMN XML 节点 Id, 用于查询抄送节点的表单字段权限
  55 + * 这里冗余的原因。如果是钉钉易搭的抄送节点 (ServiceTask) 。 使用 taskId 可能查不到对应的 activityId
  56 + */
  57 + private String activityId;
52 58 /**
53 59 * 任务主键
54   - *
  60 + * // @芋艿 这个 taskId 是不是可以去掉了
55 61 * 关联 Task 的 id 属性
56 62 */
57 63 private String taskId;
... ...
yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/framework/flowable/core/listener/BpmCopyTaskDelegate.java
... ... @@ -41,7 +41,7 @@ public class BpmCopyTaskDelegate implements JavaDelegate {
41 41 // 2. 执行抄送
42 42 FlowElement currentFlowElement = execution.getCurrentFlowElement();
43 43 processInstanceCopyService.createProcessInstanceCopy(userIds, execution.getProcessInstanceId(),
44   - currentFlowElement.getId(), currentFlowElement.getName());
  44 + currentFlowElement.getId(), null, currentFlowElement.getName());
45 45 }
46 46  
47 47 }
... ...
yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/service/task/BpmProcessInstanceCopyService.java
... ... @@ -26,10 +26,12 @@ public interface BpmProcessInstanceCopyService {
26 26 *
27 27 * @param userIds 抄送的用户编号
28 28 * @param processInstanceId 流程编号
  29 + * @param activityId 流程活动编号 id (对应 BPMN XML 节点 Id)
  30 + * // TODO 芋艿这个 taskId 是不是可以不要了
29 31 * @param taskId 任务编号
30 32 * @param taskName 任务名称
31 33 */
32   - void createProcessInstanceCopy(Collection<Long> userIds, String processInstanceId, String taskId, String taskName);
  34 + void createProcessInstanceCopy(Collection<Long> userIds, String processInstanceId, String activityId, String taskId, String taskName);
33 35  
34 36 /**
35 37 * 获得抄送的流程的分页
... ...
yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/service/task/BpmProcessInstanceCopyServiceImpl.java
... ... @@ -53,11 +53,11 @@ public class BpmProcessInstanceCopyServiceImpl implements BpmProcessInstanceCopy
53 53 throw exception(ErrorCodeConstants.TASK_NOT_EXISTS);
54 54 }
55 55 String processInstanceId = task.getProcessInstanceId();
56   - createProcessInstanceCopy(userIds, processInstanceId, task.getId(), task.getName());
  56 + createProcessInstanceCopy(userIds, processInstanceId, task.getTaskDefinitionKey(), task.getId(), task.getName());
57 57 }
58 58  
59 59 @Override
60   - public void createProcessInstanceCopy(Collection<Long> userIds, String processInstanceId, String taskId, String taskName) {
  60 + public void createProcessInstanceCopy(Collection<Long> userIds, String processInstanceId, String activityId, String taskId, String taskName) {
61 61 // 1.1 校验流程实例存在
62 62 ProcessInstance processInstance = processInstanceService.getProcessInstance(processInstanceId);
63 63 if (processInstance == null) {
... ... @@ -74,7 +74,8 @@ public class BpmProcessInstanceCopyServiceImpl implements BpmProcessInstanceCopy
74 74 List<BpmProcessInstanceCopyDO> copyList = convertList(userIds, userId -> new BpmProcessInstanceCopyDO()
75 75 .setUserId(userId).setStartUserId(Long.valueOf(processInstance.getStartUserId()))
76 76 .setProcessInstanceId(processInstanceId).setProcessInstanceName(processInstance.getName())
77   - .setCategory(processDefinition.getCategory()).setTaskId(taskId).setTaskName(taskName));
  77 + .setCategory(processDefinition.getCategory()).setActivityId(activityId)
  78 + .setTaskId(taskId).setTaskName(taskName));
78 79 processInstanceCopyMapper.insertBatch(copyList);
79 80 }
80 81  
... ...