微信朋友圈推广信息流推广多少钱效果好不好

本文所属图书&>&
《疯狂Workflow讲义&&基于Activiti的工作流应用开发》首先对Activiti的基础知识进行讲解,并从源代码的实现上讲解Activiti各个模块的API。此外详细讲述了BPMN2 0规范的内容,包括目前Activiti对该规范的实现情&&
规则属性一般使用在规则中,Drools官方文档提供的规则属性有11个,本小节会讲述这些属性的作用,并且会从这些属性中选择几个常用的属性用于举例。一个含有属性的规则结构如下所示。
rule &Rule Name&
&&& 属性名称 属性值
&&&&&&& 条件
&&&&&&& 行为
以下为可以在规则中使用的属性及其描述。
no-loop:如果一个事实对象在自身规则行为中被改变,那么使用该值来判断是否需要重新匹配本规则。默认值为false,表示事实对象发生变化时,总会重新匹配该规则。
ruleflow-group:Drools也有自己的流程引擎,该属性可以与流程节点配合使用,指定某个流程节点使用的规则组。
agenda-group:为规则设定所属的规则组,当规则组获得焦点时,会匹配组内的规则,如果规则组没有获得焦点,那么组内的规则将不会被触发,该属性默认值为MAIN。
lock-on-active:在一个规则组内,如果一个规则被触发,则使用该属性会判断是否再次触发该规则,如果为true,则表示不需要再触发这个规则(即使符合条件),该属性可以看作是no-loop的加强版。
auto-focus:如果该属性值为true并且规则符合触发条件,那么该规则所在的规则组将会自动获得焦点,默认值为false。
activation-group:如果多个规则配置了相同的激活组,那么这些规则中只会有一个规则被激活。
salience:默认值为0,该属性配置规则的优先级,属性值越大,规则匹配的优先级越高,可以为负数。
dialect:指定LHS或者RHS的表达式方言,当前支持&java&和&mvel&,规则中的方言默认与包中指定的方言一致。
date-effective:规则的生效时间,规则将会在该时间之后被触发(符合条件的情况下)。
date-expires:规则的有效时间(结束时间),在有效时间之后,规则将不会被触发。
duration:如果一个规则符合触发条件,那么该属性配置规则被匹配后触发的延迟时间。
代码清单14-19所示的规则文件使用了这些属性中的no-loop、agenda-group、lock-on-active、auto-focus、activation-group、salience和duration。
代码清单14-19 codes\14\14.6\drools-grammar\resource\rule\Property.drl
package org.crazyit.
rule &No Loop&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& &①
&&& no-loop false
&&&&&&& $p : PropertyPerson(age & 20)
&&&&&&& System.out.println(&当前年龄:& + $p.getAge());
&&&&&&& int newAge = $p.getAge() + 1;
&&&&&&& $p.setAge(newAge);
&&&&&&& update($p);
rule &Agenda Group A&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& &②
&&& agenda-group &My Group 1&
&&& auto-focus true
&&&&&&& $p : PropertyPerson(age == 30)
&&&&&&& System.out.println(&Agenda Group A&);
&&&&&&& $p.setAge(31);
&&&&&&& update($p);
rule &Agenda Group B&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& &③
&&& agenda-group &My Group 1&
&&& lock-on-active true
&&&&&&& $p : PropertyPerson(age == 31)
&&&&&&& System.out.println(&Agenda Group B&);
rule &Activation Group A&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& &④
&&& activation-group &My Group 2&
&&&&&&& $p : PropertyPerson(age == 40)
&&&&&&& System.out.println(&Activation Group A&);
rule &Activation Group B&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& &⑤
&&& activation-group &My Group 2&
&&&&&&& $p : PropertyPerson(age == 40)
&&&&&&& System.out.println(&Activation Group B&);
rule &Duration&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& &⑥
&&& duration 1000
&&&&&&& $p : PropertyPerson(age == 50)
&&&&&&& System.out.println(&执行配置了duration的规则&);
rule &Salience 1&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& &⑦
&&& salience 2
&&&&&&& $p : PropertyPerson(age == 60)
&&&&&&& System.out.println(&salience 为 2的规则&);
rule &Salience 2&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& &⑧
&&& salience 1
&&&&&&& $p : PropertyPerson(age == 60)
&&&&&&& System.out.println(&salience 为 1的规则&);
代码清单14-19中的规则①使用了no-loop属性,当参数PropertyPerson实例的age属性小于20时,就会触发该规则。这个规则的行为会直接改变PropertyPerson实例的age属性,新的age值等于旧的age值加1,最后使用update函数(规则①的粗体代码)来通知规则引擎事实实例发生改变。由于规则①配置了no-loop属性为false,那么事实对象被改变的话,规则①会被再次触发,直到事实对象不再符合规则条件。
规则②和③中使用了agenda-group、auto-focus与lock-on-active属性,规则②和③同时指定它们属于同一个&My Group 1&规则组。其中规则②配置了auto-focus属性为true,表示如果规则②被触发后,它所在的规则组将会获得焦点。规则③设置了lock-on-active属性为true,当规则②被触发,并且改变了事实对象后,即使改变后的事实对象符合规则③的触发条件,规则③也不会触发。规则②中的行为,会改变PropertyPerson实例的age值,设置为31,而规则③的条件为PropertyPerson实例的age值为31,但是规则③并不会被触发,因为规则③设置了lock-on-active属性为true。
规则④和⑤使用了activation-group属性指定了这两个规则的激活组为&My Group 2&,注意这两个规则的条件一致,由于使用了activation-group属性,即使两个规则的条件一样,也只会触发其中一个规则,而不会触发两个规则。
规则⑥使用了duration属性,设置值为1000,表示在规则被匹配到1秒后执行规则行为,duration属性为long类型。
规则⑦和⑧使用salience属性来配置规则的匹配优先级,规则⑦和⑧的条件一样,当PropertyPerson的age值等于60时,会触发这两个规则,但是规则⑦的salience值为2,规则⑧的salience值为1,因此规则⑦会先于规则⑧执行。
使用了各个规则之后,编写代码,插入不同的事实实例(本例为PropertyPerson),如代码清单14-20所示。
代码清单14-20 codes\14\14.6\drools-grammar\src\org\crazyit\drools\Property.java
&&&&&&& // 使用KnowledgeBase创建StatefulKnowledgeSession
&&&&&&& StatefulKnowledgeSession ksession = kbase
&&&&&&&&&&&&&&& .newStatefulKnowledgeSession();
&&&&&&& // 测试no-loop
&&&&&&& PropertyPerson p1 = new PropertyPerson(&person 1&, 17);
&&&&&&& // 测试lock-on-active和agenda-group
&&&&&&& PropertyPerson p2 = new PropertyPerson(&person 2&, 30);
&&&&&&& // 测试activation-group
&&&&&&& PropertyPerson p3 = new PropertyPerson(&person 3&, 40);
&&&&&&& // 测试Duration
&&&&&&& PropertyPerson p4 = new PropertyPerson(&person 4&, 50);
&&&&&&& // 测试salience
&&&&&&& PropertyPerson p5 = new PropertyPerson(&person 5&, 60);
&&&&&&& // 插入到Working Memory
&&&&&&& ksession.insert(p1);
&&&&&&& ksession.insert(p2);
&&&&&&& ksession.insert(p3);
&&&&&&& ksession.insert(p4);
&&&&&&& ksession.insert(p5);
&&&&&&& // 匹配规则
&&&&&&& ksession.fireAllRules();
&&&&&&& // 触发全部规则后,停止两秒,让配置了duration的规则执行
&&&&&&& Thread.sleep(2000);
在代码清单14-20中创建了5个PropertyPerson实例,用于测试不同的属性。第一个PropertyPerson的age值为17,用于测试代码清单14-19中的规则①,第二个age值为30,用于测试规则②和③;第三个age值为40,用于测试④和⑤;第四个age值为50,用于测试规则⑥;第五个age值为60,用于测试规则⑦和⑧。运行代码清单14-20,最终输出结果如下:
Agenda Group A&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& &第1行
salience 为 2的规则&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& &第2行
salience 为 1的规则&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& &第3行
Activation Group B&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& &第4行
当前年龄:17&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& &第5行
当前年龄:18&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& &第6行
当前年龄:19&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& &第7行
执行配置了duration的规则&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& &第8行
如输出结果所示,第1行由规则②输出,第2行和第3行是测试规则优先级的结果,分别由规则⑦和⑧输出,第4行由规则⑤输出(规则④没有执行),第5行到第7行均由规则①输出,直到PropertyPerson的age值大于20(不符合触发条件)时,规则才不再被触发,本例中传入的PropertyPerson的age值为17,因此会触发三次,第8行为规则⑥输出,该规则会在匹配到规则1秒后执行。
本小节粗略介绍了规则文件中各个属性的使用,如果想更进一步了解这些属性的工作原理和更高级的使用方法,可查看Drools的相关书籍或者直接查看Drools的官方文档。
您对本文章有什么意见或着疑问吗?请到您的关注和建议是我们前行的参考和动力&&
(window.slotbydup=window.slotbydup || []).push({
id: '2467141',
container: s,
size: '1000,90',
display: 'inlay-fix'
您的浏览器不支持嵌入式框架,或者当前配置为不显示嵌入式框架。
(window.slotbydup=window.slotbydup || []).push({
id: '2467142',
container: s,
size: '1000,90',
display: 'inlay-fix'
(window.slotbydup=window.slotbydup || []).push({
id: '2467143',
container: s,
size: '1000,90',
display: 'inlay-fix'
(window.slotbydup=window.slotbydup || []).push({
id: '2467148',
container: s,
size: '1000,90',
display: 'inlay-fix'您所在位置: &
&nbsp&&nbsp&nbsp&&nbsp
具有学习能力的自搜索规则匹配的的研究.pdf62页
本文档一共被下载:
次 ,您可全文免费在线阅读后下载本文档。
文档加载中...广告还剩秒
需要金币:200 &&
你可能关注的文档:
··········
··········
南京邮电大学硕士研究生学位论文 摘要 摘
要 近些年来,以规则引擎为核心的业务规则管理系统得到了很大的发展,但规则引擎服
务器的效率始终处于一个比较低的水平。造成这一结果的原因有很多,其中规则引擎工作
存储器中大量无效数据的存在,极大地耗费了规则引擎服务器的时间和空间资源。 本文详细研究规则引擎的核心技术Rete算法和规则匹配的具体过程,发现无效数据主
要分为两种。它们是:一、匹配前加入到工作存储器中与规则匹配结果无关的数据;二、
匹配网络Beta部分生成的无效中间匹配结果。针对这两种无效数据,本文提出具有学习能
力自搜索方案。该方案根据规则引擎规则库中的具体规则,找出规则涉及到的各对象之间 的关联关系,然后将关联关系加入到搜索条件中去约束搜索,从而达到将不满足规则关联
关系的无效数据排除进入规则引擎工作存储器中的目的。另外,该方案还赋予搜索以学习
能力,使得搜索可以得到不断优化,最终将最大量的无效数据排除进入规则引擎的工作存
储器。 本文在介绍作者研究之前,讲解了规则引擎的产生背景、相关概念及其理论基础,以
便读者可以很好地理解。 关键词:自搜索,学习,规则匹配,图,数据库,Rete
南京邮电大学硕士研究生学位论文 ABSTRACT ABSTRACT Rule takesRule asits Recently,BusinessManagementSystem,whichEnginecore,has the atalowlevel.Thereare
been rapidly,but
ofRule isstill many developed efficiencyEngines make of fact
factorswhichthis ofthemistheexistence happen;one hugeredundancyinputdata,
whichnot also more arule memoryresources,butexpendstime,whenengine onlyexpends
makesrule matching. Themaincontentthis isaboutthefact―searchoftherule of paper engine.Thispaper t
正在加载中,请稍后...Peader Forbes
TE& Heilind
Tracy Wang
-----------------
---------------
Scott Hunt
【每周一题】
---------------------------------------------
海量库存+原装正品+方案配套+超低折扣
找现货、找折扣找方便、找保障我们在这里期待您的光临
友情链接:
座谈进行中xPeader Forbes
TE& Heilind
Tracy Wang
-----------------
---------------
Scott Hunt
【每周一题】
---------------------------------------------
海量库存+原装正品+方案配套+超低折扣
找现货、找折扣找方便、找保障我们在这里期待您的光临
友情链接:
座谈进行中x}

我要回帖

更多关于 微信朋友圈信息流广告 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信