Cross Reference table

Hi,

any body working with cross refrence ,what exactly it ment for in webMethods ES .please provide a sample scenario .

Regards

raghu

Cross referencing is used to prevent you from propagating system dependent unique ids across every system in your integration.

For example if you are integrating an Oracle system with Clarify. Oracle uses primary keys in combination with the table to ensure uniqueness whereas Clarify uses globally unique object ids.

When the clarify side of the integration receives an event that was published from the Oracle side of the integration, how will you check if you have already received the event and that this should be an update in Clarify rather than an insert? You don’t want to store the oracle primary key in Clarify and vice versa. For two systems it might seem to be ok, but when your integration grows to include many systems, then each system will have many different kinds of ids.

The solution is to create integration wide unique ids, also called Canonical ids, that you use when you create the canonical events/documents for publication. The cross references are used to map your system dependent ids to the canonical ids.

Example:
1 - Oracle side creates a canonical id and makes sure there is an entry from the oracle id to the canonical id in the cross reference table.
2 - Oracle side publishes canonical event
3 - Clarify side receives canonical event
4 - Clarify side checks the crossreference table to see if there is a mapping from the canonical id to the siebel id. If one exists then the canonical contains update information and if one does NOT exist then the canonical contains new information.
5 - Update or insert the Clarify side with the information from the canonical.
5 - Insert a crossreference entry mapping the canonical id to the correct clarify id, if one did not already exist.

One word of warning. wM is overloading the use of the cross reference tables with latching functionality. This is to prevent circular dependencies and subsequent infinite loops. Because they are using the same set of tables for more than one purpose, the cross reference tables are sometimes more difficult to understand than they should be.

Have fun,
Andreas

1 Like

I believe that this is one of better explanations of x-refs. And I’ve heard a lot. Nice Andreas, very nice !

FKATSD Shyam
~Formal Known As Technical Support Dude~

I have also added an articled on the use of the cross reference table for latching in November’s Ezine. I approached the issue of latching from two prospectives. 1. Using the cross-reference table. 2. Using an in-memory alternative devloped by Crossvale.

As a follow-up, Conor’s article can be read at [url=“wmusers.com”]wmusers.com.

I am trying to sue some of the Operation Templates and EntUtilCore (getCanonical, create Record etc)within Enterprise Integrator 5., but I’m experiancing some problems with this. I configured the lated JDBC adapter 4.6 (Enterprise Edition) and renamed it ENTUTIL so that I can use the code provided, but there seems to be a problem with the variables. Does anyone have any experance in this.

Tim, the out-of-the-box webMethods cross referencing integrations components require the Oracle (intelligent) adapter NOT the JDBC adapter.

Regards,

Wayne

Is it possible to use key cross referencing over multiple integration servers? Will they share the cross reference data automatically? Or do I need to point the JDBC-pool for the Xref functional alias to the same database instance for all integration servers?

Ulf, we haven’t set this up yet for multiple integration servers, however here is what I think you will have to do if you want to share key cross referencing across multiple integration servers:

a) Setup the xref table(s)

b) Setup the xref connection pool for each integration server. Each connection pool should point to the same (xref) database.

b) make sure each integration server has your xref package(s). This package (or packages) will contain the flow/java services to read/update the xref tables.

That should be it.
Disclaimer: this sounds like the logical way to set this up…however there could be a better way.

I will let you know for sure when we set this up
If you try it I’d love to hear how it works out.

Regards,

Wayne