2009年7月19日星期日

SOA_025:SOA Composite Application 是啥东东?

一个SOA合成应用是由很多服务、服务组件、wires、引用组装而成的,并且作为一个单独的应用发布的。
比如,在这张图中,使用 .NET技术实现的 payment calculator 是一个外部应用,它发送SOAP消息来初始化合同。进入SOA 服务器后,消息的传播是这样的:
(1)Service Infrastructure 从“绑定组件(在这里是HTTP SOAP Binding)”接收 SOAP消息,并且决定消息的下一个目的地(在这里是BPEL 引擎)。
(2)BPEL 引擎收到消息后,把消息交给 Loan BPEL Process 处理。
(3)Loan BPEL Process 处理完毕后,把返回消息传回给 Service Infrastructure。
(4)Service Infrastructure把返回信息交给下一个目的地(在这里是人工工作流引擎)。
(5)人工工作流引擎把信息交给工单系统,等待经理审批。
......
图的上部虚线框住的部分就是“SOA合成应用”。

1. SOA合成应用的角色构成
(1) Binding Components
建立SOA合成应用与外界的“连接”。分为两种类型:

  • Service binding components:SOA合成应用的入口。

  • Reference binding components: SOA合成应用的出口。

(2)Service Infrastructure
提供消息的内部传递。

  • 接收外部服务提供者的消息(通过SOAP或adapters)。

  • 发送消息到服务引擎。

  • 接收服务引擎返回的消息,再发送给其它服务引擎或外部服务消费者。

(3)Service Engines 和 Service Components
服务组件运行的容器。每种服务组件都对应其自己的服务引擎。目前,服务组件有以下类型:

  • BPEL process

  • Business rules

  • Human task

  • Mediator 在组件之间路由信息。

(4)UDDI 和 MDS
Metadata Service repository 存储所有服务的信息。
(5)SOA Archive
SOA archive (SAR) 是SOA合成应用档案,是发布单元,包括所有服务组件。
(6)Wires
Wires连接不同的组件。连接类型有:

  • Services to service components

  • Service components to other service components

  • Service components to references


参考文献:
1. http://download.oracle.com/docs/cd/E12839_01/integration.1111/e10224/fod_intro1.htm#SOASE9019。

2009年7月18日星期六

SOA_024:SDO 介绍

1. 定义
【SDO】:Service Data Object 服务对象数据。
SDO主要用来访问和操作异构的数据源。
在SOA应用中,你无须知道访问后台的特定的数据源的细节,无须知道数据项与数据源的映射细节,因为这一切SDO都替你操办了。
SDO 与语言无关,哪种语言都可以实现SDO。
总之,SDO把访问与操作数据的方法全部都标准化了。
听起来很神奇,是不是?还是从一个例子来看看SDO的神奇之处吧:《SOA Suite 11g 开发指南之十三:使用SDO 访问与操作数据》。

SOA_023:SCA 介绍

1. 定义
【SCA】:Service Component Architecture 服务组件体系结构。
SCA是用来简化SOA应用开发的,其中特别提供了一个组装模型来把服务组件组装成合成应用的。它提供了一个组件编程模型:



  • 首先,使用不同的技术或语言(Java、EJB、BPEL、COBOL、C++、XSLT)实现服务组件。

  • 然后,组装这些服务组件成为一个SOA合成应用。该组装模型使用元数据描述SOA合成应用中有哪些服务,这些服务与其它服务组件是如何交互的等等。
    该描述与开发人员使用的平台和语言均无关。


2. 目标
SCA的目标是消除过去开发中间件应用中的痼疾:如何组装使用不同技术实现的服务。
使用SCA后,开发人员只需要专心开发每一个服务组件(使用最恰当的技术),组装这些服务组件的工作则交给SCA来做。

3. 使用SCA的好处
SCA通过提供声明式的方式来实现合成服务组件、以及安全和事务,使用SCA的好处有:
  • Loose coupling 松耦合 服务组件消费者不必关心服务组件是如何实现的。

  • Flexibility 灵活性 一个服务组件可以轻松被 其它服务组件替代。

  • Services invocation 服务调用 支持同步或异步。

  • Productivity 生产效率高 集成服务组件轻而易举。

  • Easy Maintenance and Debugging 轻松维护和调试


4. SCA 架构图示说明


