大多數時候,我在Windows Workflow Foundation 4編譯工作流時,它非常簡單和方便,先設計工作流 ,然後編譯,在運行時就會有一個用於創建和運行工作流的.NET類型。主要缺點是,這種方法不是很靈活 ,有時你希望能夠在運行時改變您的工作流的定義或者將它存儲在數據庫中,重新編譯是不可取的。
幸運的是,我們還可以從XAML文件本身加載工作流和執行返回的工作流活動。使用 ActivityXamlServices類能做到這些,它將讓我們加載XAML文件並返回一個活動,確切地說,它返回一個 封裝好流程定義的DynamicActivity。
最簡單的方法就是傳遞一個文件名做參數調用Load() ,例如:
Activity workflow = ActivityXamlServices.Load("YourWorkflow.xaml");
如果您使用本地程序集中的活動或其他類型,這是要失敗的,但你可以用稍微詳細方式去實現,例如 :
var settings = new XamlXmlReaderSettings() { LocalAssembly = typeo (SendForManualApproval).Assembly };
var reader = new XamlXmlReader("YourWorkflow.xaml", settings);
Activity workflow = ActivityXamlServices.Load(reader);
需要使用XamlXmlReaderSettings來說明XAML需要引用那些本地的程序集。
備注:這篇文章的使用環境是.NET framework 4.0 RC 1
原文:http://msmvps.com/blogs/theproblemsolver/archive/2010/03/07/loading-xaml-workflows -in-wf4.aspx