[二开知识]V9版本如何开发后台任务

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

[二开知识]V9版本如何开发后台任务

【应用场景】

二开实现后台任务接口。


【注意事项】

由于V9版本后台任务接口做了调整,需要按照新的方式来实现后台任务,如果升级后出现以前的自定义后台任务无法运行的情况,可以临时调整Common.config中的参数<add key="IsForbidComputeTaskCheck" value="true"/>,建议后续调整后台任务为新的实现方式,然后再将此参数去除。


【案例演示】

新增一个测试的后台任务实现,并演示如何执行该任务。


【实现步骤】

<1>编写后台任务实现类,代码如下。

/// <summary>
    /// V9测试计算任务
    /// </summary>
    public class V9TestComputeTask : IComputeTaskExecutor
    {
        public void Execute(ComputeContext ctx)
        {

            var sv = ServiceFactory.GetService<IBackAppService>(ctx.Task.BOSContext);
            string customPara = "";
            if (ctx.Task.PropertyId > 0)
            {
                //获取自定义参数
                var computeTaskPara = sv.GetTaskPropery(ctx.Task.BOSContext, ctx.Task.PropertyId);
                if (computeTaskPara != null)
                {
                    customPara = computeTaskPara.PropertyString;//获取自定义参数
                }
            }

            //todo 执行用户自定义逻辑
        }
    }


<2>编写表单插件执行该后台任务,代码如下:

[HotUpdate,Description("单据测试V9插件")]
    public class TestBillPlugIn : AbstractBillPlugIn
    {
        public override void AfterButtonClick(AfterButtonClickEventArgs e)
        {
            base.AfterButtonClick(e);

            if (e.Key.EqualsIgnoreCase("F_uNW_Button_qtr"))
            {
                var sv = Kingdee.BOS.Contracts.ServiceFactory.GetService<IBackAppService>(this.Context);
                BackAppTask t = new BackAppTask();
                t.ComputeId = Guid.NewGuid().ToString();
                t.BOSContext = this.Context;
                t.OriginatorId = this.Context.UserId;
                t.ExecutorType = typeof(V9TestComputeTask);//后台任务实现逻辑
                t.Status = ComputeStatus.Ready;
                t.Priority = ComputePriority.Immediately;
                var backService = ServiceFactory.GetService<IBackAppService>(this.Context);
                string customPara = "testdata";//自定义参数
                var prop = backService.CreateTaskProperty(this.Context, customPara);//存储自定义参数
                t.PropertyString = prop.Id.ToString();//将自定参数Id传回BackAppTask参数
                t.SerializeProperties();
                sv.SubmitTask(this.Context, t);//提交后台任务
            }
        }
    }



【金蝶云星空BOS二次开发案例演示】

https://vip.kingdee.com/article/94751030918525696



[二开知识]V9版本如何开发后台任务

【应用场景】二开实现后台任务接口。【注意事项】由于V9版本后台任务接口做了调整,需要按照新的方式来实现后台任务,如果升级后出现以前的...
点击下载文档
确认删除?
回到顶部
客服QQ
  • 客服QQ点击这里给我发消息