- 浏览: 77399 次
- 性别:
- 来自: 重庆
最新评论
-
禀圣含华:
怎么弄空格呢?___________然后我固定这些空格,怎么弄 ...
第18章. iText PDF 生成 -
super0555:
managed
第13章 Seam 应用程序框架 -
Javakeith:
代码呢?共享下代码呗!
第18章. iText PDF 生成 -
tonyshen277:
同感啊。还在做Win32下的开发,楼主所说的一个都不能少啊。
转自baidu wqqq 给软件开发初学者 -
kdboy:
的确,把人放在宇宙中去看,从上帝的眼中去看,人的确是非常渺小, ...
人生是什么
第14章 Seam 和 JBoss 规则
Seam使从Seam组件或jBPM处理定义调用JBoss规则(Drools) 规则库变得容易。
14.1. 安装规则
第一步,是用一个Seam上下文变量产生一个可用的org.drools.RuleBase实例。为测试的目的,Seam提供了一个内建的组件,编译来自类路径的一个静态规则集。你可能安装这个组件,通过components.xml:
<drools:rule-base name="policyPricingRules">
<drools:rule-files>
<value>policyPricingRules.drl</value>
</drools:rule-files>
</drools:rule-base>
组件从一组.drl文件编译规则,并且缓存一个org.drools.RuleBase实例在Seam APPLICATION上下文中。注意,它与你需要安装的基于规则驱动的应用程序的多重规则十分相似。
如果你想使用一个Drools DSL(Domain Specific Language),你还需要指定DSL定义:
<drools:rule-base name="policyPricingRules" dsl-file="policyPricing.dsl">
<drools:rule-files>
<value>policyPricingRules.drl</value>
</drools:rule-files>
</drools:rule-base>
在大部分规则驱动的应用程序,规则需要动态地部署,因此,一个产品应用程序需要使用一个Drools规则代理管理规则库。规则代理能从一个本地文件仓库连接到一个Drools规则服务器(BRMS)或者热部署规则包。受管理规则代理的规则库在components.xml中也是可配置:
<drools:rule-agent name="insuranceRules"
configurationFile="/WEB-INF/deployedrules.properties" />
属性文件包含规则代理的属性细节。这里是一个配置文件例子,来自发布的Drools例子:
newInstance=true
url=http://localhost:8080/drools-jbrms/org.drools.brms.JBRMS/package/org.acme.insurance/
fmeyer
localCacheDir=/Users/fernandomeyer/projects/jbossrules/drools-examples/drools-examples-
brms/cache
poll=30
name=insuranceconfig
绕过配置文件,直接配置依附于组件的选项也是可能的。
<drools:rule-agent name="insuranceRules"
url="http://localhost:8080/drools-jbrms/org.drools.brms.JBRMS/package/org.acme.insurance/
fmeyer"
local-cache-dir="/Users/fernandomeyer/projects/jbossrules/drools-examples/drools-
examples-brms/cache"
poll="30"
configuration-name="insuranceconfig" />
下一步,我们需要为每个对话产生一个可用的org.drools.WorkingMemory实例。(每个WorkingMemory‘工作存储器’收集涉及当前对话的facts)
<drools:managed-working-memory name="policyPricingWorkingMemory" auto-create="true"
rule-base="#{policyPricingRules}"/>
注意,我们通过 ruleBase 配置属性给policyPricingWorkingMemory 一个返回到我们的规则库的引用。
14.2. 从一个Seam组件使用规则
现在我们能注入我们的WorkingMemory进入任何Seam组件,声称facts,并触发规则:
@In WorkingMemory policyPricingWorkingMemory;
@In Policy policy;
@In Customer customer;
public void pricePolicy() throws FactException
{
policyPricingWorkingMemory.assertObject(policy);
policyPricingWorkingMemory.assertObject(customer);
policyPricingWorkingMemory.fireAllRules();
}
14.3.从一个 jBPM 处理定义使用规则
你甚至能允许一个规则库担当一个jBPM动作处理器、决定处理器或分配处理器——在一个页面流或商业处理定义中。
<decision name="approval">
<handler class="org.jboss.seam.drools.DroolsDecisionHandler">
<workingMemoryName>orderApprovalRulesWorkingMemory</workingMemoryName>
<assertObjects>
<element>#{customer}</element>
<element>#{order}</element>
<element>#{order.lineItems}</element>
</assertObjects>
</handler>
<transition name="approved" to="ship">
<action class="org.jboss.seam.drools.DroolsActionHandler">
<workingMemoryName>shippingRulesWorkingMemory</workingMemoryName>
<assertObjects>
<element>#{customer}</element>
<element>#{order}</element>
<element>#{order.lineItems}</element>
</assertObjects>
</action>
</transition>
<transition name="rejected" to="cancelled"/>
</decision>
<assertObjects>元素指定EL表达式,其返回一个被声明为facts进入到WorkingMemory之内的对象或者对象集。
还支持对jBPM 任务分配使用Drools:
<task-node name="review">
<task name="review" description="Review Order">
<assignment handler="org.jboss.seam.drools.DroolsAssignmentHandler">
<workingMemoryName>orderApprovalRulesWorkingMemory</workingMemoryName>
<assertObjects>
<element>#{actor}</element>
<element>#{customer}</element>
<element>#{order}</element>
<element>#{order.lineItems}</element>
</assertObjects>
</assignment>
</task>
<transition name="rejected" to="cancelled"/>
<transition name="approved" to="approved"/>
</task-node>
某些对象作为Drools globals提供给规则使用,即,jBPM Assignable 作为assignable和Seam Decision对象作为decision。处理决定的规则将要调用decision.setOutcome("result")来确定决定的结果。处理分配的规则将要使用Assignable设置参与者的id。
package org.jboss.seam.examples.shop
import org.jboss.seam.drools.Decision
global Decision decision
rule "Approve Order For Loyal Customer"
when
Customer( loyaltyStatus == "GOLD" )
Order( totalAmount <= 10000 )
then
decision.setOutcome("approved");
end
package org.jboss.seam.examples.shop
import org.jbpm.taskmgmt.exe.Assignable
global Assignable assignable
rule "Assign Review For Small Order"
when
Order( totalAmount <= 100 )
then
assignable.setPooledActors( new String[] {"reviewers"} );
end
注意:在http://www.drools.org能找到更多内容
警告: Seam 配备了足够的Drools从属物来实现一些简单的规则。如果你想对Drools增加额外的能力 ,你应该下载完整的分发版并增加需要的额外的从属物。
技巧:Drools专为Java 1.4配备了MVEL 编译器,它兼容Java 1.4、Java 5 和Java 6。您可以用一个你正使用的java版本的编译器改变你的MVEL jar 。
发表评论
-
第31章. Seam内建组件
2009-05-28 11:51 1392第31章. Seam内建组件 本章描述Seam内建组件 ... -
第30章. Seam注释
2009-05-26 20:21 1503第30章. Seam注释 在你编写一个Seam应用程 ... -
第31章. Seam内建组件
2009-05-26 20:21 1339第31章. Seam内建组件 本章描述Seam内建组件 ... -
第29章. 配置Seam和打包Seam应用程序
2009-05-26 20:19 1481第29章. 配置Seam和打包Seam应用程序 配置 ... -
第28章. Hibernate搜索
2009-05-26 20:17 149028.1. 介绍 如Apache Lucen ... -
第27章. Spring框架集成
2009-05-26 20:16 1332第27章. Spring框架集成 Spring集成 ... -
第26章. Seam和Google网页工具
2009-05-26 20:15 1159第26章. Seam和Google网页工具 ... -
第25章. 远程
2009-05-26 20:15 1217第25章. 远程 Seam 提供了一个从网页远程访 ... -
第24章. Web服务
2009-05-26 20:15 1586第24章. Web服务 Seam 集成了JBossWS, ... -
第23章. 缓存
2009-05-26 20:14 1350第23章. 缓存 在 ... -
第22章. 异步和消息
2009-05-26 20:12 2060第22章. 异步和消息 Seam 使异步执行来自网页请 ... -
第21章. Email
2009-05-26 20:11 1265现在Seam包含一个用于模板和发送邮件的可选组件。 Emai ... -
第 20章. RSS支持
2009-05-26 20:10 785第 20章. RSS支持 20.1. 安装 20.2. ... -
第19章. 微软的Excel 电子表格应用程序支持
2009-05-26 20:07 1786第19章. 微软的Excel 电子表格应用程序支持 S ... -
第18章. iText PDF 生成
2009-05-26 20:01 6386第18章. iText PDF 生成 18.1. 使用PDF ... -
第17章. Seam文本
2009-05-26 19:59 998第17章. Seam文本 面向协作站点需要一种更有友好的 ... -
第16章. 国际化、本地化和主题
2009-05-26 19:57 1335第16章. 国际化、本地化和主题 Seam使构建国际化应用程 ... -
第15章 安全(2)
2009-05-26 19:56 896第15章 安全(2) 15.5. 错误消息 安全 ... -
第15章 安全(1)
2009-05-26 19:53 93915.1. 概述 Seam安全API为你基于Seam的 ... -
第13章 Seam 应用程序框架
2009-05-26 19:49 1354第13章 Seam 应用程序框架 Seam真正地使通过 ...
相关推荐
这是中文手册,Seam为持久化集成了JPA和Hibernate 3,为轻量化的异步性集成了EJB Timer Service和Quartz,为工作流集成了jBPM,为业务规则集成了JBoss规则,为电子邮件集成了Meldware Mail,为完整的文本搜索集成了...
JBoss Seam JBoss Seam JBoss Seam
JBOSS_SEAM配置
JBOSS SEAM组件中文手册 Seam_2.0_Reference_zh_CN
java jboss seam jboss-seam-selectitems
jboss -seam 绝对有用教程,
[TipTec Development] JSF & Facelets & JBoss Seam 核心技术 (英文版) [TipTec Development] Essential JSF, Facelets & JBoss Seam (E-Book) ☆ 出版信息:☆ [作者信息] Kent Ka Iok Tong [出版机构] TipTec ...
Jboss Seam中文参考手册,通过大量的实例详细介绍seam的使用
Seam 是一种业级 企 Java 的应规用程序框架。它的灵感源自下列原 : 只有一种“工具” Seam为 应 业务业业 义 种统 组 你的 用程序中所有的 定 了一 一的 件模型。 Seam组件可能是 态义 关关 态 有状 的,包含与几...
jboss教程 深入浅出JBoss+Seam
1.4. Seam 和jBPM:待办事项列表(todo list)示例..................................................................................................... 32 1.4.1. 理解代码....................................
jboss-seam2.0文档.rar,希望大家能够喜欢,谢谢大家的支持,嘿嘿
整理自jboss seam 中文站,压缩为chm格式,便于广大jboss seam爱好者阅读,所有版权归jboss seam中文站所有。
个人收集整理的最全面seam文档 包括seam_reference(中、英) richfaces jsf a4j 以及seam一些其他主要功能
JBoss_Seam--中文、Seam教程,中文Seam针对初学者很好的讲解及实例。希望对您有所收获。
深入浅出JBoss Seam 作者 Michael Yuan 译者 包亮 本文节选了Michael Yuan和Thomas Heute所著的即将出版JBoss Seam: Power and Flexibility Beyond Java EE 5.0第一章和第二章,内容有所删减。
JBoss seam源码 JBoss seam源码 JBoss seam源码 JBoss seam源码 JBoss seam源码 JBoss seam源码 JBoss seam源码 JBoss seam源码
jboss seam 参考,英文, seam包内的参考文档
jboss seam 和jsf2 开发好书
JBoss Seam的简介 入门开发的领路杰作