工作流机的实现
    工作流执行服务是工作流管理系统的核心。工作流执行服务由一个或多个工作流机组成。工作流机实际上是企业经营过程的任务调度器,在某种程序上还是企业资源的分配器。在采用工作流管理系统支持经营过程运行的企业中,工作流机可以看成是企业的业务操作系统(BOS)。工作流机的主要功能是:解释过程定义、负责调试流程的运行、即创建和管理过程实例运行、调度活动的运行并创建要处理的工作项、维护工作流控制数据和相关数据、维护用户的工作列表。工作流执行机的结构如图4所示:


图4  工作流执行服务的结构图


    其具体的执行过程:工作流机接受从外部接口发送过来有关过程控制的请求(如过程初始化、获取活动以及结束活动等),然后根据不同的请求类型调用相应的处理模块完成与本次请求相关的操作并将结果返回。事实上可以将工作流机看成一个多线程的并发服务器,它可以对多个外部请求提供并发服务。对外部请求的处理过程中肯定会涉及到对工作流相关数据的读写和更改操作,同时工作流机还维护着工作流的控制数据,通过工作流控制数据来辨别每个过程或活动实例的状态,并推动着工作流过程的执行。
    过程、活动、工作项构成了工作流机的主要逻辑。在我们的系统中采用了对象的封装和继承的方法,把它包装为普通的C#类。三个类的定义如下:
    (1)、public class WEProInstanceManager {}       //工作流执行机的过程实例的管理类
    (2)、public class WEActInstanceManager {}       //工作流执行机的活动实例的管理类
    (3)、public class WEWorkItemManager {}         //工作流工作列表管理类
工作流机的异常处理
工作流的错误包含两种错误,一是流程错误,如活动的执行者不存在,活动的应用程序定义错误等;另一类是系统的错误,如:网络不通,数据库系统异常。对于工作流执行机来说,前类异常是属于无法处理的错误,只能进行错误的通知;后者是执行机可以处理的错误,如数据库异常或连接临时中断等等,执行机可以进行容错处理,例如:在数据库恢复后自动重新建立连接。执行机对可能出现的错误进行编码,并附有对应的描述信息。
        系统中采用了C#的异常处理思想(在C#的编程思想中,系统的错误是通过捕获异常来实现的),抛出的异常通过异常类WEException来描述。WEException类继承了C#的异常处理类Exception。并覆盖了Exception类的属性Message(){get{}},其中WEException类中保存了可识别的异常对照表。在C#的异常处理中,在出错的地方将异常抛出,不进行处理。异常被抛到更高的层次,直到某个层次能够进行这种异常的处理。

工作流管理系统的安全权限控制
    工作流管理系统对安全性要求较高,为了达到要求,必须做到充分的安全控制。在我们的系统中,共设置了5层安全控制级别。
    1)、用户鉴定:用户登陆系统,需要用户输入用户名和密码,以便确认和登记。
    2)、服务器访问控制:保证只有授权用户,才可登陆指定的服务器。
    3)、数据库访问控制:对数据库的访问进行控制
    4)、文档访问控制:对数据库中的文档进行权限控制。
    5)、文档中的域访问控制:对文档中的部分内容进行控制。
    通过以上五层安全控制再加上一些安全机制如:系统级权限控制、电子签名和加密等,使得整个安全机制达到了系统对安全的需要。
 以Web作为工作流管理系统的底层通讯支持使系统具有开放、一致和方便使用的特点,使企业中处于孤岛的信息能相互集成。本系统采用的基于XML的过程定义语言的工作流管理系统,不仅适应分布办公,更以系统开放的环境为实现跨部门、跨企业的供应链的不同工作流互操作打下了基础,使客户、供应商、或合作者都可以方便的参与企业的工作流,提高工作效率。