FlowAPI - escopo, global

  • Versão de lançamento: Zurich
  • Atualizado 31 de jul. de 2025
  • 44 min. de leitura
  • . FlowAPI fornece métodos para executar ações, fluxos ou subfluxos em scripts do lado do servidor usando métodos de bloqueio ou não bloqueio.

    Acesso FlowAPI métodos em scripts globais e com escopo usando sn_fd namespace. Crie chamadas para seus fluxos usando Snippet de código ação em Workflow Studio ou use os métodos detalhados aqui para atualizar scripts manualmente.

    Nota:
    Em instâncias separadas por domínio, fluxos, subfluxos e ações acionadas por esta API são executados no domínio do usuário que iniciou o script. Por exemplo, se um usuário no domínio Acme iniciar um script que aciona um fluxo, o fluxo será executado no domínio Acme e só poderá acessar os dados do Acme, mesmo que o fluxo seja executado como o Usuário do sistema.
    Nota:
    Para otimizar o desempenho da instância, evite chamar esses métodos a partir de um script de regra de negócio assíncrono. Em vez disso, crie um registro de trabalho agendado no Workflow Studio IU.

    FlowAPI - cancel (cadeia de caracteres contextId, motivo da cadeia de caracteres)

    Cancela um fluxo, subfluxo ou ação pausado ou em execução.

    Tabela 1. Parâmetros
    Nome Tipo Descrição
    contextId Cadeia de caracteres Sys_id do registro de detalhes da execução do fluxo, subfluxo ou ação. Acesse os detalhes da execução navegando até a guia Execuções de fluxo em Workflow Studio ou passe o sys_id do registro de contexto retornado pelo StartFlow() , StartSubflow() ou StartAction() métodos.
    Nota:
    Pode haver um pequeno atraso no cancelamento se o contexto de destino estiver em execução em um nó diferente da instância. Os contextos em execução no mesmo nó são cancelados imediatamente. Os contextos em execução em outro nó devem aguardar primeiro o cancelamento ser encaminhado para o nó apropriado.
    motivo Cadeia de caracteres Opcional. Motivo para cancelar o fluxo, o subfluxo ou a ação. Aparece em Mensagem Campo da tabela Entradas de log do mecanismo de fluxo [sys_flow_log].
    Tabela 2. Retornos
    Tipo Descrição
    vazio

    Este exemplo usa o valor de retorno de StartFlow() método para cancelar fluxos de longa execução.

    (function() { 
    
    var now_GR = new GlideRecord('incident'); 
    now_GR.addQuery('number', 'INC0000050'); 
    now_GR.query(); 
    now_GR.next(); 
    
          try { 
              var inputs = {}; 
              inputs['current'] = now_GR; // GlideRecord of table: 
              inputs['table_name'] = 'incident'; 
    
              // Starts the flow asynchronously.
              var result = sn_fd.FlowAPI.getRunner()
              .flow('global.myFlow')
              .inBackground()
              .withInputs(inputs)
              .run();
    
              var contextId = result.getContextId();
              var dateRun = result.getDate();
              var domainUsed = result.getDomainId();
              var flowName = result.getFlowObjectName();
              var flowObjectType = result.getFlowObjectType(); 
    
          } catch (ex) { 
              var message = ex.getMessage(); 
              gs.error(message); 
          } 
    })();
    
     
    // Call the cancel() method using the context Id returned from the startFlow() method
    sn_fd.FlowAPI.cancel(contextId, 'Flow took too long to execute.');

    Este exemplo cancela todos os fluxos chamados Fluxo de teste.

    var now_GR = new GlideRecord("sys_flow_context");
    now_GR.addQuery("name", "Test Flow");
    now_GR.query();
    
    while (now_GR.next()) {
    sn_fd.FlowAPI.cancel(now_GR.getUniqueValue(), 'Canceling Test Flows');
    } 

    FlowAPI - executeAction (nome da cadeia de caracteres, entradas do mapa, tempo limite do número)

    Executa uma ação de um script do lado do servidor de forma síncrona.

    Execute uma ação de dentro de uma regra de negócio, inclusão de script ou qualquer outro script do lado do servidor. As ações executadas usando este método são executadas de forma síncrona, portanto, o método tem acesso às saídas criadas pela ação. Usar StartAction para executar uma ação de forma assíncrona.
    Nota:
    Esta API foi substituída por ScriptableFlowRunner - Com escopo, que descontinuado os métodos existentes usados para criar objetos e executar Workflow Studio fluxos e ações. Use GetRunner() método no FlowAPI Classe para retornar um objeto ScriptableFlowRunner e usar os métodos associados. Use ScriptableFlowRunner se você precisar oferecer suporte ao domain separation.
    Nota:
    Este método executa a ação como o usuário que inicia a sessão.
    Tabela 3. Parâmetros
    Nome Tipo Descrição
    nome Cadeia de caracteres O escopo e o nome da ação a ser executada, por exemplo global.action_name .
    entradas Mapa Pares nome-valor que definem entradas de ação. Use o nome de entrada, não o rótulo de entrada.
    timeout Número Opcional. Tempo limite em milissegundos. Este valor substitui o tempo limite padrão de 30 segundos especificado pelo com.glide.hub.flow_api.default_execution_timepropriedade do sistema. Depois que o tempo limite expira, uma exceção é lançada.
    Tabela 4. Retornos
    Tipo Descrição
    Objeto As saídas da ação.

    Neste exemplo, o script usa sn_fd.FlowAPI.executeAction para executar uma ação chamada actionforpassword2test no escopo global. Uma variável chamada Entradas contém as entradas da ação. Nesse caso, um nome e uma senha. As saídas da ação são armazenadas na variável de saídas, que, nesse caso, é um objeto de senha criptografado. O código é encapsulado em uma instrução try/catch para capturar todos os erros que possam ocorrer quando o fluxo é executado.

    (function() {
    	
      try {
        var inputs = {};
        inputs['name'] = ; // String 
        inputs['password2'] = ; // Password (2 Way Encrypted) 
    		
        // Execute Synchronously: Run in foreground. Code snippet has access to outputs.
        // var timeout = ; //timeout in ms
        //sn_fd.FlowAPI.executeAction('global.actionforpassword2test', inputs, timeout)
        var outputs = sn_fd.FlowAPI.executeAction('global.actionforpassword2test', inputs);
    
        // Get Outputs:
        // Note: outputs can only be retrieved when executing synchronously.
        var output = outputs['output']; // Password (2 Way Encrypted)
    		
      } catch (ex) {
        var message = ex.getMessage();
        gs.error(message);
      }
    })();

    FlowAPI - executeActionQuick (nome da cadeia de caracteres, entradas do mapa, tempo limite do número)

    Execute uma ação de um script do lado do servidor de forma síncrona a partir da sessão do usuário atual sem criar detalhes de execução ou outros registros relacionados. Melhore o desempenho eliminando 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.

    Relatórios e registros gerados
    Independentemente de. Este método não cria detalhes de execução e registros de contexto Workflow Studio configurações.
    Aguarde o suporte
    Este método não oferece suporte à pausa da ação para aguardar condições. Etapas que pausam para condições de espera, como Solicitar aprovação ou Aguardar condiçã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 para executar a partir de um MID Server.
    Nota:
    Esta API foi substituída por ScriptableFlowRunner - Com escopo, que descontinuado os métodos existentes usados para criar objetos e executar Workflow Studio fluxos e ações. Use GetRunner() método no FlowAPI Classe para retornar um objeto ScriptableFlowRunner e usar os métodos associados. Use ScriptableFlowRunner se você precisar oferecer suporte ao domain separation.
    Tabela 5. Parâmetros
    Nome Tipo Descrição
    nome Cadeia de caracteres Escopo e nome interno da ação a ser executada. Por exemplo, global.action_name . Localize Nome interno campo na lista de Workflow Studio ações.
    entradas Mapa Pares nome-valor que definem entradas de ação. Você pode encontrar as entradas de ação disponíveis e os tipos de dados necessários em Entradas na descrição da ação. Use o nome de entrada, não o rótulo de entrada. Por exemplo, "table":"incident", "sys_id":"a39d8e3cf0212300964feefe80ff0ed" .
    timeout Número

    Opcional. Tempo limite em milissegundos. Este valor substitui o tempo limite padrão de 30 segundos especificado pelo com.glide.hub.flow_api.default_execution_timepropriedade do sistema. Depois que o tempo limite expira, uma exceção é lançada.

    Tabela 6. Retornos
    Tipo Descrição
    Objeto Objeto que contém saídas definidas pela ação. Você pode encontrar as saídas da ação em Saídas na descrição da ação.
    (function() {
      try {
    
        var grIncident = new GlideRecord('incident');
        grIncident.get('57af7aec73d423002728660c4cf6a71c');
    
        var inputs = {};
        inputs['variable'] = grIncident;
    
        var outputs = sn_fd.FlowAPI.executeActionQuick('global.update_record_test', inputs);
    
        // Get Outputs:
        // Note: outputs can only be retrieved when executing synchronously.
        var output1 = outputs['output1']; 
    
      } catch (ex) { 
        var message = ex.getMessage();
        gs.error(message);
        }
    	
    })();

    FlowAPI - executeDataStreamAction (nome da cadeia de caracteres, entradas do mapa, tempo limite do número)

    Executa uma ação de Fluxo de dados de forma síncrona a partir de um script do lado do servidor e retorna um objeto ScriptableDataStream.

    Para obter mais informações sobre ações de fluxo de dados, consulte Paginação e ações de fluxo de dados .

    Nota:
    Esta API foi substituída por ScriptableFlowRunner - Com escopo, que descontinuado os métodos existentes usados para criar objetos e executar Workflow Studio fluxos e ações. Use GetRunner() método no FlowAPI Classe para retornar um objeto ScriptableFlowRunner e usar os métodos associados. Use ScriptableFlowRunner se você precisar oferecer suporte ao domain separation.
    Nota:
    Sempre encapsular lógica de fluxo de dados em um try/catch bloquear para detectar erros. Sempre inclua um por fim declaração que termina com fechar() método do ScriptableDataStream classe para fechar o fluxo de dados e evitar problemas de desempenho.
    Tabela 7. Parâmetros
    Nome Tipo Descrição
    nome Cadeia de caracteres O escopo e o nome da ação de fluxo de dados a ser executada. Por exemplo, global.data_stream_action_name .
    entradas Mapa Pares nome-valor que definem entradas de ação. Use o nome de entrada, não o rótulo de entrada. Se a ação não tiver entradas, não inclua este parâmetro.
    timeout Número Opcional. Tempo antes que a ação atinja o tempo limite. Depois que o tempo limite expira, uma exceção é lançada. O tempo limite se aplica somente ao ExecutoDataStreamAction método, não para métodos em ScriptableDataStream classe.

    Padrão: 30000, especificado pelo com.glide.hub.flow_api.default_execution_timepropriedade do sistema

    Unidade: Milissegundos

    Tabela 8. Retornos
    Tipo Descrição
    ScriptableDataStream Um objeto usado para iterar itens no fluxo de dados. Use os métodos em ScriptableDataStream classe para interagir com este objeto. Consulte API ScriptableDataStream .

    Este exemplo cria um registro de incidente para cada item retornado no fluxo de dados.

    (function() {
    	
      try {
    
        // Execute Data Stream Action. 
        var stream = sn_fd.FlowAPI.executeDataStreamAction('x_my_scope.data_stream_name');
    
        // Process each item in the data stream
        while (stream.hasNext()) {
    
          // Get a single item from the data stream.
          var item = stream.next();
    
          // Use the item. 
          var now_GR = new GlideRecord('incident');
          now_GR.setValue('number',item.id);
          now_GR.setValue('short_description',item.name);
          now_GR.insert();
    		
          // By default, this code snippet will terminate after 10 items.
          // Remove or modify this limit after testing your code.
          if (stream.getItemIndex() >= 9) {
            break;
          }
        }
      } catch (ex) {
        var message = ex.getMessage();
        gs.error(message);
      } finally {
        stream.close();
      }
    	
    })();

    FlowAPI - executeFlow (nome da cadeia de caracteres, entradas do mapa, tempo limite do número)

    Executa um fluxo de um script do lado do servidor de forma síncrona.

    Execute um fluxo de dentro de uma regra de negócios, inclusão de script ou qualquer outro script do lado do servidor. Os fluxos executados usando este método são executados de forma síncrona. Usar StartFlow para executar um fluxo de forma assíncrona.
    Nota:
    Esta API foi substituída por ScriptableFlowRunner - Com escopo, que descontinuado os métodos existentes usados para criar objetos e executar Workflow Studio fluxos e ações. Use GetRunner() método no FlowAPI Classe para retornar um objeto ScriptableFlowRunner e usar os métodos associados. Use ScriptableFlowRunner se você precisar oferecer suporte ao domain separation.
    Nota:
    Este método executa o fluxo conforme o usuário especificado nas propriedades de fluxo.
    Tabela 9. Parâmetros
    Nome Tipo Descrição
    nome Cadeia de caracteres O escopo e o nome do fluxo a ser executado, por exemplo global.flow_name .
    entradas Mapa Pares nome-valor que definem entradas do gatilho. Use o nome de entrada, não o rótulo de entrada.
    timeout Número Opcional. Tempo limite em milissegundos. Este valor substitui o tempo limite padrão de 30 segundos especificado pelo com.glide.hub.flow_api.default_execution_timepropriedade do sistema. Depois que o tempo limite expira, uma exceção é lançada.
    Tabela 10. Retornos
    Tipo Descrição
    Nenhum(a) A operação normal não produz nenhum valor de retorno.
    Exceção A API lança uma exceção quando um fluxo chamado pausa de forma síncrona. A execução atual está no estado Aguardando . Na maioria dos casos, a exceção é removida quando o fluxo é retomado. No entanto, a API não pode retomar um fluxo que foi enviado para um MID Server.

    Este exemplo usa sn_fd.FlowAPI.executeFlow para executar um fluxo global chamado test_flow. Este fluxo é normalmente acionado quando um registro na tabela de incidentes é atualizado. Como você está ativando o fluxo de um script, você deve fornecer essas informações. O código cria uma variável de entradas que contém o registro atual e a tabela do registro. O código é encapsulado em uma instrução try/catch para capturar todos os erros que possam ocorrer quando o fluxo é executado.

    (function() {
      try {
        var inputs = {};
        inputs['current'] = ; // GlideRecord of table:  
        inputs['table_name'] = 'incident';
    
        // Execute Synchronously: Run in foreground.
        // var timeout = ; //timeout in ms
        //sn_fd.FlowAPI.executeFlow('global.test_flow', inputs, timeout)
        sn_fd.FlowAPI.executeFlow('global.test_flow', inputs);
      } catch (ex) {
        var message = ex.getMessage();
        gs.error(message);
      }
    })();

    FlowAPI - executeFlowQuick (nome da cadeia de caracteres, entradas do mapa, tempo limite do número)

    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.

    Relatórios e registros gerados
    Independentemente de. Este método não cria detalhes de execução e registros de contexto Workflow Studio configurações.
    Executar como usuário
    Este método executa o fluxo como o usuário que inicia a sessão. Não há suporte para definir o fluxo para ser executado como o usuário do sistema ou representar um usuário.
    Aguarde o suporte
    Este método não oferece suporte à pausa do fluxo para aguardar condições. Ações ou lógica de fluxo que pausam 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 oferece suporte à pausa de um fluxo para execução de um MID Server.
    Nota:
    Esta API foi substituída por ScriptableFlowRunner - Com escopo, que descontinuado os métodos existentes usados para criar objetos e executar Workflow Studio fluxos e ações. Use GetRunner() método no FlowAPI Classe para retornar um objeto ScriptableFlowRunner e usar os métodos associados. Use ScriptableFlowRunner se você precisar oferecer suporte ao domain separation.
    Tabela 11. Parâmetros
    Nome Tipo Descrição
    nome Cadeia de caracteres Escopo e nome interno do fluxo a ser executado. Por exemplo, global.flow_name . Localize Nome interno campo na lista de Workflow Studio fluxos.
    entradas Mapa Pares nome-valor que definem entradas do gatilho. Você pode encontrar as entradas de gatilho disponíveis e os tipos de dados necessários na seção Gatilho do fluxo. Use o nome de entrada, não o rótulo de entrada. Por exemplo, "table":"incident", "sys_id":"a39d8e3cf0212300964feefe80ff0ed" .
    timeout Número Opcional. Tempo limite em milissegundos. Este valor substitui o tempo limite padrão de 30 segundos especificado pelo com.glide.hub.flow_api.default_execution_timepropriedade do sistema. Depois que o tempo limite expira, uma exceção é lançada.
    Tabela 12. Retornos
    Tipo Descrição
    vazio
    (function() {
    	
      try {
        var grIncident = new GlideRecord('incident');
        grIncident.get('ed92e8d173d023002728660c4cf6a7bc');
    
        var inputs = {};
        inputs['current'] = grIncident;
        inputs['table_name'] = 'incident';
    		
        sn_fd.FlowAPI.executeFlowQuick('global.test_quick_flow', inputs);
    		
      } catch (ex) {
        var message = ex.getMessage();
        gs.error(message);
    	}
    	
    })();

    FlowAPI - executeSubflow (nome da cadeia de caracteres, entradas do mapa, tempo limite do número)

    Executa um subfluxo de um script do lado do servidor de forma síncrona.

    Execute um subfluxo de dentro de uma regra de negócio, inclusão de script ou qualquer outro script do lado do servidor. Os subfluxos executados usando este método são executados de forma síncrona. Usar StartSubflow para executar um subfluxo de forma assíncrona.
    Nota:
    Esta API foi substituída por ScriptableFlowRunner - Com escopo, que descontinuado os métodos existentes usados para criar objetos e executar Workflow Studio fluxos e ações. Use GetRunner() método no FlowAPI Classe para retornar um objeto ScriptableFlowRunner e usar os métodos associados. Use ScriptableFlowRunner se você precisar oferecer suporte ao domain separation.
    Nota:
    Este método executa o fluxo conforme o usuário especificado nas propriedades de fluxo.
    Tabela 13. Parâmetros
    Nome Tipo Descrição
    nome Cadeia de caracteres O escopo e o nome do subfluxo a ser executado, por exemplo subflow_name .
    entradas Mapa Pares nome-valor que definem entradas de subfluxo. Use o nome de entrada, não o rótulo de entrada.
    timeout Número Opcional. Tempo limite em milissegundos. Este valor substitui o tempo limite padrão de 30 segundos especificado pelo com.glide.hub.flow_api.default_execution_timepropriedade do sistema. Depois que o tempo limite expira, uma exceção é lançada.
    Tabela 14. Retornos
    Tipo Descrição
    Objeto Objeto que contém as saídas de subfluxo.
    Exceção A API lança uma exceção quando um fluxo chamado pausa de forma síncrona. A execução atual está no estado Aguardando . Na maioria dos casos, a exceção é removida quando o fluxo é retomado. No entanto, a API não pode retomar um fluxo que foi enviado para um MID Server.

    Neste exemplo, o script usa sn_fd.FlowAPI.executeSubflow para executar um subfluxo chamado subflowTest no escopo global. Uma variável chamada Entradas contém as entradas para o subfluxo. Nesse caso, um nome e uma senha. O código é encapsulado em uma instrução try/catch para capturar todos os erros que possam ocorrer quando o fluxo é executado.

    
    (function() {
    	
    	try {
    		var inputs = {};
    		inputs['name'] = ; // String 
    		inputs['password2'] = ; // Password (2 Way Encrypted) 
    		
    		// Execute Synchronously: Run in foreground.
    		// var timeout = ; //timeout in ms
                  //sn_fd.FlowAPI.executeSubflow('global.subflowTest', inputs, timeout)
                  var outputs = sn_fd.FlowAPI.executeSubflow('global.subflowTest', inputs);
    		
    	} catch (ex) {
    		var message = ex.getMessage();
    		gs.error(message);
    	}	
    })();

    FlowAPI - executeSubflowQuick (nome da cadeia de caracteres, entradas do mapa, tempo limite do número)

    Execute um subfluxo de um script do lado do servidor de forma síncrona a partir da sessão do usuário atual sem criar detalhes de execução ou outros registros relacionados. Melhore o desempenho eliminando 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.

    Relatórios e registros gerados
    Independentemente de. Este método não cria detalhes de execução e registros de contexto Workflow Studio configurações.
    Executar como usuário
    Este método executa o fluxo como o usuário que inicia a sessão. Não há suporte para definir o fluxo para ser executado como o usuário do sistema ou representar um usuário.
    Aguarde o suporte
    Este método não oferece suporte à pausa do fluxo para aguardar condições. Ações ou lógica de fluxo que pausam 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 oferece suporte à pausa de um fluxo para execução de um MID Server.
    Nota:
    Esta API foi substituída por ScriptableFlowRunner - Com escopo, que descontinuado os métodos existentes usados para criar objetos e executar Workflow Studio fluxos e ações. Use GetRunner() método no FlowAPI Classe para retornar um objeto ScriptableFlowRunner e usar os métodos associados. Use ScriptableFlowRunner se você precisar oferecer suporte ao domain separation.
    Tabela 15. Parâmetros
    Nome Tipo Descrição
    nome Cadeia de caracteres Escopo e nome interno do subfluxo a ser executado. Por exemplo, global.subflow_name. Localize Nome interno campo na lista de Workflow Studio subfluxos.
    entradas Mapa Pares nome-valor que definem entradas de subfluxo. Você pode encontrar as entradas de subfluxo disponíveis e os tipos de dados necessários em Entradas no subfluxo. Use o nome de entrada, não o rótulo de entrada. Por exemplo, "table":"incident", "sys_id":"a39d8e3cf0212300964feefe80ff0ed" .
    timeout Número Opcional. Tempo limite em milissegundos. Este valor substitui o tempo limite padrão de 30 segundos especificado pelo com.glide.hub.flow_api.default_execution_timepropriedade do sistema. Depois que o tempo limite expira, uma exceção é lançada.
    Tabela 16. Retornos
    Tipo Descrição
    Objeto Objeto que contém saídas definidas pelo subfluxo. Você pode encontrar as saídas do subfluxo em Entradas e saídas de subfluxo na descrição do subfluxo.
    (function() {
    
      try {
        var grIncident = new GlideRecord('incident');
        grIncident.get('57af7aec73d423002728660c4cf6a71c');
    
        var inputs = {};
        inputs['variable'] = grIncident;
    
        var outputs = sn_fd.FlowAPI.executeSubflowQuick('global.test_quick_run_subflow', inputs);
    
        // Get Outputs:
        // Note: outputs can only be retrieved when executing synchronously.
        var output1 = outputs['output1']; 
    		
      } catch (ex) {
        var message = ex.getMessage();
        gs.error(message);
        }
    	
    })();

    FlowAPI - getErrorMessage(cadeia de caracteres contexId)

    Retorna as mensagens de erro produzidas por um fluxo, subfluxo ou ação. Este método não pode retornar mensagens de fluxos, subfluxos ou ações executadas com a API quick().

    Tabela 17. Parâmetros
    Nome Tipo Descrição
    contextId Cadeia de caracteres O sys_id do fluxo, subfluxo ou ação cujas mensagens de erro você deseja obter.
    Tabela 18. Retornos
    Tipo Descrição
    Cadeia de caracteres A última operação executada e a mensagem de erro que ela produziu.

    Este exemplo inicia um subfluxo global chamado test_error_subflow e retorna todas as mensagens de erro que ele produz. Um único script não executa um fluxo e, em seguida, recebe suas mensagens de erro. Normalmente, outro script ou Workflow Studio já teria executado o fluxo. O código é encapsulado em uma instrução try/catch para capturar todos os erros que possam ocorrer quando o fluxo é executado.

    (function() {
    
      try {
        // Gather inputs to call flow
        var inputs = {};
        inputs['ah_task'] = myTaskRecord; // GlideRecord of table: task
        inputs['ah_comment'] ='Test Comment' ; // String
    
        // Call flow with known errors
        var contextId = sn_fd.FlowAPI.startSubflow('global.test_error_subflow', inputs);
    
        // Get flow error message
        var errormsg = sn_fd.FlowAPI.getErrorMessage(contextId);
        return errormsg;
    
      } catch (ex) {
        var message = ex.getMessage();
        gs.error(message);
      }
    })();
    

    Saída:

    Operation (test_error_flow.574033f6db6811102166e2291396199f.274073f6db6811102166e22913961908.0be0d916c31332002841b63b12d3ae13) failed with error: com.snc.process_flow.exception.OpException: Value of field record is not a GlideRecord
    at com.snc.process_flow.operation.FieldValue.getGlideRecord(FieldValue.java:145)
    at com.snc.process_flow.operation.CRUDOperation.getInputValidGlideRecord(CRUDOperation.java:54)
    at com.snc.process_flow.operation.RecordDeleteOperation.run(RecordDeleteOperation.java:26)
    at com.snc.process_flow.engine.Operation.execute(Operation.java:212)
    at com.snc.process_flow.engine.restricted_caller_access.ExecuteWithCallerAccessTracking.executeWithMetaStack(ExecuteWithCallerAccessTracking.java:31)
    at com.snc.process_flow.engine.ProcessEngine.executeOps(ProcessEngine.java:570)
    at com.snc.process_flow.engine.ProcessEngine.runInternal(ProcessEngine.java:476)
    at com.snc.process_flow.engine.ProcessEngine.run(ProcessEngine.java:462)
    at com.snc.process_flow.engine.ProcessAutomation.run(ProcessAutomation.java:86)
    at com.snc.process_flow.engine.GlideProcessAutomation.runSync(GlideProcessAutomation.java:155)
    at com.snc.process_flow.engine.GlideProcessAutomation.runWithDomain(GlideProcessAutomation.java:270)
    at com.snc.process_flow.engine.GlideProcessAutomation.lambda$runAsUserSync$1(GlideProcessAutomation.java:237)
    at com.snc.process_flow.engine.PFSessionClone.run(PFSessionClone.java:70)
    at com.snc.process_flow.engine.GlidePFSession.runPlanAsUserSession(GlidePFSession.java:42)
    at com.snc.process_flow.engine.GlideProcessAutomation.runAsUserSync(GlideProcessAutomation.java:235)
    at com.snc.process_flow.engine.GlideProcessAutomation.messageFlow(GlideProcessAutomation.java:330)
    at com.snc.process_flow.engine.GlideProcessAutomation.messageFlow(GlideProcessAutomation.java:309)
    at com.snc.process_flow.engine.ProcessHubEventHandler.doSendMessage(ProcessHubEventHandler.java:475)
    at com.snc.process_flow.engine.ProcessHubEventHandler.process(ProcessHubEventHandler.java:119)
    at com.snc.process_flow.engine.ProcessHubEventHandler.process(ProcessHubEventHandler.java:91)
    at com.snc.process_flow.engine.FlowEventManager.processEvents(FlowEventManager.java:122)
    at com.glide.job.EventHandlerJob.execute(EventHandlerJob.java:38)
    at com.glide.schedule.JobExecutor.lambda$executeJob$0(JobExecutor.java:129)
    at com.snc.db.data_replicate.replicator.DataReplicationAdvisors.runInOriginatorContext(DataReplicationAdvisors.java:73)
    at com.glide.schedule.JobExecutor.lambda$inDataReplicationContext$2(JobExecutor.java:159)
    at com.glide.schedule.JobExecutor.executeJob(JobExecutor.java:132)
    at com.glide.schedule.JobExecutor.execute(JobExecutor.java:116)
    at com.glide.schedule_v2.SchedulerWorkerThread.executeJob(SchedulerWorkerThread.java:338)
    at com.glide.schedule_v2.SchedulerWorkerThread.lambda$process$0(SchedulerWorkerThread.java:220)
    at com.glide.worker.TransactionalWorkerThread.executeInTransaction(TransactionalWorkerThread.java:35)
    at com.glide.schedule_v2.SchedulerWorkerThread.process(SchedulerWorkerThread.java:220)
    at com.glide.schedule_v2.SchedulerWorkerThread.run(SchedulerWorkerThread.java:101)

    FlowAPI - getFlowStages(cadeia de caracteres scopedFlowName)

    Retorne uma cadeia de caracteres JSON que contém a lista de fases de fluxo.

    Tabela 19. Parâmetros
    Nome Tipo Descrição
    ScopedFlowName Cadeia de caracteres O escopo da aplicação e o nome do fluxo cujas fases você deseja obter.
    Tabela 20. Retornos
    Tipo Descrição
    Cadeia de caracteres Cadeia de caracteres formatada JSON que lista as fases do fluxo por seus valores de registro de fase.

    Este exemplo mostra como obter as fases do fluxo de solicitação de item do catálogo de serviços.

    (function() {
    
      try {
        // Name of flow with stages
        var flowName = "service_catalog_item_request";
    
        // Get flow stages
        var flowStages = sn_fd.FlowAPI.getFlowStages(flowName);
        //Print JSON as info message  
        gs.info(flowStages);
        return flowStages;
    
      } catch (ex) {
        var message = ex.getMessage();
        gs.error(message);
      }
    })();
    

    Saída:

    A cadeia de caracteres JSON contém pares nome-valor para um campo de fase. Para obter mais informações, consulte .

    [
      {
        "label": "Manager Approval",
        "value": "manager_approval",
        "type": "standard",
        "duration": "1970-01-03 00:00:00",
        "states": {
          "pending": "Pending - has not started",
          "inprogress": "In progress",
          "skipped": "Skipped",
          "complete": "Completed",
          "error": "Error"
        },
        "flow": "30f3d26187e92300e0ef0cf888cb0b91",
        "alwaysShow": true,
        "order": 0
      },
      {
        "label": "Set current stage state to:  [Error]",
        "value": "Set current stage state to:  [Error]",
        "type": "error",
        "duration": "1970-01-01 00:00:00",
        "states": {
          "pending": "Pending - has not started",
          "inprogress": "In progress",
          "skipped": "Skipped",
          "complete": "Completed",
          "error": "Error"
        },
        "flow": "30f3d26187e92300e0ef0cf888cb0b91",
        "alwaysShow": false,
        "order": 0
      },
      {
        "label": "Dept. Head Approval",
        "value": "Dept. Head Approval",
        "type": "standard",
        "duration": "1970-01-03 00:00:00",
        "states": {
          "pending": "Pending - has not started",
          "inprogress": "In progress",
          "skipped": "Skipped",
          "complete": "Completed",
          "error": "Error"
        },
        "flow": "30f3d26187e92300e0ef0cf888cb0b91",
        "alwaysShow": true,
        "order": 1
      },
      {
        "label": "CIO Approval",
        "value": "CIO Approval",
        "type": "standard",
        "duration": "1970-01-03 00:00:00",
        "states": {
          "pending": "Pending - has not started",
          "inprogress": "In progress",
          "skipped": "Skipped",
          "complete": "Completed",
          "error": "Error"
        },
        "flow": "30f3d26187e92300e0ef0cf888cb0b91",
        "alwaysShow": true,
        "order": 2
      },
      {
        "label": "Order Fulfillment",
        "value": "Order Fulfillment",
        "type": "standard",
        "duration": "1970-01-05 00:00:00",
        "states": {
          "pending": "Pending - has not started",
          "inprogress": "In progress",
          "skipped": "Skipped",
          "complete": "Completed",
          "error": "Error"
        },
        "flow": "30f3d26187e92300e0ef0cf888cb0b91",
        "alwaysShow": true,
        "order": 3
      },
      {
        "label": "Backordered",
        "value": "Backordered",
        "type": "standard",
        "duration": "1970-01-15 00:00:00",
        "states": {
          "pending": "Pending - has not started",
          "inprogress": "In progress",
          "skipped": "Skipped",
          "complete": "Completed",
          "error": "Error"
        },
        "flow": "30f3d26187e92300e0ef0cf888cb0b91",
        "alwaysShow": true,
        "order": 4
      },
      {
        "label": "Deployment",
        "value": "Deployment",
        "type": "standard",
        "duration": "1970-01-02 00:00:00",
        "states": {
          "pending": "Pending - has not started",
          "inprogress": "In progress",
          "skipped": "Skipped",
          "complete": "Completed",
          "error": "Error"
        },
        "flow": "30f3d26187e92300e0ef0cf888cb0b91",
        "alwaysShow": true,
        "order": 5
      },
      {
        "label": "Request Cancelled",
        "value": "Request Cancelled",
        "type": "standard",
        "duration": "1970-01-01 00:00:00",
        "states": {
          "pending": "Pending - has not started",
          "inprogress": "In progress",
          "skipped": "Skipped",
          "complete": "Completed",
          "error": "Error"
        },
        "flow": "30f3d26187e92300e0ef0cf888cb0b91",
        "alwaysShow": true,
        "order": 6
      },
      {
        "label": "Completed",
        "value": "complete",
        "type": "standard",
        "duration": "1970-01-01 00:00:00",
        "states": {
          "pending": "Pending - has not started",
          "inprogress": "In progress",
          "skipped": "Skipped",
          "complete": "Completed",
          "error": "Error"
        },
        "flow": "30f3d26187e92300e0ef0cf888cb0b91",
        "alwaysShow": true,
        "order": 7
      }
    ]

    FlowAPI - getOutputs(cadeia de caracteres contexId)

    Retorna as saídas de uma ação ou subfluxo concluído.

    Você pode usar os valores de retorno do StartAction() ou StartSubflow() Como o parâmetro contextId.
    Nota:
    Esta API foi substituída por ScriptableFlowRunner - Com escopo, que descontinuado os métodos existentes usados para criar objetos e executar Workflow Studio fluxos e ações. Use GetRunner() método no FlowAPI Classe para retornar um objeto ScriptableFlowRunner e usar os métodos associados. Use ScriptableFlowRunner se você precisar oferecer suporte ao domain separation.
    Tabela 21. Parâmetros
    Nome Tipo Descrição
    contextId Cadeia de caracteres O sys_id da ação ou subfluxo cujas saídas você deseja obter.
    Tabela 22. Retornos
    Tipo Descrição
    Objeto Objeto que contém as saídas de ação ou subfluxo.

    Este exemplo inicia um subfluxo global chamado test_subflow, aguarda a conclusão do fluxo e obtém seus valores de saída. Normalmente, um único script não executa um fluxo e obtém seus valores de saída. Uma vez que um fluxo pode não ser concluído antes de GetOutputs() chamada, este exemplo usa um tempo de espera. Normalmente, outro script ou Workflow Studio já teria executado o fluxo. O código é encapsulado em uma instrução try/catch para capturar todos os erros que possam ocorrer quando o fluxo é executado.

    (function() {
    
      try {
        // Gather inputs to call flow
        var inputs = {};
        inputs['ah_task'] = myTaskRecord; // GlideRecord of table: task
        inputs['ah_comment'] ='Test Comment' ; // String
    
        // Call flow
        var contextId = sn_fd.FlowAPI.startSubflow('global.test_subflow', inputs);
    
        // Wait for the flow to finish running
    
        // Get flow outputs
        var outputs = sn_fd.FlowAPI.getOutputs(contextId);
        var output1 = outputs['output1'];
        return output1;
    
      } catch (ex) {
        var message = ex.getMessage();
        gs.error(message);
      }
    })();
    

    FlowAPI - getRunner()

    Retorna um ScriptableFlowRunner objeto do construtor para um fluxo ou ação que você deseja executar.

    Tabela 23. Parâmetros
    Nome Tipo Descrição
    Nenhum
    Tabela 24. Retorna
    Tipo Descrição
    ScriptableFlowRunner Objeto do construtor usado para executar um Workflow Studio ação, fluxo ou subfluxo.

    Este exemplo executa um fluxo de forma síncrona.

    
    (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);
      }
    	
    })();
       

    FlowAPI - getStatus(cadeia de caracteres contexId)

    Retorna o status de um fluxo, subfluxo ou ação.

    Tabela 25. Parâmetros
    Nome Tipo Descrição
    contextId Cadeia de caracteres O sys_id do fluxo, subfluxo ou ação cujo status você deseja obter.
    Tabela 26. Retornos
    Parâmetro Tipo Descrição
    <Object> Objeto Objeto que contém o estado atual do fluxo, subfluxo ou ação como pares nome-valor.
    {
        "hasLookupError": Boolean,
        "errorMessage": "String",
        "contextStatus": {Object}
      }
    <Object>.HasLookupError Booliano Sinalizador que indica se houve um problema ao pesquisar o status de contexto do fluxo, subfluxo ou ação.
    {
        "hasLookupError": false,
        "errorMessage": "",
        "contextStatus": {Object}
      }
    <Object>.Mensagem de erro Cadeia de caracteres Mensagem de erro retornada pela operação de pesquisa de contexto. Este parâmetro é nulo quando hasLookupErrorfalso.
    {
        "hasLookupError": false,
        "errorMessage": "",
        "contextStatus": {Object}
      }
    <Object>.ContextStatus Objeto Objeto que contém detalhes de estado sobre o fluxo, subfluxo ou ação consultado.
    {
        "hasLookupError": false,
        "errorMessage": "",
        "contextStatus": {
          "state": "COMPLETE",
          "errorState": "NONE"
        }
      }
    <Object>.ContextStatus.state Cadeia de caracteres Estado do fluxo, subfluxo ou contexto de ação. Alguns valores de estado fornecem informações adicionais em parâmetros relacionados.
    • CONCLUÍDO fornece informações adicionais em errorStateparâmetro
    • O ERRO fornece informações adicionais no messageparâmetro
    • CANCELADO fornece informações adicionais no canceledReasonparâmetro
    • IN_PROGRESS fornece informações adicionais no isRunOnMidparâmetro
    • EM ESPERA fornece informações adicionais no waitingOnparâmetro
    {
        "hasLookupError": false,
        "errorMessage": "",
        "contextStatus": {
          "state": "COMPLETE",
          "errorState": "NONE"
        }
      }
    <Object>.ContextStatus.errorState Cadeia de caracteres Estado de conclusão do fluxo produzido pelo tratamento de erros de fluxo. A API gera este parâmetro somente quando o fluxo, o subfluxo ou a ação está no estado CONCLUÍDO.
    • ERROR_CAUGHT
    • ERROR_IGNORADO
    {
        "hasLookupError": false,
        "errorMessage": "",
        "contextStatus": {
          "state": "COMPLETE",
          "errorState": "ERROR_CAUGHT"
        }
      }
    <Object>.ContextStatus.message Cadeia de caracteres Mensagem de erro retornada pelo fluxo, subfluxo ou ação. A API gera este parâmetro somente quando o fluxo, o subfluxo ou a ação está no estado de ERRO.
    {
        "hasLookupError": false,
        "errorMessage": "",
        "contextStatus": {
          "state": "ERROR",
          "message": "Error:  Error Message! (Process Automation.LOG; line 1)"
        }
      }
    <Object>.contextStatus.canceledReason Cadeia de caracteres Mensagem de cancelamento retornada pelo fluxo, subfluxo ou ação. A API gera este parâmetro somente quando o fluxo, o subfluxo ou a ação está no estado CANCELADO.
    {
        "hasLookupError": false,
        "errorMessage": "",
        "contextStatus": {
          "state": "CANCELLED",
          "canceledReason": "User has requested to stop executing the flow"
        }
      }
    <Object>.ContextStatus.isRunOnMid Booliano Sinalizador que indica se o fluxo, o subfluxo ou a ação é executado em um ambiente MID Server. A API gera este parâmetro somente quando o fluxo, o subfluxo ou a ação está no estado IN_PROGRESS.
    {
        "hasLookupError": false,
        "errorMessage": "",
        "contextStatus": {
          "state": "IN_PROGRESS",
          "isRunOnMid": true
        }
      }
      }
    <Object>.ContextStatus.waitingOn Matriz Lista de itens que o fluxo, subfluxo ou ação atual está aguardando. A API gera este parâmetro somente quando o fluxo, o subfluxo ou a ação está no estado AGUARDANDO.
    {
        "hasLookupError": false,
        "errorMessage": "",
        "contextStatus": {
          "state": "WAITING",
          "waitingOn": [
            {
              "order":"1",
              "stepType": "TIMER",
              "endTime": 1713627497643
            },
            {
              "order":"5",
              "stepType": "WAIT_FOR_CONDITION_WITH_TIMEOUT",
              "table": "incident",
              "condition": "sys_id=10e8b43243200210338774d6ebb8f22d^short_description=112",
              "endTime": 1713645497800
            }
          ]
        }
      }
    <Object>.ContextStatus.waitingOn.order Cadeia de caracteres Número da etapa do fluxo do item que está causando a espera do fluxo. Se a ação de espera for uma ação personalizada em um fluxo, o pedido também incluirá um período e o número da etapa de ação personalizada na qual o fluxo está aguardando.
    {
        "hasLookupError": false,
        "errorMessage": "",
        "contextStatus": {
          "state": "WAITING",
          "waitingOn": [
            {
              "order":"1",
              "stepType": "TIMER",
              "endTime": 1713627497643
            },
            {
              "order":"5",
              "stepType": "WAIT_FOR_CONDITION_WITH_TIMEOUT",
              "table": "incident",
              "condition": "sys_id=10e8b43243200210338774d6ebb8f22d^short_description=112",
              "endTime": 1713645497800
            }
          ]
        }
      }
    <Object>.ContextStatus.waitingOn.stepType Cadeia de caracteres Tipo de ação ou etapa de fluxo que está fazendo com que o fluxo, subfluxo ou ação aguarde. A API gera este parâmetro somente quando o fluxo, o subfluxo ou a ação está no estado AGUARDANDO. Aqui estão alguns exemplos comuns.
    • WAIT_FOR_CONDITION
    • WAIT_FOR_CONDITION_WITH_TIMEOUT
    • ASK_FOR_APPROVAL
    • CREATE_TASK_WITH_WAIT
    • TEMPORIZADOR
    • ANS_TIMER
    • SUBFLUXO
    <Object>.ContextStatus.waitingOn.table Cadeia de caracteres Nome da tabela que contém o registro que o fluxo, subfluxo ou ação está aguardando. A API gera este parâmetro somente quando o fluxo, o subfluxo ou a ação está no estado AGUARDANDO e o stepType é WAIT_FOR_CONDITION, WAIT_FOR_CONDITION_WITH_TIMEOUT, ASK_FOR_APPROVAL ou CREATE_TASK_WITH_WAIT.
    {
        "hasLookupError": false,
        "errorMessage": "",
        "contextStatus": {
          "state": "WAITING",
          "waitingOn": [
              {
              "order":"1",
              "stepType": "WAIT_FOR_CONDITION",
              "table": "incident",
              "condition": "sys_id=1347723243200210338774d6ebb8f285^short_description=1238"
              }
            ]
        }
      }
    <Object>.ContextStatus.waitingOn.condition Cadeia de caracteres Condição de consulta do registro que o fluxo, subfluxo ou ação está aguardando. A API gera este parâmetro somente quando o fluxo, o subfluxo ou a ação está no estado AGUARDANDO e há uma condição que deve ser atendida para continuar a execução.
    {
        "hasLookupError": false,
        "errorMessage": "",
        "contextStatus": {
          "state": "WAITING",
          "waitingOn": [
              {
              "order":"1",
              "stepType": "WAIT_FOR_CONDITION",
              "table": "incident",
              "condition": "sys_id=1347723243200210338774d6ebb8f285^short_description=1238"
              }
            ]
        }
      }
    <Object>.ContextStatus.WaitingOn.endTime Inteiro Hora de término em que o fluxo, subfluxo ou ação está aguardando. A API gera esse parâmetro somente quando o fluxo, o subfluxo ou a ação está no estado AGUARDANDO e o stepType é WAIT_FOR_CONDITION_WITH_TIMEOUT, TIMER ou sla_TIMER.
    {
        "hasLookupError": false,
        "errorMessage": "",
        "contextStatus": {
        "state": "WAITING",
        "waitingOn": [
            {
              "order":"3",
              "stepType": "SLA_TIMER",
              "endTime": 1713574610000
            }
        ]
        }
      }
    <Object>.ContextStatus.waitingOn.approvalRule Cadeia de caracteres Regra de aprovação que o fluxo, subfluxo ou ação está aguardando. A API gera este parâmetro somente quando o fluxo, o subfluxo ou a ação está no estado AGUARDANDO e o stepType é ASK_FOR_APPROVAL.
    {
        "hasLookupError": false,
        "errorMessage": "",
        "contextStatus": {
          "state": "WAITING",
          "waitingOn": [
            {
              "order":"3",
              "stepType": "ASK_FOR_APPROVAL",
              "table": "incident",
              "condition": "sys_id=3bd89703372002103387963174924b20^approvalINapproved,rejected,cancelled",
              "approvalRule": "ApprovesAnyU[a8f98bb0eb32010045e1a5115206fe3a,71826bf03710200044e0bfc8bcbe5d3b]"
            }
          ]
        }
      }
    <Object>.ContextStatus.waitingOn.contextId Cadeia de caracteres O sys_id do subfluxo que o fluxo ou subfluxo está aguardando. A API gera este parâmetro somente quando o fluxo ou o subfluxo está no estado AGUARDANDO e o stepType é SUBFLUXO.
    {
        "hasLookupError": false,
        "errorMessage": "",
        "contextStatus": {
        "state": "WAITING",
        "waitingOn": [
            {
              "order":"1",
              "stepType": "SUBFLOW",
              "contextId": "0f724aabd921021020291a665e07e44a"
            }
          ]
        }
      }

    Este exemplo executa um fluxo que contém o seguinte na lógica de fluxo paralelo. Um único script não executa um fluxo e, em seguida, recebe suas mensagens de erro. Normalmente, outro script ou Workflow Studio já teria executado o fluxo.

    (function() {
      try {
        var result = sn_fd.FlowAPI.getRunner()  // Create a ScriptableFlowRunner builder object.
          .flow('global.test_do_in_parallel')   // Run the global scope flow named do_in_parallel.
          .run();                               // Run the flow and return a FlowRunnerResult object.
    
        var contextId = result.getContextId();  // Retrieve the context ID from the result
    
        var flowStatus = sn_fd.FlowAPI
          .getStatus(contextId);                // Retrieve any outputs from the flow execution.
    
        JSON.stringfy(flowStatus);              // Convert object to string
        return flowStatus;
    		
      } catch (ex) {
        var message = ex.getMessage();
        gs.error(message);
      }
    	
    })();
    Saída:
    {
        "hasLookupError": false,
        "errorMessage": "",
        "contextStatus": {
          "state": "WAITING",
          "waitingOn": [
            {
              "order":"1",
              "stepType": "TIMER",
              "endTime": 1713627497643
            },
            {
              "order":"5",
              "stepType": "WAIT_FOR_CONDITION_WITH_TIMEOUT",
              "table": "incident",
              "condition": "sys_id=10e8b43243200210338774d6ebb8f22d^short_description=112",
              "endTime": 1713645497800
            }
          ]
        }
      }

    FlowAPI - hasApprovals(cadeia de caracteres scopedFlowName)

    Verifica se um fluxo em um escopo fornecido contém ações Solicitar aprovação.

    . HasApprovals() O método determina se um fluxo em um determinado escopo contém ações Solicitar aprovação. Este método também verifica se alguma ação Solicitar aprovação no fluxo está aninhada em blocos lógicos de fluxo If. Para obter mais informações, consulte Solicitar ações de aprovação .

    Tabela 27. Parâmetros
    Nome Tipo Descrição
    ScopedFlowName Cadeia de caracteres Escopo e nome interno do fluxo a ser executado. Por exemplo, global.flow_name . Localize Nome interno campo na lista de Workflow Studio fluxos.
    Tabela 28. Retornos
    Tipo Descrição
    Cadeia de caracteres Retorna um dos seguintes valores de cadeia de caracteres:
    • SEMPRE: O fluxo contém uma ação Solicitar aprovação que não está aninhada em uma condicional Se bloco de lógica de fluxo.
    • CONDICIONALMENTE: O fluxo contém uma ação Solicitar aprovação aninhada em uma condicional Se bloco de lógica de fluxo.
    • NÃO: O fluxo não contém nenhuma ação Solicitar aprovação.
    • DESCONHECIDO: Houve um erro de compilação e o sistema não pode determinar se o fluxo contém ações Solicitar aprovação.

    O exemplo a seguir verifica se example_flow fluxo no global O escopo contém todas as ações Solicitar aprovação e registra o resultado em log.

    (function() {
    	
      try {
        var result = sn_fd.FlowAPI.hasApprovals('global.example_flow');
        gs.log('Result: ' + result);
      }
    
      catch (ex) {
        var message = ex.getMessage();
        gs.error(message);
      }
    })();

    FlowAPI - restartFlowFromContext(cadeia de caracteres ContextId, map providedInputs)

    Reinicia um fluxo, subfluxo ou ação que foi executado em segundo plano. Você pode fornecer novas entradas ou omiti-las para reutilizar as entradas fornecidas anteriormente.

    Tabela 29. Parâmetros
    Nome Tipo Descrição
    contextId Cadeia de caracteres O sys_id do fluxo, subfluxo ou ação que você deseja reiniciar. Este fluxo, subfluxo ou ação deve ter sido executado em segundo plano e ter um registro de SysEvent associado.
    Inputs forneceded Objeto Opcional. Objeto de mapa que contém os pares nome-valor que definem entradas de substituição para o fluxo, subfluxo ou ação. Se você omitir ou fornecer um valor nulo para este parâmetro, o fluxo, o subfluxo ou a ação serão executados usando as entradas fornecidas anteriormente.
    Tabela 30. Retornos
    Tipo Descrição
    ScriptableFlowRunnerResultsScoped Objeto que contém os detalhes de execução de um Workflow Studio ação, fluxo ou subfluxo.

    Reinicia um fluxo de amostra que tem um gatilho baseado em registro na tabela Incidente. O fluxo original usou o incidente de amostra INC0008112 como uma entrada. Quando o fluxo é reiniciado, ele usa o incidente de amostra INC0008111 como uma entrada.

    (function() {
      try {
    
        var flowContextID = '4216396ffd7d11107edcf07204c30fd5';     // sys_id of sys_flow_context record
        var oldIncidentRecord = '552c48888c033300964f4932b03eb092'; // sys_id of INC0008112
        var newIncidentRecord = 'a83820b58f723300e7e16c7827bdeed2'; // sys_id of INC0008111
        var inputs = {};
        var gr = new GlideRecord('incident'); // Create new incident object
    
        gr.get(newIncidentRecord);            // Get GlideRecord object for INC0008111
    
        inputs['current'] = gr;               // Set new Incident record as input
        inputs['table_name'] = 'incident';    // Set table name to Incident
    
        var result = sn_fd.FlowAPI.getRunner()            // Create a ScriptableFlowRunner builder object.
          .restartFlowFromContext(flowContextID, inputs); // Restart flow with new inputs.
    
        var contextId = result.getContextId();  // Retrieve the context ID from the result
        var dateRun = result.getDate();
    
        gs.info(contextId + ' ' + dateRun);
    
      } catch (ex) {
        var message = ex.getMessage();
        gs.error(message);
      }
    
    })();
    

    FlowAPI - scheduleCancel(cadeia de caracteres contextId, motivo da cadeia de caracteres, atraso de números inteiros)

    Programe um evento do sistema na Fila do mecanismo de fluxo para cancelar um fluxo que está em andamento, supostamente interrompido ou em espera após um atraso.

    Tabela 31. Parâmetros
    Nome Tipo Descrição
    contextId Cadeia de caracteres Sys_id do registro de detalhes da execução do fluxo, subfluxo ou ação. O fluxo, subfluxo ou ação de destino deve estar no estado Em andamento, presumido interrompido ou aguardando. Acesse os detalhes da execução navegando até a guia Execuções de fluxo em Workflow Studio ou passe o sys_id do registro de contexto retornado pelo método.
    Nota:
    Pode haver um pequeno atraso no cancelamento se o contexto de destino estiver em execução em um nó diferente da instância. Os contextos em execução no mesmo nó são cancelados imediatamente. Os contextos em execução em outro nó devem aguardar primeiro o cancelamento ser encaminhado para o nó apropriado.
    motivo Cadeia de caracteres Motivo para cancelar o fluxo, o subfluxo ou a ação. Aparece em Mensagem Campo da tabela Entradas de log do mecanismo de fluxo [sys_flow_log].
    AdiaçãoSeconds Inteiro Opcional. Número de segundos de espera antes de processar um evento de cancelamento na fila do Flow Engine. Se você omitir este parâmetro, o método usará o valor padrão de 1 segundo.

    Você pode usar este parâmetro para evitar o impacto no desempenho de programar o cancelamento de milhares de contextos de fluxo ao mesmo tempo. Em vez de executar todos os cancelamentos simultaneamente, programe um lote de cancelamentos de fluxo com um atraso. Como alternativa, você pode usar o atraso como um valor de tempo limite para um fluxo assíncrono.

    Tabela 32. Retornos
    Tipo Descrição
    Nenhum(a)

    Este exemplo usa o valor de retorno de StartFlow() método para programar o cancelamento de fluxos de longa execução.

    (function() { 
    
    var now_GR = new GlideRecord('incident'); 
    now_GR.addQuery('number', 'INC0000050'); 
    now_GR.query(); 
    now_GR.next(); 
    
          try { 
              var inputs = {}; 
              inputs['current'] = now_GR; // GlideRecord of table: 
              inputs['table_name'] = 'incident'; 
    
              // Starts the flow asynchronously.
              var contextId = sn_fd.FlowAPI.startFlow('global.myFlow', inputs); 
    
          } catch (ex) { 
              var message = ex.getMessage(); 
              gs.error(message); 
          } 
    })();
    
     
    // Call the scheduleCancel() method using the context Id returned from the startFlow() method
    sn_fd.FlowAPI.scheduleCancel(contextId, 'Flow took too long to execute.', 60);

    Este exemplo agenda o cancelamento de todos os fluxos chamados Fluxo de teste.

    var now_GR = new GlideRecord("sys_flow_context");
    now_GR.addQuery("name", "Test Flow");
    now_GR.query();
    
    while (now_GR.next()) {
    sn_fd.FlowAPI.scheduleCancel(now_GR.getUniqueValue(), 'Canceling Test Flows', 60);
    } 

    Este exemplo usa o parâmetro delaySeconds para executar trabalhos de cancelamento de fluxo em lotes. Use lotes para cancelar milhares de contextos de fluxo.

    var delaySeconds = 1;
    
    for (var i; i < sys_flow_context.length; ++i) {
      if (i % 100 === 0) {
        delaySeconds = delaySeconds + 60;
      }
      var contextId = sys_flow_context[i];
      var reason = "Example reason";
      sn_fd.FlowAPI.scheduleCancel(contextId, reason, delaySeconds);
    }

    FlowAPI - SendMessage (cadeia de caracteres contextSySID, mensagem de cadeia de caracteres, carga de cadeia de caracteres)

    Envie uma mensagem específica e uma resposta de carga para um fluxo que está pausado e aguardando uma mensagem.

    Tabela 33. Parâmetros
    Nome Tipo Descrição
    ContextSySID Cadeia de caracteres O valor sys_id do fluxo ou subfluxo que está pausado e aguardando uma mensagem específica ser retomada. O fluxo ou subfluxo deve incluir uma ação Aguardar mensagem. Consulte Wait For Message action.
    mensagem Cadeia de caracteres A cadeia de caracteres de texto a ser enviada para o fluxo ou subfluxo em espera. Se o valor desta mensagem corresponder ao valor da mensagem listado na ação Aguardar mensagem, o fluxo ou subfluxo será reiniciado. Consulte Wait For Message action.
    carga Cadeia de caracteres O valor de saída da cadeia de caracteres de texto a ser enviado para o fluxo de espera. O fluxo ou subfluxo pode usar a carga como entrada quando retomar a execução. Por exemplo, você pode especificar um motivo pelo qual um registro foi reaberto ou que uma nova aprovação foi necessária.
    Tabela 34. Retornos
    Tipo Descrição
    Nenhum(a)

    Este exemplo envia a mensagem Retomar fluxo para reiniciar um fluxo pausado. O fluxo pausado pode usar o valor da carga como dados em outro lugar do fluxo.

    (function() {
        try {
          // var change = '154a6320db9b12102166e229139619fc';    // Example sys_id of change record
          var pausedFlowId = '6e9bab60949b1210dda11cd237cd955d'; // Example sys_id of a paused flow
          var resumeMessage = 'Resume Flow';                     // Message that paused flow is waiting for
          var payload = 'Resubmitted for approval';              // Data to send back to flow
          var result = sn_fd.FlowAPI
          .sendMessage(pausedFlowId, resumeMessage, payload);    // Send a message to the paused flow
        } catch (ex) {
          var message = ex.getMessage();
          gs.error(message);
        }
      })();  
      

    Saída:

    Este script não produz nenhuma saída própria. Ao executá-lo a partir do Scripts-background , o sistema lista as operações e tabelas modificadas pelo script. Você também pode ver os resultados da saída do script nos detalhes de execução do fluxo de uma ação Aguardar mensagem.
    [0:00:00.074] Script completed in scope global: script
    Script execution history and recovery available here
    Operation	Table	                       Row Count
    delete	   sys_flow_runtime_state_chunk	1
    insert	   sys_flow_runtime_state_chunk	1
    update	   sys_flow_context	            1
    record-watcher asynchronous tracking complete - time: 3 ms. Executed responders: 1 
    record-watcher asynchronous tracking complete - time: 3 ms. Executed responders: 1 
    record-watcher asynchronous tracking complete - time: 3 ms. Executed responders: 1 
    

    FlowAPI - setEncryptedOutput(senha de cadeia de caracteres)

    Cria valores password2 em uma etapa de script.

    Identifique um valor password2 criptografado retornado de um GlideRecord, permitindo que o sistema exiba o valor como uma senha mascarada em vez de uma cadeia de caracteres criptografada.

    Tabela 35. Parâmetros
    Nome Tipo Descrição
    senha Cadeia de caracteres Valor de password2 criptografado.
    Tabela 36. Retornos
    Tipo Descrição
    Cadeia de caracteres Valor password2 criptografado, reconhecido pelo mecanismo como um valor de senha.

    Este exemplo retorna o valor de um campo password2 de um registro de usuário e armazena em uma variável. Esta variável é passada para o método setEncryptedOutput, que é chamado usando sn_fd.GlideActionUtil.setEncryptedOutput. A instância reconhece o valor retornado como uma senha.

    (function execute(inputs, outputs) {
      // ...code...
      var now_GR = new GlideRecord('sys_user');
      now_GR.addQuery('first_name' , 'Abel');
      now_GR.query();
      now_GR.next();
      var pwVal = now_GR.getValue('pw2');
      outputs['usedSetEncrypted'] = sn_fd.GlideActionUtil.setEncryptedOutput(pwVal);
      outputs['justSetDirectly'] = pwVal;
    })(inputs, outputs);

    FlowAPI - startAction (nome da cadeia de caracteres, entradas do mapa)

    Executa uma ação de um script do lado do servidor de forma assíncrona.

    Execute uma ação de dentro de uma regra de negócio, inclusão de script ou qualquer outro script do lado do servidor. As ações executadas usando este método são executadas de forma assíncrona, portanto, os scripts que usam este método não têm acesso a nenhuma saída criada pela ação. Usar ExecutoAction para executar uma ação de forma síncrona e acessar as saídas que ela gera.
    Nota:
    Esta API foi substituída por ScriptableFlowRunner - Com escopo, que descontinuado os métodos existentes usados para criar objetos e executar Workflow Studio fluxos e ações. Use GetRunner() método no FlowAPI Classe para retornar um objeto ScriptableFlowRunner e usar os métodos associados. Use ScriptableFlowRunner se você precisar oferecer suporte ao domain separation.
    Nota:
    Este método executa a ação como o usuário que inicia a sessão.
    Tabela 37. Parâmetros
    Nome Tipo Descrição
    nome Cadeia de caracteres O escopo e o nome da ação a ser executada, por exemplo global.action_name .
    entradas Mapa Pares nome-valor que definem entradas de ação. Use o nome de entrada, não o rótulo de entrada.
    Tabela 38. Retornos
    Tipo Descrição
    Cadeia de caracteres Sys ID do registro de contexto da ação. Acesse o registro de contexto navegando até a guia Execuções de fluxo em Workflow Studio selecionando uma execução de fluxo e clicando em Registro de contexto em aberto .

    Este exemplo usa sn_fd.FlowAPI.startAction para executar uma ação chamada add_comment no escopo sn_itsm_spoke. O objeto Entradas contém um registro de destino e um comentário a ser adicionado a esse registro. O código é encapsulado em uma instrução try/catch para capturar todos os erros que possam ocorrer quando o fluxo é executado.

    (function() {
      try {
        var inputs = {};
        inputs['ah_task'] = myTaskRecord; // GlideRecord of table: task 
        inputs['ah_comment'] ='Test Comment' ; // String 
    
        var contextId = sn_fd.FlowAPI.startAction('sn_itsm_spoke.add_comment', inputs);	
    			
      } catch (ex) {
        var message = ex.getMessage();
        gs.error(message);
      }
    })();

    FlowAPI - startActionQuick (nome da cadeia de caracteres, entradas do mapa)

    Executa uma ação de um script do lado do servidor de forma assíncrona sem criar detalhes de execução ou outros registros relacionados. Melhore o desempenho eliminando 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.

    Relatórios e registros gerados
    Independentemente de. Este método não cria detalhes de execução e registros de contexto Workflow Studio configurações.
    Aguarde o suporte
    Este método não oferece suporte à pausa da ação para aguardar condições. Etapas que pausam para condições de espera, como Solicitar aprovação ou Aguardar condiçã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 para executar a partir de um MID Server.
    Nota:
    Esta API foi substituída por ScriptableFlowRunner - Com escopo, que descontinuado os métodos existentes usados para criar objetos e executar Workflow Studio fluxos e ações. Use GetRunner() método no FlowAPI Classe para retornar um objeto ScriptableFlowRunner e usar os métodos associados. Use ScriptableFlowRunner se você precisar oferecer suporte ao domain separation.
    Tabela 39. Parâmetros
    Nome Tipo Descrição
    nome Cadeia de caracteres Escopo e nome interno da ação a ser executada. Por exemplo, global.action_name . Localize Nome interno campo na lista de Workflow Studio ações.
    entradas Mapa Pares nome-valor que definem entradas de ação. Você pode encontrar as entradas de ação disponíveis e os tipos de dados necessários em Entradas na descrição da ação. Use o nome de entrada, não o rótulo de entrada. Por exemplo, "table":"incident", "sys_id":"a39d8e3cf0212300964feefe80ff0ed" .
    Tabela 40. Retornos
    Tipo Descrição
    vazio
    (function() {
    	
      try {
        var grIncident = new GlideRecord('incident');
        grIncident.get('57af7aec73d423002728660c4cf6a71c');
    
        var inputs = {};
        inputs['variable'] = grIncident;
    
        sn_fd.FlowAPI.startActionQuick('global.update_record_test', inputs);
    
      } catch (ex) {
        var message = ex.getMessage();
        gs.error(message);
        }
    	
    })();

    FlowAPI - startFlow (nome da cadeia de caracteres, entradas do mapa)

    Executa um fluxo de um script do lado do servidor.

    Execute um fluxo de dentro de uma regra de negócios, inclusão de script ou qualquer outro script do lado do servidor. Os fluxos executados com este método são executados de forma assíncrona.
    Nota:
    Esta API foi substituída por ScriptableFlowRunner - Com escopo, que descontinuado os métodos existentes usados para criar objetos e executar Workflow Studio fluxos e ações. Use GetRunner() método no FlowAPI Classe para retornar um objeto ScriptableFlowRunner e usar os métodos associados. Use ScriptableFlowRunner se você precisar oferecer suporte ao domain separation.
    Nota:
    Este método executa o fluxo conforme o usuário especificado nas propriedades de fluxo.
    Tabela 41. Parâmetros
    Nome Tipo Descrição
    nome Cadeia de caracteres O escopo e o nome do fluxo a ser executado, por exemplo global.flow_name .
    entradas Mapa Pares nome-valor que definem entradas do gatilho. Use o nome de entrada, não o rótulo de entrada.
    Tabela 42. Retornos
    Tipo Descrição
    Cadeia de caracteres Sys ID do registro de contexto do fluxo. Acesse o registro de contexto navegando até a guia Execuções de fluxo em Workflow Studio selecionando uma execução de fluxo e clicando em Registro de contexto em aberto .

    Este exemplo usa sn_fd.FlowAPI.startFlow para executar um fluxo global chamado test_flow. O código cria uma variável de entradas que contém as entradas necessárias para o fluxo. Nesse caso, o registro atual e a tabela do registro. O código é encapsulado em uma instrução try/catch para capturar todos os erros que possam ocorrer quando o fluxo é executado.

    (function() {
     
      var now_GR = new GlideRecord('incident'); 
      now_GR.addQuery('number', 'INC0009009'); 
      now_GR.query(); 
      now_GR.next();
    
      try {
        var inputs = {};
        inputs['current'] = now_GR; // GlideRecord of table: Incident
        inputs['table_name'] = 'incident';
    
        var contextId = sn_fd.FlowAPI.startFlow('global.test_flow', inputs);	
    	
      } catch (ex) {
        var message = ex.getMessage();
        gs.error(message);  
      }
    })();

    FlowAPI - startFlowQuick (nome da cadeia de caracteres, entradas do mapa)

    Executa um fluxo de um script do lado do servidor de forma assíncrona sem criar detalhes de execução ou outros registros relacionados. Melhore o desempenho eliminando 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.

    Relatórios e registros gerados
    Independentemente de. Este método não cria detalhes de execução e registros de contexto Workflow Studio configurações.
    Executar como usuário do sistema
    Este método executa o fluxo como o usuário do sistema. Não há suporte para definir o fluxo para ser executado como o usuário que inicia a sessão ou representar um usuário.
    Aguarde o suporte
    Este método não oferece suporte à pausa do fluxo para aguardar condições. Ações ou lógica de fluxo que pausam 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 oferece suporte à pausa de um fluxo para execução de um MID Server.
    Nota:
    Esta API foi substituída por ScriptableFlowRunner - Com escopo, que descontinuado os métodos existentes usados para criar objetos e executar Workflow Studio fluxos e ações. Use GetRunner() método no FlowAPI Classe para retornar um objeto ScriptableFlowRunner e usar os métodos associados. Use ScriptableFlowRunner se você precisar oferecer suporte ao domain separation.
    Tabela 43. Parâmetros
    Nome Tipo Descrição
    nome Cadeia de caracteres Escopo e nome interno do fluxo a ser executado. Por exemplo, global.flow_name . Localize Nome interno campo na lista de Workflow Studio fluxos.
    entradas Mapa Pares nome-valor que definem entradas do gatilho. Você pode encontrar as entradas de gatilho disponíveis e os tipos de dados necessários na seção Gatilho do fluxo. Use o nome de entrada, não o rótulo de entrada. Por exemplo, "table":"incident", "sys_id":"a39d8e3cf0212300964feefe80ff0ed" .
    Tabela 44. Retornos
    Tipo Descrição
    vazio
    (function() {
    	
      try {
        var grIncident = new GlideRecord('incident');
        grIncident.get('ed92e8d173d023002728660c4cf6a7bc');
    
        var inputs = {};
        inputs['current'] = grIncident;
        inputs['table_name'] = 'incident';
    		
        sn_fd.FlowAPI.startFlowQuick('global.test_quick_flow', inputs);
    		
      } catch (ex) {
        var message = ex.getMessage();
        gs.error(message);
    	}
    	
    })();

    FlowAPI - startSubflow (nome da cadeia de caracteres, entrada do mapa)

    Executa um subfluxo de um script do lado do servidor.

    Execute um subfluxo de dentro de uma regra de negócio, inclusão de script ou qualquer outro script do lado do servidor. Os subfluxos são executados usando este método de execução assíncrona Os scripts que incluem este método não têm acesso às saídas criadas pelo fluxo. Usar ExecutoSubfluxo para executar um subfluxo de forma síncrona e acessar as saídas que ele gera.
    Nota:
    Esta API foi substituída por ScriptableFlowRunner - Com escopo, que descontinuado os métodos existentes usados para criar objetos e executar Workflow Studio fluxos e ações. Use GetRunner() método no FlowAPI Classe para retornar um objeto ScriptableFlowRunner e usar os métodos associados. Use ScriptableFlowRunner se você precisar oferecer suporte ao domain separation.
    Nota:
    Este método executa o fluxo conforme o usuário especificado nas propriedades de fluxo.
    Tabela 45. Parâmetros
    Nome Tipo Descrição
    nome Cadeia de caracteres O escopo e o nome do subfluxo a ser executado, por exemplo subflow_name .
    entradas Mapa Pares nome-valor que definem entradas de subfluxo. Use o nome de entrada, não o rótulo de entrada.
    Tabela 46. Retornos
    Tipo Descrição
    Cadeia de caracteres Sys ID do registro de contexto do subfluxo. Acesse o registro de contexto navegando até a guia Execuções de fluxo em Workflow Studio selecionando uma execução de fluxo e clicando em Registro de contexto em aberto .

    Este exemplo usa sn_fd.FlowAPI.startSubflow para executar um fluxo global chamado test_subflow. O código é encapsulado em uma instrução try/catch para capturar todos os erros que possam ocorrer quando o fluxo é executado.

    (function() {
      try {
        var inputs = {};
        inputs['ah_task'] = myTaskRecord; // GlideRecord of table: task 
        inputs['ah_comment'] ='Test Comment' ; // String 
    
        var contextId = sn_fd.FlowAPI.startSubflow('global.test_subflow', inputs);
    
      } catch (ex) {
        var message = ex.getMessage();
        gs.error(message);
      }
    	
    })();

    FlowAPI - startSubflowQuick (nome da cadeia de caracteres, entradas do mapa)

    Executa um subfluxo de um script do lado do servidor de forma assíncrona sem criar detalhes de execução ou outros registros relacionados. Melhore o desempenho eliminando 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.

    Relatórios e registros gerados
    Independentemente de. Este método não cria detalhes de execução e registros de contexto Workflow Studio configurações.
    Executar como usuário do sistema
    Este método executa o fluxo como o usuário do sistema. Não há suporte para definir o fluxo para ser executado como o usuário que inicia a sessão ou representar um usuário.
    Aguarde o suporte
    Este método não oferece suporte à pausa do fluxo para aguardar condições. Ações ou lógica de fluxo que pausam 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 oferece suporte à pausa de um fluxo para execução de um MID Server.
    Nota:
    Esta API foi substituída por ScriptableFlowRunner - Com escopo, que descontinuado os métodos existentes usados para criar objetos e executar Workflow Studio fluxos e ações. Use GetRunner() método no FlowAPI Classe para retornar um objeto ScriptableFlowRunner e usar os métodos associados. Use ScriptableFlowRunner se você precisar oferecer suporte ao domain separation.
    Tabela 47. Parâmetros
    Nome Tipo Descrição
    nome Cadeia de caracteres Escopo e nome interno do subfluxo a ser executado. Por exemplo, global.subflow_name. Localize Nome interno campo na lista de Workflow Studio subfluxos.
    entradas Mapa Pares nome-valor que definem entradas de subfluxo. Você pode encontrar as entradas de subfluxo disponíveis e os tipos de dados necessários em Entradas no subfluxo. Use o nome de entrada, não o rótulo de entrada. Por exemplo, "table":"incident", "sys_id":"a39d8e3cf0212300964feefe80ff0ed" .
    Tabela 48. Retornos
    Tipo Descrição
    vazio
    (function() {
    
      try {
        var grIncident = new GlideRecord('incident');
        grIncident.get('57af7aec73d423002728660c4cf6a71c');
    
        var inputs = {};
        inputs['variable'] = grIncident;
    
        sn_fd.FlowAPI.startSubflowQuick('global.test_quick_run_subflow', inputs);
    
      } catch (ex) {
        var message = ex.getMessage();  
        gs.error(message);
        }
    	
    })();