Commit da4f30082415316a4b844d08ad54287082a9aa35

Authored by YunaiV
1 parent 5c3f30e6

code review 工作流的驳回逻辑实现代码

yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/controller/admin/task/vo/task/BpmTaskBackReqVO.java
... ... @@ -10,17 +10,19 @@ import javax.validation.constraints.NotNull;
10 10  
11 11 /**
12 12 * @author kemengkai
13   - * @create 2022-05-07 08:05
  13 + * @create 2022-05-07 08:05 TODO ke:vo 类,使用 swagger 注解即可
14 14 */
15 15 @Data
16 16 @AllArgsConstructor
17 17 @NoArgsConstructor
18 18 public class BpmTaskBackReqVO {
19 19  
  20 + // TODO ke:userId 应该使用后端的,不能前端传递,不然就越权了
20 21 @ApiModelProperty(value = "用户id", required = true, example = "1")
21 22 @NotEmpty(message = "用户id不能为空")
22 23 private String userId;
23 24  
  25 + // TODO ke:procInstId、taskId、oldTaskDefKey 三个,是不是只要传递一个 taskId?字段不要存在推导关系
24 26 @ApiModelProperty(value = "流程编号id", required = true, example = "730da750-cc4f-11ec-b58e-1e429355e4a0")
25 27 @NotEmpty(message = "流程编号id不能为空")
26 28 private String procInstId;
... ...
yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/dal/mysql/task/BpmActivityMapper.java
... ... @@ -9,11 +9,12 @@ import java.util.List;
9 9  
10 10 /**
11 11 * @author kemengkai
12   - * @create 2022-05-09 09:26
  12 + * @create 2022-05-09 09:26 TODO @ke:@date 哈。ps:一般这种类,可以不用谢类注释和方法注释。因为是 dao 是通用操作,所以都是通过方法名,可以指导它的用途
13 13 */
14 14 @Mapper
15 15 public interface BpmActivityMapper extends BaseMapperX<BpmActivityDO> {
16 16  
  17 + // TODO @ke:这个方法,是不是暂时用不到呀。如果是的话,可以删除哈
17 18 /**
18 19 * 获取所有历史任务
19 20 *
... ... @@ -21,6 +22,7 @@ public interface BpmActivityMapper extends BaseMapperX&lt;BpmActivityDO&gt; {
21 22 */
22 23 List<BpmActivityDO> listAll();
23 24  
  25 + // TODO @ke:可以试试,把 activiti 的表,映射成对应的实体,然后读取下。我们尽量避免 xml 操作,因为要做多 db 类型的支持,例如说 oracle 等。通过 mybatis plus 帮助我们生成不同数据库的表操作
24 26 /**
25 27 * 获取指定流程的历史任务
26 28 *
... ...
yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/dal/mysql/task/BpmTaskExtMapper.java
... ... @@ -28,6 +28,7 @@ public interface BpmTaskExtMapper extends BaseMapperX&lt;BpmTaskExtDO&gt; {
28 28 return selectList(BpmTaskExtDO::getProcessInstanceId, processInstanceId);
29 29 }
30 30  
  31 + // TODO @ke:可以使用类上上面的 default 方法实现。然后,方法的命名上,要保持和 db 一样。因为 mapper 是数据层,不关注业务。例如说,这里,其实复用 updateByTaskId 方法即可
31 32 /**
32 33 * 任务驳回
33 34 *
... ... @@ -38,6 +39,7 @@ public interface BpmTaskExtMapper extends BaseMapperX&lt;BpmTaskExtDO&gt; {
38 39 */
39 40 Boolean backByTaskId(@Param("taskId") String taskId, @Param("reason") String reason);
40 41  
  42 + // TODO @ke:tong上哈
41 43 /**
42 44 * 逻辑删除任务
43 45 *
... ...
yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/framework/flowable/config/BpmFlowableConfiguration.java
... ... @@ -29,7 +29,7 @@ public class BpmFlowableConfiguration {
29 29 ObjectProvider<FlowableEventListener> listeners,
30 30 BpmActivityBehaviorFactory bpmActivityBehaviorFactory) {
31 31 return configuration -> {
32   - // 注册监听器,例如说 BpmActivitiEventListener
  32 + // 注册监听器,例如说 BpmActivityEventListener
33 33 configuration.setEventListeners(ListUtil.toList(listeners.iterator()));
34 34 // 设置 ActivityBehaviorFactory 实现类,用于流程任务的审核人的自定义
35 35 configuration.setActivityBehaviorFactory(bpmActivityBehaviorFactory);
... ...
yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/framework/flowable/core/behavior/BpmActivityBehaviorFactory.java
... ... @@ -39,4 +39,6 @@ public class BpmActivityBehaviorFactory extends DefaultActivityBehaviorFactory {
39 39 .setBpmTaskRuleService(bpmTaskRuleService);
40 40 }
41 41  
  42 + // TODO @ke:SequentialMultiInstanceBehavior 这个抽空也可以看看
  43 +
42 44 }
... ...
yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/service/task/BpmActivityServiceImpl.java
... ... @@ -34,8 +34,9 @@ public class BpmActivityServiceImpl implements BpmActivityService {
34 34 @Override
35 35 @TenantIgnore
36 36 public List<BpmActivityRespVO> getActivityListByProcessInstanceId(String procInstId) {
37   -// List<HistoricActivityInstance> activityList = historyService.createHistoricActivityInstanceQuery()
38   -// .processInstanceId(procInstId).list();
  37 +// List<HistoricActivityInstance> activityList = historyService.createHistoricActivityInstanceQuery()
  38 +// .processInstanceId(procInstId).list();
  39 + // TODO @ke:这个是想要过滤掉 aha.act_type_ != 'sequenceFlow' 类型么?
39 40 List<BpmActivityDO> bpmActivityDOList = bpmActivityMapper.listAllByProcInstIdAndDelete(procInstId);
40 41 return BpmActivityConvert.INSTANCE.convertList(bpmActivityDOList);
41 42 }
... ...
yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/service/task/BpmTaskServiceImpl.java
... ... @@ -188,6 +188,7 @@ public class BpmTaskServiceImpl implements BpmTaskService {
188 188  
189 189 // 拼接数据
190 190 // List<BpmTaskExtDO> tmpBpmTaskExtDOList = taskExtMapper.listByProcInstId(processInstanceId);
  191 + // TODO @ke:这个钉钉是咋处理的?得讨论下流程预测的需要程度哈。
191 192 List<BpmTaskExtDO> tmpBpmTaskExtDOList = taskExtMapper.selectListByProcessInstanceId(processInstanceId);
192 193 tmpBpmTaskExtDOList.sort(Comparator.comparing(BpmTaskExtDO::getCreateTime));
193 194 return hiTaskInstService.taskGetComment(tmpBpmTaskExtDOList, "");
... ... @@ -247,9 +248,11 @@ public class BpmTaskServiceImpl implements BpmTaskService {
247 248  
248 249 // List<HistoricActivityInstance> hisActInstList =
249 250 // historyService.createHistoricActivityInstanceQuery().processInstanceId(reqVO.getProcInstId()).list();
  251 + // TODO @ke:使用 historyService.createHistoricActivityInstanceQuery().processInstanceId(reqVO.getProcInstId()).list() 读取,会存在啥问题呀?
250 252 List<BpmActivityDO> bpmActivityDOList = bpmActivityMapper.listAllByProcInstIdAndDelete(reqVO.getProcInstId());
251 253 // List<BpmActivityDO> bpmActivityDOList = BpmTaskConvert.INSTANCE.copyList(hisActInstList, BpmActivityDO.class);
252 254 // bpmActivityDOList.forEach(bpmActivityDO -> log.info("bpmActivityDO = " + bpmActivityDO));
  255 + // TODO @ke:如果 开始->a->b->c->d->结束,从 d 驳回到 b 的话,这样会不会导致 a 也被删除呀?http://blog.wya1.com/article/636697030/details/7296 可以看看这篇文章哈。
253 256 List<String> taskIdList = bpmActivityDOList.stream().filter(
254 257 bpmActivityDO -> bpmActivityDO.getActivityId().equals(reqVO.getOldTaskDefKey())
255 258 && !bpmActivityDO.getTaskId().equals(reqVO.getTaskId())).map(BpmActivityDO::getTaskId)
... ...