簡體   English   中英

Dynamics CRM 2011自定義工作流活動問題

[英]Dynamics CRM 2011 Custom Workflow Activity Issue

我創建的crm 2011自定義工作流程活動遇到問題。 工作流程活動是取消和續訂合同的工作流程的一部分。 該活動在重新啟動異步服務后起作用,但是此后很快就停止工作。 根據程序集是否被沙盒化,我會收到不同的錯誤消息。 以下是我決定嘗試對程序集進行沙箱處理之前收到的原始消息。

工作流程因錯誤而暫停:

未處理的異常:System.TypeLoadException:無法從程序集“ Microsoft.Xrm.Sdk,版本= 5.0.0.0,文化=中性,PublicKeyToken = 31bf3856ad364e35”中加載類型“ Microsoft.Xrm.Sdk.OrganizationRequestCollection”。 在ANHWP_WF_Library.CreateWarrantyPolicy.Execute(在System.Activities.CodeActivity.InternalExecute(ActivityInstance實例,ActivityExecutor執行器,BookmarkManager書簽管理器)在System.Activities.Runtime.ActivityExecutor.ExecuteActivityWorkbook.ExecuteBody(ActivityExmarkutor的執行者,BookManager

然后在沙箱之后...

工作流程因錯誤而暫停:

未處理的異常:System.ArgumentNullException:值不能為null。 參數名稱:Microsoft.Crm.Workflow.Services.ActivityReferenceService.InitializeActivity(ActivityReference activityReference)的System.Activator.CreateInstance(Type類型)的System.Activator.CreateInstance(Type類型,布爾非公共)類型。 System.Activities.NativeActivity.OnInternalCacheMetadata(Boolean createEmptyBindings)在System.Activities.Activity.InternalCacheMetadata(Boolean createEmptyBindings,IList 1& validationErrors) at System.Activities.ActivityUtilities.ProcessActivity(ChildActivity childActivity, ChildActivity& nextActivity, Stack Boolean createEmptyBindings,IList 1& validationErrors) at System.Activities.ActivityUtilities.ProcessActivity(ChildActivity childActivity, ChildActivity& nextActivity, Stack 1和活動1& validationErrors) at System.Activities.ActivityUtilities.ProcessActivity(ChildActivity childActivity, ChildActivity& nextActivity, Stack ActivityCallStack parentChain,IList 1& validationErrors, ProcessActivityTreeOptions options, ProcessActivityCallback callback) at System.Activities.ActivityUtilities.ProcessActivityTreeCore(ChildActivity currentActivity, ActivityCallStack parentChain, ProcessActivityTreeOptions options, ProcessActivityCallback callback, IList 1& validationErrors, ProcessActivityTreeOptions options, ProcessActivityCallback callback) at System.Activities.ActivityUtilities.ProcessActivityTreeCore(ChildActivity currentActivity, ActivityCallStack parentChain, ProcessActivityTreeOptions options, ProcessActivityCallback callback, IList位於System.Activities.ActivityUtilities.CacheRootMetadata(Activity活動,LocationReferenceEnvironment hostEnvironment,ProcessActivityTreeOptions選項,ProcessActivityCallback回調,IList`1&validationErrors)位於System.Activities.Hosting.WorkingInstance.ValidateWorkflow(WorkflowInstanceExtension) System.Activities.WorkflowApplication.Enqueue(InstanceOperation操作,布爾值推送)處的Activities.WorkflowApplication.EnsureInitialized()在System.Activities.WorkflowApplication.InternalRun(TimeSpan超時,布爾值)處System.Activities.WorkflowApplication.WaitForTurn(InstanceOperation操作,TimeSpan超時) Microsoft.Crm.Workflow.ActivityHost.StartWorkflowExecution(活動工作流,ICommonWorkflowContext上下文)處的isUserRun)(Microsoft.Crm.Workflow.ActivityHostBase.StartWorkflow(ICommonWorkflowContext上下文,活動preLoadedActivity)

這些錯誤對我來說都沒有意義,因為它們似乎是CRM本身的問題,而不是我的代碼的問題。 同一程序集中的其他活動仍然運行良好,因此我的活動必定是一個問題。 誰看過這個嗎? 提前致謝。

編輯:

因此,問題似乎與我重用代碼的願望有關(就像任何優秀的開發人員一樣)。 我所做的是創建了一個服務類來處理合同的取消和續簽,以便可以從工作流活動的不同部分調用相同的代碼。 現在看來,CRM不太喜歡這種方式。 我嘗試將方法移出服務類,並移入工作流活動類內的某些私有方法,但我遇到了相同的錯誤。 最終,我決定看看如果將每一行代碼放在工作流活動和中提琴的實際Execute方法中會發生什么情況! 沒有更多的錯誤。 這對我來說似乎有點奇怪,因為從我所在的位置實例化並調用其他類應該在同一程序集中正常工作,只要這些類是從execute方法中實例化的,並且未全局定義。 有什么想法為什么呢?

您是否要更改自定義活動的代碼(特別是輸入/輸出?)。如果是這樣,則需要確保增加自定義程序集的內部版本號,然后才能在CRM中重新注冊它。 當您更新內部版本號時,這會告訴CRM的異步服務重新加載您的自定義程序集。

嘗試從CRM取消注冊工作流程,然后重新注冊。 不幸的是,在取消注冊之前,您必須從所有工作流程活動中刪除自定義步驟。 如果您更改了自定義工作流程活動的輸入/輸出,則必須執行相同的注銷/注冊過程。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM