如何在审批记录控件里看到历史审批记录
1 业务背景
【场景描述】
场景1:单据被驳回后重新寻址进入流程
场景2:单据反审核后再次进入流程
场景3:某些业务单据在不同业务阶段需要多次进入流程审批。
以上场景,流程会重新发起一个新的流程,目前我们系统的审批记录只展示最新一次流程实例的审批信息。
【客户需求】
需要在审批记录的控件里显示全部审批记录(包含历史审批记录),方便知道之前的审批情况。
2 解决方案
工作流审批记录开放了自定义数据源的接口,可以在接口里查询出全部的审批记录返回,实现步骤如下:
【步骤一】
实现IWorkflowPlugin接口,实现getCustomApprovalRecordGroup(String businesskey, Map<String, Object> params) ,二开代码如下:
@Override public List<IApprovalRecordGroup> getCustomApprovalRecordGroup(String businesskey, String entityNumber, Map<String, Object> params) { List<IApprovalRecordGroup> list = new ArrayList<>(); QFilter pFilter = new QFilter("businesskey", "=", businesskey); //根据单据id查询所有流程实例按创建时间排序 Map<Object, DynamicObject> hiprocinsts = BusinessDataServiceHelper.loadFromCache("wf_hiprocinst", "processinstanceid,businesskey", new QFilter[]{pFilter}, "createdate"); for (Map.Entry<Object, DynamicObject> entry : hiprocinsts.entrySet()) { DynamicObject hiprocinst = entry.getValue(); //获取流程实例id Long processInstanceId = hiprocinst.getLong("processinstanceid"); //通过流程实例id查询每一次审批记录,二开还可以在这里过滤筛选需要哪几次流程实例的审批记录 Map<String,Object> parm =new HashMap<>(); //V6.0.04版本新接口,通过传入参数控制流程记录不进入二开插件,否则会进入死循环。 parm.put("isNotUsePlugin",new Boolean("true")); List<IApprovalRecordGroup> recordGroups = getTaskService().queryApprovalRecord( businesskey,processInstanceId,parm); //拼接多个流程实例审批记录 list.addAll(recordGroups); } return list; }
【步骤二】
进入开发平台,搜索wf_confcenter
点击列表预览加入增加如下参数:
fkey: 值为customApprovalRecord,不可修改。
fvalue: 值为{"type":"class", "value":"wx71.hls.tdd.plugin.workflow.CustomApprovalRecord"},格式不可改,value的值代表实现自定义数据源的类路径。
4 注意事项
1、该方法实现后所有单据显示审批记录的地方都会加载历史审批记录,请仔细评估客户的需求场景后再用。
2、由于该方法依赖审批记录提供的新接口,需要苍穹V6.0.04版本以上才支持。走旧版本接口会导致取审批记录进入死循环。
5 相关资料(可选)
如何在审批记录控件里看到历史审批记录
1 业务背景【场景描述】 场景1:单据被驳回后重新寻址进入流程 场景2:单据反审核后再次进入流程 场景3:某些业务单据在不同业务阶...
点击下载文档
本文2024-09-23 00:55:05发表“云苍穹知识”栏目。
本文链接:https://wenku.my7c.com/article/kingdee-cangqiong-142581.html
您需要登录后才可以发表评论, 登录登录 或者 注册
最新文档
热门文章