苍穹耗时操作

1.前台界面启动发布耗时任务
//创建任务目标
JobInfo jobInfo = new JobInfo();
jobInfo.setAppId("bos");// 执行类所在的应用名
jobInfo.setJobType(JobType.REALTIME);// 即时执行
jobInfo.setName("sync inventory");
jobInfo.setId(UUID.randomUUID().toString());// 随机产生一个JobId (任务目标的标识)
jobInfo.setTaskClassname("kd.bos.plugin.sample.schedule.BcInventoryQueryTask");//任务类名

//自定义参数
HashMap<String,Object> params = new HashMap<>();
params.put("warehouse", warehouse);
jobInfo.setParams(params);
//任务完成时回调
CloseCallBack closeCallBack = new CloseCallBack(this, "finishsync");
//发布任务,并显示进度
JobForm.dispatch(jobInfo, this.getView(), closeCallBack);

2.耗时任务
public class BcInventoryQueryTask extends AbstractTask {
@Override
public void execute(RequestContext requestContext, Map<String, Object> map) throws KDException {
//反写进度信息,多次调用及时更新进度到前台
feedbackProgress(0, "开始执行查询任务", null);
Long warehouseid = (Long)map.get("queryParam");
Boolean queryMix = (Boolean)map.get("queryMix");
String jobid = (String)map.get("jobid");
DataSet dataSet = doquery(warehouseid,queryMix);
AppCache.get("uwcq_baseset").put(jobid,dataSet);
HashMap<String, Object> result = new HashMap<>();
result.put("success", "true");
result.put("dataSet", dataSet);
//任务完成结果
feedbackCustomdata(result);
}
}
3.前台进度条(题外)相关控制
//发起loading
this.getView().addClientCallBack("genbarcodecallback",100);
setLoading(true);
//loading控制显示影藏
private void setLoading(boolean visible) {
String msg = "waiting..";
Map<String, Object> paraMap = new HashMap<>();
paraMap.put("text", msg);paraMap.put("type", LoadingType.Default.getType());
paraMap.put("visible", visible);
paraMap.put("pageId", getView().getPageId());
IClientViewProxy proxy = this.getView().getService(IClientViewProxy.class);
proxy.addAction("setPageLoading", paraMap);
}
 
原文地址:https://www.cnblogs.com/cyhj/p/14777276.html