Links - Amazon Cloud Directory

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

Links

Un enlace es un borde dirigido entre dos objetos que define una relación. Cloud Directory admite actualmente los siguientes tipos de enlace.

Diagram showing node objects connected by various link types, including child, attachment, index, and typed links.

Un enlace secundario crea una relación principal-secundario entre los objetos que conecta. Por ejemplo, en la ilustración anterior, el enlace secundario b conecta los objetos 001 y 003. Los enlaces secundarios definen la jerarquía en Cloud Directory. Los enlaces secundarios tienen nombres cuando participan en la definición de la ruta del objeto al que apunta el enlace.

Un enlace de adjunto aplica un objeto de política de nodo de hoja a otro nodo de hoja o a un objeto de nodo. Los enlaces de adjunto no definen la estructura jerárquica de Cloud Directory. Por ejemplo, en la ilustración anterior, el enlace de adjunto aplica la política almacenada en el objeto de nodo de hoja de política 006 en el objeto de nodo 002. Cada objeto puede tener varias políticas adjuntas, pero se puede adjuntar más de una política de cualquier tipo de política dado.

Los enlaces de índice permiten buscar información completa en función de un objeto de índice y los atributos indexados definidos, permitiendo de este modo recorridos rápidos y búsquedas dentro de los árboles de directorio. Conceptualmente, los índices son similares a los nodos con hijos: Los enlaces a los nodos indexados se etiquetan de acuerdo con los atributos indexados, en lugar de recibir una etiqueta cuando se adjunta el objeto secundario. No obstante, los enlaces de índice no son extremos principal-secundario, sino que tienen su propio conjunto de operaciones API de enumeración. Para obtener más información, consulte Indexación y búsqueda.

Los enlaces con tipo le permiten establecer una relación entre objetos dentro o entre las jerarquías en Cloud Directory. A continuación, puede utilizar estas relaciones para consultas de información como, por ejemplo, Qué usuarios tienen el dispositivo 'xyz' o Cuáles son los dispositivos que posee el usuario 'abc'.

Puede utilizar enlaces con tipo para modelar relaciones entre diferentes objetos en su directorio. Por ejemplo, en la ilustración anterior, considere la relación entre el objeto 004, que representa un usuario y el objeto 005, que representa un dispositivo.

Podríamos utilizar un enlace con tipo para modelar una relación de propiedad entre los dos objetos. Se podrían añadir atributos al enlace con tipo para representar el costo de una compra o si el dispositivo es alquilado o comprado. Existen dos tipos de atributos asociados a enlaces con tipo:

  • Atributos basados en identidad: un atributo de un enlace con tipo que lo distingue de otros enlaces (por ejemplo, enlaces secundarios, de adjunto, de índice). Cada faceta de enlace con tipo define un conjunto ordenado de atributos de identidad. La identidad de un enlace con tipo es el ID del objeto de origen, un identificador de faceta (tipo), los valores de sus atributos de identidad (definidos por su faceta) y el ID del objeto de destino. Los identificadores deben ser únicos dentro de un directorio único.

  • Atributos opcionales: un atributo que almacena las características de seguimiento acerca del enlace con tipo que no están relacionadas con la identidad del enlace. Por ejemplo, un atributo opcional podría identificar la fecha en que se creó por primera vez el enlace con tipo o cuándo se modificó por última vez.

Al igual que con los objetos, debe crear una faceta de enlace con tipo mediante la API CreateTypedLinkFacet para definir la estructura del enlace con tipo y sus atributos. Las facetas de los enlaces con tipo requieren un nombre de faceta único y un conjunto de atributos que se asocian al enlace. Al diseñar la estructura del enlace con tipo, puede definir un conjunto ordenado de atributos en la faceta del enlace con tipo. Para ver un esquema de muestra de enlaces con tipo, consulte Documento de esquema de enlaces con tipo.

