我需要能够让一个用户根据需要临时镜像另一个用户。镜像用户应获得与目标用户相同的业务部门、团队和角色。现在它是手动完成的,但它很痛苦。我编写了一个自定义工作流活动来完成它,如果我以系统管理员身份运行它并选择一个镜像用户和目标用户,它就可以工作。
但最终目标是能够允许某些用户自己运行对话。如果我尝试以自己的镜像用户身份运行它,我会收到一条错误消息,指出我没有分配角色的权限,这是有道理的,因为工作流会删除我的角色,然后尝试为我分配目标用户的角色。
我希望工作流活动以特权用户身份运行,但到目前为止还没有任何运气。我试过创建IOrganizationService
这样的:
var context = executionContext.GetExtension<IWorkflowContext>();
var serviceFactory = executionContext.GetExtension<IOrganizationServiceFactory>();
var service = serviceFactory.CreateOrganizationService(null);
根据CreateOrganizationService
使用null
as 参数调用的文档应该强制系统用户的用户,但它似乎仍然作为调用用户运行。
我还尝试调用CreateOrganizationService
并传递具有系统管理员角色的不同用户的 Guid,但得到了相同的结果。