.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工作流系统也象孪生兄弟一样,功能是一样的,只是实现方式不同。

工作流系统之二十五 .net工作流系统开发体会相关推荐

  1. javaweb学习总结(二十五)——jsp简单标签开发(一)

    一.简单标签(SimpleTag) 由于传统标签使用三个标签接口来完成不同的功能,显得过于繁琐,不利于标签技术的推广, SUN公司为降低标签技术的学习难度,在JSP 2.0中定义了一个更为简单.便于编 ...

  2. [系统安全] 四十五.APT系列(10)Metasploit后渗透技术信息收集、权限提权和功能模块详解

    您可能之前看到过我写的类似文章,为什么还要重复撰写呢?只是想更好地帮助初学者了解病毒逆向分析和系统安全,更加成体系且不破坏之前的系列.因此,我重新开设了这个专栏,准备系统整理和深入学习系统安全.逆向分 ...

  3. Reflex WMS入门系列二十五:将叉车纳入系统进行管理

    Reflex WMS入门系列二十五:将叉车纳入系统进行管理 据笔者所知,SAP WM 模块里是不对仓库里常用的叉车等仓库管理工具进行管理的.笔者发现,Reflex WMS系统则会在很多仓库部门日常操作 ...

  4. 无人驾驶汽车系统入门(二十五)——基于欧几里德聚类的激光雷达点云分割及ROS实现

    无人驾驶汽车系统入门(二十五)--基于欧几里德聚类的激光雷达点云分割及ROS实现 上一篇文章中我们介绍了一种基于射线坡度阈值的地面分割方法,并且我们使用pcl_ros实现了一个简单的节点,在完成了点云 ...

  5. 未处理异常和C++异常——Windows核心编程学习手札之二十五

    未处理异常和C++异常 --Windows核心编程学习手札之二十五 当一个异常过滤器返回EXCEPTION_CONTINUE_SEARCH标识符时是告诉系统继续上溯调用树,寻找另外的异常过滤器,但当每 ...

  6. linux exec 二程序,二十五、Linux 进程与信号---exec函数

    25.1 介绍 在用 fork 函数创建子进程后,子进程往往要调用一种 exec 函数以执行另一个程序 当进程调用一种 exec 函数时,该进程完全由新程序代换,替换原有进程的正文,而新程序则从其 m ...

  7. [系统安全] 二十四.逆向分析之OllyDbg调试INT3断点、反调试、硬件断点与内存断点

    您可能之前看到过我写的类似文章,为什么还要重复撰写呢?只是想更好地帮助初学者了解病毒逆向分析和系统安全,更加成体系且不破坏之前的系列.因此,我重新开设了这个专栏,准备系统整理和深入学习系统安全.逆向分 ...

  8. 二十五岁零基础转行做软件测试怎么样?

    俗话说得好:男怕入错行,女怕嫁错郎,那么你的入行方向决定着你的整个职业发展!! 所以在考虑要进入什么行业之前,必须要了解清楚这个行业的发展前景怎么样? 我们都知道,随着社会的发展,互联网行业涉及也越来 ...

  9. 二十五个软件测试经典面试题,你确定不收藏一波?

    二十五个软件测试经典面试题全在这里了,有兴趣的朋友建议收藏一波,或者留言交流! 1.在搜索引擎中输入汉字就可以解析到对应的域名,请问如何用LoadRunner进行测试? 建立测试计划,确定测试标准和测 ...

最新文章

  1. 自动注册 IIS6 的 MIME 类型
  2. c语言程序填空打印出1 1000,计算机应用类专业综合复习试题(一)
  3. Caffe学习系列(1):安装配置ubuntu14.04+cuda7.5+caffe+cudnn
  4. 爬虫普及,Web安全更需注意
  5. Spark GraphX
  6. c++万能头文件_初学Python,与C对比
  7. 一个关于导出excel模板的实例
  8. C/C++ _wcslwr_s 函数 – unicode 字符串大写转小写 - C语言零基础入门教程
  9. linux系统管理之单机系统管理 - 超级用户和进程管理
  10. Python实例:11~20例
  11. 20行Python代码爬取王者荣耀全英雄皮肤
  12. ENVI 5.3 下载及安装
  13. 人脸识别接口_智慧小区人脸识别门禁系统室外人脸识别门禁终端厂家
  14. 2020滑铁卢大学计算机科学学费,官宣!2020加拿大高校学费与涨幅~
  15. xp 安装IPv6后,无法上网
  16. 域名查询服务商的方法
  17. 黑鲨helo支持html吗,黑鲨2和黑鲨helo区别买哪个好
  18. 机器学习:kNN算法(一)—— 原理与代码实现(不调用库)
  19. windows检查磁盘命令
  20. apache-maven-3.8.5配置

热门文章

  1. Ocelot的使用(缓存实现)
  2. 用声网 Android UIKit 为实时视频通话应用添加自定义背景丨声网 SDK 教程
  3. UGC、PGC、OGC、PUGC、MGC了解学习
  4. dequeue java_[转载]队列queue和双端Dequeue
  5. PP实施经验分享(13)——SAP中BOM查询技巧CS11/CS12/CS13/CS14/CS15/CSMB
  6. Rstudio安装tinytex
  7. 微信小程序界面设计小程序中的WXSS(css)选择器课程-伪类-:nth-child() 伪类
  8. 重庆华清远见-前端部分阶段学习
  9. 流式细胞仪生物信息学CRO丨Cytapex功能简介
  10. I2C E2PROM通信