13.02.2020, 17:20 | #1 |
Участник
|
Имперсонализация в кастомных шагах WF
CRM 2016
Пишу кастомный шаг WF (точнее для Action), который кой чего запрашивает из CRM. Фишка в том, что у пользователя нет доступа к той сущности, к которой должен обращаться шаг, поэтому я пытаюсь выполнить запрос от имени системного пользователя, т.е. получаю экземпляр Organization Service вот так: Код: var factory = context.GetExtension<IOrganizationServiceFactory>(); var service = factory.CreateOrganizationService(null); Цитата:
// Parameters:
// userId: // Type: Nullable<Guid>. Specifies the system user that calls to the service are // made for. // When called in a plug-in, a null value indicates the SYSTEM user and a Guid.Empty // value indicates the same user as Microsoft.Xrm.Sdk.IPluginExecutionContext. Microsoft.Xrm.Sdk.IExecutionContext.UserId. // Any other value indicates a specific system user. // When called in a custom workflow activity, all service calls are made in the // IWorkflowExecutionContext.Microsoft.Xrm.Sdk.IExecutionContext.UserId context. Пробовал использовать значения переменных UserId и InitiatingUserId из контекста, но на выходе получаю одну и ту же ошибку, из которой понятно, что при любом раскладе сервис работает от одного и того же пользователя. Я полез в библиотеку Microsoft.Crm.Workflow.dll и нашел там реализацию метода CreateOrganizationService: Код: IOrganizationService IOrganizationServiceFactory.CreateOrganizationService(Guid? userId) { return this.CreateSdkService(false); } public override IOrganizationService CreateSdkService(bool asAdminUser) { return this._sdkService.CreateInstance(asAdminUser, this.ProxyTypesAssembly); } Собственно вопрос... Это я дурак или лыжи не едут - это косяк реализации workflow или я что-то не так делаю? |
|