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

Previous
Previous
 
 

11 RIB Customization/Extension

The "customization" of an Oracle Retail application often drives requirements to customize or extend the messages that flow among the Oracle Retail applications, or to create new message flows to support new business logic.

This document discusses the customization/extension approaches and best practices from an Oracle Retail Integration Bus (RIB) perspective for extending base messages, and for creating new messages and adapters. These are complex topics and should be performed with great care to avoid making future generally available (GA) releases difficult or impossible to accept.

Retailers often modify retail software either in-house or through third party system integrators. The customization and extension of Oracle Retail base products and messages are not supported by Oracle Retail, including My Oracle Support. This document aims to mitigate the risks of unsupported customization by providing guidance and references on how to attempt to customize safely and effectively. The tools and approaches described in this document are complex and require a high level of skill and knowledge of the product. Any issues that may arise with custom flows, custom APIs, or customized message families are the responsibility of the customer and not Oracle Retail.

Prerequisites

Customization requires a number of considerations and planning steps. Planning helps prevent reinstallation and rearchitecture of the RIB due to operational or performance problems.

The tools used in the customization and extension of the RIB are documented separately. The primary tools are the Oracle Retail Functional Artifact Generator and the rib-app-builder tools.

General Customization Rules

Message Family and Message Type Customization

In the RIB, all messages are categorized by "message family" and "message type." A message family is specific to one or more Business Objects. It defines all publishable events occuring on the Business Objects.

The message type classifies a specific event. For example, the Orders message family is for messages about purchase orders, and the Vendor message family is for supplier or vendor information.

Typically, a message family includes at least one Create, Mod, and Delete operation.


Note:

See "Message Family and Message Types" in Chapter 3 .

Adding a New Message Type

To add a new message to an existing message family, the simplest approach is to add a new message type. The first step is to determine and create the payload for the new message type. The message payload must be created following the guideline and packaging rule for RIB messages.


Note:

To create a new message family XSD, see "Adding a New Payload."

Once the desired payload is ready, follow the instructions in the following sections, depending on the type of applications in the message family and in the message flow.

Message Flows with PL/SQL Applications

The new message type created for an already existing or new message family must be added in the rib-<app>-plsql-api.xml of the subscribing PL/SQL retail application.


Note:

No configuration changes are needed in rib-<plsql app> whenever PL/SQL applications publish a new message type to which no PL/SQL applications subscribe.

The following illustration indicates the files that must be changed inside the RIB infrastructure during the addition of new message type when a PL/SQL application is involved in the message flow.

Surrounding text describes Custom_1.png.

Procedure for Adding a New Message Type for PL/SQL Applications

To add a message type for message flows involving PL/SQL applications, complete the following steps.

  1. Add the new message type in rib-<app>-plsql-api.xml, where app = rms or rwms in the <RIB_HOME>/application-assembly-home/rib-<app> directory.

    For example, to add the new message type, "DiffGrpFooCre," for the DiffGrp message family that is subscribed by RWMS, add the message type under the <adaptorClassDef name="DiffGrp_sub"> of rib-rwms-plsql-api.xml in the <RIB_HOME>/application-assembly-home/rib-rwms as shown below.

    cd <RIB_HOME>/application-assembly-home/rib-rwms
    vi rib-rwms-plsql-api.xml
     
    <adaptorClassDef name="DiffGrp_sub">
    <class>com.retek.rib.collab.general.OracleObjectSubscriberComponentImpl</class>
                    <messageFamily name="DiffGrp">
                            <storedProc>
                                    <signature>{call RDMSUB_DIFFGRP.CONSUME(?,?,?,?,?)}</signature>
                                    <useFacilityType>true</useFacilityType>
                      </storedProc>
                      <messageType name="DIFFGRPDEL">
                              <oracleObject>RIB_DiffGrpRef_REC</oracleObject>
                      </messageType>
                      <messageType name="DIFFGRPDTLCRE">
                              <oracleObject>RIB_DiffGrpDtlDesc_REC</oracleObject>
                      </messageType>
                      <messageType name="DIFFGRPDTLDEL">
                              <oracleObject>RIB_DiffGrpDtlRef_REC</oracleObject>
                      </messageType>
                      <messageType name="DIFFGRPHDRCRE">
                            <oracleObject>RIB_DiffGrpHdrDesc_REC</oracleObject>
                      </messageType>
                      <messageType name="DIFFGRPDTLMOD">
                            <oracleObject>RIB_DiffGrpDtlDesc_REC</oracleObject>
                      </messageType>
                      <messageType name="DIFFGRPHDRMOD">
                            <oracleObject>RIB_DiffGrpHdrDesc_REC</oracleObject>
                      </messageType>
    <messageType name="DIFFGRPFOOCRE">
                             <oracleObject>RIB_DiffGrpHdrDesc_REC</oracleObject>
                    </messageType>
            </messageFamily>
    </adaptorClassDef>
    

    Note:

    Creating a temporary working directory, "customization-workarea," under <RIB_HOME>/tools-home is recommended. This directory can be used when performing customization related tasks.

  2. Edit the payload.properties file in the ./conf directory of the Artifact Generator tool installation. The payload.properties contains the new payload message definitions. The format of the definition is as follows:

    RIBFAMILY.TYPE=IMPLEMENTATION CLASS NAME
    cd conf
    vi payload.properties (make changes)
    

    For example, to add the new message type, "DiffGrpFooCre," for th DiffGrp message family, the modification to payload.properties is as follows:

    DIFFGRP.DIFFGRPFOOCRE= com.retek.rib.binding.payload.DiffGrpHdrDesc
    

    In this case, DiffGrpFooCre calls the implementation class, DiffGrpHdrDesc.


    Note:

    For the maximum supported length of the message type, see the RibMessages.xsd in the rib-func-artifact.war.


    Note:

    If a TAFR is involved in the flow, the appropriate changes must be made to the TAFR to handle the new message types.

  3. Run the Artifact Generator to generate various functional artifacts.

    $GROOVY_HOME/bin/groovy GenArtifacts.groovy
    

    Each generated artifact is in the appropriate ./output*/dist folder, including:

    • rib-public-payload-database-object-types.zip

    • rib-public-payload-java-beans.jar

    • retail-public-bo-java-beans.jar

    • rib-public-payload-xml-samples.zip

  4. Copy the newly generated artifact rib-public-payload-java-beans.jar from the appropriate ./output*/dist folder to <RIB_HOME>/application-assembly-home/rib-func-artifacts/ directory.

  5. Run the rib-app-compiler.sh script from <RIB_HOME>/application-assembly-home/bin directory to generate/assemble a rib-<app> and prepare it for deployment.

    cd <RIB_HOME>/application-assembly-home/bin
    sh rib-app-compiler.sh
  6. Run the rib-app-deployer.sh script from <RIB_HOME>/deployment-home/bin directory as follows.

    cd <RIB_HOME>/deployment-home/bin
    sh rib-app-deployer.sh -deploy-rib-func-artifact-war

    This step deploys the rib-func-artifact.war.

    sh rib-app-deployer.sh -deploy-rib-app-ear rib-<app>
    

    The rib-<app> is deployed to the Java EE container. Repeat this step for each rib-<app> in the integration environment.


    Note:

    The <app> value must be rms or rwms.

