使用silverlight構建一個圖形化流程設計器(一)(源代碼下載及在線演示)
最新源代碼下載:http://shareidea.net/opensource.htm
最新版本在線演示:http://www.shareidea.net/workflow.htm
技術支持QQ群:85444465
本文系列索引:
前言
Silverlight發布已經很久了,具體是什么就不多說,大家一定很清楚。最關心的就是其中的跨瀏覽器能力,以及強大的用戶界面表現能力。于是決定使用它來實現一個流程設計工具,以替代以前的流程設計器(原來是用vml實現,只能在IE瀏覽器上工作),因為第一次接觸silverlight,在學習、工作的過程中肯定會遇到很多的問題,將這個學習新知識、解決問題的過程記錄下來,肯定能找到許多志同道合的朋友,也請大家抱著這種態度閱讀本文。
本文主要講述使用vs.net2008開發一個基于silverlight的流程設計器,對于silverlight技術本身不做過多介紹,如果您不了解sliverlight,下面的一些鏈接會對您有所幫助。
1、 http://www.silverlight.net/(官方站點)
2、 http://silverlight.cn/index.php?q=node/516 (TerryLee的系列文章)
3、 http://blog.joycode.com/scottgu/archive/2008/02/29/114918.aspx(Scott Guthrie的系列文章)
1、 http://www.silverlight.net/(官方站點)
2、 http://silverlight.cn/index.php?q=node/516 (TerryLee的系列文章)
3、 http://blog.joycode.com/scottgu/archive/2008/02/29/114918.aspx(Scott Guthrie的系列文章)
在進入正文之前,先說一下開發環境的配置。使用vs.net2008作為開發工具,需要下載一個Silverlight tools for virsual studio 2008 sp1,地址在http://silverlight.net/GetStarted/,安裝后就可以使用vs.net2008來開發silverlight應用了。
本系列文章包含以下幾部分(可能有變)。
- 系統范圍
- 系統設計
- 類設計
- Xml設計
- 美化
- 重構
一、系統范圍
在開始之前,先來看一下系統將要完成什么樣的功能。具體來說,這樣的流程設計器應該具有以下的特點:
- 圖形化的方式顯示流程
- 支持拖拽創建和修改流程
- 導出圖形對應的xml描述文件
- 根據流程xml描述文件顯示流程圖
注意:本文只將焦點放置在圖形的描述上,不涉及流程的各種屬性,不過您完全可以在此基礎上創建一個包含流程屬性設置的應用程序。另外,本文是隨著程序的編寫進度而撰寫的,程序在不斷的完善,本文也將不斷的修改完善。在這個過程中將隨時提供可以運行的程序供下載。
下面的圖形具體的顯示了系統將要完成的功能:

二、系統設計
從上面的圖形來看,我們的系統將包含三個大的對象:
- 活動(activity):如上圖中的 方框圖(三角圖,圓形圖) 對應的對象,這個對象代表工作流中的一個活動。
- 規則(rule):如上圖中的帶箭頭的直線,這個對象代表了工作流中的規則。
- 設計面板:設計面板是流程圖的容器對象。
系統對象確定以后,再來看一下系統功能描述:
- 新增活動:創建一個活動的實例,并將這個實例添加到設計面板中。
- 新增規則:創建一個規則的實例,并將這個實例添加到設計面板中。
- 拖拽規則實例:規則實例可以被鼠標拖拽,規則實例表現為一個帶箭頭的直線,可以拖拽直線的開頭部分,也可以拖拽直線的結尾部分,或者拖拽直線中間的部分。拖拽開頭部分時,直線的開頭部分隨鼠標變化位置,但結尾部分位置不改變。拖拽結尾部分時,直線的開頭部分隨鼠標變化位置,但結束部分位置不改變。拖拽中間部分,整條直線隨鼠標改變位置。在拖拽開頭或者結尾部分,并在某一個活動實例上放開鼠標左鍵,那么將建立活動和規則的關聯關系。
- 拖拽活動實例:活動實例可以被鼠標拖拽,如果這個活動有相關聯的規則,那么規則位置也隨鼠標變化。
- 支持活動和規則的刪除:支持刪除活動實例和規則實例,刪除活動實例時,同時刪除關聯的規則實例。
- 根據圖形導出xml文件:
- 導入xml文件生成圖形:
通過上面的分析,對流程設計器有一個大概的了解,在進入具體的類設計之前還是有幾點需要提醒的:
- silverlight和asp.net的運行模型的不同和編制程序時的注意點。
Silverlight和asp.net都可以使用c#進行編程設計,但他們的運行方式卻截然不同。Asp.net中的c#代碼是需要您的web服務器執行的(IIS)后,將執行后的html代碼發送到客戶端的瀏覽器,而silverlight中的c#代碼卻是在客戶端的瀏覽器中運行的。
對于asp.net頁面,您的每一次請求都將實例化一個Page類的對象,你在服務器代碼中的C#代碼的各種變量都將被重新初始化。但是silverlight不需要發送代碼到服務器,而是在本地瀏覽器中完成了您編寫的C#代碼,這種方式更類似于傳統的VB或者VC編寫的c/s架構的程序。 - 正是基于以上的理解,我們把silverlight看作是c/s架構的編程方式,所以可以進行上面的各種類的設計。這樣使用c/s編程方式編寫一個流程設計器,通過silverlight技術,最終可以通過瀏覽器來給客戶使用。對客戶而言,這是一個b/s架構的程序,而對于程序員來說,其實是c/s架構的。
下面將進入具體的類的設計,并提供一個可運行的程序。待續。。。。。。
========================================================
比sharepoint更強大的表單功能,圖形化的流程設計,與asp.net完美結合,支持vs.net編程擴展
========================================================
浙公網安備 33010602011771號