Version 9.6
 —  Registry Federations in CentraSite  —

Mapping UDDI Object IDs and tModels

This section describes how to maintain uniqueness of UDDI object IDs during the federation process, and how to map UDDI structures onto JAXR-based structures in the target registry.


Key Generator Processor

Each object in a UDDI registry has a unique ID. When an object is federated into a target registry, its ID still needs to be unique, i.e. it must not be a duplicate of an existing object in the target registry. The federation process allows you define your own keys for objects federated into CentraSite. Such keys are called publisher assigned keys.

The use of publisher assigned keys is activated in the federation process by using a so-called key generator that assigns key name domains to users who are publishers. This means that when a UDDI object is added to the CentraSite registry by a given user, the user-specific domain name is added to the UDDI object ID.

The use of key generators and publisher assigned keys is known from the UDDI standard.

The relationship between a user and the assigned domain name is maintained in a <process> element in the federation configuration file. This element has attributes that specify:

Example: The ID of an object in a UDDI registry is uddi:abcd1234-5678-9abc-def0-123456789abc. The domain associated with the user is "mydomain". When the object is federated to CentraSite, the object ID will be uddi:mydomain:abcd1234-5678-9abc-def0-123456789abc.

To add a key generator processor for federation, you have to modify the emit.xml file as follows:

Start of instruction setTo add a key generator processor for federation

  1. Configure the details of the target registry in the configuration file for which you want to add the key generator processor, as described in the section Creating a Federation Configuration File. Execute the add Federation command and provide a unique identifier for this target. This will configure the target for federation and add an entry for the federation route in emit.xml.

  2. Now open the emit.xml file. It will have the targets configured for federation. Locate the <pipeline> element that contains the attribute id="<unique_identifier>", the identifier that you provided in the previous step while executing the add Federation command.

  3. Include a <process> element immediately after <pipeline id="..." > but before <to uri="..." /> as shown:

    <pipeline id="<federationId>" ... >
    	<process ref="KeyGeneratorProcessor_<federationId>" />
    	<to uri="uddi://_<federationId>" ... />
    </pipeline>
    
  4. It is extremely important that you replace <federationId> with the unique identifier that you provided while executing the command. After you add the <process> element, you now have to add the following details after the <camelContext> element as shown:

    <camelContext>
    . . . .
    </camelContext>
    
    <bean id="KeyGeneratorProcessor_<federationId>" 
      class="com.softwareag.centrasite.federation.uddi.component.UddiKeyGeneratorProcessor" >
    	<property name="domainKey" value="<domainKey>" />
    	<property name="federationId" value="<federationId>" />
    </bean>
    
  5. The bean ID that you provide and the ref value in <process ref="..."> must be the same. The class name must not be modified and must be the same as provided in this example. Add the two properties <domainKey> for providing the domain name for the key generator and <federationId> to identify the federation route.

  6. Now execute add Federation with the same identifier and the same target details as before. The newly added processor has to be configured for federation and this will accomplish it.

You might wish to remove the key generator processor at a later stage. To do this, proceed as follows:

Start of instruction setTo remove a key generator processor

  1. Remove the <process> element and the <bean> element that you added in steps 3 and 4 above.

  2. Execute the add Federation command after this so that the processor will not be used when you trigger the federation.

If the key generator processor and the taxonomy processor (see related section) are both defined, the key generator processor runs first, then the taxonomy processor runs.

Top of page

Taxonomy Processor

Objects in a UDDI registry are classified according to concepts within tModels. In a registry that supports JAXR, such as CentraSite, objects are classified according to categories within taxonomies. The mapping from a UDDI classification to a JAXR-based classification uses the key value and tModel name that are contained in the keyedReference element of the UDDI object. The tModel name is used as the taxonomy name, and the key value is used as the category name. If the taxonomy or category do not already exist in the target registry, they are created automatically.

The concept and classification scheme are stored in tModel and keyed references of the tModel in CategoryBags of UDDI objects. The taxonomy processor processes the keyedReferences from categoryBags of the UDDI objects and creates the concepts and classification schemes in the target registry.