Message Flows with Java EE Applications

The following illustration indicates the files that must be changed inside the RIB infrastructure during the addition of new message type when a Java EE application is involved in the message flow.

Surrounding text describes Custom_2.png.

Procedure for Adding a New Message Type for Java EE Applications

To add a message type for message flows involving Java EE applications, complete the following steps.


Note:

Creating a temporary working directory, "customization-workarea," under <RIB_HOME>/tools-home is recommended. This directory can be used when performing customization related tasks.

  1. Edit the payload.properties file in the ./conf directory of the Oracle Retail Artifact Generator tool installation. The payload.properties contains the new payload message definitions. The format of the definition is as follows:

    RIBFAMILY.TYPE=IMPLEMENTATION CLASS NAME

    cd conf
    vi payload.properties (make changes)
    

    For example, to add the new message type, "FooDeptCre," under the Merchhier message family to call the implementation class, MrchHrDeptDesc, the file is modified as follows:

    MERCHHIER.FOODEPTCRE= com.retek.rib.binding.payload.MrchHrDeptDesc
    

    Note:

    For the maximum supported length of the message type, see the RibMessages.xsd in the rib-func-artifact.war.


    Note:

    If a TAFR is involved in the flow, the appropriate changes must be made to the TAFR to handle the new message types.

  2. Run the Artifact Generator to generate various functional artifacts.

    $GROOVY_HOME/bin/groovy
    GenArtifacts.groovy

    Each generated artifact is in the appropriate ./output*/dist folder, including

    • rib-public-payload-database-object-types.zip

    • rib-public-payload-java-beans.jar

    • retail-public-bo-java-beans.jar

    • rib-public-payload-xml-samples.zip

  3. Copy the newly generated artifacts (listed above) from the appropriate ./output*/dist folders to the <RIB_HOME>/application-assembly-home/rib-func-artifacts/ directory.

  4. Run the rib-app-compiler.sh script from <RIB_HOME>/application-assembly-home/bin directory to generate/assemble a rib-<app> and make it ready for deployment.

    cd <RIB_HOME>/application-assembly-home/bin
    sh rib-app-compiler.sh
  5. Run the rib-app-deployer.sh script from <RIB_HOME>/deployment-home/bin directory as follows.

    cd <RIB_HOME>/deployment-home/binsh rib-app-deployer.sh -deploy-rib-func-artifact-war
    

    This step deploys the rib-func-artifact.war.

    sh rib-app-deployer.sh -deploy-rib-app-ear rib-<app>
    

    The rib-<app> is deployed. Repeat this step for each rib-<app> applicable to the integration environment.


Note:

The <app> value must be rms or rwms.


Note:

To verify the addition of a new message type for a message family, see "Verifying the New Message Type."

Creating a New Message Family

In the RIB, all messages are categorized by message family and message type. One option for customizing the RIB is to create a new message family with a new publishing adapter and a new subscribing adapter.

When creating a new message family, consider the following:

The following illustration indicates the files that require changes during the addition of new message family inside the RIB infrastructure.

Surrounding text describes Custom_3.png.

Procedure for Adding a New Message Family

To add a new message family, complete the following steps.

  1. Create a temporary working directory, "customization-workarea," under <RIB_HOME>/tools-home to perform any customization related tasks.

  2. Copy the rib-func-artifact.war in <RIB_HOME>/application-assembly-home/rib-func-artifacts/ directory into <RIB_HOME>/tools-home/ customization-workarea/ directory.

    cd <RIB_HOME>/application-assembly-home/rib-func-artifacts
    cp rib-func-artifact.war <RIB_HOME>/tools-home/customization-workarea
    
  3. Extract the rib-integration-flows.xml from the copied rib-func-artifact.war which needs to be modified.

    cd <RIB_HOME>/tools-home/customization-workarea
    jar -xvf rib-func-artifact.war integration/rib-integration-flows.xml
    
  4. Define the entire flow for the particular message family in rib-integration-flows.xml in /integration/ directory of <RIB_HOME>/tools-home/ customization-workarea.

    A new custom message flow should always begin with <message-flow id="901">. Each customized message flow ID should be unique and must follow the sequence. Adding a new customized message flow with a message flow ID between 1 and 900 is not recommended, as this range is reserved for adding base flows in higher versions of RIB.

    For example, when adding a new message family, "Foo," that flows from RMS to RWMS, the flow is defined in rib-integration-flows.xml as follows:

    <message-flow id="901">
                <node id="rib-rms.Foo_pub" app-name="rib-rms"
                    adapter-class-def="Foo_pub" type="DbToJms">
                       <in-db>default</in-db>
                       <out-topic>etFooFromRMS</out-topic>
                </node>
             <node id=" rib-rwms.Foo_sub" app-name=" rib-rwms"
                      adapter-class-def="Foo_sub" type="JmsToDb">
                    <in-topic>etFooFromRMS</in-topic>
                       <out-db>default</out-db>
                </node>
       </message-flow>
    

    The convention is as follows:

    • node id = rib-<app>.<family>_pub or = rib-<app>.<family>_sub or could be external-system.<family>_pub or external-system.<family>_sub

    • app-name = rib-<app>. This is the application name. The <app> value is one of the following: rms, rwms, sim, aip, rpm, tafr, or external-system

    • adapter-class-def = <family>_pub or <family>_sub

    • type = DbToJms or JmsToDb

    • <in-db> is the source of the message is a database.

    • <out-db> is the destination of the message is a database

    • <out-topic> is the topic name to which the message would be published

    • <in-topic> is the topic name from which the message would be consumed.

  5. Replace the previous existing rib-integration-flows.xml with the above changed rib-integration-flows.xml to the /integration/ directory of rib-func-artifact.war in the <RIB_HOME>/tools-home/customization-workarea/ directory and generate the rib-func-artifact.war as follows.

    cd <RIB_HOME>/tools-home/customization-workarea
    jar -uvf rib-func-artifact.war integration/rib-integration-flows.xml
    
  6. Create a new publishing adapter, subscribing adapter and TAFR adapter (if necessary), depending on the requirement for the new message family.


    Note:

    See "Adding New Adapters."

  7. Create the message famly XSD.


    Note:

    See "Adding a New Payload."

    The newly created XSD should conform to the Meta schema, IntegrationXmlMetaSchema.xsd. The artifact generator tools check the validity of the schema before generating any artifacts. If the schema is not compliant with the IntegrationXmlMetaSchema, the artifact generator fails. The file is in the conf directory of the Artifact Generator tool installation program.

  8. Create a new message type.

  9. Edit the payload.properties file in /conf directory of the Artifact Generator tool installation program. The payload.properties contains the new payload message definitions. The format of the definition is

    RIBFAMILY.TYPE=IMPLEMENTATION CLASS NAME
    cd conf
    vi payload.properties (make changes)
    

    For example, when adding a new message type, "FooCre," for the Foo message family that calls the implementation class, FooDesc, the payload.properties file is modified as follows:

    FOO.FOOCRE= com.retek.rib.binding.payload.FooDesc
    
  10. Run the Artifact Generator to generate various functional artifacts

    $GROOVY_HOME/bin/groovy
    GenArtifacts.groovy

    Each generated artifact is in the appropriate ./output*/dist folder, including:

    • rib-public-payload-database-object-types.zip

    • rib-public-payload-java-beans.jar

    • retail-public-bo-java-beans.jar

    • rib-public-payload-xml-samples.zip

  11. Copy the newly generated artifacts (listed above) from the appropriate ./output*/dist folders to the <RIB_HOME>/application-assembly-home/rib-func-artifacts/ directory.

  12. New entries may be needed in the RIB_SETTINGS of the RMS application database to reference the new Message Family, only if the RMS application is in scope.

  13. Run the rib-app-builder deployer: Run the rib-app-deployer.sh script from <RIB_HOME>/deployment-home/bin directory as follows to create the new topic (etFooFromRMS) in our flow. (The step to prepare JMS is not destructive, so even if it is run again it would remove all the topics and recreate them.)

    cd <RIB_HOME>/deployment-home/bin
    sh rib-app-deployer.sh -prepare-jms
  14. Run the rib-app-builder compiler: Run the rib-app-compiler.sh script from <RIB_HOME>/application-assembly-home/bin directory to generate/assemble a rib-<app> and make it ready for deployment.

    cd <RIB_HOME>/application-assembly-home/bin
    sh rib-app-compiler.sh
  15. Run the rib-app-builder deployer: Run the rib-app-deployer.sh script from <RIB_HOME>/deployment-home/bin directory as follows.

    cd <RIB_HOME>/deployment-home/bin
    sh rib-app-deployer.sh -deploy-rib-func-artifact-war

    This deploys the rib-func-artifact.war.

    sh rib-app-deployer.sh -deploy-rib-app-ear rib-<app>
    

