BOS运行时-执行计划-上下文对象原创
金蝶云社区-Howhy
Howhy
75人赞赏了该文章 381次浏览 未经作者许可,禁止转载编辑于2023年11月20日 18:12:15

执行计划自动调度时,使用的是administrator用户,没有组织信息(-1),有些场景下,我们需要根据用户组织和用户权限获取数据或者进行一些业务操作,这种情况下,不适合使用administrator用户进行。


建议使用以下代码克隆上下文对象Context,指定组织信息和用户id

注意,禁止直接修改上下文对应Context,因为这是一个全局变量

参考代码如下:

public void Run(Context ctx, Kingdee.BOS.Core.Schedule schedule)     
{

    var cloneContext = ctx.Clone() as Context;
    if(cloneContext == null )
    {
        Logger.Info("custError", "Clone context error");
        return;
    }

    cloneContext.CurrentOrganizationInfo = new OrganizationInfo()
    {
        //通过查询T_ORG_ORGANIZATIONS表可以得到对应的id
        ID = 100001
    };
    //通过查询 T_SEC_USER 可以得到对应的id
    cloneContext.UserId = 100007;
    //调用接口传递上下文的地方传入cloneContext
    BusinessDataServiceHelper.Save(cloneContext, dataObject);
  }



图标赞 75
75人点赞
还没有人点赞,快来当第一个点赞的人吧!
图标打赏
0人打赏
还没有人打赏,快来当第一个打赏的人吧!

您的鼓励与嘉奖将成为创作者们前进的动力,如果觉得本文还不错,可以给予作者创作打赏哦!

请选择打赏金币数 *

10金币20金币30金币40金币50金币60金币
可用金币: 0