比方說,我有progrmatically創建這樣我知道執行它是第一序列化對象ActivityBuilder
到XAML
如何在不序列化的情況下執行ActivityBuilder?
ActivityBuilder<int> ab = new ActivityBuilder<int>();
ab.Name = "Add";
ab.Properties.Add(new DynamicActivityProperty {Name = "Operand1", Type = typeof (InArgument<int>)});
ab.Properties.Add(new DynamicActivityProperty {Name = "Operand2", Type = typeof (InArgument<int>)});
ab.Implementation = new Sequence
{
Activities =
{
new WriteLine
{
Text =
new VisualBasicValue<string>(
"Operand1.ToString() + \" + \" + Operand2.ToString()")
}
}
};
一種方式的工作流。接下來,使用ActivityXamlServices
加載序列化的XAML
。爲參數創建一個字典。使用WorkflowInvoker
或WorkflowApplication
執行它是否有任何方法來執行此工作流而無需將活動構建器轉換/序列化爲XAML?
WorkflowApplication和WorkflowInvoker將一個Activity作爲輸入執行。我能以某種方式直接使用activityBuilder.Implementation
與WorkflowApplication
或WorkflowInvoker
?
爲什麼我要這個?因爲我們有用戶用來創建和執行工作流的工作流設計器。用戶還可以編程創建工作流程。工作流可以達到80MB大小。由於將80MB文件序列化並從XAML
進行反序列化,這會損害應用程序的內存。我想以某種方式跳過這一步並直接執行活動。
它有道理嗎?
默認情況下VS設計者使用ActivityBuilder。我想你是在重新託管版本;我從來沒有嘗試過,但不能強迫它使用DynamicActivity而不是ActivityBuilder?只需將一個空的DynamicActivity序列化爲Designer.Text。 – Joao 2012-02-15 11:40:10
那麼,在運行時執行它的另一種方法是將ActivityBuilder轉換爲DynamicActivity。這只是幾行代碼,然後您可以像執行WorklowInvoker/WorkflowApplication一樣執行DynamicActivity – Joao 2012-02-15 11:43:15
您可以指出我要編寫哪些代碼嗎?我無法找到它 – 2012-02-15 11:56:01