The rib-<app> is deployed. Repeat this step for each rib-<app> that is in scope for this integration environment.


Note:

The <app> value must be rms, rwms, tafr, sim, aip, or rpm.


Note:

To verify the addition of a new message family, see "Verifying the New Message Family."

Adding New Adapters

A RIB Adapter is a component that coordinates business event (message) generation and processing with the respective Oracle Retail application interface. Each adapter in the RIB is created to handle a specific functional interface.

Adding the Custom Adapter to the rib-integration-flows.xml File

When adding a custom publishing, subscribing or TAFR adapter, it is necessary to add or modify the message flows to which you are adding a custom adapter in the rib-integration-flows.xml. You also must update the rib-func-artifact.war and deploy the updated rib-func-artifact.war.

For example, when adding a new publisher, "Foo_pub," which publishes a message for the message family, Foo, that flows from RMS to RWMS, the flow in rib-integration-flows.xml is defined as follows:

<message-flow id="901">
            <node id="rib-rms.Foo_pub" app-name="rib-rms"
                adapter-class-def="Foo_pub" type="DbToJms">
                   <in-db>default</in-db>
                   <out-topic>etFooFromRMS</out-topic>
            </node>
         <node id=" rib-rwms.Foo_sub" app-name=" rib-rwms"
                  adapter-class-def="Foo_sub" type="JmsToDb">
                <in-topic>etFooFromRMS</in-topic>
                   <out-db>default</out-db>
            </node>
   </message-flow>

Procedure for Adding the Flow to the rib-integration-flows.xml File


Note:

Before adding the flow above to the rib-integration-flows.xml flow, it is recommended that a temporary working directory ("customization-workarea" under <RIB_HOME>/tools-home) be created. This directory can be used for performing any customization related tasks.

To add the flow to the rib-integration-flows.xml file, complete the following steps:

  1. Copy the rib-func-artifact.war from the <RIB_HOME>/ application-assembly-home/rib-func-artifacts to <RIB_HOME>/tools-home/customization-workarea/ directory.

    cd <RIB_HOME>/application-assembly-home/rib-func-artifacts
    cp rib-func-artifact.war  <RIB_HOME>/tools-home/customization-workarea
    
  2. Extract the rib-integration-flows.xml requiring modification from the copied rib-func-artifact.war as follows:

    jar -xvf rib-func-artifact.war integration/rib-integration-flows.xml
    
  3. Add the flow above to the rib-integration-flows.xml.

  4. Update the rib-func-artifact.war with the modified rib-integration-flows.xml.

    jar -uvf rib-func-artifact.war integration/rib-integration-flows.xml
    
  5. Copy the rib-func-artifact.war from the <RIB_HOME>/tools-home/customization-workarea to <RIB_HOME>/application-assembly-home/rib-func-artifacts/ directory.

    cd
    <RIB_HOME>/tools-home/customization-workarea
    cp rib-func-artifact.war
    <RIB_HOME>/application-assembly-home/rib-func-artifacts
    
  6. Run the rib-app-builder compiler: Run the rib-app-compiler.sh script from <RIB_HOME>/application-assembly-home/bin directory to generate/assemble a rib-<app> and make it ready for deployment.

    cd <RIB_HOME>/application-assembly-home/bin
    sh rib-app-compiler.sh
  7. Run the rib-app-builder deployer: Run the rib-app-deployer.sh script from <RIB_HOME>/deployment-home/bin directory as follows.

    cd <RIB_HOME>/deployment-home/bin
    sh rib-app-deployer.sh -deploy-rib-func-artifact-war

The rib-func-artifact.war is deployed.

Adding a Publishing Adapter for PL/SQL Applications

The illustraton below indicates the files that require changes inside the RIB infrastructure for the addition of a new publishing adapter for a PL/SQL application.

Surrounding text describes Custom_4.png.

Procedure for Adding a Publishing Adapter for PL/SQL Applications

  1. Identify the flow to which the new adapter in being added.

  2. Define the name of the publishing adapter. It should always follow the naming convention, RIBFAMILY_pub_ADAPTER INSTANCE NO.

  3. Define the particular publishing adapter in rib-<app>-adapters.xml in <RIB_HOME>/application-assembly-home/rib-<app>, where <app> refers to either RMS or RWMS. The customer also must mention a custom attribute equal to "true" whenever a new customized publishing adapter is added.

    For example, a new publishing adapter, "Foo_pub_1," for the Foo message family is defined in rib-<app>-adapters.xml as follows:

    <timer-driven id="Foo_pub_1" initialState="running" timeDelay="10" custom="true"> 
        <timer-task>
               <class name="com.retek.rib.app.getnext.impl.GetNextTimerTaskImpl"/>
               <property name="maxChannelNumber" value="1" />
        </timer-task>
    </timer-driven>
    
  4. Define the particular publishing adapter in rib-<app>-adapters-resources.properties in <RIB_HOME>/application-assembly-home/rib-<app>, where <app> refers to either RMS or RWMS.

    Foo_pub_1.name=Foo Publisher, channel 1
    Foo_pub_1.desc=Publisher for the Foo family through channel 1.
    
  5. Define the particular publishing adapter in rib-<app>-plsql-api.xml in <RIB_HOME>/application-assembly-home/rib-<app> where <app> refers to either RMS or RWMS as in below example.


    Note:

    The signature of the stored procedure should come from the corresponding PL/SQL applications.

    <adaptorClassDef name="Foo_pub">
     <class>com.retek.rib.collab.general.OracleObjectPublisherComponentImpl</class>
         <messageFamily name="Foo">
            <storedProc>
            <signature>{call RMSMFM_FOO.GETNXT(?,?,?,?,?,?,?,?)}</signature>
            </storedProc>
       </messageFamily>
    </adaptorClassDef>
    
  6. Make the required changes to the rib-integration-flows.xml. See Adding the Custom Adapter to the rib-integration-flows.xml File.

  7. Run the rib-app-builder compiler: Run the rib-app-compiler.sh script from <RIB_HOME>/application-assembly-home/bin directory to generate/assemble a rib-<app> and make it ready for deployment.

    cd <RIB_HOME>/application-assembly-home/bin
    sh rib-app-compiler.sh
  8. Run the rib-app-builder deployer - Run the rib-app-deployer.sh script from <RIB_HOME>/deployment-home/bin directory as follows.

    cd <RIB_HOME>/deployment-home/bin
    sh rib-app-deployer.sh -deploy-rib-app-ear rib-<app>

