Links - Amazon Cloud Directory

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

Links

Um link é uma borda direcionada entre dois objetos que define uma relação. No momento, o Cloud Directory oferece suporte aos seguintes tipos de link.

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

Um link filho cria uma relação pai-filho entre os objetos que conecta. Por exemplo, na ilustração acima, o link filho b conecta os objetos 001 e 003. Os links filho definem a hierarquia no Cloud Directory. Os links filho têm nomes quando participam da definição do caminho do objeto para o qual o link aponta.

Um link de anexo aplica um objeto de política de nó folha a outro nó folha ou a um objeto de nó. Os links de anexo não definem a estrutura hierárquica do Cloud Directory. Por exemplo, na ilustração acima, o link de anexo aplica a política armazenada no objeto do nó folha da política 006 no objeto do nó 002. Cada objeto pode ter várias políticas anexadas, mas não pode ser anexada mais que uma política de qualquer determinado tipo de política.

Os links de índice fornecem pesquisa de informações sofisticadas com base em um objeto de índice e seus atributos indexados definidos, habilitando dessa forma travessias de árvore e pesquisas nas árvores de diretórios. Conceitualmente, os índices são semelhantes aos nós com filhos: Os links para os nós indexados são rotulados de acordo com os atributos indexados, em vez de receberem um rótulo quando o filho está anexado. No entanto, os links de índices não são bordas pai-filho e têm seu próprio conjunto de operações da API de enumeração. Para obter mais informações, consulte Indexação e pesquisa.

Os links tipados permitem que você estabeleça uma relação entre os objetos ou nas hierarquias do Cloud Directory. Em seguida, você pode usar esses relacionamentos para consultar informações, como quais usuários têm o dispositivo "xyz" ou quais dispositivos são de propriedade do usuário "abc".

Você pode usar links tipados para modelar relacionamentos entre diferentes objetos no diretório. Por exemplo, na ilustração acima, considere a relação entre o objeto 004, que representa um usuário, e o objeto 005, que representa um dispositivo.

Podemos usar um link tipado para modelar uma relação de propriedade entre os dois objetos. Podemos adicionar atributos ao link tipado para representar o custo de uma compra, seja o dispositivo alugado ou comprado. Há dois tipos de atributos associados a links tipados:

  • Atributos baseados em identidade – um atributo de um link tipado que o diferencia de outros links (por exemplo, links filho, de anexo ou de índice). Cada faceta do link tipado define um conjunto ordenado de atributos de identidade. A identidade de um link tipado é o ID do objeto de origem, um identificador de faceta (tipo), os valores de seus atributos de identidade (definidos pela faceta) e o ID do objeto de destino. Os identificadores devem ser exclusivos em um único diretório.

  • Atributos opcionais – um atributo que armazena características de rastreamento sobre o link tipado que não são relacionadas à identidade do link. Por exemplo, um atributo opcional pode identificar a data em que o link tipado foi estabelecido pela primeira vez ou quando ele foi modificado pela última vez.

Assim como com objetos, você deve criar uma faceta de link tipado usando a API CreateTypedLinkFacet para definir a estrutura do link tipado e seus atributos. As facetas de links tipados exigem um nome de faceta exclusivo e um conjunto de atributos associados ao link. Ao criar a estrutura do link tipado, você pode definir um conjunto ordenado de atributos na faceta do link tipado. Para visualizar um esquema de exemplo de links tipados, consulte Documento de esquema com links digitados.

Os atributos de links tipados podem ser usados quando você precisa executar qualquer uma das seguintes ações:

  • Permitir a filtragem de links tipados de entrada e de saída. Para obter mais informações, consulte Listagem de links tipados.

  • Representar a relação entre dois objetos.

  • Rastrear dados administrativos sobre o link tipado, como a data em que o link foi criado.

Considere o seguinte ao decidir se os links tipados são os corretos para seu caso de uso:

  • Os links tipados não podem ser usados na especificação de objeto com base em caminho. Em vez disso, você deve selecionar links tipados usando as operações da API ListOutgoingTypedLinks ou ListIncomingTypedLinks.

  • Os links tipados não participam de operações da API LookupPolicy ou ListObjectParentPaths.

  • Links tipados entres os dois mesmos objetos e na mesma direção não podem ter os mesmos valores de atributos. Isso pode ajudar a evitar links tipados duplicados entre os mesmos objetos.

  • Os atributos adicionais podem ser usados quando você deseja adicionar informações opcionais.

  • O tamanho combinado de todos os valores de atributos de identidade é limitado a 64 bytes. Para obter mais informações, consulte Entre os limites do Amazon Cloud Directory.

Artigo do blog Cloud Directory relacionado

A identidade é o que define exclusivamente se um link tipado pode existir entre dois objetos. A exceção é quando você conecta dois objetos em uma direção com exatamente os mesmos valores de atributos. Os atributos devem ser configurados como REQUIRED_ALWAYS.

