所有管理类软件的开发过程中,无论软件规模大小,业务逻辑的编码工作将占据整个开发周期的半壁江山。往往软件产品的成败,很大程度上取决于此。
我在2007之前做过的几个项目当中,业务逻辑基本是以程序代码方式实现,虽然也引入了配置方式,但是项目的开发进度也没见提高多少。在我进行资料收集时,一个不算很新概念映入我的眼帘:工作流。经过开发过程中的总结,目前我的工作流引擎也趋于稳定,并开发相应的流程设计器。
流程设计器采用纯GDI+进行绘制,并无采用与表单设计器相同方式实现(Designer)。我的一个同事曾问我,为什么不用Designer的方式实现。确实那样实现起来相对来说开发进度会快很多,但使用GDI+绘制具备如下优点:
1、性能比Designer方式高;
2、程序移植性好;
3、绘制逻辑与流程逻辑分离,程序易读性高。
根据我的项目经验和工作流标准,将流程分为两种类型:
1、单表单流程:一个流程中的所有节点只能使用相同表单;
2、多表单流程:一个流程中的所有节点可以使用不同表单。
在引擎中我引入了以下节点:
1、开始:每个流程都由开始节点开始,它是流程的起始点,目前平台中只一个流程只允许拥有一个开始节点;
2、处理:该节点用于设置流程的处理者;
3、会签:用于设置流程的多名参与者,参与者都作出响应后才能进入下一个节点;
4、加签:参考“会签”进行设置,与会签区别主要是加签的处理者由上一步骤处理人指定;
5、适配器:适配器允许您的工作流系统与企业内部及外部的其他应用系统数据进行数据交互。执行SQL和执行存储过程允许直接操作数据库,是为了一些不具备交互数据能力的系统交互数据而设计的;
6、通知:以邮件形式通知某人某件事情;
7、逻辑与:此时必须每个处理者都处理通过才能进入下一步;
8、逻辑或:如果满足完成条件时,取消该节点的入口任务,如不设条件,此时只要有一个处理者通过就能进入下一步;
9、公有子流程:“公有子流程”可被其它流程所调用;
10、私有子流程:将一个流程作为一个节点放置在主流程中;
11、数据验证:验证当前节点所处理的业务数据;
12、数据统计:统计当前节点所处理的业务数据;
13、数据导向:将当前节点所处理的业务数据,根据配置输送到另一数据表;
14、结束:表示流程到此结束。
另:两个节点之间的连接称为处理链。