update - 调整"终止"为"中止"

This commit is contained in:
wangli 2024-04-08 13:59:50 +08:00
parent 921d0513ca
commit 21260d382b
17 changed files with 31 additions and 25 deletions

View File

@ -6,7 +6,7 @@
> - 重构审批日志的模型, 形成统一标准
> - 新增评论功能,并支持在评论中上传图片/附件和链接
> - 新增审批分类以及分类的黑白名单配置功能
> - 新增系统止流程的功能
> - 新增系统止流程的功能
> - 新增机器人节点
> - 优化 Activity 活动事件, 确保在多实例状态下, 更符合业务逻辑的执行
> - 其他小细节的功能优化

View File

@ -76,7 +76,7 @@ act_ge_bytearray (很多元数据)
| 催办 | 对于时效要求高的流程,发起人可催办提醒当前节点处理人,一般以消息通知方式提醒处理人 |
| 撤销 | 发起人操作,可以撤销当前流程 |
| 取回 | 当前节点上一节点处理人操作,当前节点处理人还未处理,上一节点处理人可以将其退回自己手中重新操作(取回重办) |
| 终止 | 当前节点处理人,终止当前流程 |
| 中止 | 当前节点处理人,中止当前流程 |
| 抄送 | 当前节点处理人,处理完成之后将处理结果抄送给其他人,这里创建备注信息,并给所有抄送人创建子任务(待阅),子任务不影响流程流转 |
| 向前加签 | 当前节点处理人,需要让其他人核对流程,其他人核对完成后,回到当前节点处理人手中,当前节点处理人处理完后进入下一节点 |
| 向后加签 | 当前节点处理人,需要让其他人核对流程,其他人核对完成后,直接进入下一节点 |
@ -86,7 +86,7 @@ act_ge_bytearray (很多元数据)
## 4. 如何配置一个流程?
> 流程的运行依赖一种规则,得让引擎知道何时开始执行流程? 何时止? 如何识别和控制每个步骤该怎么处理? 执行过程中如何走向不同的路径?
> 流程的运行依赖一种规则,得让引擎知道何时开始执行流程? 何时止? 如何识别和控制每个步骤该怎么处理? 执行过程中如何走向不同的路径?
> 比如: 我们常见的需求, 某个节点需要会签/或签, 或者某个节点需要判断条件是否执行该步骤等等.
>
> 以上这些规则都需要再创建流程实例时, 提前就告诉引擎, 且运行过程和步骤中是不可变的. 引擎自己也未提供相应能力.

View File

@ -92,7 +92,7 @@ public interface ProcessInstanceApi {
CommonResponse<Boolean> cancelProcessInstance(@Validated @RequestBody BpmnProcessInstanceCancelDTO dto);
/**
* 止流程实例
* 止流程实例
*
* @param dto
* @return

View File

@ -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]";

View File

@ -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", "空节点"),
;

View File

@ -7,7 +7,7 @@ public enum BpmnProcessInstanceResultEnum {
APPROVED("APPROVED", "已通过"),
REJECTED("REJECTED", "已驳回"),
CANCELLED("CANCELLED", "已撤回"),
ABORTED("ABORTED", ""),
ABORTED("ABORTED", ""),
TRANSFER("TRANSFER", "已转交"),
COUNTERSIGN("COUNTERSIGN", "已加签"),
COMMENTED("COMMENTED", "已评论"),

View File

@ -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;

View File

@ -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;
}

View File

@ -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);
}
}

View File

@ -88,7 +88,7 @@ public class ProcessInstanceDTO implements Serializable {
/**
* 对流程实例做否定操作时的原因
*
* : /驳回/撤回功能
* : /驳回/撤回功能
*/
private String reason;

View File

@ -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", "流程实例不能启动"),

View File

@ -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<Void>, 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);

View File

@ -41,7 +41,7 @@ public interface BpmnProcessEventListener extends Ordered {
default void onRejected(FlowableCancelledEvent event) {}
/**
* 流程实例被止后回调
* 流程实例被止后回调
*
* @param event
*/

View File

@ -42,7 +42,7 @@ public interface BpmnProcessInstanceService {
Boolean cancelProcessInstance(BpmnProcessInstanceCancelDTO processInstanceCancelDTO);
/**
* 止流程实例
* 止流程实例
*
* @param dto
* @return

View File

@ -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())

View File

@ -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()) {

View File

@ -126,17 +126,17 @@ public class BpmnProcessInstanceController implements ProcessInstanceApi {
}
/**
* 止流程实例
* 止流程实例
*
* @param dto
* @return
*/
@Operation(summary = "止流程实例")
@Operation(summary = "止流程实例")
@Override
@DeleteMapping("/abort")
@RepeatSubmit
public CommonResponse<Boolean> abortProcessInstance(@Validated @RequestBody BpmnProcessInstanceAbortDTO dto) {
log.info("止流程实例abortProcessInstant===>>>参数:{}", JSON.toJSONString(dto));
log.info("止流程实例abortProcessInstant===>>>参数:{}", JSON.toJSONString(dto));
return success(bpmnProcessInstanceService.abortProcessInstance(dto));
}