BizTalk Rule Engine

BRE

规则引擎:

描述业务逻辑的声明

IF

<Condition(s)>

Then

<Action(s)>

策略:

一组相关的规则可以组合成一个策略

基本原理:

1.正向推导(forward-chaining),基于指定策略内的所有规则来推导结论的推导引擎.

2.检查引擎当前状态变量,即所有事实(fact),找出与这些事实相匹配的规则

3.利用事实来评估规则条件

4.如果某规则条件符合,结论就会被执行

5.如果结论执行时会添加或更新事实,整个匹配和评估过程会再重新来一次

为什么需要规则引擎:

1.使用代码实现业务逻辑的传统方法的缺点:

(1).复杂的业务逻辑难以用代码来表达

(2).业务逻辑转换成代码后可理解性下降.

(3).无法应对灵活多变的业务规则

(4).熟悉业务逻辑的是业务分析员而不是程序员.

2.业务规则引擎的优势:

(1).使用推理引擎解释规则声明,不需要人为编码.

(2).声明可以由业务分析人员来维护.

(3).不需要重新编译或部署

(4).真正易变的是条件而不是流程

策略的版本管理

1.策略可以随时取消部署

2.多个版本可以同时部署,永远使用最近publish的策略.

BizTalk业务规则相关概念

Term

Description

Policy 策略

逻辑上相关的一组规则

Rule 规则

包含条件组合,及当条件组合为真时执行的一组动作

Condition 条件

包含对事实的判断

Facts 事实

条件和动作所操作的对象

Actions 动作

当条件为真时所执行的操作

Vocabulary 词汇

逻辑上相关的一组定义

Definition 定义

对技术数据定义的用户友好的描述

Rule Engine
规则引擎

根据事实评估相应的条件并执行相应的操作

Rule based application

提交事实并调用策略

Rule Store
规则库

保存策略和规则的仓库

Fact事实类型

1.XML

(1).XmlDocument的包装,提供了规则处理中需要的内部数据

(2).通过XPath来定位元素结点来取得数据

(3).流程内的消息变量本身就是XmlDocument,因此可以直接作为事实传人

2.数据库

(1).在规则中使用数据库事实可以让引擎自动建立更有效率的SQL语句来获取或更新数据库内的数据

(2).引擎会对事实中所有的数据列进行评估

(3).如果是只读数据,最好使用长期事实来实现快取

3..NET类型

(1).任何.NET 类型均可作为事实使用

不需要实现接口或者继承其他基类

(2).组件必须部署到GAC中

 

长期事实和短期事实

1.短期事实会在规则执行是被带入

规则执行过后事实对象会被销毁

2.长期事实可被快取

通过給策略配置.NET 事实获取器

每次执行时调用IFactRetriever.UpdateFacts

以执行引擎实例为单位快取

允许FactRetriever对象将事实快取

 

词汇(Vocabularies)

如何调用业务规则

1.在业务流程中使用调用业务规则Shape

必须包含在Atomic Scope 中

2.在表达式Shape(Expression)中

可以指定要调用的版本

3.可以从.NET程序代码中调用

规则引擎以.NET类别的形式对外服务

允许流程及其他应用程序使用相同的规则

posted @ 2007-02-08 11:03  upzone  阅读(420)  评论(0编辑  收藏  举报