The <app> is deployed.


Note:

To verify the addition of the new adapter, see "Verifying the New Publishing Adapter."

Adding a Publishing Adapter for Java EE Applications

The following illustration indicates the files that require changes inside the RIB infrastructure during the addition of a new publishing adapter for a Java EE application.

Surrounding text describes Custom_5.png.

Procedure for Adding a Publishing Adapter for Java EE Applications

  1. Identify the flow to which the new adapter in being added.

  2. Define the name of the publishing adapter. It should always follow the naming convention, RIBFAMILY_pub_ADAPTER INSTANCE NO.

  3. Define the particular publishing adapter in rib-<app>-adapters.xml in <RIB_HOME>/application-assembly-home/rib-<app>, where <app> refers to RPM, SIM, or AIP. The customer also must mention a custom attribute equal to "true" whenever a new customized publishing adapter is added.

    For example, a new publishing adapter, "Foo_pub_1," for the Foo message family is defined in rib-<app>-adapters.xml as follows.

    <request-driven id=" Foo_pub_1" initialState="notConfigurable" custom="true" />
    
  4. Define the particular publishing adapter in rib-<app>-adapters-resources.properties in <RIB_HOME>/application-assembly-home/rib-<app>, where <app> refers to RPM, SIM, or AIP.

    Foo_pub_1.name=Foo Publisher, channel 1
            Foo_pub_1.desc=Publisher for the  Foo family through channel 1.
    
  5. Make the required changes to the rib-integration-flows.xml. See Adding the Custom Adapter to the rib-integration-flows.xml File.

  6. Run the rib-app-builder compiler: Run the rib-app-compiler.sh script from <RIB_HOME>/application-assembly-home/bin directory to generate/assemble a rib-<app> and make it ready for deployment.

    cd <RIB_HOME>/application-assembly-home/bin
    sh rib-app-compiler.sh
  7. Run the rib-app-builder deployer: Run the rib-app-deployer.sh script from <RIB_HOME>/deployment-home/bin directory as follows.

    cd <RIB_HOME>/deployment-home/bin
    sh rib-app-deployer.sh -deploy-rib-app-ear rib-<app>

The <app> is deployed.


Note:

To verify the addition of the new adapter, see "Verifying the New Publishing Adapter."

Adding a Subscribing Adapter for PL/SQL Applications

The following illustration indicates the files that require changes inside the RIB infrastructure during the addition of a new subscribing adapter for PL/SQL applications.

Surrounding text describes Custom_6.png.

Procedure for Adding a New Subscribing Adapter for a PL/SQL Application

To add a new subscribing adapter for a PL/SQL application, complete the following steps:

  1. Identify the flow to which the new adapter in being added.

  2. Define the name of the subscribing adapter. It should always follow the naming convention, RIBFAMILY_sub_ADAPTER INSTANCE NO.

  3. Define the particular subscribing adapter in rib-<app>-adapters.xml in <RIB_HOME>/application-assembly-home/rib-<app>, where <app> refers to either RMS or RWMS. The customer also must mention a custom attribute equal to "true" whenever a new customized subscribing adapter is added.

    For example, a new subscribing adapter, "Foo_sub_1," for the Foo message family, is defined in rib-<app>-adapters.xml as follows:

    <message-driven id="Foo_sub_1" initialState="running" custom="true"/>
    
  4. Define the particular subscribing adapter in rib-<app>-adapters-resources.properties in <RIB_HOME>/application-assembly-home/rib-<app>, where <app> refers to either RMS or RWMS.

    Foo_sub_1.name= Foo Subscriber, channel 1
            Foo_sub_1.desc=Subscriber for the Foo family through channel 1.
    
  5. Define the particular subscribing adapter in rib-<app>-plsql-api.xml in <RIB_HOME>/application-assembly-home/rib-<app> where <app> refers to either RMS or RWMS as shown below.


    Note:

    The signature of the stored procedure should come from the corresponding PL/SQL applications.

    <adaptorClassDef name="Foo_sub">
    <class>com.retek.rib.collab.general.OracleObjectSubscriberComponentImpl</class>
             <messageFamily name="Foo">
    <storedProc>
                            <signature>{callRMSSUB_FOO.CONSUME(?,?,?,?)}</signature>
                     </storedProc>
             <messageType name=" FOOCRE">
                            <oracleObject>RIB_FooDesc_REC</oracleObject>
            </messageType>
            <messageType name=" FooMOD">
                    <oracleObject>RIB_FooDesc_REC</oracleObject>
            </messageType>
            <messageType name=" FooDEL">
                            <oracleObject>RIB_FooRef_REC</oracleObject>
             </messageType>
             </messageFamily>
      </adaptorClassDef>
    
  6. Make the necessary changes to the rib-integration-flows.xml. See Adding the Custom Adapter to the rib-integration-flows.xml File.

  7. Run the rib-app-builder compiler: Run the rib-app-compiler.sh script from the <RIB_HOME>/application-assembly-home/bin directory to generate/assemble a rib-<app> and make it ready for deployment.

    > cd <RIB_HOME>/application-assembly-home/bin>
    sh rib-app-compiler.sh
  8. Run the rib-app-builder deployer: Run the rib-app-deployer.sh script from the <RIB_HOME>/deployment-home/bin directory as follows.

    > cd <RIB_HOME>/deployment-home/bin>
    sh rib-app-deployer.sh -deploy-rib-app-ear rib-<app>

The <app> is deployed.


Note:

To verify the addition of the new adapter, see "Verifying the New Subscribing Adapter."

Adding a Subscribing Adapter for Java EE Applications

The following illustration indicates the files that require changes inside the RIB infrastructure during the addition of a new subscribing adapter for a Java EE application.

Surrounding text describes Custom_7.png.

Procedure for Adding a New Subscribing Adapter for a Java EE Application

