【问题标题】:CRM 2011 Custom Workflow Continually in 'Waiting' StatusCRM 2011 自定义工作流持续处于“等待”状态
【发布时间】:2015-04-09 18:06:16
【问题描述】:

我正在处理 CRM 2011 中的自定义工作流程。我创建了工作流程,以便在我获得特定类型的活动(自定义活动)后创建几条记录(发票和发票产品)。在测试期间,我通过了我将使用的实体的特定 GUID(所述实体的创建将是工作流的触发器)。当我为要使用的记录传入 GUID 时,工作流工作正常。但是,一旦我在 CRM 中加载 dll 文件并尝试触发工作流,它就会进入等待状态并停留在那里。我已经尝试使用throw new InvalidPluginExecutionException("Error occurred in MethodName:" + ex.Message); 在我的所有函数上捕获块。它不会失败或停止,只是继续处于等待状态。

我已尝试重置:

  • IIS
  • 异步服务
  • 同步服务 (已尝试编辑:
  • 添加版本控制
  • 卸载/重新安装程序集)

目前我正在尝试提取PrimaryEntityId 的活动ID,因为我的主要实体是我需要用于工作流的记录。我唯一需要从该记录中得到的就是 ID。

public String GetFeeId(WorkFlowHelper workFlowHelper, CodeActivityContext executionContext)
    {
        String feeRecordId = string.Empty;
        try
        {
            var primaryEntity = workFlowHelper.workFlowContext.PrimaryEntityId;
            if (primaryEntity != null)
            {
                feeRecordId = workFlowHelper.workFlowContext.PrimaryEntityId.ToString();
            }
            if (primaryEntity == null)
            {
                workFlowHelper.WorkFlowError("Primary Entity is null");
            }
        }
        catch (Exception ex)
        {
            if (workFlowHelper.debugMessagesOn == true)
            {
                Console.WriteLine("Id is blank!");
            }
            workFlowHelper.WorkFlowError(ex.ToString());
            throw new InvalidPluginExecutionException("Error occured in ConnectionInfo Method:" + ex.Message);
        }
        return feeRecordId;

关于可能导致此问题的任何想法?

谢谢,

【问题讨论】:

    标签: c# dynamics-crm-2011 workflow-activity


    【解决方案1】:

    听起来 CRM 可能在加载您的程序集时遇到问题,或者将它与同一程序集的旧版本混淆。

    您是否在开发和部署工作流程序集时对其进行版本控制,并且该程序集是否使用强名称密钥进行签名?

    在 Visual Studio 中的“项目”选项卡上,确保增加内部版本/修订版号。见这篇文章:http://gonzaloruizcrm.blogspot.com/2011/08/assembly-versioning-in-crm-2011.html

    如果您不增加 Build/Revision,CRM 可能不会将您更新的程序集视为“更新”,并且可能会尝试使用较旧的缓存版本,这可能会导致各种问题。

    您也可以尝试完全取消注册程序集,然后注册您的最新版本。您可能还需要更新您的工作流程。

    【讨论】:

    • 我没有使用修订号,我会试一试,看看是否有帮助。但是,我已经卸载并重新安装了该程序集;我已经签署了大会。这可能会混淆我的程序集的版本,但即使在我删除并重新注册程序集之后,这可能是有道理的?
    • 我已经添加了修订号,卸载了程序集并重新安装了它,它仍然没有改变:状态仍然是“等待”并停留在那里。还有其他建议吗?
    • 您是否尝试过为异步服务启用跟踪并查看跟踪日志中是否出现错误?
    • 我启用了跟踪,但不知道如何查看它。我刚刚发现我可以查看所有系统作业及其包含的消息。谢谢!您应该将其添加到您的答案中,因为这可以让我查看正在发生的事情。
    【解决方案2】:

    这是最简单的方法(拿出你的 WorkFlowHelper)..

    public String GetFeeId(CodeActivityContext executionContext)
    {
        // Create the context
        var context = executionContext.GetExtension<IWorkflowContext>();
        var feeRecordId = context.PrimaryEntityId
    }
    

    【讨论】:

      猜你喜欢
      • 2013-02-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-03-03
      • 1970-01-01
      • 2015-12-04
      相关资源
      最近更新 更多