Criar Uma ação de Fluxo de dados
Crie uma ação reutilizável para processar um fluxo de dados de resposta em um fluxo.
Antes de Iniciar
- Configure uma aplicação no Criador de aplicações guiadas para armazenar Workflow Studio conteúdo.
- Desabilite quaisquer regras de negócios ou fluxos de trabalho conflitantes antes de criar uma ação.
- Função necessária: Action_designer ou admin
Por Que e Quando Desempenhar Esta Tarefa
Criação de uma aplicação personalizada para conter seu Workflow Studio o conteúdo permite que você implantar usando o repositório de aplicações ou o. ServiceNow Store.
Procedimento
- Navegar até Tudo > Flow Designer > Designer.
- Clique em Ações e selecione Fluxo de dados .
-
Preencha as Propriedades da ação e clique em Enviar .
Campo Descrição Nome da ação Insira um nome exclusivo para sua ação de fluxo de dados. Descrição Descrição da ação de fluxo de dados. Aplicação Escopo da aplicação da ação de fluxo de dados. Domínio Escopo do domínio da ação de fluxo de dados. Para obter mais informações sobre Domain Separation, consulte Domain separation explained. Propriedades adicionais Acessível de Acessível a partir de todas as aplicações com escopo ou somente dentro do escopo da aplicação especificado. Categoria Categoria definida no escopo da aplicação para uma ação. Começando com Xanadu versão, você pode criar uma categoria personalizada para organizar suas ações de fluxo de dados. Proteção Selecione se a ação de fluxo de dados é somente leitura. Você só pode selecionar um valor ao criar a ação de fluxo de dados em um escopo da aplicação que você possui. O valor padrão é Nenhum. Anotação de ação Texto de ajuda que aparece abaixo do título da ação de fluxo de dados em Workflow Studio ajudar os autores de ação de fluxo de dados a entender o que a ação de fluxo de dados faz quando usada em um fluxo. Um vazio Fluxo de dadosa ação é aberta. -
Defina entradas de ação para disponibilizar dados para as etapas de ação.
-
Selecione - Criar entrada e preencha os campos.
As entradas são representadas como cápsulas de dados no painel direito.
Para obter mais informações sobre entradas de ação, consulte Workflow Studio - Construção de ações personalizadas. -
Selecione - Criar entrada e preencha os campos.
-
Clique em Pré-processamento da ação em Fluxo de dadosdescreva e configure as opções desejadas.
-
Selecione Recuperar informações de conexão Para adicionar a etapa Obter informações de conexão como a primeira etapa no pré-processamento da ação.
A etapa Obter informações de conexão permite recuperar detalhes de conexão e credencial para usar em sua ação. Para obter mais informações, consulte Get Connection Info step.
-
Selecione Habilitar script de pré-processamento para executar um script de pré-processamento antes que a ação envie a solicitação de API inicial. Por exemplo, valide entradas de ação ou defina valores padrão. O pré-processamento é executado uma vez por ação, antes da primeira solicitação de API.
A seleção desta opção adiciona uma etapa de script à ação Fluxo de dados. Para obter mais informações, consulte Script step.
Importante:As ações de fluxo de dados exigem uma conexão constante com o fluxo de resposta. Eles não oferecem suporte a scripts de pré-processamento que pausam a ação para chamar um MID Server ou pause a ação para aguardar uma condição ou duração. Um script de pré-processamento que pausa a ação por qualquer motivo retorna uma mensagem de erro.
-
Selecione Recuperar informações de conexão Para adicionar a etapa Obter informações de conexão como a primeira etapa no pré-processamento da ação.
-
Clique em Solicitação em Fluxo de dadosdescreva e configure as opções desejadas.
-
Em Como você obterá dados campo, selecione Etapa REST , Etapa SOAP ou Etapa JDBC para adicionar a etapa associada ao Fluxo de dadosação.
Para obter mais informações, consulte Etapa REST, Etapa SOAP e Etapa JDBC .
Esta seção pode ser executada em MID Server ou a instância. O ambiente é determinado pelo Usar MID Server Campo no registro Conexão associada [sys_connection].
Nota:- Se você estiver usando a etapa JDBC, deverá testá-la. Após a execução bem-sucedida, você pode usar o resultado para criar a saída da etapa e a saída da ação do fluxo de dados.
- Se você estiver usando a etapa REST ou SOAP, deverá criar manualmente a saída da ação de fluxo de dados.
-
Selecione Habilitar paginação para solicitar resulta em lotes. Depois que uma página de dados é processada, a ação Fluxo de dados executa a seção de solicitação novamente para retornar o próximo conjunto de resultados.Esta opção adiciona uma etapa de Configuração de paginação ao Fluxo de dadoscontorno.
Nota:Para uma etapa JDBC, a paginação não é aplicável. Cada página pode recuperar até 1 GB de dados e uma solicitação pode recuperar até 8 GB de dados.
-
Selecione Execute um script antes de cada solicitação Para executar um script antes de cada solicitação para a próxima página ao chamar uma API paginada.
Por exemplo, grave um script para transformar tipos de dados variáveis da resposta inicial antes de enviar uma solicitação para a próxima página.
A seleção desta opção adiciona uma etapa de script à ação Fluxo de dados. Para obter mais informações, consulte Script step.
Nota:Para uma etapa JDBC, isso não é aplicável.Esta seção pode ser executada em MID Server ou na instância. O ambiente é determinado pelo campo Tempo de execução necessárioda etapa do script.
Importante:Evite mudar várias vezes o ambiente de execução entre a instância e o MID Server. Por exemplo, você pode configurar a etapa Request Script para ser executada em MID Server, mas a etapa REST para ser executada na instância. Nesse caso, o sistema alterna os ambientes entre a instância e MID Server para cada página de dados, o que pode prejudicar o desempenho.
-
Em Como você obterá dados campo, selecione Etapa REST , Etapa SOAP ou Etapa JDBC para adicionar a etapa associada ao Fluxo de dadosação.
- Opcional:
Se a paginação estiver habilitada, configure a etapa Configuração de paginação.
Configure a etapa Configuração de paginação manualmente ou selecione um modelo pré-criado para aplicar configurações comuns. Por exemplo, aplique o modelo Limite/Deslocamento para especificar o número de itens que você deseja retornar por página (limite) e o número inicial do primeiro item (deslocamento). Depois de aplicar um modelo, atualize os valores para garantir que a configuração esteja em conformidade com os requisitos da API.
-
Criar variáveis de paginação.
Por exemplo, se a API de terceiros usar um
limiteparâmetro na solicitação, crie o.limitee defina o valor inicial para limitar o número de resultados por página. O valor inicial é usado somente na primeira solicitação.ObterPróxima Páginaé uma variável reservada, somente leitura. Contanto que a variávelgetNextPageseja verdadeira e a página anterior contenha dados, a ação continuará a enviar solicitações para a próxima página. -
Em Próximo valor de defina como as variáveis de paginação recebem um valor para solicitações subsequentes.
Escolha entre:
- Script Escreva um script de variáveis de paginação para definir como as variáveis são preenchidas. Variáveis de paginação só são compatíveis com o tipo de dados de cadeia de caracteres. Para executar operações matemáticas, você deve converter o valor em um número inteiro, executar todas as operações necessárias e convertê-lo novamente em uma cadeia de caracteres.
- Corpo da resposta : Use um valor na resposta da solicitação anterior para preencher a variável. Se a resposta for o formato JSON, defina Extrair valor usando . Expressão JSONPath e fornecem o caminho para o valor em Expressão campo. Se a resposta for o formato XML, defina Extrair valor usando . Expressão XPath e fornecem o caminho para o valor.
Neste exemplo,ObterPróxima Páginaa variável é verdadeira atéNextOffsetA variável atinge o valor da contagem total retornado no cabeçalho de resposta da API. Contanto que a variávelgetNextPageseja verdadeira e a página anterior contenha dados, a ação continuará a enviar solicitações para a próxima página. Este exemplo inclui uma configuração de paginação de limite/deslocamento comum. As APIs de terceiros que são Fluxo de dadosa ação interage com pode usar um token de página ou outro método.Importante:Evite loops infinitos em solicitações de paginação, criando uma condição que defina a variávelgetNextPagecomo falsa. Cancele todos os fluxos de longa execução. Sempre teste as ações Fluxo de dados antes de usá-las na produção. -
Criar variáveis de paginação.
-
Clique em Análise em Fluxo de dadosdescreva e configure as opções desejadas. Nota:Para uma etapa JDBC, isso não é aplicável.
- Em Como você identificará cada registro campo, selecione Divisor JSON/XML Para adicionar uma etapa do divisor ao Fluxo de dadoscontorno.
- Em Como você analisará cada item em um objeto campo, selecione Analisador de script Para adicionar uma etapa do analisador de script ao Fluxo de dadoscontorno.
-
Configure a etapa Divisor.
Esta etapa identifica o nó primário no fluxo de resposta para mapear para um objeto complexo. Por exemplo, identifique um elemento de usuário em uma carga XML para criar um objeto complexo para cada usuário no fluxo de resposta.
Nota:Para uma etapa JDBC, isso não é aplicável.-
Em Formato de origem , selecione o formato retornado pela seção Solicitação.
- JSON: identifica objetos de um fluxo de dados JSON. Use uma expressão JSONPath para identificar uma matriz JSON que contém dados repetidos.
- XML: identifica objetos de um fluxo de dados XML. Use uma expressão XPath para identificar um elemento XML que contém dados repetidos.
-
Em Caminho do item defina o caminho absoluto para o item no fluxo de dados que você deseja mapear para um objeto.
- JSON
- Identifique o caminho absoluto para uma matriz de objetos como uma expressão JSONPath. Por exemplo, use
valor.resultadoPara separar cada item em um JSONresultadomatriz em umresultadoobjeto.Nota:Se você selecionar uma matriz no nó raiz de um fluxo de dados JSON, o sistema exibirá o caminho absoluto como.*em detalhes de execução e mensagens de erro. - XML
- Identifique o caminho absoluto para um objeto de dados repetido como uma expressão XPath. Por exemplo, use
/resultadopara separar cada instância de umresultadoElemento XML em umresultadoobjeto.Nota:A etapa Divisor ignora namespaces XML.
Por exemplo, suponha que a Etapa REST retorne um fluxo de dados JSON. O caminho do itemusd .response.result.companiesretorna cada item emempresasmatriz.{ "response": { "result": { "companies": [ { "name": "company1" }, { "name": "company2" }, { "name": "company3" } ], "metadata": { "token": 1558666526 } } } }Por exemplo, suponha que a Etapa REST retorne um fluxo de dados XML. O caminho do item/response/result/companies/companyretorna cada umempresaElemento dos dados XML.<response> <result> <companies> <company> <!-- company 1 info --> </company> <company> <!-- company 2 info --> </company> <company> <!-- company 3 info --> </company> <company> <!-- company 4 info --> </company> <batch>10645C53D4BED73YQ</batch> </companies> <metadata> <timestamp>1558666526</timestamp> </metadata> </result> </response>
-
Em Formato de origem , selecione o formato retornado pela seção Solicitação.
-
Na etapa Analisador de scripts, use JavaScript e. ServiceNow APIs para mapear itens no fluxo de resposta para uma saída de objeto complexo representada pelo
TargetObjectobjeto global.Por exemplo, mapeie os elementos de registro de incidente identificados na etapa do divisor para um objeto complexo que contém campos de incidente. Se o fluxo de dados incluir irmãos do item identificado na etapa do divisor que você não deseja mapear para um objeto complexo, inclua condições para excluir esses itens.
Nota:Para uma etapa JDBC, isso não é aplicável.Você pode acessar saídas de etapas anteriores em sua ação de fluxo de dados usando fd_data objeto, excluindo:- Corpo de resposta da etapa REST ou SOAP, Fluxo ou Saída de mensagem de erro.
- Saídas de etapa do divisor.
Um script de exemplo que analisa uma resposta JSON.(function parse(inputs, outputs) { var record = JSON.parse(inputs.sourceItem); outputs.targetObject.id=record.number; outputs.targetObject.name=record.short_description; })(inputs, outputs)Um script de exemplo que analisa uma resposta XML.(function parse(inputs, outputs) { var xmlDoc = new XMLDocument(inputs.sourceItem, false); outputs.targetObject.id = xmlDoc.getNodeText("/result/number"); outputs.targetObject.name = xmlDoc.getNodeText("/result/short_description"); })(inputs, outputs) - Opcional:
Se você Selecionada a etapa JDBC, clique em Transformação .
Depois de testar com sucesso a etapa JDBC, clique em Usar resultado para criar a saída da etapa e a saída da ação do fluxo de dados. Você pode usar este resultado ou personalizá-lo usando o script de transformação.
- Selecione Habilitar script de transformação caixa de seleção para transformar e personalizar a saída de fluxo de dados padrão.
-
Crie uma saída de objeto complexa.
Nota:Para uma etapa JDBC, isso não é aplicável.
- Selecione Saídas Na Descrição da ação e clique em . para criar uma saída.
-
Atualize o. Rótulo campo para representar o objeto.
Por exemplo, se a ação analisar um fluxo de registros da empresa, adicione Empresa rótulo.
-
Atualize o. Tipo campo para Objeto .
Esta é a saída de objeto complexo representada pelo
TargetObjectObjeto global na etapa Analisador de scripts. - Adicione campos secundários ao objeto complexo usando . ícone.
-
Torne o nome de cada campo secundário mais amigável para que você possa se referir a ele de forma significativa no script.
O valor em Nome O campo é o nome interno usado na etapa Analisador de scripts. Por exemplo, para se referir à saída Cidade na etapa Analisador de scripts, você usaria
Outputs.targetObject.city.Aviso:Depois de salvar o. Fluxo de dadosnão é possível alterar valores em Nome campo.
-
Clique em Salvar.
Workflow Studio salva um rascunho da ação.