倪 曌 白利芳 董奥冬
1(国网孝感供电公司 湖北 孝感 432000)2(信息工程大学 河南 郑州 450001)3(国网河南省电力公司焦作供电公司 河南 焦作 454000)
一种面向业务规则和流程的推理引擎架构
倪 曌1白利芳2董奥冬3
1(国网孝感供电公司 湖北 孝感 432000)2(信息工程大学 河南 郑州 450001)3(国网河南省电力公司焦作供电公司 河南 焦作 454000)
目前基于业务流程模型控制规则引擎的工作流引擎已经开始提倡使用。针对这种情况, 基于BPMN业务流程模型的工作流引擎,提出一种适用于业务流程模型和规则集成与执行的推理引擎架构。该架构引入XTT2的规则表示,集成了jBPM工作流管理系统和HeaRT规则引擎,由工作流引擎控制专用规则推理引擎执行规则决策表运行。原型实现表明了该架构可实现规则任务的可视化设计,并支持对得到的规则任务模型的形式验证。
BPMN 业务流程模型 规则
在业务处理程序中,业务规则是一种比较优良的知识表示和处理方式,然而对规则推理而言在处理大型规则库时仍有许多问题需要解决。大多数现有的推理引擎使用如Rete模式匹配算法进行规则推理,但这种方法中规则搜索策略在给定环境下对规则选择所掌握的信息不足,影响规则匹配效率。为了解决这一问题,已经提出了多种不同的推理控制策略。例如文献[1]针对疾病发展的推理引擎设计了一个基于规则的摘要决策推理策略,文献[2]则针对XML数据库引入推理树概念,并提出相应的动态推理控制策略。但对普遍的业务系统的规则推理,一些业务处理程序则使用了业务流程BP(business process)模型来进行设计开发,其中的业务流程模型与标注BPMN(Business Process Model and Notation)能够建模更复杂的控制流程[3]。目前,基于BP模型控制规则引擎的工作流引擎已经开始提倡使用,但是仍然缺少一个清晰的集成了规则和流程的推理引擎概念架构。
本文提出了一个面向规则与业务流程模型的建模、集成和执行的新推理引擎架构,该架构主要面向基于BPMN业务流程模型的工作流引擎。工作流引擎进行推理控制,底层的业务规则表示了业务逻辑的某些特定部分,在业务流程模型中所涉及相同工作内容的规则被分到一个任务中,称为一项规则任务。规则任务模型由定义好的决策表进行建模得到,在运行环境中,决策表的执行由工作流引擎控制的专用规则推理引擎实现。在某些相关的开发工具(Drools)提供了类似方法的功能实现[4],然而本文提出的架构具有更重要的优势:一方面,规则模型的形式化定义可以实现对规则库的质量控制;另一方面,BPMN流程模型的某些控制部件可以转化为规则。
复杂的业务智能处理程序需要先进的建模方案,并且业务设计者、软件工程师和普通程序员必须能够容易地学习掌握这些建模方案。在业务流程建模中,UML语言对于一般的业务使用者而言非常难以理解[5],因此在业务流程建模中引入了BPMN标注法。虽然这种标注法可以很好地解决建模过程中工作流程的表示问题,但是只利用BPMN不能详细地表达出流程中任务的逻辑。
业务规则BR(Business Rules)描述是一种能够被用来具体地表示业务流程中任务逻辑的方法,其产生于已经建立完善规则的系统。然而,对流程和规则的抽象是在不同层面上的,通常情况下规则在多数系统中用自然语言进行描述,有时规则也会用结构化形式表示。流程和规则之间的这种差异造成两者语义不匹配的问题,表现在建模过程中的概念表示和执行实现的困难。因此,研究出一种面向业务规则和业务流程建模的方法对未来确保高质量的系统实现是非常重要的。
虽然BP和BR在抽象层次上具有差异,但是规则与流程在业务系统中是相互补充的关系。BPMN 2.0中也体现出规则和流程的这种差异[6],这说明现有的BPMN不适合用来建模这样的规则流程。一个BPMN流程模型应该既能定义上层的系统行为,又能用规则说明下层的流程逻辑。目前,有许多针对整合规则和流程的建模方法正在进行的研究。文献[7]引入了ECA(Event Condition Action)符号来对业务流程中进行规则的一致化分解;文献[8]实现了一个与任务一致的自包含子过程可扩展库,能够根据规则上下文进行动态决策;文献[9] 提出了一种面向规则和流程相结合的建模语言rBPM,该语言集成了业务流程建模符号REWERSE。但由于现存的方法不能准确地表示规则和流程进行整合的细节,不能很好地支持流程和规则的可视化建模,且没有考虑质量问题,此外能够提供整合规则和流程建模环境的工具也不多,因此仍然缺少一种可用的、标准化的、一致化的方法。
本文提出了支持业务规则描述和BPMN流程模型二者结合的集成架构,采用了的XTT2的规则表示(如决策表或决策网络)用于定义流程中的任务逻辑。XTT2规则描述利用有限值集合的属性逻辑ALSV(FD)(Attributive Logic with Set Values over Finite Domains),可以在过程中检查规则的语法。此外,XTT2规则描述还具有可视化知识表示能力,使该方法在任务评估上占有很大优势。
本文中能够整合BP和BR模型的集成架构jBPM-HeaRT是在运行基于BPMN的BP模型的开源jBPM工作流引擎的基础上提出的,该工作流引擎能够与运行底层规则逻辑的HeaRT(HeKatE Run-Time Environment)规则引擎进行通信。
JBoss jBPM是一个工作流管理系统,能够为工作流的业务流程管理到流程编排提供可执行流程语言的平台,该系统架构是基于文献[10]中的WfMC的参考模型发展而来。jBPM提供了一个执行业务流程的流程引擎和两个可选核心服务,一是历史日志记录,能够记录所有流程实例的当前和历史状态信息;二是当有人工执行者参与到流程中在其任务生命周期提供人工任务服务。jBPM具有可插入架构,能够作为一个可扩展的、可定制的工具集成到本文研究的运行环境中。
jBPM工具提供BPMN 2.0 XML格式用于流程的定义。完整的BPMN 2.0规范包括流程编排和合作的细节,但jBPM仅注重具体的执行流程。jBPM已被应用于文献[11,12]中相关的工作流建模,本文只针对业务流程的建模应用。
2.1 知识表示
本方案中,BPMN用于过程的工作流建模,业务规则即SKE(Semantic Knowledge Engineering)方法,用于规范描述流程任务中的具体逻辑。在SKE中,XTT2规则表示提供了规则的逻辑运算表达式,并提供支持规则逻辑和可视化规范的结构化知识表示[13]。XTT2支持高级控制推理和的生产系统的形式分析,提供了基于ALSV(FD)逻辑的规则描述语言,这样的知识表示方法使XTT2语言比命题逻辑具有更强的表达能力。XTT2规则库包含属性和其相应的值,每一对属性-值视为一个事实(fact),所有属性-值对的集合定义为系统状态s:
s:(A1=V1)∧(A2=V2)∧…∧(An=Vn)
其中An指属性,Vn是属性对应的值,属性个数(事实)在推理过程中是常数,规则库的职能由属性值的改变而发生变化。XTT2将规则库模块化,涉及相同内容的规则被放到同一个任务中,一个任务对应一个决策表。因此,只有具有相同条件和决策属性的规则可以被放置在一个决策表中,即在决策表中的每个规则确定同一组属性的值。决策表连接在一起形成的类似网络结构的决策网,XTT2将决策网络和决策表混合进行知识表示。
例如自动取款机ATM中的XTT2行为决策表,如表1所示。表头包含所有常见规则的属性,表中每一条规则存储为一行,包括5个标记为(?)的条件列和标记为(→)动作列。条件即五种属性,分别为是否具有权限(A,authorizated),密码输入失败次数(F,failedAttempts),用户请求(UR,userRequest),用户金额变化(UAD,userAmountDifference),ATM金额变化(AAD,ATMAmountDifference),动作(AA,ATMActivity)为ATM机的输出反馈。
表1 ATM机中XTT2决策表
2.2 原型架构
该模型在HeaRT推理引擎上运行, HeaRT为其用HMR格式表示的业务规则提供了相应的执行环境。jBPM-HeaRT架构使用本地工作流引擎BPMN 2.0 jBPM,它是一个基于流程虚拟机(PVM,Process Virtual Machine)的通用流程引擎,用BPMN 2.0来描述业务流程执行。jBPM-HeaRT还需将jBPM流程引擎集成到HeaRT规则引擎上,jBPM与HeaRT的集成架构的概要如图1所示,除了说明该架构中的执行业务流程和规则的引擎,整个jBPM-HeaRT架构还解释了利用业务规则对业务流程模型进行建模和验证的实现过程。
图1 jBPM-HeaRT架构
jBPM-HeaRT架构分为业务流程和规则的建模、验证和执行三个层次。
① 建模层:XTT2业务规则决策表通过网络接口(TCP/IP)利用HQEd编辑器进行可视化编辑,业务流程BPMN模型利用jBPM编辑器实现;
② 验证层:XTT2规则表示法支持在HeaRT引擎和HeKatE的验证和分析架构(HalVA,HeKatE Verification and Analysis framework)下对XTT2决策表进行形式化验证,验证过程中可视化规则决策表自动转化为HMR表示规则;
③ 执行层:在业务执行中,BPMN流程模型运行在jBPM引擎上,BR任务触发选择的XTT2决策表执行规则,两者之间的通信实现流程与规则的统一执行,通信功能的实现见3.1节。
由上述可知,这个一般化的架构可以实现对流程和规则的可视化建模,并能够验证执行一个完整的特定BPMN模型。
2.3 规则验证
1) 单一规则不一致
单一规则产生的矛盾有两种可能:一是条件和结论的不一致,二是条件间不一致。规则的条件和结论部分存在同一属性,则有可能产生矛盾。单一规则条件间不一致检测方法:
① 一条规则的条件部分的创建属性列表;
② 从属性列表的第一个属性开始,找出所有包含该属性的条件,直到属性列表中最后一个属性;
③ 检验所选属性的条件集的交集是否为空,若为空集,则该规则矛盾。
2) 规则间不一致
两条规则间矛盾,即当两条规则的动作部分不一致时,存在某一状态这两个规则都为真,验证方法如下:
① 将同一规则任务即XTT2决策表中两条规则下的状态集合作交集;
② 如果交集不为空,且两条规则的动作部分不相同,则两条规则间矛盾。
3) 完整性检测
为检查系统完整性,必须将所有可能的输入数据传给系统,并根据系统响应判断完整性,实现起来比较复杂。但是,对于一张XTT2决策表的完整性检测,则利用决策树算法进行检验。决策树算法检测的思想是建立一个系统状态树,每个分支代表一个状态,树的每一层代表状态包含的属性。完整性检测基于深度优先算法,对比分析XTT2决策表,当发现某一分支没有被任何规则所包含,则此分支及其所有的子分支都不用继续检测。
4) 规则包含
若一条规则的条件部分包含另一条规则的条件部分且动作部分相同,对这种包含关系的测试方法如下:
① 将给定任务即XTT2决策表中规则下的状态集合作交集;
② 若交集不为空,且规则的动作部分相同,则规则间存在包含关系。
jBPM-HeaRT是一种能够支持集成XTT2业务规则和BPMN流程的工具架构,相较于大多不支持高级规则表示的工具,该架构利用了决策表来定义流程中的任务逻辑,决策表由HQEd编辑器进行可视化编辑,表中的规则使用ALSV(FD)逻辑形式化表示,在设计定义过程中还可以进行语法检查。该架构主要实现了jBPM和HeaRT的通信功能,使基于规则的系统能够进行流程和规则统一建模执行。
3.1 jBPM与HeaRT通信
本架构提供了执行流程模型的集成环境,架构原型使用了jBPM流程引擎集成HeaRT推理引擎实现。利用HeaRT套接字接口对具体规则任务实现的完整BP模型进行jBPM建模,HeaRT引擎作为服务器运行,当处理与jBPM的通信时HeaRT则作为客户端运行,之所以能够实现这样的工作模式是由于jBPM-HeaRT架构实现了BPMN模型任务与相应XTT2决策表的联结。在jBPM-HeaRT架构原型中,jBPM向HeaRT发送以下的消息:
① 以“H”开头命名的规则任务用HeaRT执行,每个规则任务对应一个XTT2决策表。
② 在规则库中规则流组与XTT2决策表的列表(或状态)相关联。
③ 如果模型状态不是特定的,则HeaRT引擎从当前状态开始。
④ HeaRT引擎推理出的状态属性结果作为过程实例的环境变量保存。
这些工具通过专用API进行通信,HeaRT引入到执行层可以支持多种常见的编程语言(如Java,PHP和Python)。该集成模块的功能是实现多个客户同时与一个作为推理服务器的HeaRT实例工作。 HeaRT与jBPM之间的通信通过网络协议实现,并且由专门的HConnect类(调用JHeroic集成库)控制。jBPM提供了专门的接口API(Knowledge Builder类、KnowledgeBase类、KnowledgeAgent类等),这些API由Java编写,提供了类和接口的操作。
在Drools的流程执行过程中,与HeaRT的通信由jBPM引擎进行初始化。Knowledge Builder类用于从文件中读取并编译知识库(knowledge base),通过Knowledge Builder类向knowledge base中添加新知识,HConnect类用于向HeaRT读取和添加XTT2模型,并调用fireAllRules方法执行模型。
3.2 实例说明
为验证jBPM和XTT2的转换和集成关系,下面对ATM自动取款机实例进行说明。
1) BPMN模型和XTT2决策表
ATM机获得客户的储蓄的决策过程:一个客户通过插入卡并输入正确的PIN码获得授权,然后客户可能会取款或要求打印凭条。图2显示了该例子的流程模型,可以看出规则任务和XTT2决策表与脚本任务和HeaRT输出之间的依赖关系,该BPMN模型可在jBPM中可视化编辑得到。
图2 jBPM对ATM机建模的BPMN模型
ATM机的XTT2决策表由HQEd编辑器可视化编辑得到,如表1所示。
2) 规则完整性验证
ATM机XTT2决策表的规则完整性利用决策树算法进行检验。XTT2决策表在HeKatE上自动转化为HMR规则格式,如表1的第一条规则转化为HMR形式:
[A eq false, F lt 3, UR eq any, UAD eq any]
==> [AA set (askForPIN)]
HalVA可以根据生成的HMR形式的规则构建决策树,树的每一个分支代表ATM机系统的一个状态,利用深度优先算法遍历所有状态。对比XTT2决策表,当且仅当对任意一个系统可能出现的状态,都存在一条规则包含该状态时,XTT2决策表具有规则完整性。
3) 模型执行实现
以下代码片段表示Knowledge API和HConnect库在执行自动取款机ATM实例中实现jBPM和HeaRT通信的运用:
public static final void main(String[] args) {
try {
KnowledgeBase kbase = readKnowledgeBase();
StatefulKnowledgeSessionksession =
kbase.newStateful KnowledgeSession();
KnowledgeRuntimeLogger logger =
KnowledgeRuntimeLoggerFactory.newConsole-
Logger(ksession);
//Read the HMR model from the filesystem and send it to HeaRT
HConnect.addModel(″ATM″, new File(″atm-rt.pl″));
ksession.startProcess(″HConnect Test″);
ksession.fireAllRules();
logger.close();
} catch (Throwable t) {
t.printStackTrace();
}
}
private static KnowledgeBase readKnowledgeBase() throws Exception {
KnowledgeBuilder kbuilder =
KnowledgeBuilderFactory.newKnowledgeBuilder();
kbuilder.add(ResourceFactory.newClassPathResource(″H-ConnectTest.bpmn″), ResourceType.BPMN2);
KnowledgeBuilderErrors errors = kbuilder.getErrors();
if (errors.size()>0) {
for (KnowledgeBuilderError error: errors)
System.err.println(error);
throw new IllegalArgumentException(″Could not parse knowledge.″);
}
KnowledgeBase kbase =
KnowledgeBaseFactory.newKnowledgeBase();
kbase.addKnowledgePackages(kbuilder.getKnowledgePacka-ges());
return kbase;
}
本文提出的这种流程规则一致性架构,使在下层的业务规则补充并完善了上层的流程模型。其流程模型支持业务逻辑的上下文验证,提供了一般推理流程,并可进行可视化规则设计和对规则任务进行规则的完整性的形式验证。
本文提出了一个在BPMN模型中使用XTT2标注的业务规则来描述指定任务的框架结构。 XTT2支持利用形式化表示的决策表进行规则建模,该架构则能够对指定的模型进行整合执行。本文给出了一个该架构的原型实现,其使用jBPM流程引擎集成HeaRT推理引擎实现。
这项研究以后可以从两个方面进一步深入,一是研究一种能够有效地使用BPMN标注对面向业务规则定义逻辑任务的业务流程进行一致性建模的方法,通过理想的设计模式将消除流程规则建模中语义不一致等问题的方法;另一个重要的问题是集成模型的质量,HeaRT的验证特性可以用来进行某些BPMN模型和规则任务的形式验证,然而这只能对单独的规则任务或简单结构的BPMN模型进行局部验证,完整模型的全局验证方法需要进一步研究。
[1] Mitra S,Mitra M,Chaudhuri B B.A Rough-Set-Based Inference Engine for ECG Classification[J].IEEE Transactions on Instrumentation & Measurement,2006,55(6):2198-2206.
[2] 徐铮,陈恭亮,李建华.基于推理树的XML推理控制研究[J].通信技术,2015(2):208-213.
[3] Bisogno S.Combining modelling and simulation approaches[J].Business Process Management Journal,2016,22(1):56-74.
[4] Proctor M.Relational Declarative Programming with JBoss Drools[C]//Symbolic and Numeric Algorithms for Scientific Computing,2007.SYNASC.International Symposium on.IEEE,2007:5-5.
[5]ViewegI,WernerC,WagnerKP,etal.UnifiedModelingLanguage(UML)[M]//EinführungWirtschaftsinformatik.GablerVerlag,2012:367-377.
[6]AutiliM,RuscioDD,SalleAD,etal.AModel-BasedSynthesisProcessforChoreographyRealizabilityEnforcement[M]//FundamentalApproachestoSoftwareEngineering.SpringerBerlinHeidelberg,2013:37-52.
[7]KnolmayerG,EndlR,PfahrerM.ModelingProcessesandWorkflowsbyBusinessRules[M]//BusinessProcessManagement.SpringerBerlinHeidelberg,1999:16-29.
[8]AdamsM,HofstedeAHMT,EdmondD,etal.Worklets:AService-OrientedImplementationofDynamicFlexibilityinWorkflows[M]//OntheMovetoMeaningfulInternetSystems2006:CoopIS,DOA,GADA,andODBASE.SpringerBerlinHeidelberg,2006:291-308.
[9]MilanovicM,GaševicD.TowardsaLanguageforRule-EnhancedBusinessProcessModeling[C]//Proceedingsofthe13thIEEEinternationalconferenceonEnterpriseDistributedObjectComputing.IEEEPress,2009:59-68.
[10]ViriyasitavatW,MartinA.IntheRelationofWorkflowandTrustCharacteristics,andRequirementsinServiceWorkflows[J].CommunicationsinComputer&InformationScience,2011,251(3):492-506.
[11]HuangYY,JiangR,LiH.AReusableSystemArchitectureBasedonJBPMandItsApplication[M]//FutureCommunication,Computing,ControlandManagement.SpringerBerlinHeidelberg,2012:517-525.
[12]OstermayerL,SeipelD.KnowledgeEngineeringforBusinessRulesinPROLOG[C]//26thWorkshoponLogicProgramming,Bonn,Germany,September24-25,2012.2012.
[13]GrzegorzJNalepa,KrzysztofKluza.UMLRepresentationforRule-basedApplicationModelswithXTT2-basedBusinessRule[J].InternationalJournalofSoftwareEngineering&KnowledgeEngineering,2012,22(4):485-524.
AN INFERENCE ENGINE ARCHITECTURE FOR BUSINESS RULES AND PROCESSES
Ni Zhao1Bai Lifang2Dong Aodong3
1(StateGridXiaoganPowerSupplyCompany,Xiaogan432000,Hubei,China)2(InformationEngineeringUniversity,Zhengzhou450001,Henan,China)3(StateGridHenanElectricPowerCompanyJiaozuoPowerSupplyCompany,Jiaozuo454000,Henan,China)
At present, the workflow engine based on business process model controlling rule engine has been advocated. In view of this situation, an inference engine architecture for integrating and executing business process models with rules is proposed based on the workflow engine which runs BPMN business process model. The architecture introduces XTT2 rules and integrates jBPM workflow management system and HeaRT rule engine, making the rule decision tables executed by a dedicated rule inference engine which is controlled by workflow engine. The implementation of the prototype demonstrates that the architecture can realize visual design and formal verification of obtained rule tasks.
BPMN Business process models Rules
2016-03-22。倪曌,硕士生,主研领域:专家系统。白利芳,硕士生。董奥冬,工程师。
TP302.1
A
10.3969/j.issn.1000-386x.2017.03.017