本文介绍了如何在系统中通过插件控制任务处理时限、注册和使用业务插件(包括JAVA插件和KS脚本)。文中详细说明了在节点中绑定时限控制插件的路径,插件的注册流程,JAVA插件的使用及注册要求,包括实现特定接口和返回类型,以及KS脚本的使用和注册方式,同时给出了JAVA和KS脚本的示例代码。
一、 业务场景 任务处理时限控制现在支持插件控制。绑定插件的路径为:需要时限控制的节点——节点控制——打开任务处理时限控制——期限控制方式选择“插件”——绑定需要的插件。如下图:
二、 业务插件注册 注册业务插件:业务插件分为两种,分别是JAVA插件和KS脚本。点击业务插件,进入插件注册页面,如下图所示:
三、 JAVA插件使用
JAVA插件注册 将完整包名输入“插件类”文本框,当流程走到该节点后会执行注册的插件。如下图
参与人扩展插件API-JAVA要求
实现接口:kd.bos.workflow.engine.extitf.IWorkflowPlugin
方法:public String getExpireTime(AgentExecution e)
说明:根据特定的逻辑返回string类型的数据
参数:AgentExecution对象,对象中可获取单据id,实体编码,当前节点信息等
返回值:long类型的数据
参与人扩展插件-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脚本使用
KS插件注册 类型选择脚本,点击下图红框弹出选择脚本页面。
点击如下图红框所示,进入KDE平台
在KDE平台新增脚本,插件类型为“流程插件”,插入方法为“getExpireTime”点击确定进入脚本编辑页面
参与人扩展插件-KS脚本例子
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 类型的数据。返回内容为实现控制时长的数值
}
});
推荐阅读
您的鼓励与嘉奖将成为创作者们前进的动力,如果觉得本文还不错,可以给予作者创作打赏哦!
请选择打赏金币数 *