To add a new subscribing adapter for a Java EE application, complete the following steps:

  1. Identify the flow to which the new adapter in being added.

  2. Define the name of the subscribing adapter. It should always follow the naming convention, RIBFAMILY_sub_ADAPTER INSTANCE NO.

  3. Define the particular subscribing adapter in rib-<app>-adapters.xml in <RIB_HOME>/application-assembly-home/rib-<app>, where <app> refers to SIM or AIP. The customer also must mention a custom attribute equal to "true" whenever a new customized subscribing adapter is added.

    For example, a new subscribing adapter, "Foo_pub_1" for the Foo message family is defined in rib-<app>-adapters.xml as follows:

    <message-driven id="Foo_sub_1" initialState="running" custom="true" />
    
  4. Define the particular subscribing adapter in rib-<app>-adapters-resources.properties in the <RIB_HOME>/application-assembly-home/rib-<app>, where <app> refers to SIM or AIP.

    Foo_sub_1.name= Foo Subscriber, channel 1
            Foo_sub_1.desc=Subscriber for the Foo family through channel 1.
    
  5. Make the required changes to the rib-integration-flows.xml. See Adding the Custom Adapter to the rib-integration-flows.xml File.

  6. Run the rib-app-builder compiler: Run the rib-app-compiler.sh script from the <RIB_HOME>/application-assembly-home/bin directory to generate/assemble a rib-<app> and make it ready for deployment.

    > cd <RIB_HOME>/application-assembly-home/bin
    > sh rib-app-compiler.sh
  7. Run the rib-app-builder deployer: Run the rib-app-deployer.sh script from <RIB_HOME>/deployment-home/bin directory as follows.

    > cd <RIB_HOME>/deployment-home/bin
    > sh rib-app-deployer.sh -deploy-rib-app-ear rib-<app>

The <app> is deployed.


Note:

To verify the addition of the new adapter, see "Verifying the New Subscribing Adapter."

Custom TAFR Adapters

Transformation Address Filters/Router (TAFR) adapters transform message data and route messages. Multiple, message family specific TAFRs have already been implemented. Different TAFR adapters may be active on different message families or on the same message family, depending on the needs of an application. Not all message families require TAFRs.

TAFR Considerations

The following topics should be considerd before writing a customized TAFR implementation for transformation, filtering or routing.

Transformation

Transformation is handled in the TAFR implementation class. The following is an example of a TAFR that handles transformation.

public RibMessage transformRibMessage(RibMessage inMsg) throws TafrException { 
// Transforms the incoming RibMessage into an outgoing RibMessage
RibMessage newMsg = transform(inMsg); 
return newMsg; }

Filtering Configuration

Filtering configuration involves updating the rib-tafr.properties file with the appropriate information. The property follows the usual properties naming convention (name=value). The property used for filtering is:

"for.<tafr name>_tafr.drop-messages-of-types"

Example:

for.ItemsToItemsISO
_tafr.drop-messages-of-types=ISCDimCre,ISCDimMod,ISCDimDel,ItemImageCre,ItemImageMod,
ItemImageDel,ItemUdaDateCre,ItemUdaDateMod,ItemUdaDateDel,ItemUdaFfCre,ItemUdaFfMod,
ItemUdaFfDel,ItemUdaLovCre,ItemUdaLovMod,ItemUdaLovDel

This property should be read as, "for ItemsToItemsISO tafr, drop these message types." A comma delimits the message types. If customization is required, rib-tafr.properties files must be updated for filtering to take place.

Routing

Routing is enabled by default for TAFRs; the RIB infrastructure handles this routing. If a TAFR requires routing based on message content, implementation classes override the following method.

public void routeRibMessage(RibMessage newMsg,MessageRouterIface router) throws TafrException {
    router.addMessageForTopic(eventType, newMsg);
}

Adding a New TAFR Adapter

This section explains how to create a new TAFR adapter for a particular message family.

The following illustration indicates the files that require changes inside the RIB infrastructure during the addition of new TAFR adapter to a message family.

Surrounding text describes Custom_8.png.

Procedure for Adding a New TAFR Adapter

To add a new TAFR adapter, complete the following steps.

  1. Identify the flow to which the new adapter in being added.

  2. Define the name of the TAFR adapter. It should always follow the naming convention, RIBFAMILY_tafr_ADAPTER INSTANCE NO.

  3. Define the corresponding implementation class name the TAFR needs to call.

  4. Write the implementation class for the TAFR.

Custom TAFR Implementation

The default implementation of a TAFR implements the following interface in the RIB infrastructure.

package com.retek.rib.collab.tafr;
 
import com.retek.rib.domain.ribmessage.bo.RibMessage;
 
public interface TafrIface {
@return ribMessage that has been modified from the original one 
public RibMessage transformRibMessage(RibMessage ribMsgIn) throws TafrException;
    
/**
 * Filters message or messages contents accordingly. It is possible that
 * this method could filter away the entire message thus returning null
 * from this method.
 * 
 * @param ribMsg
 * @return ribMessage that may have been modified from the original one
 *  passed in or null.
 */
public RibMessage filterRibMessage(RibMessage ribMsgIn) throws TafrException;
    
/**
 * Routes the message to the appropriate topic for publication.
 * 
 * @param ribMsg RibMessage to be routed to the appropriate topic.
 */
public void routeRibMessage(RibMessage ribMsgIn, MessageRouterIface
router) throws TafrException;

public void processRibMessage(RibMessage ribMsgIn, MessageRouterIface
router) throws TafrException;
}

Procedure for Completing Custom TAFR Implementation

To implement a custom TAFR, complete the following steps:

  1. Verify that the default implementation that comes with the RIB infrastructure is appropriate.

  2. Create a rib-custom-tafr-business-impl.jar containing the customized implementation class for the specific message family and replace the same under <RIB_HOME>/application-assembly-home/rib-func-artifacts.


    Note:

    See Metalink Note 837997.1, "How to Create a Custom TAFR Implementation."

  3. Define the particular TAFR adapter in rib-tafr-adapters.xml in <RIB_HOME>/application-assembly-home/rib-tafr. The customer must mention a custom attribute equal to "true" whenever a new customized TAFR adapter is added.

    For example, when adding a new TAFR adapter, "Foo_tafr_1," for the Foo message family, the implementation class written is "SampleToSampleWH." The class is in com.retek.rib.collab.tafr.bo.impl, inside rib-custom-tafr-business-impl.jar. It should be defined in rib-tafr-adapters.xml as follows:

    <message-driven id="Foo_tafr_1" initialState="running" tafr-business-
    impl="com.retek.rib.collab.tafr.bo.impl.SampleToSampleWH"
    custom="true" />
  4. Define the particular TAFR adapter in rib-tafr-adapters-resources.properties in the <RIB_HOME>/application-assembly-home/rib-tafr.

    Foo_tafr_1.name=Foo TAFR, channel 1  
    Foo_tafr_1.desc=TAFR for the Foo family through channel 1.
  5. Make the required changes to the rib-integration-flows.xml. See "Adding the Custom Adapter to the rib-integration-flows.xml File."

  6. Run the rib-app-builder compiler: Run the rib-app-compiler.sh script from the <RIB_HOME>/application-assembly-home/bin directory to generate/assemble a rib-<app> and make it ready for deployment.

    cd <RIB_HOME>/application-assembly-home/bin
    sh rib-app-compiler.sh
  7. Run the rib-app-builder deployer: Run the rib-app-deployer.sh script from <RIB_HOME>/deployment-home/bin directory as follows.

    cd <RIB_HOME>/deployment-home/bin
    
    sh rib-app-deployer.sh -deploy-rib-app-ear rib-tafr

