电脑桌面
添加蚂蚁七词文库到电脑桌面
安装后可以在桌面快捷访问

工作流修改审批记录

来源:金蝶云社区作者:金蝶2024-09-2313

工作流修改审批记录

一、需求

工作流修改审批记录,或者在审批记录列表中不展示某些审批记录。


二、思路与方案

展示审批记录有如下几个地方:

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格式

声明:除非特别标注,否则均为本站原创文章,转载时请以链接形式注明文章出处。如若本站内容侵犯了原著者的合法权益,可联系本站删除。

确认删除?
回到顶部
客服QQ
  • 客服QQ点击这里给我发消息
QQ群
  • 答案:my7c点击这里加入QQ群
支持邮箱
微信
  • 微信