.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://eworkflow.iteye.com/admin/blogs/736714)
java版:
反射部分有反射包
c#:
翻译成c#的反射实现。
java版:
流程定义时自定义脚本,采用了beanshell。
c#:
.net方面没有类似的软件,自己开发了一个支持自定义脚本功能,脚本语法是c#(和java版的一样,java版的beanshell脚本语法是java),实现动态编译和加载。
还有很多细节方面的修改,散布在各处。总之,java版的eworkflow工作流系统和.net工作流系统也象孪生兄弟一样,功能是一样的,只是实现方式不同。
<script type="text/javascript"></script>