|
(由于要求下載的人很多, 我現(xiàn)傳上來供大家下載學(xué)習(xí), 點(diǎn)擊下載 作者的網(wǎng)站:www.) 在各種應(yīng)用中有b/s的系統(tǒng),有c/s的系統(tǒng)。不同的系統(tǒng)工作流程都是相似的。當(dāng)今web應(yīng)用日益廣泛,因此本文將講述如何在web上實(shí)現(xiàn)工作流設(shè)計(jì)器。 由于本人的經(jīng)驗(yàn)所限,所選技術(shù)只在微軟路線上。經(jīng)過查閱資料,發(fā)現(xiàn)web上的圖形表現(xiàn)形式有svg,vml等等。之所以選擇vml是因?yàn)樗繛g覽器 IE就可以完全支持,不用安裝插件,SVG就要安裝插件。雖然從一些文章說的,VML已經(jīng)過時(shí),查看文檔大部分是1999年的,但VML作為一種技術(shù),感覺還是成熟的。后來還是選擇了VML。 在web上作設(shè)計(jì)器,圖形有了,剩下的就是控制這些圖形元素。工作流程有兩種基本元素一種我們稱之為節(jié)點(diǎn),一點(diǎn)稱之為關(guān)系(節(jié)點(diǎn)間的關(guān)系)也就是工作流的流向問題。下面為兩種基本形狀。
要控制圖形,因?yàn)閂ML是一種標(biāo)記語言,符合基本HTML標(biāo)記的規(guī)范,所有能控制HTML的都可以用來控制VML標(biāo)記對象。 要實(shí)現(xiàn)工作流設(shè)計(jì)器有幾個(gè)要點(diǎn): 1、支持工作流元素的添加、刪除、移動。 2、建立節(jié)點(diǎn)間的關(guān)系 3、將設(shè)計(jì)好的流程保存到永久物質(zhì)里(如文件,數(shù)據(jù)庫等) 4、可以從永久數(shù)據(jù)里讀取數(shù)據(jù),并表現(xiàn)為圖形。 第一點(diǎn):比較好完成,網(wǎng)絡(luò)上有較多的腳本控制圖形的拖動。 第二點(diǎn)呢,我們采用拖動某個(gè)節(jié)點(diǎn)的尖頭,并繪制線段,當(dāng)鼠標(biāo)彈起時(shí),查看當(dāng)前鼠標(biāo)下的結(jié)象,繪制關(guān)系。 數(shù)據(jù)存儲為了方便應(yīng)用,我們使用XML文件存儲(當(dāng)然,在寫這篇文章時(shí),已經(jīng)完成了數(shù)據(jù)庫的存儲,XML只是為了演示方便而作。)數(shù)據(jù)庫的數(shù)據(jù)與XML的轉(zhuǎn)化可以使用XSD來完成。 為了將XML數(shù)據(jù)表現(xiàn)為VML標(biāo)記,我們采用了習(xí)慣的作法,XSL可擴(kuò)展樣式,將XML表現(xiàn)為VML標(biāo)記。 將設(shè)計(jì)好的圖形,保存為數(shù)據(jù),我們采用在客戶端形成XML數(shù)據(jù),傳到服務(wù)器端。在寫文章時(shí),還未完全實(shí)現(xiàn)。工作還在繼續(xù),也許明天或后天能全部完成。 現(xiàn)在我們先來看一下作好的工作流設(shè)計(jì)器的樣式: 演示地址位于:http://www./demo/VMLWorkFlow/WorkFlowDesign.aspx 左邊為設(shè)計(jì)器,右邊為工具欄。 可從右邊工作欄增加節(jié)點(diǎn),并通過拖動節(jié)點(diǎn)間而增加關(guān)系。 新增的節(jié)點(diǎn)未指定部門,可以點(diǎn)鍵菜單來指定部門。 源文件已經(jīng)在文章中打包了,以供下載。 相關(guān)文件描述如下: Control.js 控制圖形的腳本 Designer.ascx 用于設(shè)計(jì)器的控件 EditDepartment.aspx 選擇部門的頁面 Flow.xsd 工作流原始數(shù)據(jù)樣式 WorkFlow.xsd 轉(zhuǎn)換后的數(shù)據(jù)格式 WorkFlow.xslt 將XML轉(zhuǎn)為VML的樣式表 WorkFlowBLL.cs 業(yè)務(wù)邏輯層,包含兩種數(shù)據(jù)的轉(zhuǎn)換格式以及從數(shù)據(jù)中設(shè)計(jì)工作流位置信息的初始值 WorkFlowDAL.cs 數(shù)據(jù)訪問類,用于從數(shù)據(jù)庫中提取數(shù)據(jù)。 WorkFlowData.xml 用于演示的XML數(shù)據(jù)源 WorkFlowDesign.aspx 設(shè)計(jì)器的承載頁面。 如果各位有什么好的意見和建議可以論壇發(fā)表,有什么問題也可以提。 我去吃飯了,改天聊。 |
|
|