工作流插件开发——条件规则外部接口插件原创
金蝶云社区-刘子洋
刘子洋
8人赞赏了该文章 3,117次浏览 未经作者许可,禁止转载编辑于2024年08月07日 15:30:54
summary-icon摘要由AI智能服务提供

本文介绍了在流程管理系统中,用户可以通过设置条件和注册业务插件来自定义审批流程。设置条件的方法包括规则设置和外部接口,后者允许用户自定义JAVA或KS脚本插件。详细说明了JAVA插件的注册和使用方式,包括插件注册方法、接口实现要求及示例代码。对于KS脚本插件,也介绍了注册和编写脚本的方法及示例代码,说明了如何获取流程执行中的各项数据并返回审批结果。


一、 业务场景 

 平台考虑到用户在使用流程中可能会设置条件,所以在对应位置开放该权限。设置条件的方法有两种:规则设置和外部接口。当规则设置不能满足用户要求时,用户可以使用外部接口,自己定义插件,完成对应的功能。外部接口设置如下图(以自动审批条件为例):

条件1.png


二、 业务插件注册 

注册业务插件:业务插件分为两种,分别是JAVA插件和KS脚本。如下图所示,选择对应的种类填写插件类:

条件2.png


三、 JAVA插件使用

1. JAVA插件注册 

    将完整包名输入“插件类”文本框,当流程执行到该节点时,需要计算是否需要自动审批时,会触发该方法。如下图

条件3.png


2. 条件规则外部接口插件API-JAVA要求 

  • 实现接口:kd.bos.workflow.engine.extitf.IWorkflowPlugin

  • 方法: public boolean hasTrueCondition(AgentExecution execution) 

  • 说明:根据特定的业务逻辑返回true或false。 

  • 参数:AgentExecution对象,对象中可获取单据id,实体编码,当前节点信息等

  • 返回值:true或false 


3. 条件规则外部接口插件扩展插件-JAVA插件例子



  1. @Override  

  2.     public boolean hasTrueCondition(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.         AgentTask currentTask = execution.getCurrentTask();//获取当前任务  

  10.         Long CurrentTaskId = execution.getCurrentTaskId();//当前任务ID  

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

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

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

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

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

  16.         return true;//返回值为boolean  

  17.     }  



四、 KS脚本使用 

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

条件4.png

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

条件5.png

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

条件6.png

4. 条件规则外部接口插件-KS脚本例子


  1. /** 

  2.  * @author IERP 

  3.  * @date 2019-09-27 

  4.  */  

  5. var plugin = new WorkflowPlugin({  

  6.     hasTrueCondition: 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 currentTask = execution.getCurrentTask(); //获取当前任务  

  14.         var CurrentTaskId = execution.getCurrentTaskId(); //当前任务ID  

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

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

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

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

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

  20.         return true; //返回值为boolean  

  21.     }  

  22. });  



图标赞 8
8人点赞
还没有人点赞,快来当第一个点赞的人吧!
图标打赏
0人打赏
还没有人打赏,快来当第一个打赏的人吧!

您的鼓励与嘉奖将成为创作者们前进的动力,如果觉得本文还不错,可以给予作者创作打赏哦!

请选择打赏金币数 *

10金币20金币30金币40金币50金币60金币
可用金币: 0