Fluxo - com escopo (descontinuado)

  • Versão de lançamento: Yokohama
  • Atualizado 30 de jan. de 2025
  • 3 min. de leitura
  • A Flow API fornece métodos para executar Workflow Studio fluxos ativados.

    Esta API está obsoleta e foi substituída pelas APIs ScriptableFlowRunner - com escopo e ScriptableFlowRunnerResult - com escopo.

    A Flow API só pode ser usada em scripts de servidor.

    Use o namespace sn_fd para acessar a Flow API.

    Antes de interagir com um fluxo usando a Flow API, você deve primeiro criar e ativar o fluxo na interface Workflow Studio. Como a Flow API só interage com fluxos pré-criados, não há construtor para a classe.

    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 agendado na IU Workflow Studio.

    Fluxo - startAsync(String scopeName.flowName, Map flowInputs)

    Ignora o gatilho e executa um fluxo ativado de forma assíncrona.

    As chamadas assíncronas não são bloqueadas, permitindo que o cliente execute outro código no script sem ter que esperar a conclusão do fluxo.

    Tabela 1. Parâmetros
    Nome Tipo Descrição
    scopeName.flowName Cadeia de caracteres O escopo da aplicação para o fluxo e o nome interno do fluxo a ser executado. Se scopeName não estiver incluído, o escopo do usuário conectado no momento será usado. Recupere o nome interno do fluxo usando a coluna Nome interno na página principal Workflow Studio.
    flowInputs Mapa Pares de nome-valor em<String, Object> formato que define entradas de fluxo baseadas em registro.
    Para chamar um fluxo com um gatilho baseado em registro, use o formato:
    var flowInputs = {};
    flowInputs['current'] = glideRecord;
    flowInputs['table_name'] = glideRecord.getTableName();

    O objeto GlideRecord deve ser chamado de "atual".

    Para chamar um fluxo com um gatilho Catálogo de serviços, use o formato:
    var flowInputs = {};
    flowInputs['request_item'] = glideRecord;
    flowInputs['table_name'] = glideRecord.getTableName();

    O objeto GlideRecord deve ser chamado de "request_item".

    Tabela 2. Retornos
    Tipo Descrição
    Objeto Objeto PlanResponse que contém as seguintes propriedades:
    • contextId: sys_id do registro de detalhes de execução do fluxo executado. Acesse os detalhes da execução navegando até a guia Execuções de fluxo em Workflow Studio e filtrando por sys_id.
    Uma exceção ocorre quando o fluxo:
    • Não existe no escopo da aplicação especificado ou o nome do fluxo ou do escopo foi digitado incorretamente.
    • Não está ativado.
    • Excede o limite de recursão definido pela propriedade do sistema com.glide.hub.flow_engine.indirect_recursion_limit. O valor padrão é três.
    //Example 1: Run a flow with a record-based trigger
    (function startFlowAsync() {
    
    	try {
    		// You MUST fetch the GlideRecord that will be passed to the flow
    		var glideRecordInput = new GlideRecord('sys_user');
    		glideRecordInput.get('62826bf03710200044e0bfc8bcbe5df1');
    
    		var flowInputs = {};
    		flowInputs['current'] = glideRecordInput;
    		flowInputs['table_name'] = glideRecordInput.getTableName();
    
    		var result = sn_fd.Flow.startAsync('global.recordtriggeredflow', flowInputs);
    
    		//The Sys ID of a flow execution (contextId)
    		var contextId = result.contextId;
    
    	} catch (ex) {
    		var message = ex.getMessage();
    		gs.error(message);
    	}
    
    })();
    
    //Example 2: Run a flow with a schedule-based trigger
    (function startFlowAsync() {
    
    	try {
    		var result = sn_fd.Flow.startAsync('global.scheduletriggeredflow');
    
    		//The Sys ID of a flow execution (contextId)
    		var contextId = result.contextId;
    
    	} catch (ex) {
    		var message = ex.getMessage();
    		gs.error(message);
    	}
    
    })();
    
    //Example 3: Run a flow with a Service Catalog trigger
    (function startFlowAsync() {
    
    	try {
    		// You MUST fetch the GlideRecord that will be passed to the flow
    		var glideRecordInput = new GlideRecord('sc_req_item');
    		glideRecordInput.get(aeed229047801200e0ef563dbb9a71c2);
    
    		var flowInputs = {};
    		flowInputs['request_item'] = glideRecordInput;
    		flowInputs['table_name'] = glideRecordInput.getTableName();
    
    		var result = sn_fd.Flow.startAsync('global.catalogtriggeredflow', flowInputs);
    
    		//The Sys ID of a flow execution (contextId)
    		var contextId = result.contextId;
    
    	} catch (ex) {
    		var message = ex.getMessage();
    		gs.error(message);
    	}
    
    })();
    
    //Example 4: Run a flow with a MetricBase trigger
    (function startMetricBaseFlowAsync() {
    
    	try {
    
    		var oilLevelTriggerRecord = new GlideRecord('oil_levels');
    		oilLevelTriggerRecord.get('a4b3622bc72113007b237f48cb97635f');
    
    		var metricTriggerDefinition = new GlideRecord('sys_metric_trigger_definition');
    		metricTriggerDefinition.get('21f2eae7c72113007b237f48cb976352');
    
    		var event_time = oilLevelTriggerRecord.getValue('sys_created_on');
    		var level = 4;
    
    		var metricBaseFlowInputs = {};
    		//The record that triggered the metric event
    		metricBaseFlowInputs['current'] = oilLevelTriggerRecord;
    		//The MetricBase Trigger Definition record
    		metricBaseFlowInputs['metric'] = metricTriggerDefinition;
    		//The time that the 'record' reached a specific metric event level and triggered this flow
    		metricBaseFlowInputs['event_time'] = event_time;
    		//The target event level to reach in order for a metric flow to trigger
    		metricBaseFlowInputs['level'] = level;
    
    		var result = sn_fd.Flow.startAsync('global.metricbasedtriggeredflow', metricBaseFlowInputs);
    
    		//The Sys ID of a flow execution (contextId)
    		var contextId = result.contextId;
    
    	} catch (ex) {
    		var message = ex.getMessage();
    		gs.error(message);
    	}
    
    })();