Ferramenta Contêiner de Controle
Fluxo de trabalho de exemplo
A ferramenta Contêiner de Controle tem um fluxo de trabalho de exemplo. Visite Exemplos de fluxos de trabalho para saber como acessar esse e muitos outros exemplos diretamente do Alteryx Designer.
Use os Contêineres de Controle para gerenciar a sequência na qual as ferramentas são executadas em seu fluxo de trabalho e garantir que as etapas do seu processo sejam executadas na ordem correta. Os Contêineres de Controle permitem usar informações sobre as ferramentas que são executadas tanto como informações de registro em log ou como dados a serem usados em seu fluxo de trabalho. Como resultado, você pode criar processos mais dinâmicos e complexos com base nessas informações de execução.
Além disso, os Contêineres de Controle permitem executar condicionalmente determinados blocos de lógica com base nos dados, sejam eles de outro Contêiner de Controle ou de outras ferramentas no fluxo de trabalho. Você não precisa criar uma orquestração condicional complicada por meio de ferramentas Desvio ou Runner ou de aplicativos encadeados.
Somente AMP
A ferramenta Contêiner de Controle é compatível apenas com o Alteryx Multi-threaded Processing (AMP) . Se você tentar executar essa ferramenta em um fluxo de trabalho em que o AMP esteja desabilitado, ela exibirá um erro.
Componentes da ferramenta
A ferramenta Contêiner de Controle tem duas âncoras: a entrada opcional "Controle" e a saída "Log".
Entrada "Controle" (opcional)
Os Contêiner de Controle têm uma âncora de entrada opcional. Use essa entrada para ativar o contêiner.
Se a âncora de entrada "Controle" não tiver uma conexão, o contêiner estará ativado. Nesse caso, o Contêiner de Controle atua como um Contêiner de Ferramentas, com a exceção de que envia para a saída mensagens pela âncora "Log" sobre as ações concluídas dentro dele.
Se a âncora de entrada "Controle" tiver uma conexão, o contêiner será ativado quando a conexão for fechada com pelo menos um registro de entrada*. Os metadados e o conteúdo do fluxo de dados não importam. A única coisa que importa é que pelo menos um registro esteja presente.
Nota
*Embora seja necessário um único registro para ativar um Contêiner de Controle, ele não executa as ferramentas dentro dele até que todos os registros passem pela âncora de entrada "Controle". Portanto, se você passar 1000 registros para o seu Contêiner de Controle, ele não executará as ferramentas dentro dele até receber todos os 1000 registros.
Saída "Log"
A saída "Log" gera todas as mensagens de log voltadas para o usuário para qualquer ferramenta no contêiner (incluindo outros contêineres contidos dentro dele). Você pode usar esses dados de mensagem como qualquer outro fluxo de dados no Designer. Por exemplo, você pode gravar essas informações de log em um arquivo ou analisá-las para executar uma lógica adicional.
Nota
Observe que as únicas mensagens exibidas nos dados da ferramenta Contêiner de Controle são aquelas que, de qualquer maneira, são exibidas pela grade de resultados. Por isso, ferramentas que não produzem mensagens na grade de resultados também não as produzem nos Contêineres de Controle.
Você sempre pode usar uma ferramenta Mensagem para criar e personalizar mensagens para ferramentas que não geram suas próprias.
O Contêiner de Controle registra uma mensagem de informações quando ele é ativado: "Contêiner de Controle ativado".
O contêiner então registra outra mensagem de informações quando processa todas as ferramentas contidas nele: "Contêiner de Controle concluído".
Em seguida, o contêiner fecha sua âncora de saída "Log". Observe que o contêiner pode enviar mensagens antes que todas as ferramentas dentro dele concluam a execução. Consulte a seção Considerações importantes sobre a ordem de execução para obter detalhes.
Isso significa que todos os fluxos de dados que saem do contêiner já terão sido fechados e que você terá a garantia de obter duas mensagens da saída "Log" se o contêiner tiver sido ativado. Se o contêiner estiver desabilitado, ele fechará sua saída "Log" sem enviar mensagens.
Como funcionam os Contêineres de Controle?
É importante observar que a ferramenta Contêiner de Controle se comporta de forma muito diferente da ferramenta Contêiner de Ferramentas . Ela usa um cenário booleano (verdadeiro/falso) para determinar se há um fluxo de dados conectado à âncora de entrada opcional "Controle" e se esse fluxo contém algum registro.
Se não houver um fluxo de dados conectado, o Contêiner de Controle atua como um Contêiner de Ferramentas, com a exceção de que ele envia mensagens para a sua âncora de saída "Log" sobre as ações que são executadas dentro dele. As mensagens seguem o mesmo comportamento das que você normalmente encontra na janela de resultados do Designer.
Se houver um fluxo de dados conectado à âncora de entrada "Controle", o Contêiner de Controle avalia se as ferramentas dentro dele devem ser executadas. Essa decisão depende de o contêiner receber ou não pelo menos um registro quando sua conexão de entrada é fechada.
Se um registro for recebido, o contêiner será ativado quando a conexão for fechada, assim que todos os registros passarem pela entrada.
Se a âncora "Controle" não receber registros, o contêiner só enviará para a saída os metadados em cache. Ele não passa mensagens e não executa as ferramentas dentro dele.
Contêiner de Controle desabilitado vs. Contêiner de Controle inativo
É importante observar a diferença no comportamento entre uma ferramenta Contêiner de Controle desabilitada e uma habilitada (mas inativa).
Ao desabilitar um Contêiner de Controle, o Designer ignora o contêiner (assim como todas as ferramentas contidas nele), além de não relatar nenhum erro de configuração para o contêiner ou quaisquer ferramentas dentro dele.
Quando seu Contêiner de Controle está habilitado, o Designer não sabe se deve ativá-lo até que você execute o fluxo de trabalho e a âncora de entrada do contêiner receba ou não registros.
O Designer precisa executar todas as verificações de pré-validação de fluxo de trabalho quando você executa o fluxo. Essa pré-validação gera erros dentro do Contêiner de Controle se as ferramentas contidas nele não estiverem configuradas corretamente, independentemente de esse contêiner ser ativado ou não por meio da âncora de entrada recebendo registros. Para evitar isso, certifique-se de que todas as ferramentas dentro de um Contêiner de Controle estejam configuradas corretamente, mesmo que esse contêiner não vá ser ativado como parte do fluxo de trabalho.
Considerações importantes sobre a ordem de execução
Em alguns cenários, as ferramentas dentro dos Contêineres de Controle podem enviar dados para fora do contêiner antes que todas as ferramentas dentro dele tenham concluído a execução e, como resultado, antes que o contêiner envie dados por meio de sua âncora de saída "Log". Isso pode acontecer quando ferramentas dentro do contêiner se conectam diretamente a ferramentas fora dele.
Para entender por que isso pode acontecer, é importante entender como o AMP processa os dados . O AMP envia dados entre ferramentas em pacotes de registros para minimizar o trabalho de sincronização entre as ferramentas e para garantir melhor desempenho. Se houver muitos registros que passam pelas ferramentas, os pacotes são preenchidos e devem ser enviados para as etapas posteriores.
Visão geral da ordem de execução
Como observado anteriormente, um Contêiner de Controle não executa as ferramentas dentro dele até receber todos os registros por meio de sua âncora de entrada "Controle". Se a âncora de entrada receber um grande número de registros por meio de múltiplos pacotes, o contêiner retém os pacotes em sua entrada até que receba todos eles. Quando recebe todos os pacotes, o contêiner é ativado.
Quando o contêiner é ativado, ele executa as ferramentas nele contidas. Se, durante esse processo, o contêiner transmitir dados para fora de seus limites, esses dados poderão sair do contêiner antes que a execução de todas as ferramentas dentro dele seja concluída. Isso depende de como o AMP Engine monta e coloca em sequência os pacotes de registros.
A âncora de saída "Log" do contêiner começa a coletar as mensagens para as ferramentas executadas nele assim que ele é ativado. Ela continua a coletar mensagens até que…
Um pacote de registros fique grande o suficiente para ser enviado para etapas posteriores, ponto em que o próximo pacote começa a ter suas mensagens coletadas.
O contêiner execute todas as ferramentas dentro dele e termine com a mensagem "Contêiner de Controle concluído".
Recomendações para garantir a ordem de execução
Com as informações acima em mente, se a ordem de execução for fundamental para o seu fluxo de trabalho, você deverá usar Contêineres de Controle adicionais para garantir que os registros que cruzam os limites do contêiner sejam sequenciados corretamente.
Lembre-se de que quando você conecta a âncora de saída de um Contêiner de Controle à âncora de entrada de outro, o segundo contêiner deve receber todos os registros por meio de sua âncora de entrada "Controle" antes de poder ser ativado e executar qualquer ferramenta dentro dele.
Para usar um exemplo simplificado, se você precisa ter certeza absoluta de que um processo não comece antes de outro ser concluído, use múltiplos Contêineres de Controle, como no exemplo 2 abaixo.
Exemplo 1
Esta configuração não garante que a ferramenta Mensagem irá aguardar até que todos os registros passem pela ferramenta Filtrar antes de iniciar, nem garante que todas as ferramentas tenham concluído sua execução no Contêiner de Controle (se outras ferramentas estivessem nele).
Exemplo 2
Esta configuração garante que a ferramenta Mensagem irá aguardar até que o Contêiner de Controle 2 receba todos os registros por meio de sua âncora de entrada "Controle" antes de iniciar. Isso só irá ocorrer quando a execução de todas as ferramentas no primeiro contêiner seja concluída e ele registre a mensagem "Contêiner de controle concluído".
Agrupar ferramentas em um contêiner
Há várias maneiras de agrupar ferramentas em um contêiner:
Selecione uma ou mais ferramentas na tela, clique com o botão direito do mouse sobre elas e escolha Adicionar a novo Contêiner de Controle .
Arraste a ferramenta Contêiner de Controle para a tela e coloque-a perto das ferramentas que você deseja agrupar. Pressione a tecla Ctrl do teclado para selecionar as ferramentas e, em seguida, arraste-as e solte-as no contêiner.
Para expandir ou recolher um contêiner, clique no ícone de expandir/recolher na parte superior direita dele.
Modificar o conteúdo de um contêiner
Para excluir um contêiner sem eliminar as ferramentas contidas nele, clique com o botão direito do mouse no contêiner expandido e escolha Excluir somente contêiner .
Para remover uma ferramenta de um contêiner, selecione-a e arraste-a para fora dele.
Desabilitar um contêiner
Desabilite um contêiner quando você não quiser executar uma seção ou um processo no fluxo de trabalho. O contêiner desabilitado permanece expandido na tela e é exibido esmaecido para indicar que não está ativo. As ferramentas dentro do contêiner não processam dados até que você o habilite novamente. Se o contêiner estiver desabilitado, ele fechará sua âncora de saída "Log" sem enviar nenhuma mensagem.
Há duas formas de desabilitar um contêiner:
Na janela Configuração do contêiner, marque a caixa de seleção Desabilitado .
Na tela, mova o controle deslizante do botão de alternância para a esquerda.
Você pode recolher um contêiner desabilitado para ocultar seu conteúdo. Para isso, clique no ícone de expandir/recolher dentro do contêiner.
Habilitar contêiner
Há duas formas de habilitar um contêiner:
Na janela Configuração do contêiner, desmarque a caixa de seleção Desabilitado .
Na parte superior esquerda do contêiner, mova o controle deslizante do botão de alternância para a direita.
Configurar a ferramenta
Depois que a ferramenta Contêiner de Controle estiver na tela do fluxo de trabalho, você poderá usar sua janela de configuração para fornecer um rótulo para o contêiner, modificar sua e desabilitá-lo, se necessário.
Na janela Configuração , insira um nome para o contêiner no campo Legenda ou clique duas vezes na caixa do contêiner na tela e digite o texto diretamente nessa caixa. O texto padrão é "Contêiner de Controle" seguido pelo ID da ferramenta exibido no campo ID .
Defina o tema de cores para o contêiner.
Clique em "..." ao lado das opções Cor do texto , Cor do preenchimento e Cor da borda e selecione uma cor da paleta ou insira valores RGB.
Em Transparência , insira um valor ou use as setas para cima e para baixo a fim de definir a transparência da cor.
Em Margem , selecione uma largura para alterar o espaço entre a borda do contêiner e as ferramentas contidas nele.
Para definir a cor de preenchimento padrão do contêiner...
Acesse Opções Configurações de usuário Editar configurações de usuário e selecione a aba Tela.
Em Configurações padrão da tela Contêineres defina os valores RGB desejados ou use o botão "..." para selecionar uma cor.
Clique em Salvar para salvar suas configurações.
Notas e limitações de compatibilidade
Ferramentas in-DB
As ferramentas da categoria No Banco de Dados funcionam dentro dos Contêineres de Controle. No entanto, uma conexão in-DB não pode cruzar o limite do Contêiner de Controle. Por exemplo, você não pode ter uma ferramenta Conectar In-DB fora de um Contêiner de Controle e conectá-la a uma ferramenta Filtrar In-DB dentro do contêiner.
Ferramentas de interface
Não há suporte para ferramentas da categoria Interface dentro de Contêineres de Controle. Você pode ter ferramentas de interface e Contêineres de Controle no mesmo fluxo de trabalho – as ferramentas de interface simplesmente não podem estar dentro desses contêineres.
Ferramentas Bloquear até Concluir
As ferramentas Bloquear até Concluir (BUD) não têm efeito quando estão em fluxos de trabalho que também contêm Contêineres de Controle. Se o seu fluxo de trabalho contiver ferramentas BUD e Contêineres de Controle, você receberá uma mensagem de erro e as ferramentas BUD serão tratadas como ferramentas de passagem (sem comportamento de sequenciamento).
Ferramentas de desvio
As ferramentas de desvio funcionam dentro dos Contêineres de Controle. Você deve seguir as regras comuns para o início e o fim do desvio, mas observe que se uma ferramenta Fim do Desvio estiver dentro de um Contêiner de Controle que nunca for ativado, o fluxo de dados será descartado.
Contêineres de Controle aninhados
Os Contêineres de Controle funcionam quando aninhados em outros Contêineres de Controle. No entanto, conexões em loop geram um erro. Por exemplo, você não pode conectar a saída "Log" de contêiner a uma ferramenta dentro dele mesmo.
Contêineres de Controle e macros
Os Contêineres de Controle funcionam dentro de macros. Ações de macro e de aplicativo são aplicadas antes da tradução XML. As macros também funcionam dentro de Contêineres de Controle.
Fluxo de trabalho de depuração
Os Contêineres de Controle não são atualmente compatíveis com o recurso "Fluxo de trabalho de depuração", acessível pela janela do designer de interface para aplicativos analíticos e macros. Um fluxo de trabalho de depuração que contenha Contêineres de Controle produzirá um erro.