我正在为 MS CRM 2011 开发自定义工作流程步骤。
我想知道是否可以检索NetworkCredentials
代表运行此工作流的当前用户的对象?
此信息是否存在于CodeActivityContext
对象中?
以下是活动定义的外观:
public class CustomActivity : CodeActivity
{
protected override void Execute(CodeActivityContext context)
{
...
}
}
不。我相信你做不到这一点。所有异步作业都是在用于 AsyncService 登录的帐户的安全上下文中完成的。
使用以下行,您可以找到运行此工作流的人员:
protected override void Execute(CodeActivityContext context)
{
IWorkflowContext _Context = context.GetExtension<IWorkflowContext>();
IOrganizationServiceFactory _IOrganizationServiceFactory = context.GetExtension<IOrganizationServiceFactory>();
IOrganizationService xrmService = _IOrganizationServiceFactory.CreateOrganizationService(_Context.InitiatingUserId);
}
可能有所帮助的东西:_Context.InitiatingUserId
并且除了调用用户之外,您还必须在插件注册中注册您的插件
我认为这取决于您使用的工作流程类型。例如,我使用了状态机类型,其中在OnResumeBookmark方法中可以发送对象变量,您可以在其中将任何结构作为与恢复工作流的用户的交互。恢复后,您可以设置一些工作流变量并根据需要使用它。
另一种方法是在创建新的工作流实例时使用给定类型的工作流参数。
您想用这个凭据做什么?