diff --git a/Changelog.md b/Changelog.md index 65a6f34b4..486d24314 100644 --- a/Changelog.md +++ b/Changelog.md @@ -6,7 +6,7 @@ > - 重构审批日志的模型, 形成统一标准 > - 新增评论功能,并支持在评论中上传图片/附件和链接 > - 新增审批分类以及分类的黑白名单配置功能 -> - 新增系统终止流程的功能 +> - 新增系统中止流程的功能 > - 新增机器人节点 > - 优化 Activity 活动事件, 确保在多实例状态下, 更符合业务逻辑的执行 > - 其他小细节的功能优化 diff --git a/README.md b/README.md index fdca024cb..ef4862b77 100644 --- a/README.md +++ b/README.md @@ -76,7 +76,7 @@ act_ge_bytearray (很多元数据) | 催办 | 对于时效要求高的流程,发起人可催办提醒当前节点处理人,一般以消息通知方式提醒处理人 | | 撤销 | 发起人操作,可以撤销当前流程 | | 取回 | 当前节点上一节点处理人操作,当前节点处理人还未处理,上一节点处理人可以将其退回自己手中重新操作(取回重办) | -| 终止 | 当前节点处理人,终止当前流程 | +| 中止 | 当前节点处理人,中止当前流程 | | 抄送 | 当前节点处理人,处理完成之后将处理结果抄送给其他人,这里创建备注信息,并给所有抄送人创建子任务(待阅),子任务不影响流程流转 | | 向前加签 | 当前节点处理人,需要让其他人核对流程,其他人核对完成后,回到当前节点处理人手中,当前节点处理人处理完后进入下一节点 | | 向后加签 | 当前节点处理人,需要让其他人核对流程,其他人核对完成后,直接进入下一节点 | @@ -86,7 +86,7 @@ act_ge_bytearray (很多元数据) ## 4. 如何配置一个流程? -> 流程的运行依赖一种规则,得让引擎知道何时开始执行流程? 何时终止? 如何识别和控制每个步骤该怎么处理? 执行过程中如何走向不同的路径? +> 流程的运行依赖一种规则,得让引擎知道何时开始执行流程? 何时中止? 如何识别和控制每个步骤该怎么处理? 执行过程中如何走向不同的路径? > 比如: 我们常见的需求, 某个节点需要会签/或签, 或者某个节点需要判断条件是否执行该步骤等等. > > 以上这些规则都需要再创建流程实例时, 提前就告诉引擎, 且运行过程和步骤中是不可变的. 引擎自己也未提供相应能力. diff --git a/workflow-engine-api/src/main/java/cn/axzo/workflow/client/feign/bpmn/ProcessInstanceApi.java b/workflow-engine-api/src/main/java/cn/axzo/workflow/client/feign/bpmn/ProcessInstanceApi.java index ec90b0e55..91b466260 100644 --- a/workflow-engine-api/src/main/java/cn/axzo/workflow/client/feign/bpmn/ProcessInstanceApi.java +++ b/workflow-engine-api/src/main/java/cn/axzo/workflow/client/feign/bpmn/ProcessInstanceApi.java @@ -92,7 +92,7 @@ public interface ProcessInstanceApi { CommonResponse cancelProcessInstance(@Validated @RequestBody BpmnProcessInstanceCancelDTO dto); /** - * 终止流程实例 + * 中止流程实例 * * @param dto * @return diff --git a/workflow-engine-common/src/main/java/cn/axzo/workflow/common/constant/BpmnConstants.java b/workflow-engine-common/src/main/java/cn/axzo/workflow/common/constant/BpmnConstants.java index 6a769e539..5f801a1ce 100644 --- a/workflow-engine-common/src/main/java/cn/axzo/workflow/common/constant/BpmnConstants.java +++ b/workflow-engine-common/src/main/java/cn/axzo/workflow/common/constant/BpmnConstants.java @@ -24,7 +24,7 @@ public interface BpmnConstants { String INTERNAL_PROCESS_TYPE_REJECT = "[_INTERNAL_PROCESS_TYPE_REJECT_]"; String INTERNAL_PROCESS_TYPE_ABORT = "[_INTERNAL_PROCESS_TYPE_ABORT_]"; String INTERNAL_SPECIFY_NEXT_APPROVER = "[_INTERNAL_SPECIFY_NEXT_APPROVER_]"; - // 取消/驳回/终止时,记录原因 + // 取消/驳回/中止时,记录原因 String INTERNAL_PROCESS_DELETE_REASON = "[_INTERNAL_PROCESS_DELETE_REASON_]"; String BIZ_ORG_RELATION = "[_BIZ_ORG_RELATION_]"; String PENDING_TEMPLATE_VARIABLE = "[_PENDING_VARIABLES]"; diff --git a/workflow-engine-common/src/main/java/cn/axzo/workflow/common/enums/BpmnFlowNodeType.java b/workflow-engine-common/src/main/java/cn/axzo/workflow/common/enums/BpmnFlowNodeType.java index 047bba66d..1dc7eb85d 100644 --- a/workflow-engine-common/src/main/java/cn/axzo/workflow/common/enums/BpmnFlowNodeType.java +++ b/workflow-engine-common/src/main/java/cn/axzo/workflow/common/enums/BpmnFlowNodeType.java @@ -18,7 +18,7 @@ public enum BpmnFlowNodeType { NODE_TRIGGER("NODE_TRIGGER", "触发器节点"), NODE_ROBOT("NODE_ROBOT", "机器人节点"), NODE_COMMENT("NODE_COMMENT", "评论节点"), - NODE_ABORT("NODE_ABORT", "终止节点"), + NODE_ABORT("NODE_ABORT", "中止节点"), NODE_CANCEL("NODE_CANCEL", "撤回节点"), NODE_EMPTY("NODE_EMPTY", "空节点"), ; diff --git a/workflow-engine-common/src/main/java/cn/axzo/workflow/common/enums/BpmnProcessInstanceResultEnum.java b/workflow-engine-common/src/main/java/cn/axzo/workflow/common/enums/BpmnProcessInstanceResultEnum.java index b8a8cdfdb..81ba92e01 100644 --- a/workflow-engine-common/src/main/java/cn/axzo/workflow/common/enums/BpmnProcessInstanceResultEnum.java +++ b/workflow-engine-common/src/main/java/cn/axzo/workflow/common/enums/BpmnProcessInstanceResultEnum.java @@ -7,7 +7,7 @@ public enum BpmnProcessInstanceResultEnum { APPROVED("APPROVED", "已通过"), REJECTED("REJECTED", "已驳回"), CANCELLED("CANCELLED", "已撤回"), - ABORTED("ABORTED", "已终止"), + ABORTED("ABORTED", "已中止"), TRANSFER("TRANSFER", "已转交"), COUNTERSIGN("COUNTERSIGN", "已加签"), COMMENTED("COMMENTED", "已评论"), diff --git a/workflow-engine-common/src/main/java/cn/axzo/workflow/common/enums/ProcessInstanceEventEnum.java b/workflow-engine-common/src/main/java/cn/axzo/workflow/common/enums/ProcessInstanceEventEnum.java index c92dac490..494cda347 100644 --- a/workflow-engine-common/src/main/java/cn/axzo/workflow/common/enums/ProcessInstanceEventEnum.java +++ b/workflow-engine-common/src/main/java/cn/axzo/workflow/common/enums/ProcessInstanceEventEnum.java @@ -14,7 +14,7 @@ public enum ProcessInstanceEventEnum { PROCESS_INSTANCE_STARTED("process-instance", "process-instance-started", "流程实例已开始"), PROCESS_INSTANCE_CANCELLED("process-instance", "process-instance-cancelled", "流程实例已撤回"), PROCESS_INSTANCE_REJECTED("process-instance", "process-instance-rejected", "流程实例已驳回"), - PROCESS_INSTANCE_ABORTED("process-instance", "process-instance-aborted", "流程实例已终止"), + PROCESS_INSTANCE_ABORTED("process-instance", "process-instance-aborted", "流程实例已中止"), PROCESS_INSTANCE_COMPLETED("process-instance", "process-instance-completed", "流程实例已结束"), ; private final String module; diff --git a/workflow-engine-common/src/main/java/cn/axzo/workflow/common/model/request/bpmn/process/BpmnProcessInstanceAbortDTO.java b/workflow-engine-common/src/main/java/cn/axzo/workflow/common/model/request/bpmn/process/BpmnProcessInstanceAbortDTO.java index 560627356..c1af47000 100644 --- a/workflow-engine-common/src/main/java/cn/axzo/workflow/common/model/request/bpmn/process/BpmnProcessInstanceAbortDTO.java +++ b/workflow-engine-common/src/main/java/cn/axzo/workflow/common/model/request/bpmn/process/BpmnProcessInstanceAbortDTO.java @@ -8,12 +8,12 @@ import org.hibernate.validator.constraints.Length; import javax.validation.constraints.NotBlank; /** - * 终止流程实例的入参模型 + * 中止流程实例的入参模型 * * @author wangli * @since 2024/1/2 17:49 */ -@ApiModel("终止流程实例的入参模型") +@ApiModel("中止流程实例的入参模型") @Data public class BpmnProcessInstanceAbortDTO { @@ -32,10 +32,10 @@ public class BpmnProcessInstanceAbortDTO { private String tenantId; /** - * 终止原因 + * 中止原因 */ - @ApiModelProperty(value = "终止原因") - @NotBlank(message = "终止原因不能为空") - @Length(max = 15, message = "终止原因长度不能超过 15 个字符") + @ApiModelProperty(value = "中止原因") + @NotBlank(message = "中止原因不能为空") + @Length(max = 15, message = "中止原因长度不能超过 15 个字符") private String reason; } diff --git a/workflow-engine-common/src/main/java/cn/axzo/workflow/common/model/request/bpmn/task/BpmnTaskDelegateAssigner.java b/workflow-engine-common/src/main/java/cn/axzo/workflow/common/model/request/bpmn/task/BpmnTaskDelegateAssigner.java index f96e9f6e8..a61bf9369 100644 --- a/workflow-engine-common/src/main/java/cn/axzo/workflow/common/model/request/bpmn/task/BpmnTaskDelegateAssigner.java +++ b/workflow-engine-common/src/main/java/cn/axzo/workflow/common/model/request/bpmn/task/BpmnTaskDelegateAssigner.java @@ -1,5 +1,6 @@ package cn.axzo.workflow.common.model.request.bpmn.task; +import com.alibaba.fastjson.JSON; import com.google.common.collect.Lists; import lombok.AllArgsConstructor; import lombok.Builder; @@ -166,4 +167,9 @@ public class BpmnTaskDelegateAssigner implements Serializable { .setOuId(ouId) .setTenantId(tenantId); } + + @Override + public String toString() { + return JSON.toJSONString(this); + } } diff --git a/workflow-engine-common/src/main/java/cn/axzo/workflow/common/model/response/mq/ProcessInstanceDTO.java b/workflow-engine-common/src/main/java/cn/axzo/workflow/common/model/response/mq/ProcessInstanceDTO.java index 95d8534d2..4911cfbe7 100644 --- a/workflow-engine-common/src/main/java/cn/axzo/workflow/common/model/response/mq/ProcessInstanceDTO.java +++ b/workflow-engine-common/src/main/java/cn/axzo/workflow/common/model/response/mq/ProcessInstanceDTO.java @@ -88,7 +88,7 @@ public class ProcessInstanceDTO implements Serializable { /** * 对流程实例做否定操作时的原因 * - * 如: 终止/驳回/撤回功能 + * 如: 中止/驳回/撤回功能 */ private String reason; diff --git a/workflow-engine-core/src/main/java/cn/axzo/workflow/core/common/code/BpmnInstanceRespCode.java b/workflow-engine-core/src/main/java/cn/axzo/workflow/core/common/code/BpmnInstanceRespCode.java index dd7b5e35b..dc3094271 100644 --- a/workflow-engine-core/src/main/java/cn/axzo/workflow/core/common/code/BpmnInstanceRespCode.java +++ b/workflow-engine-core/src/main/java/cn/axzo/workflow/core/common/code/BpmnInstanceRespCode.java @@ -20,7 +20,7 @@ public enum BpmnInstanceRespCode implements IModuleRespCode { PROCESS_INSTANCE_ID_NOT_EXISTS("005", "流程实例【{}】不存在"), PROCESS_INSTANCE_CANCELLED("006", "流程实例已撤回"), PROCESS_INSTANCE_CANT_CANCEL("007", "流程实例不能撤回"), - PROCESS_INSTANCE_CANT_ABORT("008", "流程实例不能终止"), + PROCESS_INSTANCE_CANT_ABORT("008", "流程实例不能中止"), PROCESS_INSTANCE_CANT_UPDATE("009", "流程实例不能更新"), PROCESS_INSTANCE_CANT_DELETE("010", "流程实例不能删除"), PROCESS_INSTANCE_CANT_START("011", "流程实例不能启动"), diff --git a/workflow-engine-core/src/main/java/cn/axzo/workflow/core/engine/cmd/CustomAbortProcessInstanceCmd.java b/workflow-engine-core/src/main/java/cn/axzo/workflow/core/engine/cmd/CustomAbortProcessInstanceCmd.java index ab2bbf5f6..15a121697 100644 --- a/workflow-engine-core/src/main/java/cn/axzo/workflow/core/engine/cmd/CustomAbortProcessInstanceCmd.java +++ b/workflow-engine-core/src/main/java/cn/axzo/workflow/core/engine/cmd/CustomAbortProcessInstanceCmd.java @@ -39,7 +39,7 @@ import static cn.axzo.workflow.core.engine.cmd.helper.CustomTaskHelper.addCommen import static cn.axzo.workflow.core.engine.cmd.helper.CustomTaskHelper.createVirtualTask; /** - * 自定义的终止流程实例的命令实现 + * 自定义的中止流程实例的命令实现 * * @author wangli * @since 2024/1/2 18:19 @@ -96,7 +96,7 @@ public class CustomAbortProcessInstanceCmd implements Command, Serializabl // 添加自定义的节点,用于展示最后的操作 Task task = createVirtualTask(commandContext, extAxHiTaskInstService, processInstanceId, - "系统终止", NODE_ABORT.getType(), null, BpmnTaskDelegateAssigner.buildDummyAssigner("system", + "系统中止", NODE_ABORT.getType(), null, BpmnTaskDelegateAssigner.buildDummyAssigner("system", TASK_ASSIGNEE_SKIP_FLAT, "系统"), ABORTED.getStatus()); addComment(commandContext, task, COMMENT_TYPE_OPERATION_DESC, reason); runtimeService.setVariable(task.getProcessInstanceId(), TASK_COMPLETE_OPERATION_TYPE + task.getId(), ABORTED); diff --git a/workflow-engine-core/src/main/java/cn/axzo/workflow/core/listener/BpmnProcessEventListener.java b/workflow-engine-core/src/main/java/cn/axzo/workflow/core/listener/BpmnProcessEventListener.java index 9ab9a89a4..15206293a 100644 --- a/workflow-engine-core/src/main/java/cn/axzo/workflow/core/listener/BpmnProcessEventListener.java +++ b/workflow-engine-core/src/main/java/cn/axzo/workflow/core/listener/BpmnProcessEventListener.java @@ -41,7 +41,7 @@ public interface BpmnProcessEventListener extends Ordered { default void onRejected(FlowableCancelledEvent event) {} /** - * 流程实例被终止后回调 + * 流程实例被中止后回调 * * @param event */ diff --git a/workflow-engine-core/src/main/java/cn/axzo/workflow/core/service/BpmnProcessInstanceService.java b/workflow-engine-core/src/main/java/cn/axzo/workflow/core/service/BpmnProcessInstanceService.java index 63a09af39..125bf5332 100644 --- a/workflow-engine-core/src/main/java/cn/axzo/workflow/core/service/BpmnProcessInstanceService.java +++ b/workflow-engine-core/src/main/java/cn/axzo/workflow/core/service/BpmnProcessInstanceService.java @@ -42,7 +42,7 @@ public interface BpmnProcessInstanceService { Boolean cancelProcessInstance(BpmnProcessInstanceCancelDTO processInstanceCancelDTO); /** - * 终止流程实例 + * 中止流程实例 * * @param dto * @return diff --git a/workflow-engine-server/src/main/java/cn/axzo/workflow/server/controller/listener/process/RocketMqBpmnProcessEventListener.java b/workflow-engine-server/src/main/java/cn/axzo/workflow/server/controller/listener/process/RocketMqBpmnProcessEventListener.java index 0826055f3..d9ea6d5e2 100644 --- a/workflow-engine-server/src/main/java/cn/axzo/workflow/server/controller/listener/process/RocketMqBpmnProcessEventListener.java +++ b/workflow-engine-server/src/main/java/cn/axzo/workflow/server/controller/listener/process/RocketMqBpmnProcessEventListener.java @@ -210,7 +210,7 @@ public class RocketMqBpmnProcessEventListener implements BpmnProcessEventListene .setType(PROCESS_INSTANCE_ABORTED) .setCategory(deployment.getCategory()) .setProcessInstanceId(event.getProcessInstanceId()) - .setCurrentElementKey("终止流程实例无节点信息") + .setCurrentElementKey("中止流程实例无节点信息") .setProcessDefinitionId(event.getProcessDefinitionId()) .setProcessDefinitionKey(((ExecutionEntityImpl) ((FlowableProcessCancelledEventImpl) event).getExecution()).getProcessDefinitionKey()) .setProcessDefinitionVersion(((ExecutionEntityImpl) ((FlowableProcessCancelledEventImpl) event).getExecution()).getProcessDefinitionVersion()) diff --git a/workflow-engine-server/src/main/java/cn/axzo/workflow/server/controller/listener/task/AutoOperatorEvent_103_Listener.java b/workflow-engine-server/src/main/java/cn/axzo/workflow/server/controller/listener/task/AutoOperatorEvent_103_Listener.java index 5121fdd39..728771d6e 100644 --- a/workflow-engine-server/src/main/java/cn/axzo/workflow/server/controller/listener/task/AutoOperatorEvent_103_Listener.java +++ b/workflow-engine-server/src/main/java/cn/axzo/workflow/server/controller/listener/task/AutoOperatorEvent_103_Listener.java @@ -245,7 +245,7 @@ public class AutoOperatorEvent_103_Listener implements BpmnTaskEventListener, Or historyTaskList.stream().filter(i -> Objects.isNull(i.getExecutionId())) .forEach(i -> taskService.complete(i.getId())); } - // 删除流程实例,以实现驳回任务时,终止整个审批流程 + // 删除流程实例,以实现驳回任务时,中止整个审批流程 runtimeService.deleteProcessInstance(delegateTask.getProcessInstanceId(), REJECTION_AUTO_COMPLETED.getDesc()); if (log.isDebugEnabled()) { diff --git a/workflow-engine-server/src/main/java/cn/axzo/workflow/server/controller/web/bpmn/BpmnProcessInstanceController.java b/workflow-engine-server/src/main/java/cn/axzo/workflow/server/controller/web/bpmn/BpmnProcessInstanceController.java index abe5c1218..01b9b2456 100644 --- a/workflow-engine-server/src/main/java/cn/axzo/workflow/server/controller/web/bpmn/BpmnProcessInstanceController.java +++ b/workflow-engine-server/src/main/java/cn/axzo/workflow/server/controller/web/bpmn/BpmnProcessInstanceController.java @@ -126,17 +126,17 @@ public class BpmnProcessInstanceController implements ProcessInstanceApi { } /** - * 终止流程实例 + * 中止流程实例 * * @param dto * @return */ - @Operation(summary = "终止流程实例") + @Operation(summary = "中止流程实例") @Override @DeleteMapping("/abort") @RepeatSubmit public CommonResponse abortProcessInstance(@Validated @RequestBody BpmnProcessInstanceAbortDTO dto) { - log.info("终止流程实例abortProcessInstant===>>>参数:{}", JSON.toJSONString(dto)); + log.info("中止流程实例abortProcessInstant===>>>参数:{}", JSON.toJSONString(dto)); return success(bpmnProcessInstanceService.abortProcessInstance(dto)); }