FlowAPI - com escopo, global
A FlowAPI fornece métodos para executar ações, fluxos ou subfluxos em scripts do lado do servidor usando métodos de bloqueio ou de não 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 Snippet de código em Workflow Studio ou use os métodos detalhados aqui para atualizar os scripts manualmente.
FlowAPI - cancel (cadeia de caracteres contextId, motivo da cadeia de caracteres)
Cancela um fluxo, subfluxo ou ação pausada ou em execução.
| 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 Workflow Studioou 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 aguardar primeiro o cancelamento para 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]. |
| Tipo | Descrição |
|---|---|
| vazio |
Este exemplo usa o valor de retorno do método startFlow() para cancelar quaisquer 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 de 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 nome, entradas de mapa, tempo limite de número)
Executa uma ação de um script do lado do servidor de forma síncrona.
| 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. |
| timeout | 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 expirar, uma exceção será lançada. |
| Tipo | Descrição |
|---|---|
| Objeto | As saídas de 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 criptografado. O código é encapsulado em uma instrução de tentativa/catch para capturar quaisquer 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(cadeia de caracteres nome, entradas de mapa, tempo limite de número)
Executa 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.
- Emissão de relatórios e registros gerados
- Este método não cria detalhes de execução e registros de contexto, independentemente das configurações Workflow Studio.
- Aguardar suporte
- Este método não é compatível com a pausa da ação para aguardar as condições. Não há suporte para etapas que pausam para condições de espera, como Solicitar aprovação ou Aguardar condição.
- Suporte ao MID Server
- Este método não é compatível com a pausa de uma ação para ser executada em um MID Server.
| 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 Workflow Studio. |
| 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 na descrição da ação. Use o nome da entrada, não o rótulo da entrada. Por exemplo, {'table':'incident','sys_id':'a39d8e3cf0212300964feeefe80ff0ed'}. |
| timeout | 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 expirar, uma exceção será lançada. |
| 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 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 e paginação de fluxo de dados.
tentar/capturar para detectar erros. Sempre inclua uma declaração final que termina com o método close() da classe ScriptableDataStream para fechar o fluxo de dados e evitar problemas de desempenho.| 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. |
| timeout | Número | Opcional. Quantidade de tempo antes que a ação expire. Depois que o tempo limite expirar, uma exceção será lançada. O tempo limite se aplica somente ao método executeDataStreamAction, não aos métodos na classe ScriptableDataStream. Padrão: 30000, especificado pela propriedade do sistema com.glide.hub.flow_api.default_execution_time Unidade: Milissegundos |
| Tipo | Descrição |
|---|---|
| ScriptableDataStream | Um objeto usado para iterar itens no fluxo de dados. Use os métodos na 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 nome, entradas de mapa, tempo limite de número)
Executa um fluxo de um script do lado do servidor de forma síncrona.
| 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 de gatilho. Use o nome da entrada, não o rótulo da entrada. |
| timeout | 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 expirar, uma exceção será lançada. |
| 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 de forma síncrona é pausado. A execução atual está no estado de espera. 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 a partir de um script, forneça 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 de tentativa/catch para capturar quaisquer 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(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.
- Emissão de relatórios e registros gerados
- Este método não cria detalhes de execução e registros de contexto, independentemente das configurações Workflow Studio.
- 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 é compatível com a pausa do fluxo para aguardar as condições. 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, não são compatíveis.
- Suporte ao MID Server
- Este método não é compatível com a pausa de um fluxo para ser executado a partir de um MID Server.
| 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 Workflow Studio. |
| entradas | Mapa | Pares de nome-valor que definem entradas de 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'}. |
| timeout | 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 expirar, uma exceção será lançada. |
| 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.
| 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. |
| timeout | 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 expirar, uma exceção será lançada. |
| 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 de forma síncrona é pausado. A execução atual está no estado de espera. 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 de tentativa/catch para capturar quaisquer 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(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.
- Emissão de relatórios e registros gerados
- Este método não cria detalhes de execução e registros de contexto, independentemente das configurações Workflow Studio.
- 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 é compatível com a pausa do fluxo para aguardar as condições. 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, não são compatíveis.
- Suporte ao MID Server
- Este método não é compatível com a pausa de um fluxo para ser executado a partir de um MID Server.
| 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 Workflow Studio subfluxos. |
| 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'}. |
| timeout | 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 expirar, uma exceção será lançada. |
| 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 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().
| Nome | Tipo | Descrição |
|---|---|---|
| contextId | Cadeia de caracteres | O sys_id do fluxo, subfluxo ou ação cujas mensagens de erro você deseja obter. |
| Tipo | Descrição |
|---|---|
| Cadeia de caracteres | A última operação executada e a mensagem de erro produzida. |
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 recebe suas mensagens de erro. Normalmente, outro script ou Workflow Studio já teria executado o fluxo. O código é encapsulado em uma instrução de tentativa/catch para capturar quaisquer 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(String scopedFlowName)
Retorne uma cadeia de caracteres JSON que contém a lista de fases de fluxo.
| Nome | Tipo | Descrição |
|---|---|---|
| scopedFlowName | Cadeia de caracteres | O escopo da aplicação e o nome do fluxo cujas fases você deseja obter. |
| 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.
| Nome | Tipo | Descrição |
|---|---|---|
| contextId | Cadeia de caracteres | O sys_id da ação ou subfluxo cujas saídas você deseja obter. |
| 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. Como um fluxo pode não ser concluído antes da chamada getOutputs(), 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 de tentativa/catch para capturar quaisquer 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 objeto do construtor ScriptableFlowRunner para um fluxo ou ação que você deseja executar.
| Nome | Tipo | Descrição |
|---|---|---|
| Nenhum |
| Tipo | Descrição |
|---|---|
| ScriptableFlowRunner | Objeto de construtor usado para executar uma ação Workflow Studio, 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 contextId)
Retorna o status de um fluxo, subfluxo ou ação.
| Nome | Tipo | Descrição |
|---|---|---|
| contextId | Cadeia de caracteres | O sys_id do fluxo, subfluxo ou ação cujo status você deseja obter. |
| Parâmetro | Tipo | Descrição |
|---|---|---|
| <Object> | Objeto | Objeto que contém o estado atual do fluxo, subfluxo ou ação como pares de nome-valor. |
| <Object>.hasSearchError | Booliano | Sinalizador que indica se houve um problema ao pesquisar o status do contexto do fluxo, subfluxo ou ação. |
| <Object>.errorMessage | Cadeia de caracteres | Mensagem de erro retornada pela operação de pesquisa de contexto. Este parâmetro é nulo quando hasLookupError é falso. |
| <Object>.contextStatus | Objeto | Objeto que contém detalhes de estado sobre o fluxo, subfluxo ou ação consultada. |
| <Object>.contextStatus.estado | Cadeia de caracteres | Estado do fluxo, subfluxo ou contexto de ação. Alguns valores de estado fornecem informações adicionais em parâmetros relacionados.
|
| <Object>.contextStatus.errorState | Cadeia de caracteres | Estado de conclusão do fluxo produzido pelo processamento de erros de fluxo. A API só gera este parâmetro quando o fluxo, subfluxo ou ação está no estado CONCLUÍDO.
|
| <Object>.contextStatus.message | Cadeia de caracteres | Mensagem de erro retornada pelo fluxo, subfluxo ou ação. A API só gera este parâmetro quando o fluxo, subfluxo ou ação está no estado ERRO. |
| <Object>.contextStatus.canceledReason | Cadeia de caracteres | Mensagem de cancelamento retornada pelo fluxo, subfluxo ou ação. A API só gera este parâmetro quando o fluxo, subfluxo ou ação está no estado CANCELADO. |
| <Object>.contextStatus.isRunOnMid | Booliano | Sinalizador que indica se o fluxo, subfluxo ou ação é executado em um ambiente do MID Server. A API só gera este parâmetro quando o fluxo, subfluxo ou ação está no estado EM ANDAMENTO. |
| <Object>.contextStatus.waitingOn | Matriz | Lista de itens que o fluxo, subfluxo ou ação atual está aguardando. A API só gera este parâmetro quando o fluxo, subfluxo ou ação está no estado WAITING. |
| <Object>.contextStatus.aguardando.ordem | Cadeia de caracteres | Número da etapa de fluxo do item que está fazendo com que o fluxo aguarde. Se a ação em espera for uma ação personalizada em um fluxo, a ordem também incluirá um ponto e o número da etapa da ação personalizada pela qual o fluxo está aguardando. |
| <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 só gera este parâmetro quando o fluxo, subfluxo ou ação está no estado WAITING. Veja alguns exemplos comuns.
|
| <Object>.contextStatus.aguardando.tabela | Cadeia de caracteres | Nome da tabela que contém o registro que o fluxo, subfluxo ou ação está aguardando. A API só gera este parâmetro quando o fluxo, subfluxo ou ação está no estado WAITING e o stepType é WAIT_FOR_CONDITION, WAIT_FOR_CONDITION_WITH_TIMEOUT, ASK_FOR_APPROVAL ou CREATE_TASK_WITH_WAIT. |
| <Object>.contextStatus.aguardando.condição | Cadeia de caracteres | Condição de consulta do registro que o fluxo, subfluxo ou ação está aguardando. A API só gera este parâmetro quando o fluxo, subfluxo ou ação está no estado AGUARDANDO e há uma condição que deve ser atendida para continuar a execução. |
| <Object>.contextStatus.waitingOn.endTime | Números inteiros | Hora de término em que o fluxo, subfluxo ou ação está aguardando. A API só gera este parâmetro quando o fluxo, subfluxo ou ação está no estado WAITING e o stepType é WAIT_FOR_CONDITION_WITH_TIMEOUT, TIMER ou SLA_TIMER. |
| <Object>.contextStatus.waitingOn.approvalRule | Cadeia de caracteres | Regra de aprovação que o fluxo, subfluxo ou ação está aguardando. A API só gera este parâmetro quando o fluxo, subfluxo ou ação está no estado WAITING e o stepType é ASK_FOR_APPROVAL. |
| <Object>.contextStatus.waitingOn.contextId | Cadeia de caracteres | O sys_id do subfluxo que o fluxo ou o subfluxo está aguardando. A API só gera este parâmetro quando o fluxo ou subfluxo está no estado WAITING e o stepType é SUBFLOW. |
Este exemplo executa um fluxo que contém Faça o seguinte na lógica de fluxo paralelo. Normalmente, um único script não executa um fluxo e 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);
}
})();
{
"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(String scopedFlowName)
Verifica se um fluxo em um determinado escopo contém ações Solicitar aprovação.
O método hasApprovals() 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 nos blocos de lógica de fluxo If. Para obter mais informações, consulte Ações Solicitar aprovação.
| 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 Workflow Studio. |
| Tipo | Descrição |
|---|---|
| Cadeia de caracteres | Retorna um dos seguintes valores de cadeia de caracteres:
|
O exemplo a seguir verifica se o fluxo example_flow no escopo global contém ações 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 - restartFlowFromContext(cadeia de caracteres ContextId, mapa fornecidoEntradas)
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.
| 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 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. |
| Tipo | Descrição |
|---|---|
| ScriptableFlowRunnerResultsScoped | Objeto que contém os detalhes de execução de uma ação Workflow Studio, 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.
| 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 Workflow Studioou 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 aguardar primeiro o cancelamento para 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 | Números inteiros | 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 da programação do 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. |
| Tipo | Descrição |
|---|---|
| Nenhum(a) |
Este exemplo usa o valor de retorno do método startFlow() para programar o cancelamento de quaisquer 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 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 - 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.
| Nome | Tipo | Descrição |
|---|---|---|
| contextSysID | Cadeia de caracteres | O valor sys_id do fluxo ou subfluxo que está pausado e aguardando a retomada de uma mensagem específica. 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 este valor de mensagem corresponder ao valor de mensagem listado na ação Aguardar mensagem, a execução do fluxo ou subfluxo será retomada. 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 em espera. O fluxo ou subfluxo pode usar a carga como uma entrada quando a execução é retomada. Por exemplo, você pode especificar um motivo pelo qual um registro foi reaberto ou que uma nova aprovação foi necessária. |
| 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 no 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:
[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(String 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.
| Nome | Tipo | Descrição |
|---|---|---|
| senha | Cadeia de caracteres | Valor de password2 criptografado. |
| 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 nome, entradas de mapa)
Executa uma ação de um script do lado do servidor de forma assíncrona.
| 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. |
| Tipo | Descrição |
|---|---|
| Cadeia de caracteres | SYS ID do registro de contexto para a 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 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 instrução de tentativa/catch para capturar quaisquer 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(cadeia de caracteres nome, entradas de 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.
- Emissão de relatórios e registros gerados
- Este método não cria detalhes de execução e registros de contexto, independentemente das configurações Workflow Studio.
- Aguardar suporte
- Este método não é compatível com a pausa da ação para aguardar as condições. Não há suporte para etapas que pausam para condições de espera, como Solicitar aprovação ou Aguardar condição.
- Suporte ao MID Server
- Este método não é compatível com a pausa de uma ação para ser executada em um MID Server.
| 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 Workflow Studio. |
| 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 na descrição da ação. Use o nome da entrada, não o rótulo da entrada. Por exemplo, {'table':'incident','sys_id':'a39d8e3cf0212300964feeefe80ff0ed'}. |
| 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 nome, entradas de mapa)
Executa um fluxo de um script do lado do servidor.
| 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 de gatilho. Use o nome da entrada, não o rótulo da entrada. |
| 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 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 entradas 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 instrução de tentativa/catch para capturar quaisquer 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(cadeia de caracteres nome, entradas de 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.
- Emissão de relatórios e registros gerados
- Este método não cria detalhes de execução e registros de contexto, independentemente das configurações Workflow Studio.
- 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 é compatível com a pausa do fluxo para aguardar as condições. 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, não são compatíveis.
- Suporte ao MID Server
- Este método não é compatível com a pausa de um fluxo para ser executado a partir de um MID Server.
| 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 Workflow Studio. |
| entradas | Mapa | Pares de nome-valor que definem entradas de 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'}. |
| 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 nome, entrada de mapa)
Executa um subfluxo de um script do lado do servidor.
| 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. |
| Tipo | Descrição |
|---|---|
| Cadeia de caracteres | SYS ID do registro de contexto para o 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 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 instrução de tentativa/catch para capturar quaisquer 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(cadeia de caracteres nome, entradas de 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.
- Emissão de relatórios e registros gerados
- Este método não cria detalhes de execução e registros de contexto, independentemente das configurações Workflow Studio.
- 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 é compatível com a pausa do fluxo para aguardar as condições. 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, não são compatíveis.
- Suporte ao MID Server
- Este método não é compatível com a pausa de um fluxo para ser executado a partir de um MID Server.
| 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 Workflow Studio subfluxos. |
| 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'}. |
| 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);
}
})();