CodeActivity GetExtension 空

CodeActivity GetExtension null

说我从未使用过 Workflow 并且我是从样本开始编码的,但我对 CodeActivityContext.GetExtension<> 函数有疑问。

这是构造函数

public SendReportMethod(Guid var1, string var2)
{
    this.var1= var1;
    this.var2= var2;
}

这是给我错误的代码:

protected override void Execute(CodeActivityContext  executionContext)
{
    IWorkflowContext context = executionContext.GetExtension<IWorkflowContext>();
    IOrganizationServiceFactory serviceFactory = executionContext.GetExtension<IOrganizationServiceFactory>();
    IOrganizationService service = serviceFactory.CreateOrganizationService(context.UserId);
}

变量都是null,最后一个显然给我nullPointer。

这是我调用 CodeActivity 的方式:

WorkflowInvoker.Invoke(new SendReportMethod(interventionID, codiceFornitore));

我做错了什么?任何帮助将不胜感激。谢谢

看起来您正在使用 Dynamics CRM,并且您想在工作流中使用自定义工作流 activity。这是您如何执行此操作的示例(可在 https://msdn.microsoft.com/en-us/library/gg334455.aspx 找到)

另外,这里有一个更全面的例子:https://www.credera.com/blog/technology-insights/microsoft-solutions/three-essential-custom-workflow-activities-crm-2013/

public sealed class SimpleSdkActivity : CodeActivity
{
    [Input("Account Name")]
    [Default("Test Account")]
    public InArgument<string> AccountName { get; set; }
    protected override void Execute(CodeActivityContext executionContext)
    {
        //Create the tracing service
        ITracingService tracingService = executionContext.GetExtension<ITracingService>();

        //Create the context
        IWorkflowContext context = executionContext.GetExtension<IWorkflowContext>();
        IOrganizationServiceFactory serviceFactory = executionContext.GetExtension<IOrganizationServiceFactory>();
        IOrganizationService service = serviceFactory.CreateOrganizationService(context.UserId);

        var entityName = AccountName.Get<string>(executionContext);
    }
}