一、 业务场景 当用户创建好流程后,针对每个审批节点都要设置对应的参与人(审批人)。当前工作流提供四种选择参与人的方法,如下图所示。第四种针对前三种不能满足用户要求时,用户可以自己完成插件,按照自己的想法去设置参与人


                                              

参与人1.png


二、业务插件注册 注册业务插件:业务插件分为两种,分别是JAVA插件和KS脚本。点击业务插件,进入插件注册页面,如下图所示:

业务插件注册 注册业务插件:业务插件分为两种,分别是JAVA插件和KS脚本。点击业务插件,进入插件注册页面,如下图所示:


 

参与人2.png


三、 JAVA插件使用 



1. JAVA插件注册 将完整包名输入“插件类”文本框,当流程走到该节点后会执行注册的插件。如下图



参与人3.png


2.  参与人扩展插件API-JAVA要求



3. 参与人扩展插件-JAVA插件例子


  1. @Override  

  2.     public List<Long> calcUserIds(AgentExecution execution) {  

  3.         String BusinessKey = execution.getBusinessKey();//单据的BusinessKey(业务ID)  

  4.         List<Long> currentApprover = execution.getCurrentApprover();//获取当前节点的审批人  

  5.         WorkflowElement<?> flowElement = execution.getCurrentFlowElement();//当前节点  

  6.           String id = flowElement.getId();//当前流程节点ID  

  7.           String name = flowElement.getName();//当前节点名称  

  8.           String number = flowElement.getNumber();//当前节点id  

  9.         String entityNumber = execution.getEntityNumber();//单据实体编码  

  10.         Long processDefinitionId = execution.getProcessDefinitionId();//获取流程定义ID  

  11.         Long processInstanceId = execution.getProcessInstanceId();//获取流程实例ID  

  12.         Long startUserId = execution.getStartUserId();//获取流程发起人  

  13.         Object variable = execution.getVariable("aaa");//获取流程变量,参数为String,此处为流程动态配置方案                                                                                            中"名称"的值,得到的是“默认值”的值  

  14.         return currentApprover;//返回值为 List<Long> 类型的数据。返回内容为参与人的id       

  15.     }  

  16.       



四、 KS脚本使用



  1. KS插件注册 类型选择脚本,点击下图红框弹出选择脚本页面。




    参与人4.png




2. 点击如下图红框所示,进入KDE平台


参与人5.png


3. 在KDE平台新增脚本,插件类型为“流程插件”,插入方法为“calUserIds”点击确定进入脚本编辑页面


参与人6.png


4. 参与人扩展插件-KS脚本例子


  1. /** 

  2.      * @author IERP 

  3.      * @date 2019-09-27 

  4.     */  

  5. var plugin = new WorkflowPlugin({  

  6.     calcUserIds: function(e) {  

  7.         var BusinessKey = execution.getBusinessKey(); //单据的BusinessKey(业务ID)  

  8.         var currentApprover = execution.getCurrentApprover(); //获取当前节点的审批人  

  9.         var flowElement = execution.getCurrentFlowElement(); //当前节点  

  10.               var id = flowElement.getId(); //当前流程节点ID  

  11.               var name = flowElement.getName(); //当前节点名称  

  12.               var number = flowElement.getNumber(); //当前节点id  

  13.         var entityNumber = execution.getEntityNumber(); //单据实体编码  

  14.         var processDefinitionId = execution.getProcessDefinitionId(); //获取流程定义ID  

  15.         var processInstanceId = execution.getProcessInstanceId(); //获取流程实例ID  

  16.         var startUserId = execution.getStartUserId(); //获取流程发起人  

  17.         var variable = execution.getVariable("aaa"); //获取流程变量,参数为流程动态配置方案中"名称"的值,得到的是“默认值”的值  

  18.         return currentApprover; //返回内容为参与人的id  

  19.     }  

  20. });