Claves de entidad de registro UDDI versión 3
La especificación UDDI Versión 3 amplía el espacio disponible para las claves. Las claves de entidad pueden ser cualquier URI (Universal Resource Identifier) que siga el esquema UDDI recomendado. En función de la política de registro, tanto el registro UDDI como el editor de la entidad pueden asignar claves.
Las claves de entidad son identificadores que se utilizan para controlar entidades en un registro UDDI. Para cada entidad businessEntity, businessService, bindingTemplate o tModel se genera o asigna un identificador exclusivo cuando se publica por primera vez en el registro de UDDI. Dentro de un registro dado, una clave debe ser única. Para UDDI Versión 1 y Versión 2, el espacio está limitado a un UUID (Universal Unique Identifier). Para UDDI versión 3, las claves de entidad pueden ser cualquier URI que siga el esquema de UDDI recomendado.
Para UDDI versión 3, dependiendo de la política de registro, tanto el registro UDDI como el editor de la entidad pueden asignar claves. Estas diferencias generan problemas para mantener la exclusividad de las claves y la gestión del espacio de claves.
Esquema de UDDI
El registro de IBM UDDI Versión 3 implementa el esquema de UDDI recomendado, tal como se indica en la sección 4.4 de la especificación UDDI Versión 3. (http://uddi.org/pubs/uddi_v3.htm). Este esquema define el formato de las claves, los caracteres válidos y el concepto de espacio de claves.
En el registro UDDI versión 3, una clave es cualquier URI y tiene un límite de 255 caracteres. En el siguiente diagrama se muestran los distintos tipos de claves dentro del esquema de claves UDDI:

- uuidKey contiene dos señales, el uddi obligatorio y un <UUID>. Estas claves aseguran la exclusividad a través del algoritmo de UUID.
- Las claves domainKey contienen dos señales, el uddi obligatorio y un nombre de dominio. Estas claves son para crear espacios de clave adicionales que se excluyen mutuamente.
- Las claves derivedKey son claves compuestas que se basan en una subclave que es cualquier clave uddiKey, y una señal adicional, kss, que es una serie específica de la clave que diferencia las claves. Un editor puede asignar la señal kss, o la señal kss puede calcularse a través de un algoritmo (UUID).
Exclusividad de claves y espacio de claves raíz de registro
Puede configurar instancias del registro UDDI como registro raíz o como registro afiliado.
Los registros raíz definen su propio espacio de claves raíz definiendo su propio generador de claves raíz. Esta acción define el espacio de claves total que gestiona el registro. Todas las claves que genera el registro se encuentran en este espacio de claves. Si la política lo permite, los editores pueden solicitar subdivisiones de este espacio de claves publicando nuevas entidades tModel de generador de claves con el formato <generadorclavesraíz>:<identificadorSubdivisión>:generadorclaves. Los editores pueden incluir claves proporcionadas por el proveedor en solicitudes de publicación subsiguientes que se encuentren en su subdivisión de espacio de claves asignado, <generadorclavesraíz>:<identificadorSubdivisión>:<kss>.
Para que no se produzcan conflictos entre las claves, los registros afiliados deben establecer su generador de claves raíz enviando primero una solicitud tModel:keyGenerator al registro raíz al que desean estar afiliados y luego deben utilizar esta subdivisión del espacio de claves del registro raíz como su propio generador de claves raíz. Este proceso garantiza que no haya conflictos entre las claves generadas o aceptadas por un registro afiliado y otras claves del espacio de claves del registro raíz.
Para mantener la exclusividad de las claves, se aplican normas sencillas. El registro sólo genera claves nuevas en el espacio de claves definido por su propio generador de claves. El registro sólo acepta claves proporcionadas por el editor que se encuentran en subdivisiones que son propiedad del editor, es decir, como resultado de una solicitud de publicación anterior de tModel tModel:keygenerator que ha sido satisfactoria.
Ejemplo sencillo para un registro raíz privado:
with a Root keygenerator:
uddi:aPrivateRegistryKeySpaceIdentifier:keygenerator
genera claves de entidad en el formato:
uddi:aPrivateRegistryKeySpaceIdentifier:<uuid>
en función de la política, acepta solicitudes de tModel:keygenerator de editores
para subdivisiones de 'nivel superior' con el formato:
uddi:aPrivateRegistryKeySpaceIdentifier:aPublisherSubdivisionIdentifier:
keygenerator
Publicación de solicitudes tModel:keygenerator para subdivisiones de espacio de claves
En función de la política, un editor puede enviar una solicitud para utilizar por su cuenta una subdivisión de nivel superior del espacio de claves del registro raíz. La política puede especificar si el registro da soporte a las claves proporcionadas por el editor y si las titularidades de usuario de un editor determinado permiten al editor enviar solicitudes para espacio de claves.
Además de subdivisiones de nivel superior del espacio de claves del registro raíz, un editor puede crear también subdivisiones adicionales del espacio de claves.
uddi:aPrivateRegistryKeySpaceIdentifier:aPublisherSubdivisionIdentifier:
a:keygenerator
Para que otra solicitud de subdivisión sea satisfactoria, el editor que ha solicitado, y que posee, la entidad tModel para la subdivisión anterior debe realizar la solicitud. En el ejemplo anterior, el editor es uddi:aPrivateRegistryKeySpaceIdentifier:aPublisherSubdivisionIdentifier:keygenerator).
Publicación con una clave suministrada por el editor
Después de que un editor solicita correctamente una subdivisión del espacio de claves de un registro raíz, dicho editor debe establecer y mantener su propio esquema para asegurarse de que las claves generadas para utilizarlas como claves suministradas por el editor en solicitudes de edición posteriores son exclusivas dentro de la subdivisión.
Los esquemas válidos necesitan generar claves que sean claves derivadas exclusivas dentro de la subdivisión del espacio de teclas que se ha asignado, por ejemplo, incluyendo un índice numérico (incrementado) exclusivo.
uddi:aPrivateRegistryKeySpaceIdentifier:aPublisherSubdivisionIdentifier:
a:keygenerator
las claves válidas son:
uddi:aPrivateRegistryKeySpaceIdentifier:aPublisherSubdivisionIdentifier:a:1
uddi:aPrivateRegistryKeySpaceIdentifier:aPublisherSubdivisionIdentifier:a:2