1、前言
提到工作流很多人都会想到OA,AO就是典型的工作流应用,但是工作流并不仅仅局限于OA,工作流应用该算是基础框架软件,主要用于流程的重组和优化,它有广阔的应用领域。在C#下我们自己研发工作流引擎等,在.net下却几乎找不到令人满意的工作流引擎可用,当然不是说.net下没有开源的只是有些国产开源的但看了代码后就一点兴趣都没有,且不说代码质量如何,还引入了一大堆东西,想在项目中应用也是非常困难。鉴于此我还是决定自己开发一款.net工作流引擎。
2、工作流引擎设计
工作流引擎主要解决复杂业务流程灵活定制和方便更改的问题。引擎的作用相当于一个业务流程管理器,它以一个软件组件(或者构件)的形式运行在使用它的业务应用中。在OA系统中使用工作流引攀技术,可以实现业务流程与应用程序的分离。OA系统通过工作流引擎集中管理业务流程包含的所有过程,引擎为业务流程提供执行环境,并驭动业务流程中各个过程的自动运行。所有的业务流程都在引擎的管理、监控卜运行。当业务流程变更时用户不必修改应用程序,只修改业务流程模型就可以解决流程变更的问题,从而实现了业务流程的灵活定制。
2.1 引擎设计思路
工作流引擎的设计是从够用、灵活和低成木的设计原则出发,不追求工作流引擎的功能的完备和复杂,只实现其中必不可少的功能和特征。基于上述设计原则,引擎的设计主要从以下几个方面考虑:
(1)引擎支持顺序、分支、并发、循环、同步、异步流程的流转;在分支上可以定义条件,实现按条件自动流转,条件转移之间还可设置逻辑关系;在并发流转中,多个活动节点可以同时激活。
(2)用户之间相互协作,交换数据,从而提高工作流引擎处理业务流程的灵活性和适用范围。
(3)如果引擎状态异常,可对引擎进行重新启动,如果重新启动几次后仍然异常,发信号给备份服务器启动引擎,加载原有引擎工作状态,保证关键业务不被中断。
2.2 引擎功能设计
工作流引擎作为OA系统的核心部件,其主要功能包含:解释流程定义的业务模型;创建、解释、执行和控制流程实例,管理其运行过程;根据流程定义和工作流相关数据为流程实例的运