【问题标题】:Get current user network credentials from within WWF custom activity从 WWF 自定义活动中获取当前用户网络凭据
【发布时间】:2014-02-28 17:12:33
【问题描述】:
我正在为 MS CRM 2011 开发自定义工作流程步骤。
我想知道是否可以检索代表运行此工作流的当前用户的 NetworkCredentials 对象?
此信息是否存在于CodeActivityContext 对象中?
下面是 Activity 定义的样子:
public class CustomActivity : CodeActivity
{
protected override void Execute(CodeActivityContext context)
{
...
}
}
【问题讨论】:
标签:
c#
dynamics-crm-2011
workflow-foundation
【解决方案1】:
不。我相信您将无法做到这一点。所有异步作业都在用于 AsyncService 登录的帐户的安全上下文中完成。
【解决方案2】:
如果您使用这些行,您可以找到运行此工作流程的人员:
protected override void Execute(CodeActivityContext context)
{
IWorkflowContext _Context = context.GetExtension<IWorkflowContext>();
IOrganizationServiceFactory _IOrganizationServiceFactory = context.GetExtension<IOrganizationServiceFactory>();
IOrganizationService xrmService = _IOrganizationServiceFactory.CreateOrganizationService(_Context.InitiatingUserId);
}
可以提供帮助的东西:_Context.InitiatingUserId
除了调用用户之外,您还必须在插件注册中注册您的插件
【解决方案3】:
我认为这取决于您使用的工作流程类型。例如,我使用了 StateMachine 类型,在 OnResumeBookmark 方法中可以发送对象变量,您可以将任何结构作为与恢复工作流的用户进行交互。恢复后,您可以设置一些工作流变量并根据需要使用它。
另一种方法是在创建新的 Workflow 实例时使用给定类型的 Workflow 参数。
你想用这个凭据做什么?