上图为一个SOA合成应用:BigBank。
它包括一个inbound service binding 组件,一个BPEL process 服务组件(Account),一个业务规则服务组件(AccountRule),两个outbound reference binding 组件。
所有这些服务组件的合成信息都保存在composite.xml文件中。

2009年7月17日星期五

SOASuite_018:Oracle SOA Suite 11gR1 新特征

Oracle SOA Suite 11g 提供了一套最完整的、最优秀的产品集,用来快速设计、组装、发布、管理“SOA合成应用”。
100%基于标准、热插拔的SOA Suite 11g架构,最大限度地集成企业已有IT资产。使用不同技术实现的服务都可以组装到一个SOA合成应用中。


1. SOA Suite 11g 提供的功能有:

  • Messaging 消息处理

  • Service discovery 服务发现

  • Orchestration 服务编排

  • Activity monitoring 活动监视 Update !

  • Web services 管理(包括 Web service 安全)Update !

  • Business rules 业务规则 Update !

  • Events framework 事件框架 New !


2. SOA Suite 11g 使用的标准有:

  • Service Component Architecture (SCA) assembly model New !

  • Service Data Objects (SDO) New !

  • Business Process Execution Language (BPEL)

  • XSL Transformations (XSLT)

  • Java Connector Architecture (JCA) Update !

  • Java Messaging Service (JMS)

  • Web Services Description Language (WSDL)

  • Simple Object Access Protocol (SOAP)

SOASuite_017:图解安装 Oracle SOA Suite 11g

这里只对重要步骤图示,其余步骤默认设置即可。
因为BPM Suite 11g是基于SOA Suite 11g的,因此前面的安装步骤与安装BPM Suite 11g一样,请参考《图解安装 Oracle BPM Suite 11g 》。

以下只对创建SOA Domain步骤做出说明:

1. 创建SOA Domain运行SOA_ORACLE_HOME\common\bin\config.cmd。
先后选择Business Activity Monitoring、EnterpriseManager、SOA Suite,其它依赖选项会自动包括进来。
为了节省内存,把所有的Manged Servers都合并到Admin Server之中,为此删除bam_server1和soa_server1。最后把AdminServer加到LocalMachine之下。

2. 启动Admin Server,观察启动Log,确定一切正常后,访问各个Console。

2009年7月16日星期四

SOASuite_016:Oracle SOA Suite 11gR1 正式发布!

2009年7月9日,期待已久的Oracle SOA Suite 11gR1 终于正式发布了!
想要试用的朋友可以从这里下载:Oracle Fusion Middleware 11gR1 Software Downloads》。
内容包括:

  • BPEL Process Manager

  • Human Workflow

  • Business Rules

  • Business Activity Monitoring

  • Mediator

  • B2B

  • Web Services Manager

  • User Messaging Service

  • Enterprise Manager Fusion Middleware Control
其它必须安装的软件:

  • WebLogic Server

  • Repository Creation Utility

  • Oracle Database

  • JDeveloper
其它选择安装的软件:

  • B2B Document Editor

  • Identity Management

  • Access Manager

  • SSO Metadata Repository Creation Assistant

  • Web Tier Utilities
下载完
Oracle SOA Suite 11gR1以及所有必须的软件后,安装步骤请参见:Installation Guide for Oracle SOA Suite照着安装手册做,一次安装成功!你还在犹豫什么,赶紧下载安装吧!祝你好运!

2009年7月15日星期三

SOASuite_015:Oracle SOA Suite 10g 问与答

Q1:如何直接从别人传的string类型的xml文件中提取我想要的节点?<?xml version="1.0" encoding="GBK"?>
<root>
<data>
<rtInfo>
<SYSTEMNAME>IPNET</SYSTEMNAME>
<CREATEDPT/>
<NETCELLTYPENAME>SDH </NETCELLTYPENAME>
<FAULTDISCOVERDATE pattern="yyyy-MM-dd HH:mm:ss">2008-02-19 13:52:07</FAULTDISCOVERDATE>
<FAULTTYPENAME>SDH设备故障 </FAULTTYPENAME>
</rtInfo>
<rtValue>
<rtCode>1</rtCode>
<rtMessage>dfdfd<rtMessage>
</rtValue>
</data>
</root>

比方说我想提取<rtInfo>这个节点及该节点下面的值,应该如何操作呢?上面的是一个string类型的xml。 有没有比较好的方法呢,可以不用每次都写一个schema文件,可以直接从别人传的string类型的xml文件中提取我想要的节点(因为我知道string类型的xml中有哪些节点)?(因为我们跟很多系统都有很多接口,而且每个接口的字段可能都有很多40个字段左右,所以不想写schema文件)