Se pueden utilizar atributos de enlace con tipo si necesita realizar cualquiera de las siguientes acciones:

  • Permitir el filtrado de enlaces con tipo de entrada o salida. Para obtener más información, consulte Lista de enlaces con tipo.

  • Representar la relación entre dos objetos.

  • Realizar un seguimiento de datos administrativos sobre el enlace con tipo como, por ejemplo, la fecha en que se creó el enlace.

Tenga en cuenta lo siguiente al decidir si los enlaces con tipo son idóneos para su caso de uso:

  • Los enlaces con tipo no se pueden utilizar en la especificación de objetos basados en rutas. En su lugar, debe seleccionar enlaces con tipo mediante las operaciones API ListOutgoingTypedLinks o ListIncomingTypedLinks.

  • Los enlaces con tipo no participan en las operaciones API LookupPolicy o ListObjectParentPaths.

  • Los enlaces con tipo entre los dos mismos objetos y en la misma dirección puede que no tengan los mismos valores de atributo. Esto puede ayudarle a evitar enlaces con tipo duplicados entre los mismos objetos.

  • Los atributos adicionales se pueden utilizar cuando desee añadir información opcional.

  • El tamaño combinado de todos los valores de los atributos de identidad está limitado a 64 bytes. Para obtener más información, consulte Límites en Amazon Cloud Directory.

Artículo relacionado con el blog del Cloud Directory

La identidad es lo que define de forma exclusiva si un enlace con tipo puede existir entre dos objetos. La excepción es cuando conecta dos objetos en una dirección con los mismos valores de atributos. Los atributos deben configurarse como REQUIRED_ALWAYS.

Los enlaces con tipo que se crean a partir de distintas facetas de enlace con tipo nunca entran en conflicto unos con otros. Por ejemplo, fíjese en el siguiente diagrama:

Diagram showing three node objects connected by typed links, with multiple identity attributes.

  • El objeto 001 tiene enlaces con tipo y atributos (A1 y A2) con los mismos valores de atributos (x1 y x2) que van hacia diferentes objetos (002 y 003). Esta operación sería correcta.

  • Los objetos 002 y 003 tienen un enlace con tipo entre ellos. Esta operación daría error porque no pueden existir entre objetos dos enlaces con tipo en la misma dirección con los mismos atributos.

  • Los objetos 001 y 003 tiene dos enlaces con tipo entre ellos con los mismos atributos. Sin embargo, dado que los enlaces van en diferentes direcciones, esta operación sería correcta.

  • Los objetos 002 y 003 tienen enlaces con tipo entre ellos con el mismo valor para A1, pero distintos valores para A2. La identidad de los enlaces con tipo tiene en cuenta todos los atributos, por lo que esta operación sería correcta.

Puede añadir reglas a los atributos de enlaces con tipo si desea añadir restricciones a los atributos de los enlaces. Estas reglas son equivalentes a las reglas en los atributos de objetos. Para obtener más información, consulte Reglas de atributos.

Cloud Directory proporciona operaciones API que puede utilizar para seleccionar enlaces con tipo entrantes o salientes desde un objeto. Puede seleccionar un subconjunto específico de enlaces con tipo en lugar de iterar en cada vínculo con tipo. También puede especificar una faceta concreta de enlace con tipo para filtrar solo los enlaces de ese tipo.

Puede filtrar los enlaces con tipo según el orden en el que se definen los atributos en la faceta del enlace con tipo. Puede proporcionar filtros por rango para varios atributos. Al proporcionar rangos para una selección de enlaces con tipo, cualquier rango inexacto debe especificarse al final. Cualquier atributo sin un rango especificado, se supone que coincide con todo el rango. Los filtros se interpretan en el orden de los atributos que se definen en la faceta del enlace con tipo, no en el orden que se proporcionan en cualquier llamada a la API.

Por ejemplo, en el siguiente diagrama, imagine un Cloud Directory que se utilice para almacenar información sobre empleados y sus habilidades.

