需求:
客户希望在工作流中,当流程走到共享中心,由于单据的某些条件不符合,需要从共享中心退回到指定节点的指定审批人。而标准产品在V5.0.008版本并不支持共享审批驳回。当然也就不支持驳回到指定人了。
参考资料:
工作流微服务接口统一通过WorkflowServiceHelper类的,completeTask方法。其中decOptionNumber参数为节点的决策项编码。
工作流抓取驳回json参数,通过断点ApprovalPluginNew类的,getSubmitData方法。其中json参数为标准产品驳回时传递的json参数。
共享接口TaskWorkFlowUtil类的,pushWfTask方法。其中decOptionNumber参数为节点的决策项编码。
解决思路:
需求拆分:1.工作流共享审批节点,退回到指定审批节点。
2.退回到指定审批节点时,需要指定人。
大方向是从标准产品的实现中获取驳回的实现,然后移植到共享审批节点上。
共享审批节点退回实现思路:通过在共享审批节点配置审批决策项,来绑定可退回的节点。然后通过调用共享的接口TaskWorkFlowUtil.pushWfTask,或者工作流接口WorkflowServiceHelper.completeTask,传递决策项编码,便可以实现退回指定节点。
共享审批节点退回到指定人实现思路:使用工作流WorkflowServiceHelper类的completeTask方法,有一个重载的方法completeTask(Long,Long,String,String,Map)。其中最后一个参数转为json后,即为工作流抓取的json参数。
解决步骤:
断点抓取标准产品审批退回的json数据,断点ApprovalPluginNew.getSubmitData的入参即可。
在工作流的共享审批节点上,配置审批决策项。
代码中调用WorkflowServiceHelper.getApprovalDecisionOptions,或者通过服务WorkflowService service = ServiceFactory.getService(WorkflowService.class); TaskService taskService = service.getTaskService(); taskService.getApprovalDecisionOptions 的接口获取审批决策项。返回给前端用户退回时选择。
当用户选择具体的节点点击确定时。调用TaskWorkFlowUtil.pushWfTask接口用于驳回到具体节点。调用WorkflowServiceHelper.completeTask接口用于驳回到具体节点以及指定审批人。
推荐阅读