答:用Schema规范接口中的参数是一种很好的方式,这样就可以方便地使用XPath,XQuery来操作XML数据。如果觉得写Schema文件太麻烦,有一些XML工具可以从XML文件生成Schema文件:如XML SPY,XML Explorer。

Q2:有没有一个可以查看web service的详细的日志文件,可以查看对方系统调用我们传的参数及我们返回给对方系统的数据,这样方便查看及定位问题,如果没有这样的日志的话,应该怎么用BPEL构件来打印日志呢?

答:SOA Suite 使用log4j来实现日志功能,从低到高分为,Off ->Fatal->Error ->Warn->Info->Debug->All,要查看详细日志,使用最高日志级别All。
不过,要想查看具体的SOAP消息,需要使用其它的工具。详见《
观察BPEL Process 交互的SOAP消息

Q3:如何动态调用外部写好的webservice?动态调用的过程中定义的endpoint变量是否需要初始化?除了address之外,是否必须要有servername才行?

答:需要定义并初始化EndpointReference类型的变量。只需要定义servername就可以,具体的address可以定义WSDL文件中(通过定义多个services)。BPEL Server会根据servername找到对应的address地址。

Q4:BPEL流程对于输入的字符串参数的内容是否有限制?如是否有保留的特殊字符等。

答:BPEL流程中使用的是XML Schmea定义的数据。String是Schema中的简单类型,对该类型的数据内容没有特别的限制,只要接受方能够处理这样的字符串。

Q5:压力测试时,发生BPEL 流程示例“丢失”的情况,但 HumanTask 实例却没有丢失。

Q6:异步调用迟迟不返回,能否通过BPEL Console给一个返回值,让流程结束?

Q7:能否用ESB Database Adapter,在Insert 操作时触发2个BPEL流程实例?

2009年7月14日星期二

SOASuite_014:Oracle ESB 10g 问与答

问题1:OSB与OESB的区别?
Oracle Service Bus (OSB)前身是BEA的AquaLogic Service Bus,是一个独立的ESB产品。OSB在业界有很高的知名度,目前OSB只能运行在 WebLogic Server上。
Oracle Enterprise Service Bus (OESB) 是SOA Suite 10.1.3.1的一个重要组件。OESB的知名度不如OSB,但是OESB可以运行在OC4J 和WebSphere上。
问题2:OESB会继续开发并支持旧的客户吗?
是的。OESB将会一直作为是SOA Suite 10g的一个重要组件。
并且,使用ESB10.1.3开发的ESB,可以升级到SOA Suite 11g中的mediator部件中。






问题3:运行时遇到一个错误:
An unhandled exception has been thrown in the ESB system. The exception reported is: "oracle.tip.esb.monitor.MonitorException: 无法构建实例关系, 因为没有必需的元数据 at oracle.tip.esb.monitor.manager.database.MetadataProvider.getRelationshipXML(Unknown Source) at oracle.tip.esb.monitor.manager.database.DBActivityMessageStore.getInstanceRelationship(Unknown Source) at oracle.tip.esb.console.XMLInstanceManagerImpl.getRelationship(Unknown Source) at oracle.tip.esb.configuration.servlet.command.GetTrackingDetailsCommand.execute(Unknown Source) at oracle.tip.esb.configuration.servlet.CommandServlet.doJob(Unknown Source) at oracle.tip.esb.configuration.servlet.CommandServlet.doPost(Unknown Source) at javax.servlet.http.HttpServlet.service(HttpServlet.java:763) at javax.servlet.http.HttpServlet.service(HttpServlet.java:856) at com.evermind.server.http.ResourceFilterChain.doFilter(ResourceFilterChain.java:64) at oracle.security.jazn.oc4j.JAZNFilter$1.run(JAZNFilter.java:396) at java.security.AccessController.doPrivileged(Native Method) at javax.security.auth.Subject.doAsPrivileged(Subject.java:517) at oracle.security.jazn.oc4j.JAZNFilter.doFilter(JAZNFilter.java:410) at com.evermind.server.http.ServletRequestDispatcher.invoke(ServletRequestDispatcher.java:621) at com.evermind.server.http.ServletRequestDispatcher.forwardInternal(ServletRequestDispatcher.java:368) at com.evermind.server.http.HttpRequestHandler.doProcessRequest(HttpRequestHandler.java:866) at com.evermind.server.http.HttpRequestHandler.processRequest(HttpRequestHandler.java:448) at com.evermind.server.http.AJPRequestHandler.run(AJPRequestHandler.java:302) at com.evermind.server.http.AJPRequestHandler.run(AJPRequestHandler.java:190) at oracle.oc4j.network.ServerSocketReadHandler$SafeRunnable.run(ServerSocketReadHandler.java:260) at com.evermind.util.ReleasableResourcePooledExecutor$MyWorker.run(ReleasableResourcePooledExecutor.java:303) at java.lang.Thread.run(Thread.java:595) ".

