大任务后台处理中心,节省时间的好帮手
业务开发小白又遇到了新问题,这次应邀前来解决问题的老师给小白推荐了一款神器:大任务后台处理中心。有了这个宝贝,以后员工好好工作,提前下班不是问题~
今天就为大家揭开大任务后台处理中心的神秘面纱~
1 何谓“大任务后台处理中心”
大任务后台处理中心是一种后台事件处理的状态反馈容器,通俗点讲它就是用来展示进入后台运行任务的状态。
2 使用场景
在系统里经常会有一些耗时操作,如批量审核,批量删除,批量生成凭证、引入引出等,为了节省时间,用户会希望这些操作可以转到后台处理,不影响其他流程。
那么我们可以使用大任务后台处理中心,将任务进行异步处理,还可以展示处理状态以及进度。
3 怎么把任务转入大任务处理中心
大任务处理中心默认是以全局悬浮球的形式放置在页面右下角,可以拖拽至页面任意位置。
那么我们要怎么把任务转入这个悬浮球呢?给大家举个简单的例子:
1、新建动态表单
2、添加按钮,标识btnjobdispatch
3、挂上插件:
kd.bos.schedule.form.sample.JobDispatchFormPlugin
插件里面是控制任务的执行逻辑:
private void dispatch() { JobInfo jobInfo = new JobInfo(); // 创建任务目标 jobInfo.setAppId("bos"); // 执行类所在的应用名 jobInfo.setJobType(JobType.REALTIME); // 即时执行 jobInfo.setRunByUserId(Long.valueOf(RequestContext.get().getUserId())); jobInfo.setName("test job"); jobInfo.setId(UUID.randomUUID().toString()); // 随机产生一个JobId jobInfo.setTaskClassname("kd.bos.schedule.sample.MyTask"); Map<String,Object> params = new HashMap<>(); params.put("time", 40); // 自定义参数,示例任务执行循环次数,80次 jobInfo.setParams(params); // 回调参数,设置一个回调处理标识(actionId) CloseCallBack closeCallBack = new CloseCallBack(this, "taskcloseback"); // 创建任务进度界面参数 JobFormInfo jobFormInfo = new JobFormInfo(jobInfo); jobFormInfo.setCaption("任务执行进度"); // 进度界面标题 jobFormInfo.setCloseCallBack(closeCallBack); // 任务完成后的回调处理 jobFormInfo.setCanBackground(true); // 允许切换到后台执行 jobFormInfo.setCanStop(true); // 允许中途取消 jobFormInfo.setClickClassName("kd.bos.schedule.sample.MyTaskClick"); // 发布任务,并显示进度 JobForm.dispatch(jobFormInfo, this.getView()); }
简单三步,我们就能在任务执行时询问用户是否将任务转入后台处理。
来吧,展示!
现在你就可以进行其他任意操作,赚到啦~
ps:悬浮球中间展示的是完成任务占所有任务的百分比,悬停时候会展示运行中的任务个数。
4 如何查看我的任务详情
我们现在已经把任务成功转入处理中心了,但有些小伙伴工作繁忙,时间久了就想不起具体的任务内容了,要怎么查看任务详情呢?
点击任务项,查看具体任务条目详情,插件代码要这样写:
pulic class MyTaskClick extends AbstractTaskClick { /** * 用户点击了前端任务提醒面板上的任务 */ @Override public void click(ClickEventArgs e) { // 获取任务执行结果 TaskInfo taskInfo = this.queryTask(); // 获取首页(不会为null) // IFormView mainView = this.getMainView(); // 获取发起任务的页面(如果用户已经关闭了发起任务的页面,返回null) IFormView parentView = this.getParentView(); if (taskInfo.isTaskEnd()) { // 任务已经结束 e.setClearTask(true); // 通知平台,清除前端任务提醒图标 this.getMainView().showMessage("任务已经结束,可以在此处打开结果查看界面"); } else { // 任务没有结束,重新打开进度界面 if (parentView == null) { this.getMainView().showMessage("启动任务的页面已经关闭,不能再打开进度界面"); } else { this.showProgressForm(parentView); } } }
ps: 已完成的任务在查看详情之后会从任务列表里面移除哦~
5 怎么清除已完成的任务
看到已完成任务还待在任务列表里,强迫症们是不是特别想点一键清除呢?别担心,满足你!
点击清除,已完成、已取消、任务异常通通不见啦~
什么?清除前你还想干点什么?
你只需要这样写插件代码,想干什么干什么:
/** * 用户点击了前端任务面板上的清除按钮,清除已完成的任务条目 * @return 默认返回true,同意前端清除此任务;如果认为时机不合适,还不希望任务条目被清除,可以返回false */ @Override public boolean release() { // TODO 释放资源、缓存等 return true; }
#往期推荐#
更多精彩内容,“码”上了解!↓
大任务后台处理中心,节省时间的好帮手
本文2024-09-23 00:35:18发表“云苍穹知识”栏目。
本文链接:https://wenku.my7c.com/article/kingdee-cangqiong-140431.html