写下这个这题目我知道意味着一项艰巨冗长的任务开始了,做工作流方面的研发已经7年了,总算能拿出一些东西来,虽然走过很多弯路,但最终都变成收获。今天把一些心得和成果共享出来,和大家一起交流、探讨,也希望能得到大家的宝贵意见和建议。
说实话,不知道这个专题能持续多久,能持续到什么程度,但我尽力把工作流系统的核心和精华共享给大家,在开始详细的介绍之前,我会先介绍为什么要开发工作流系统,让大家充分体会到工作流系统的必要性和前景;然后我会介绍为什么要使用.net来开发工作流系统,让大家了解语言选择的原因;接下来详细介绍工作流系统的组成部分和每一部分的核心实现代码,在介绍核心代码的过程中,会结合工作流原理进行阐述,让读者真正从思想和应用上学会开发工作流系统。
声明:该系列文章中设计到的源码都属于本人编写,不会存在版权问题,本人已经申请版权保护,本着开源的精神,大家可以放心拿来研究,但不能用于商业用途。
第一篇 为什么要开发工作流系统
我们先来了解一下行业知识和行业背景,先来了解几个概念,什么是工作流系统,什么是BPM。工作流系统是以任务为中心,按照先后顺序把任务和数据有机的连接起来,使不同的人做不同的事,实现协同工作,这样的系统就是工作流系统,它体现在几个要素上:任务,数据,顺序,协同,这是工作流系统必须实现的四个要素。再抽象一点“达成企业各种业务环节(包括人和任务)整合的全面管理模式”,这种抽象的描述就是BPM(Business Process Management的英文字母缩写),后面没有什么特殊说明我们就称工作流系统为BPM。概念方面的知识大家可以百度搜索,这里不再做详细介绍。
国内做工作流系统的厂家很多,大部分是java语言的,全球做BPM系统的更是五花八门,也有几款比较流行的开源系统比如JBPM(java语言),NetBPM是JBPM的Net版,这几款很复杂,主要是学习资料很少,而且还严重的水土不服,国外的软件进入中国好像都有找个问题,原因是国外没有我们这么复杂的组织机构。国内的几款bpm系统做的还不错,java领域的不在我们讨论范围,主要研究NET领域的,最早的东兰的LiveFlow,合明的BPM系统,这两个出自一家,后来的H3,主要偏向于系统集成,最近方正也搞了一套,看了视频介绍还不错。这几套BPM产品都是很成熟的系统,包括流程设计器和表单设计器,是一整套系统,不可分割,对与全新开发业务系统的用户来说比较合适,对于已有业务系统的用户并不是他们的优势。
可见BPM系统正在迅速崛起,为什么会有这个趋势呢?需要我们从企业信息化需求找原因,只有这样我们才能明确是否值得花大力气研发BPM。
企业信息化建设分四个阶段,每个阶段有不同软件需求。如下图:
BPM正是第2和第3个阶段的工作,软件行业在国内发展了这么多年,如今已经到了企业流程再造的阶段,所以这方面的需求会大大增加,这也就是BPM系统需求为什么这么旺盛的原因。要详细了解企业信息化建设四个阶段的请访问《企业ERP系统的四个阶段》这篇文章,要想了解为什么要使用工作流系统的请访问《HF业务流程管理解决方案》这篇文章。
以上我们从行业背景和需求介绍了为什么要开发工作流系统,不知道您看到这里是不是已经充满信心,看好BPM的前景呢?
如果您已经充分认识到开发BPM系统的重要性和紧迫性,那么我们开始进行语言选型。
我们有俩个选择一是Java,二是NET,其他的也就不用考虑了。
目前Java领域的比较多,原因是Java开源做的比较好,留下来很多好东西,并不断完善。但是版本比较乱一个公司一个标准,学习成本很高,基本上都是
熟悉的人在玩,新人很少能玩的了的,成本高一般公司也玩不起,随着Net的兴起,java语言的程序员也面临着挑战。Net成本低,程序员也多,这个领域开源的好东西少,很多应用还是空白的,这正好给我们一个机会,物以稀为贵吗,我们选择使用Net语言来开发BPM,谁先做出来谁就是前辈。
选好了语言我们,我们又面临着一个选择,伟大的无所不能的微软在Net3.0推出了一WWF框架,支持工作流 系统开发,当初得到这个消息,很兴奋,但是研究一段时间后,很失望。一句话总结WWF,它只是一个底层框架,只告诉你它能干什么,怎么干还得你自己来实现。而且WWF极其复杂,学习成本很高。既然这样,我们是否可以按照工作流原理自己实现一套流程系统呢?回答是肯定的。这也正是该系列文章的内容。要详细了解WWF和自开发流程的区别的请访问《微软wwf与自开发工作流引擎的比较》这篇文章。
本篇到这里就该结束了,如果看到这里你不能认识到自己开发BPM的重要性的话,那么你可以再去好好理会一下,再去查查相关的资料,或者跟同行交流一下。
下一篇我们正式开始介绍如何开发BPM系统。