2009年7月7日星期二

SOASuite_007:File Adapter 使用指南 (SOA Suite 10g)

参数说明:

  1. Polling Frequency:指定多长时间去目录中检查一次是否有新文件。

  2. Minimum File Age:指定文件的最小“年龄”。该选项是为了保证大文件在Copy过程中不被处理。年龄是从文件的最后一次修改的时间戳开始计算。比如,如果Copy一个文件需要3-4分钟,你就应该把该值设为5分钟。

  3. Files contain Multiple Messages:文件是否包含多条信息。

  4. Publish Messages in Batches of :一次批处理几条信息。

2009年7月6日星期一

SOASuite_006:观察BPEL Process 交互的SOAP消息 (SOA Suite 10g)

说明:以下实验的开发运行环境为JDeveloper10.1.3.4 + Oracle SOA Suite10.1.3.1.0

1. 观察同步调用的SOAP 消息
(1)进入 Oracle BPEL PM 的bin目录:如 C:\product\10.1.3.1\OracleAS_1\bpel\bin。
(2)执行 obsetenv
(3)执行 java -classpath %OB_CLASSPATH% org.collaxa.thirdparty.apache.axis.utils.tcpmon 8888 localhost 80
(4)修改 bpel.xml,增加"location",它将覆盖服务的端点地址。

<partnerLinkBinding name="CreditRatingService">
<property name="wsdlLocation">
http://pma-cn.cn.oracle.com:80/orabpel/default/CreditRatingService/CreditRatingService?wsdl
</property>
<property name="location">
http://pma-cn.cn.oracle.com:8888/orabpel/default/CreditRatingService
</property>
</partnerLinkBinding>

(5)编译、发布、在BPEL Console中测试。
(6)在TCPMonitor 中观察SOAP消息。


以下为监控到的完整的HTTP请求(OrderBooking 调用CreditRatingService ):

POST /orabpel/default/CreditRatingService HTTP/1.1
Host: localhost:8888
Connection: Keep-Alive, TETE: trailers, deflate, gzip, compress
User-Agent: Oracle HTTPClient Version 10h
SOAPAction: "process"
Accept-Encoding: gzip, x-gzip, compress, x-compress
Content-type: text/xml; charset=UTF-8
Content-length: 305

<?xml version="1.0" encoding="UTF-8"?>
<env:Envelope xmlns:env="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<env:Body>
<ssn xmlns="http://services.otn.com/">Antilla Electronics</ssn>
</env:Body>
</env:Envelope>


以下为监控到的完整的HTTP响应(来自CreditRatingService的响应 ):

HTTP/1.1 200 OK
Date: Wed, 03 Dec 2008 02:09:01 GMT
Server: Oracle-Application-Server-10g/10.1.3.1.0 Oracle-HTTP-Server
Content-Length: 169
SOAPAction: ""
Keep-Alive: timeout=15, max=100
Connection: Keep-Alive
Content-Type: text/xml; charset=UTF-8
X-Pad: avoid browser bug

<env:Envelope xmlns:env="http://schemas.xmlsoap.org/soap/envelope/">
<env:Header/>
<env:Body>
<rating xmlns="http://services.otn.com">560</rating>
</env:Body>
</env:Envelope>





2. 观察异步调用的SOAP 消息(1)启动另一个 TCP listener,监听8889端口,并转发到80端口。
(2)进入BPEL Admin Console,
http://localhost/BPELAdmin,修改soapCallbackUrl,端口改成8889。
(3)其余步骤同上。

以下为监控到的完整的HTTP请求(OrderBooking调用RapidDistributors):

