| Oracle® Application Server Adapters for Tuxedo User's Guide 10g Release 3 (10.1.3.4) Part Number E13829-01 |
|
|
View PDF |
To deploy and integrate OracleAS Adapters for Tuxedo with Oracle BPEL Process Manager, you need to configure BPEL Process Manager.
This section includes the following topics:
Oracle BPEL Process Manager provides a comprehensive solution for creating, deploying, and managing BPEL business processes. Oracle BPEL Process Manager is based on the Service Oriented Architecture (SOA) to provide enterprises with flexibility, interoperability, reusability, extensibility, and rapid implementation of Web services and business processes. It reduces the overall costs of management, modification, extension, and redeployment of existing business processes. Each business activity is a self-contained, self-describing, and modular application whose interface is defined by the WSDL, and the business process is modeled as a Web Service.
A Web Service is first published and then composed or orchestrated into business flows. Publishing a service is implemented by taking a function within an existing application or system and making it available in a standard way, while orchestration is implemented by composing multiple services into an end-to-end business process. The interactions that are defined as part of the configuration of the OracleAS Adapter for Tuxedo are integrated into the orchestration as PartnerLinks. Every PartnerLink is linked to a WSDL that describes the Web service.
To integrating the OracleAS Adapter for Tuxedo with Oracle BPEL Process Manager, you must perform the following tasks in the specified order:
This section includes the following topics:
Perform the following steps to set up the connection to the Oracle Connect server to provide an automatic BPEL application built by JDeveloper:
Open the Oracle BPEL Admin window.
On the Server tab, on the Configuration tab, specify the following:
LegacyServer: The IP address of the server where Oracle Connect is installed. For a single server, the default is localhost.
LegacyPort: The port number of the server where Oracle Connect is installed. For a single port, the default is 2551.
Repeat the previous step for each Oracle Connect server to be used by Oracle BPEL Process Manager. Use a comma as a separator between the different servers and ports.
Click Apply.
Carry out the following steps to verify that the metadata of the Oracle Connect server is available in Oracle BPEL Process Manager:
Open Oracle JDeveloper.
On the Connections tab, expand the Integration Server to view the list of OC4J servers.
Expand the OC4J server on which you deployed the Tuxedo resource adapter (see Integrating OracleAS Adapters for Tuxedo with OC4J).
Under Adapters, expand Legacy to view a list of the Oracle Connect servers that you defined by using the Oracle BPEL Admin window.
Expand the Oracle Connect server with the metadata you want to check, to view a list of workspaces.
Expand a required workspace to view a list of its adapters.
Expand the relevant adapter to view a list of interactions.
If you selected a queue adapter for inbound applications, the adapter contains a single interaction called EventStream.
Double-click an interaction to view the WSDL.
Carry out the following steps in Oracle JDeveloper to select a Legacy Adapter Partner Link WDSL.
Double-click the Partner Link.
Click the Service Explorer.
In the Service Explorer, expand Adapter Services.
Expand the OC4J server on which you deployed the Tuxedo resource adapter (see Integrating OracleAS Adapters for Tuxedo with OC4J).
Under Adapters, expand Legacy to view a list of the Oracle Connect servers that you defined by using the Oracle BPEL Admin window.
Expand the Oracle Connect server with the metadata you want to check, to view a list of workspaces.
Expand a required workspace to view a list of its adapters.
Expand the relevant adapter to view a list of interactions.
If you selected a queue adapter for inbound applications, the adapter contains a single interaction called EventStream.
Select the interaction, then click OK.
When you build an outbound Partner Link, Oracle BPEL Process Manager automatically creates the WSDL that corresponds to the interaction. The WSDL specifies the name of the adapter's connection factory as the value of the adapterInstanceJndi attribute of the <jca:address> element in the <service> section. This name is generated automatically. You need to verify that a connection factory with this name exists on the OC4J server. If it does not, you need to create it, or change the name of the connection factory to the name of a connection factory that exists.
The following is an example of an outbound WSDL:
<?xml version = '1.0' encoding = 'UTF-8'?>
<definitions name="add" targetNamespace="http://xmlns.oracle.com/pcbpel/calc/add" xmlns="http://schemas.xmlsoap.org/wsdl/" xmlns:legacyReq="noNamespace://calc" xmlns:tns="http://xmlns.oracle.com/pcbpel/calc/add" xmlns:plt="http://schemas.xmlsoap.org/ws/2003/05/partner-link/" xmlns:jca="http://xmlns.oracle.com/pcbpel/wsdl/jca/" xmlns:pc="http://xmlns.oracle.com/pcbpel/" xmlns:legacyRes="noNamespace://calc">
<types>
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns="noNamespace://calc" targetNamespace="noNamespace://calc" elementFormDefault="qualified" attributeFormDefault="unqualified">
<xsd:element name="binput" type="binput"/>
<xsd:complexType name="binput">
<xsd:attribute name="p1" type="xsd:int"/>
<xsd:attribute name="p2" type="xsd:int"/>
</xsd:complexType>
</xsd:schema>
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns="noNamespace://calc" targetNamespace="noNamespace://calc" elementFormDefault="qualified" attributeFormDefault="unqualified">
<xsd:element name="output" type="output"/>
<xsd:complexType name="output">
<xsd:attribute name="result" type="xsd:int"/>
</xsd:complexType>
</xsd:schema>
</types>
<message name="request">
<part name="input_add" element="legacyReq:binput"/>
</message>
<message name="response">
<part name="output_add" element="legacyReq:output"/>
</message>
<portType name="addPortType">
<operation name="add">
<input name="Input_add" message="tns:request"/>
<output name="Output_add" message="tns:response"/>
</operation>
</portType>
<binding name="addJCABinding" type="tns:addPortType">
<jca:binding/>
<operation name="add">
<jca:operation InteractionSpec="com.oracle.adapter.oracle.AttuInteractionSpec" FunctionName="add" ExecutionTimeout="120"/>
<input/>
<output/>
</operation>
</binding>
<service name="addService">
<port name="addPort" binding="tns:addJCABinding">
<jca:address adapterInstanceJndi="eis/legacy/calc"/>
</port>
</service>
<plt:partnerLinkType name="addPartnerLinkType">
<plt:role name="addRole">
<plt:portType name="tns:addPortType"/>
</plt:role>
</plt:partnerLinkType>
/definitions>
Note:
When you work with the Tuxedo Gateway adapter metadata (inbound synchronous), the server must be running.When you work with the Tuxedo Gateway adapter, only one BPEL instance can service a Tuxedo Gateway Adapter.
When you build an inbound Partner Link, Oracle BPEL Process Manager automatically creates the WSDL that corresponds to the interaction, including the most important attributes of the corresponding ActivationSpec class, such as the name of the adapter, the server, the workspace, and the port number. All other properties have default values that you can modify.
The WSDL also specifies the name of the adapter's connection factory as the value of the adapterInstanceJndi attribute of the <jca:address> element in the <service> section. This name is generated automatically. If a connection factory with this name exists on the application server, its properties are taken. Otherwise, the properties specified by the ActivationSpec are used. If a value is specified by both the connection factory and the ActivationSpec, the ActivationSpec property overrides the value in the connection factory. If you want to use the value specified in the connection factory, you have to delete the property from the ActivationSpec.
For a list of properties for each activation spec, see the list of properties for your adapter as described in the following tables:
The following is an example of an inbound WSDL for a queue adapter:
<?xml version = '1.0' encoding = 'UTF-8'?>
<definitions name="eventStream" targetNamespace="http://xmlns.oracle.com/pcbpel/testTuxedoQ1/eventStream" xmlns="http://schemas.xmlsoap.org/wsdl/" xmlns:legacyReq="noNamespace://testTuxedoQ1" xmlns:tns="http://xmlns.oracle.com/pcbpel/testTuxedoQ1/eventStream" xmlns:plt="http://schemas.xmlsoap.org/ws/2003/05/partner-link/" xmlns:jca="http://xmlns.oracle.com/pcbpel/wsdl/jca/" xmlns:pc="http://xmlns.oracle.com/pcbpel/" xmlns:legacyRes="noNamespace://DEMO#">
<types>
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns="noNamespace://testTuxedoQ1" targetNamespace="noNamespace://testTuxedoQ1" elementFormDefault="qualified" attributeFormDefault="unqualified">
<xsd:element name="eventStream" type="eventStreamDescription"/>
<xsd:complexType name="eventStreamDescription">
<xsd:choice minOccurs="0" maxOccurs="unbounded">
<xsd:element name="EMPLOYEE_INFO__VAR_0__BIG_EMPLOYEE" type="EMPLOYEE_INFO__VAR_0__BIG_EMPLOYEE"/>
<xsd:element name="EMPLOYEE_INFO__VAR_0__EMPLOYEE" type="EMPLOYEE_INFO__VAR_0__EMPLOYEE"/>
</xsd:choice>
</xsd:complexType>
<xsd:element name="EMPLOYEE_INFO__VAR_0__EMPLOYEE" type="EMPLOYEE_INFO__VAR_0__EMPLOYEE"/>
<xsd:complexType name="EMPLOYEE_INFO__VAR_0__EMPLOYEE">
<xsd:attribute name="LAST_NAME">
<xsd:simpleType>
<xsd:restriction base="xsd:string">
<xsd:maxLength value="15"/>
</xsd:restriction>
</xsd:simpleType>
</xsd:attribute>
<xsd:attribute name="FIRST_NAME">
<xsd:simpleType>
<xsd:restriction base="xsd:string">
<xsd:maxLength value="10"/>
</xsd:restriction>
</xsd:simpleType>
</xsd:attribute>
<xsd:attribute name="ADDRESS_1">
<xsd:simpleType>
<xsd:restriction base="xsd:string">
<xsd:maxLength value="15"/>
</xsd:restriction>
</xsd:simpleType>
</xsd:attribute>
<xsd:attribute name="ADDRESS_2">
<xsd:simpleType>
<xsd:restriction base="xsd:string">
<xsd:maxLength value="15"/>
</xsd:restriction>
</xsd:simpleType>
</xsd:attribute>
<xsd:attribute name="CARS" type="xsd:int"/>
<xsd:attribute name="SALARY" type="xsd:int"/>
</xsd:complexType>
<xsd:element name="EMPLOYEE_INFO__VAR_0__BIG_EMPLOYEE" type="EMPLOYEE_INFO__VAR_0__BIG_EMPLOYEE"/>
<xsd:complexType name="EMPLOYEE_INFO__VAR_0__BIG_EMPLOYEE">
<xsd:attribute name="ID">
<xsd:simpleType>
<xsd:restriction base="xsd:string">
<xsd:maxLength value="10"/>
</xsd:restriction>
</xsd:simpleType>
</xsd:attribute>
<xsd:attribute name="LAST_NAME2">
<xsd:simpleType>
<xsd:restriction base="xsd:string">
<xsd:maxLength value="100"/>
</xsd:restriction>
</xsd:simpleType>
</xsd:attribute>
<xsd:attribute name="FIRST_NAME2">
<xsd:simpleType>
<xsd:restriction base="xsd:string">
<xsd:maxLength value="100"/>
</xsd:restriction>
</xsd:simpleType>
</xsd:attribute>
<xsd:attribute name="ADDRESS_12">
<xsd:simpleType>
<xsd:restriction base="xsd:string">
<xsd:maxLength value="150"/>
</xsd:restriction>
</xsd:simpleType>
</xsd:attribute>
<xsd:attribute name="ADDRESS_22">
<xsd:simpleType>
<xsd:restriction base="xsd:string">
<xsd:maxLength value="150"/>
</xsd:restriction>
</xsd:simpleType>
</xsd:attribute>
<xsd:attribute name="CARS2" type="xsd:int"/>
<xsd:attribute name="SALARY2" type="xsd:int"/>
<xsd:attribute name="FILLER">
<xsd:simpleType>
<xsd:restriction base="xsd:string">
<xsd:maxLength value="1500"/>
</xsd:restriction>
</xsd:simpleType>
</xsd:attribute>
</xsd:complexType>
</xsd:schema>
<schema xmlns="http://www.w3.org/2001/XMLSchema" xmlns:tns="noNamespace://DEMO#" attributeFormDefault="qualified" elementFormDefault="qualified" targetNamespace="noNamespace://DEMO#">
<element name="eventStream">
<complexType/>
</element>
</schema>
</types>
<message name="event">
<part name="event_eventStream" element="legacyReq:eventStream"/>
</message>
<portType name="eventStreamPortType">
<operation name="eventStream">
<input name="Event_eventStream" message="tns:event"/>
</operation>
</portType>
<binding name="eventStreamJCABinding" type="tns:eventStreamPortType">
<pc:inbound_binding/>
<operation name="eventStream">
<jca:operation ActivationSpec="com.oracle.adapter.oracle.AttuActivationSpec" EisName="testTuxedoQ1" ServerName="mvs5" UserName="" Password="" Workspace="testTuxedoQ1" PortNumber="2551" ConnectTimeout="0" MessagesInBatch="50" WaitTime="30" RetryInterval="15"/>
<input/>
</operation>
</binding>
<service name="eventStreamService">
<port name="eventStreamPort" binding="tns:eventStreamJCABinding">
<jca:address ResourceAdapterClassName="com.oracle.adapter.oracle.AttuResourceAdapter" adapterInstanceJndi="eis/legacy/testTuxedoQ1"/>
</port>
</service>
<plt:partnerLinkType name="eventStreamPartnerLinkType">
<plt:role name="eventStreamRole">
<plt:portType name="tns:eventStreamPortType"/>
</plt:role>
</plt:partnerLinkType>
/definitions>
The Oracle Adapter Framework does not support its own resource manager, therefore the inbound transactional process cannot be supported directly under the Adapter Framework. To configure the transaction gateway process, you need to carry out the following steps:
Configure the BPEL Transactional Gateway Process using JDeveloper
Configure the BPEL Transactional Gateway Wrapper Message Driven Bean
Configure the Oracle Gateway inbound process for a specific Tuxedo service as explained in Configuring the Oracle BPEL Process Manager. You need to select a the Tuxedo Transactional Gateway adapter. See Setting up the Tuxedo Gateway OracleAS Adapter for more information. The automatically created WSDL contains the com.oracle.adapter.oracle.AttuGWTxnActivationSpec. The properties for this activation spec are not in use and should not be changed.
Next, deploy the created BPEL process. When you deploy a process that includes this activation spec, the Tuxedo Gateway resource adapter that works under the Adapter Framework ignores the activation of the corresponding work thread. As a result, only the BPEL application is activated in the BPEL domain.
You should configure a connection factory that provides connectivity to the transactional gateway adapter. For a list of the properties to configure, see OC4J Connection Properties for Synchronous Inbound Processes.
In addition, the resource adapter connection factory contains two properties that enable connectivity from the application server environment to the BPEL domain. These properties are:
bpelDomain: The name of the BPEL domain. The default value is default.
bpelDomainPassword: Password for the BPEL domain. The default value is bpel.
You should not configure the connection factory if the corresponding properties have default values. You can use your existing connection factory or create a new one to edit these properties.
For each BPEL application activated for a Tuxedo service as described in Configure the BPEL Transactional Gateway Process using JDeveloper, you need to deploy a message driven bean process. Each application must have its own MDB. Use the AttuTuxedoGatewayWrapper.ear that is provided.
The .ear file contains the AttuTuxedoGatewayWrapper.jar file. You must edit the descriptor file, ejb-jar.xml, that is contained in this .jar file. The descriptor contains three environment and two activation spec configuration properties.
The following are the environment properties:
BpelApplication: Change the value to the name of the BPEL inbound process that was described in Configure the BPEL Transactional Gateway Process using JDeveloper.
WsdlOperation: Change the value to the name of the corresponding Tuxedo service. This name must be the same name as given to the serviceName property.
ConnectionFactory: Change the value to the name of the resource adapter connection factory configured as described in Configure the Resource Adapter Connection Factory. If the connection factory is not provided, the BPEL domain and password default values are used.
The following are the activation spec properties:
serviceName: Change the value to the name of the corresponding Tuxedo service. This name must be the same name as given to the WsdlOperation property.
connectionFactoryName: Change the value to the name of the resource adapter connection factory that provides the connectivity to the Tuxedo Transactional Gateway adapter.