Print Page

Monday, February 4, 2008

Resubmission Feature

Resubmission feature which is part of the latest patch.

Introduction

Oracle AS B2B is a B2B Product with very rich protocol stack and is based on Standard based Scalable Architecture managed through Oracle Application server. This product has a rich Exception handling framework to capture the error/Exception at various stages in the Engine, and send the exception message to IP_IN_QUEUE with B2BERRORUSER. With the increased customer base over the recent past, resubmission of error/Exception message in B2B is the key feature identified to be supported. There have been many best practices used by several of our customer to get the Exception message and to resubmit the business message using the Workflow driven BPEL Process. This is just an initial pilot project undertaken to provide the Resubmission feature out of the box. It is expected to go for multiple enhancements depending on the customer drive and the acceptance.

Use Case Addressed

1. Basic Resubmission feature with Retry count and Interval for both inbound and outbound.
2. Notification to B2B Administrator.
3. Resubmission based on message ID, Agreement and Status.
4. Payload based resubmission. This is ideally for error/Exception based on payload.
5. Outbound resubmission using IP_OUT_QUEUE and inbound Resubmission through Event queue. This will get the inbound message goes through all the layer of B2B as if it has come from Trading Partner.
6. Deletion of duplication message and correlation of business message with appropriate Acknowledgement.
7. Support Stacking feature to handle the B2B Downtime and Resubmission after the same.
8. Variable Resubmission interval.

Outbound Scenario
B2Bresubmit Utility runs in two modes.

Auto Mode:
B2Bresubmit Utility runs in infinite listening mode to IP_IN_QUEUE with B2BERRORUSER. For every exception message, it gets the messageID and uses InstanceMessageUtil to obtain the From Party, To Party, DocType , Revision and the payload . It uses the above information to enque the message to IP_OUT_QUEUE to be picked up by B2B.

Depending on the configured Retry Count and Interval it resubmit the message and send a notification to the configured email ID once after exhausting all the attempt to resubmit the message. Email subject contain the messageID and the body contain Error Description.


Variable Resubmission Interval

Be default the Retry Interval is constant for all the retry effort during resubmission. However there is an option to define variable resubmission Interval for every resubmission. This will enable the B2BAdministrator enough time to debug and bring up the partner server in case of any issues.

If the value for ResubmitWithInterval is set to true, the utility will resubmit every message with interval mentioned for the property

oracle.tip.adapter.b2b.data.ReSubmit.ResubmitIntervals.


In this example,

First resubmission will happen after 1 minutes of first failure
Second resubmission will happen after 1 minutes of first resubmission

Also ensure that the value for oracle.tip.adapter.b2b.data.ReSubmit.ReSubmitCount is same as number of intervals mentioned.
Manual Mode
B2Bresubmit utility resubmits messages based on
1. Message ID,
2. Agreement ID and Status.

MessageId based
Once after B2BAdministrator gets the notification for a failed resubmission, he will extract the messageID from the email, Identify the root cause of the problem by referring b2b.log/Report, fix the problem and use Resubmission utility in manual mode to resubmit the message based on messageID.
Agreement name and message status

Ideally this feature is used in Bulk Resubmission after the Trading partner Downtime and is based on Agreement name, Status, Start time and End time.

The typical way to execute is as below.

Example:

java oracle.tip.adapter.b2b.data.ReSubmit "2008/01/28 16:00" "2008/01/28 16:15" Agreement Error

The time format is: yyyy/MM/dd HH24:MI

Inbound Scenario

Inbound Resubmission is pretty much the same as Outbound with both Auto and Manual mode, however the resubmission is based on the event queue, which will enable the resubmission messages to go through the respective exchange layer as if it has come from Trading Partner.

Resubmission Configuration

Complete List of configurations used for this utility



8 comments:

Ahmad A. said...

Ramesh, it seems if you call the ReSubmit class with three parameters, the third is TP Name:

java oracle.tip.adapter.b2b.data.ReSubmit "2008/01/28 16:00" "2008/01/28 16:15" TPName

How many different parameter options are available for this utility?

Dheeraj Kumar M said...

Hi ,

The following are the various options available.

java oracle.tip.adapter.b2b.data.ReSubmit <from time> <to time> <AgrmtName> <Agrmt Status>

java oracle.tip.adapter.b2b.data.ReSubmit <from time> <to time> <TPName>

java oracle.tip.adapter.b2b.data.ReSubmit <MsgId>

java oracle.tip.adapter.b2b.data.ReSubmit <msg_id> <payload_path>

Along with these options for manual mode, it also has the automatic mode of resubmission

Anonymous said...

java oracle.tip.adapter.b2b.data.ReSubmit msg_id payload_path

doesn't seem to work , can you post some use cases for this option

Thanks,
Kalyan

Dheeraj Kumar M said...

Hi Kalyan,

This feature is already implemented and will be part of next production patch which is due sometime during next month.

Regards,
Dheeraj

Dheeraj Kumar M said...

Hi Kalyan,

This feature is already implemented and will be part of next production patch which is due sometime during next month.

Regards,
Dheeraj

Anonymous said...

Question: if we want to run the resubmit utility in auto mode, how is it started? Does it run as part of the B2B engine (i.e. in the B2BServer process), or should we start it as a stand-alone Java application?

Dheeraj Kumar M said...

Resubmit utility can be invoked as a stand alone java application

Dheeraj Kumar M said...

Resubmit utility is enhanced to resubmit messages based on direction also. The option of direction is used in following commands

java oracle.tip.adapter.b2b.data.ReSubmit <starttime> <endtime> <agreement> <messagestate> -direction <direction>

java oracle.tip.adapter.b2b.data.ReSubmit <starttime> <endtime> <tradingpartnerName> -direction <direction>

Note: direction can be outbound or inbound