锁定老帖子 主题:drools 4.0M2发布标注
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
||||
---|---|---|---|---|
作者 | 正文 | |||
发表时间:2007-07-09
引擎<o:p></o:p> 规则流程<o:p></o:p> 现在可以使用Eclipse GUI建立规则流程,并且保存为一个文件,这些文件然后可以用来控制规则的执行流程:<o:p></o:p> final PackageBuilder builder = new PackageBuilder();<o:p></o:p> builder.addPackageFromDrl( new InputStreamReader( getClass().getResourceAsStream( "ruleflow.drl" ) ) );<o:p></o:p> final Package pkg = builder.getPackage();<o:p></o:p> final ProcessBuilder processBuilder = new ProcessBuilder();<o:p></o:p> processBuilder.addProcessFromFile( new InputStreamReader( getClass().getResourceAsStream( "ruleflow.rfm" ) ) );<o:p></o:p> <o:p> </o:p> final RuleBase ruleBase = getRuleBase();<o:p></o:p> ruleBase.addPackage( pkg );<o:p></o:p> ruleBase.addProcess( processBuilder.getProcesses()[0] );<o:p></o:p> 通过执行执行应用过程来激活规则流:<o:p></o:p> workingMemory.startProcess( processId );<o:p></o:p> 使用规则流分组属性指定规则属于哪一个规则流分组<o:p></o:p> 该插件产生两个版本的规则流:<o:p></o:p>
当增加规则流到ProcessBuilder中时需要使用*.rfm格式的文件,如果使用*.rf文件会引起异常“CannotResolveClassException”,因为该类中包含的图形信息不是Drools核心的一部分,不能被识别。<o:p></o:p> lock-on-active <o:p></o:p> 一旦agenda-group或rule-flow-group开始激发它的规则,它不能接受指定lock-on-active属性设置为True的规则的任何更多的新事务,这有助于处理递归情况。<o:p></o:p> WorkingMemory 现在分成StatefulSession 和StatelessSession<o:p></o:p> WorkingMemory wm = ruleBase.newWorkingMemory()<o:p></o:p> WorkingMemory现在删除了,代替的是: <o:p></o:p> StatefulSession session = ruleBase.newStatefulSession();<o:p></o:p> StatelessSession session = ruleBase.newStatelessSession();<o:p></o:p> 异步方法<o:p></o:p> StatefulSession和StatelessSession都支持异步方法对于working memory的动作和fireAllRules。使用DefaultExecutorService处理线程模型,它仅仅是建立一个新的模型。一个自定义的ExecutorService能够同通过使用RuleBaseConfiguration指定。<o:p></o:p> 更简单的依赖<o:p></o:p> 对于core和compiler的额外的依赖已经被消减。<o:p></o:p> stateful <st1:city w:st="on"><st1:place w:st="on">conways</st1:place></st1:city> game of life<o:p></o:p> Conway's Game of Life 示例被更新,现在是完全状态的,这是最好的用来理解规则引擎的例子。 <o:p></o:p> DSL的重新介绍<o:p></o:p>
新的操作: "in", "not in", "memberOf", "not memberOf"<o:p></o:p>
Cheese( type in ( 'stilton', 'brie' )) 新的自动的有益字段:“this”现在可以用来作为约束fact的一个字段。<o:p></o:p>
rule "keeps consistency" Fact不再需要默认的构造函数<o:p></o:p>
对断言和返回值的隐式绑定<o:p></o:p>
Cheese( oldPrice : oldPrice, newPrice == ( oldPrice * 1.10 ) ) <o:p></o:p> 等同于: <o:p></o:p> Cheese( newPrice == ( oldPrice * 1.10 ) ) <o:p></o:p> 因为oldPrice已经被用户在断言返回值中隐式声明<o:p></o:p> BRMS<o:p></o:p> BRMS (商业规则管理系统)作为里程碑的一部分第一次可用了。这个组件有许多特性,这里只是简单的进行介绍(示例和手册在准备中) <o:p></o:p> Installation 安装<o:p></o:p> BRMS应用是一个war文件,这意味着要部署它只需要简单的将它放到部署目录下(如果你愿意使用默认设置,这是所有你需要做的)<o:p></o:p> The BRMS application itself is a war file, this means deploying it can be as simple as dropping it into an deploy directory (if you are happy with defaults, thats all you need to do) <o:p></o:p> 使用方法<o:p></o:p> Package配置<o:p></o:p>
规则编制<o:p></o:p>
发现素材<o:p></o:p> 在导航的时候,你也可以使用规则特性,它显示被目录分组的内容,或者你可以使用Packaget特性,通过Package和规则类型查看。如果你知道一个asset资产的名称的一部分,你也可以使用查找器,开始输入一个规则名,它将返回所有匹配你输入的名称的asset列表(因此如果你有一个明智的命名规则,可以很快地发现素材)。<o:p></o:p>
部署<o:p></o:p>
配置(可选)<o:p></o:p>
BRMS使用Apache Jackrabbit JCR实现作为内容存储,它有"PersistenceManagers"的概念,这些PMs支持所有在sun下的数据库(你也可以使用文件系统)。了解更多关于为你的环境配置PM的问题,请浏览Apache Jackrabbit: http://jackrabbit.apache.org/faq.html (在repository.xml已经带有一些示例)<o:p></o:p>
需求<o:p></o:p>
<o:p> </o:p> 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
||||
返回顶楼 | ||||
浏览 3598 次