在BPEL流程中使用企业规则

上传人:ldj****22 文档编号:35617907 上传时间:2018-03-18 格式:PDF 页数:33 大小:1.95MB
返回 下载 相关 举报
在BPEL流程中使用企业规则_第1页
第1页 / 共33页
在BPEL流程中使用企业规则_第2页
第2页 / 共33页
在BPEL流程中使用企业规则_第3页
第3页 / 共33页
在BPEL流程中使用企业规则_第4页
第4页 / 共33页
在BPEL流程中使用企业规则_第5页
第5页 / 共33页
点击查看更多>>
资源描述

《在BPEL流程中使用企业规则》由会员分享,可在线阅读,更多相关《在BPEL流程中使用企业规则(33页珍藏版)》请在金锄头文库上搜索。

1、 在在 BPEL 流程中使用企业规则流程中使用企业规则 作者: 刘兰 在 BPEL 流程中使用企业规则 目录目录 目录目录.2 1 介绍介绍.3 2 使用企业规则的例子使用企业规则的例子.5 2.1 需求定义.5 2.2 设计XML schema.6 2.3 在Rules Author里制定规则.7 2.4 在BPEL流程中使用规则.16 2.5 测试.29 3 总结总结.32 参考资料参考资料.32 作者介绍作者介绍.33 2在 BPEL 流程中使用企业规则 1 介绍介绍 在BPEL流程中,经常需要设置一些规则,根据规则判断的结果来确定流程的走向或是执行哪些任务1,例如:如果报销单的金额值大

2、于 500,则需要一级人工(直接经理)进行任务审批,而如果报销单的金额值大于 1000,则需要两级的人工(直接经理和部门经理)任务审批。用JDeveloper开发Oracle的BPEL流程时,可以使用两种活动来设置流程中的判断规则:Switch和Decide。 图 1 的流程中使用了Switch活动2,它包括两个分支:和,并且可以通过表达式给分支设置判断规则, 如果满足这个规则, 则执行分支内的子流程,否则执行内的子流程。 图 1 Switch 活动 图 2 的流程中使用了Decide活动,它通过规则引擎(Rule Engines)同Oracle的企业规则(Business Rules)3进行

3、连接,调用规则资源档案库(Rules Repository)中的规则。Oracle的SOA Suite提供了一个Web管理页面(Rules Author)用于设置企业规则,并把这些规则保存在Rules Repository中。 3在 BPEL 流程中使用企业规则 图 2 Decide 活动 可以单独使用这两种活动来设置规则,也可以使用 Decide 活动来调用企业规则,并用Switch 活动来控制流程的走向。 但是如果设置的规则需要在以后的生产环境中经常变动或规则比较复杂时,则不适合使用 Switch 活动来设置这些规则,因为需要在 Switch 活动中把规则硬编码进流程中。而采用企业规则,可

4、以在生产环境中动态地修改规则,并且不用重新部署和改动已部署好的 BPEL 流程,同时能设计出复杂的规则。 图 3 给出了在 BPEL 流程中使用企业规则的框架图。首先,在 Rules Author 的页面里制定规则,这些规则保存在 Rules Repository 中,接着可以在 JDeveloper 里使用 Decide 活动通过 Rules Engine 来调用制定好的规则。在使用 Rules Author 页面制定规则时,首先把 BPEL流程中用到同规则相关的 XML schema 元素格式转换为 JAXB Java 对象, 然后通过 “如果那么”的断言写出规则(例如,XML schem

5、a 中有 input 和 output 元素,则可以写出规则:如果 input 等于“123” ,则 output 等于“true” ) ,并且可以给规则设置优先级别,而同一优先级别则按规则出现的先后顺序依次进行判断。 4在 BPEL 流程中使用企业规则 图 3 在 BPEL 流程中使用企业规则 本文通过一个例子来介绍在 Rules Author 中设置规则, 并在 BPEL 流程中使用规则的步骤,以及其中容易出错的地方。 2 使用企业规则的例子使用企业规则的例子 2.1 需求定义需求定义 表 1 给出了学生信息的描述结构,其中包括学生的基本信息(姓名、学号、年级)和选课信息(课程名、学分、成

6、绩) ,并且基本信息是必需的(每个学生有且只有 1 项) ,而选课信息可为 0 到无穷项。为了描述方便,把所有的字段都设为字符串类型。 表 1 学生信息的描述结构 字段字段 类型类型 姓名 string 学号 string 基本信息 年级 string 课程名 string 学分 string 选课信息 成绩 string 5在 BPEL 流程中使用企业规则 假设已在 BPEL Server 上部署了三个 BPEL 同步子流程:bpel1、bpel2、bpel3,它们都只有一个 Assign 活动,分别输出“bpel1” 、 “bpel2” 、 “bpel3”字串,现在要设计新的 BPEL流程

