本篇开始我们来一步一步开发工作流系统,首先我们要确定工作流系统有那几部分组成,主要的几个组成部分如下图:
BPM系统由三部分组成:1、流程配置工具WorkFlowTool(简称WFTool),2、流程引擎WorkFlowEngine(简称WFEngine),3、业务应用平台C/S(WinApp)或B/S(WebApp)版,将来可能还有WAP手机版。为了便于介绍,HF业务流程管理平台是我们给BPM系统起的名称。
流程系统必不可少的三部分,流程配置工具主要是流程设计器,用来为流程建模,流程引擎主要是控制流程流转的,业务应用平台主要是用户使用的业务系统。流程设计器要求操作灵活,所以必须提供可视化的操作方式,目前很多OA的流程设计都是用列表的形式实现的,这种方式并不友好,所以我们必须使用所见即所得的可视化方式,由于对操作的灵活性的特殊要求,所以流程设计器尽量使用WinForm的形式来设计,目前WebForm的流程设计器开发难度大使用效果也不好,也许有人会问WinForm能实现远程管理吗?我们可以通过WCF的方式实现远程管理,所以我们的数据库底层必须支持远程访问(后面会介绍如何实现支持多数据库并且支持本地和远程访问的数据库访问层)。
以上三部分每一部分又包括很多内容,先来说流程配置工具,这是流程原理方面的内容,所以大家要耐心继续看下去。
1、流程配置工具
顾名思义,流程配置工具是为流程流转做数据配置的,流程引擎要工作,需要有人的支持,需要根据数据条件判断流转方向,每一个任务要处理那些数据等等,这些信息需要提前配置好。所以必不可少的几个模块如下图:
流程配置工具至少包括:组织机构、流程管理、用户和权限管理、表单管理。
2、流程引擎
自主研发一套工作流引擎,使用Net语言和SQL Server数据库做持久化,这些内容后面会一一介绍。
3、业务应用平台
业务展现平台是最终用户使用的工作台,可以分B/S系统和C/S系统。
以上这么多模块,是流程系统的基本模块,缺一不可,随着应用的深入可能会增加其他模块,比如流程统计分析,表单设计器等等。这要求我们的系统必须具备很强的扩展性。我们在设计工作流系统的时候,要考虑到这一点。所以我们要开发的不是一般的系统,而是一套具有创造能力的应用平台。
也许有人会说,表单设计器也应该是流程系统不可缺少的一部分,这里我不这么认为,首先表单设计器只能解决简单的应用(涉及到流程的应用没有简单的),稍微复杂的应用就用不上了,再说用一成不变的方式去实现复杂的业务,用户体验和执行效率肯定不好,所以表单设计器并不是必须的,使用表单设计器无非是想提供开发效率,这里我们可以总结一套快速开发的方法,而不是追求表单设计器。在我们实际项目中经常遇到这样的情况,客户觉得表单设计器这个东西很先进,特别是零代码的,只要配置就可以实现业务,但是这种新鲜劲往往会被现实应用所打击,而最终表单设计器成为鸡肋。
确定了流程系统的组成,我们按顺序一步一步来介绍,首先我们来介绍如何开发流程配置工具,这里面的技术难点是可视化的流程设计器。在开发配置工具的时候我们会遇到一个问题,流程配置工具里面包含很多模块,如何很好的管理这些模块,将来我们我们再增加模块怎么办?是不是能提供一种动态添加模块的功能?其实我们在做任何应用系统的时候都可能遇到这样的问题,都希望是能够根据用户要求动态的配置模块,所以我们首先要做一个能灵活管理模块的应用框架。
如何来实现这样的应用框架呢?我们首先想到的技术就是动态调用,即把每个模块做成DLL,然后用主程序动态的加载DLL。下一篇我们将详细介绍这些内容。