---
sourceDocument: Referência de API do Xanadu
sourceDocumentLink: https://servicenow-prod.fluidtopics.net/r/pt-BR/xanadu/api-reference

 Release :

    - xanadu

ft:locale :

    - pt-BR

ft:publication_title :

    - Referência de API do Xanadu

ft:clusterId :

    - crapiref

bundleId :

    - crapiref

workflow :

    - Creator


---

# ScriptableFlowRunner - com escopo

# ScriptableFlowRunner - com escopo {#ariaid-title1}

* Versão de lançamento: Xanadu
* 
* Atualizado 1 de ago. de 2024
* 
* ![](https://www.servicenow.com/docs/portal-asset/ico-clock) 17 min. de leitura

Cria um objeto de construtor usado para definir parâmetros para fluxo, subfluxo e execução de ação. Você pode especificar um fluxo para executar em um domínio específico. Inicie o fluxo, subfluxo ou execução de ação diretamente do construtor e exiba os resultados em um objeto ScriptableFlowRunnerResult.
Use esses métodos em seus scripts do lado do servidor com o identificador de namespace `sn_fd`.

## Ordem de chamada de API {#ScriptableFlowRunnerScopedAPI__section_fnq_jjs_slb}

Crie e execute fluxos, subfluxos e ações usando essas APIs na seguinte ordem:  

1. FlowAPI: cria um objeto de construtor
:   Use getRunner() para instanciar o objeto do construtor ScriptableFlowRunner.

2. ScriptableFlowRunner: especifique Workflow Studio conteúdo a ser executado
:   Use esses métodos na seguinte ordem para criar o padrão do construtor:  
    1. Use um dos métodos action(), datastream(), flow()ou subflow() para especificar o tipo de objeto Workflow Studio a ser criado.
    2. Use um ou mais métodos, como addInput(), inDomain()ou quick() para especificar parâmetros de execução.
    3. Use o método run() para executar a ação, o fluxo ou o subfluxo com os parâmetros fornecidos e retornar um objeto ScriptableFlowRunnerResult.
    {#ScriptableFlowRunnerScopedAPI__ol_hcw_m4s_slb}

3. ScriptableFlowRunnerResult: recuperar Workflow Studio detalhes de execução
:   Use um ou mais métodos como getContextId(), getOutputs()e getDomainId() para exibir detalhes da execução.

## Exemplo {#ScriptableFlowRunnerScopedAPI__section_nfr_rjw_slb}

Este exemplo mostra como criar um objeto do construtor ScriptableFlowRunner e o usa para executar uma ação de aprovação em um registro específico. Um objeto ScriptableFlowRunnerResult captura os argumentos de execução e as saídas de ação.  


    (function() {
      try {

        var inputs = {}; 

        inputs['sys_id'] = '57af7aec73d423002728660c4cf6a71c';  // Pass the record's sys_id in as input.  

        var result = sn_fd.FlowAPI.getRunner()  // Create a ScriptableFlowRunner builder object.
          .action('global.markapproved')        // Run the global scope action named markapproved.
          .inForeground()
          .inDomain('TOP/ACME')                 // Run the action from the TOP/ACME domain.                               
          .withInputs(inputs)
          .run();                               // Run the action and return a FlowRunnerResult object.

        var contextId = result.getContextId();  // Retrieve the context ID from the result
        var dateRun = result.getDate();
        var domainUsed = result.getDomainId();  // Retrieve the Domain ID from the result.
        var flowName = result.getFlowObjectName();
        var flowObjectType = result.getFlowObjectType();

        var outputs = result.getOutputs();            // Retrieve any outputs from the action execution.
        var newApprovalStatus = outputs['approval'];  // Echo back the approval status for verification.
    		
      } catch (ex) {
        var message = ex.getMessage();
        gs.error(message);
      }
    	
    })();
       
## ScriptableFlowRunner - action(String scopedActionName) {#ariaid-title2}

Identifica o escopo e o nome da ação a ser executada.
Consulte também:

* [ScriptableFlowRunner - flow(String scopedFlowName)](https://servicenow-prod.fluidtopics.net/N~IwWsqZCQZbCCwUyocCww#FlowRunner-flow_S "Identifica o escopo e o nome do fluxo a ser executado.")
* [ScriptableFlowRunner - subflow(String scopedSubflowName)](https://servicenow-prod.fluidtopics.net/N~IwWsqZCQZbCCwUyocCww#FlowRunner-subflow_S "Identifica o escopo e o nome do subfluxo a ser executado.")
{#FlowRunner-action_S__ul_v5f_vt4_gcc}
{#FlowRunner-action_S__table_dkl_vlp_rlb__entry__3}

| Nome | Tipo | Descrição |
|-|-|-|
| scopedActionName | Cadeia de caracteres | Escopo e nome da ação a ser executada. Por exemplo, `global.actionName`. |
[Tabela 1. Parâmetros]

{#FlowRunner-action_S__table_dkl_vlp_rlb} {#FlowRunner-action_S__table_ekl_vlp_rlb__entry__2}

| Tipo | Descrição |
|-|-|
| [ScriptableFlowRunner](https://servicenow-prod.fluidtopics.net/N~IwWsqZCQZbCCwUyocCww#ScriptableFlowRunnerScopedAPI "Cria um objeto de construtor usado para definir parâmetros para fluxo, subfluxo e execução de ação. Você pode especificar um fluxo para executar em um domínio específico. Inicie o fluxo, subfluxo ou execução de ação diretamente do construtor e exiba os resultados em um objeto ScriptableFlowRunnerResult.") | Objeto de construtor usado para executar uma ação Workflow Studio, fluxo ou subfluxo. |
[Tabela 2. Retorna]

{#FlowRunner-action_S__table_ekl_vlp_rlb}  
Este exemplo mostra como criar um objeto do construtor ScriptableFlowRunner e o usa para executar uma ação de aprovação em um registro específico. Um objeto ScriptableFlowRunnerResult captura os argumentos de execução e as saídas de ação.


    (function() {
      try {

        var inputs = {}; 

        inputs['sys_id'] = '57af7aec73d423002728660c4cf6a71c';  // Pass the record's sys_id in as input.  

        var result = sn_fd.FlowAPI.getRunner()  // Create a ScriptableFlowRunner builder object.
          .action('global.markapproved')        // Run the global scope action named markapproved.
          .inForeground()
          .inDomain('TOP/ACME')                 // Run the action from the TOP/ACME domain.                               
          .withInputs(inputs)
          .run();                               // Run the action and return a FlowRunnerResult object.

        var contextId = result.getContextId();  // Retrieve the context ID from the result
        var dateRun = result.getDate();
        var domainUsed = result.getDomainId();  // Retrieve the Domain ID from the result.
        var flowName = result.getFlowObjectName();
        var flowObjectType = result.getFlowObjectType();

        var outputs = result.getOutputs();            // Retrieve any outputs from the action execution.
        var newApprovalStatus = outputs['approval'];  // Echo back the approval status for verification.
    		
      } catch (ex) {
        var message = ex.getMessage();
        gs.error(message);
      }
    	
    })();
       
## ScriptableFlowRunner - addInput (nome da cadeia de caracteres, valor do objeto) {#ariaid-title3}

Adiciona uma única entrada. Se o nome passado como um argumento já existir como uma entrada separada, o novo valor substituirá o valor pré-existente.
Este método adiciona uma única entrada. Para criar um objeto e adicionar várias entradas, use o método withInputs().
{#FlowRunner-addInput_S_O__table_ucp_smp_rlb__entry__3}

| Nome | Tipo | Descrição |
|-|-|-|
| nome | Cadeia de caracteres | O nome da entrada do fluxo, subfluxo ou ação. |
| valor | Objeto | O valor da entrada para o fluxo, subfluxo ou ação. |
[Tabela 3. Parâmetros]

{#FlowRunner-addInput_S_O__table_ucp_smp_rlb} {#FlowRunner-addInput_S_O__table_vcp_smp_rlb__entry__2}

| Tipo | Descrição |
|-|-|
| [ScriptableFlowRunner](https://servicenow-prod.fluidtopics.net/N~IwWsqZCQZbCCwUyocCww#ScriptableFlowRunnerScopedAPI "Cria um objeto de construtor usado para definir parâmetros para fluxo, subfluxo e execução de ação. Você pode especificar um fluxo para executar em um domínio específico. Inicie o fluxo, subfluxo ou execução de ação diretamente do construtor e exiba os resultados em um objeto ScriptableFlowRunnerResult.") | Objeto de construtor usado para executar uma ação Workflow Studio, fluxo ou subfluxo. |
[Tabela 4. Retorna]

{#FlowRunner-addInput_S_O__table_vcp_smp_rlb}  
Este exemplo executa uma ação que usa uma única entrada chamada `table_name`.

    (function() {
      try {

        var result = sn_fd.FlowAPI.getRunner()
          .action('global.test_action')
          .addInput('table_name', 'incident')
          .inForeground()
          .run();

        gs.info(result.debug());

      } catch (ex) {
        var message = ex.getMessage();
        gs.error(message);
      }

    })();

Saída:

    Flow Designer: TableName
    *** Script: FlowRunnerResult
    Flow Object Name: global.test_action
    Flow Object Type: action
    Domain: null
    Result Time: 2020-06-09 00:10:57
    ContextId: null
    Output count: 1

## ScriptableFlowRunner - asUser() {#ariaid-title4}

Executa o fluxo como o usuário que o acionou, não o sistema, para execuções rápidas em segundo plano.
Quando um fluxo é acionado usando quick() junto com o método asUser(), o usuário que acionou o fluxo é recuperado e usado para a execução do fluxo.  
{#FlowRunner-asUser__table_c33_pts_qtb__entry__3}

| Nome | Tipo | Descrição |
|-|-|-|
| Nenhum |   |   |
[Tabela 5. Parâmetros]

{#FlowRunner-asUser__table_c33_pts_qtb}  
{#FlowRunner-asUser__table_l4l_tts_qtb__entry__2}

| Tipo | Descrição |
|-|-|
| [ScriptableFlowRunner - com escopo](https://servicenow-prod.fluidtopics.net/N~IwWsqZCQZbCCwUyocCww#ScriptableFlowRunnerScopedAPI "Cria um objeto de construtor usado para definir parâmetros para fluxo, subfluxo e execução de ação. Você pode especificar um fluxo para executar em um domínio específico. Inicie o fluxo, subfluxo ou execução de ação diretamente do construtor e exiba os resultados em um objeto ScriptableFlowRunnerResult.") | Objeto de construtor usado para executar uma ação Workflow Studio, fluxo ou subfluxo. |
[Tabela 6. Retorna]

{#FlowRunner-asUser__table_l4l_tts_qtb}  
Este exemplo mostra como criar um objeto do construtor ScriptableFlowRunner e usá-lo para executar uma ação de aprovação em um registro específico usando os métodos asUser() e quick(). Um objeto ScriptableFlowRunnerResult captura os argumentos de execução e as saídas de ação.

    (function() {
        try {

            var outputs = sn_fd.FlowAPI.getRunner() // Create a ScriptableFlowRunner builder object.
            .flow('global.stry53225960_flow_asuser_test')
            .inForeground()
            .quick() //Run the flow from a server-side script.
            .asUser() //Run flow with the roles specified in the flow.
            .run(); // Run the action and return a FlowRunnerResult object.

        } catch (ex) {
            var message = ex.getMessage();
            gs.error(message);
        }  

    })();

### Erros {#FlowRunner-asUser__section_jml_4tk_5tb}

Esses erros podem ocorrer ao usar o método asUser() :

* O script retorna um erro quando asUser() não é usado junto com quick().
* O script retorna um erro quando asUser() é chamado em um fluxo que tem funções definidas.
* O script retorna um erro quando os métodos withRoles() e asUser() são chamados ao mesmo tempo.
{#FlowRunner-asUser__ul_nhw_stk_5tb}

## ScriptableFlowRunner - datastream(String scopedDatastreamName) {#ariaid-title5}

Identifica o escopo e o nome da ação de fluxo de dados a ser executada.
Para saber mais sobre ações de fluxo de dados, consulte [Ações e paginação de fluxo](https://www.servicenow.com/docs/access?context=data-stream-actions&version=xanadu&pubname=xanadu-integrate-applications&ft:locale=en-US)de dados.
{#FlowRunner-datastream_S__table_xlx_wlp_rlb__entry__3}

| Nome | Tipo | Descrição |
|-|-|-|
| scopedDatastreamName | Cadeia de caracteres | Escopo e nome da ação de fluxo de dados a ser executada. Por exemplo, `global.dataStreamActionName`. |
[Tabela 7. Parâmetros]

{#FlowRunner-datastream_S__table_xlx_wlp_rlb} {#FlowRunner-datastream_S__table_ylx_wlp_rlb__entry__2}

| Tipo | Descrição |
|-|-|
| [ScriptableFlowRunner](https://servicenow-prod.fluidtopics.net/N~IwWsqZCQZbCCwUyocCww#ScriptableFlowRunnerScopedAPI "Cria um objeto de construtor usado para definir parâmetros para fluxo, subfluxo e execução de ação. Você pode especificar um fluxo para executar em um domínio específico. Inicie o fluxo, subfluxo ou execução de ação diretamente do construtor e exiba os resultados em um objeto ScriptableFlowRunnerResult.") | Objeto de construtor usado para executar uma ação Workflow Studio, fluxo ou subfluxo. |
[Tabela 8. Retorna]

{#FlowRunner-datastream_S__table_ylx_wlp_rlb}  
Este exemplo mostra como executar uma ação de fluxo de dados.

    (function() {
      try {

        var result = sn_fd.FlowAPI.getRunner()
          .datastream('global.test_dsa')
          .inForeground()
          .run();

        gs.info(result.debug());

      } catch (ex) {
        var message = ex.getMessage();
        gs.error(message);
      }

    })();

Saída:

    *** Script: FlowRunnerResult
    Flow Object Name: global.test_dsa
    Flow Object Type: datastream
    Domain: null
    Result Time: 2020-06-08 16:41:13
    ContextId: null
    Output count: 0

## ScriptableFlowRunner - flow(String scopedFlowName) {#ariaid-title6}

Identifica o escopo e o nome do fluxo a ser executado.
Consulte também:

* [ScriptableFlowRunner - action(String scopedActionName)](https://servicenow-prod.fluidtopics.net/N~IwWsqZCQZbCCwUyocCww#FlowRunner-action_S "Identifica o escopo e o nome da ação a ser executada.")
* [ScriptableFlowRunner - subflow(String scopedSubflowName)](https://servicenow-prod.fluidtopics.net/N~IwWsqZCQZbCCwUyocCww#FlowRunner-subflow_S "Identifica o escopo e o nome do subfluxo a ser executado.")
{#FlowRunner-flow_S__ul_v5f_vt4_gcc}
{#FlowRunner-flow_S__table_zpn_4lp_rlb__entry__3}

| Nome | Tipo | Descrição |
|-|-|-|
| scopedFlowName | Cadeia de caracteres | Escopo e nome do fluxo a ser executado. Por exemplo, `global.flowName`. |
[Tabela 9. Parâmetros]

{#FlowRunner-flow_S__table_zpn_4lp_rlb} {#FlowRunner-flow_S__table_aqn_4lp_rlb__entry__2}

| Tipo | Descrição |
|-|-|
| [ScriptableFlowRunner](https://servicenow-prod.fluidtopics.net/N~IwWsqZCQZbCCwUyocCww#ScriptableFlowRunnerScopedAPI "Cria um objeto de construtor usado para definir parâmetros para fluxo, subfluxo e execução de ação. Você pode especificar um fluxo para executar em um domínio específico. Inicie o fluxo, subfluxo ou execução de ação diretamente do construtor e exiba os resultados em um objeto ScriptableFlowRunnerResult.") | Objeto de construtor usado para executar uma ação Workflow Studio, fluxo ou subfluxo. |
[Tabela 10. Retorna]

{#FlowRunner-flow_S__table_aqn_4lp_rlb}  
Este exemplo mostra como executar um fluxo que registra uma mensagem.

    (function() {
      try {

        var result = sn_fd.FlowAPI.getRunner()
          .flow('global.test_flow')
          .inForeground()
          .run();

        gs.info(result.debug());

      } catch (ex) {
        var message = ex.getMessage();
        gs.error(message);
      }

    })();

Saída:

    *** Script: FlowRunnerResult
    Flow Object Name: global.test_flow
    Flow Object Type: flow
    Domain: null
    Result Time: 2020-06-08 16:41:13
    ContextId: null
    Output count: 0

## ScriptableFlowRunner -- inBackground() {#ariaid-title7}

Executa o fluxo, o subfluxo ou a ação de forma assíncrona. Depois que o objeto de fluxo começa a ser executado, a execução do script é retomada imediatamente.
{#FlowRunner-inBackground__table_pzg_1mp_rlb__entry__3}

| Nome | Tipo | Descrição |
|-|-|-|
| Nenhum |   |   |
[Tabela 11. Parâmetros]

{#FlowRunner-inBackground__table_pzg_1mp_rlb} {#FlowRunner-inBackground__table_qzg_1mp_rlb__entry__2}

| Tipo | Descrição |
|-|-|
| [ScriptableFlowRunner](https://servicenow-prod.fluidtopics.net/N~IwWsqZCQZbCCwUyocCww#ScriptableFlowRunnerScopedAPI "Cria um objeto de construtor usado para definir parâmetros para fluxo, subfluxo e execução de ação. Você pode especificar um fluxo para executar em um domínio específico. Inicie o fluxo, subfluxo ou execução de ação diretamente do construtor e exiba os resultados em um objeto ScriptableFlowRunnerResult.") | Objeto de construtor usado para executar uma ação Workflow Studio, fluxo ou subfluxo. |
[Tabela 12. Retorna]

{#FlowRunner-inBackground__table_qzg_1mp_rlb}  
Nota:  
A partir da versão Xanadu, a execução de uma ação, fluxo ou subfluxo em segundo plano usando o método quick() retorna um ID de execução como o valor ContextId. O ID de execução não é um registro de contexto real, pois nenhum registro foi inserido na tabela Contexto de fluxo \[sys_flow_context\]. Em vez disso, o ID de execução é usado para rastrear a chamada assíncrona.  
Este exemplo mostra como executar um fluxo em segundo plano de forma assíncrona.

    (function() {
        try {
      
          var result = sn_fd.FlowAPI.getRunner()
            .flow('global.change__unauthorized__review')
            .inBackground()
            .run();
      
          gs.info(result.debug());
      
        } catch (ex) {
          var message = ex.getMessage();
          gs.error(message);
        }
      
      })();

Saída:


    [0:00:01.015] Script completed in scope global: script
    ----------------------------------------------------------------------------------------------------------
    Script execution history and recovery available here
    Operation       Table                               Row Count
    insert          sys_flow_context_inputs_chunk       1
    insert          sys_flow_context                    1
    ----------------------------------------------------------------------------------------------------------
    Complex type redefined: FlowDesigner:FDCollection
    Queued flow.fire event in NowMQ for sys_flow_context.sys_id: e0cd6e30b8b602104a8752ad4a9167c8,
    sysevent.sys_id: 34cd6e30dbb60210497c1a48139619c9, with priority 5
    *** Script: FlowRunnerResult
    Flow Object Name: global.change__unauthorized__review
    Flow Object Type: flow
    Domain: null
    Result Time: 2024-06-12 17:54:58
    ContextId: e0cd6e30b8b602104a8752ad4a9167c8
    Output count: 0

## ScriptableFlowRunner -- inDomain(cadeia de caracteres domainId) {#ariaid-title8}

Executa o fluxo, subfluxo ou ação no domínio especificado. Verifica se o domínio existe e está disponível.
{#FlowRunner-inDomain_S__table_pcy_hmp_rlb__entry__3}

| Nome | Tipo | Descrição |
|-|-|-|
| domainId | Cadeia de caracteres | O sys_id ou nome do domínio de execução do fluxo. |
[Tabela 13. Parâmetros]

{#FlowRunner-inDomain_S__table_pcy_hmp_rlb} {#FlowRunner-inDomain_S__table_qcy_hmp_rlb__entry__2}

| Tipo | Descrição |
|-|-|
| [ScriptableFlowRunner](https://servicenow-prod.fluidtopics.net/N~IwWsqZCQZbCCwUyocCww#ScriptableFlowRunnerScopedAPI "Cria um objeto de construtor usado para definir parâmetros para fluxo, subfluxo e execução de ação. Você pode especificar um fluxo para executar em um domínio específico. Inicie o fluxo, subfluxo ou execução de ação diretamente do construtor e exiba os resultados em um objeto ScriptableFlowRunnerResult.") | Objeto de construtor usado para executar uma ação Workflow Studio, fluxo ou subfluxo. |
[Tabela 14. Retorna]

{#FlowRunner-inDomain_S__table_qcy_hmp_rlb}  
Este exemplo mostra como criar um objeto do construtor ScriptableFlowRunner e o usa para executar uma ação de aprovação em um registro específico. Um objeto ScriptableFlowRunnerResult captura os argumentos de execução e as saídas de ação.


    (function() {
      try {

        var inputs = {}; 

        inputs['sys_id'] = '57af7aec73d423002728660c4cf6a71c';  // Pass the record's sys_id in as input.  

        var result = sn_fd.FlowAPI.getRunner()  // Create a ScriptableFlowRunner builder object.
          .action('global.markapproved')        // Run the global scope action named markapproved.
          .inForeground()
          .inDomain('TOP/ACME')                 // Run the action from the TOP/ACME domain.                               
          .withInputs(inputs)
          .run();                               // Run the action and return a FlowRunnerResult object.

        var contextId = result.getContextId();  // Retrieve the context ID from the result
        var dateRun = result.getDate();
        var domainUsed = result.getDomainId();  // Retrieve the Domain ID from the result.
        var flowName = result.getFlowObjectName();
        var flowObjectType = result.getFlowObjectType();

        var outputs = result.getOutputs();            // Retrieve any outputs from the action execution.
        var newApprovalStatus = outputs['approval'];  // Echo back the approval status for verification.
    		
      } catch (ex) {
        var message = ex.getMessage();
        gs.error(message);
      }
    	
    })();
       
## ScriptableFlowRunner -- inForeground() {#ariaid-title9}

Executa o fluxo, o subfluxo ou a ação de forma síncrona. A execução do script é pausada enquanto o objeto de fluxo está em execução.
Nota:  
Este método não é compatível com a pausa da ação para aguardar as condições. Não há suporte para etapas que pausam para condições de espera, como Solicitar aprovação ou Aguardar condição.
{#FlowRunner-inForeground__table_irw_ylp_rlb__entry__3}

| Nome | Tipo | Descrição |
|-|-|-|
| Nenhum |   |   |
[Tabela 15. Parâmetros]

{#FlowRunner-inForeground__table_irw_ylp_rlb} {#FlowRunner-inForeground__table_jrw_ylp_rlb__entry__2}

| Tipo | Descrição |
|-|-|
| [ScriptableFlowRunner](https://servicenow-prod.fluidtopics.net/N~IwWsqZCQZbCCwUyocCww#ScriptableFlowRunnerScopedAPI "Cria um objeto de construtor usado para definir parâmetros para fluxo, subfluxo e execução de ação. Você pode especificar um fluxo para executar em um domínio específico. Inicie o fluxo, subfluxo ou execução de ação diretamente do construtor e exiba os resultados em um objeto ScriptableFlowRunnerResult.") | Objeto de construtor usado para executar uma ação Workflow Studio, fluxo ou subfluxo. |
[Tabela 16. Retorna]

{#FlowRunner-inForeground__table_jrw_ylp_rlb}  
Este exemplo mostra como criar um objeto do construtor ScriptableFlowRunner e o usa para executar uma ação de aprovação em um registro específico. Um objeto ScriptableFlowRunnerResult captura os argumentos de execução e as saídas de ação.


    (function() {
      try {

        var inputs = {}; 

        inputs['sys_id'] = '57af7aec73d423002728660c4cf6a71c';  // Pass the record's sys_id in as input.  

        var result = sn_fd.FlowAPI.getRunner()  // Create a ScriptableFlowRunner builder object.
          .action('global.markapproved')        // Run the global scope action named markapproved.
          .inForeground()
          .inDomain('TOP/ACME')                 // Run the action from the TOP/ACME domain.                               
          .withInputs(inputs)
          .run();                               // Run the action and return a FlowRunnerResult object.

        var contextId = result.getContextId();  // Retrieve the context ID from the result
        var dateRun = result.getDate();
        var domainUsed = result.getDomainId();  // Retrieve the Domain ID from the result.
        var flowName = result.getFlowObjectName();
        var flowObjectType = result.getFlowObjectType();

        var outputs = result.getOutputs();            // Retrieve any outputs from the action execution.
        var newApprovalStatus = outputs['approval'];  // Echo back the approval status for verification.
    		
      } catch (ex) {
        var message = ex.getMessage();
        gs.error(message);
      }
    	
    })();
       
## ScriptableFlowRunner - quick() {#ariaid-title10}

Executa um fluxo, subfluxo, ação ou ação de Fluxo de dados de um script do lado do servidor de forma síncrona ou assíncrona sem criar detalhes de execução ou outros registros relacionados. Melhora o desempenho ao eliminar a sobrecarga de manutenção de registros.
Use esta API para aumentar a velocidade do processamento de alto volume, por exemplo, várias execuções por segundo, em um ambiente de produção.

Emissão de relatórios e registros gerados
:   Este método não cria detalhes de execução e registros de contexto, independentemente das configurações Workflow Studio.

Suporte à condição de espera
:   Este método não é compatível com a pausa de uma ação ou fluxo para aguardar as condições. Ações, lógica de fluxo e etapas que pausam para condições de espera, como Solicitar aprovação, Aguardar condição ou Aguardar uma duração, não são compatíveis.

Suporte ao MID Server
:   Este método não é compatível com a pausa de uma ação ou fluxo para ser executado a partir de um MID Server. Esta restrição inclui scripts de pré-processamento de ação de fluxo de dados que pausam uma ação para ser executada em um MID Server.

Suporte à ação de fluxo de dados
:   Este método não é compatível com a pausa de uma ação de fluxo de dados para executar um script de pré-processamento de um MID Server.

Suporte de prioridade de fluxo
:   Este método é compatível com configurações de prioridade de fluxo. O fluxo é executado na prioridade de fluxo especificada.
{#FlowRunner-quick__table_lmh_cmp_rlb__entry__3}

| Nome | Tipo | Descrição |
|-|-|-|
| Nenhum |   |   |
[Tabela 17. Parâmetros]

{#FlowRunner-quick__table_lmh_cmp_rlb} {#FlowRunner-quick__table_mmh_cmp_rlb__entry__2}

| Tipo | Descrição |
|-|-|
| [ScriptableFlowRunner](https://servicenow-prod.fluidtopics.net/N~IwWsqZCQZbCCwUyocCww#ScriptableFlowRunnerScopedAPI "Cria um objeto de construtor usado para definir parâmetros para fluxo, subfluxo e execução de ação. Você pode especificar um fluxo para executar em um domínio específico. Inicie o fluxo, subfluxo ou execução de ação diretamente do construtor e exiba os resultados em um objeto ScriptableFlowRunnerResult.") | Objeto de construtor usado para executar uma ação Workflow Studio, fluxo ou subfluxo. |
[Tabela 18. Retorna]

{#FlowRunner-quick__table_mmh_cmp_rlb}  
Nota:  
A partir da versão Xanadu, a execução de uma ação, fluxo ou subfluxo em segundo plano usando o método quick() retorna um ID de execução como o valor ContextId. O ID de execução não é um registro de contexto real, pois nenhum registro foi inserido na tabela Contexto de fluxo \[sys_flow_context\]. Em vez disso, o ID de execução é usado para rastrear a chamada assíncrona.  
Este exemplo mostra como executar um fluxo sem criar registros relacionados.

    (function() {
      try {

        var result = sn_fd.FlowAPI.getRunner()
          .flow('global.change__unauthorized__review')
          .inBackground()
          .quick()
          .run();

        gs.info(result.debug());

      } catch (ex) {
        var message = ex.getMessage();
        gs.error(message);
      }

    })();

Saída:


    Complex type redefined: FlowDesigner:FDCollection
    Queued flow.run.quick event in NowMQ for sys_flow_context.sys_id: d81781ec57801110403e8f90ac94f90e,
    sysevent.sys_id: 48abe270dbf20210497c1a4813961908, with priority 5
    *** Script: FlowRunnerResult
    Flow Object Name: global.change__unauthorized__review
    Flow Object Type: flow
    Domain: null
    Result Time: 2024-06-12 17:45:37
    ContextId: 08abe2706cf202107b7d3b283f7ee108
    Output count: 0

## ScriptableFlowRunner - executar () {#ariaid-title11}

Executa o fluxo, subfluxo ou ação com os parâmetros especificados.
{#FlowRunner-run__table_tjy_wmp_rlb__entry__3}

| Nome | Tipo | Descrição |
|-|-|-|
| Nenhum |   |   |
[Tabela 19. Parâmetros]

{#FlowRunner-run__table_tjy_wmp_rlb} {#FlowRunner-run__table_ujy_wmp_rlb__entry__2}

| Tipo | Descrição |
|-|-|
| ScriptableFlowRunnerResultsScoped | Objeto que contém os detalhes de execução de uma ação Workflow Studio, fluxo ou subfluxo. |
[Tabela 20. Retorna]

{#FlowRunner-run__table_ujy_wmp_rlb}  
Este exemplo mostra como criar um objeto do construtor ScriptableFlowRunner e o usa para executar uma ação de aprovação em um registro específico. Um objeto ScriptableFlowRunnerResult captura os argumentos de execução e as saídas de ação.


    (function() {
      try {

        var inputs = {}; 

        inputs['sys_id'] = '57af7aec73d423002728660c4cf6a71c';  // Pass the record's sys_id in as input.  

        var result = sn_fd.FlowAPI.getRunner()  // Create a ScriptableFlowRunner builder object.
          .action('global.markapproved')        // Run the global scope action named markapproved.
          .inForeground()
          .inDomain('TOP/ACME')                 // Run the action from the TOP/ACME domain.                               
          .withInputs(inputs)
          .run();                               // Run the action and return a FlowRunnerResult object.

        var contextId = result.getContextId();  // Retrieve the context ID from the result
        var dateRun = result.getDate();
        var domainUsed = result.getDomainId();  // Retrieve the Domain ID from the result.
        var flowName = result.getFlowObjectName();
        var flowObjectType = result.getFlowObjectType();

        var outputs = result.getOutputs();            // Retrieve any outputs from the action execution.
        var newApprovalStatus = outputs['approval'];  // Echo back the approval status for verification.
    		
      } catch (ex) {
        var message = ex.getMessage();
        gs.error(message);
      }
    	
    })();
       
## ScriptableFlowRunner - subflow(String scopedSubflowName) {#ariaid-title12}

Identifica o escopo e o nome do subfluxo a ser executado.
Consulte também:

* [ScriptableFlowRunner - action(String scopedActionName)](https://servicenow-prod.fluidtopics.net/N~IwWsqZCQZbCCwUyocCww#FlowRunner-action_S "Identifica o escopo e o nome da ação a ser executada.")
* [ScriptableFlowRunner - flow(String scopedFlowName)](https://servicenow-prod.fluidtopics.net/N~IwWsqZCQZbCCwUyocCww#FlowRunner-flow_S "Identifica o escopo e o nome do fluxo a ser executado.")
{#FlowRunner-subflow_S__ul_v5f_vt4_gcc}
{#FlowRunner-subflow_S__table_sxg_5lp_rlb__entry__3}

| Nome | Tipo | Descrição |
|-|-|-|
| scopedSubflowName | Cadeia de caracteres | Escopo e nome do subfluxo a ser executado. Por exemplo, `global.subflowName`. |
[Tabela 21. Parâmetros]

{#FlowRunner-subflow_S__table_sxg_5lp_rlb} {#FlowRunner-subflow_S__table_txg_5lp_rlb__entry__2}

| Tipo | Descrição |
|-|-|
| [ScriptableFlowRunner](https://servicenow-prod.fluidtopics.net/N~IwWsqZCQZbCCwUyocCww#ScriptableFlowRunnerScopedAPI "Cria um objeto de construtor usado para definir parâmetros para fluxo, subfluxo e execução de ação. Você pode especificar um fluxo para executar em um domínio específico. Inicie o fluxo, subfluxo ou execução de ação diretamente do construtor e exiba os resultados em um objeto ScriptableFlowRunnerResult.") | Objeto de construtor usado para executar uma ação Workflow Studio, fluxo ou subfluxo. |
[Tabela 22. Retorna]

{#FlowRunner-subflow_S__table_txg_5lp_rlb}  
Este exemplo mostra como executar um subfluxo que registra uma mensagem.

    (function() {
      try {

        var result = sn_fd.FlowAPI.getRunner()
          .subflow('global.output_test')
          .inForeground()
          .run();
       
        gs.info(result.debug());

      } catch (ex) {
        var message = ex.getMessage();
        gs.error(message);
      }

    })();

Saída:

    record-watcher asynchronous tracking complete - time: 1 ms. Executed responders: 1 
    record-watcher asynchronous tracking complete - time: 1 ms. Executed responders: 1 
    *** Script: FlowRunnerResult
    Flow Object Name: global.output_test
    Flow Object Type: subflow
    Domain: null
    Result Time: 2024-08-02 22:52:08
    ContextId: b2dxx659bebf01101d72200x503x19pr
    Output count: 2

## ScriptableFlowRunner - timeout(Tempo limite do número) {#ariaid-title13}

Define um tempo limite para um fluxo, subfluxo ou execução de ação.
{#FlowRunner-timeout_N__table_m4g_lmp_rlb__entry__3}

| Nome | Tipo | Descrição |
|-|-|-|
| tempo limite | Número | Tempo limite em milissegundos. |
[Tabela 23. Parâmetros]

{#FlowRunner-timeout_N__table_m4g_lmp_rlb} {#FlowRunner-timeout_N__table_n4g_lmp_rlb__entry__2}

| Tipo | Descrição |
|-|-|
| [ScriptableFlowRunner](https://servicenow-prod.fluidtopics.net/N~IwWsqZCQZbCCwUyocCww#ScriptableFlowRunnerScopedAPI "Cria um objeto de construtor usado para definir parâmetros para fluxo, subfluxo e execução de ação. Você pode especificar um fluxo para executar em um domínio específico. Inicie o fluxo, subfluxo ou execução de ação diretamente do construtor e exiba os resultados em um objeto ScriptableFlowRunnerResult.") | Objeto de construtor usado para executar uma ação Workflow Studio, fluxo ou subfluxo. |
[Tabela 24. Retorna]

{#FlowRunner-timeout_N__table_n4g_lmp_rlb}  
Este exemplo mostra como executar um fluxo e define um tempo limite de dois minutos.

    (function() {
      try {

        var result = sn_fd.FlowAPI.getRunner()
          .flow('global.test_flow')
          .inForeground()
          .timeout(120000)
          .run();

        gs.info(result.debug());

      } catch (ex) {
        var message = ex.getMessage();
        gs.error(message);
      }

    })(); 

Saída:

    Flow Designer: Cloning a new session to run as as user id: [user_name] from original user session: [user_name]
    Flow Designer: Reverting cloned session to original user session: [user_name]
    *** Script: FlowRunnerResult
    Flow Object Name: global.test_flow
    Flow Object Type: flow
    Domain: null
    Result Time: 2020-06-08 18:22:35
    ContextId: null
    Output count: 0

## ScriptableFlowRunner - validarInputs(booleanos validarInputs) {#ariaid-title14}

Gera um erro e impede a execução da classe ScriptableFlowRunner quando qualquer entrada de método tem um valor inesperado. O padrão deste método é verdadeiro para qualquer chamada de ScriptableFlowRunner.
{#FlowRunner-validateInputs_B__table_vmh_2yp_rwb__entry__3}

| Nome | Tipo | Descrição |
|-|-|-|
| validarEntradas | Booliano | Sinalizador que indica se as entradas do método ScriptableFlowRunner devem ser validadas. Há dois valores válidos. * verdadeiro: lança um erro quando as entradas têm valores inesperados e interrompe a execução do script. * falso: permite que o script seja executado com valores inesperados. {#FlowRunner-validateInputs_B__ul_mdn_wzp_rwb} Padrão: verdadeiro |
[Tabela 25. Parâmetros]

{#FlowRunner-validateInputs_B__table_vmh_2yp_rwb} {#FlowRunner-validateInputs_B__table_wmh_2yp_rwb__entry__2}

| Tipo | Descrição |
|-|-|
| Nenhum(a) |   |
[Tabela 26. Retorna]

{#FlowRunner-validateInputs_B__table_wmh_2yp_rwb}  
Este exemplo mostra como executar um fluxo sem validar os valores de entrada do método.

    (function() {
      try {

        var result = sn_fd.FlowAPI.getRunner()
          .flow('global.test_flow')
          .inForeground()
          .validateInputs(false)
          .run();

        gs.info(result.debug());

      } catch (ex) {
        var message = ex.getMessage();
        gs.error(message);
      }

    })();

Saída:

    *** Script: FlowRunnerResult
    Flow Object Name: global.test_flow
    Flow Object Type: flow
    Domain: null
    Result Time: 2020-06-08 16:41:13
    ContextId: null
    Output count: 0

## ScriptableFlowRunner - withConnectionAliasOverride (cadeia de caracteres aliasName, cadeia de caracteres overrideName) {#ariaid-title15}

Substitui o alias Conexões e credenciais associado ao fluxo, ação ou subfluxo. Você pode substituir o alias primário padrão por qualquer um dos aliases secundários.
Para saber mais sobre como substituir um alias Conexões e credenciais, consulte [Suporte a várias conexões](https://www.servicenow.com/docs/access?context=support-multiple-connections&version=xanadu&pubname=xanadu-integrate-applications&ft:locale=en-US).
{#FR-wConnectionAliasOverride_S_S__table_av4_gv5_rlb__entry__3}

| Nome | Tipo | Descrição |
|-|-|-|
| parentAliasSysID | Cadeia de caracteres | O sys_id do alias primário, o alias que você deseja substituir. |
| overrideAliasSysID | Cadeia de caracteres | O sys_id do alias secundário, o alias que você deseja usar ao executar o fluxo, subfluxo ou ação. |
[Tabela 27. Parâmetros]

{#FR-wConnectionAliasOverride_S_S__table_av4_gv5_rlb} {#FR-wConnectionAliasOverride_S_S__table_bv4_gv5_rlb__entry__2}

| Tipo | Descrição |
|-|-|
| [ScriptableFlowRunner](https://servicenow-prod.fluidtopics.net/N~IwWsqZCQZbCCwUyocCww#ScriptableFlowRunnerScopedAPI "Cria um objeto de construtor usado para definir parâmetros para fluxo, subfluxo e execução de ação. Você pode especificar um fluxo para executar em um domínio específico. Inicie o fluxo, subfluxo ou execução de ação diretamente do construtor e exiba os resultados em um objeto ScriptableFlowRunnerResult.") | Objeto de construtor usado para executar uma ação Workflow Studio, fluxo ou subfluxo. |
[Tabela 28. Retorna]

{#FR-wConnectionAliasOverride_S_S__table_bv4_gv5_rlb}  
Este exemplo mostra como executar um fluxo usando um alias diferente do padrão associado ao fluxo.

    (function() {
      try {

        var result = sn_fd.FlowAPI.getRunner()
          .flow('global.test_flow')
          .withConnectionAliasOverride('sn_original_alias.spoke', 'x_new_alias.spoke')
          .inForeground()
          .run();

        gs.info(result.debug());

      } catch (ex) {
        var message = ex.getMessage();
        gs.error(message);
      }

    })();

## ScriptableFlowRunner - withInputs (entradas de mapa) {#ariaid-title16}

Adiciona uma coleção de entradas. Se já existir um nome em um dos pares de nome-valor, o novo valor substituirá o valor pré-existente.
{#FlowRunner-withInputs_O__table_zw2_vnp_rlb__entry__3}

| Nome | Tipo | Descrição |
|-|-|-|
| entradas | Objeto | Objeto de mapa que contém os pares de nome-valor que definem entradas para o fluxo, subfluxo ou ação. |
[Tabela 29. Parâmetros]

{#FlowRunner-withInputs_O__table_zw2_vnp_rlb} {#FlowRunner-withInputs_O__table_ax2_vnp_rlb__entry__2}

| Tipo | Descrição |
|-|-|
| [ScriptableFlowRunner](https://servicenow-prod.fluidtopics.net/N~IwWsqZCQZbCCwUyocCww#ScriptableFlowRunnerScopedAPI "Cria um objeto de construtor usado para definir parâmetros para fluxo, subfluxo e execução de ação. Você pode especificar um fluxo para executar em um domínio específico. Inicie o fluxo, subfluxo ou execução de ação diretamente do construtor e exiba os resultados em um objeto ScriptableFlowRunnerResult.") | Objeto de construtor usado para executar uma ação Workflow Studio, fluxo ou subfluxo. |
[Tabela 30. Retorna]

{#FlowRunner-withInputs_O__table_ax2_vnp_rlb}  
Cria um objeto de entrada e passa o valor para o método withInputs().


    (function() {
      try {

        var inputs = {}; 

        inputs['sys_id'] = '57af7aec73d423002728660c4cf6a71c';  // Pass the record's sys_id in as input.  

        var result = sn_fd.FlowAPI.getRunner()  // Create a ScriptableFlowRunner builder object.
          .action('global.markapproved')        // Run the global scope action named markapproved.
          .inForeground()
          .inDomain('TOP/ACME')                 // Run the action from the TOP/ACME domain.                               
          .withInputs(inputs)
          .run();                               // Run the action and return a FlowRunnerResult object.

        var contextId = result.getContextId();  // Retrieve the context ID from the result
        var dateRun = result.getDate();
        var domainUsed = result.getDomainId();  // Retrieve the Domain ID from the result.
        var flowName = result.getFlowObjectName();
        var flowObjectType = result.getFlowObjectType();

        var outputs = result.getOutputs();            // Retrieve any outputs from the action execution.
        var newApprovalStatus = outputs['approval'];  // Echo back the approval status for verification.
    		
      } catch (ex) {
        var message = ex.getMessage();
        gs.error(message);
      }
    	
    })();
       
## ScriptableFlowRunner - withRoles() {#ariaid-title17}

Executa o fluxo como o usuário que acionou o fluxo ou executa o fluxo com funções que foram adicionadas em Workflow Studio.
Quando um fluxo é acionado usando quick() junto com o método withRoles(), as funções definidas nas propriedades de fluxo são recuperadas, passadas durante a execução do fluxo e o fluxo é executado com as funções.  
{#FlowRunner-withRoles__table_c33_pts_qtb__entry__3}

| Nome | Tipo | Descrição |
|-|-|-|
| Nenhum |   |   |
[Tabela 31. Parâmetros]

{#FlowRunner-withRoles__table_c33_pts_qtb}  
{#FlowRunner-withRoles__table_l4l_tts_qtb__entry__2}

| Tipo | Descrição |
|-|-|
| [ScriptableFlowRunner - com escopo](https://servicenow-prod.fluidtopics.net/N~IwWsqZCQZbCCwUyocCww#ScriptableFlowRunnerScopedAPI "Cria um objeto de construtor usado para definir parâmetros para fluxo, subfluxo e execução de ação. Você pode especificar um fluxo para executar em um domínio específico. Inicie o fluxo, subfluxo ou execução de ação diretamente do construtor e exiba os resultados em um objeto ScriptableFlowRunnerResult.") | Objeto de construtor usado para executar uma ação Workflow Studio, fluxo ou subfluxo. |
[Tabela 32. Retorna]

{#FlowRunner-withRoles__table_l4l_tts_qtb}  
Este exemplo mostra como criar um objeto do construtor ScriptableFlowRunner e usá-lo para executar uma ação de aprovação em um registro específico usando os métodos withRoles() e quick(). Um objeto ScriptableFlowRunnerResult captura os argumentos de execução e as saídas de ação.

    (function() {
        try {

            var outputs = sn_fd.FlowAPI.getRunner() // Create a ScriptableFlowRunner builder object.
            .flow('global.stry53225960_flow')
            .inForeground()
            .quick() //Run the flow from a server-side script.
            .withRoles() //Run the flow as the user who triggered the flow.
            .run(); // Run the action and return a FlowRunnerResult object.

        } catch (ex) {
            var message = ex.getMessage();
            gs.error(message);

        }  

    })();

### Erros {#FlowRunner-withRoles__section_ckg_zsk_5tb}

Esses erros podem ocorrer ao usar o método withRoles() :

* withRoles() não executará nenhuma operação se não for usado junto com quick().
* O script retorna um erro quando withRoles() é chamado em um fluxo que não tem funções.
* O script retorna um erro quando os métodos withRoles() e asUser() são chamados ao mesmo tempo.
{#FlowRunner-withRoles__ul_zcv_ctk_5tb}

