Artigo
· Jul. 31 2min de leitura

Listando conexões dos itens da produção recursivamente

Se você trabalha com Produções, destacar as conexões entre Business Hosts é um recurso muito conveniente, permitindo aos desenvolvedores obter uma representação visual do fluxo de dados.

Esse recurso funciona por padrão com todos os Business Hosts do sistema. Se um usuário escreve seus próprios Business Services, Processes ou Operations, ele deve implementar o método OnGetConnections para que essa funcionalidade funcione com seus Business Hosts personalizados (ou usar as propriedades  Ens.DataType.ConfigNamepara as conexões).
Dito isso, o SMP mostra apenas a primeira camada de conexões do Business Host selecionado. Às vezes, precisamos obter conexões de conexões recursivamente para construir um grafo completo de fluxo de dados. Ou podemos precisar dessas informações de conexão para verificar quais sistemas downstream podem ser afetados por uma mudança upstream.Para fazer tudo isso, escrevi uma classe Utils.Connectionsque oferece o método GetConnectionsJSON Você pode passar um ID do Item ou Nome do Item, e ele retornará um objeto dinâmico contendo todas as conexões. Veja como funciona. Assumindo esta produção:


Você obterá este JSON para o serviço in.REST service (##class(Utils.Connections).GetConnections("in.Rest")):

{
  "in.REST":[
    {
      "EnsLib.HL7.SequenceManager":[
        "Ens.Alert",
        {
          "Router":[
            "Ens.Alert"
          ]
        },
        "in.BO",
        "s3.BusinessOperation"
      ]
    }
  ]
}

Cada item possui um array de conexões. Se uma conexão tiver conexões próprias, será um objeto com um array dentro; caso contrário, será apenas uma string.

Também existem queries SQL para obter conexões para um item ou listar todas as conexões para todos os itens:

SELECT Utils.Connections_GetConnections(ID)
SELECT * FROM Utils.Connections_ListConnections()

Código no GitHub.

Discussão (0)1
Entre ou crie uma conta para continuar