作为程序员的我们,直奔主题吧,看看流引挚是怎么工作的,至少总体上有一个认识
规则引挚NxBRE文档纪要--流引挚简介(一)
  1. 将规则载入流引挚
  2. 设置规则文件里用到的一些变量
  3. 执行规则,并保存执行结果在上下文中(Context)
再来看看流引挚规则文件的组成吧
规则文件是通过xml来定义的,规则文件主要包含以下这三部分
  • rules
  • logic tests
  • structure
就我目前的理解,表达出来,这个规则文件可以定义变量
规则引挚NxBRE文档纪要--流引挚简介(一)<Integer id="10i" value="10"/>
规则引挚NxBRE文档纪要--流引挚简介(一)
<Integer id="40i" value="40"/>
相当于
规则引挚NxBRE文档纪要--流引挚简介(一)int 10i = 10;
规则引挚NxBRE文档纪要--流引挚简介(一)
int 40i = 40;
还可以引用到外部变量
规则引挚NxBRE文档纪要--流引挚简介(一)<ObjectLookup id="QuantityOrdered" objectId="CurrentOrder" member=""/>
相当于
  //前提是CurrentOrder作为一个类的实例已经被增加到上下文中,当然,这里是弱类型的
规则引挚NxBRE文档纪要--流引挚简介(一)object QuantityOrdered = CurrentOrder.QuantityOrdered;
逻辑块
规则引挚NxBRE文档纪要--流引挚简介(一)            <Logic>
规则引挚NxBRE文档纪要--流引挚简介(一)                
<If>
规则引挚NxBRE文档纪要--流引挚简介(一)                    
<And>
规则引挚NxBRE文档纪要--流引挚简介(一)                        
<GreaterThan leftId="QuantityOrdered" rightId="40i"/>
规则引挚NxBRE文档纪要--流引挚简介(一)                    
</And>
规则引挚NxBRE文档纪要--流引挚简介(一)                    
<Do>
规则引挚NxBRE文档纪要--流引挚简介(一)                        
<Evaluate id="AppliedDiscount">
规则引挚NxBRE文档纪要--流引挚简介(一)                            
<Parameter name="Percent" value=".9"/>
规则引挚NxBRE文档纪要--流引挚简介(一)                        
</Evaluate>
规则引挚NxBRE文档纪要--流引挚简介(一)                    
</Do>
规则引挚NxBRE文档纪要--流引挚简介(一)                
</If>
规则引挚NxBRE文档纪要--流引挚简介(一)                
<Else>
规则引挚NxBRE文档纪要--流引挚简介(一)                    
<Evaluate id="AppliedDiscount">
规则引挚NxBRE文档纪要--流引挚简介(一)                        
<Parameter name="Percent" value="1"/>
规则引挚NxBRE文档纪要--流引挚简介(一)                    
</Evaluate>
规则引挚NxBRE文档纪要--流引挚简介(一)                
</Else>
规则引挚NxBRE文档纪要--流引挚简介(一)            
</Logic>
伪码是
规则引挚NxBRE文档纪要--流引挚简介(一)if(QuantityOrdered>40i)
}

流引挚的实现中基本上都合理的定义和使用接口,看看这几个比较重要的接口
规则引挚NxBRE文档纪要--流引挚简介(一)
Process方法,不用说了,最重要的,执行规则的开关
RuleContext属性,就更不用说了,规则定义文件的所有变量,以及引用到的外部变量,甚至是执行结果都存放在这里
规则引挚NxBRE文档纪要--流引挚简介(一)

命名空间 NxBRE.FlowEngine.Rules 描述
 Decrement*  自减整数
 Exception  抛出异常
 False,True  
 FatalException  重大异常
 Increment  自增整数
 IncrementInit*  Incrementor or Decrementor reset.
 ObjectLookup  通过反射映射到ruleContext中的类或者实例
 Value  任何类型的变量

哎,这个表格真是不好整啊,凑合着吧,虽然是丑了点,不过符合自己的美工表现...
规则引挚NxBRE文档纪要--流引挚简介(一)
上面这些就不用注释了,看字面都知道是什么意思了,强调一下,正则表达式的支持,将给扩展留下巨大的空间
规则引挚NxBRE文档纪要--流引挚简介(一)
载入规则文件的时候要用到这些东东,比如xbre文件就要用到XBusinessRulesFileDriver

规则引挚NxBRE文档纪要--流引挚简介(一)
工厂,创建IFlowEngine实例

好了,说了一堆,看起来好像没什么用...
来个HelloWorld,至少让我知道这是个什么东西

相关文章:

  • 2021-07-07
  • 2021-06-22
  • 2021-12-03
  • 2021-11-18
  • 2021-11-18
  • 2021-11-07
  • 2021-04-29
  • 2021-08-17
猜你喜欢
  • 2022-01-25
  • 2021-11-08
  • 2022-12-23
  • 2021-06-07
  • 2022-03-01
  • 2021-08-22
  • 2022-12-23
相关资源
相似解决方案