- 浏览: 79823 次
- 性别:
- 来自: 重庆
最新评论
-
禀圣含华:
怎么弄空格呢?___________然后我固定这些空格,怎么弄 ...
第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 1459第31章. Seam内建组件 本章描述Seam内建组件 ... -
第30章. Seam注释
2009-05-26 20:21 1593第30章. Seam注释 在你编写一个Seam应用程 ... -
第31章. Seam内建组件
2009-05-26 20:21 1421第31章. Seam内建组件 本章描述Seam内建组件 ... -
第29章. 配置Seam和打包Seam应用程序
2009-05-26 20:19 1537第29章. 配置Seam和打包Seam应用程序 配置 ... -
第28章. Hibernate搜索
2009-05-26 20:17 151828.1. 介绍 如Apache Lucen ... -
第27章. Spring框架集成
2009-05-26 20:16 1392第27章. Spring框架集成 Spring集成 ... -
第26章. Seam和Google网页工具
2009-05-26 20:15 1214第26章. Seam和Google网页工具 ... -
第25章. 远程
2009-05-26 20:15 1268第25章. 远程 Seam 提供了一个从网页远程访 ... -
第24章. Web服务
2009-05-26 20:15 1675第24章. Web服务 Seam 集成了JBossWS, ... -
第23章. 缓存
2009-05-26 20:14 1413第23章. 缓存 在 ... -
第22章. 异步和消息
2009-05-26 20:12 2122第22章. 异步和消息 Seam 使异步执行来自网页请 ... -
第21章. Email
2009-05-26 20:11 1309现在Seam包含一个用于模板和发送邮件的可选组件。 Emai ... -
第 20章. RSS支持
2009-05-26 20:10 818第 20章. RSS支持 20.1. 安装 20.2. ... -
第19章. 微软的Excel 电子表格应用程序支持
2009-05-26 20:07 1821第19章. 微软的Excel 电子表格应用程序支持 S ... -
第18章. iText PDF 生成
2009-05-26 20:01 6471第18章. iText PDF 生成 18.1. 使用PDF ... -
第17章. Seam文本
2009-05-26 19:59 1022第17章. Seam文本 面向协作站点需要一种更有友好的 ... -
第16章. 国际化、本地化和主题
2009-05-26 19:57 1382第16章. 国际化、本地化和主题 Seam使构建国际化应用程 ... -
第15章 安全(2)
2009-05-26 19:56 930第15章 安全(2) 15.5. 错误消息 安全 ... -
第15章 安全(1)
2009-05-26 19:53 97715.1. 概述 Seam安全API为你基于Seam的 ... -
第13章 Seam 应用程序框架
2009-05-26 19:49 1402第13章 Seam 应用程序框架 Seam真正地使通过 ...
相关推荐
这是中文手册,Seam为持久化集成了JPA和Hibernate 3,为轻量化的异步性集成了EJB Timer Service和Quartz,为工作流集成了jBPM,为业务规则集成了JBoss规则,为电子邮件集成了Meldware Mail,为完整的文本搜索集成了...
JBoss Seam JBoss Seam JBoss Seam
JBOSS_SEAM配置
#### 第四章:配置Seam组件 最后一章重点介绍了如何通过配置文件和注解等方式来定制Seam组件的行为。 1. **通过属性设置配置组件**:说明了如何使用属性来调整组件的默认行为。 2. **后续内容预告**:预览了接下来...
**JBoss Seam组件中文手册** **一、Seam框架概述** Seam是一个开源的企业级Java框架,由JBoss公司开发,旨在简化Java EE应用程序的开发。它将多种技术如JavaServer Faces (JSF),Java Persistence API (JPA),EJB 3...
Seam支持多个开源JSF AJAX库,如JBoss RichFaces和JBoss ICEFaces,甚至内置了一个AJAX远程调用层,极大地提升了Web应用的交互性和响应速度。 #### 4. 声明式状态管理 Seam扩展了Servlet规范中的三个上下文(请求、...
- **JBoss Seam**:由JBoss提供的Seam实现,提供了一系列功能强大的工具和服务,帮助开发者快速构建复杂的Web应用。 - **本教程**:主要介绍了JBoss Seam的基本概念、核心组件以及通过一系列示例项目来学习Seam的...
JBoss Seam 是一个开源的应用框架,它结合了JavaServer Faces (JSF)、Java Persistence API (JPA)、Enterprise JavaBeans (EJB) 3.0 和其他Java EE组件,旨在简化企业级开发。这个文档集合包含了对Seam及其相关技术...
标题中的“Jboss seam3 实战”表明,本文将重点介绍JBoss Seam框架的第三个版本的实际应用。JBoss Seam是一个开源的Java EE框架,它通过依赖注入和会话模型,简化了基于Java EE的企业级应用开发。Seam框架为开发者...
JBoss Seam 是一个开源的企业级开发框架,它旨在简化Java EE应用的开发过程,特别是在Web和富互联网应用程序(Rich Internet Applications, RIA)领域。Seam 2.0是其重要的版本,提供了许多增强的功能和改进,为...
java jboss seam jboss-seam-selectitems
【JBoss教程及深入浅出JBoss+Seam】是一个针对企业级Java应用服务器JBoss的深度学习资源,其中包含了两个主要部分:JBoss教程和对JBoss与Seam框架结合使用的详细介绍。这两个主题都是Java开发人员在部署和管理企业...
例如,Seam与jBPM、JBoss Rules(Drools)、JBoss Portal和JBoss Microcontainer等框架的整合,既保持了各框架的原有功能,又提升了整体的效能。 Seam还特别关注ORM的使用。由于大多数Web框架并未为ORM设计,所以在...
[TipTec Development] JSF & Facelets & JBoss Seam 核心技术 (英文版) [TipTec Development] Essential JSF, Facelets & JBoss Seam (E-Book) ☆ 出版信息:☆ [作者信息] Kent Ka Iok Tong [出版机构] TipTec ...
Seam 是一种业级 企 Java 的应规用程序框架。它的灵感源自下列原 : 只有一种“工具” Seam为 应 业务业业 义 种统 组 你的 用程序中所有的 定 了一 一的 件模型。 Seam组件可能是 态义 关关 态 有状 的,包含与几...
除了整合EJB 3.0和JSF之外,Seam还能够扩展其他一系列开源框架,例如jBPM、JBoss Rules (Drools)、JBoss Portal 和 JBoss Microcontainer等。这不仅使得Seam能够成为一个高度集成的平台,还能够利用这些框架的功能来...
#### 第四部分:Seam 页面流示例 本节通过一个数字猜谜游戏展示了 Seam 页面流的概念。 **1.5.1 理解代码** - **页面流**:页面流是 Seam 中一种组织页面逻辑的方式。 - **游戏逻辑**:通过页面流管理游戏的状态...