Skip Headers
Oracle® Retail Integration Bus Implementation Guide
Release 13.0.3
  Go To Table Of Contents
Contents

Previous
Previous
 
Next
Next
 

10 Integration with Fusion Middleware

The RIB is certified on the Oracle Fusion Middleware Application Server. All of the RIB publishers, subscribers, and TAFRs are JavaEE standard components (EJBs and MDBs) that are deployed and managed by the Oracle Application Server in OC4J instances. This means that the RIB can be deployed into an existing Fusion Middleware architecture without any changes.

All RIB message payloads are fully standard compliant XSD based. All of the XML payloads are namespace aware and follow the general standards as well as the conventions that make them compatible with other Oracle Fusion products such ESB and BPEL. The payload schema definitions (xsds) are packaged with each release along with sample messages.

The RIB is a standard's based JMS messaging system, with Oracle Streams AQ and the Oracle Application Server OC4J JMS being the initial JMS providers certified.

The recommended approach for integration between the RIB and Oracle Fusion Middleware products is at the JMS topic level. Any standards compliant tool or product that can interface to the JMS and subscribe and publish messages can be integrated with the RIB.

There are some key functional requirements that an integrating application must follow:

General RIB to Fusion Middleware Architecture

Surrounding text describes Chapter_10.png.

The Oracle Fusion Middleware products, such as ESB and BPEL, use a common standard JMS Adapter. This adapter can be used to connect to the RIB certified JMS Provider and topics.

The JMS topics that the RIB creates for Publication and Subscription are detailed in the Oracle Retail Integration Guide, along with all of the message payloads for each message family.

The RIB html encodes each message payload and inserts it into the RIB messages envelope. Each message has a JMS user-defined property called threadValue that is required to be set on all in-bound messages. In a multi-channel message flow, the subscriber will need to set the message selector to an appropriate threadValue to maintain message publication sequencing.

The xml schema definitions for the payloads and the RIB Messages envelopes are packaged and shipped with the RIB.

See the Oracle Retail Integration Bus Integration Guide for information.

The RIB JMS topic names and message flows between the RIB adapters for each of the Oracle Retail applications are defined in the rib-integration-flows.xml file. This file is the single source of truth that the RIB release uses at configuration and run-time. It is required to be accessible within each RIB deployment: http://<server>:<port>/rib-func-artifact/rib-integration-flows.xml. During installation and configuration, this file is deployed as part of the functional artifact war file.

General Process of Integration

The general process for custom integration with the RIB:

  • Determine the Message Family of interest (e.g., Items)

  • Use the RIB Integration Guide to determine the message payloads and topics involved.

  • Configure the JMS Adapter within the tool (ESB/BPEL) to the RIB JMS provider.

  • Understand the RIB envelope (RibMessage.xsd) and the message type relationship.

  • Understand the payload for each message. These are html-encode inside the RibMessage envelope.

    • The RIB XSDs are included in the RIB Integration Guide as well as the Function Artifacts war file.

  • Understand the Oracle Retail Application API mappings. These are included in the RIB Integration Guide. This is important because the XSDs do not reflect the actual optional/mandatory state of an element. For historical reasons (to support previous releases) all elements in the XSD that have been added since RIB version 10.3 have been optional at the message level.

    • The Mapping reports are included with the Integration Guide.

    • Each of the Oracle Retail Applications has documentation on the behavior of the API.

  • All RIB messages must have the message property threadValue set by publishing applications, and in a multi-channel message flow, the subscriber will need to set the message selector to an appropriate threadValue to maintain message publication sequencing.

  • Many of the Message Families have a RIB Component called a TAFR involved. Understand what a TAFR is and how it works within a message flow. This can be very involved in some families, and can actually create additional mandatory elements with a message that may not be obvious. See "Transform, Filtering and Routing" in the Oracle Retail Integration Bus Operations Guide.

  • The RIB Integration Guide for each family has the general functional specifications for the TAFRs involved with that family.

  • Understand the volume characteristics of a message family. The RIB is designed to handle retail volumes, so a poorly designed subscriber can have a huge impact on the JMS. Conversely, a publisher that tries to use the RIB as a bulk transfer mechanism is also inappropriate.

Example - Configure FWM JMS Adapter to RIB AQJMS

This example demonstrates configuring a simple JMS Adapter connection to a RIB AQ JMS. This example assumes the GA installation of the Oracle SOA Suite and the default directories ($SOA_HOME).

To do the configurations, it is necessary to have the RIB AQ JMS information:

AQ JMS Database URL

jdbc:oracle:thin:ribaq/ribaq@linux1:1521:ora10g

AQ Username

ribaq

AQ Password

ribaq


Create the Resource Provider

First edit the $SOA_HOME/oc4j_soa/config/ application.xml file to add a resource provider that points to the RIB AQ JMS. Provide a name to the resource provider.

<resource-provider class="oracle.jms.OjmsContext" name="ribaq">
    <description>RIB AQ</description>
    <property name="url"
        value="jdbc:oracle:thin:ribaq/ribaq@linux1:1521:ora10g" />
    <property name="username" value="ribaq" />
    <property name="password" value="ribaq" />
</resource-provider>

Configure a JMS Connection Factory

Edit the $SOA_HOME/oc4j_soa/application-deployments/default/JmsAdapter/ oc4j-ra.xml file to match the Resource Provider name created above. Either create a new entry or edit an existing one. Note the factory location (JNDI Name).

<connector-factory location="eis/aqjms/Topic" connector-name="Jms Adapter">
    <config-property name="connectionFactoryLocation"
        value="java:comp/resource/ribaq/TopicConnectionFactories/myTCF"/>
    <config-property name="factoryProperties" value=""/>
    <config-property name="acknowledgeMode" value="AUTO_ACKNOWLEDGE"/>
    <config-property name="isTopic" value="true"/>
    <config-property name="isTransacted" value="true"/>
    <config-property name="username" value="ribaq"/>
    <config-property name="password" value="ribaq"/>
    <connection-pooling use="none">
    </connection-pooling>
    <security-config use="none">
    </security-config>
</connector-factory>

Configure the FMW JMS Adapter

There is nothing special about configuration of the JMS Adapter in either ESB or BPEL to now connect to the Resource Provider configured to the RIB AQ JMS. (See the Oracle SOA Suite tutorials and documentation).

The following prompts appear during configuration:

Prompt Example

Resource Provider

ribaq

JNDI Name

eis/aqjms/Topic

Connection (database)

ribaq/ribaq@linux1:1521:ora10g

Destination Topic (Browse to see RIB Topics)

java:comp/resource/ribaq/Topics/RIBAQ.ETORDERFROMRMS

Message Selector

threadValue=1

Durable Subscriber ID:

Order_sub_ESB

Schema Location

RibMessages.xsd

Schema Element

RibMessages



Note:

RibMessages.xsd should be imported into the project from the RIB functional artifacts distribution.