工作流修改审批记录

一、需求
工作流修改审批记录,或者在审批记录列表中不展示某些审批记录。
二、思路与方案
展示审批记录有如下几个地方:
1. 审批记录列表
2. 审批记录控件
3. 流程图里面的节点详情的审批记录
审批记录列表和审批记录控件,可以通过自定义审批记录数据源来实现,可以做移除、修改等逻辑。
流程图里面的节点详情的审批记录,可以通过节点记录格式化插件来实现,可以做修改。



三、实现过程
1.实现审批记录的自定义数据源
(1)开发平台搜索wf_confcenter

(2)查找customApprovalRecord,如果没有,需要新增一个。这个键“customApprovalRecord”是固定写法,不能自定义。

添加一个json格式的值,里面包含类路径,需要把二开的工作流插件的完整路径填进去,开发者可以根据自身的包的路径自行调整,如下:
{"type":"class", "value":"kdec.wf.CustomApprovalRecord"}

(3)编写插件代码
继承IWorkflowPlugin,实现getCustomApprovalRecordGroup事件。使用TaskService查询审批记录。然后对审批记录列表里面即将展示的数据进行修改或者移除。
注意
1. 苍穹V6.0.04版本以上,需要配置 "isNotUsePlugin", "true"的请求参数(具体实现细节,请查看下面代码)。
2. 下面代码中,我实现了2种效果,一种是将审批记录置为“------”字符串,另一种是移除审批记录(这部分代码已注释,如有需要可以还原)
完整代码如下
import kd.bos.context.RequestContext;
import kd.bos.dataentity.entity.DynamicObjectCollection;
import kd.bos.orm.query.QFilter;
import kd.bos.servicehelper.QueryServiceHelper;
import kd.bos.workflow.component.approvalrecord.IApprovalRecordGroup;
import kd.bos.workflow.component.approvalrecord.IApprovalRecordItem;
import kd.bos.workflow.engine.ProcessEngines;
import kd.bos.workflow.engine.TaskService;
import kd.bos.workflow.engine.extitf.IWorkflowPlugin;
import java.util.*;
// 审批记录列表
public class CustomApprovalRecord implements IWorkflowPlugin {
@Override
public List<IApprovalRecordGroup> getCustomApprovalRecordGroup(String businesskey, String entityNumber, Map<String, Object> params) {
// 当前登录用户id
long userId = RequestContext.get().getCurrUserId();
// 由于一个单据可能存在多条流程实例,查询本单据最近结束的一条流程
DynamicObjectCollection dynamicObjectCollection = QueryServiceHelper.query("wf_hiprocinst", "processinstanceid",
new QFilter("businesskey", "=", businesskey).toArray(),"createdate desc", 1);
if (dynamicObjectCollection.size() > 0) {
long processinstanceid = dynamicObjectCollection.get(0).getLong("processinstanceid");
TaskService taskService = ProcessEngines.getDefaultProcessEngine().getTaskService();
Map<String,Object> parm = new HashMap<>();
//V6.0.04版本新接口,通过传入参数控制流程记录不进入二开插件,否则会进入死循环。
parm.put("isNotUsePlugin", "true");
List<IApprovalRecordGroup> recordGroups = taskService.queryApprovalRecord(businesskey, processinstanceid, parm);
// 当单据标识不是kdec_reqbill13的时候,直接返回审批记录,不做处理
if (!"kdec_reqbill13".equals(entityNumber)) {
return recordGroups;
}
// 当单据是kdec_reqbill13的时候,对审批记录进行一些处理后再展示
// 遍历审批记录,如果当前登录用户不是这个节点的审批人,则隐藏审批记录
for (IApprovalRecordGroup approvalRecordGroup : recordGroups) {
工作流修改审批记录
一、需求工作流修改审批记录,或者在审批记录列表中不展示某些审批记录。二、思路与方案展示审批记录有如下几个地方:1. 审批记录列表2. ...
点击下载文档文档为doc格式
声明:除非特别标注,否则均为本站原创文章,转载时请以链接形式注明文章出处。如若本站内容侵犯了原著者的合法权益,可联系本站删除。
上一篇
已经是第一篇



