在 Receive Data 中为从客户那里接收到的 Order Change 请求指定一个变量,并在运行时为该变量赋值。您可以使用 Variable Assignment 模式或者 Transformation 模式。在这里,将把从客户那里接收到的 XML 消息直接赋给有相同数据类型的变量 orderChangexsd,如图 1 中所示。
图 1
该 JPD 流程与下方所示类似:
@jpd:process process::
* <process name="orderchange">
* <clientRequest name="orderChangeRequest" method="orderChangeRequest"/>
* </process>::
它后面的代码与清单 1 中的类似。
添加 Web 服务
下一步是调用 validateConfig Web 服务。您可以创建一个 Web 服务控件来调用这个 Web 服务。这里假设您已经为该服务定义了一个 WSDL。我们将通过 WSDL 创建该 Web 服务控件。第一步是将 WSDL 导入到 schemas 文件夹中。
在将 WSDL 导入到业务应用程序的 schemas 文件夹的同时,也创建了 XML Bean。让我们先详细研究一下 XML Beans。
XML Beans
XML Schema 是 XMLBeans 的起始点。XML Schema 规范提供了允许您表示数据的结构和约束的大量数据模型。在 XML Schema 中,您可以强制性地控制文档中数据的排列顺序以及约束特定值的方式(例如,价格必须大于 $150.00)。要在 Java 中做到这一点,就必须编写自定义代码。XMLBeans 接受这些模式约束。
让我们查看清单 2 中所示的 outValidateConfig 的模式和 XML,看一下如何将它转换成 XMLBeans 。这是 validateConfig 服务的输出模式,它指出了配置有效与否,如果无效,则指出错误。
您有一个复杂类型元素 outValidateConfig。在模式中,复杂类型指的是定义可包含子元素和属性的元素类型。复杂类型中所嵌套的序列元素列出了其子元素。由于 outValidateConfig 位于模式的顶部,所以其类型为全局类型。
在一个复杂类型 outValidateConfig 中,可以使用简单类型(如 ConfigID)和复杂类型(如 Status)。这个简单类型是一个内置类型,它是模式规范的一部分。该规范中一共定义了 64 个内置类型。在编译 XML 模式时,由此产生的 API 是由两种类型组成的,其中一种类型是内置类型,它们在模式规范中映射那些 API,另一种类型是从用户派生的模式类型生成的。要编译 XML 模式,可以将该模式或者 WSDL 导入到 WebLogic Workshop 的 schemas 目录中,它将创建该 XMLBeans。
编译后的 XML Schema 为您提供了两个生成的接口:OutValidateConfigDocument 和 outValidateConfigDocument.outValidateConfig。从模式的观点来看,生成的 outValidateConfig 接口表示了在该模式的 outValidateConfig 元素声明中看到的复杂类型。该复杂类型被转换成包含 4 个元素的序列,这 4 个元素是:Status、Error、ConfigID 和 ShipDate。outValidateConfig 接口提供诸如 getStatus 和 setStatus 方法来提取和设置 status 元素的值。
outValidateConfigDocument 接口表示了 outValidateConfig 文档,该文档包含 outValidateConfig 根元素。XMLBeans 创建了一个特殊的“document”类型作为全局元素类型。文档类型为您提供了一个获取和设置基础类型值的方法,这里由 outValidateConfig 表示它。因为 outValidateConfig 是根元素,同时可以在模式中的任何其他地方对其进行引用,所以它被认为是一个全局元素。为了设置或获取用户定义类型的值,还提供了 get 和 set 方法。
一旦有了 XMLBeans,就可以在 WSDL 中创建 Web 服务控件。为了做到这一点,您可以通过在 WSDL 中指定选项来添加一个 Web 服务控件。让我们来详细了解一下控件框架。
控件框架
可以使用 WebLogic Workshop 8.1 的控件框架来轻松连接并使用数据库、后端系统(如 ERP 或者遗留系统)、定制或供应商应用程序,以及包含 Java 控件的 Web 服务。这些控件封装了其他控件,并添加了业务逻辑来创建作为业务流程一部分的可重用复合组件。
图 2
BEA WebLogic Workshop 包含以下控件:
Web 服务控件:可以将该控件从 WSDL 文件导入 Web 服务中,这些 WSDL 文件可以是本地或者从 UDDI 服务器上动态提取的。这些控件可以和任何 .NET 或者 Java Web 服务进行互操作。
EJB 控件:EJB 控件包含用于 JNDI 查找、对象创建以及创建步骤的代码。EJB 可以通过控件对象来调用。
Database 控件:企业数据库是通过 database 控件以 JDBC 的方式集成的。SQL Maps 允许您指出应该如何将其 Java 参数替换到查询中。
JMS 控件:客户通过回调来监听这个 JMS 控件。该控件可以向队列发布和订阅消息。
J2EE CA Adapter 控件:企业应用程序和遗留系统可以通过 J2EE CA 适配器来访问,它们是由 J2EE CA 控件控制的。J2EE CA 接口通过 XML 映射与 Java 集成在一起。
Timer 控件:可以利用该控件对响应和请求的时序进行管理,它可以定时触发 Web 服务。这使它能够向客户发送状态更新、轮询数据源或者建立一个资源请求超时。
一旦创建了Web 服务控件,就需要在业务流程的定义中指定对 validateConfig Web 服务控件的调用。我们需要发送 validateConfig 方法指定的数据。为此,我们建立了从 orderchange.xsd 中接收到的数据到 validateConfig 的数据转换,如图 2 所示。数据转换的代码参见清单 3。在清单 4 中,orderchange.xsd 的模型元素被映射到 validateConfig 方法的模型元素:
在清单 5 中,orderchange.xsd 中的 cstic 元素被映射到 validateConfig 方法的 cstic 元素。
图 3 显示了该转换。
结束语
在下一篇文章中,我将探讨如何在业务流程中创建决策点和订单状态控件。在第 4 篇文章中,我将写入对文件的更改并结束该流程。在本系列的最后一篇文章中,我将讨论流程监控。
第3部分--使用WebLogic平台进行订单管理
添加决策节点
验证配置流程节点执行后会有两个结果——一个是产品有效而另一个是产品无效。为了决定如何处置这两个结果,需要在业务流程中添加一个决策节点。如果配置有效,流程将继续;否则,它将结束。单击面板中的Decision,然后拖拽决策节点到设计视图中的业务流程上就可以添加该节点,如图1所示。
这个决策节点需要定义一个条件,这可以通过双击condition节点以调用决策构造器来进行。变量以缺省方式选择,当您根据XML文档中元素的值(也就是状态)来设计决策时,应该使用变量,该元素要根据XML Schema来验证。选择做出决策所依据的XML元素。为此,需要从outValidateConfig中选择属性状态。从运算符列表中选择=运算符,然后在Right Hand Expression字段中输入true。单击“添加”以加入刚创建的条件(BEA)-
data($outValidateConfig/ns:Status)= "true"
这样就完成了该节点的第一个条件的设计。图2显示如果validateConfig状态为真,则可以进入下一步;如果决策为假,则流程结束。在运行时,通过计算决策点的值来决定流程的路径。
添加数据库控件
如果配置有效,则流程进入下一步,这通过数据库控件来执行。数据库控件是控件框架的一部分。(控件框架将在最后一篇文章中讨论)
需要给流程添加一个数据库控件。数据库控件提供对包含某一特定AccountID的orderStatus数据库的访问。该控件将AccountID发送给数据库表ORDERSTATUS,后者发送应答以反映订单是否可修改。 可以从应用程序的数据库控件访问关系数据库。使用数据库控件可以发送SQL命令给数据库,SQL命令通过JDBC驱动程序访问数据库。必须指定WebLogic中配置的数据源,本例中是cgdatasource。数据库控件自动执行从数据库查询到Java对象的转换,因此用户可以方便地访问查询结果。
首先创建一个名为record.java的新Java类。Record类是一个代表数据库内单个记录的Java对象。特别的是,它代表数据库中ORDERSTATUS表中的单个记录。下面是需要添加到record.java的代码:
public class Record
{
public String orderStatus;
}
创建一个查询ORDER STATUS表的数据库控件文件,然后返回一个包含查询结果的记录对象。这个数据库控件文件名为OrderStatus DB.jcx,JCX代表Java Control extension。JCX文件扩展WebLogic Workshop中预建的一个控件类。此处,它是com.bea.control.DatabaseControl类,该类提供了访问数据库的简单方法。BEA WebLogic Workshop提供的大多数内建控件可以定制——也就是说,当在项目中添加新的内建控件时, WebLogic Workshop生成一个扩展控件的JCX文件。在某些情况下——比如对于数据库控件或JMS控件——可以通过添加或编辑JCX文件中定义的方法来定制控件。WebLogic Workshop根据控件将要访问的EJB来定制EJB控件。
文章来源于领测软件测试网 https://www.ltesting.net/