消息中心中如何自定义任务主题

栏目:云苍穹知识作者:金蝶来源:金蝶云社区发布:2024-09-23浏览:1

消息中心中如何自定义任务主题

关键词:工作流、任务主题

一、需求

       流程审批遇会审节点驳回,需要在待办任务列表的主题列看到驳回人信息。目前情况如下图:第一条待办任务主题,显示单据编号信息,第二条待办任务主题(通过配置实现)显示驳回信息。第二条待办任务主题的问题是,会审节点部分参与人执行驳回操作即可结束会审,待办任务主题通过配置只能显示所有处理人。例如:3个参与人中2人执行驳回,因为没有达到会审50%的通过比例要求,任务被驳回会审结束。需求是:上游节点会审驳回,待办任务主题显示实际执行驳回操作人,非所有的处理人。

二、思路与方案

思路与方案:      

      根据单据编号作为过滤条件,从历史任务处理结果表中按处理时间倒叙查出历史处理结果,处理结果中取出第一条信息(审批节点编码、审批策略、审批人),并遍历后续处理结果信息,如果后续遍历的处理结果里有节点编码(wf_hicomment的activityid字段)和第一条信息的节点编码一样并且审批策略编码是Reject,那么说明这条处理结果也是上一次会审审批节点执行驳回的信息,当遍历到审批节点编码和第一条信息的审批节点编码不一样时,说明已经不是上一个节点的审批处理结果。

        通过上面的逻辑即可找到前面会审节点执行驳回操作的处理人了。


三、实现过程

1、代码逻辑

public class ReqToThemeWorkflowPlugin implements Plugin, IWorkflowPlugin {

    @Override
    public String parseBillSubject(AgentExecution execution, String lang) {
        String billNo = ((ExecutionEntityImpl) execution).getBillNo();
        //获取单据对应的历史任务处理结果,时间倒叙排序
        DynamicObject[] wfs = BusinessDataServiceHelper.load("wf_hicomment", "assignee,activityid,resultnumber,decisiontype,activityname,sendername", new QFilter[]{
                new QFilter("billno", QCP.equals,billNo )//taskId
        },"time desc");
        
        List<TaskEntity> tasks = ((ExecutionEntityImpl) execution).getTasks();
        TaskInfo taskById = WorkflowServiceHelper.findTaskById(execution.getCurrentTask().getId());
        StringBuilder theme=new StringBuilder();
        if(wfs != null && wfs.length > 0){
            //处理时间倒叙后的第一条记录
            String activityid = wfs[0].getString("activityid");//审批节点编码
            Object decisiontype = wfs[0].get("resultnumber");//审批策略
            String assignee= wfs[0].getString("assignee");//上一步处理人
            theme.append(billNo).append("已被").append(assignee);
            for(int i=1;i<wfs.length;i++){
                DynamicObject wf=wfs[i];
                String activityidtemp = wf.getString("activityid");//审批节点编码
                String decisiontypetemp = wf.getString("resultnumber");//审批策略
                if (activityidtemp.equals(activityid)&&decisiontypetemp.equals("Reject")){//是一个节点驳回操作的操作人(处理人)
                    //审批记录中,和第一个审批节点节点信息一样,并且决策项是Reject的审批记录
                    theme.append("、").append(wf.get("assignee"));
                }else if (!activityidtemp.equals(activityid)){//倒叙排序后和第一个审批id不一样,说明不是上一个节点了
                    break;
                }
            }
            theme.append("驳回");
        }
        return theme.toString();
    }

2、注册插件

四、效果图

当1个人同意,2个人驳回时,主题里只显示实际驳回的处理人。

五、开发环境版本

V6.0.1

六、参考资料

开发平台

学习成长中心


消息中心中如何自定义任务主题

关键词:工作流、任务主题一、需求 流程审批遇会审节点驳回,需要在待办任务列表的主题列看到驳回人信息。目前情况如下图:第一条...
点击下载文档
确认删除?
回到顶部
客服QQ
  • 客服QQ点击这里给我发消息