Dynamics crm 2011 如何以特权用户身份运行CRM 2011自定义工作流活动?
我需要能够使一个用户在需要时临时镜像另一个用户。镜像用户应获得与目标用户相同的业务部门、团队和角色。现在它是手动完成的,但这很痛苦。我编写了一个自定义工作流活动来完成这项工作,如果我以系统管理员的身份运行它并选择镜像用户和目标用户,它就会工作 但最终目标是允许某些用户自己运行对话框。如果我尝试以镜像用户的身份运行它,我会收到一个错误,说我没有分配角色的权限,这很有意义,因为工作流会删除我的角色,然后尝试为我分配目标用户的角色 我希望工作流活动以特权用户的身份运行,但到目前为止没有任何运气。我已经尝试过这样创建Dynamics crm 2011 如何以特权用户身份运行CRM 2011自定义工作流活动?,dynamics-crm-2011,dynamics-crm,Dynamics Crm 2011,Dynamics Crm,我需要能够使一个用户在需要时临时镜像另一个用户。镜像用户应获得与目标用户相同的业务部门、团队和角色。现在它是手动完成的,但这很痛苦。我编写了一个自定义工作流活动来完成这项工作,如果我以系统管理员的身份运行它并选择镜像用户和目标用户,它就会工作 但最终目标是允许某些用户自己运行对话框。如果我尝试以镜像用户的身份运行它,我会收到一个错误,说我没有分配角色的权限,这很有意义,因为工作流会删除我的角色,然后尝试为我分配目标用户的角色 我希望工作流活动以特权用户的身份运行,但到目前为止没有任何运气。我已经
ioOrganizationService
:
var context = executionContext.GetExtension<IWorkflowContext>();
var serviceFactory = executionContext.GetExtension<IOrganizationServiceFactory>();
var service = serviceFactory.CreateOrganizationService(null);
var context=executionContext.GetExtension();
var serviceFactory=executionContext.GetExtension();
var service=serviceFactory.CreateOrganizationService(null);
根据文档,以null
作为参数调用CreateOrganizationService
应强制系统用户的用户,但它似乎仍作为调用用户运行
我还尝试调用
CreateOrganizationService
并通过系统管理员角色传递其他用户的Guid,但得到了相同的结果。工作流具有特殊条件,旨在忽略传递给CreateOrganizationService的Guid
我从下面这段话中摘录下一段:
对于自动工作流案例,工作流的所有者也是
激活触发机制并选择触发机制和
工作流步骤,以便在该用户的权限下执行工作流是正常的
上下文对于按需情况,用户特别请求
由工作流代表用户执行的某些操作,以便
完全了解工作流定义,并将执行该定义;
因此,在该用户的上下文中执行工作流是安全的
而不是工作流所有者(可能不知道用户
请求按需执行)
工作流具有特殊条件,设计为忽略传递给CreateOrganizationService的guid 我从下面这段话中摘录下一段: 对于自动工作流案例,工作流的所有者也是 激活触发机制并选择触发机制和 工作流步骤,以便在该用户的权限下执行工作流是正常的 上下文对于按需情况,用户特别请求 由工作流代表用户执行的某些操作,以便 完全了解工作流定义,并将执行该定义; 因此,在该用户的上下文中执行工作流是安全的 而不是工作流所有者(可能不知道用户 请求按需执行)
- 如果最终用户明确启动工作流,它将在其用户上下文中运行
- 对话框始终在发起用户上下文中运行
- 由事件触发而不是由用户显式启动的工作流将在启动并拥有该工作流的用户(在本例中为管理员)的上下文中运行
- 对话框或自定义功能区按钮可以更改记录上的某些内容(自定义字段),您的自定义工作流活动已注册以在更改时执行
- 如果最终用户明确启动工作流,它将在其用户上下文中运行
- 对话框始终在发起用户上下文中运行
- 由事件触发而不是由用户显式启动的工作流将在启动并拥有该工作流的用户(在本例中为管理员)的上下文中运行
- 对话框或自定义功能区按钮可以更改记录上的某些内容(自定义字段),您的自定义工作流活动已注册以在更改时执行