2012-10-15 106 views
4

我有一個自定義工作流活動,它根據傳入的輸入參數(entityName和Name)創建記錄。現在,我希望能夠將創建的記錄作爲輸出參數傳遞。但是爲了用EntityReference類型聲明OutArgument,我必須設置ReferenceTarget屬性。由於我不知道正在創建哪個實體類型,我希望能夠動態設置該屬性。當我嘗試在'ReferenceTarget'屬性中使用屬性或變量時,它不會識別它。在CRM 2011中爲自定義工作流活動動態設置'ReferenceTarget'屬性

我該怎麼做?請幫忙。

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

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

[Output("Created Record")] 
[ReferenceTarget("contact")]  <<=== how do i set this dynamically?? 
public OutArgument<EntityReference> CreatedRecord { get; set; } 

回答

0

據我所知你不能,我懷疑這是爲了支持工作流編輯器的行爲,它如何知道要提供哪些選項?

當我在過去遇到過這種情況時,我創建了一個可用於快速生成我需要的各種版本的可視化研究模板。

-1
//Set lookup for Account(Customer) 
[RequiredArgument] 
[Input("Select Account to Assign")] 
[ReferenceTarget("account")] 
public InArgument<EntityReference> account { get; set; } 
+3

我認爲你需要詳細說明你的答案。 – JoshDM

0

最好的解決辦法(不是整齊的一個)是創造儘可能多的輸入參數你懷疑可能需要以ReferenceTarget在您的工作流程調用自定義工作流活動傳遞,然後根據具體的情況爲許多不同的實體類型並設置apt輸入參數,然後在工作流程的Execute方法中,您可以檢查哪個輸入參數爲Not Blank並進行相應處理。

工作流輸入參數仍然留在開發者的內部,所以如果它很好,只要您完成工作並在不同場景中靈活使用相同的自定義工作流活動,尤其是當您不知道什麼類型的實體參考您將不得不處理。

0

EntityReference本質上有一個目標實體類型。你不能改變這一點。如果需求是動態的,你可能更適合在工作流程組件中啓動插件或執行後續邏輯。

相關問題