Commit f486790defc75e8afd7b9e852d4e7fb210b3217f
1 parent
4afdcb46
【代码评审】Bpm:更多设置-流程编码
Showing
4 changed files
with
17 additions
and
11 deletions
yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/controller/admin/definition/vo/model/BpmModelMetaInfoVO.java
| @@ -66,10 +66,10 @@ public class BpmModelMetaInfoVO { | @@ -66,10 +66,10 @@ public class BpmModelMetaInfoVO { | ||
| 66 | @Schema(description = "允许撤销审批中的申请", example = "true") | 66 | @Schema(description = "允许撤销审批中的申请", example = "true") |
| 67 | private Boolean allowCancelRunningProcess; | 67 | private Boolean allowCancelRunningProcess; |
| 68 | 68 | ||
| 69 | - @Schema(description = "流程 Id 规则", example = "{}") | 69 | + @Schema(description = "流程 ID 规则", example = "{}") |
| 70 | private ProcessIdRule processIdRule; | 70 | private ProcessIdRule processIdRule; |
| 71 | 71 | ||
| 72 | - @Schema(description = "流程 Id 规则") | 72 | + @Schema(description = "流程 ID 规则") |
| 73 | @Data | 73 | @Data |
| 74 | @Valid | 74 | @Valid |
| 75 | public static class ProcessIdRule { | 75 | public static class ProcessIdRule { |
| @@ -78,18 +78,19 @@ public class BpmModelMetaInfoVO { | @@ -78,18 +78,19 @@ public class BpmModelMetaInfoVO { | ||
| 78 | @NotNull(message = "是否启用不能为空") | 78 | @NotNull(message = "是否启用不能为空") |
| 79 | private Boolean enable; | 79 | private Boolean enable; |
| 80 | 80 | ||
| 81 | - @Schema(description = "前缀", example = "xx") | 81 | + @Schema(description = "前缀", example = "XX") |
| 82 | private String prefix; | 82 | private String prefix; |
| 83 | 83 | ||
| 84 | - @Schema(description = "前缀", example = "20250120") | ||
| 85 | - private String infix; | 84 | + @Schema(description = "中缀", example = "20250120") |
| 85 | + private String infix; // 精确到日、精确到时、精确到分、精确到秒 | ||
| 86 | 86 | ||
| 87 | - @Schema(description = "前缀", example = "xx") | 87 | + @Schema(description = "后缀", example = "YY") |
| 88 | private String postfix; | 88 | private String postfix; |
| 89 | 89 | ||
| 90 | @Schema(description = "序列长度", example = "5") | 90 | @Schema(description = "序列长度", example = "5") |
| 91 | @NotNull(message = "序列长度不能为空") | 91 | @NotNull(message = "序列长度不能为空") |
| 92 | private Integer length; | 92 | private Integer length; |
| 93 | + | ||
| 93 | } | 94 | } |
| 94 | 95 | ||
| 95 | } | 96 | } |
yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/dal/dataobject/definition/BpmProcessDefinitionInfoDO.java
| @@ -157,7 +157,7 @@ public class BpmProcessDefinitionInfoDO extends BaseDO { | @@ -157,7 +157,7 @@ public class BpmProcessDefinitionInfoDO extends BaseDO { | ||
| 157 | private Boolean allowCancelRunningProcess; | 157 | private Boolean allowCancelRunningProcess; |
| 158 | 158 | ||
| 159 | /** | 159 | /** |
| 160 | - * 流程 Id 规则 | 160 | + * 流程 ID 规则 |
| 161 | */ | 161 | */ |
| 162 | @TableField(typeHandler = JacksonTypeHandler.class) | 162 | @TableField(typeHandler = JacksonTypeHandler.class) |
| 163 | private BpmModelMetaInfoVO.ProcessIdRule processIdRule; | 163 | private BpmModelMetaInfoVO.ProcessIdRule processIdRule; |
yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/dal/redis/BpmProcessIdRedisDAO.java
| @@ -17,6 +17,7 @@ import java.time.LocalDateTime; | @@ -17,6 +17,7 @@ import java.time.LocalDateTime; | ||
| 17 | @Repository | 17 | @Repository |
| 18 | public class BpmProcessIdRedisDAO { | 18 | public class BpmProcessIdRedisDAO { |
| 19 | 19 | ||
| 20 | + // TODO @lesan:要枚举到 rediskeyconstants 哈 | ||
| 20 | public static final String BPM_PROCESS_ID_PREFIX = "BPMPID"; | 21 | public static final String BPM_PROCESS_ID_PREFIX = "BPMPID"; |
| 21 | 22 | ||
| 22 | @Resource | 23 | @Resource |
| @@ -29,6 +30,7 @@ public class BpmProcessIdRedisDAO { | @@ -29,6 +30,7 @@ public class BpmProcessIdRedisDAO { | ||
| 29 | * @return 序号 | 30 | * @return 序号 |
| 30 | */ | 31 | */ |
| 31 | public String generate(BpmModelMetaInfoVO.ProcessIdRule processIdRule) { | 32 | public String generate(BpmModelMetaInfoVO.ProcessIdRule processIdRule) { |
| 33 | + // 生成日期前缀 | ||
| 32 | String infix = ""; | 34 | String infix = ""; |
| 33 | switch (processIdRule.getInfix()) { | 35 | switch (processIdRule.getInfix()) { |
| 34 | case "DAY": | 36 | case "DAY": |
| @@ -44,6 +46,8 @@ public class BpmProcessIdRedisDAO { | @@ -44,6 +46,8 @@ public class BpmProcessIdRedisDAO { | ||
| 44 | infix = DateUtil.format(LocalDateTime.now(), "yyyyMMDDHHmmss"); | 46 | infix = DateUtil.format(LocalDateTime.now(), "yyyyMMDDHHmmss"); |
| 45 | break; | 47 | break; |
| 46 | } | 48 | } |
| 49 | + | ||
| 50 | + // 生成序号 | ||
| 47 | String noPrefix = processIdRule.getPrefix() + infix + processIdRule.getPostfix(); | 51 | String noPrefix = processIdRule.getPrefix() + infix + processIdRule.getPostfix(); |
| 48 | String key = BPM_PROCESS_ID_PREFIX + noPrefix; | 52 | String key = BPM_PROCESS_ID_PREFIX + noPrefix; |
| 49 | Long no = stringRedisTemplate.opsForValue().increment(key); | 53 | Long no = stringRedisTemplate.opsForValue().increment(key); |
yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/service/task/BpmProcessInstanceServiceImpl.java
| @@ -606,17 +606,18 @@ public class BpmProcessInstanceServiceImpl implements BpmProcessInstanceService | @@ -606,17 +606,18 @@ public class BpmProcessInstanceServiceImpl implements BpmProcessInstanceService | ||
| 606 | variables.put(BpmnVariableConstants.PROCESS_INSTANCE_VARIABLE_START_USER_SELECT_ASSIGNEES, startUserSelectAssignees); | 606 | variables.put(BpmnVariableConstants.PROCESS_INSTANCE_VARIABLE_START_USER_SELECT_ASSIGNEES, startUserSelectAssignees); |
| 607 | } | 607 | } |
| 608 | 608 | ||
| 609 | - // 3. 流程 Id | 609 | + // 3. 创建流程 |
| 610 | ProcessInstanceBuilder processInstanceBuilder = runtimeService.createProcessInstanceBuilder() | 610 | ProcessInstanceBuilder processInstanceBuilder = runtimeService.createProcessInstanceBuilder() |
| 611 | .processDefinitionId(definition.getId()) | 611 | .processDefinitionId(definition.getId()) |
| 612 | .businessKey(businessKey) | 612 | .businessKey(businessKey) |
| 613 | .name(definition.getName().trim()) | 613 | .name(definition.getName().trim()) |
| 614 | .variables(variables); | 614 | .variables(variables); |
| 615 | + // 3.1 创建流程 ID | ||
| 615 | BpmModelMetaInfoVO.ProcessIdRule processIdRule = processDefinitionInfo.getProcessIdRule(); | 616 | BpmModelMetaInfoVO.ProcessIdRule processIdRule = processDefinitionInfo.getProcessIdRule(); |
| 616 | - if (processIdRule != null && processIdRule.getEnable()) { | ||
| 617 | - String id = processIdRedisDAO.generate(processIdRule); | ||
| 618 | - processInstanceBuilder.predefineProcessInstanceId(id); | 617 | + if (processIdRule != null && Boolean.TRUE.equals(processIdRule.getEnable())) { |
| 618 | + processInstanceBuilder.predefineProcessInstanceId(processIdRedisDAO.generate(processIdRule)); | ||
| 619 | } | 619 | } |
| 620 | + // 3.2 发起流程实例 | ||
| 620 | ProcessInstance instance = processInstanceBuilder.start(); | 621 | ProcessInstance instance = processInstanceBuilder.start(); |
| 621 | return instance.getId(); | 622 | return instance.getId(); |
| 622 | } | 623 | } |