2014-02-14 31 views
0

我正在開發CRM 2011中的自定義工作流。我創建了一個工作流,創建一對記錄(發票和發票產品),一旦我獲得特定類型的活動自定義活動)。在測試過程中,我通過了將與之合作的實體的特定GUID(創建所述實體將成爲工作流的觸發器)。當我傳入我想要處理的記錄的GUID時,工作流程正常工作。但是,一旦我加載了CRM文件裏面的dll文件,並試圖觸發工作流程,它就進入了等待狀態並停留在那裏。我已用throw new InvalidPluginExecutionException("Error occurred in MethodName:" + ex.Message);嘗試所有函數的catch塊。它不會失敗或停止,而是繼續處於等待狀態。客戶關係管理2011自定義工作流持續處於「等待」狀態

我試圖復位:

  • 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; 

有什麼想法可能會導致這種情況?

感謝,

回答

1

這聽起來像CRM可有一個問題,你裝裝配件或混淆它的舊版本相同的組件。

在開發和部署工作流程組件時是否對版本進行了版本控制,並且是使用強名稱密鑰簽名的程序集?

在項目選項卡上的Visual Studio中,請確保您增加構建/修訂版本號。看到這篇文章:http://gonzaloruizcrm.blogspot.com/2011/08/assembly-versioning-in-crm-2011.html

如果你不增加構建/修訂版本,CRM可能不會看到你的更新程序集作爲「更新」,並可能試圖使用一箇舊的緩存版本,這可能會導致各種問題。

您也可以嘗試徹底註銷程序集,然後註冊最新版本。您可能還需要更新您的工作流程。

+0

我還沒有被使用的版本號,我會給一個鏡頭,看看有沒有什麼幫助。然而,我已經卸載並重新安裝了該組件;我已經簽署了大會。這可能是有道理的,它會混淆我的程序集的版本,但即使在我刪除並重新註冊程序集之後? – Bactos

+0

我已添加修訂版本號,卸載程序集並重新安裝,但仍未更改:狀態仍處於「等待」狀態並保留在此處。還有其他建議嗎? – Bactos

+1

您是否嘗試過啓用異步服務跟蹤並查看您是否在跟蹤日誌中發生錯誤? –

0

這是最簡單的方法(取出你的WorkFlowHelper)..

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