2011-12-29 2 views

ответ

8

Предполагая, что вы используете , и что вы создали свой собственный рабочий процесс следующий Create a Custom Workflow Activity статьи из MSDN, он должен наследовать CodeActivity класс, и имеет метод, как:

protected override void Execute(CodeActivityContext context) 
{ 
    // Your code here 
} 

Чтобы получить ток userId, вам нужно получить IWorkflowContext от CodeActivityContext, как это:

IWorkflowContext workflowContext = context.GetExtension<IWorkflowContext>(); 

И затем:

var id = workflowContext.UserId; 
+0

@ Антония: Привет, большое вам спасибо. Работает.
И еще одно: мы также можем использовать нижеприведенный код, чтобы получить userId:
IExecutionContext context = executeContext.GetExtension (); Guid currentUserID = context.UserId; Какой из них более эффективен ...? И можем ли мы получить то же самое с помощью классов WhoAmIRequest и WhoAmIResponse ..? –

+0

@Charan: Я не пробовал эти, но, согласно [MSDN] (http://msdn.microsoft.com/en-us/library/microsoft.xrm.sdk.iexecutioncontext_members.aspx), кажется, что IExecutionContext. UserId вызывает IWorkflowContext.UserId, поэтому используйте интерфейс, который наилучшим образом соответствует вашим потребностям. Что касается WhoAmIRequest/Response, контекст уже содержит информацию о пользователе, поэтому сделать еще один запрос на его получение кажется слишком большим для меня. – Antoine

+0

@ Антония: Прохладный .. Еще раз спасибо .. –