Diretrizes gerais para Workflow Studiofluxos, subfluxos e ações
Crie, execute, solucione problemas e monitore o. Workflow Studiocomponentes de forma mais eficaz. Use estas diretrizes para otimizar o desempenho do Workflow Studiocomponentes.
Visão geral do Workflow Studio
Integre a criação, a configuração e o monitoramento do fluxo de trabalho em uma única experiência de página. Consolide playbooks, fluxos, ações, tabelas de decisão e integrações em um ambiente de design.
Desenvolvimento de aplicações
Ao projetar uma ação ou um fluxo, use estas diretrizes gerais.
- Crie uma aplicação personalizada para armazenar fluxos e ações.
- Defina permissões da aplicação para compartilhar ou restringir o acesso aos dados da aplicação.
- Conceda aos desenvolvedores de aplicações acesso a. Workflow Studio.
- Publique aplicações personalizadas no repositório de aplicações para implantar fluxos e ações em outras instâncias.
Fluxos
Os fluxos devem ser coleções de trabalho curtas, modulares e reutilizáveis. Se eles levarem mais de uma hora para serem executados, provavelmente serão muito longos e podem ser mais eficientes.
Todas as diretrizes gerais que se aplicam a fluxos também se aplicam a. subfluxos .
- Evite lógica de negócios conflitante ou duplicada
-
As automações podem ser criadas com o Designer de fluxo, regras de negócios, fluxos de trabalho e Hub de integração. Antes de começar a usar Workflow Studio , certifique-se de entender como existe Now Platformas automações funcionam. Desative as automações antes de substituí-las por Workflow Studiofluxos e ações. Consulte Visão geral da arquiteturapara saber como Workflow Studiofunciona no Now Platform.
Revisão Fluxos , Subfluxos e. Ações documentação, se necessário.
- Determine se o fluxo precisa de um gatilho ou entrada de variável
- Os fluxos sempre são executados quando as condições do gatilho são atendidas, e os gatilhos sempre fornecem os mesmos dados que a entrada para fluxos. Se você precisar de entrada de variável para iniciar um fluxo, crie um subfluxo .
- Reutilize a lógica de negócios
- Crie um conjunto de operações reutilizáveis como um subfluxo que pode ser usado em vários fluxos.
- Conceda funções de fluxo para acessar dados protegidos por função e preservar informações do usuário
- As funções de fluxo ajudam a manter as permissões para seus fluxos simples. Use funções de fluxo para preservar as informações do usuário e conceder acesso aos dados, em vez de executar um fluxo como o usuário do sistema. A adição de funções de fluxo também dá acesso a dados adicionais que um fluxo iniciado pelo usuário geralmente não tem. As funções concedidas se aplicam somente ao fluxo. Eles não se aplicam ao usuário que iniciou o fluxo.
- Use a lógica de fluxo ou um gatilho baseado em programação para controlar o tempo do fluxo
- A lógica de fluxo ou gatilhos baseados em programação ajudam a otimizar o desempenho de seus fluxos. Não use o. gs.sleep() método para aguardar em um fluxo. . gs.sleep() o método impede que o thread execute outro trabalho. Para executar um fluxo em um horário específico, use um gatilho baseado em programação. Para pausar um fluxo por uma duração específica, use Aguarde uma duração ou aguarde a condição lógica de fluxo.
- Evite dependências
- Ramificações paralelas que dependem umas das outras paralisam um fluxo quando uma ramificação precisa aguardar a saída de outra ramificação. Em vez de criar ramificações paralelas em um fluxo, chame um subfluxo e retorne os resultados para o fluxo principal.
- Contadores de loop de escopo
-
Os loops de script não têm um número máximo de iterações, portanto os loops são executados infinitamente quando não há uma condição de saída válida.
Para garantir que haja uma condição de saída válida, contadores de loop de escopo em scripts em linha ou em etapas de script em uma ação.Adicionar
varparapara (i: 0; i menor comprimento; i maior que):para (var i: 0; i menor comprimento; i maior que) - Loops de limite para cada e Fazer até a 1000 iterações
- Iterações com 1000 ou mais loops podem levar à memória problemas de ter que armazenar detalhes de execução e registros de contexto.
- Defina o máximo de registros em Pesquisar registros.
- Evite mudar a propriedade sn_flow_designer.max_iterations, que o padrão é 1000.
- Para loops aninhados, cada loop tem seu próprio número máximo de iterações.
- Para grandes quantidades de processamento de dados, considere fazer lotes em lotes menores.
- Para importações em massa, considere importações simultâneas .
- Use a QuickAPI para execuções mais rápidas (alternativa de regra de negócio)
-
- API rápida as execuções são muito mais rápidas, mas há menos capacidade de depuração.
- As execuções da QuickAPI em primeiro plano são executadas na sessão do usuário como o usuário que chamou o fluxo.
- As execuções da QuickAPI em segundo plano são executadas em um thread em segundo plano e são executadas na sessão do usuário do "sistema".
- Use os loops Fazer até em vez de chamar fluxos de si mesmos
- A recursão direta em que um fluxo chama a si mesmo não é permitida e erros são emitidos. A recursão indireta em que o fluxo A chama o fluxo B, que chama o fluxo A, é permitido até três vezes. Em vez de chamar um fluxo recursivamente, use a lógica de fluxo Fazer até para continuar trabalhando em registros até que uma determinada condição seja atendida.
- Execute fluxos em segundo plano
- A execução de fluxos em segundo plano permite Threads de IU a ser liberado em vez de pausar a sessão do usuário até que a execução do fluxo seja concluída. Por padrão, os fluxos são executados de forma assíncrona em segundo plano. A execução de fluxos em segundo plano permite que os usuários continuem trabalhando na IU enquanto o fluxo é executado.
- Evite a lógica de fluxo que aguarda após coletar uma saída grande
- O uso de uma carga grande imediatamente após a recuperação pode ajudar a evitar problemas de memória. Em vez de armazenar uma carga grande na memória, adicione ações para processar a carga. Quanto mais cedo você processar uma carga recuperada, mais cedo o sistema poderá liberar memória para processar outras ações.
- Minimize s. witching entre ambientes
- Constantemente alternando entre eles e. MID As etapas do servidor em um fluxo podem levar a atrasos no processamento . Para minimizar o risco de atrasos, limite a alternância entre instância e MID a apenas uma vez.
- Inclua registros sys_complex_object gerados pelo fluxo em conjuntos de atualizações
- Ausente dados complexos os esquemas podem causar problemas de execução. Certifique-se de incluir registros sys_complex_object gerados pelo fluxo nos conjuntos de atualizações. Em vez de criar manualmente conjuntos de atualizações, considere transferir fluxos de uma instância para outra usando o repositório de aplicações.
- Os fluxos de chamada de um script quando você precisa de um gatilho personalizado
- Se nenhum dos gatilhos existentes atender às suas necessidades de negócios, você poderá criar um script para iniciar um fluxo quando as condições de gatilho personalizadas forem atendidas. Em vez de criar um fluxo com um gatilho desnecessário, considere criar um subfluxo, que não tenha um gatilho. Use seu script para fornecer as entradas de subfluxo necessárias somente quando as condições de script forem atendidas. Chamar um subfluxo em vez de um fluxo evita a possibilidade de as condições do gatilho de fluxo serem atendidas e executar o fluxo inesperadamente.
- Evite implantar fluxos de versão mais recentes em instâncias em versões mais antigas
- Workflow Studio o não oferece suporte à implantação de fluxos de versão mais recentes em instâncias executadas em versões anteriores. Perigo:O modelo de dados de fluxo pode mudar entre as versões, o que pode impedir a execução de fluxos mais recentes ou produzir resultados inesperados ao executar em instâncias de versões anteriores. Antes de implantá-las, faça upgrade de suas instâncias para que estejam nas mesmas versões de lançamento.
- Desative a emissão de relatórios de fluxo na produção
- Desabilite a quantidade de memória necessária para executar fluxos Emissão de relatórios de fluxo . O relatório de fluxo armazena informações de configuração e tempo de execução da página Detalhes da execução. Esses relatórios são bons para solução de problemas, mas exigem que uma grande quantidade de dados seja retida na memória e no banco de dados. Por padrão, a emissão de relatórios de fluxo está desabilitada e o sistema só gera detalhes de execução quando você testa manualmente um fluxo ou uma ação. Em vez disso, você pode usar arquivos de log, que ainda estão disponíveis quando a emissão de relatórios está desativada.
- Reduza a quantidade de memória consumida em fluxos com loop aninhado
- Quando a emissão de relatórios estiver ativada, defina com.snc.process_flow.reporting.iteration.lastn com um valor "1" para reduzir as quantidades de memória que as iterações de loop anteriores consomem. Quanto mais iterações você relatar, mais memória será necessária.
Subfluxos
Diretrizes gerais que se aplicam a. fluxos também se aplicam a subfluxos.
Os motivos para usar um subfluxo em vez de um fluxo incluem o seguinte:
- Determine se o fluxo precisa de um gatilho ou entrada de variável
- Os fluxos sempre são executados quando as condições do gatilho são atendidas. Os gatilhos sempre fornecem os mesmos dados que a entrada para fluxos. Se você precisar de entrada de variável para iniciar um fluxo, crie um subfluxo .
- Reutilize a lógica de negócios
- Crie um conjunto de operações reutilizáveis como um subfluxo que pode ser usado em vários fluxos.
- Configure valores de entrada diferentes para cada chamada
- Configure os valores de entrada de um subfluxo de forma diferente sempre que chamá-lo. Por exemplo, projete um subfluxo para aceitar diferentes tipos de registro como uma execução de entrada. Reutilize este subfluxo de registro genérico em vez de gravar um fluxo específico para cada tipo de registro.
- Melhore o desempenho e a legibilidade de fluxos grandes
-
Use subfluxos quando um fluxo exceder 25 ações. 50 é o número máximo de ações especificado pela propriedade do sistema sn_flow_designer.max_actions, mas limite um fluxo a 25 ações para obter o melhor desempenho.
- Passar entradas e saídas com subfluxos
- Chame subfluxos se quiser passar entradas e saídas. Use subfluxos se quiser especificar as entradas disponíveis para um subfluxo quando ele for iniciado ou se quiser especificar as saídas disponíveis para o fluxo primário após o término de um subfluxo.
- Acionar vários fluxos em um único evento versus usar subfluxos paralelos
-
- Use subfluxos paralelos se houver saídas inter-relacionadas ou alguma ação precisar ser realizada quando todas estiverem disponíveis. Caso contrário, será mais simples acionar vários fluxos.
- Para configurar subfluxos paralelos, inicie cada subfluxo sem aguardar e use a condição Aguardar para aguardar que cada subfluxo seja terminal (concluído, erro, cancelado)
- Use fluxos dinâmicos se você tiver vários subfluxos com funcionalidade semelhante
- Os fluxos dinâmicos permitem que você compartimente seus processos aplicando um modelo para lidar com as entradas de vários subfluxos semelhantes. A compartimentalização permite distinguir entre subfluxos que executam funções semelhantes, como subfluxos para IntegrationHub spokes.
- Evite o limite de 10 itens no processo de manipulação de erros
- Em vez de forçar seu processo de manipulação de erros a se ajustar a um limite de 10 itens, chame os subfluxos, que podem conter muito mais itens. Você também pode usar as saídas de subfluxo para acionar a automação em outros fluxos.
- Tome ações corretivas
- Em vez de recriar a mesma sequência de ações em vários fluxos, crie subfluxos reutilizáveis para corrigir erros nos dados do registro. Quando um erro de fluxo deixa os dados do registro em um estado indesejado, use subfluxos para corrigir esses registros. Você pode usar o manipulador de erros para identificar esses dados de registro como uma saída de subfluxo.
Gatilhos
Siga estas diretrizes gerais ao criar gatilhos de registro.
- Determine se o fluxo precisa de um gatilho ou entrada de variável
- Os fluxos sempre são executados quando as condições do gatilho são atendidas. Os gatilhos sempre fornecem os mesmos dados que a entrada para fluxos. Se você precisar de entrada de variável para iniciar um fluxo, crie um subfluxo .
- Adicione condições para especificar quais valores de registro iniciam seu fluxo
- Iniciar um fluxo somente quando necessário consome menos recursos do sistema do que iniciar um fluxo, pausá-lo e aguardar para retomar o fluxo até que uma condição de registro específica se aplique. Em vez de criar um fluxo que começa com uma ação Aguardar condição, redesenhe o fluxo para incluir a condição de espera como parte do gatilho de registro.
- Crie condições exclusivas para gatilhos de registro na mesma tabela
- Para evitar que os fluxos se substituam, crie condições exclusivas para cada fluxo em execução na mesma tabela. Se vários fluxos na mesma tabela forem o mesmo filtro, não há como saber a ordem em que os fluxos são executados. O uso de condições também ajuda a otimizar o desempenho do fluxo, retornando um conjunto de registros mais preciso e menor.
- Ignorar registros adicionados ou atualizados por conjuntos de importação e atualização
- Os gatilhos de registro ignoram registros adicionados ou atualizados aplicando um conjunto de atualizações ou importando um arquivo XML. Essas operações se aplicam a toda a aplicação ou tabela em vez de um registro individual.
- Substitua gatilhos de registro nas tabelas do Catálogo de serviços por gatilhos da aplicação Catálogo de serviços
- O Designer de fluxo não exibe mais tabelas do Catálogo de serviços como opções para gatilhos de registro. Em vez disso, crie fluxos que usam o tipo de gatilho da aplicação Catálogo de serviços.
Condições de espera
Siga estas diretrizes gerais ao criar fluxos que aguardam uma condição.
- Use gatilhos de registro em vez de condições de espera para iniciar fluxos
- Se você quiser que um fluxo seja executado somente quando determinadas condições de registro forem atendidas, crie um fluxo com um gatilho de registro em vez de iniciar e pausar um fluxo. Um fluxo em espera consome mais recursos do sistema do que um gatilho de fluxo.
- Cancelar fluxos cujas condições de retomada nunca podem ocorrer
- Evite que seus fluxos aguardem indefinidamente especificando condições de parada de fluxo com Encerrar lógica de fluxo de fluxo. Para liberar recursos do sistema, você também pode cancelar qualquer fluxo cujas condições de retomada nunca possam ser atendidas. Por exemplo, cancelar fluxos aguardando atualizações de registro de incidente em que o incidente relacionado está encerrado.
- Restrinja as condições de espera aos campos presentes na tabela atual
- A ação Aguardar condição só pode monitorar mudanças nos campos da tabela à qual o registro pertence. A ação não pode detectar mudanças nos campos em registros relacionados ou variáveis do catálogo. Por exemplo, se uma ação aguardar mudanças em um registro de incidente, ela não poderá detectar mudanças em um registro relacionado, como um item do catálogo ou registro de tarefa de mudança. Evite criar condições de espera que encaminhem pontos para outro registro, pois esses campos realmente pertencem ao registro relacionado. Evite criar condições de espera que dependem de variáveis do catálogo.
Fluxos ou subfluxos com fases
- Evite definir fases que dependem de uma para cada lógica de fluxo
- O Designer de fluxo impede que você adicione fases em um Para cada bloco. Você só pode adicionar fases antes ou depois de um Para cada bloco.
- Evite criar fases para os mesmos registros em fluxos ou subfluxos diferentes
- Um campo de fase sempre exibe as informações de fase fornecidas pelo último fluxo ou subfluxo a ser executado no registro de uma tabela. Se vários fluxos ou subfluxos forem executados nos mesmos registros, as fases definidas em um fluxo ou subfluxo poderão, em teoria, substituir as fases de outro fluxo ou subfluxo. Para evitar que vários fluxos ou subfluxos substituam as fases uns dos outros, defina condições de início ou gatilho exclusivas para cada fluxo ou subfluxo.
- Evite atualizar campos de fase de fora de um fluxo ou subfluxo
- Se você gerenciar fases com um fluxo ou subfluxo, evite atualizar diretamente os campos de fase de registro de fora do fluxo ou subfluxo. A atualização manual do valor de um campo de fase pode produzir resultados inesperados ou indesejados.
- Certifique-se de que cada fluxo em uma tabela tenha condições de gatilho exclusivas
- A adição de condições de gatilho exclusivas a cada fluxo garante que os fluxos sejam executados somente nessas condições e impede que as fases de um fluxo substituam as fases de outro fluxo. A especificação de condições de gatilho exclusivas facilita a solução de problemas de fluxos, limitando o número de execuções de fluxo que podem produzir mudanças de registro.
- Use fases de erro para se comunicar com o usuário
- O estado de erro de fluxo não afeta a execução do fluxo. Um fluxo continua em execução mesmo que atinja um estágio de erro. Use um bloco de lógica de fluxo condicional para definir a fase de erro e comunicar ao usuário que o estado da fase atual é Erro. Por exemplo, se uma aprovação não for aprovada dentro do limite obrigatório, você pode querer comunicar um erro ao usuário.
- Use a fase de erro para interromper o processamento de um fluxo
- Use um bloco de lógica de fluxo condicional para identificar quando um fluxo entra na fase de erro. Use a lógica de fluxo para parar de processar o fluxo ou executar algum tipo de ação de correção. Por exemplo, você pode querer mudar o estado do registro ou a atribuição quando um fluxo atinge um estado de erro.
Faça o seguinte na lógica de fluxo paralelo
- Evite criar dependências de dados entre caminhos
- Como um fluxo pode executar caminhos em qualquer ordem, evite criar dependências de dados entre caminhos separados. Por exemplo, não tem um caminho que cria um registro e outro caminho que atualiza o mesmo registro. O caminho do registro de atualização pode ser executado antes do caminho de criação do registro.
- Não compartilhe dados entre caminhos
- Workflow Studio impede que você arraste cápsulas de dados entre caminhos porque o sistema não pode determinar qual caminho será concluído primeiro para fornecer o valor de saída.
Lógica de fluxo de fluxos dinâmicos
- Use fluxos dinâmicos se você tiver vários subfluxos com funcionalidade semelhante
- Os fluxos dinâmicos permitem que você compartimente seus processos aplicando um modelo para lidar com as entradas de vários subfluxos semelhantes. A compartimentalização permite distinguir entre subfluxos que executam funções semelhantes, como subfluxos para IntegrationHub spokes.
- Certifique-se de que as entradas de subfluxo chamadas dinamicamente correspondam às entradas de fluxo do modelo
- O sistema gera um erro e o fluxo principal não pode ser executado corretamente quando as entradas de um fluxo dinâmico e um modelo de fluxo não correspondem.
- Use o contexto correto ao obter saídas de fluxo
- Um registro de contexto identifica exclusivamente a execução de fluxo. Se você executar um fluxo dinâmico várias vezes, haverá vários registros de contexto para escolher. Quando você usa o fluxo dinâmico várias vezes em um fluxo, certifique-se de escolher o registro de contexto correto da execução correta sempre que obter saídas de fluxo.
Cápsulas de dados da password2
- Atribua valores usando cápsulas de dados de senha existente (criptografia de 2 vias).
- Você só pode atribuir um valor a uma variável password2 selecionando uma cápsula de dados password2 existente. A seleção de valores de outros tipos de campo não é compatível. Workflow Studioapresenta uma mensagem de aviso quando tipos de cápsula de dados inválidos são selecionados.Nota:Você não pode inserir manualmente valores de senha (criptografia de 2 vias).
- Use variáveis de senha (criptografia de 2 vias) somente para tipos de campo válidos
- Workflow Studio Impede a seleção de cápsulas de dados password2 como o valor para tipos de campo inválidos. O sistema apresenta uma mensagem de aviso quando o campo é um tipo incompatível.Workflow Studio Somente cápsulas de dados password2 podem ser arrastadas para os seguintes tipos de campo:
- Campos do corpo do e-mail
- Campos HTML
- Campos de senha 2
- Variáveis de entrada do PowerShell
- Campos REST
- Variáveis
- Corpo da carga REST
- Parâmetros de consulta
- Cabeçalhos
- Valores de formulário de várias partes REST
- Valores codificados por URL do formulário
- Campos SOAP
- Cabeçalhos
- Envelope
Nota:Você não pode usar variáveis de senha (criptografia de 2 vias) como condiçõesO Designer de fluxo executa uma verificação de validação quando um usuário salva, publica ou testa ações e fluxos. Esta verificação mostra que um alerta para quaisquer cápsulas de dados caiu em tipos de campo restritos e impede a execução da ação ou fluxo. Atualize a ação ou o fluxo para remover a cápsula de dados inválida e tente executar a ação novamente.
- Configure módulos de criptografia para descriptografia
- Somente usuários com acesso válido ao módulo de criptografia podem descriptografar e exibir o conteúdo de variáveis password2. Para especificar o algoritmo de criptografia e quais funções podem acessar dados criptografados, consulte Criptografia de password2 com KMF .
Ações do temporizador de porcentagem de ANS
Siga estas diretrizes gerais ao criar fluxos que contenham ações do temporizador de percentual do Acordo de nível de serviço (ANS).
- Adicione ações do temporizador de porcentagem de ANS somente aos fluxos com um gatilho de tarefa de ANS
- Uma ação do Temporizador de porcentagem de ANS só pode ser executada quando o fluxo é iniciado a partir de um gatilho de Tarefa de ANS. Você não pode ativar um subfluxo que contém uma ação Temporizador de porcentagem de ANS.
- Crie lógica de fluxo condicional para valores de status esperados
- Use o valor de Status campo como uma condição para a lógica de fluxo. Crie lógica de fluxo para esperado Status valores como Concluído , Reparo e. Ignorado . Por exemplo, adicione um Se Bloco de lógica de fluxo para enviar uma notificação quando o Temporizador de porcentagem de ANS tiver um status de Concluído .
- Atribua a cada ação do temporizador de porcentagem de ANS um valor de porcentagem de espera cumulativa exclusivo
- Cada ação do temporizador de porcentagem de ANS calcula sua própria data/hora de término agendada usando seu valor de porcentagem de espera. Se você criar várias ações do temporizador de porcentagem de ANS, atribua a cada ação seu próprio valor de porcentagem de espera cumulativa exclusiva. Por exemplo, crie três ações separadas com diferentes valores de porcentagem concluída, como 25%, 50% e 75% concluída. Definir todas as três ações com o mesmo valor de porcentagem concluída, como 25%, faz com que os temporizadores sejam concluídos ao mesmo tempo.
- Copie fluxos existentes para fazer personalizações
- Reduza o tempo de desenvolvimento copiando os fluxos de ANS padrão e personalizando as cópias com sua própria lógica. Selecione um fluxo personalizado para executar a partir da definição de ANS. Consulte Crie uma definição de ANS .
Entradas dinâmicas
- Considere entradas dinâmicas para integrações de terceiros
- As entradas dinâmicas permitem criar fluxos que buscam dados dinamicamente de fontes externas. Em integrações de terceiros, as entradas dinâmicas podem fornecer valores de dados que pertencem a um endpoint específico. Para obter mais informações sobre como configurar integrações de terceiros com Workflow Studio, consulte IntegrationHub .
- Esteja ciente do tempo necessário para recuperar grandes quantidades de dados
- Por padrão, as entradas dinâmicas têm até 300 segundos para coletar dados antes de expirarem. Se sua ação de coleta de dados precisar de mais tempo para coletar dados, defina sn_flow_designer.sync_action_execution_timeout_in_secondspropriedade do sistema para um valor mais alto. No entanto, não use valores de tempo limite longo para fluxos interativos em que um usuário final deve inserir ou selecionar um valor.
- Esteja ciente dos erros de script
- Como todas as ações de coleta de dados usam uma etapa de script, possíveis erros podem ocorrer no script. Ao usar scripts para gerar variáveis JSON para suas entradas dinâmicas, você pode encontrar erros que impedem que as entradas recebam os valores JSON de que precisam. Quando ocorre um erro de script de entrada dinâmica, a seguinte mensagem de aviso pode ser exibida.
Figura 1. Mensagem exibida para erro de script - Limite as entradas do tipo de entradas dinâmicas a 40 valores de entrada
- Uma entrada do tipo entradas dinâmicas só pode renderizar um determinado número de entradas antes que o objeto JSON se torne muito grande para armazenar na memória. Limitar suas entradas dinâmicas a 40 valores de entrada minimiza as chances de você ficar sem memória e experimentar comportamentos inesperados, como erros de renderização ou truncamento de dados.
- Limite a saída JSON a 5000 itens de matriz para modelos dinâmicos e opções dinâmicas
- As entradas de modelo dinâmico e de escolha dinâmica só podem exibir até 5000 itens de matriz. Uma opção dinâmica só pode exibir até 5000 opções de lista de seleção, e um modelo dinâmico só pode exibir até 5000 valores de modelo de campo. Se sua ação de coleta de dados coletar dados para um modelo dinâmico ou uma opção dinâmica, restrinja o número máximo de itens de matriz retornados a 5000. O limite de 5000 itens da matriz impede que a instância tenha problemas de desempenho ao renderizar as escolhas ou valores de campo.
Saídas dinâmicas
- Use saídas dinâmicas para integrações de terceiros
- Use saídas dinâmicas para introspeção e buscar dados de sistemas externos durante o design de fluxo. Por exemplo, você pode especificar endpoints de serviço ou ações de chamada que interagem com APIs de endpoint específicas. Para obter mais informações sobre como configurar integrações de terceiros com Workflow Studio, consulte IntegrationHub .
- Anote o tempo necessário para recuperar grandes quantidades de dados
- Por padrão, as saídas dinâmicas têm até 300 segundos para coletar dados antes que o sistema as interrompa. Se sua ação de coleta de dados precisar de mais tempo para coletar dados, defina sn_flow_designer.sync_action_execution_timeout_in_secondspropriedade do sistema para um valor maior. Evite valores de tempo limite longo para fluxos interativos em que um usuário final espera inserir ou selecionar um valor.
- Esteja ciente dos erros de script
- Como todas as ações de coleta de dados usam uma etapa de script, possíveis erros podem ocorrer no script. Revise todos os scripts usados para gerar variáveis JSON porque erros de script podem impedir que as saídas recebam os valores JSON de que precisam. Quando ocorre um erro de script de saída dinâmica, a seguinte mensagem de aviso pode ser exibida.
Figura 2. Mensagem exibida para erro de script
[Tabela]. Dados
- Adicione um qualificador de referência para filtrar registros de lista
- Filtre os registros que a variável de lista exibe como opções válidas adicionando um qualificador de referência. O qualificador de referência atua como um filtro de lista obrigatório e faz com que a variável de lista exiba somente registros que correspondam às condições do qualificador de referência. Por exemplo, para exibir somente registros de incidentes ativos, adicione a condição do qualificador de referência [Ativo][É][Verdadeiro] .
- Evite selecionar registros padrão para ações destinadas à ServiceNow Store
- Evite selecionar registros padrão para uma lista, a menos que você saiba que todas as instâncias têm acesso aos registros selecionados. Os desenvolvedores do Spoke normalmente não têm acesso aos dados dos clientes que instalam sua ação personalizada. Se você quiser publicar uma ação personalizada na ServiceNow Store, talvez seja necessário fornecer registros padrão como dados de demonstração.
- Use Variáveis de lista em para cada lógica de fluxo
- Você pode usar uma variável de lista para especificar os registros a serem processados em cada lógica de fluxo. Cada lógica de fluxo ignora qualquer sem registro sys_id presente nos dados. Por exemplo, se a variável Lista contiver um endereço de e-mail, a lógica de fluxo o ignorará.
Regras de aprovação
- Forneça um valor padrão
- Crie ou selecione uma regra de aprovação como um valor padrão.
Funções de transformação
- Aplique funções de transformação a tipos válidos de cápsulas de dados para a entrada
- Certifique-se de verificar o tipo de cápsula de dados da entrada antes de aplicar uma função de transformação. A aplicação de uma função de transformação a um tipo de cápsula de dados inválido faz com que o sistema ignore a transformação. Um erro também ocorre se as funções de transformação produzirem resultados que o sistema não pode analisar. Por exemplo, ao transformar uma cadeia de caracteres em uma data, o sistema gera um erro se a transformação não produzir uma data válida.
- Confirme as funções de transformação aplicadas para várias entradas com o mesmo cápsula de dados
- Uma função de transformação cria um novo valor no tempo de execução para uma entrada específica e não muda a cápsula de dados original. Se você usar a mesma cápsula de dados em várias ações ou etapas, as funções de transformação devem, portanto, ser aplicadas a cada entrada individual t.
- Exiba os valores transformados finais nos detalhes da execução do fluxo
- Somente o valor transformado final, e não o valor de cada transformação aplicada, aparece em detalhes da execução do fluxo .
- Teste as funções de transformação para verificar se elas produzem os resultados esperados
- Certifique-se de que suas funções de transformação produzam os valores de tempo de execução esperados para as cápsulas de dados. Para obter mais informações, consulte Teste um fluxo e. Teste uma ação .
Scripts em linha
Siga estas diretrizes gerais para criar reutilizáveis e de fácil manutenção scripts em linha .
- Escreva script em linha para lógica pequena não reutilizável
- Use o formato de script em linha ou modifique os dados para entradas e casos de uso específicos. Para lógica reutilizável, crie uma ação ou subfluxo.
- Revise as funções de transformação disponíveis
- Workflow Studio fornece uma lista de funções de transformação padrão para conversões de dados e operações de formatação. Em vez de gravar e manter uma solução de script personalizada, selecione uma função de transformação existente, se houver uma disponível.
- Inclusões de script de chamada do script em linha
- Chame uma inclusão de script do seu script em linha para reduzir a quantidade de código que você escreve e também para manter o código comum em um único local. Use o construtor de classe para chamar sua inclusão de script. Para obter mais informações sobre como criar uma inclusão de script, consulte Script includes.
var si = new MyScriptInclude(); si.functionOne(); - Crie ações personalizadas ou subfluxos para código reutilizável em vez de script em linha
- Crie ações ou subfluxos personalizados para lógica de dados reutilizáveis ou complexos, como alterar o tipo de dados dos dados de origem. Você também pode querer fornecer ações personalizadas ou subfluxos para designers de fluxo que não se sentem confortáveis com o código.
- Evite duplicar a ação e a funcionalidade de fluxo
- Evite escrever script em linha que duplica a funcionalidade de ação e fluxo. Por exemplo, em vez de escrever script em linha para executar operações de registro, use as ações de linha de base Criar e atualizar registro.
- Evite mudanças de tipo de dados
- Evite erros de tempo de execução verificando se o script em linha fornece informações no mesmo tipo de dados que a entrada ou saída espera.
- Crie variáveis declarando-as com a palavra-chave var
- Use o.
varPalavra-chave para declarar variáveis para que elas permaneçam dentro do escopo JavaScript apropriado. Quando você cria uma variável atribuindo um valor a ela, o JavaScript pode anexá-la ao objeto global, o que pode resultar em valores de variáveis persistentes fora do escopo local e causando erros. - Saídas de registros de processo com para cada lógica de fluxo e o objeto de dados de fluxo
- O script em linha só pode acessar o. registros Saída de uma ação Pesquisar registros de para cada lógica de fluxo. Adicione uma ação Pesquisar registros ao fluxo para gerar a saída de registros. Adicione um para cada lógica de fluxo ao fluxo para processar cada registro na saída de registros. Crie uma referência de script em linha para cada lógica de fluxo usando os objetos fd_data e item. Por exemplo, esta referência pressupõe que para cada lógica de fluxo é o segundo item no contorno de fluxo
fd_data._2__for_each.item. - Use sugestões de digitação antecipada para gerar referências a dados de fluxo e ação.
- Crie referências para dados de fluxo e ação usando o objeto fd_data. O editor de scripts exibe sugestões de digitação antecipada para dados de fluxo e ação existentes quando você digita fd_data . Selecione uma sugestão para criar referências a dados de fluxo e ação. Nota:Consulte os dados de registro em um para cada lógica de fluxo usando item objeto.
- Contadores de loop de escopo
-
Os loops de script não têm um número máximo de iterações, portanto os loops são executados infinitamente quando não há uma condição de saída válida.
Para garantir que haja uma condição de saída válida, use contadores de loop de escopo em scripts em linha ou em etapas de script em uma ação.Adicionar
varparapara (i: 0; i menor comprimento; i maior que)e obterpara (var i: 0; i menor comprimento; i maior que)
Dados complexos
Siga estas diretrizes gerais para criar estruturas de dados reutilizáveis e de fácil manutenção.
- Minimize o número de níveis secundários na hierarquia
- Quanto mais níveis secundários uma estrutura de dados tiver, mais difícil será exibir e selecionar uma variável de dados na hierarquia. Embora você possa criar estruturas de dados com qualquer número de níveis secundários, torna-se difícil navegar e entender estruturas de dados com mais de sete níveis secundários. Para obter a melhor experiência do usuário, evite criar estruturas de dados com tantos níveis secundários que você deve rolar horizontalmente para vê-los e preenchê-los.
- Crie um objeto separado para cada tipo de dados de registro
- Mais Workflow Studioos dados são dados de registro, sejam de uma instância ou de um sistema externo. Este método de design garante que você saiba o que o objeto contém e de onde os dados vieram.
- Recriar estruturas de dados de registro
- Ao criar objetos que recebem ou transmitem dados de registro, revise as entradas do dicionário do banco de dados para esses registros e crie estruturas de dados de objeto correspondentes. Por exemplo, suponha que você queira que um objeto contenha dados das tabelas Incidente e Item de configuração. Você pode criar um elemento de cadeia de caracteres para Descrição resumida campo no Incidente e uma matriz de elementos de cadeias de caracteres para Classe campo no Item de configuração tabela .
- Crie objetos para combinar diferentes tipos de registros
- Se você precisar de informações de vários tipos de registros, crie um objeto que contenha todas as informações necessárias. Em seguida, você pode usar o objeto para formatar ou analisar dados no Workflow Studio.
Script com dados complexos
Lembre-se dessas diretrizes gerais ao criar scripts com dados complexos.
- Use entradas de cadeia de caracteres para converter dados complexos em uma cadeia de caracteres JSON
- Quando você mapeia dados complexos para uma entrada de cadeia de caracteres, Workflow StudioO converte automaticamente em uma cadeia de caracteres JSON. Em vez de escrever um script, você pode adicionar uma entrada de cadeia de caracteres a uma etapa REST e mapeá-la para dados complexos de uma ação ou etapa anterior.
- Salve seus objetos como modelos
- Salve seus objetos como modelos para reutilizá-los em outras ações, fluxos e etapas de script.
- Crie variáveis de entrada de script para acessar dados anteriores
- Crie uma variável de entrada de script para todos os dados que você deseja acessar da entrada de ação ou de uma etapa anterior. Mapeie a variável de entrada de script para a cápsula de dados de entrada ou etapa. Por exemplo, mapeie a variável de entrada de script para uma lista de registros de usuário que você pesquisou em uma etapa anterior.
- Crie uma variável de saída de script para armazenar dados complexos
- Crie uma variável de saída de script para armazenar todos os dados complexos criados pelo script. As variáveis de saída do script devem corresponder aos valores definidos no script. Por exemplo, crie uma matriz de contatos de objetos para armazenar vários objetos de contato. Salve o objeto de contato como um modelo para que você possa reutilizá-lo.
- Mapeie a saída da ação para a variável de saída do script
- Quando você quiser que uma ação personalizada gere dados complexos, adicione uma saída de ação e mapeie-a para a cápsula de dados da variável de saída da Etapa de script. Por exemplo, crie uma matriz de contatos e carregue o modelo de objeto de contato salvo anteriormente. Mapeie a saída da ação para a matriz de contatos produzida pela etapa de script.
Designer de fluxo e separação de domínio
Siga estas diretrizes gerais ao usar a separação de domínio com Workflow Studio.
- Certifique-se de que fluxos, ações e subfluxos de locatário sejam executados corretamente para domínios
- Como os locatários não podem substituir Workflow StudioConteúdo, um administrador do provedor de serviços (SP) da SUPERIOR o domínio deve criá-los e gerenciá-los para garantir que eles sejam executados corretamente para domínios. Embora você possa criar fluxos específicos do domínio, os usuários que trabalham em domínios mais altos na hierarquia podem acionar vários fluxos de domínio secundário. Por exemplo, um usuário que trabalha no domínio SUPERIOR pode acionar fluxos em domínios secundários, como ACME e INITECH.Nota:Os autores de fluxo só podem ver Workflow Studioconteúdo disponível do domínio atual e de todos os domínios primários na hierarquia. Workflow StudioNão exibe o conteúdo visível de contém domínios.
- Forneça um nome exclusivo para cada fluxo, ação e subfluxo
- Todos os domínios são compartilhados Workflow StudioUm administrador do SP no domínio PRINCIPAL nomeie exclusivamente cada fluxo, ação e subfluxo. Isso garante que um fluxo destinado a um domínio não duplique o nome de um fluxo em outro domínio. Por exemplo, adicione o domínio ao nome do fluxo, como Validar incidentes - SUPERIOR , Validar incidentes - ACME e. Validar incidentes - INITECH .
- Certifique-se de que fluxos e ações contenham somente artefatos de domínios primários ou atuais
- Workflow Studio impede a ativação de qualquer fluxo que contenha artefatos indisponíveis para os domínios primário ou atual. Por exemplo, se você criar um fluxo específico do domínio que pertença ao domínio ACME, ele não poderá conter ações ou subfluxos pertencentes à inicialização do domínio irmão.
- Editar Workflow Studioconteúdo no domínio ao qual ele pertence
- Os usuários em um domínio primário não podem ver fluxos, ações e subfluxos em um domínio secundário. Eles devem mudar para o domínio ao qual pertencem para editá-los. Por exemplo, um administrador no domínio SUPERIOR não pode ver fluxos do domínio ACME. O administrador deve alternar para o domínio ACME para vê-los e editá-los.
Implantação
- Evite implantar fluxos de versão mais recentes em instâncias em versões mais antigas
- Workflow Studio o não oferece suporte à implantação de fluxos de versão mais recentes em instâncias executadas em versões anteriores. Perigo:O modelo de dados de fluxo pode mudar entre as versões, o que pode impedir a execução de fluxos mais recentes ou produzir resultados inesperados ao executar em instâncias de versões anteriores. Antes de implantá-las, faça upgrade de suas instâncias para que estejam nas mesmas versões de lançamento.
Tratamento de erros de fluxo
Siga estas diretrizes gerais para obter os benefícios oferecidos pelo tratamento de erros de fluxo.
- Evite adicionar itens de manipulação de erros à seção principal do fluxo
- Um fluxo normalmente para de ser executado quando uma ação ou subfluxo retorna um erro na seção principal. Um fluxo interrompido não pode executar nenhuma ação ou subfluxos além do ponto em que retornou um erro. A adição de ações e subfluxos de tratamento de erros à seção Manipulador de erros garante que eles os executem quando há um erro.
- Capture informações de status de erro
- O objeto Status de erro contém informações sobre a ação que produziu um erro. Você pode usar essas informações para identificar a causa do erro, bem como dados de registro que podem precisar de correção.
- Suprimir mensagens de erro de subfluxo
- Você pode habilitar o Manipulador de erros para um subfluxo para evitar que seus erros sejam transmitidos em cascata para um fluxo primário. Deixar a seção Manipulador de erros do subfluxo vazia garante que ele sempre gere o. Concluído (erro detectado) estado.
- Use subfluxos para evitar o limite de 10 itens
- Em vez de forçar seu processo de manipulação de erros a se ajustar a um limite de 10 itens, chame os subfluxos, que podem conter muito mais itens. Você também pode usar as saídas de subfluxo para acionar a automação em outros fluxos.
- Use subfluxos para executar ações corretivas
- Em vez de recriar a mesma sequência de ações em vários fluxos, crie subfluxos reutilizáveis para corrigir erros nos dados do registro. Quando um erro de fluxo deixa os dados do registro em um estado indesejado, use subfluxos para corrigir esses registros. Você pode usar o manipulador de erros para identificar esses dados de registro como uma saída de subfluxo.
Avaliação de erro de ação
Siga estas diretrizes gerais para obter os benefícios oferecidos pela avaliação de erro de ação.
- Permita que somente etapas independentes continuem em execução
- Permita que uma etapa continue em execução se ela não retornar os dados exigidos por uma etapa posterior. Se uma etapa fornecer os dados necessários para etapas posteriores, você saberá que as etapas posteriores não poderão ser executadas com sucesso.
- Evite mais de 10 condições de erro
- Embora não haja limite para o número de condições de erro que você pode criar, cada condição de erro requer avaliação. Quanto mais condições de erro sua ação tiver que avaliar, mais lenta sua ação poderá ser executada.
- Identificar falhas de etapa específicas
- Você pode usar o Status da etapa para identificar quando uma etapa específica falha. Identificar uma etapa específica pode ser útil quando sua ação contém várias instâncias do mesmo tipo de etapa. Você também pode querer identificar uma etapa específica para que um manipulador de erros de fluxo possa executar as ações corretivas apropriadas para a falha.
- Coloque condições de erro específicas antes das condições de erro gerais
- A avaliação de erro é interrompida quando a ação encontra uma condição de erro correspondente. Colocar as condições gerais de erro em primeiro lugar pode impedir que a ação corresponda a condições de erro específicas.
- Use rótulos descritivos de condição de erro
- Identifique uma condição de erro sem precisar editá-la. Por padrão, você só pode ver as condições de erro quando editá-las.
Administrador de fluxo
- Desative a emissão de relatórios de fluxo na produção
- Desabilite a quantidade de memória necessária para executar fluxos Emissão de relatórios de fluxo . O relatório de fluxo armazena informações de configuração e tempo de execução da página Detalhes da execução. Esses relatórios são bons para solução de problemas, mas exigem que uma grande quantidade de dados seja retida na memória e no banco de dados. Por padrão, a emissão de relatórios de fluxo está desabilitada e o sistema só gera detalhes de execução quando você testa manualmente um fluxo ou uma ação. Em vez disso, você pode usar arquivos de log, que ainda estão disponíveis quando a emissão de relatórios está desativada.
- Reduza a quantidade de memória consumida em fluxos com loop aninhado
- Quando a emissão de relatórios estiver ativada, defina com.snc.process_flow.reporting.iteration.lastn com um valor "1" para reduzir as quantidades de memória que as iterações de loop anteriores consomem. Quanto mais iterações você relatar, mais memória será necessária.
- Exiba os valores transformados finais nos detalhes da execução do fluxo
- Somente o valor transformado final aparece em detalhes da execução do fluxo e não o valor de cada transformação aplicada.
Prioridade de fluxo
Siga estas considerações de design ao definir a prioridade de fluxo.
- Evite definir todos os fluxos para serem executados em alta prioridade
- Use uma combinação de prioridades em vez de definir todos os fluxos como prioridade alta. Os threads de trabalho usam a prioridade relativa entre fluxos para selecionar o trabalho. Se todos os seus fluxos forem executados em prioridade alta, não haverá fluxos de prioridade mais baixa para aguardar.
- Evite definir a prioridade de fluxo para fluxos que precisam pausar
- Mantenha fluxos que precisam pausar na prioridade média padrão, pois um fluxo que pausa perde seu valor de prioridade quando retoma a execução.
- Use alta prioridade para fluxos críticos de negócios
- Limite a alta prioridade a fluxos que tenham alto valor comercial, sejam executados raramente e tenham um tempo de execução curto. Evite definir fluxos de alto volume como prioridade alta, pois isso limita o número de threads de trabalho disponíveis para executar outros fluxos. Um fluxo de alta prioridade de execução de longa duração também pode reduzir os threads de trabalho disponíveis para executar outros fluxos.
- Use prioridade baixa para fluxos de alto volume
- Execute fluxos de alto volume em prioridade baixa para que outros fluxos sensíveis ao tempo possam ser executados primeiro. Os fluxos de baixa prioridade não devem ser sensíveis ao tempo.
- Use prioridade média para fluxos sensíveis ao tempo
- Use a prioridade de fluxo padrão quando um fluxo tiver alguma urgência de tempo quando comparado a outros fluxos.