工作流系統之二十五 .net工作流系統開發體會

weixin_34402090發表於2010-08-22

.net工作流系統開發體會
公司的eworkflow自定義工作流系統,最初是開發了java版的。待java版的功能穩定後,就開始開發.net版的。

java版的eworkflow工作流系統,我們沒有依賴於任何框架,如struts,spring等,也沒有用hibernate,ibatis等orm對映工具。在支援web方面也有一套自己的mvc框架,都是純java的程式碼。因為工作流系統,比較注重的是工作流引擎核心的實現,其他的表現形式,人機互動等都相對不是工作流系統的重要部分,並且業務模組的自定義表單採用的是eform自定義表單,所以在mvc的框架中,我們只需要注重M部分的流程引擎的開發。

 

在用.net實現工作流系統的時候,只需要將java版的後臺純java的程式碼,用.net的c#來實現。java和c#就象孿生兄弟,長的太象了。都是純物件導向的,有類,介面,繼承,多型等。只是關鍵字的寫法不一樣。我們只需一點一點的將java實現的流程引擎程式碼用c#翻譯過來即可,保留所有的java設計思路,設計模式,包名類路徑等。為實現同樣的功能,c#的語法有的更簡單、方便一些。因為java版的eworkflow 沒有依賴於任何開源的框架,所以在實現上少了這些開源框架程式碼的移植。

工作流系統框架圖:

 


用c#實現eworkflow工作流系統主要需要修改如下方面的程式碼。
java版:
基本的語法,類定義,包名等
c#版:
改用c#的語法,關鍵字等。c#的名稱空間比java的package更靈活。

 

java版:
陣列,集合等方面的實現
c#版:
翻譯成對等的 陣列,集合等。

 

java版:
xml的實現採用jdk1.4自帶的包
c# :
xml的實現採用System.xml
在所有涉及xml節點部分的程式碼全部轉換過來。

 

java版:
資料庫操作採用jdbc
c#:
資料庫的實現比較麻煩。有oledb,sqlclient,oracleclient。
這部分的實現與java版的不同,但僅限於實現方面不同,.net工作流系統的資料庫實現採用了工廠模式封裝了oledb,sqlclient,oracleClient的不同,對外表現形式和java工作流系統一樣,在所有涉及資料庫操作的部分程式碼邏輯還是一樣。(.net工作流系統的資料庫實現見上一篇文章:如何構建支援多資料庫的.net工作流系統 http://www.cnblogs.com/webreport/archive/2010/08/13/1799022.html

 

java版:
反射部分有反射包
c#:
翻譯成c#的反射實現。

 

java版:
流程定義時自定義指令碼,採用了beanshell。
c#:
.net方面沒有類似的軟體,自己開發了一個支援自定義指令碼功能,指令碼語法是c#(和java版的一樣,java版的beanshell指令碼語法是java),實現動態編譯和載入。


還有很多細節方面的修改,散佈在各處。總之,java版的eworkflow工作流系統和.net工作流系統也象孿生兄弟一樣,功能是一樣的,只是實現方式不同。

相關文章