|
@@ -242,6 +242,11 @@ public class FlowProcessServiceImpl implements FlowProcessService {
|
|
|
flowResult = returnToSubmitter(context);
|
|
|
break;
|
|
|
|
|
|
+ // 作废
|
|
|
+ case CANCELLATION:
|
|
|
+ flowResult = cancellation(context);
|
|
|
+ break;
|
|
|
+
|
|
|
default:
|
|
|
throw new ServiceException("未知流程跳转类型");
|
|
|
|
|
@@ -316,7 +321,6 @@ public class FlowProcessServiceImpl implements FlowProcessService {
|
|
|
* 拒绝流程
|
|
|
*/
|
|
|
private FlowResult reject(FlowJumpContext context) {
|
|
|
-
|
|
|
// 流程已驳回
|
|
|
context.setFlowStatus(FlowStatusEnum.REJECT);
|
|
|
// 流程结束,则流程节点审批人不存在
|
|
@@ -328,7 +332,6 @@ public class FlowProcessServiceImpl implements FlowProcessService {
|
|
|
return new FlowResult(true);
|
|
|
}
|
|
|
}
|
|
|
-
|
|
|
throw new ServiceException("流程定义错误:未找到结束节点");
|
|
|
}
|
|
|
|
|
@@ -363,7 +366,6 @@ public class FlowProcessServiceImpl implements FlowProcessService {
|
|
|
* 退回到发起人
|
|
|
*/
|
|
|
private FlowResult returnToSubmitter(FlowJumpContext context) {
|
|
|
-
|
|
|
// 流程未发起
|
|
|
context.setFlowStatus(FlowStatusEnum.READY_START);
|
|
|
// 赋值发起人为节点审批人
|
|
@@ -375,11 +377,28 @@ public class FlowProcessServiceImpl implements FlowProcessService {
|
|
|
return new FlowResult(true);
|
|
|
}
|
|
|
}
|
|
|
-
|
|
|
throw new ServiceException("流程定义错误:未找到开始节点");
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
+ * 流程作废
|
|
|
+ */
|
|
|
+ private FlowResult cancellation(FlowJumpContext context) {
|
|
|
+ // 流程未发起
|
|
|
+ context.setFlowStatus(FlowStatusEnum.CANCELLATION);
|
|
|
+ // 流程作废,则流程节点审批人不存在
|
|
|
+ context.setJumpHandleUserId(null);
|
|
|
+
|
|
|
+ for (FlowDefinitionNode flowDefinitionNode : context.getFlowDefinitionNodeList()) {
|
|
|
+ if (NodeTypeEnum.END.getKey().equals(flowDefinitionNode.getNodeType())) {
|
|
|
+ context.setJumpNode(flowDefinitionNode);
|
|
|
+ return new FlowResult(true);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ throw new ServiceException("流程定义错误:未找到结束节点");
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
* 执行节点方法
|
|
|
*/
|
|
|
private void executiveNodeMethod(FlowJumpContext context) {
|
|
@@ -719,9 +738,14 @@ public class FlowProcessServiceImpl implements FlowProcessService {
|
|
|
* 跳转节点消息推送
|
|
|
*/
|
|
|
private void pushJumpMessage(FlowJumpContext context) {
|
|
|
+ HandleTypeEnum handleTypeEnum = context.getHandleType();
|
|
|
+
|
|
|
+ // 流程作废不发送消息
|
|
|
+ if (Objects.equals(handleTypeEnum, HandleTypeEnum.CANCELLATION)) {
|
|
|
+ return;
|
|
|
+ }
|
|
|
|
|
|
FlowExample flowExample = context.getFlowExample();
|
|
|
- HandleTypeEnum handleTypeEnum = context.getHandleType();
|
|
|
FlowStatusEnum flowStatusEnum = context.getFlowStatus();
|
|
|
FlowDefinitionNode jumpNode = context.getJumpNode();
|
|
|
FlowDefinitionNode currentNode = context.getCurrentNode();
|