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

本文介绍了如何在系统中通过插件控制任务处理时限、注册和使用业务插件(包括JAVA插件和KS脚本)。文中详细说明了在节点中绑定时限控制插件的路径,插件的注册流程,JAVA插件的使用及注册要求,包括实现特定接口和返回类型,以及KS脚本的使用和注册方式,同时给出了JAVA和KS脚本的示例代码。

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

                         

二、 业务插件注册 注册业务插件:业务插件分为两种,分别是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
2人点赞
还没有人点赞,快来当第一个点赞的人吧!
图标打赏
0人打赏
还没有人打赏,快来当第一个打赏的人吧!

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

请选择打赏金币数 *

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