For example, the following are two <keyedReference> elements from a tModel's <categoryBag>

<keyedReference keyValue="sap.com/LMINTERNALAGENT" 
		 keyName="" 
		 tModelKey="uddi:uddi.sap.com:categorization:software-component"/>

<keyedReference keyValue="I12" 
		 keyName="" 
		 tModelKey="uddi:uddi.sap.com:categorization:business-system"/>

The tModelKey in the keyedReference points to a tModel. The taxonomy processor checks if this tModel can be mapped to a taxonomy in JAXR. This check is done on the basis of the UDDI to JAXR-based mapping standard. Please refer to the JAXR standard for information on how this mapping works. If the tModel can be identified as a taxonomy in JAXR according to the mapping standard, then the tModel corresponding to the tModelKey is published as a taxonomy (ClassificationScheme) in the target registry. The keyValue corresponds to concepts (or categories) in the taxonomy. So the above keyedReferences will create the following taxonomy/concept hierarchy in the target registry:

uddi-sap:softwareComponent
 |
 +-- sap.com
      |
      +-- LMINTERNALAGENT

uddi-sap:businessSystem
 |
 +-- I12

To add a taxonomy processor, you have to edit the emit.xml file and add a few details. Follow the instructions as given below:

Start of instruction setTo add a taxonomy processor

  1. Configure the details of the target registry in the configuration file for which you want to add the taxonomy processor, as described in the section Creating a Federation Configuration File. Execute the add Federation command and provide a unique identifier for this target. This will configure the target for federation.

  2. Now open the emit.xml file from the above mentioned location. It will have the targets configured for federation. Locate the <pipeline> element with the attribute id="<unique_identifier>", the identifier that you provided in the previous step while executing the add Federation command.

  3. Include a <process> element immediately after <pipeline id="..." ...> but before <to uri="..." /> as shown:

    <pipeline id="<federationId>" . . . . >
    	<process ref=" TaxonomyProcessor_<federationId>" />
    	<to uri="uddi://_<federationId>" . . . . />
    </pipeline>
    
  4. In case you want to configure both the key generator and the taxonomy processor, you have to provide the key generator <process> element first and the taxonomy processor <process> element next as shown:

    <pipeline id="<federationId>" ... >
    	<process ref=" KeyGeneratorProcessor_<federationId>" />
    	<process ref=" TaxonomyProcessor_<federationId>" />
    	<to uri="uddi://_<federationId>" ... />
    </pipeline>
    
  5. It is extremely important that you replace <federationId> with the unique identifier that you provided while executing the command. After you add the <process> element, you now have to add the following details after the <camelContext> element as shown:

    <camelContext>
    . . . .
    </camelContext>
    
    <bean id="TaxonomyProcessor_<federationId>" class="com.softwareag.centrasite.federation.uddi.component.UddiTaxonomyProcessor" >
    	<property name="csUri" value="<csUri>" /> 
    	<!-- Ex: http://<host>:<port>/CentraSite/CentraSite -->
    	<property name="federationId" value="<federationId>" />
    </bean>
    
  6. The bean ID that you provide and the "ref" value in <process ref="..."> must be the same. The class= name must not be modified and must be the same as provided in this example. Add the two properties "csUri" for providing the Registry URL for the processor and "federationId" to identify the federation route.

  7. Now execute add Federation with the same identifier and the same target details as before. This configures the newly added processor for federation.

You might wish to remove the taxonomy processor at a later stage. To do this, proceed as follows:

Start of instruction setTo remove a taxonomy processor

  1. To remove the taxonomy processor, remove the <process> element and the <bean> element that you added in steps 3 (or 4) and 5.

  2. Execute the add Federation command after this so that the processor will not be used when you trigger the federation.

If the key generator processor (see related section) and the taxonomy processor are both defined, the key generator processor runs first, then the taxonomy processor runs.

Top of page