如何处理“待办任务列表中,对一些任务暂时不需要或不想审批,需核实确认之后再处理;担心误点审批”场景

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

如何处理“待办任务列表中,对一些任务暂时不需要或不想审批,需核实确认之后再处理;担心误点审批”场景


1 场景描述

待办任务列表中,对一些任务暂时不需要或不想审批,需核实确认之后再处理;担心误点审批。


2 思路分析

  • 针对以上场景,思路为:暂时将任务挂起,挂起的任务不可以处理,需要等到手动激活之后才能处理。

  • 涉及到的方法:

    kd.bos.servicehelper.workflow.WorkflowServiceHelper#suspendTaskById 用于挂起任务;

    kd.bos.servicehelper.workflow.WorkflowServiceHelper#activateTaskById 用于激活任务。

  • 为了完成场景,可以在wf_task元数据的列表界面添加两个工具栏按钮,一个用作“挂起”,另一个用作“激活”;同时编写列表插件。


3 思路实现

    第一步:如图所示,在wf_task元数据的列表界面,添加两个工具栏按钮。


    第二步:分析两个方法。都需要用到taskid和userid,并且“挂起”方法额外需要“挂起原因”。


    第三步:需要获取userid和taskid;挂起原因可以自行拼接、指定。

    userid的获取方法为:

long currUserId = RequestContext.get().getCurrUserId();

    taskid在本方案中的获取方法为:

String pkvalue = selectedRow.getPrimaryKeyValue().toString();

    因为需要注册插件的表单为wf_task,则pkvalue即为taskid;如业务单据中需要获取taskid,需要使用getTaskIdByBusinessKeyAndUserId方法。


    第四步:将以上步骤在列表插件中实现。

package nm21.plugin.listPlugin;

import kd.bos.context.RequestContext;
import kd.bos.dataentity.entity.ILocaleString;
import kd.bos.dataentity.entity.LocaleString;
import kd.bos.entity.datamodel.ListSelectedRow;
import kd.bos.entity.datamodel.ListSelectedRowCollection;
import kd.bos.form.control.Toolbar;
import kd.bos.form.control.events.ItemClickEvent;
import kd.bos.list.plugin.AbstractListPlugin;
import kd.bos.servicehelper.BusinessDataServiceHelper;
import kd.bos.servicehelper.workflow.WorkflowServiceHelper;
import kd.sdk.plugin.Plugin;
import java.util.EventObject;
import static java.lang.Long.parseLong;

/**
 * 标准单据列表插件
 */
public class SuspendAndActivateListPlugin extends AbstractListPlugin implements Plugin {
    @Override
    public void registerListener(EventObject e) {
        super.registerListener(e);
        //监听按钮点击
        this.addItemClickListeners("toolbarap");
    }

    @Override
    public void itemClick(ItemClickEvent evt) {
        super.itemClick(evt);
        //待办任务列表中,挂起选中任务。nm21_baritemap为wf_task元数据的列表界面添加的工具栏按钮,功能为“挂起”
        if ("nm21_baritemap".equals(evt.getItemKey())) {
            //获取用户id
            long currUserId = RequestContext.get().getCurrUserId();

            //列表多选场景
            ListSelectedRowCollection selectedRows = this.getSelectedRows();
            for (ListSelectedRow selectedRow : selectedRows) {
                //获取任务id,因为加按钮和插件就是在wf_task这个元数据内,所以pk值即为taskid
                String pkvalue = selectedRow.getPrimaryKeyValue().toString();

                if (null != pkvalue && parseLong(pkvalue) != 0) {
                    //挂起原因,可以根据场景自行设计、拼接
                    ILocaleString reason = new LocaleString("待核实");
                    //根据用户id、任务id以及挂起原因,来挂起指定任务
                    WorkflowServiceHelper.suspendTaskById(parseLong(pkvalue), currUserId, reason);
                }
            }
            //挂起之后,需要刷新列表前端展示,将状态字段显示为“已挂起“
            this.getView().invokeOperation("refresh");
        }

        //待办任务列表中,激活选中的已挂起的任务。nm21_baritemap1为wf_task列表添加的另一个工具栏按钮,功能为“激活”
        if ("nm21_baritemap1".equals(evt.getItemKey())) {
            //获取用户id
            long currUserId = RequestContext.get().getCurrUserId();

            //列表多选场景
            ListSelectedRowCollection selectedRows = this.getSelectedRows();
            for (ListSelectedRow selectedRow : selectedRows) {
                //获取任务id,因为加按钮和插件就是在wf_task这个元数据内,所以pk值即为taskid
                String pkvalue = selectedRow.getPrimaryKeyValue().toString();

                if (null != pkvalue && parseLong(pkvalue) != 0) {
                    //根据用户id、任务id,激活已挂起的任务
                    WorkflowServiceHelper.activateTaskById(parseLong(pkvalue), currUserId);
                }
            }
            //激活之后,需要刷新列表前端展示,将状态字段显示为”待审批“
            this.getView().invokeOperation("refresh");
        }
    }
}


    第五步:测试功能。进入消息中心待办列表界面,选中几条任务,点击按钮“挂起”,观察状态是否为“已挂起”;同时尝试处理这些任务,观察是否无法处理。然后再选中“挂起”的任务,点击“激活”按钮,观察是否状态更新为“待处理”。

如何处理“待办任务列表中,对一些任务暂时不需要或不想审批,需核实确认之后再处理;担心误点审批”场景

1 场景描述待办任务列表中,对一些任务暂时不需要或不想审批,需核实确认之后再处理;担心误点审批。2 思路分析针对以上场景,思路为:暂...
点击下载文档
确认删除?
回到顶部
客服QQ
  • 客服QQ点击这里给我发消息