7、,并完成如下功能: 1. 输入学生的基本信息和选课信息,根据具体的值进行下面的判断; 2. 如果学生的年级为“1” ,则调用 bpel1 子流程; 3. 如果学生的年级为“3” ,存在选课信息并且至少有一门课程的学分等于“4” ,则调用 bpel2 子流程; 4. 如果学生的年级为“3” ,存在选课信息,至少有一门课程的学分等于“5”且成绩为“80” ,则调用 bpel3 子流程。 2.2 设计设计 XML schema 在JDeveloper里新建stud.xsd文件(假设存放在D:softjdevstudio10133myworkBusinessRulesschema目录下) ,使用拖拽的

8、方式设计出图 4的XML schema结构,其中把命名空间设为http:/,使用了element、complexType和sequence组件,把outCome作为判断输出结果字段,把classInfo节点的minOccurs属性设为 0、 maxOccurs属性设为unbounded。 (这里最好不要使用BPEL或Rule中的关键字作为元素的名称,例如:如果用property作为元素的名称,设置的关于property的规则就不起作用了) 6在 BPEL 流程中使用企业规则 图 4 设计出的 XML schema 2.3 在在 Rules Author 里制定规则里制定规则 (1) 分别建立目

9、录用于存放规则的资料档案库(repository) (假设为 D:ruleRepositoryrules)和 JAXB java 对象(假设为 D:ruleRepository) 。 (2) 启动SOA Suite的所有服务,在浏览器中输入http:/localhost/ruleauthor进入Rules Author页面,用oc4jadmin用户登录。 (3) 点击右上角的“资料档案库”标签,然后选择资料档案库类型为“文件” ,在“文件位置”处输入 D:ruleRepositoryrulesrepository,如图 5 所示,然后点击“创建”按钮,稍后就可以在 D:ruleReposito

10、ryrules 目录下看到创建出的 repository 文件。 7在 BPEL 流程中使用企业规则 图 5 创建“资料档案库” (4) 可以在资料档案库下创建多个“字典” ,而每个字典又可以有多个版本,字典包含了可以使用的 XML Fact 和变量等。在连接资料档案库后,点击左上角的“创建”标签。 图 6 创建字典 设置新字典名为“dictionary” ,然后点击“创建”按钮。 图 7 设置新字典名 然后点击左上角的“加载”标签。 8在 BPEL 流程中使用企业规则 图 8 加载字典 由于 dictionary 字典是刚建立的,所以默认的版本为“INITIAL” 。选择现有的字典为“dic

11、tionary” ,版本为“INITIAL” ,然后点击“加载”按钮。 图 9 加载 dictionary 字典 (5) 接着,要把 2.2 节中设计的 stud.xsd 文件导入进字典中,转化为 JAXB Java 对象。点击右上角的“定义”标签。 图 10 进入定义标签 然后点击左边树型结构中的“XMLFact”节点,再点击“创建”按钮。 9在 BPEL 流程中使用企业规则 图 11 创建 XMLFact 在 “ XML方 案 ” 处 输 入2.2节 中 设 计 的stud.xsd的 路 径 及 文 件 名(D:softjdevstudio10133myworkBusinessRuless

12、chemastud.xsd) ,在“JAXB 类目录”处输入 D:ruleRepository,在“目标程序包名”处输入 .stud,然后点击“添加方案”按钮。 图 12 设置 XML 方案选择器 稍等一下,就会看到已经把 stud.xsd 文件导入进当前 XML 方案中,展开生成的 JAXB类 中 的 树 型 结 构 , 会 看 到 生 成 的JAXB Java对 象 , 也 可 以 在D:ruleRepositoryoraclecomstud 目录下看到生成的 Java 文件和编译后的.class 文件。 然后选中最上层 oracle 目录左边的框,再点击“导入”按钮。稍等一下,就会看到“已导入 1

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 行业资料 > 其它行业文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号