Commit 95dbf4f8aa8a49439f6bb2f32b04036b766b6931

Authored by YunaiV
1 parent df936dee

bpm:code review 钉钉流程设计器

yudao-module-bpm/yudao-module-bpm-api/src/main/java/cn/iocoder/yudao/module/bpm/enums/definition/BpmSimpleModelNodeType.java
... ... @@ -18,14 +18,19 @@ import java.util.Objects;
18 18 public enum BpmSimpleModelNodeType implements IntArrayValuable {
19 19  
20 20 // TODO @jaosn:-1、0、1、4、-2 是前端已经定义好的么?感觉未来可以考虑搞成和 BPMN 尽量一致的单词哈;类似 usertask 用户审批;
  21 + // TODO @jason:_NODE 都删除掉哈;
21 22 START_EVENT_NODE(0, "开始节点"),
22   - APPROVE_USER_NODE(1, "审批人节点"),
23   - // 抄送人节点、对应 BPMN 的 ScriptTask. 使用ScriptTask 原因。好像 ServiceTask 自定义属性不能写入 XML
24   - SCRIPT_TASK_NODE(2, "抄送人节点"),
25   - EXCLUSIVE_GATEWAY_NODE(4, "排他网关"),
26   - PARALLEL_GATEWAY_FORK_NODE(5, "并行网关分叉节点"),
  23 + END_EVENT_NODE(-2, "结束节点"), // TODO @jaosn:挪到 START_EVENT_NODE 后;
  24 +
  25 + APPROVE_USER_NODE(1, "审批人节点"), // TODO @jaosn:是不是这里从 10 开始好点;相当于说,0-9 给开始和结束;10-19 给各种节点;20-29 给各种条件;TODO @jason:改成 USER_TASK 是不是好点呀
  26 + // 抄送人节点、对应 BPMN 的 ScriptTask. 使用ScriptTask 原因。好像 ServiceTask 自定义属性不能写入 XML;
  27 + // TODO @jason:ServiceTask 自定义 xml,有没啥报错信息;
  28 + SCRIPT_TASK_NODE(2, "抄送人节点"), // TODO @jason:是不是改成 COPY_TASK 好一点哈;
  29 +
  30 + EXCLUSIVE_GATEWAY_NODE(4, "排他网关"), // TODO @jason:是不是改成叫 条件分支?
  31 + PARALLEL_GATEWAY_FORK_NODE(5, "并行网关分叉节点"), // TODO @jason:是不是一个 并行分支 ?就可以啦?
27 32 PARALLEL_GATEWAY_JOIN_NODE(6, "并行网关聚合节点"),
28   - END_EVENT_NODE(-2, "结束节点");
  33 + ;
29 34  
30 35 public static final int[] ARRAYS = Arrays.stream(values()).mapToInt(BpmSimpleModelNodeType::getType).toArray();
31 36  
... ...
yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/framework/flowable/core/util/BpmnModelUtils.java
... ... @@ -340,7 +340,7 @@ public class BpmnModelUtils {
340 340 return userTaskList;
341 341 }
342 342  
343   - // ========== TODO 芋艿:这里得捉摸下; ==========
  343 + // ========== TODO @jason:单独出一个 SimpleModelUtils;定位上,它是 BPMN 的精简模式 ==========
344 344  
345 345 /**
346 346 * 仿钉钉流程设计模型数据结构(json) 转换成 Bpmn Model (待完善)
... ... @@ -382,6 +382,7 @@ public class BpmnModelUtils {
382 382 }
383 383 BpmSimpleModelNodeType nodeType = BpmSimpleModelNodeType.valueOf(node.getType());
384 384 Assert.notNull(nodeType, "模型节点类型不支持");
  385 + // TODO @jason:建议是,addXXX 都改成 buildXXX,构建出一个什么;然后返回之后,让这个方法添加到自己的结果里;
385 386 switch (nodeType) {
386 387 case START_EVENT_NODE:
387 388 case APPROVE_USER_NODE:
... ... @@ -488,9 +489,11 @@ public class BpmnModelUtils {
488 489 ScriptTask scriptTask = new ScriptTask();
489 490 scriptTask.setId(node.getId());
490 491 scriptTask.setName(node.getName());
  492 + // TODO @jason:建议使用 ServiceTask,通过 executionListeners 实现;
491 493 scriptTask.setScriptFormat(ScriptingEngines.DEFAULT_SCRIPTING_LANGUAGE);
492 494 scriptTask.setScript(BPMN_SIMPLE_COPY_EXECUTION_SCRIPT);
493 495 // 添加自定义属性
  496 + // TODO @jason:可以使用 ServiceTask 搞 ExtensionAttribute 么?
494 497 addExtensionAttributes(node, scriptTask);
495 498 mainProcess.addFlowElement(scriptTask);
496 499 }
... ...
yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/service/definition/BpmModelService.java
... ... @@ -53,7 +53,7 @@ public interface BpmModelService {
53 53 * @param id 编号
54 54 * @param xmlBytes BPMN XML bytes
55 55 */
56   - // TODO @芋艿:可能要关注下;
  56 + // TODO @芋艿:感觉可以不修改这个方法,而是额外加一个方法;传入 id,bpmn,json;
57 57 void saveModelBpmnXml(String id, byte[] xmlBytes);
58 58  
59 59 /**
... ...
yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/service/definition/BpmSimpleModelServiceImpl.java
... ... @@ -26,6 +26,7 @@ import static cn.iocoder.yudao.module.bpm.enums.definition.BpmSimpleModelNodeTyp
26 26 import static cn.iocoder.yudao.module.bpm.framework.flowable.core.enums.BpmnModelConstants.USER_TASK_CANDIDATE_PARAM;
27 27 import static cn.iocoder.yudao.module.bpm.framework.flowable.core.enums.BpmnModelConstants.USER_TASK_CANDIDATE_STRATEGY;
28 28  
  29 +// TODO @jason:这块可以讨论下,是不是合并成一个 BpmnModelServiceImpl
29 30 /**
30 31 * 仿钉钉流程设计 Service 实现类
31 32 *
... ...
yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/service/task/BpmProcessInstanceCopyServiceImpl.java
... ... @@ -44,9 +44,10 @@ public class BpmProcessInstanceCopyServiceImpl implements BpmProcessInstanceCopy
44 44 @Lazy // 延迟加载,避免循环依赖
45 45 private BpmProcessDefinitionService processDefinitionService;
46 46  
  47 + // TODO @芋艿:这里多加了一个 name;
47 48 @Override
48 49 public void createProcessInstanceCopy(Collection<Long> userIds, String processInstanceId, String taskId, String taskName) {
49   - // 1.1 校验任务存在 暂时去掉这个校验. 因为任务可能仿钉钉快搭的抄送节点(ScriptTask)
  50 + // 1.1 校验任务存在 暂时去掉这个校验. 因为任务可能仿钉钉快搭的抄送节点(ScriptTask) TODO jason:抄送节点,会没有来源的 taskId 么?
50 51 // Task task = taskService.getTask(taskId);
51 52 // if (ObjectUtil.isNull(task)) {
52 53 // throw exception(ErrorCodeConstants.TASK_NOT_EXISTS);
... ...
yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/service/task/BpmSimpleNodeService.java
... ... @@ -9,7 +9,7 @@ import org.springframework.stereotype.Service;
9 9 import java.util.Set;
10 10  
11 11 /**
12   - * 仿钉钉快搭各个节点 Service
  12 + * 仿钉钉快搭各个节点 Service TODO @jason:注释要有空行哈;
13 13 * @author jason
14 14 */
15 15 @Service
... ... @@ -21,14 +21,16 @@ public class BpmSimpleNodeService {
21 21 private BpmProcessInstanceCopyService processInstanceCopyService;
22 22  
23 23 /**
24   - * 仿钉钉快搭抄送
  24 + * 仿钉钉快搭抄送 TODO @jason:注释要有空行哈;
25 25 * @param execution 执行的任务(ScriptTask)
26 26 */
27 27 public Boolean copy(DelegateExecution execution) {
  28 + // TODO @芋艿:可能要考虑,系统抄送,没有 taskId 的情况。
28 29 Set<Long> userIds = taskCandidateInvoker.calculateUsers(execution);
29 30 FlowElement currentFlowElement = execution.getCurrentFlowElement();
30 31 processInstanceCopyService.createProcessInstanceCopy(userIds, execution.getProcessInstanceId(),
31 32 currentFlowElement.getId(), currentFlowElement.getName());
32 33 return Boolean.TRUE;
33 34 }
  35 +
34 36 }
... ...