Dynamics CRM - 自定义工作流 - 读取输入参数会阻止插件运行吗?

时间:2016-10-24 21:27:31

标签: c# dynamics-crm

我有一个自定义工作流活动,它接受一个名为" InputTest"的输入参数。这只是一个字符串。

[Input("InputTest")]
[RequiredArgument]
public InArgument<string> TargetEntity { get; set; }

在我的自定义工作流程活动中,我想阅读它,所以我执行以下操作:

string targetEntityValue = TargetEntity.Get(executionContext);

只要我添加该行,我的工作流程活动将不再执行。当我运行它时,状态将显示&#34;成功&#34;但是工作流程中的任何内容都不会运行,甚至工作流程开头的跟踪也没有说明已输入工作流程。 Diag日志中没有任何内容。当我运行SQL事件探查器时,只有少量语句添加到AsyncBase表中,表明工作流已运行并立即完成。

如果删除上面的行,则工作流程运行正常。我想知道我在这里做错了什么?为什么读取输入参数会导致CRM无法在工作流程中执行任何操作?

这几乎就像代码没有进入它的主要方法。

[Input("Entity")]
[RequiredArgument]
public InArgument<string> TargetEntity { get; set; }

protected override void Execute(CodeActivityContext executionContext)
{
    // Create the tracing service
    ITracingService tracingService = executionContext.GetExtension<ITracingService>();

    if (tracingService == null)
    {
        throw new InvalidPluginExecutionException("Failed to retrieve tracing service.");
    }

    tracingService.Trace("Entered TestWorkflow.Execute(), Activity Instance Id: {0}, Workflow Instance Id: {1}",
    executionContext.ActivityInstanceId,
    executionContext.WorkflowInstanceId);

    string targetEntityValue = TargetEntity.Get<string>(executionContext);
}

3 个答案:

答案 0 :(得分:1)

好吧,这很奇怪。最后我感到绝望,所以我创建了一个带有新程序集名称的新项目,将代码添加回来并进行部署,现在它工作正常。

所以......我想也是:

  • 这是我的第一个自定义工作流程插件,所以也许我会以某种方式设置原始项目错误,并且由于某种原因它没有进入其主要方法。

  • 在CRM服务器上部署原始插件存在某种问题。

为什么CRM会运行插件并返回&#34;成功&#34;没有运行主要方法,我不确定。

答案 1 :(得分:0)

如果要读取“自定义工作流活动”参数,则正确的语法为:

string targetEntityValue = TargetEntity.Get<string>(executionContext);

答案 2 :(得分:0)

你确定那里没有演员表吗?您正在尝试将实体对象转换为字符串