一、 业务场景 当用户创建好流程后,针对每个审批节点都要设置对应的参与人(审批人)。当前工作流提供四种选择参与人的方法,如下图所示。第四种针对前三种不能满足用户要求时,用户可以自己完成插件,按照自己的想法去设置参与人
二、业务插件注册 注册业务插件:业务插件分为两种,分别是JAVA插件和KS脚本。点击业务插件,进入插件注册页面,如下图所示:
业务插件注册 注册业务插件:业务插件分为两种,分别是JAVA插件和KS脚本。点击业务插件,进入插件注册页面,如下图所示:
三、 JAVA插件使用
1. JAVA插件注册 将完整包名输入“插件类”文本框,当流程走到该节点后会执行注册的插件。如下图
2. 参与人扩展插件API-JAVA要求
实现接口:kd.bos.workflow.engine.extitf.IWorkflowPlugin
方法: public default List<Long> calcUserIds(AgentExecution execution)
说明:根据特定的业务逻辑返回参与人id列表。
参数:AgentExecution对象,对象中可获取单据id,实体编码,当前节点信息等 返回值:参与人id长整形数组
3. 参与人扩展插件-JAVA插件例子
@Override
public List<Long> calcUserIds(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 currentApprover;//返回值为 List<Long> 类型的数据。返回内容为参与人的id
}
四、 KS脚本使用
KS插件注册 类型选择脚本,点击下图红框弹出选择脚本页面。
2. 点击如下图红框所示,进入KDE平台
3. 在KDE平台新增脚本,插件类型为“流程插件”,插入方法为“calUserIds”点击确定进入脚本编辑页面
4. 参与人扩展插件-KS脚本例子
/**
* @author IERP
* @date 2019-09-27
*/
var plugin = new WorkflowPlugin({
calcUserIds: 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; //返回内容为参与人的id
}
});
推荐阅读
动态表单插件开发
单据插件介绍 由于单据插件只在动态表单插件的基础上增加一个事件,所以在此简要介绍一下单据插件。 动态表单是最基本的交互界面,移动端表单、单据、基础资料、报表,都 …
- 文章
602
工作流插件
工作流插件需要实现IWorkflowPlugin接口,有时候需要动态的获取工作流中各个节点的审批人等,需要通过插件来实现。 案例如下: @Override pu …
- 文章
4340
工作流如何绑定插件
1、 先在工作流绑定的实体增加操作按钮 ![图片] 2、 操作按钮绑定对应插件 ![图片] 3、 插件里面更新单据状态、审批状态、处理逻辑 ![图片] 4、 工 …
- 文章
110