Designer VIEw的職責
1.呈現各種ActivityDesigner,向各個ActivityDesigner發送消息
2.窗體管理、命令路由、窗體滾動、托放、滾動、布局、打印和打印預覽
ISite的職責是綁定組件和容器,DesignerHost中所有的服務都可以通過ISite(GetService)得到
IServiceContainer是服務容器,可以形成樹,promote參數true,服務的添加和刪除操作會提交給基容器,這些接口的實現思路和winfrom的設計器實現思路非常像。
2 設計器序列化
像VS一樣,流程設計出來必須要持久化保存,下次使用或者修改的時候通過反序列化操作,我們可以得到曾經設計的流程。
我們可以將活動樹序列化為XAML或者代碼(默認),甚至可以序列化為(BPEL,DSL)等領域描述語言。序列化為什麼格式,可以在Acitivity的Attribute中指定。
TypeCodeDomSerializer:序列化為代碼
WorkflowMarkupSerializer:序列化為XAML文件
設計器序列化使用的類庫
4 代碼生成
如果流程中存在Code Activity,那麼還需要設計器能動態生成代碼。如果指定了TypeCodeDomSerializer,也需要動態代碼生成,最後整個WF活動才能通過編譯成為.Net下的Assembly
活動代碼生成在驗證後調用C#代碼編譯前執行,活動代碼生成實際上是給了一個使用CodeDOM生成代碼文件的機會。代碼生成下次說吧。