Note:

To verify the addition of the new TAFR adapter, see "Verifying the New TAFR Adapter."

Changing an Existing TAFR Adapter

If there is a need to add more functionality to an existing TAFR than what is already provided, a class can be added to extend from the original TAFR class.

Procedure for Changing an Existing TAFR Adapter

To change an existing TAFR adapter, complete the following steps:

  1. Identify the TAFR to which more functionality should be added.

  2. Define the corresponding implementation class name the TAFR needs to call. This class should extend from the original TAFR implementation class.

    For example:

    • Additional functionality has to be added to the ASNOutToASNIn_tafr_1 TAFR with an implementation class of ASNOutToASNInLocFromRibBOImpl.

    • A new class should be written for the additional functionality that extends from ASNOutToASNInLocFromRibBOImpl.

    • If additional functionality is needed for the transformation of the message, call the transform method of the ASNOutToASNInLocFromRibBOImpl class and write your own code/logic.


      Note:

      For information on how to write the implementation class., see the Metalink Note 837997.1, "How to Create a Custom TAFR Implementation."

  3. Write the implementation class for the TAFR.

  4. Create a rib-custom-tafr-business-impl.jar containing the implementation class and replace the same under <RIB_HOME>/application-assembly-home/rib-func-artifacts.


    Note:

    For more information on how to create the rib-custom-tafr-business-impl.jar, see the Metalink Note 837997.1, "How to Create a Custom TAFR Implementation."

  5. Replace the name of the implementation class with the new class name in the rib-tafr-adapters.xml as shown below. For example, if the name of the new class name is CustomASNOutToASNInLocFromRibBOImpl, the entry in tafr-adapters.xml should be:

    <message-driven id="ASNOutToASNIn_tafr_1" initialState="running" tafr-business-impl=" com.retek.rib.collab.tafr.bo.impl. <br>
    CustomASNOutToASNInLocFromRibBOImpl "  custom ="true"/>
    
  6. Run the rib-app-builder compiler: Run the rib-app-compiler.sh script from the <RIB_HOME>/application-assembly-home/bin directory to generate/assemble a rib-<app> and make it ready for deployment.

    cd <RIB_HOME>/application-assembly-home/bin
    
    sh rib-app-compiler.sh
  7. Run the rib-app-builder deployer: Run the rib-app-deployer.sh script from <RIB_HOME>/deployment-home/bin directory as follows.

    cd <RIB_HOME>/deployment-home/bin
    sh rib-app-deployer.sh -deploy-rib-app-ear rib-tafr

Verification of RIB Customizations

This section explains how to verify the various customizations using the RIB diagnostic and test tools, RDMT, the PL/SQL API simulator, and the Java EE API simulator.

These verification tests are described only from a RIB perspective and not as end-to-end testing. They should be considered only the first step in a process to move the customizations through the RIB life cycle.

The verification steps assume that these RIB tools have already been installed and are in working condition.

Verifying the New Message Type

To verify the addition of a new message type under a message family from a RIB perspective, complete the following steps:

  1. Log in to the RDMT main menu.

  2. Select menu option 3, PUB/SUB/TAFR Utilities Submenu.

  3. Publish a message using option 8, EJB Publish Utility.

  4. Provide the new message type when prompted for the <type> parameter.

  5. Use the sample message that was generated using the Artifact Generator tool after adding the new message type for the corresponding message family.

    Check the corresponding adapter's RIBLOGS to be sure the message was published successfully. The logs are written to the path, <rib-application_instance_home>/<rib-app>/logs/<rib-app>.

    For example, for /home/rib/product/10.1.3.3/OracleAS_1/j2ee/rib-rms-oc4j-instance/log/rib-rms, the RIBLOG file names are in the format, <adapter-instance-name>.rib.log.

    Example:

    Alloc_pub_1.rib.log
    ASNIn_sub_1.rib.log
  6. Enable the RIB Audit Logs for all the corresponding adapters involved in the message flow. The auditing feature logs the message as it passes through the RIB infrastructure. This helps the tracing of message content from publication to subscription, and all steps, such as a TAFR, in between.

  7. Check the RIB audit logs for that particular message family adapter (publisher, subscriber, and TAFR, if involved) and verify whether the new message type added is part of the message header. Also ensure that the message passes successfully through all the adapters involved in the particular message flow.

  8. Check whether the new message type was successfully consumed by the subscribing adapter.

Verifying the New Message Family

To verify the addition of a new message family in the RIB, complete the following steps.

  1. Once the RIB has been compiled and deployed (after adding new message family), check whether the new family adapters (publisher, subscriber, and TAFR, if involved) are visible through RIB Admin GUI.

    The RIB admin GUI can be accessed via the URL as below.

    http://<server>.us.oracle.com:<http-port>/rib-<app>-admin-gui/
    
    • Replace <server> with the name or IP address of the server in the environment where the rib-<app> deployed.

    • Replace <http-port> with the port number that the Oracle Application Server is listening on (for example, 7777).

    • Replace <app> with rms, tafr, rwms, sim, rpm, or aip.

  2. Log in to the RDMT main menu.

  3. Select menu option 3, PUB/SUB/TAFR Utilities Submenu.

  4. Publish a message using option 8, EJB Publish Utility.

  5. Provide the new message family when prompted for the <family> parameter.

  6. Use the sample message created by the Artifact Generator tool for the corresponding new message family.

  7. Check the corresponding adapter's RIBLOGS to be sure the message was published successfully. The logs are written to the path, <rib-application_instance_home>/<rib-app>/logs/<rib-app>.

    For example, for /home/rib/product/10.1.3.3/OracleAS_1/j2ee/rib-rms-oc4j-instance/log/rib-rms, the RIBLOG file names are in the format, <adapter-instance-name>.rib.log.

    Example:

    Foo_pub_1.rib.log
    Foo_sub_1.rib.log
  8. Enable the RIB Audit Logs for all the corresponding adapters involved in the message flow. The auditing feature logs the message as it passes though the RIB infrastructure. This helps the tracing of message content from publication to subscription, and all steps, such as a TAFR, in between.

  9. Check the RIB audit logs for the particular message family adapters (publisher, subscriber and TAFR, if involved) and verify whether the new message family added is part of the message header. Also ensure that the message passes successfully through all the adapters involved in the particular message flow.

Verifying the New Publishing Adapter

