FlowAPI - com escopo, global

  • Versão de lançamento: Washingtondc
  • Atualizado 1 de fev. de 2024
  • 37 min. de leitura
  • A FlowAPI fornece métodos para executar ações, fluxos ou subfluxos em scripts do lado do servidor usando métodos de bloqueio ou sem bloqueio.

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

    Nota:
    Em instâncias separadas por domínio, fluxos, subfluxos e ações acionados por essa 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 da Acme, mesmo se o fluxo for executado como o Usuário do Sistema.
    Nota:
    Para otimizar o desempenho da instância, evite chamar esses métodos de um script de regra de negócio assíncrono. Em vez disso, crie um registro de trabalho programado na IU Flow Designer.

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

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

    Tabela 1. Parâmetros
    Nome Tipo Descrição
    contextId Cadeia de caracteres Sys_id do registro de detalhes de execução para o fluxo, subfluxo ou ação. Acesse os detalhes da execução navegando até a guia Execuções de fluxo em Flow Designerou passe o sys_id do registro de contexto retornado pelos métodos startFlow(), startSubflow()ou startAction().
    Nota:
    Pode haver um pequeno atraso no cancelamento se o contexto de destino estiver sendo executado 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 primeiro aguardar o cancelamento ser encaminhado para o nó apropriado.
    motivo Cadeia de caracteres Opcional. Motivo para cancelar o fluxo, subfluxo ou ação. Aparece no campo Mensagem da tabela Entradas de log do mecanismo de fluxo [sys_flow_log].
    Tabela 2. Retorna
    Tipo Descrição
    vazio

    Este exemplo usa o valor de retorno do método startFlow() para cancelar qualquer fluxo 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 qualquer fluxo chamado 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(cadeia de caracteres name, Map inputs, Number timeout)

    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ócios, 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. Use startAction para executar uma ação de forma assíncrona.
    Nota:
    Esta API foi substituída por ScriptableFlowRunner - com escopo, que descontinua os métodos existentes usados para criar objetos e executar Flow Designer fluxos e ações. Use o método getRunner() na classe FlowAPI para retornar um objeto ScriptableFlowRunner e use os métodos associados. Use os métodos ScriptableFlowRunner se precisar oferecer suporte à separação de domínio.
    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 de nome-valor que definem entradas de ação. Use o nome da entrada, não o rótulo da entrada.
    tempo limite Número Opcional. Tempo limite em milissegundos. Este valor substitui o tempo limite padrão de 30 segundos especificado pela propriedade do sistema com.glide.hub.flow_api.default_execution_time. Depois que o tempo limite expira, uma exceção é lançada.
    Tabela 4. Retorna
    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 para a 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 neste caso, é um objeto de senha criptografada. O código é encapsulado em uma declaração de tentativa/catch para capturar quaisquer erros que possam ocorrer quando o fluxo for 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(cadeia de caracteres nome, entradas de mapa, tempo limite de 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
    Este método não cria detalhes de execução e registros de contexto, independentemente das configurações Flow Designer.
    Aguardar suporte
    Este método não oferece suporte à 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.
    Suporte para MID Server
    Este método não oferece suporte à pausa de uma ação a ser executada em um MID Server.
    Nota:
    Esta API foi substituída por ScriptableFlowRunner - com escopo, que descontinua os métodos existentes usados para criar objetos e executar Flow Designer fluxos e ações. Use o método getRunner() na classe FlowAPI para retornar um objeto ScriptableFlowRunner e use os métodos associados. Use os métodos ScriptableFlowRunner se precisar oferecer suporte à separação de domínio.
    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 o campo Nome interno na lista de ações Flow Designer.
    entradas Mapa Pares de 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 no contorno da ação. Use o nome da entrada, não o rótulo da entrada. Por exemplo, {'table':'incident','sys_id':'a39d8e3cf0212300964feeefe80ff0ed'}.
    tempo limite Número

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

    Tabela 6. Retorna
    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 no contorno 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(cadeia de caracteres nome, entradas de mapa, tempo limite de 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 Ações de fluxo de dados e paginação.

    Nota:
    Esta API foi substituída por ScriptableFlowRunner - com escopo, que descontinua os métodos existentes usados para criar objetos e executar Flow Designer fluxos e ações. Use o método getRunner() na classe FlowAPI para retornar um objeto ScriptableFlowRunner e use os métodos associados. Use os métodos ScriptableFlowRunner se precisar oferecer suporte à separação de domínio.
    Nota:
    Sempre encapsule a lógica do fluxo de dados em um bloco tentar/capturar para detectar erros. Sempre inclua uma declaração final que termine com o método close () da classe ScriptableDataStream 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 de nome-valor que definem entradas de ação. Use o nome da entrada, não o rótulo da entrada. Se a ação não tiver entradas, não inclua este parâmetro.
    tempo limite Número Opcional. Quantidade de tempo antes que a ação expire. Depois que o tempo limite expira, uma exceção é lançada. O tempo limite se aplica somente ao método executeDataStreamAction, não a métodos na classe ScriptableDataStream.

    Padrão: 30000, especificado pela propriedade do sistema com.glide.hub.flow_api.default_execution_time

    Unidade: milissegundos

    Tabela 8. Retorna
    Tipo Descrição
    ScriptableDataStream Um objeto usado para iterar itens no fluxo de dados. Use os métodos da classe ScriptableDataStream 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(cadeia de caracteres name, Map inputs, Number timeout)

    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. Use startFlow para executar um fluxo de forma assíncrona.
    Nota:
    Esta API foi substituída por ScriptableFlowRunner - com escopo, que descontinua os métodos existentes usados para criar objetos e executar Flow Designer fluxos e ações. Use o método getRunner() na classe FlowAPI para retornar um objeto ScriptableFlowRunner e use os métodos associados. Use os métodos ScriptableFlowRunner se precisar oferecer suporte à separação de domínio.
    Nota:
    Este método executa o fluxo como o usuário especificado nas propriedades do 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 de nome-valor que definem entradas do gatilho. Use o nome da entrada, não o rótulo da entrada.
    tempo limite Número Opcional. Tempo limite em milissegundos. Este valor substitui o tempo limite padrão de 30 segundos especificado pela propriedade do sistema com.glide.hub.flow_api.default_execution_time. Depois que o tempo limite expira, uma exceção é lançada.
    Tabela 10. Retorna
    Tipo Descrição
    Nenhum A operação normal não produz nenhum valor de retorno.
    Exceção A API gera uma exceção quando um fluxo chamado é pausado de forma síncrona. A execução atual está no estado de espera. Na maioria dos casos, a exceção é removida quando o fluxo é reiniciado. 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, forneça essas informações. O código cria uma variável de entrada que contém o registro atual e a tabela para o registro. O código é encapsulado em uma declaração de tentativa/catch para capturar quaisquer erros que possam ocorrer quando o fluxo for 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(cadeia de caracteres nome, entradas de mapa, tempo limite de 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
    Este método não cria detalhes de execução e registros de contexto, independentemente das configurações Flow Designer.
    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.
    Aguardar suporte
    Este método não oferece suporte à pausa do fluxo para aguardar as condições. Não há suporte para ações ou lógica de fluxo que pausam para condições de espera, como Solicitar aprovação, Aguardar condição ou Aguardar uma duração.
    Suporte para MID Server
    Este método não oferece suporte à pausa de um fluxo para ser executado a partir de um MID Server.
    Nota:
    Esta API foi substituída por ScriptableFlowRunner - com escopo, que descontinua os métodos existentes usados para criar objetos e executar Flow Designer fluxos e ações. Use o método getRunner() na classe FlowAPI para retornar um objeto ScriptableFlowRunner e use os métodos associados. Use os métodos ScriptableFlowRunner se precisar oferecer suporte à separação de domínio.
    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 o campo Nome interno na lista de fluxos Flow Designer.
    entradas Mapa Pares de 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 da entrada, não o rótulo da entrada. Por exemplo, {'table':'incident','sys_id':'a39d8e3cf0212300964feeefe80ff0ed'}.
    tempo limite Número Opcional. Tempo limite em milissegundos. Este valor substitui o tempo limite padrão de 30 segundos especificado pela propriedade do sistema com.glide.hub.flow_api.default_execution_time. Depois que o tempo limite expira, uma exceção é lançada.
    Tabela 12. Retorna
    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(cadeia de caracteres nome, entradas de mapa, tempo limite de 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ócios, 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. Use startSubflow para executar um subfluxo de forma assíncrona.
    Nota:
    Esta API foi substituída por ScriptableFlowRunner - com escopo, que descontinua os métodos existentes usados para criar objetos e executar Flow Designer fluxos e ações. Use o método getRunner() na classe FlowAPI para retornar um objeto ScriptableFlowRunner e use os métodos associados. Use os métodos ScriptableFlowRunner se precisar oferecer suporte à separação de domínio.
    Nota:
    Este método executa o fluxo como o usuário especificado nas propriedades do 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 global.subflow_name.
    entradas Mapa Pares de nome-valor que definem entradas de subfluxo. Use o nome da entrada, não o rótulo da entrada.
    tempo limite Número Opcional. Tempo limite em milissegundos. Este valor substitui o tempo limite padrão de 30 segundos especificado pela propriedade do sistema com.glide.hub.flow_api.default_execution_time. Depois que o tempo limite expira, uma exceção é lançada.
    Tabela 14. Retorna
    Tipo Descrição
    Objeto Objeto que contém as saídas de subfluxo.
    Exceção A API gera uma exceção quando um fluxo chamado é pausado de forma síncrona. A execução atual está no estado de espera. Na maioria dos casos, a exceção é removida quando o fluxo é reiniciado. 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 declaração de tentativa/catch para capturar quaisquer erros que possam ocorrer quando o fluxo for 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(cadeia de caracteres nome, entradas de mapa, tempo limite de 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
    Este método não cria detalhes de execução e registros de contexto, independentemente das configurações Flow Designer.
    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.
    Aguardar suporte
    Este método não oferece suporte à pausa do fluxo para aguardar as condições. Não há suporte para ações ou lógica de fluxo que pausam para condições de espera, como Solicitar aprovação, Aguardar condição ou Aguardar uma duração.
    Suporte para MID Server
    Este método não oferece suporte à pausa de um fluxo para ser executado a partir de um MID Server.
    Nota:
    Esta API foi substituída por ScriptableFlowRunner - com escopo, que descontinua os métodos existentes usados para criar objetos e executar Flow Designer fluxos e ações. Use o método getRunner() na classe FlowAPI para retornar um objeto ScriptableFlowRunner e use os métodos associados. Use os métodos ScriptableFlowRunner se precisar oferecer suporte à separação de domínio.
    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 o campo Nome interno na lista de subfluxos Flow Designer.
    entradas Mapa Pares de 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 da entrada, não o rótulo da entrada. Por exemplo, {'table':'incident','sys_id':'a39d8e3cf0212300964feeefe80ff0ed'}.
    tempo limite Número Opcional. Tempo limite em milissegundos. Este valor substitui o tempo limite padrão de 30 segundos especificado pela propriedade do sistema com.glide.hub.flow_api.default_execution_time. Depois que o tempo limite expira, uma exceção é lançada.
    Tabela 16. Retorna
    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 do subfluxo no contorno 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 contextId)

    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. Retorna
    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. Normalmente, um único script não executa um fluxo e obtém suas mensagens de erro. Normalmente, outro script ou Flow Designer já teria executado o fluxo. O código é encapsulado em uma declaração de tentativa/catch para capturar quaisquer erros que possam ocorrer quando o fluxo for 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. Retorna
    Tipo Descrição
    Cadeia de caracteres Cadeia de caracteres no formato 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 de 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 contextId)

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

    Você pode usar os valores de retorno dos métodos startAction() oustartSubflow() como o parâmetro contextId.
    Nota:
    Esta API foi substituída por ScriptableFlowRunner - com escopo, que descontinua os métodos existentes usados para criar objetos e executar Flow Designer fluxos e ações. Use o método getRunner() na classe FlowAPI para retornar um objeto ScriptableFlowRunner e use os métodos associados. Use os métodos ScriptableFlowRunner se precisar oferecer suporte à separação de domínio.
    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. Retorna
    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 o fluxo terminar e, em seguida, obtém seus valores de saída. Normalmente, um único script não executa um fluxo e obtém seus valores de saída. Como um fluxo pode não ser concluído antes da chamada getOutputs(), este exemplo usa um tempo de espera. Normalmente, outro script ou Flow Designer já teria executado o fluxo. O código é encapsulado em uma declaração de tentativa/catch para capturar quaisquer erros que possam ocorrer quando o fluxo for 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 objeto do construtor ScriptableFlowRunner 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 de construtor usado para executar uma ação Flow Designer, 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 - hasApprovals(cadeia de caracteres scopedFlowName)

    Verifica se um fluxo em um determinado escopo contém alguma ação Solicitar aprovação.

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

    Tabela 25. 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 o campo Nome interno na lista de fluxos Flow Designer.
    Tabela 26. Retorna
    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 um bloco de lógica de fluxo If condicional.
    • CONDICIONALMENTE: o fluxo contém uma ação Solicitar aprovação que está aninhada em um bloco de lógica de fluxo If condicional.
    • NÃO: o fluxo não contém nenhuma ação Solicitar aprovação.
    • DESCONHECIDO: houve um erro do compilador e o sistema não pode determinar se o fluxo contém alguma ação Solicitar aprovação.

    O exemplo a seguir verifica se o fluxo example_flow no escopo global contém alguma ação Solicitar aprovação e registra o resultado.

    (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 - reiniciarFlowFromContext(cadeia de caracteres ContextId, mapa fornecidoInputs)

    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 27. 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 ser executado em segundo plano e ter um registro sysevent associado.
    fornecidoEntradas Objeto Opcional. Objeto de mapa que contém os pares de 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, subfluxo ou ação será executado usando as entradas fornecidas anteriormente.
    Tabela 28. Retorna
    Tipo Descrição
    ScriptableFlowRunnerResultsCoped Objeto que contém os detalhes de execução de uma ação Flow Designer, 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 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, Integer delaySeconds)

    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 29. Parâmetros
    Nome Tipo Descrição
    contextId Cadeia de caracteres Sys_id do registro de detalhes de execução para o fluxo, subfluxo ou ação. O fluxo, subfluxo ou ação de destino deve estar no estado em andamento, presumivelmente interrompido ou em espera. Acesse os detalhes da execução navegando até a guia Execuções de fluxo em Flow Designerou 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 sendo executado 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 primeiro aguardar o cancelamento ser encaminhado para o nó apropriado.
    motivo Cadeia de caracteres Motivo para cancelar o fluxo, subfluxo ou ação. Aparece no campo Mensagem da tabela Entradas de log do mecanismo de fluxo [sys_flow_log].
    atrasoSegundos Inteiro Opcional. Número de segundos de espera antes de processar um evento de cancelamento na Fila do Mecanismo de Fluxo. 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 30. Retorna
    Tipo Descrição
    Nenhum

    Este exemplo usa o valor de retorno do método startFlow() para programar o cancelamento de qualquer fluxo 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 programa o cancelamento de qualquer fluxo chamado 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 - setEncryptedOutput(cadeia de caracteres password)

    Cria valores de password2 dentro de uma etapa de script.

    Identifique um valor de 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 31. Parâmetros
    Nome Tipo Descrição
    password Cadeia de caracteres Valor de password2 criptografado.
    Tabela 32. Retorna
    Tipo Descrição
    Cadeia de caracteres Valor de 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 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(cadeia de caracteres name, Map inputs)

    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ócios, 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. Use executeAction 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 descontinua os métodos existentes usados para criar objetos e executar Flow Designer fluxos e ações. Use o método getRunner() na classe FlowAPI para retornar um objeto ScriptableFlowRunner e use os métodos associados. Use os métodos ScriptableFlowRunner se precisar oferecer suporte à separação de domínio.
    Nota:
    Este método executa a ação como o usuário que inicia a sessão.
    Tabela 33. 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 de nome-valor que definem entradas de ação. Use o nome da entrada, não o rótulo da entrada.
    Tabela 34. Retorna
    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 Flow Designer, selecionando uma execução de fluxo e clicando em Abrir registro de contexto.

    Este exemplo usa sn_fd.FlowAPI.startAction para executar uma ação chamada add_comment no escopo sn_itsm_spoke. O objeto de entradas contém um registro de destino e um comentário a ser adicionado a esse registro. O código é encapsulado em uma declaração de tentativa/catch para capturar quaisquer erros que possam ocorrer quando o fluxo for 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(cadeia de caracteres name, Map inputs)

    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
    Este método não cria detalhes de execução e registros de contexto, independentemente das configurações Flow Designer.
    Aguardar suporte
    Este método não oferece suporte à 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.
    Suporte para MID Server
    Este método não oferece suporte à pausa de uma ação a ser executada em um MID Server.
    Nota:
    Esta API foi substituída por ScriptableFlowRunner - com escopo, que descontinua os métodos existentes usados para criar objetos e executar Flow Designer fluxos e ações. Use o método getRunner() na classe FlowAPI para retornar um objeto ScriptableFlowRunner e use os métodos associados. Use os métodos ScriptableFlowRunner se precisar oferecer suporte à separação de domínio.
    Tabela 35. 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 o campo Nome interno na lista de ações Flow Designer.
    entradas Mapa Pares de 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 no contorno da ação. Use o nome da entrada, não o rótulo da entrada. Por exemplo, {'table':'incident','sys_id':'a39d8e3cf0212300964feeefe80ff0ed'}.
    Tabela 36. Retorna
    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(cadeia de caracteres name, Map inputs)

    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 descontinua os métodos existentes usados para criar objetos e executar Flow Designer fluxos e ações. Use o método getRunner() na classe FlowAPI para retornar um objeto ScriptableFlowRunner e use os métodos associados. Use os métodos ScriptableFlowRunner se precisar oferecer suporte à separação de domínio.
    Nota:
    Este método executa o fluxo como o usuário especificado nas propriedades do fluxo.
    Tabela 37. 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 de nome-valor que definem entradas do gatilho. Use o nome da entrada, não o rótulo da entrada.
    Tabela 38. Retorna
    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 Flow Designer, selecionando uma execução de fluxo e clicando em Abrir registro de contexto.

    Este exemplo usa sn_fd.FlowAPI.startFlow para executar um fluxo global chamado test_flow. O código cria uma variável de entrada que contém entradas necessárias para o fluxo. Nesse caso, o registro atual e a tabela do registro. O código é encapsulado em uma declaração de tentativa/catch para capturar quaisquer erros que possam ocorrer quando o fluxo for 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(cadeia de caracteres name, Map inputs)

    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
    Este método não cria detalhes de execução e registros de contexto, independentemente das configurações Flow Designer.
    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.
    Aguardar suporte
    Este método não oferece suporte à pausa do fluxo para aguardar as condições. Não há suporte para ações ou lógica de fluxo que pausam para condições de espera, como Solicitar aprovação, Aguardar condição ou Aguardar uma duração.
    Suporte para MID Server
    Este método não oferece suporte à pausa de um fluxo para ser executado a partir de um MID Server.
    Nota:
    Esta API foi substituída por ScriptableFlowRunner - com escopo, que descontinua os métodos existentes usados para criar objetos e executar Flow Designer fluxos e ações. Use o método getRunner() na classe FlowAPI para retornar um objeto ScriptableFlowRunner e use os métodos associados. Use os métodos ScriptableFlowRunner se precisar oferecer suporte à separação de domínio.
    Tabela 39. 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 o campo Nome interno na lista de fluxos Flow Designer.
    entradas Mapa Pares de 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 da entrada, não o rótulo da entrada. Por exemplo, {'table':'incident','sys_id':'a39d8e3cf0212300964feeefe80ff0ed'}.
    Tabela 40. Retorna
    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(cadeia de caracteres name, Map input)

    Executa um subfluxo de um script do lado do servidor.

    Execute um subfluxo de dentro de uma regra de negócios, inclusão de script ou qualquer outro script do lado do servidor. Os subfluxos executados usando este método são executados de forma assíncrona. Os scripts que incluem este método não têm acesso às saídas criadas pelo fluxo. Use executeSubflow 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 descontinua os métodos existentes usados para criar objetos e executar Flow Designer fluxos e ações. Use o método getRunner() na classe FlowAPI para retornar um objeto ScriptableFlowRunner e use os métodos associados. Use os métodos ScriptableFlowRunner se precisar oferecer suporte à separação de domínio.
    Nota:
    Este método executa o fluxo como o usuário especificado nas propriedades do fluxo.
    Tabela 41. Parâmetros
    Nome Tipo Descrição
    nome Cadeia de caracteres O escopo e o nome do subfluxo a ser executado, por exemplo global.subflow_name.
    entradas Mapa Pares de nome-valor que definem entradas de subfluxo. Use o nome da entrada, não o rótulo da entrada.
    Tabela 42. Retorna
    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 Flow Designer, selecionando uma execução de fluxo e clicando em Abrir registro de contexto.

    Este exemplo usa sn_fd.FlowAPI.startSubflow para executar um fluxo global chamado test_subflow. O código é encapsulado em uma declaração de tentativa/catch para capturar quaisquer erros que possam ocorrer quando o fluxo for 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(cadeia de caracteres name, Map inputs)

    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
    Este método não cria detalhes de execução e registros de contexto, independentemente das configurações Flow Designer.
    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.
    Aguardar suporte
    Este método não oferece suporte à pausa do fluxo para aguardar as condições. Não há suporte para ações ou lógica de fluxo que pausam para condições de espera, como Solicitar aprovação, Aguardar condição ou Aguardar uma duração.
    Suporte para MID Server
    Este método não oferece suporte à pausa de um fluxo para ser executado a partir de um MID Server.
    Nota:
    Esta API foi substituída por ScriptableFlowRunner - com escopo, que descontinua os métodos existentes usados para criar objetos e executar Flow Designer fluxos e ações. Use o método getRunner() na classe FlowAPI para retornar um objeto ScriptableFlowRunner e use os métodos associados. Use os métodos ScriptableFlowRunner se precisar oferecer suporte à separação de domínio.
    Tabela 43. 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 o campo Nome interno na lista de subfluxos Flow Designer.
    entradas Mapa Pares de 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 da entrada, não o rótulo da entrada. Por exemplo, {'table':'incident','sys_id':'a39d8e3cf0212300964feeefe80ff0ed'}.
    Tabela 44. Retorna
    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);
        }
    	
    })();