工作流插件开发——工作流任务时限控制插件原创
金蝶云社区-刘子洋
刘子洋
2人赞赏了该文章 2,331次浏览 未经作者许可,禁止转载编辑于2020年03月02日 17:35:23

一、 业务场景 任务处理时限控制现在支持插件控制。绑定插件的路径为:需要时限控制的节点——节点控制——打开任务处理时限控制——期限控制方式选择“插件”——绑定需要的插件。如下图:

                         

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

                       

三、 JAVA插件使用 

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

           

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

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

     方法:public String getExpireTime(AgentExecution e)  

     说明:根据特定的逻辑返回string类型的数据

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

     返回值:long类型的数据

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

      

    @Override  

        public Long getExpireTime(AgentExecution execution) {  

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

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

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

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

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

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

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

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

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

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

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

            return 3L;// 返回值为 long 类型的数据。返回内容为实现控制时长的数值  

        }  

四、 KS脚本使用 

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

             

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

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

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

  5. var plugin = new WorkflowPlugin({      

        getExpireTime: function(e) {      

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

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

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

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

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

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

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

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

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

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

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

        return currentApprover; // 返回值为 long 类型的数据。返回内容为实现控制时长的数值  

        }      

        });      

赞 2