To verify the addition of a new publishing adapter for PL/SQL for Java EE applications, complete the following steps.

  1. Once the RIB has been compiled and deployed (after adding new publshing adapter), check whether the new publishing adapter is visible through RIB Admin GUI.

    The RIB admin GUI can be accessed through the URL below.

    http://<server>.us.oracle.com:<http-port>/rib-<app>-admin-gui/
    
    • Replace <server> with the name or IP address of the server in the environment where the rib-<app> is deployed.

    • Replace <http-port> with the port number that the Oracle Application Server is listening on (for example, 7777).

    • Replace <app> with rms, rwms, sim, rpm, or aip.

  2. Log in to the RDMT main menu.

  3. Select menu option 3, PUB/SUB/TAFR Utilities Submenu.

  4. Publish a message using option 8, EJB Publish Utility.

  5. Use the sample message created by the Artifact Generator tool for the corresponding message family.

  6. Check the corresponding publishing adapter's RIBLOGS to be sure the message was published successfully. The logs are written to the path, <rib-application_instance_home>/<rib-app>/logs/<rib-app>.

    For example, for /home/rib/product/10.1.3.3/OracleAS_1/j2ee/rib-rms-oc4j-instance/log/rib-rms, the RIBLOG file names are in the format, <adapter-instance-name>.rib.log.

    Example:

    Foo_pub_1.rib.log
    
  7. Enable the RIB Audit Logs for the corresponding publishing adapter involved in the message flow. The auditing feature logs the message as it passes though the RIB infrastructure. This helps the tracing of message content from publication to subscription.


    Note:

    To enable RIB Audit logs, see the section "RIB Logging" in the Oracle Retail Integration Bus Operations Guide.

  8. Check the RIB audit logs for that particular message family's publishing adapter and verify whether the message content is displayed correctly as published. Also ensure that the message passes successfully through all the adapters involved in the particular message flow.

Verifying the New Subscribing Adapter

To verify the addition of a new subscribing TAFR adapter for PL/SQL and Java EE applications, complete the following steps:

  1. Once the RIB has been compiled and deployed after adding new subscribing adapter, check whether the new subscribing adapter is visible through RIB Admin GUI.

    The RIB admin GUI can be accessed through the URL below.

    http://<server>.us.oracle.com:<http-port>/rib-<app>-admin-gui/
    
    • Replace <server> with the name or IP address of the server in the environment where the rib-<app> is deployed.

    • Replace <http-port> with the port number that the Oracle Application Server is listening on (for example, 7777).

    • Replace <app> with rms, rwms, sim, rpm, or aip.

  2. Log in to the RDMT main menu.

  3. Select menu option 3, PUB/SUB/TAFR Utilities Submenu.

  4. Publish a message using option 1, Publish Msg Utility, to the topic from which the newly added subscriber has to subscribe.

  5. Use the sample message created by the Artifact Generator tool for the corresponding message family.

  6. Check the corresponding subscribing adapter's RIBLOGS to check if the message was subscribed from the topic successfully. The logs are written to the path, <rib-application_instance_home>/<rib-app>/logs/<rib-app>.

    For example, for /home/rib/product/10.1.3.3/OracleAS_1/j2ee/rib-rms-oc4j-instance/log/rib-rms, the RIBLOG file names are in the format, <adapter-instance-name>.rib.log.

    Example:

      Foo_sub_1.rib.log
    
  7. Enable the RIB Audit Logs for the corresponding subscribing adapter. The auditing feature logs the message as it passes though the RIB infrastructure. This helps the tracing of message content from publication to subscription.

  8. Check the RIB audit logs for the particular message family's subscribing adapter and verify whether the message content is displayed correctly. Also ensure that the message is subscribed successfully by the subscribing adapter

Verifying the New TAFR Adapter

To verify the addition of a new TAFR adapter, complete the following steps:

  1. Once the RIB has been compiled and deployed after adding new TAFR adapter, check whether the new TAFR adapter is visible through RIB Admin GUI.

    The RIB admin GUI can be accessed via the URL as below.

    http://<server>.us.oracle.com:<http-port>/rib-tafr-admin-gui/
    
    • Replace <server> with the name or IP address of the server in the environment that has the rib-<app> deployed.

    • Replace <http-port> with the port number that the Oracle Application Server is listening on (for example, 7777).

  2. Log in to the RDMT main menu.

  3. Select menu option 3, PUB/SUB/TAFR Utilities Submenu.

  4. Publish a message using option 1, Publish Msg Utility, to the topic from which the newly added subscriber has to subscribe.

  5. Use the sample message created by the Artifact Generator tool for the corresponding message family.

  6. Check the corresponding TAFR adapter's RIBLOGS to be sure the message was subscribed by the TAFR from the particular topic and published to the next destination topic successfully. The logs are written to the path, <rib-application_instance_home>/rib-tafr/logs/rib-tafr.

    For example, for/home/rib/product/10.1.3.3/OracleAS_1/j2ee/rib-tafr-oc4j-instance/log/rib-tafr, the RIBLOG file names are in the format, <adapter-instance-name>.rib.log.

    Example:

    Foo_tafr_1.rib.log
    
  7. Enable the RIB Audit Logs for the corresponding TAFR adapter. The auditing feature logs the message as it passes though the RIB infrastructure. This helps the tracing of message content from publication to subscription.

  8. Check the RIB audit logs for the particular message family's TAFR adapter and verify whether the message content is displayed correctly.

Payload Customization

The customization of payloads gives a customer the ability to add/modify data which flows from one application to the other.


Note:

The Artifact Generator tool must be installed before performing any payload customizations. See the Oracle Retail Integration Bus Operations Guide for information on the installation and usage of the Artifact Generator tool.

Prerequisites

Individuals performing the tasks for payload customization should be familiar with the Artifacts Generator tool and have an understanding of the following:

  • The importance of payloads and how they fit into the suite of Oracle Retail applications.

  • The impact that customizing a payload has on other applications.

Recommendations

The following is a list of recommendations for ensuring successful payload customization.

  • Always back up the files that will be modified during customization in case they need to be restored.

  • When payloads are customized, the changes applied must also be made on the application side.

  • During customization, only optional elements should be added. The addition of mandatory elements to payloads can result in increased maintenance efforts.

  • Names of elements in XSDs must not be Java key words.

Adding Optional Elements to Payloads

