实现柔性工作流管理的规则引擎设计
2009-06-17梅胜全
摘要:工作流管理系统是现代企业流程管理的重要软件系统。实现柔性的工作流管理,需要工作流引擎具有适应需求变更,动态调整业务流程的功能。文章分析了规则表示、规则引擎的组成构件,功能与特点,并设计了规则引擎。规则引擎作为工作流引擎的核心,提供规则抽取、表示、判定以及活动响应的服务集,为路由控制(活动调度)、规则判定、活动转移,状态监控提供关键支持,实现动态流程调整,满足柔性的工作流管理需要。
关键词:工作流;业务过程;业务规则;规则引擎;工作流引擎
中图分类号:TP311文献标识码:A文章编号:1009-2374(2009)07-0011-02
工作流技术正成为21世纪新的热点。工作流管理系统在工作流管理联盟(Workflow Management Coalition,WFMC)制定的一系列标准下得到了迅猛发展和广泛应用。现代化企业的生产与经营方式面临着业务重组,流程再造,以适应不断变化的市场需要,客观上对工作流管理系统提出了适应变化、适时更新的高要求,也就是要建立具有自适应能力,灵活定制业务流程的柔性工作流管理系统。工作流是业务流程的抽象,大多以静态、固化的形式表现,一般的工作流管理系统在业务流程建模、定制开发、表达能力与系统灵活性方面还不能做到动态、适时地调整,不能做到根据变更需求,灵活地调整工作流程。
工作流引擎是工作流管理系统的核心,本文对工作流引擎的核心构件——规则引擎进行分析、设计,把静态的工作流进一步抽象,剥离出业务逻辑与业务规则,对其变更规则进行规范,由条件、事实及规则(依赖与转换规则)组成规则引擎,实现工作流管理系统的灵活性、自适应性。
一、相关概念
(一)规则
规则是知识表达最常用的形式,规则是业务过程的一种抽象,用来描述如何解决问题,基本上由条件与相应操作两部分组成,在工作流引擎中可以定义成IF-THEN结构,IF部分是给定的条件,THEN部分为相对应的操作(动作),规则可以有多个条件,用AND/OR连接。规则的条件由(对象,连接算子与取值)三元组组成,连接算子一般是is、is not、are、are not等逻辑运算子进行逻辑判断,其值为一个布尔值;操作部分为条件成立时相应的操作或事实。
(二)规则引擎
规则引擎是工作流引擎的核心组成部件,对规则的抽取、判定、管理,为工作流引擎这一工作流管理系统核心功能提供前置(依赖性规则)条件与后置(转换性规则)提供规则调度与策略管理。它对频繁变化的业务流程进行规则抽象,剥离出来放入规则库中管理和修改,其基本过程是将提交给它的事实数据对象与加载在引擎中的业务规则进行测试和对比,判定是否激活相应的业务规则,触发对应的操作,完成对工作流引擎的路由控制(调度)及状态变更,达到系统动态调整目的。规则引擎一般由事实库、规则库、推理三部分构成。其运行机制是通过在事实库、规则库中快速检索对象及加载的各项规则进行匹配,激活符合条件的规则,形成优先级排序,解决冲突,决定规则的响应与触发。
(三)工作流、工作流管理系统、工作流引擎
工作流是业务过程的计算模型,是对业务逻辑和业务规则在计算机的数值模型表示,并实施计算。业务过程是业务活动的集合,通过业务规则进行前后链接,相互协作,形成一个有机整体,达到一个共同的业务过程控制管理的目标。
工作流管理系统是符合WFMC标准的软件系统,完成工作流的定义、建模、调度,并对活动、节点以及状态进行管理,使业务过程按照预先定义好的工作流逻辑推进工作流实例的执行。
工作流引擎是工作流管理系统的核心,为工作流管理系统提供一组运行时解释或者执行的一组服务的数据模型和软件体,其核心功能包括路由选择(调度)、数据交换、过程流转与状态变换等,其核心就是要决定任务表中各个任务运行实例后的后续处理节点,使活动的执行按照预定义的路线(规则)流动。
二、规则引擎实现柔性的工作流管理
规则引擎是工作流引擎的核心构件,流程引擎的路由调度、过程流转与状态变迁是基于业务规则来实现的。规则引擎主要实现的功能是存储、分类和管理规则,验证规则的一致性,通过规则推断其他规则、联系规则和执行这些规则的应用程序。其主要思想是从具体的业务逻辑中分离出业务规则,以实现业务变更的灵活性。
传统的开发模式,业务逻辑往往是被直接用程序代码固定,系统维护代价高,业务规则的微小变化往往导致系统的变更,数值模型与业务流程的全面修改。
通过规则引擎提供一种机制,将业务处理逻辑和业务规则分离,业务逻辑是变化频度最高的,通过专门的业务模型工具可以让用户动态地、适时地进行修改,而业务规则的变动只是涉及规则库,策略的调整,不改变整个系统的结构,可以实现动态的变更,满足柔性工作流管理系统建设的需要。
规则引擎有两个重要任务:分离业务逻辑和业务规则;规则的形式化描述。
将业务流程中的业务逻辑和业务规则分离本质是一个抽象过程,将关键的业务判断条件与响应操作提取出来,即规则提取,形式化描述业务规则就是对业务规则的数值表述,形成规则库,与事实库一起被规则引擎调用,达到业务流程的可运算化。同时必须考虑规则间的冲突并提供冲突解决机制,所谓规则冲突是指规则在相同条件下的值域交叉引起的判定歧义。一般可根据设定规则的优先级顺序,在规则发生冲突时采纳较高优先级规则的判定反馈,或者采用队列模式,依据先进先出原则进行判定,或者考虑业务中规则使用频率,低频率较高或较低的规则反馈。
规则的形式化描述是为了使业务规则的代码化,能被规则引擎识别,并参与判定、运算。根据Rete算法(网络算法)思想,将规则分割为LHS(Left Hand Side)和RHS(Right Hand Side),LHS由规则的条件部分组成,RHS由规则的判定部分组成。
三、规则引擎设计
规则引擎这一软件构架可以结合复杂的业务流程对业务策略和逻辑进行更改,业务流程中指定的规则会随时间而改变,一般而言,业务流程中业务规则(决策或策略)最容易变化,因此,业务规则引擎的设计能够直接创建和修改业务规则集,而业务规则通过规则编辑器进行创建,生成规则库(策略库),由业务规则引擎直接执行它们。
(一)规则引擎组件图
一个规则引擎主要由规则引擎服务、事实库、业务规则编辑器以及规则库四个部分组成,其中:(1)规则引擎服务:解析和执行业务规则,其为系统级服务;(2)事实库:操作数据的API函数集合,包含运行时数据、常数以及流程变量三种类型;(3)业务规则:一个业务规则包含一组条件和在此条件下执行的操作(动作),它们表示业务规则应用程序的一段业务逻辑;(4)业务规则库:许多业务规则的集合,每条业务规则都包含一个条件过滤器和多个动作。条件过滤器是多个布尔表达式的组合,其结果仍然是一个布尔表达式;在程序运行时,动作将会在条件过滤器返回结果为真的时候执行;(5)业务规则编辑器:是生成业务规则的图形化编辑工具。
(二)规则引擎运行流程
从图2可以清晰看出规则引擎在规则调用、解析、条件判定及转移规则的完整流程。
(三)规则引擎接口
规则引擎作为工作流引擎的一个核心部件,这里给出一般需要的接口。
四、工作流引擎的动态适应策略
可以说规则引擎是实现柔性工作流管理系统的核心部件,一个工作流管理系统需要通过规则引擎进行服务的主要是:状态转换规则(活动间的连接线);前置规则(向前依赖规则);后置规则(向后转发规则);工具栏按钮访问权限/展现控制规则;循环审批结束规则(指派)。这些通过规则引擎可以灵活配置,满足复杂多变的个性化需求。
柔性工作流引擎的主要任务是启动流程、指派任务、控制路由转移条件,并对工作流实例进行状态监控,并能动态适应流程的变更。当一个业务流程发生变化时,存在两种动态修改:一是业务逻辑的变更,另一个是业务规则的调整。这也就是两种柔性工作流引擎的自适应策略:(1)通过业务过程定义与管理工具动态修改,通过相应的管理工具(流程建模工具)对流程的路由选择进行修改,若是新增流程可以直接创建原始模型,若修改运行中的流程实例,可以创建新的副本;(2)通过规则引擎的规则编辑器对系统属性与相关数据进行动态修改,具有相当大的灵活性,规则与业务逻辑的分离,使得整个工作流管理系统具有极大的灵活性。
五、结论
本文重点讨论了工作流引擎中规则引擎的结构、功能,分析了工作流引擎的核心功能,将业务逻辑与业务规则进行分离,通过规则引擎提供的服务,支持路由控制、状态监控,可以实现柔性的工作流管理系统,具有以下的优点:规则从流程中剥离,可以实现规则本身的可管理性,通过规则引擎,业务逻辑不再依赖于程序及开发人员;管理随需的流程为用户动态修改流程定义提供了有效的工具与方法;基于规则引擎的工作流管理系统,配置灵活,具有良好的稳定性,可扩展性及灵活的业务处理能力。
参考文献
[1]路春光,孟丽丽,郝立文,马琨.基于WEB的柔性工作流引擎的设计[J].微计算机信息,2006,(5).
[2]张晓东,柴跃廷,任守榘.基于业务规则的事件驱动建模方法[J].清华大学学报,1999,39(7).
[3]张建,郝晓玲.支持群体协作的工作流引擎设计[J].山东建筑工程学院学报,2006,(3).
[4]于海波,车海燕,吕巍.一种RB-RBAC模型规则冲突消解算法[J].计算机工程与应用,2006,(42).
[5]陶晓俊,朱敏.基于规则引擎的企业服务开发模式[J].计算机技术与发展,2008,(18).
[6]冯梅,王宏安,金宏,刘海龙,戴国忠.基于Rete算法的多Agent的实时协同推理[J].计算机科学,2003,(30).
作者简介:梅胜全(1970-),男,四川南部人,成都理工大学信息工程学院博士生,研究方向:地球探测及石油物探数据处理、静校正与地震反演、计算机软件与应用。