后台任务接口介绍原创
金蝶云社区-抚琴弹唱
抚琴弹唱
2人赞赏了该文章 898次浏览 未经作者许可,禁止转载编辑于2021年11月29日 17:09:00
封面

客户需求:点击按钮后会执行耗时操作,长达数小时,如何保证不超时。

解决方案:使用后台任务

1. 创建后台任务插件,继承IComputeTaskExecutor接口即可。

2. 用如下代码新增后台任务。

Context ctx = null;             // 数据库上下文,请准备好
string title = string.Format("结算组织[({0}){1}],正在进行核销", settOrgNumber, settOrgName);  // 任务的标题
long userId = ctx.UserId;       // 发起任务的用户
object para = null;
IBackAppService server = Kingdee.BOS.App.ServiceHelper.GetService<IBackAppService>();
ComputeTask task = new ComputeTask();
task.BOSContext = ctx;
task.OriginatorId = userId;
task.ExecutorType = typeof(TaskExecutor);           // IComputeTaskExecutor 的实现类;执行实际计算
task.Title = title;
Dictionary<string, object> dict = new Dictionary<string, object>();
dict.Add("MatchParameters", para);                  // 允许自定义参数,传递给实际执行计算的类
task.Properties = dict;                             // 自定义参数字典,必选
task.Status = ComputeStatus.Ready;                  // 任务状态,提交任务时,必须为Ready
task.Priority = ComputePriority.Immediately;        // 任务优先级:立即执行
task.SerializeProperties();                         // 序列化自定义参数字典:可以不用执行,计算服务存储任务时,会自动执行
server.SubmitTask(ctx, task);                       // 提交任务
string taskId = task.ComputeId;                     // 任务成功提交,记录下任务的Id,已备后续随时查询任务进度...


3. 查看我的后台任务。

image.png

赞 2