To add of an optional element (simple type or complex type) to an existing message payload, complete the following steps:

  1. Edit the desired payload XSDs in the ./input-xsd directory of the Artifact Generator tool installation. Add the optional simple or complex element to the particular message family XSD and, if necessary, define the type.

    cd input-xsdvi ItemRef.xsd (make changes)
    

    For example, to add an optional simple element, "attr1," and a complex element, "ItemDtlRef," to ItemRef.xsd, the modification to ItemRef.xsd is as follows.

    <?xml version="1.0" encoding="UTF-8"?>
    <xs:schema elementFormDefault="qualified"
        targetNamespace="http://www.oracle.com/retail/integration/payload/ItemRef"
        xmlns="http://www.oracle.com/retail/integration/payload/ItemRef"
        xmlns:retailDoc="http://www.w3.org/2001/XMLSchema" xmlns:xs="http://www.w3.org/2001/XMLSchema">
    <xs:element name="ItemDtlRef">
            <xs:complexType>
                <xs:sequence>
                    <xs:element maxOccurs="unbounded" name="clearance_id" type="number10">
                    </xs:element>
                    <xs:element maxOccurs="unbounded" name="item" type="varchar225">
                    </xs:element>
                </xs:sequence>
            </xs:complexType>
     </xs:element>
     <xs:element name="ItemRef">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="item" type="varchar225"/>
            <xs:element name="attr1" type="number10" minOccurs="0"/>
            <xs:element maxOccurs="unbounded" minOccurs="0" ref="ItemDtlRef"/>
          </xs:sequence>
        </xs:complexType>
      </xs:element>
      <xs:simpleType name="varchar225">
        <xs:restriction base="xs:string">
          <xs:maxLength value="25"/>
        </xs:restriction>
      </xs:simpleType>
     <xs:simpleType name="number10">
        <xs:restriction base="xs:long">
         <xs:totalDigits value="10"/>
        </xs:restriction>
     </xs:simpleType>
    </xs:schema>
    
  2. Run the Artifact Generator to generate various functional artifacts.

    $GROOVY_HOME/bin/groovy GenArtifacts.groovy
    

    Each generated artifact is in the appropriate ./output*/dist folder, including:

    • rib-public-payload-database-object-types.zip

    • rib-public-payload-java-beans.jar

    • retail-public-bo-java-beans.jar

    • rib-public-payload-xml-samples.zip


    Note:

    See the Oracle Retail Integration Bus Operations Guide for information on how to use the Artifact Generator tool to generate artifacts.

  3. Copy the newly generated artifacts (listed above) from the appropriate ./output*/dist folders to the <RIB_HOME>/application-assembly-home/rib-func-artifacts/ directory.

  4. The artifact generator tool cannot be used to generate the rib-func-artifact.war. The file must be created manually as follows:

    1. Copy the rib-func-artifact.war from <RIB_HOME>/ application-assembly-home/rib-func-artifacts to <RIB_HOME>/tools-home/customization-workarea/ directory.

      cd <RIB_HOME>/application-assembly-home/rib-func-artifacts
      cp rib-func-artifact.war  <RIB_HOME>/tools-home/customization-workarea
      
    2. Extract only the XSD that must be modified from the copied rib-func-artifact.war, as shown below.

      jar -xvf rib-func-artifact.war payload/xsd/ItemRef.xsd
      
    3. Copy and replace the same modified payload XSD from ./input-xsd directory of the Artifact Generator tool installation program to the <RIB_HOME>/tools-home/customization-workarea/ payload/xsd directory .

      cd ArtifactGeneratorInstallation_directory/input-xsd
      cp ItemRef.xsd  <RIB_HOME>/tools-home/customization-workarea/payload/xsd
      

      After replacing the existing ItemRef.xsd with the changed ItemRef.xsd to the /payload/xsd directory of rib-func-artifact.war in the <RIB_HOME>/tools-home/customization-workarea/ directory, generate the new rib-func-artifact.war as shown below.

      cd  <RIB_HOME>/tools-home/customization-workarea
      jar -uvf rib-func-artifact.war payload/xsd/ItemRef.xsd
      
    4. Copy the generated rib-func-artifact.war from <RIB_HOME>/tools-home/customization-workarea to the <RIB_HOME>/application-assembly-home/rib-func-artifacts/ directory.

      cd <RIB_HOME>/tools-home/customization-workarea
      cp rib-func-artifact.war  <RIB_HOME>/application-assembly-home/rib-func-artifacts
      
    5. Run the rib-app-builder compiler: Run the rib-app-compiler.sh script from the <RIB_HOME>/application-assembly-home/bin directory to generate/assemble a rib-<app> and make it ready for deployment.

      cd <RIB_HOME>/application-assembly-home/bin
      sh rib-app-compiler.sh
  5. Run the rib-app-builder deployer: Run the rib-app-deployer.sh script from <RIB_HOME>/deployment-home/bin directory as follows.

    cd <RIB_HOME>/deployment-home/bin
    sh rib-app-deployer.sh -deploy-rib-func-artifact-war

    This step deploys the rib-func-artifact.war to the Java EE container.

    sh rib-app-deployer.sh -deploy-rib-app-ear rib-<app>
    

The rib-<app> is deployed to the Java EE container. Repeat this step for each rib-<app> in scope for this integration environment.


Note:

The <app> value must be rms, rwms, tafr, sim, aip, or rpm.

Adding a New Payload

The following steps must be completed to add a new XSD to a current set of payloads:

  1. Create a new XSD which conforms to the MetaSchema ie IntegrationMetaSchema.xsd. The artifact generater tool checks the validity of the schema before generating any artifacts. The artifact generater will fail if the XSD is not compliant with the MetaSchema.

  2. Drop the new XSD in here: ./input-xsd/ directory of the Artifact Generator tool installation.

    For example, if you create a XSD called "Foo.xsd", place it under ./input-xsd/.

  3. Run the Artifact Generator to generate various functional artifacts.

    $GROOVY_HOME/bin/groovy GenArtifacts.groovy
    

    Each generated artifact is in the appropriate ./output*/dist folder, including:

    • rib-public-payload-database-object-types.zip

    • rib-public-payload-java-beans.jar

    • retail-public-bo-java-beans.jar

    • rib-public-payload-xml-samples.zip

  4. Copy the newly generated artifacts (listed above) from the appropriate ./output*/dist folders to the <RIB_HOME>/application-assembly-home/rib-func-artifacts/ directory.


    Note:

    See the Oracle Retail Integration Bus Operations Guide for information on how to use the Artifact Generator tool to generate artifacts.

  5. The artifact generator tool cannot be used to generate the rib-func-artifact.war. The file must be created manually as follows:

    1. Copy the rib-func-artifact.war from <RIB_HOME>/ application-assembly-home/rib-func-artifacts to the <RIB_HOME>/tools-home/customization-workarea/ directory.

      cd <RIB_HOME>/application-assembly-home/rib-func-artifacts
      cp rib-func-artifact.war  <RIB_HOME>/tools-home/customization-workarea
      
    2. Copy the newly created XSD (Foo.xsd) to the /payload/xsd/ directory under <RIB_HOME>/tools-home/customization-workarea/ directory and update the rib-func-artifact.war.

      cd <RIB_HOME>/tools-home/customization-workarea
      jar -uvf rib-func-artifact.war payload/xsd/Foo.xsd
      
    3. Copy the generated rib-func-artifact.war from <RIB_HOME>/tools-home/customization-workarea to the <RIB_HOME>/application-assembly-home/rib-func-artifacts/ directory.

      cd <RIB_HOME>/tools-home/customization-workarea
      cp rib-func-artifact.war  <RIB_HOME>/application-assembly-home/rib-func-artifacts
      
  6. Run the rib-app-builder compiler: Run the rib-app-compiler.sh script from <RIB_HOME>/application-assembly-home/bin directory to generate/assemble a rib-<app> and make it ready for deployment.

    cd <RIB_HOME>/application-assembly-home/binsh rib-app-compiler.sh
    
  7. Run the rib-app-builder deployer: Run the rib-app-deployer.sh script from <RIB_HOME>/deployment-home/bin directory as follows.

    cd <RIB_HOME>/deployment-home/bin
    sh rib-app-deployer.sh -deploy-rib-func-artifact-war

    This deploys the rib-func-artifact.war to the Java EE container.

    sh rib-app-deployer.sh -deploy-rib-app-ear rib-<app>
    

The rib-<app> is deployed to the Java EE container. Repeat this step for all rib-<app> that is in scope for this integration environment.


Note:

The <app> value must be rms, rwms, tafr, sim, aip, or rpm.