POST /orabpel/default/RapidDistributors HTTP/1.1
Host: pma-cn.cn.oracle.com:8888
Connection: TE
TE: trailers, deflate, gzip, compress
User-Agent: Oracle HTTPClient Version 10h
SOAPAction: "initiate"
Accept-Encoding: gzip, x-gzip, compress, x-compress
Content-type: text/xml; charset=UTF-8
Content-length: 1240

<?xml version="1.0" encoding="UTF-8"?>
<env:Envelope xmlns:env="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<env:Header>
<ReplyTo xmlns="http://schemas.xmlsoap.org/ws/2003/03/addressing">
<Address>http://pma-cn.cn.oracle.com:8889/orabpel/default/OrderBooking/1.0/RapidDistributors/RapidDistributorsRequester</Address>
<PortType xmlns:ptns="http://xmlns.oracle.com/RapidDistributors">ptns:RapidDistributorsCallback</PortType>
<ServiceName xmlns:snns="http://xmlns.oracle.com/RapidDistributors">snns:RapidDistributorsCallbackService</ServiceName>
</ReplyTo>
<MessageID xmlns="http://schemas.xmlsoap.org/ws/2003/03/addressing" ans1:rootId="480001" xmlns:ans1="http://schemas.oracle.com/bpel" ans1:parentId="480001" ans1:priority="0">
bpel://localhost/default/OrderBooking~1.0/480001-BpInv1-BpSeq0.3-3
</MessageID>
</env:Header>
<env:Body>
<OrderItems xmlns="http://www.globalcompany.com/ns/sales">
<Item>
<ProductName/>
<itemType/>
<partnum/>
<price/>
<Quantity/>
</Item>
</OrderItems>
</env:Body>
</env:Envelope>

由于是异步调用,调用马上返回,返回的是一个空的SOAP消息(来自RapidDistributors)。

HTTP/1.1 200 OK
Date: Wed, 03 Dec 2008 07:00:39 GMT
Server: Oracle-Application-Server-10g/10.1.3.1.0 Oracle-HTTP-Server
Content-Length: 107
SOAPAction: ""
Content-Type: text/xml; charset=UTF-8

<env:Envelope xmlns:env="http://schemas.xmlsoap.org/soap/envelope/">
<env:Header/>
<env:Body/>
</env:Envelope>


以下为监控到的完整的HTTP请求(RapidDistributors回调OrderBooking):

POST /orabpel/default/OrderBooking/1.0/RapidDistributors/RapidDistributorsRequester HTTP/1.1
Host: localhost:8889
Connection: Keep-Alive, TE
TE: trailers, deflate, gzip, compress
User-Agent: Oracle HTTPClient Version 10h
SOAPAction: "onResult"
Accept-Encoding: gzip, x-gzip, compress, x-compress
Content-type: text/xml; charset=UTF-8
Content-length: 570

<?xml version="1.0" encoding="UTF-8"?>
<env:Envelope xmlns:env="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<env:Header>
<RelatesTo xmlns="http://schemas.xmlsoap.org/ws/2003/03/addressing">
bpel://localhost/default/OrderBooking~1.0/470001-BpInv1-BpSeq0.3-3
</RelatesTo>
</env:Header>
<env:Body>
<SupplierInfo xmlns="http://www.globalcompany.com/ns/sales">
<SupplierPrice>5000</SupplierPrice><SupplierName>
RapidDistributors</SupplierName></SupplierInfo>
</env:Body>
</env:Envelope>


返回的同样是一个空的SOAP消息(来自OrderBooking)。

HTTP/1.1 200 OK
Date: Wed, 03 Dec 2008 07:01:10 GMT
Server: Oracle-Application-Server-10g/10.1.3.1.0 Oracle-HTTP-Server
Content-Length: 107
SOAPAction: ""
Keep-Alive: timeout=15, max=100
Connection: Keep-Alive
Content-Type: text/xml; charset=UTF-8
X-Pad: avoid browser bug

<env:Envelope xmlns:env="http://schemas.xmlsoap.org/soap/envelope/">
<env:Header/>
<env:Body/>
</env:Envelope>


可以看出,这里使用了WS-Addressing规范来实现异步调用,有关WS-Addressing的详细说明请参考《WS-Addressing 介绍》 。

3. 观察使用correlationSets的SOAP 消息


参考文献:
1. 《
TCP Tunneling

2009年7月5日星期日

SOASuite_005:Socket Adapter 使用指南(SOA Suite 10g)

