1 概述
对于绝大部分OA系统或是其他MIS系统来说,流程的控制是一个至关重要的环节,流程定义设计得灵活与否直接影响到系统的可用性和效率以及影响软件质量的提高,我有这样的亲身体会,在一个政府的OA系统中需要提供流程作为办公业务的基础支持,我们的团队没有太多的经验,虽然我们也是经过软件工程的一些步骤,但是在设计阶段没有做好的情况下开始了编程,在大部分的编程任务中,我们凭我们的耐力和任性克服了一些在设计不周所带来的问题,以及对需求理解不周带来的问题,但是我们在中间阶段做了总结,发现了流程部分是困扰我们整个团队开发任务顺利进行的主要问题,我们开始只是希望能通过对需求的进一步理解和现有的资源充分利用解决流程中出现的问题,但是实际上“流程”涉及到太多开发人员了,每个开发人员都需要流程的支持,不管是在办公行文还是在资产管理中的模块,都需要流程作为基础,困惑越来越大,设计也是一遍一遍的翻新、讨论,解决一部分问题,新的问题又来了。当然这是很多年以前的事,那时候我们没有足够的经验来应付一些问题,比如流程冲突,流程实例的控制,流程步骤的并行等等。在不断的挣扎中我们慢慢的悟出了一种“东西”,是不是可以设计一个中间控制模块实现所有的流程的控制,这个中间模块可以接受传入参数,根据传入的参数再决定传出什么参数,中间可能需要复杂的计算。就这样,我们慢慢的意识到解决了问题的关键就在这里,我现在要讨论的这个流程引擎设计思想已经超脱了我们原来设计的最后成果,虽然我们在当时用“古老”的办法设计了流称引擎,但是现在回忆起来,如果能有现在经验加上现在的资源,一定可以做的更好,今天我把流程引擎设计的主要思想与大家共享,希望对阁下有一定的帮助,如果能给你提供一种思路,也就达到我的目的了。
2 目的
我的目的是通过对流程引擎的设计分析,提供一种思路给需要做流程引擎的开发人员,如果你觉得这是一个可行的思路您就可以大胆的使用,如果你觉得这不合适您的思路,那么您就弃而远之,但是我可以坦白的告诉你,这是一个可行的设计思路。