Links tipados que são criados de diferentes facetas de links tipados nunca entram em conflito um com o outro. Por exemplo, considere o seguinte diagrama:

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

  • O objeto 001 tem links tipados e atributos (A1 e A2) com os mesmos valores de atributos (x1 e x2) indo para objetos diferentes (002 e 003). Essa operação teria êxito.

  • Os objetos 002 e 003 têm um link tipado entre eles. Essa operação falharia porque dois links tipados na mesma direção com os mesmos atributos não podem existir entre objetos.

  • Os objetos 001 e 003 têm dois links tipados entre eles com os mesmos atributos. Contudo, como os links vão para direções diferentes, essa operação teria êxito.

  • Os objetos 002 e 003 têm links tipados entre eles com o mesmo valor para A1, mas com valores diferentes para A2. A identidade do link tipado considera todos os atributos, portanto, essa operação teria êxito.

Você pode adicionar regras a atributos de link tipado quando desejar adicionar restrições aos atributos do link. Essas regras são equivalentes às regras em atributos de objeto. Para obter mais informações, consulte Regras para atributos.

O Cloud Directory fornece operações da API que você pode usar para selecionar links tipados de entrada ou de saída em um objeto. Você pode selecionar um subconjunto específico de links tipados em vez de iterar sobre cada link tipado. Você também pode especificar uma faceta de link tipado específica para filtrar somente os links tipados desse tipo.

Você pode filtrar links tipados na ordem que os atributos estão definidos na faceta do link tipado. Você pode fornecer filtros de intervalo para vários atributos. Ao fornecer intervalos a uma seleção de links tipados, todos os intervalos inexatos devem ser especificados no final. Todos os atributos sem intervalo especificado são supostos corresponderem ao intervalo inteiro. Os filtros são interpretados na ordem dos atributos definidos na faceta do link tipado, não na ordem em que são fornecidos a qualquer chamada da API.

Por exemplo, no diagrama a seguir, considere um Cloud Directory que é usado para armazenar informações sobre funcionários e suas capacidades.

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

Vamos supor que modelamos as capacidades de nossos funcionários com um link tipado chamado EmployeeCapability, que é configurado com três atributos de string: Status, Role e Created. Os seguintes filtros são compatíveis nas operações da API ListIncomingTypedLinks e ListOutgoingTypedLinks.

  • Faceta = EmployeeCapability, status = Active, função = Driver

    • Seleciona funcionários ativos que são motoristas. Esse filtro inclui duas correspondências exatas.

  • Faceta = EmployeeCapability, status = Active, função = Driver, criação = 05/31/18

    • Seleciona os funcionários ativos que são motoristas e cujas facetas foram criadas em ou depois de 31 de maio de 2018.

  • Faceta = EmployeeCapability, status = Active

    • Seleciona todos os funcionários ativos.

  • Faceta = EmployeeCapability, status = Active, função = A a M

    • Seleciona funcionários ativos com funções que começam com A a M.

  • Faceta = EmployeeCapability

    • Isso seleciona todos os links tipados do tipo EmployeeCapability.

Os seguintes filtros NÃO seriam compatíveis:

  • Faceta = EmployeeCapability, status entre A a C, função = Driver

    • Esse filtro não é permitido porque todos os intervalos devem aparecer no final do filtro.

  • Faceta = EmployeeCapability, função = Driver

    • Esse filtro não é permitido porque o intervalo de status implícito não é uma correspondência exata e não aparece no final da lista de intervalos.

  • Status = Active

    • Esse filtro não é permitido porque a faceta do link tipado não está especificada.

Você pode criar facetas de link tipado de duas maneiras. Você pode gerenciar as facetas de links tipados em chamadas individuais da API, incluindo CreateTypedLinkFacetDeleteTypedLinkFacet e UpdateTypedLinkFacet. Você também pode carregar um documento JSON que represente seu esquema em uma única chamada da API PutSchemaFromJson. Para obter mais informações, consulte Formato do esquema JSON. Para visualizar um esquema de exemplo de links tipados, consulte Documento de esquema com links digitados.

Os tipos de alterações permitidas em fases diferentes de ciclo de vida de desenvolvimento do esquema são semelhantes às alterações que são permitidas para a manipulação de facetas de objetos. Os esquemas no estado de desenvolvimento são compatíveis com qualquer alteração. Os esquemas no estado publicado são imutáveis e nenhuma alteração é compatível. Somente certas alterações são permitidas em esquemas que são aplicados a um diretório de dados. Depois de definir a ordem e os atributos em uma faceta de link tipado aplicada, essa ordem não pode ser alterada.

Duas outras operações de API listam facetas e seus atributos:

Depois que uma faceta de link tipado foi criada, você estará pronto para começar a criar e interagir com links tipados. Para anexar e desanexar links tipados, use as operações da API AttachTypedLink e DetachTypedLink.

O TypedLinkSpecifier é uma estrutura que contém todas as informações para identificar exclusivamente um link tipado. Nessa estrutura você pode localizar TypedLinkFacet, SourceObjectID, DestinationObjectID e IdentityAttributeValues. Esses são usados para especificar exclusivamente o link tipado que está sendo operado. A operação da API AttachTypedLink retorna um especificador de link tipado, enquanto a operação da API DetachTypedLink aceitar um como entrada. De maneira semelhante, as operações da API ListIncomingTypedLinks e ListOutgoingTypedLinks fornecem especificadores de links tipados como saída. Você também pode criar um especificador de link tipado a partir do zero. A lista completa de operações da API relacionadas a links tipados, inclui o seguinte:

nota

As referências de atributos e a atualização de links tipados não são compatíveis. Para atualizar um link tipado, você deve removê-lo e adicionar a versão atualizada.