执行计划自动调度原创
2人赞赏了该文章
52次浏览
编辑于2023年11月28日 08:02:09
执行计划自动调度时,使用的是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); }
推荐阅读