大任务后台处理中心,节省时间的好帮手

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

大任务后台处理中心,节省时间的好帮手


业务开发小白又遇到了新问题,这次应邀前来解决问题的老师给小白推荐了一款神器:大任务后台处理中心。有了这个宝贝,以后员工好好工作,提前下班不是问题~


今天就为大家揭开大任务后台处理中心的神秘面纱~




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;
}





#往期推荐#


#   学完这篇,苍穹页面布局so easy!


#  一篇揭秘如何实现“徽标”效果的好文,速看!

#  玩转设计器之“跨页面复制元数据&运用格式刷”

#  手把手教你使用pc卡片列表方案

 帮助文本,不仅仅是简单的文本提示

#  苍穹中隐藏的智能协同功能


更多精彩内容,“码”上了解!↓



大任务后台处理中心,节省时间的好帮手

业务开发小白又遇到了新问题,这次应邀前来解决问题的老师给小白推荐了一款神器:大任务后台处理中心。有了这个宝贝,以后员工好好工作,提...
点击下载文档
确认删除?
回到顶部
客服QQ
  • 客服QQ点击这里给我发消息