在SOA Suite 10g中bundle了很多adapters,比如:SOAP、HTTP、Email、FTP、File、JMS、Oracle AQ、IBM MQSeries、Socket。
但是Socket adapter 并没有作为正式版发布在SOA Suite 10g中。目前得到的最新消息是:
• Socket adapter 在SOA Suite 10.1.3.1中未经过QA测试验证。
• Socket adapter 在SOA Suite 10.1.3.3(或更高版本)中是预览版。
• Socket adapter 正式版将在SOA Suite 11gR1发布。

注意:以下内容均是基于SOA Suite 10.1.3.4版本上的。
关于如何从SOA Suite 10.1.3.1升级到SOA Suite 10.1.3.4,请参考《图解安装 Oracle SOA Suite 10.1.3.4

1. 安装Socket Adapter
(1) 在[oc4j_home]\j2ee\[your_appserver_home]\connectors目录下创建目录SocketAdapter。
(2) 把[oc4j_home]\bpel\system\services\lib\socketAdapter.rar 拷贝到刚创建的目录SocketAdapter。
(3)修改文件[oc4j_home]\j2ee\[your_appserver_home]\config\oc4j-connectors.xml,增加一个条目如下:

(4)重新启动你的应用服务器实例,当然重新启动SOA Suite也可以。

2. 运行HelloWorldFlowTutorial例子
注:需要该例子的压缩文件的人请给我留言告知email地址。

(1)把HelloWorldFlowTutorial用JDeveloper 10.1.3.4打开,编译,发布。
(2)修改文件[oc4j_home]\j2ee\[your_appserver_home]\application-deployments\default\SocketAdapter\oc4j-ra.xml,增加两个条目如下:

(3)启动HelloWorldServer,方式如下:Java com.oracle.test.socket.server.HelloWorldServer。
(4)访问 http://localhost:12110/input=John; ,你会在浏览器中得到响应 “Hello John” 。

2009年7月4日星期六

SOASuite_004:用Oracle SOA Suite 10g 开发ESB

开发工具:Oracle JDeveloper Studio 10.1.3.4.0。
运行环境:Oracle SOA Suite 10.1.3.1.0 + Oracle Database 10g Express Edition。
实验目的:通过亲自动手操作,更好地理解ESB,掌握ESB。
实验1. 实验准备
实验2. Building Customer Data
实验3. Building Invoice Data

2009年7月3日星期五

SOASuite_003:用Oracle SOA Suite 10g 开发BPEL

开发工具:Oracle JDeveloper Studio 10.1.3.4.0。
运行环境:Oracle SOA Suite 10.1.3.1.0 + Oracle Database 10gR2 Express Edition。
实验目的:通过亲自动手操作,更好地理解BPEL,掌握BPEL。

实验1. 实验准备

实验2. 同步调用

OrderBooking本身是个异步的BPEL Process,它所调用的CreditRatingService是个同步的BPEL Process(一个Operation 带有输入和输出参数),调用将一直被阻塞直到获得结果。


在OrderBooking调用CreditRatingService的Partner关系中,OrderBooking是服务的请求者,CreditRatingService是服务的提供者。因为一个Role最终要对应到WSDL中的一个portType。同步调用使用一个portType就可以拿到结果,因此不需要设置My Role。

实验3. 异步调用OrderBooking本身是个异步的BPEL Process,它所调用的RapidDistributors是个异步的BPEL Process(调用Operation 只带有输入参数),调用不会被阻塞。



结果将通过另外一个Operation返回。

在OrderBooking调用RapidDistributors的Partner关系中,OrderBooking是服务的请求者,RapidDistributors是服务的提供者。因为异步调用需要2个Operation才能完成,因此需要设置2个Role(Partner Role 和 My Role),对应2个WSDL中的portType。同步调用使用一个portType就可以拿到结果,因此不需要设置。

实验4. 并行操作
实验5. 条件分支
实验6. 异常处理
实验7. 数据转换
实验8. 使用File Adapter进行读操作
实验9. 使用File Adapter进行写操作
实验10. 使用数据库Adapter进行数据插入操作
实验11. 人工工作流
实验12. 使用Sensors
实验13. 使用Notifications


附加实验
实验1. 使用correlationSets
WS-Addressing 和correlationSets 都能够实现异步调用,其实现原理完全不同。
WS-Addressing一般用于2个partner之间的异步交互:A > B >A。
correlationSets 一般用于2个以上的partner之间的异步交互:A > B > C > A。
实验2. 调用BPEL
实验3. 使用Decision Services with Rules Engine

