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
Monday, February 4, 2008
Resubmission Feature
Posted by Ramesh Nittur at 2:40 AM
Labels: ERROR/Exception, Resubmission
Subscribe to:
Post Comments (Atom)
8 comments:
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?
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
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
Hi Kalyan,
This feature is already implemented and will be part of next production patch which is due sometime during next month.
Regards,
Dheeraj
Hi Kalyan,
This feature is already implemented and will be part of next production patch which is due sometime during next month.
Regards,
Dheeraj
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?
Resubmit utility can be invoked as a stand alone java application
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
Post a Comment