Organizational hierarchy diagram showing Root, Employees, Offices, and their relationships.

Imaginemos que modelamos las habilidades de nuestro empleado con un enlace con tipo denominado EmployeeCapability, que se configura con tres atributos de cadena: Status, Role y Created. Los siguientes filtros se admiten en las operaciones API ListIncomingTypedLinks y ListOutgoingTypedLinks.

  • Faceta = EmployeeCapability, Estado = Active, Rol = Driver

    • Selecciona los empleados activos que son conductores. Este filtro incluye dos coincidencias exactas.

  • Faceta = EmployeeCapability, Estado = Active, Rol = Driver, Creado = 05/31/18

    • Selecciona los empleados activos que son conductores y de quién son las facetas que se crearon a partir del 31 de mayo de 2018.

  • Faceta = EmployeeCapability, Estado = Active

    • Selecciona todos los empleados activos.

  • Faceta = EmployeeCapability, Estado = Active, Rol = A a M

    • Selecciona los empleados activos con roles desde A hasta M.

  • Faceta = EmployeeCapability

    • Esto selecciona todos los enlaces con tipo del tipo EmployeeCapability.

NO se admitirían los siguientes filtros:

  • Faceta = EmployeeCapability, Estado entre A y C, Rol = Driver

    • Este filtro no está permitido porque los rangos deben aparecer al final del filtro.

  • Faceta = EmployeeCapability, Rol = Driver

    • Este filtro no está permitido porque el rango de estado implícito no es una coincidencia exacta y no aparece al final de la lista de rangos.

  • Estado = Active

    • Este filtro no está permitido porque la faceta de enlace con tipo no está especificada.

Puede crear facetas de enlaces con tipo de dos modos. Puede administrar las faceta de enlaces con tipo a partir de llamadas a API, incluidas CreateTypedLinkFacet, DeleteTypedLinkFacet y UpdateTypedLinkFacet. También puede cargar un documento JSON que represente el esquema en una única llamada a la API PutSchemaFromJson. Para obtener más información, consulte Formato de esquemas JSON. Para ver un esquema de muestra de enlaces con tipo, consulte Documento de esquema de enlaces con tipo.

Los tipos de cambios permitidos en diferentes fases del ciclo de vida de desarrollo del esquema son similares a los cambios permitidos para la manipulación de las facetas de objetos. Los esquemas en el estado de desarrollo admiten cualquier cambio. Los esquemas en el estado publicado son inmutables y no se admite ningún cambio. Solo se permiten determinados cambios en los esquemas que se aplican a un directorio de datos. Una vez que define el orden y los atributos en una faceta de enlace con tipo aplicado, ese orden no se puede cambiar.

Otras dos operaciones API enumeran las facetas y sus atributos:

Una vez que se ha creado una faceta de enlace con tipo, está listo para empezar a crear e interactuar con enlaces con tipo. Para adjuntar y separar enlaces con tipo, utilice las operaciones API AttachTypedLink y DetachTypedLink.

El TypedLinkSpecifier es una estructura que contiene toda la información para identificar de forma exclusiva un enlace con tipo. Dentro de esa estructura, puede encontrar TypedLinkFacet, SourceObjectID, DestinationObjectID e IdentityAttributeValues. Se utilizan para especificar de forma exclusiva el enlace con tipo en el que se está operando. La operación API AttachTypedLink devuelve un especificador de enlace con tipo, mientras que la operación API DetachTypedLink acepta uno como entrada. De forma similar, las operaciones API ListIncomingTypedLinks y ListOutgoingTypedLinks proporcionan especificadores de enlace con tipo como salida. También puede crear desde cero un especificador de enlace con tipo. La lista completa de operaciones API relacionadas con enlaces con tipo incluye lo siguiente:

nota

No se admiten referencias de atributo ni la actualización de enlaces con tipo. Para actualizar un enlace con tipo, debe eliminarlo y añadir la versión actualizada.