diff --git a/src/main/java/neatlogic/framework/process/stephandler/core/IProcessStepHandler.java b/src/main/java/neatlogic/framework/process/stephandler/core/IProcessStepHandler.java index b13870528ed762d24cd13f781d5cc9f425ef0bbc..9c7e810aaf13d5c8f72f3a8f58163e67e1582c34 100644 --- a/src/main/java/neatlogic/framework/process/stephandler/core/IProcessStepHandler.java +++ b/src/main/java/neatlogic/framework/process/stephandler/core/IProcessStepHandler.java @@ -351,4 +351,14 @@ public interface IProcessStepHandler { default boolean isFitMobile() { return true; } + + /** + * 禁用分派处理人,默认为false,即步骤激活的时候会执行分派处理人逻辑,如果找不到处理人,则分派到异常处理人。 + * 如果设置为true,则不会执行分派处理人逻辑,直接进入激活成功,该步骤暂时没有处理人,步骤可以在某个时机调用IProcessStepHandler.assign()方法分派处理人。 + * 例如:自动处理、自动化、定时、数据转换等步骤,激活时不分派处理人,在它们各自逻辑异常时,调用assign()方法分派处理人。 + * @return + */ + default boolean disableAssign() { + return false; + } } diff --git a/src/main/java/neatlogic/framework/process/stephandler/core/ProcessStepHandlerBase.java b/src/main/java/neatlogic/framework/process/stephandler/core/ProcessStepHandlerBase.java index 8d111ecfdd52fb62823c8692012197625760f196..8b0000fbee6c024f58497faeb4a1776a02531856 100644 --- a/src/main/java/neatlogic/framework/process/stephandler/core/ProcessStepHandlerBase.java +++ b/src/main/java/neatlogic/framework/process/stephandler/core/ProcessStepHandlerBase.java @@ -250,8 +250,16 @@ public abstract class ProcessStepHandlerBase implements IProcessStepHandler { hangPostStep(currentProcessTaskStepVo); resetPostStepRelIsHit(currentProcessTaskStepVo.getProcessTaskId(), currentProcessTaskStepVo.getId()); if (this.getMode().equals(ProcessStepMode.MT)) { - /* 分配处理人 **/ - assign(currentProcessTaskStepVo); + if (!this.disableAssign()) { + /* 分配处理人 **/ + assign(currentProcessTaskStepVo); + } else { + /* 清空主处理人 **/ + ProcessTaskStepUserVo processTaskStepUserVo = new ProcessTaskStepUserVo(); + processTaskStepUserVo.setProcessTaskStepId(currentProcessTaskStepVo.getId()); + processTaskStepUserVo.setUserType(ProcessUserType.MAJOR.getValue());// 只删除主处理人 + processTaskCrossoverMapper.deleteProcessTaskStepUser(processTaskStepUserVo); + } currentProcessTaskStepVo.setIsActive(1); myActive(currentProcessTaskStepVo); @@ -1145,7 +1153,7 @@ public abstract class ProcessStepHandlerBase implements IProcessStepHandler { } //如果步骤没有开始就先自动开始 if (ProcessTaskStepStatus.PENDING.getValue().equals(processTaskStepVo.getStatus())) { - this.accept(currentProcessTaskStepVo); +// this.accept(currentProcessTaskStepVo); this.start(currentProcessTaskStepVo); } this.complete(currentProcessTaskStepVo);