Fluxo - com escopo (descontinuado)

  • Versão de lançamento: Washingtondc
  • Atualizado 1 de fev. de 2024
  • 3 min. de leitura
  • A Flow API fornece métodos para executar fluxos Flow Designer 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 Flow Designer. Como a Flow API interage somente 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 programado na IU Flow Designer.

    Fluxo com escopo - startAsync(cadeia de caracteres 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 precisar aguardar 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 Flow Designer.
    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 nomeado como "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. Retorna
    Tipo Descrição
    Objeto Objeto PlanResponse que contém as seguintes propriedades:
    • contextId: sys_id do registro de detalhes da execução do fluxo executado. Acesse os detalhes da execução navegando até a guia Execuções de fluxo em Flow Designer 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);
    	}
    
    })();