2011-07-06 64 views
0

如何將自定義代碼(活動文件不是codeactivity既不是activitydesginer)用作Reshosted工作流設計器中的活動?由活動文件構建的自定義活動

我做任何活動下,我所要建造的每一個(codeactivity & activitydesginer)文件,並WIRTE:

  new ToolboxCategory("new Toolbox") 
       {       
        Tools= 
        { 
         new ToolboxItemWrapper(typeof(Flowchart)), 
         new ToolboxItemWrapper(typeof(SimpleWebDesigner.TEST)), 

....等

AnyHelp?

回答

1

如果您正在討論加載從鬆散的xaml文件加載的Activity,可以這樣做。

您必須在運行時使用ActivityXamlServices類到Load(filename)文件。當你這樣做時,你會得到反序列化的Activity實例。當然,你必須有任何相關的程序集(由xaml文件中定義的活動引用的任何程序集)加載到AppDomain中,或者可用於加載Fusion加載程序可以找到它們的地方。

一旦你這樣做,你可以創建一個ToolboxItemWrapper通過activityInstance.GetType()

有一件事,由於Activity xaml文件是一個包含其他活動的Activity,因此您將得到默認的Designer,它只顯示空白標題。當您將它們拖放到設計界面時,沒有簡單的方法*擴展設計器中xaml文件中定義的子活動。 *我相信你可以構建一個實現IActivityTemplateFactory的類,你可以傳遞給ToolboxItemWrapper,它可以傳遞在你的xaml文件中定義的根Activity,這樣當你從工具箱中拖放項目時,它會自動添加所有在xaml文件中定義的子活動。但我從來沒有這樣做過,我不確定你是否可以。

+0

好的,謝謝。但我放入活動文件(.xaml)文件,如果活動。 IF條件爲(argument1 = True)// case boolean或(argument1 =「yes」)// case string 如何傳遞此參數的值? – Sofy

+0

@Sofy:這完全是另一回事。您通常通過提供一個Dictionary 來執行此操作,其中包含執行工作流時由其名稱所鍵入的值(argument1)的字典。 http://msdn.microsoft.com/en-us/library/dd489463.aspx – Will