实验4. 实现动态BPEL 流程
实验5. 使用WSIF 进行集成

2009年7月2日星期四

SOASuite_002:图解安装 Oracle SOA Suite 10.1.3.4



设置超级用户SYS/SYSTEM的密码为12345678。


1.1 检查与修改数据库线程数
SQL> connect system/12345678;
SQL> select name, value from v$parameter where name='processes';
SQL> alter system set processes=300 scope=spfile;
SQL> commit;
重启数据库。

1.2 修改数据库编码支持中文
SQL> connect system/12345678 as sysdba;
SQL> shutdown immediate ;
SQL> startup mount ;
SQL> alter system enable restricted session ;
SQL> alter system set JOB_QUEUE_PROCESSES=0;
SQL> alter system set AQ_TM_PROCESSES=0;
SQL> alter database open ;
SQL> alter database character set internal_use ZHS16GBK ;
SQL> shutdown immediate ;
SQL> startup ;

2. 安装 Jdeveloper 10.1.3.4
下载地址:http://www.oracle.com/technology/global/cn/software/products/jdev/htdocs/soft10134.html
解压缩到 C:\jdevstudio10134。

3. 安装 SOA Suite 10.1.3.1
下载地址:
http://www.oracle.com/technology/global/cn/software/tech/soa/index.html
解压缩到 C:\Temp。

3.1 设置环境变量
set ORACLE_HOME= C:\oraclexe\app\oracle\product\10.2.0\server
set JAVA_HOME= C:\jdevstudio10134\jdk
set CLASSPAHT=.;%CLASSPATH%
set PATH=%JAVA_HOME%\bin;%PATH%

3.2 设置语言环境为英文,需要重启机器。


也有人说,可以不用修改语言设置,因为需要重启机器,比较麻烦。
通过而是修改文件 C:\product\10.1.3.1\OracleAS_1\integration\esb\olite\template\polite.ini 中的

DB_CHAR_ENCODING=UTF8 (原值为Native)。
不过我没有测试,希望有人能帮我测试一下。

3.3 安装Schema在DOS命令窗口下,进入C:\Temp\soa_windows_x86_101310_disk1\install\soa_schemas\irca目录。运行脚本:
irca all "localhost 1521 XE" 12345678 -overwrite ORABPEL ORABPEL123 ORAESB ORAESB123 ORAWSM ORAWSM123

3.3 双击setup.exe 安装

选择高级安装


服务名为XE。 用户名/密码:
ORABPEL/ORABPEL123
ORAESB/ORAESB123
ORAWSM ORAWSM123
选择“将此项配置为管理OC4J实例”



在安装过程中,会经常提示无法创建菜单项,一律Ignore。



访问所有Console,用户名/密码均为oc4jadmin/welcome1,确认所有组件安装成功。
注:Web Service Manager Console的用户名/密码为admin/oracle。
最后,从别人那里拷贝一个完整的菜单项到C:\Documents and Settings\All Users\「开始」菜单\程序。

4. 升级到 SOA Suite 10.1.3.4
下载地址:http://www.oracle.com/technology/global/cn/software/tech/soa/index.html
解压缩到 C:\Temp。

4.1 升级SQL
(1)进入目录 ias_windows_x86_101340\Disk1\install\soa_schema_upgrade\bpel\scripts,
SQL> connect orabpel/orabpel123
SQL> @upgrade_10131_10134_oracle.sql。
(2)进入目录 ias_windows_x86_101340\Disk1\install\soa_schema_upgrade\esb\sql\oracle,
SQL> connect oraesb/oraesb123
SQL> @upgrade_10133_10134_oracle.sql。

4.2 设置ORACLE_HOMEset ORACLE_HOME= [SOA Suite 10.1.3.1 Home],如 C:\product\10.1.3.1\OracleAS_1。

4.3 双击setup.exe 安装

2009年7月1日星期三

SOASuite_001:Oracle SOA Suite 10g 介绍

Oracle SOA Suite包含如下产品:


  • Oracle JDeveloper 10g

  • Oracle Business Rules

  • Oracle BPEL Process Manager

  • Oracle Business-to-Business Integration

  • Oracle Business Activity Monitoring

  • Oracle Web Services Manager

  • Oracle Service Bus

  • Oracle Complex Event Processing

参考文献:
1.
http://www.oracle.com/technologies/soa/soa-suite.html