FlowAPI - escopo, global
. FlowAPI fornece métodos para executar ações, fluxos ou subfluxos em scripts do lado do servidor usando métodos de bloqueio ou não bloqueio.
Acesso FlowAPI métodos em scripts globais e com escopo usando sn_fd namespace. Crie chamadas para seus fluxos usando Snippet de código ação em Workflow Studio ou use os métodos detalhados aqui para atualizar scripts manualmente.
FlowAPI - cancel (cadeia de caracteres contextId, motivo da cadeia de caracteres)
Cancela um fluxo, subfluxo ou ação pausado ou em execução.
| Nome | Tipo | Descrição |
|---|---|---|
| contextId | Cadeia de caracteres | Sys_id do registro de detalhes da execução do fluxo, subfluxo ou ação. Acesse os detalhes da execução navegando até a guia Execuções de fluxo em Workflow Studio ou passe o sys_id do registro de contexto retornado pelo StartFlow() , StartSubflow() ou StartAction() métodos. Nota: Pode haver um pequeno atraso no cancelamento se o contexto de destino estiver em execução em um nó diferente da instância. Os contextos em execução no mesmo nó são cancelados imediatamente. Os contextos em execução em outro nó devem aguardar primeiro o cancelamento ser encaminhado para o nó apropriado. |
| motivo | Cadeia de caracteres | Opcional. Motivo para cancelar o fluxo, o subfluxo ou a ação. Aparece em Mensagem Campo da tabela Entradas de log do mecanismo de fluxo [sys_flow_log]. |
| Tipo | Descrição |
|---|---|
| vazio |
Este exemplo usa o valor de retorno de StartFlow() método para cancelar fluxos de longa execução.
(function() {
var now_GR = new GlideRecord('incident');
now_GR.addQuery('number', 'INC0000050');
now_GR.query();
now_GR.next();
try {
var inputs = {};
inputs['current'] = now_GR; // GlideRecord of table:
inputs['table_name'] = 'incident';
// Starts the flow asynchronously.
var result = sn_fd.FlowAPI.getRunner()
.flow('global.myFlow')
.inBackground()
.withInputs(inputs)
.run();
var contextId = result.getContextId();
var dateRun = result.getDate();
var domainUsed = result.getDomainId();
var flowName = result.getFlowObjectName();
var flowObjectType = result.getFlowObjectType();
} catch (ex) {
var message = ex.getMessage();
gs.error(message);
}
})();
// Call the cancel() method using the context Id returned from the startFlow() method
sn_fd.FlowAPI.cancel(contextId, 'Flow took too long to execute.');
Este exemplo cancela todos os fluxos chamados Fluxo de teste.
var now_GR = new GlideRecord("sys_flow_context");
now_GR.addQuery("name", "Test Flow");
now_GR.query();
while (now_GR.next()) {
sn_fd.FlowAPI.cancel(now_GR.getUniqueValue(), 'Canceling Test Flows');
}
FlowAPI - executeAction (nome da cadeia de caracteres, entradas do mapa, tempo limite do número)
Executa uma ação de um script do lado do servidor de forma síncrona.
| Nome | Tipo | Descrição |
|---|---|---|
| nome | Cadeia de caracteres | O escopo e o nome da ação a ser executada, por exemplo global.action_name . |
| entradas | Mapa | Pares nome-valor que definem entradas de ação. Use o nome de entrada, não o rótulo de entrada. |
| timeout | Número | Opcional. Tempo limite em milissegundos. Este valor substitui o tempo limite padrão de 30 segundos especificado pelo com.glide.hub.flow_api.default_execution_timepropriedade do sistema. Depois que o tempo limite expira, uma exceção é lançada. |
| Tipo | Descrição |
|---|---|
| Objeto | As saídas da ação. |
Neste exemplo, o script usa sn_fd.FlowAPI.executeAction para executar uma ação chamada actionforpassword2test no escopo global. Uma variável chamada Entradas contém as entradas da ação. Nesse caso, um nome e uma senha. As saídas da ação são armazenadas na variável de saídas, que, nesse caso, é um objeto de senha criptografado. O código é encapsulado em uma instrução try/catch para capturar todos os erros que possam ocorrer quando o fluxo é executado.
(function() {
try {
var inputs = {};
inputs['name'] = ; // String
inputs['password2'] = ; // Password (2 Way Encrypted)
// Execute Synchronously: Run in foreground. Code snippet has access to outputs.
// var timeout = ; //timeout in ms
//sn_fd.FlowAPI.executeAction('global.actionforpassword2test', inputs, timeout)
var outputs = sn_fd.FlowAPI.executeAction('global.actionforpassword2test', inputs);
// Get Outputs:
// Note: outputs can only be retrieved when executing synchronously.
var output = outputs['output']; // Password (2 Way Encrypted)
} catch (ex) {
var message = ex.getMessage();
gs.error(message);
}
})();
FlowAPI - executeActionQuick (nome da cadeia de caracteres, entradas do mapa, tempo limite do número)
Execute uma ação de um script do lado do servidor de forma síncrona a partir da sessão do usuário atual sem criar detalhes de execução ou outros registros relacionados. Melhore o desempenho eliminando a sobrecarga de manutenção de registros. Use esta API para aumentar a velocidade do processamento de alto volume, por exemplo, várias execuções por segundo, em um ambiente de produção.
- Relatórios e registros gerados
- Independentemente de. Este método não cria detalhes de execução e registros de contexto Workflow Studio configurações.
- Aguarde o suporte
- Este método não oferece suporte à pausa da ação para aguardar condições. Etapas que pausam para condições de espera, como Solicitar aprovação ou Aguardar condição, não são compatíveis.
- Suporte ao MID Server
- Este método não é compatível com a pausa de uma ação para executar a partir de um MID Server.
| Nome | Tipo | Descrição |
|---|---|---|
| nome | Cadeia de caracteres | Escopo e nome interno da ação a ser executada. Por exemplo, global.action_name . Localize Nome interno campo na lista de Workflow Studio ações. |
| entradas | Mapa | Pares nome-valor que definem entradas de ação. Você pode encontrar as entradas de ação disponíveis e os tipos de dados necessários em Entradas na descrição da ação. Use o nome de entrada, não o rótulo de entrada. Por exemplo, "table":"incident", "sys_id":"a39d8e3cf0212300964feefe80ff0ed" . |
| timeout | Número | Opcional. Tempo limite em milissegundos. Este valor substitui o tempo limite padrão de 30 segundos especificado pelo com.glide.hub.flow_api.default_execution_timepropriedade do sistema. Depois que o tempo limite expira, uma exceção é lançada. |
| Tipo | Descrição |
|---|---|
| Objeto | Objeto que contém saídas definidas pela ação. Você pode encontrar as saídas da ação em Saídas na descrição da ação. |
(function() {
try {
var grIncident = new GlideRecord('incident');
grIncident.get('57af7aec73d423002728660c4cf6a71c');
var inputs = {};
inputs['variable'] = grIncident;
var outputs = sn_fd.FlowAPI.executeActionQuick('global.update_record_test', inputs);
// Get Outputs:
// Note: outputs can only be retrieved when executing synchronously.
var output1 = outputs['output1'];
} catch (ex) {
var message = ex.getMessage();
gs.error(message);
}
})();
FlowAPI - executeDataStreamAction (nome da cadeia de caracteres, entradas do mapa, tempo limite do número)
Executa uma ação de Fluxo de dados de forma síncrona a partir de um script do lado do servidor e retorna um objeto ScriptableDataStream.
Para obter mais informações sobre ações de fluxo de dados, consulte Paginação e ações de fluxo de dados .
try/catch bloquear para detectar erros. Sempre inclua um por fim declaração que termina com fechar() método do ScriptableDataStream classe para fechar o fluxo de dados e evitar problemas de desempenho. | Nome | Tipo | Descrição |
|---|---|---|
| nome | Cadeia de caracteres | O escopo e o nome da ação de fluxo de dados a ser executada. Por exemplo, global.data_stream_action_name . |
| entradas | Mapa | Pares nome-valor que definem entradas de ação. Use o nome de entrada, não o rótulo de entrada. Se a ação não tiver entradas, não inclua este parâmetro. |
| timeout | Número | Opcional. Tempo antes que a ação atinja o tempo limite. Depois que o tempo limite expira, uma exceção é lançada. O tempo limite se aplica somente ao ExecutoDataStreamAction método, não para métodos em ScriptableDataStream classe. Padrão: 30000, especificado pelo com.glide.hub.flow_api.default_execution_timepropriedade do sistema Unidade: Milissegundos |
| Tipo | Descrição |
|---|---|
| ScriptableDataStream | Um objeto usado para iterar itens no fluxo de dados. Use os métodos em ScriptableDataStream classe para interagir com este objeto. Consulte API ScriptableDataStream . |
Este exemplo cria um registro de incidente para cada item retornado no fluxo de dados.
(function() {
try {
// Execute Data Stream Action.
var stream = sn_fd.FlowAPI.executeDataStreamAction('x_my_scope.data_stream_name');
// Process each item in the data stream
while (stream.hasNext()) {
// Get a single item from the data stream.
var item = stream.next();
// Use the item.
var now_GR = new GlideRecord('incident');
now_GR.setValue('number',item.id);
now_GR.setValue('short_description',item.name);
now_GR.insert();
// By default, this code snippet will terminate after 10 items.
// Remove or modify this limit after testing your code.
if (stream.getItemIndex() >= 9) {
break;
}
}
} catch (ex) {
var message = ex.getMessage();
gs.error(message);
} finally {
stream.close();
}
})();
FlowAPI - executeFlow (nome da cadeia de caracteres, entradas do mapa, tempo limite do número)
Executa um fluxo de um script do lado do servidor de forma síncrona.
| Nome | Tipo | Descrição |
|---|---|---|
| nome | Cadeia de caracteres | O escopo e o nome do fluxo a ser executado, por exemplo global.flow_name . |
| entradas | Mapa | Pares nome-valor que definem entradas do gatilho. Use o nome de entrada, não o rótulo de entrada. |
| timeout | Número | Opcional. Tempo limite em milissegundos. Este valor substitui o tempo limite padrão de 30 segundos especificado pelo com.glide.hub.flow_api.default_execution_timepropriedade do sistema. Depois que o tempo limite expira, uma exceção é lançada. |
| Tipo | Descrição |
|---|---|
| Nenhum(a) | A operação normal não produz nenhum valor de retorno. |
| Exceção | A API lança uma exceção quando um fluxo chamado pausa de forma síncrona. A execução atual está no estado Aguardando . Na maioria dos casos, a exceção é removida quando o fluxo é retomado. No entanto, a API não pode retomar um fluxo que foi enviado para um MID Server. |
Este exemplo usa sn_fd.FlowAPI.executeFlow para executar um fluxo global chamado test_flow. Este fluxo é normalmente acionado quando um registro na tabela de incidentes é atualizado. Como você está ativando o fluxo de um script, você deve fornecer essas informações. O código cria uma variável de entradas que contém o registro atual e a tabela do registro. O código é encapsulado em uma instrução try/catch para capturar todos os erros que possam ocorrer quando o fluxo é executado.
(function() {
try {
var inputs = {};
inputs['current'] = ; // GlideRecord of table:
inputs['table_name'] = 'incident';
// Execute Synchronously: Run in foreground.
// var timeout = ; //timeout in ms
//sn_fd.FlowAPI.executeFlow('global.test_flow', inputs, timeout)
sn_fd.FlowAPI.executeFlow('global.test_flow', inputs);
} catch (ex) {
var message = ex.getMessage();
gs.error(message);
}
})();
FlowAPI - executeFlowQuick (nome da cadeia de caracteres, entradas do mapa, tempo limite do número)
Executa um fluxo, subfluxo, ação ou ação de Fluxo de dados de um script do lado do servidor de forma síncrona ou assíncrona sem criar detalhes de execução ou outros registros relacionados. Melhora o desempenho ao eliminar a sobrecarga de manutenção de registros. Use esta API para aumentar a velocidade do processamento de alto volume, por exemplo, várias execuções por segundo, em um ambiente de produção.
- Relatórios e registros gerados
- Independentemente de. Este método não cria detalhes de execução e registros de contexto Workflow Studio configurações.
- Executar como usuário
- Este método executa o fluxo como o usuário que inicia a sessão. Não há suporte para definir o fluxo para ser executado como o usuário do sistema ou representar um usuário.
- Aguarde o suporte
- Este método não oferece suporte à pausa do fluxo para aguardar condições. Ações ou lógica de fluxo que pausam condições de espera, como Solicitar aprovação, aguardar condição ou aguardar uma duração, não são compatíveis.
- Suporte ao MID Server
- Este método não oferece suporte à pausa de um fluxo para execução de um MID Server.
| Nome | Tipo | Descrição |
|---|---|---|
| nome | Cadeia de caracteres | Escopo e nome interno do fluxo a ser executado. Por exemplo, global.flow_name . Localize Nome interno campo na lista de Workflow Studio fluxos. |
| entradas | Mapa | Pares nome-valor que definem entradas do gatilho. Você pode encontrar as entradas de gatilho disponíveis e os tipos de dados necessários na seção Gatilho do fluxo. Use o nome de entrada, não o rótulo de entrada. Por exemplo, "table":"incident", "sys_id":"a39d8e3cf0212300964feefe80ff0ed" . |
| timeout | Número | Opcional. Tempo limite em milissegundos. Este valor substitui o tempo limite padrão de 30 segundos especificado pelo com.glide.hub.flow_api.default_execution_timepropriedade do sistema. Depois que o tempo limite expira, uma exceção é lançada. |
| Tipo | Descrição |
|---|---|
| vazio |
(function() {
try {
var grIncident = new GlideRecord('incident');
grIncident.get('ed92e8d173d023002728660c4cf6a7bc');
var inputs = {};
inputs['current'] = grIncident;
inputs['table_name'] = 'incident';
sn_fd.FlowAPI.executeFlowQuick('global.test_quick_flow', inputs);
} catch (ex) {
var message = ex.getMessage();
gs.error(message);
}
})();
FlowAPI - executeSubflow (nome da cadeia de caracteres, entradas do mapa, tempo limite do número)
Executa um subfluxo de um script do lado do servidor de forma síncrona.
| Nome | Tipo | Descrição |
|---|---|---|
| nome | Cadeia de caracteres | O escopo e o nome do subfluxo a ser executado, por exemplo subflow_name . |
| entradas | Mapa | Pares nome-valor que definem entradas de subfluxo. Use o nome de entrada, não o rótulo de entrada. |
| timeout | Número | Opcional. Tempo limite em milissegundos. Este valor substitui o tempo limite padrão de 30 segundos especificado pelo com.glide.hub.flow_api.default_execution_timepropriedade do sistema. Depois que o tempo limite expira, uma exceção é lançada. |
| Tipo | Descrição |
|---|---|
| Objeto | Objeto que contém as saídas de subfluxo. |
| Exceção | A API lança uma exceção quando um fluxo chamado pausa de forma síncrona. A execução atual está no estado Aguardando . Na maioria dos casos, a exceção é removida quando o fluxo é retomado. No entanto, a API não pode retomar um fluxo que foi enviado para um MID Server. |
Neste exemplo, o script usa sn_fd.FlowAPI.executeSubflow para executar um subfluxo chamado subflowTest no escopo global. Uma variável chamada Entradas contém as entradas para o subfluxo. Nesse caso, um nome e uma senha. O código é encapsulado em uma instrução try/catch para capturar todos os erros que possam ocorrer quando o fluxo é executado.
(function() {
try {
var inputs = {};
inputs['name'] = ; // String
inputs['password2'] = ; // Password (2 Way Encrypted)
// Execute Synchronously: Run in foreground.
// var timeout = ; //timeout in ms
//sn_fd.FlowAPI.executeSubflow('global.subflowTest', inputs, timeout)
var outputs = sn_fd.FlowAPI.executeSubflow('global.subflowTest', inputs);
} catch (ex) {
var message = ex.getMessage();
gs.error(message);
}
})();
FlowAPI - executeSubflowQuick (nome da cadeia de caracteres, entradas do mapa, tempo limite do número)
Execute um subfluxo de um script do lado do servidor de forma síncrona a partir da sessão do usuário atual sem criar detalhes de execução ou outros registros relacionados. Melhore o desempenho eliminando a sobrecarga de manutenção de registros. Use esta API para aumentar a velocidade do processamento de alto volume, por exemplo, várias execuções por segundo, em um ambiente de produção.
- Relatórios e registros gerados
- Independentemente de. Este método não cria detalhes de execução e registros de contexto Workflow Studio configurações.
- Executar como usuário
- Este método executa o fluxo como o usuário que inicia a sessão. Não há suporte para definir o fluxo para ser executado como o usuário do sistema ou representar um usuário.
- Aguarde o suporte
- Este método não oferece suporte à pausa do fluxo para aguardar condições. Ações ou lógica de fluxo que pausam condições de espera, como Solicitar aprovação, aguardar condição ou aguardar uma duração, não são compatíveis.
- Suporte ao MID Server
- Este método não oferece suporte à pausa de um fluxo para execução de um MID Server.
| Nome | Tipo | Descrição |
|---|---|---|
| nome | Cadeia de caracteres | Escopo e nome interno do subfluxo a ser executado. Por exemplo, global.subflow_name. Localize Nome interno campo na lista de Workflow Studio subfluxos. |
| entradas | Mapa | Pares nome-valor que definem entradas de subfluxo. Você pode encontrar as entradas de subfluxo disponíveis e os tipos de dados necessários em Entradas no subfluxo. Use o nome de entrada, não o rótulo de entrada. Por exemplo, "table":"incident", "sys_id":"a39d8e3cf0212300964feefe80ff0ed" . |
| timeout | Número | Opcional. Tempo limite em milissegundos. Este valor substitui o tempo limite padrão de 30 segundos especificado pelo com.glide.hub.flow_api.default_execution_timepropriedade do sistema. Depois que o tempo limite expira, uma exceção é lançada. |
| Tipo | Descrição |
|---|---|
| Objeto | Objeto que contém saídas definidas pelo subfluxo. Você pode encontrar as saídas do subfluxo em Entradas e saídas de subfluxo na descrição do subfluxo. |
(function() {
try {
var grIncident = new GlideRecord('incident');
grIncident.get('57af7aec73d423002728660c4cf6a71c');
var inputs = {};
inputs['variable'] = grIncident;
var outputs = sn_fd.FlowAPI.executeSubflowQuick('global.test_quick_run_subflow', inputs);
// Get Outputs:
// Note: outputs can only be retrieved when executing synchronously.
var output1 = outputs['output1'];
} catch (ex) {
var message = ex.getMessage();
gs.error(message);
}
})();
FlowAPI - getErrorMessage(cadeia de caracteres contexId)
Retorna as mensagens de erro produzidas por um fluxo, subfluxo ou ação. Este método não pode retornar mensagens de fluxos, subfluxos ou ações executadas com a API quick().
| 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 que ela produziu. |
Este exemplo inicia um subfluxo global chamado test_error_subflow e retorna todas as mensagens de erro que ele produz. Um único script não executa um fluxo e, em seguida, recebe suas mensagens de erro. Normalmente, outro script ou Workflow Studio já teria executado o fluxo. O código é encapsulado em uma instrução try/catch para capturar todos os erros que possam ocorrer quando o fluxo é executado.
(function() {
try {
// Gather inputs to call flow
var inputs = {};
inputs['ah_task'] = myTaskRecord; // GlideRecord of table: task
inputs['ah_comment'] ='Test Comment' ; // String
// Call flow with known errors
var contextId = sn_fd.FlowAPI.startSubflow('global.test_error_subflow', inputs);
// Get flow error message
var errormsg = sn_fd.FlowAPI.getErrorMessage(contextId);
return errormsg;
} catch (ex) {
var message = ex.getMessage();
gs.error(message);
}
})();
Saída:
Operation (test_error_flow.574033f6db6811102166e2291396199f.274073f6db6811102166e22913961908.0be0d916c31332002841b63b12d3ae13) failed with error: com.snc.process_flow.exception.OpException: Value of field record is not a GlideRecord
at com.snc.process_flow.operation.FieldValue.getGlideRecord(FieldValue.java:145)
at com.snc.process_flow.operation.CRUDOperation.getInputValidGlideRecord(CRUDOperation.java:54)
at com.snc.process_flow.operation.RecordDeleteOperation.run(RecordDeleteOperation.java:26)
at com.snc.process_flow.engine.Operation.execute(Operation.java:212)
at com.snc.process_flow.engine.restricted_caller_access.ExecuteWithCallerAccessTracking.executeWithMetaStack(ExecuteWithCallerAccessTracking.java:31)
at com.snc.process_flow.engine.ProcessEngine.executeOps(ProcessEngine.java:570)
at com.snc.process_flow.engine.ProcessEngine.runInternal(ProcessEngine.java:476)
at com.snc.process_flow.engine.ProcessEngine.run(ProcessEngine.java:462)
at com.snc.process_flow.engine.ProcessAutomation.run(ProcessAutomation.java:86)
at com.snc.process_flow.engine.GlideProcessAutomation.runSync(GlideProcessAutomation.java:155)
at com.snc.process_flow.engine.GlideProcessAutomation.runWithDomain(GlideProcessAutomation.java:270)
at com.snc.process_flow.engine.GlideProcessAutomation.lambda$runAsUserSync$1(GlideProcessAutomation.java:237)
at com.snc.process_flow.engine.PFSessionClone.run(PFSessionClone.java:70)
at com.snc.process_flow.engine.GlidePFSession.runPlanAsUserSession(GlidePFSession.java:42)
at com.snc.process_flow.engine.GlideProcessAutomation.runAsUserSync(GlideProcessAutomation.java:235)
at com.snc.process_flow.engine.GlideProcessAutomation.messageFlow(GlideProcessAutomation.java:330)
at com.snc.process_flow.engine.GlideProcessAutomation.messageFlow(GlideProcessAutomation.java:309)
at com.snc.process_flow.engine.ProcessHubEventHandler.doSendMessage(ProcessHubEventHandler.java:475)
at com.snc.process_flow.engine.ProcessHubEventHandler.process(ProcessHubEventHandler.java:119)
at com.snc.process_flow.engine.ProcessHubEventHandler.process(ProcessHubEventHandler.java:91)
at com.snc.process_flow.engine.FlowEventManager.processEvents(FlowEventManager.java:122)
at com.glide.job.EventHandlerJob.execute(EventHandlerJob.java:38)
at com.glide.schedule.JobExecutor.lambda$executeJob$0(JobExecutor.java:129)
at com.snc.db.data_replicate.replicator.DataReplicationAdvisors.runInOriginatorContext(DataReplicationAdvisors.java:73)
at com.glide.schedule.JobExecutor.lambda$inDataReplicationContext$2(JobExecutor.java:159)
at com.glide.schedule.JobExecutor.executeJob(JobExecutor.java:132)
at com.glide.schedule.JobExecutor.execute(JobExecutor.java:116)
at com.glide.schedule_v2.SchedulerWorkerThread.executeJob(SchedulerWorkerThread.java:338)
at com.glide.schedule_v2.SchedulerWorkerThread.lambda$process$0(SchedulerWorkerThread.java:220)
at com.glide.worker.TransactionalWorkerThread.executeInTransaction(TransactionalWorkerThread.java:35)
at com.glide.schedule_v2.SchedulerWorkerThread.process(SchedulerWorkerThread.java:220)
at com.glide.schedule_v2.SchedulerWorkerThread.run(SchedulerWorkerThread.java:101)
FlowAPI - getFlowStages(cadeia de caracteres scopedFlowName)
Retorne uma cadeia de caracteres JSON que contém a lista de fases de fluxo.
| 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 formatada JSON que lista as fases do fluxo por seus valores de registro de fase. |
Este exemplo mostra como obter as fases do fluxo de solicitação de item do catálogo de serviços.
(function() {
try {
// Name of flow with stages
var flowName = "service_catalog_item_request";
// Get flow stages
var flowStages = sn_fd.FlowAPI.getFlowStages(flowName);
//Print JSON as info message
gs.info(flowStages);
return flowStages;
} catch (ex) {
var message = ex.getMessage();
gs.error(message);
}
})();
Saída:
A cadeia de caracteres JSON contém pares nome-valor para um campo de fase. Para obter mais informações, consulte .
[
{
"label": "Manager Approval",
"value": "manager_approval",
"type": "standard",
"duration": "1970-01-03 00:00:00",
"states": {
"pending": "Pending - has not started",
"inprogress": "In progress",
"skipped": "Skipped",
"complete": "Completed",
"error": "Error"
},
"flow": "30f3d26187e92300e0ef0cf888cb0b91",
"alwaysShow": true,
"order": 0
},
{
"label": "Set current stage state to: [Error]",
"value": "Set current stage state to: [Error]",
"type": "error",
"duration": "1970-01-01 00:00:00",
"states": {
"pending": "Pending - has not started",
"inprogress": "In progress",
"skipped": "Skipped",
"complete": "Completed",
"error": "Error"
},
"flow": "30f3d26187e92300e0ef0cf888cb0b91",
"alwaysShow": false,
"order": 0
},
{
"label": "Dept. Head Approval",
"value": "Dept. Head Approval",
"type": "standard",
"duration": "1970-01-03 00:00:00",
"states": {
"pending": "Pending - has not started",
"inprogress": "In progress",
"skipped": "Skipped",
"complete": "Completed",
"error": "Error"
},
"flow": "30f3d26187e92300e0ef0cf888cb0b91",
"alwaysShow": true,
"order": 1
},
{
"label": "CIO Approval",
"value": "CIO Approval",
"type": "standard",
"duration": "1970-01-03 00:00:00",
"states": {
"pending": "Pending - has not started",
"inprogress": "In progress",
"skipped": "Skipped",
"complete": "Completed",
"error": "Error"
},
"flow": "30f3d26187e92300e0ef0cf888cb0b91",
"alwaysShow": true,
"order": 2
},
{
"label": "Order Fulfillment",
"value": "Order Fulfillment",
"type": "standard",
"duration": "1970-01-05 00:00:00",
"states": {
"pending": "Pending - has not started",
"inprogress": "In progress",
"skipped": "Skipped",
"complete": "Completed",
"error": "Error"
},
"flow": "30f3d26187e92300e0ef0cf888cb0b91",
"alwaysShow": true,
"order": 3
},
{
"label": "Backordered",
"value": "Backordered",
"type": "standard",
"duration": "1970-01-15 00:00:00",
"states": {
"pending": "Pending - has not started",
"inprogress": "In progress",
"skipped": "Skipped",
"complete": "Completed",
"error": "Error"
},
"flow": "30f3d26187e92300e0ef0cf888cb0b91",
"alwaysShow": true,
"order": 4
},
{
"label": "Deployment",
"value": "Deployment",
"type": "standard",
"duration": "1970-01-02 00:00:00",
"states": {
"pending": "Pending - has not started",
"inprogress": "In progress",
"skipped": "Skipped",
"complete": "Completed",
"error": "Error"
},
"flow": "30f3d26187e92300e0ef0cf888cb0b91",
"alwaysShow": true,
"order": 5
},
{
"label": "Request Cancelled",
"value": "Request Cancelled",
"type": "standard",
"duration": "1970-01-01 00:00:00",
"states": {
"pending": "Pending - has not started",
"inprogress": "In progress",
"skipped": "Skipped",
"complete": "Completed",
"error": "Error"
},
"flow": "30f3d26187e92300e0ef0cf888cb0b91",
"alwaysShow": true,
"order": 6
},
{
"label": "Completed",
"value": "complete",
"type": "standard",
"duration": "1970-01-01 00:00:00",
"states": {
"pending": "Pending - has not started",
"inprogress": "In progress",
"skipped": "Skipped",
"complete": "Completed",
"error": "Error"
},
"flow": "30f3d26187e92300e0ef0cf888cb0b91",
"alwaysShow": true,
"order": 7
}
]
FlowAPI - getOutputs(cadeia de caracteres contexId)
Retorna as saídas de uma ação ou subfluxo concluído.
| 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. Uma vez que um fluxo pode não ser concluído antes de GetOutputs() chamada, este exemplo usa um tempo de espera. Normalmente, outro script ou Workflow Studio já teria executado o fluxo. O código é encapsulado em uma instrução try/catch para capturar todos os erros que possam ocorrer quando o fluxo é executado.
(function() {
try {
// Gather inputs to call flow
var inputs = {};
inputs['ah_task'] = myTaskRecord; // GlideRecord of table: task
inputs['ah_comment'] ='Test Comment' ; // String
// Call flow
var contextId = sn_fd.FlowAPI.startSubflow('global.test_subflow', inputs);
// Wait for the flow to finish running
// Get flow outputs
var outputs = sn_fd.FlowAPI.getOutputs(contextId);
var output1 = outputs['output1'];
return output1;
} catch (ex) {
var message = ex.getMessage();
gs.error(message);
}
})();
FlowAPI - getRunner()
Retorna um ScriptableFlowRunner objeto do construtor para um fluxo ou ação que você deseja executar.
| Nome | Tipo | Descrição |
|---|---|---|
| Nenhum |
| Tipo | Descrição |
|---|---|
| ScriptableFlowRunner | Objeto do construtor usado para executar um Workflow Studio ação, fluxo ou subfluxo. |
Este exemplo executa um fluxo de forma síncrona.
(function() {
try {
var inputs = {};
inputs['sys_id'] = '57af7aec73d423002728660c4cf6a71c'; // Pass the record's sys_id in as input.
var result = sn_fd.FlowAPI.getRunner() // Create a ScriptableFlowRunner builder object.
.action('global.markapproved') // Run the global scope action named markapproved.
.inForeground()
.inDomain('TOP/ACME') // Run the action from the TOP/ACME domain.
.withInputs(inputs)
.run(); // Run the action and return a FlowRunnerResult object.
var contextId = result.getContextId(); // Retrieve the context ID from the result
var dateRun = result.getDate();
var domainUsed = result.getDomainId(); // Retrieve the Domain ID from the result.
var flowName = result.getFlowObjectName();
var flowObjectType = result.getFlowObjectType();
var outputs = result.getOutputs(); // Retrieve any outputs from the action execution.
var newApprovalStatus = outputs['approval']; // Echo back the approval status for verification.
} catch (ex) {
var message = ex.getMessage();
gs.error(message);
}
})();
FlowAPI - getStatus(cadeia de caracteres contexId)
Retorna o status de um fluxo, subfluxo ou ação.
| 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 nome-valor. |
| <Object>.HasLookupError | Booliano | Sinalizador que indica se houve um problema ao pesquisar o status de contexto do fluxo, subfluxo ou ação. |
| <Object>.Mensagem de erro | Cadeia de caracteres | Mensagem de erro retornada pela operação de pesquisa de contexto. Este parâmetro é nulo quando hasLookupErrorfalso. |
| <Object>.ContextStatus | Objeto | Objeto que contém detalhes de estado sobre o fluxo, subfluxo ou ação consultado. |
| <Object>.ContextStatus.state | Cadeia de caracteres | Estado do fluxo, subfluxo ou contexto de ação. Alguns valores de estado fornecem informações adicionais em parâmetros relacionados.
|
| <Object>.ContextStatus.errorState | Cadeia de caracteres | Estado de conclusão do fluxo produzido pelo tratamento de erros de fluxo. A API gera este parâmetro somente quando o fluxo, o subfluxo ou a ação está no estado CONCLUÍDO.
|
| <Object>.ContextStatus.message | Cadeia de caracteres | Mensagem de erro retornada pelo fluxo, subfluxo ou ação. A API gera este parâmetro somente quando o fluxo, o subfluxo ou a ação está no estado de ERRO. |
| <Object>.contextStatus.canceledReason | Cadeia de caracteres | Mensagem de cancelamento retornada pelo fluxo, subfluxo ou ação. A API gera este parâmetro somente quando o fluxo, o subfluxo ou a ação está no estado CANCELADO. |
| <Object>.ContextStatus.isRunOnMid | Booliano | Sinalizador que indica se o fluxo, o subfluxo ou a ação é executado em um ambiente MID Server. A API gera este parâmetro somente quando o fluxo, o subfluxo ou a ação está no estado IN_PROGRESS. |
| <Object>.ContextStatus.waitingOn | Matriz | Lista de itens que o fluxo, subfluxo ou ação atual está aguardando. A API gera este parâmetro somente quando o fluxo, o subfluxo ou a ação está no estado AGUARDANDO. |
| <Object>.ContextStatus.waitingOn.order | Cadeia de caracteres | Número da etapa do fluxo do item que está causando a espera do fluxo. Se a ação de espera for uma ação personalizada em um fluxo, o pedido também incluirá um período e o número da etapa de ação personalizada na qual o fluxo está aguardando. |
| <Object>.ContextStatus.waitingOn.stepType | Cadeia de caracteres | Tipo de ação ou etapa de fluxo que está fazendo com que o fluxo, subfluxo ou ação aguarde. A API gera este parâmetro somente quando o fluxo, o subfluxo ou a ação está no estado AGUARDANDO. Aqui estão alguns exemplos comuns.
|
| <Object>.ContextStatus.waitingOn.table | Cadeia de caracteres | Nome da tabela que contém o registro que o fluxo, subfluxo ou ação está aguardando. A API gera este parâmetro somente quando o fluxo, o subfluxo ou a ação está no estado AGUARDANDO e o stepType é WAIT_FOR_CONDITION, WAIT_FOR_CONDITION_WITH_TIMEOUT, ASK_FOR_APPROVAL ou CREATE_TASK_WITH_WAIT. |
| <Object>.ContextStatus.waitingOn.condition | Cadeia de caracteres | Condição de consulta do registro que o fluxo, subfluxo ou ação está aguardando. A API gera este parâmetro somente quando o fluxo, o subfluxo ou a ação está no estado AGUARDANDO e há uma condição que deve ser atendida para continuar a execução. |
| <Object>.ContextStatus.WaitingOn.endTime | Inteiro | Hora de término em que o fluxo, subfluxo ou ação está aguardando. A API gera esse parâmetro somente quando o fluxo, o subfluxo ou a ação está no estado AGUARDANDO e o stepType é WAIT_FOR_CONDITION_WITH_TIMEOUT, TIMER ou sla_TIMER. |
| <Object>.ContextStatus.waitingOn.approvalRule | Cadeia de caracteres | Regra de aprovação que o fluxo, subfluxo ou ação está aguardando. A API gera este parâmetro somente quando o fluxo, o subfluxo ou a ação está no estado AGUARDANDO e o stepType é ASK_FOR_APPROVAL. |
| <Object>.ContextStatus.waitingOn.contextId | Cadeia de caracteres | O sys_id do subfluxo que o fluxo ou subfluxo está aguardando. A API gera este parâmetro somente quando o fluxo ou o subfluxo está no estado AGUARDANDO e o stepType é SUBFLUXO. |
Este exemplo executa um fluxo que contém o seguinte na lógica de fluxo paralelo. Um único script não executa um fluxo e, em seguida, recebe suas mensagens de erro. Normalmente, outro script ou Workflow Studio já teria executado o fluxo.
(function() {
try {
var result = sn_fd.FlowAPI.getRunner() // Create a ScriptableFlowRunner builder object.
.flow('global.test_do_in_parallel') // Run the global scope flow named do_in_parallel.
.run(); // Run the flow and return a FlowRunnerResult object.
var contextId = result.getContextId(); // Retrieve the context ID from the result
var flowStatus = sn_fd.FlowAPI
.getStatus(contextId); // Retrieve any outputs from the flow execution.
JSON.stringfy(flowStatus); // Convert object to string
return flowStatus;
} catch (ex) {
var message = ex.getMessage();
gs.error(message);
}
})();
{
"hasLookupError": false,
"errorMessage": "",
"contextStatus": {
"state": "WAITING",
"waitingOn": [
{
"order":"1",
"stepType": "TIMER",
"endTime": 1713627497643
},
{
"order":"5",
"stepType": "WAIT_FOR_CONDITION_WITH_TIMEOUT",
"table": "incident",
"condition": "sys_id=10e8b43243200210338774d6ebb8f22d^short_description=112",
"endTime": 1713645497800
}
]
}
}FlowAPI - hasApprovals(cadeia de caracteres scopedFlowName)
Verifica se um fluxo em um escopo fornecido contém ações Solicitar aprovação.
. HasApprovals() O método determina se um fluxo em um determinado escopo contém ações Solicitar aprovação. Este método também verifica se alguma ação Solicitar aprovação no fluxo está aninhada em blocos lógicos de fluxo If. Para obter mais informações, consulte Solicitar ações de aprovação .
| Nome | Tipo | Descrição |
|---|---|---|
| ScopedFlowName | Cadeia de caracteres | Escopo e nome interno do fluxo a ser executado. Por exemplo, global.flow_name . Localize Nome interno campo na lista de Workflow Studio fluxos. |
| Tipo | Descrição |
|---|---|
| Cadeia de caracteres | Retorna um dos seguintes valores de cadeia de caracteres:
|
O exemplo a seguir verifica se example_flow fluxo no global O escopo contém todas as ações Solicitar aprovação e registra o resultado em log.
(function() {
try {
var result = sn_fd.FlowAPI.hasApprovals('global.example_flow');
gs.log('Result: ' + result);
}
catch (ex) {
var message = ex.getMessage();
gs.error(message);
}
})();
FlowAPI - restartFlowFromContext(cadeia de caracteres ContextId, map providedInputs)
Reinicia um fluxo, subfluxo ou ação que foi executado em segundo plano. Você pode fornecer novas entradas ou omiti-las para reutilizar as entradas fornecidas anteriormente.
| Nome | Tipo | Descrição |
|---|---|---|
| contextId | Cadeia de caracteres | O sys_id do fluxo, subfluxo ou ação que você deseja reiniciar. Este fluxo, subfluxo ou ação deve ter sido executado em segundo plano e ter um registro de SysEvent associado. |
| Inputs forneceded | Objeto | Opcional. Objeto de mapa que contém os pares nome-valor que definem entradas de substituição para o fluxo, subfluxo ou ação. Se você omitir ou fornecer um valor nulo para este parâmetro, o fluxo, o subfluxo ou a ação serão executados usando as entradas fornecidas anteriormente. |
| Tipo | Descrição |
|---|---|
| ScriptableFlowRunnerResultsScoped | Objeto que contém os detalhes de execução de um Workflow Studio ação, fluxo ou subfluxo. |
Reinicia um fluxo de amostra que tem um gatilho baseado em registro na tabela Incidente. O fluxo original usou o incidente de amostra INC0008112 como uma entrada. Quando o fluxo é reiniciado, ele usa o incidente de amostra INC0008111 como uma entrada.
(function() {
try {
var flowContextID = '4216396ffd7d11107edcf07204c30fd5'; // sys_id of sys_flow_context record
var oldIncidentRecord = '552c48888c033300964f4932b03eb092'; // sys_id of INC0008112
var newIncidentRecord = 'a83820b58f723300e7e16c7827bdeed2'; // sys_id of INC0008111
var inputs = {};
var gr = new GlideRecord('incident'); // Create new incident object
gr.get(newIncidentRecord); // Get GlideRecord object for INC0008111
inputs['current'] = gr; // Set new Incident record as input
inputs['table_name'] = 'incident'; // Set table name to Incident
var result = sn_fd.FlowAPI.getRunner() // Create a ScriptableFlowRunner builder object.
.restartFlowFromContext(flowContextID, inputs); // Restart flow with new inputs.
var contextId = result.getContextId(); // Retrieve the context ID from the result
var dateRun = result.getDate();
gs.info(contextId + ' ' + dateRun);
} catch (ex) {
var message = ex.getMessage();
gs.error(message);
}
})();
FlowAPI - scheduleCancel(cadeia de caracteres contextId, motivo da cadeia de caracteres, atraso de números inteiros)
Programe um evento do sistema na Fila do mecanismo de fluxo para cancelar um fluxo que está em andamento, supostamente interrompido ou em espera após um atraso.
| Nome | Tipo | Descrição |
|---|---|---|
| contextId | Cadeia de caracteres | Sys_id do registro de detalhes da execução do fluxo, subfluxo ou ação. O fluxo, subfluxo ou ação de destino deve estar no estado Em andamento, presumido interrompido ou aguardando. Acesse os detalhes da execução navegando até a guia Execuções de fluxo em Workflow Studio ou passe o sys_id do registro de contexto retornado pelo método. Nota: Pode haver um pequeno atraso no cancelamento se o contexto de destino estiver em execução em um nó diferente da instância. Os contextos em execução no mesmo nó são cancelados imediatamente. Os contextos em execução em outro nó devem aguardar primeiro o cancelamento ser encaminhado para o nó apropriado. |
| motivo | Cadeia de caracteres | Motivo para cancelar o fluxo, o subfluxo ou a ação. Aparece em Mensagem Campo da tabela Entradas de log do mecanismo de fluxo [sys_flow_log]. |
| AdiaçãoSeconds | Inteiro | Opcional. Número de segundos de espera antes de processar um evento de cancelamento na fila do Flow Engine. Se você omitir este parâmetro, o método usará o valor padrão de 1 segundo. Você pode usar este parâmetro para evitar o impacto no desempenho de programar o cancelamento de milhares de contextos de fluxo ao mesmo tempo. Em vez de executar todos os cancelamentos simultaneamente, programe um lote de cancelamentos de fluxo com um atraso. Como alternativa, você pode usar o atraso como um valor de tempo limite para um fluxo assíncrono. |
| Tipo | Descrição |
|---|---|
| Nenhum(a) |
Este exemplo usa o valor de retorno de StartFlow() método para programar o cancelamento de fluxos de longa execução.
(function() {
var now_GR = new GlideRecord('incident');
now_GR.addQuery('number', 'INC0000050');
now_GR.query();
now_GR.next();
try {
var inputs = {};
inputs['current'] = now_GR; // GlideRecord of table:
inputs['table_name'] = 'incident';
// Starts the flow asynchronously.
var contextId = sn_fd.FlowAPI.startFlow('global.myFlow', inputs);
} catch (ex) {
var message = ex.getMessage();
gs.error(message);
}
})();
// Call the scheduleCancel() method using the context Id returned from the startFlow() method
sn_fd.FlowAPI.scheduleCancel(contextId, 'Flow took too long to execute.', 60);
Este exemplo agenda o cancelamento de todos os fluxos chamados Fluxo de teste.
var now_GR = new GlideRecord("sys_flow_context");
now_GR.addQuery("name", "Test Flow");
now_GR.query();
while (now_GR.next()) {
sn_fd.FlowAPI.scheduleCancel(now_GR.getUniqueValue(), 'Canceling Test Flows', 60);
}
Este exemplo usa o parâmetro delaySeconds para executar trabalhos de cancelamento de fluxo em lotes. Use lotes para cancelar milhares de contextos de fluxo.
var delaySeconds = 1;
for (var i; i < sys_flow_context.length; ++i) {
if (i % 100 === 0) {
delaySeconds = delaySeconds + 60;
}
var contextId = sys_flow_context[i];
var reason = "Example reason";
sn_fd.FlowAPI.scheduleCancel(contextId, reason, delaySeconds);
}
FlowAPI - SendMessage (cadeia de caracteres contextSySID, mensagem de cadeia de caracteres, carga de cadeia de caracteres)
Envie uma mensagem específica e uma resposta de carga para um fluxo que está pausado e aguardando uma mensagem.
| Nome | Tipo | Descrição |
|---|---|---|
| ContextSySID | Cadeia de caracteres | O valor sys_id do fluxo ou subfluxo que está pausado e aguardando uma mensagem específica ser retomada. O fluxo ou subfluxo deve incluir uma ação Aguardar mensagem. Consulte Wait For Message action. |
| mensagem | Cadeia de caracteres | A cadeia de caracteres de texto a ser enviada para o fluxo ou subfluxo em espera. Se o valor desta mensagem corresponder ao valor da mensagem listado na ação Aguardar mensagem, o fluxo ou subfluxo será reiniciado. Consulte Wait For Message action. |
| carga | Cadeia de caracteres | O valor de saída da cadeia de caracteres de texto a ser enviado para o fluxo de espera. O fluxo ou subfluxo pode usar a carga como entrada quando retomar a execução. Por exemplo, você pode especificar um motivo pelo qual um registro foi reaberto ou que uma nova aprovação foi necessária. |
| Tipo | Descrição |
|---|---|
| Nenhum(a) |
Este exemplo envia a mensagem Retomar fluxo para reiniciar um fluxo pausado. O fluxo pausado pode usar o valor da carga como dados em outro lugar do fluxo.
(function() {
try {
// var change = '154a6320db9b12102166e229139619fc'; // Example sys_id of change record
var pausedFlowId = '6e9bab60949b1210dda11cd237cd955d'; // Example sys_id of a paused flow
var resumeMessage = 'Resume Flow'; // Message that paused flow is waiting for
var payload = 'Resubmitted for approval'; // Data to send back to flow
var result = sn_fd.FlowAPI
.sendMessage(pausedFlowId, resumeMessage, payload); // Send a message to the paused flow
} catch (ex) {
var message = ex.getMessage();
gs.error(message);
}
})();
Saída:
[0:00:00.074] Script completed in scope global: script
Script execution history and recovery available here
Operation Table Row Count
delete sys_flow_runtime_state_chunk 1
insert sys_flow_runtime_state_chunk 1
update sys_flow_context 1
record-watcher asynchronous tracking complete - time: 3 ms. Executed responders: 1
record-watcher asynchronous tracking complete - time: 3 ms. Executed responders: 1
record-watcher asynchronous tracking complete - time: 3 ms. Executed responders: 1
FlowAPI - setEncryptedOutput(senha de cadeia de caracteres)
Cria valores password2 em uma etapa de script.
Identifique um valor password2 criptografado retornado de um GlideRecord, permitindo que o sistema exiba o valor como uma senha mascarada em vez de uma cadeia de caracteres criptografada.
| Nome | Tipo | Descrição |
|---|---|---|
| senha | Cadeia de caracteres | Valor de password2 criptografado. |
| Tipo | Descrição |
|---|---|
| Cadeia de caracteres | Valor password2 criptografado, reconhecido pelo mecanismo como um valor de senha. |
Este exemplo retorna o valor de um campo password2 de um registro de usuário e armazena em uma variável. Esta variável é passada para o método setEncryptedOutput, que é chamado usando sn_fd.GlideActionUtil.setEncryptedOutput. A instância reconhece o valor retornado como uma senha.
(function execute(inputs, outputs) {
// ...code...
var now_GR = new GlideRecord('sys_user');
now_GR.addQuery('first_name' , 'Abel');
now_GR.query();
now_GR.next();
var pwVal = now_GR.getValue('pw2');
outputs['usedSetEncrypted'] = sn_fd.GlideActionUtil.setEncryptedOutput(pwVal);
outputs['justSetDirectly'] = pwVal;
})(inputs, outputs);
FlowAPI - startAction (nome da cadeia de caracteres, entradas do mapa)
Executa uma ação de um script do lado do servidor de forma assíncrona.
| Nome | Tipo | Descrição |
|---|---|---|
| nome | Cadeia de caracteres | O escopo e o nome da ação a ser executada, por exemplo global.action_name . |
| entradas | Mapa | Pares nome-valor que definem entradas de ação. Use o nome de entrada, não o rótulo de entrada. |
| Tipo | Descrição |
|---|---|
| Cadeia de caracteres | Sys ID do registro de contexto da ação. Acesse o registro de contexto navegando até a guia Execuções de fluxo em Workflow Studio selecionando uma execução de fluxo e clicando em Registro de contexto em aberto . |
Este exemplo usa sn_fd.FlowAPI.startAction para executar uma ação chamada add_comment no escopo sn_itsm_spoke. O objeto Entradas contém um registro de destino e um comentário a ser adicionado a esse registro. O código é encapsulado em uma instrução try/catch para capturar todos os erros que possam ocorrer quando o fluxo é executado.
(function() {
try {
var inputs = {};
inputs['ah_task'] = myTaskRecord; // GlideRecord of table: task
inputs['ah_comment'] ='Test Comment' ; // String
var contextId = sn_fd.FlowAPI.startAction('sn_itsm_spoke.add_comment', inputs);
} catch (ex) {
var message = ex.getMessage();
gs.error(message);
}
})();
FlowAPI - startActionQuick (nome da cadeia de caracteres, entradas do mapa)
Executa uma ação de um script do lado do servidor de forma assíncrona sem criar detalhes de execução ou outros registros relacionados. Melhore o desempenho eliminando a sobrecarga de manutenção de registros. Use esta API para aumentar a velocidade do processamento de alto volume, por exemplo, várias execuções por segundo, em um ambiente de produção.
- Relatórios e registros gerados
- Independentemente de. Este método não cria detalhes de execução e registros de contexto Workflow Studio configurações.
- Aguarde o suporte
- Este método não oferece suporte à pausa da ação para aguardar condições. Etapas que pausam para condições de espera, como Solicitar aprovação ou Aguardar condição, não são compatíveis.
- Suporte ao MID Server
- Este método não é compatível com a pausa de uma ação para executar a partir de um MID Server.
| Nome | Tipo | Descrição |
|---|---|---|
| nome | Cadeia de caracteres | Escopo e nome interno da ação a ser executada. Por exemplo, global.action_name . Localize Nome interno campo na lista de Workflow Studio ações. |
| entradas | Mapa | Pares nome-valor que definem entradas de ação. Você pode encontrar as entradas de ação disponíveis e os tipos de dados necessários em Entradas na descrição da ação. Use o nome de entrada, não o rótulo de entrada. Por exemplo, "table":"incident", "sys_id":"a39d8e3cf0212300964feefe80ff0ed" . |
| Tipo | Descrição |
|---|---|
| vazio |
(function() {
try {
var grIncident = new GlideRecord('incident');
grIncident.get('57af7aec73d423002728660c4cf6a71c');
var inputs = {};
inputs['variable'] = grIncident;
sn_fd.FlowAPI.startActionQuick('global.update_record_test', inputs);
} catch (ex) {
var message = ex.getMessage();
gs.error(message);
}
})();
FlowAPI - startFlow (nome da cadeia de caracteres, entradas do mapa)
Executa um fluxo de um script do lado do servidor.
| Nome | Tipo | Descrição |
|---|---|---|
| nome | Cadeia de caracteres | O escopo e o nome do fluxo a ser executado, por exemplo global.flow_name . |
| entradas | Mapa | Pares nome-valor que definem entradas do gatilho. Use o nome de entrada, não o rótulo de entrada. |
| Tipo | Descrição |
|---|---|
| Cadeia de caracteres | Sys ID do registro de contexto do fluxo. Acesse o registro de contexto navegando até a guia Execuções de fluxo em Workflow Studio selecionando uma execução de fluxo e clicando em Registro de contexto em aberto . |
Este exemplo usa sn_fd.FlowAPI.startFlow para executar um fluxo global chamado test_flow. O código cria uma variável de entradas que contém as entradas necessárias para o fluxo. Nesse caso, o registro atual e a tabela do registro. O código é encapsulado em uma instrução try/catch para capturar todos os erros que possam ocorrer quando o fluxo é executado.
(function() {
var now_GR = new GlideRecord('incident');
now_GR.addQuery('number', 'INC0009009');
now_GR.query();
now_GR.next();
try {
var inputs = {};
inputs['current'] = now_GR; // GlideRecord of table: Incident
inputs['table_name'] = 'incident';
var contextId = sn_fd.FlowAPI.startFlow('global.test_flow', inputs);
} catch (ex) {
var message = ex.getMessage();
gs.error(message);
}
})();
FlowAPI - startFlowQuick (nome da cadeia de caracteres, entradas do mapa)
Executa um fluxo de um script do lado do servidor de forma assíncrona sem criar detalhes de execução ou outros registros relacionados. Melhore o desempenho eliminando a sobrecarga de manutenção de registros. Use esta API para aumentar a velocidade do processamento de alto volume, por exemplo, várias execuções por segundo, em um ambiente de produção.
- Relatórios e registros gerados
- Independentemente de. Este método não cria detalhes de execução e registros de contexto Workflow Studio configurações.
- Executar como usuário do sistema
- Este método executa o fluxo como o usuário do sistema. Não há suporte para definir o fluxo para ser executado como o usuário que inicia a sessão ou representar um usuário.
- Aguarde o suporte
- Este método não oferece suporte à pausa do fluxo para aguardar condições. Ações ou lógica de fluxo que pausam condições de espera, como Solicitar aprovação, aguardar condição ou aguardar uma duração, não são compatíveis.
- Suporte ao MID Server
- Este método não oferece suporte à pausa de um fluxo para execução de um MID Server.
| Nome | Tipo | Descrição |
|---|---|---|
| nome | Cadeia de caracteres | Escopo e nome interno do fluxo a ser executado. Por exemplo, global.flow_name . Localize Nome interno campo na lista de Workflow Studio fluxos. |
| entradas | Mapa | Pares nome-valor que definem entradas do gatilho. Você pode encontrar as entradas de gatilho disponíveis e os tipos de dados necessários na seção Gatilho do fluxo. Use o nome de entrada, não o rótulo de entrada. Por exemplo, "table":"incident", "sys_id":"a39d8e3cf0212300964feefe80ff0ed" . |
| Tipo | Descrição |
|---|---|
| vazio |
(function() {
try {
var grIncident = new GlideRecord('incident');
grIncident.get('ed92e8d173d023002728660c4cf6a7bc');
var inputs = {};
inputs['current'] = grIncident;
inputs['table_name'] = 'incident';
sn_fd.FlowAPI.startFlowQuick('global.test_quick_flow', inputs);
} catch (ex) {
var message = ex.getMessage();
gs.error(message);
}
})();
FlowAPI - startSubflow (nome da cadeia de caracteres, entrada do mapa)
Executa um subfluxo de um script do lado do servidor.
| Nome | Tipo | Descrição |
|---|---|---|
| nome | Cadeia de caracteres | O escopo e o nome do subfluxo a ser executado, por exemplo subflow_name . |
| entradas | Mapa | Pares nome-valor que definem entradas de subfluxo. Use o nome de entrada, não o rótulo de entrada. |
| Tipo | Descrição |
|---|---|
| Cadeia de caracteres | Sys ID do registro de contexto do subfluxo. Acesse o registro de contexto navegando até a guia Execuções de fluxo em Workflow Studio selecionando uma execução de fluxo e clicando em Registro de contexto em aberto . |
Este exemplo usa sn_fd.FlowAPI.startSubflow para executar um fluxo global chamado test_subflow. O código é encapsulado em uma instrução try/catch para capturar todos os erros que possam ocorrer quando o fluxo é executado.
(function() {
try {
var inputs = {};
inputs['ah_task'] = myTaskRecord; // GlideRecord of table: task
inputs['ah_comment'] ='Test Comment' ; // String
var contextId = sn_fd.FlowAPI.startSubflow('global.test_subflow', inputs);
} catch (ex) {
var message = ex.getMessage();
gs.error(message);
}
})();
FlowAPI - startSubflowQuick (nome da cadeia de caracteres, entradas do mapa)
Executa um subfluxo de um script do lado do servidor de forma assíncrona sem criar detalhes de execução ou outros registros relacionados. Melhore o desempenho eliminando a sobrecarga de manutenção de registros. Use esta API para aumentar a velocidade do processamento de alto volume, por exemplo, várias execuções por segundo, em um ambiente de produção.
- Relatórios e registros gerados
- Independentemente de. Este método não cria detalhes de execução e registros de contexto Workflow Studio configurações.
- Executar como usuário do sistema
- Este método executa o fluxo como o usuário do sistema. Não há suporte para definir o fluxo para ser executado como o usuário que inicia a sessão ou representar um usuário.
- Aguarde o suporte
- Este método não oferece suporte à pausa do fluxo para aguardar condições. Ações ou lógica de fluxo que pausam condições de espera, como Solicitar aprovação, aguardar condição ou aguardar uma duração, não são compatíveis.
- Suporte ao MID Server
- Este método não oferece suporte à pausa de um fluxo para execução de um MID Server.
| Nome | Tipo | Descrição |
|---|---|---|
| nome | Cadeia de caracteres | Escopo e nome interno do subfluxo a ser executado. Por exemplo, global.subflow_name. Localize Nome interno campo na lista de Workflow Studio subfluxos. |
| entradas | Mapa | Pares nome-valor que definem entradas de subfluxo. Você pode encontrar as entradas de subfluxo disponíveis e os tipos de dados necessários em Entradas no subfluxo. Use o nome de entrada, não o rótulo de entrada. Por exemplo, "table":"incident", "sys_id":"a39d8e3cf0212300964feefe80ff0ed" . |
| 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);
}
})();