Modelos e scripts JavaScript javascript-scripts-and-templates

Os scripts permitem o cálculo de valores, a troca de dados entre tarefas diferentes em andamento e a execução de operações específicas usando chamadas SOAP.

Os scripts são universais em um diagrama de workflow:

  • todas as atividades têm scripts de inicialização. Um script de inicialização é executado quando a atividade é ativada e pode ser usado para inicializar variáveis e modificar as propriedades.

  • A atividade 'código JavaScript' é simplesmente usada para executar um script.

  • A atividade de 'Teste' avalia expressões JavaScript para ativar a transição apropriada.

  • A maioria dos campos de texto são templates do JavaScript: expressões JavaScript podem ser incluídas entre <%= and %>. Estes campos oferecem um botão que abre uma lista suspensa para ajudá-lo a inserir expressões.

Objetos expostos objects-exposed

Os JavaScripts executado no contexto de um workflow acessa uma série de objetos globais adicionais.

  • instance: representa o workflow que está sendo executado. O esquema deste objeto é xtk:workflow.
  • task: representa as tarefas que estão sendo executadas. O esquema deste objeto é xtk:workflowTask.
  • event: representa os eventos que ativam a tarefa que está sendo executada. O esquema deste objeto é xtk:workflowEvent. Este objeto não é inicializado para atividades tipo AND-join que foram ativadas a partir de várias transições.
  • events: representa a lista de eventos que ativou a tarefa atual. O esquema deste objeto é xtk:workflowEvent. Essa tabela normalmente contém um elemento, mas pode conter vários para atividades tipo AND-join ativadas com base em várias transições.
  • activity: representa o modelo da tarefa que está sendo executada. O esquema desse objeto depende do tipo de atividade. Esse objeto pode ser modificado pelo script de inicialização, em outros scripts, modificações têm efeitos indetermináveis.

As propriedades disponíveis para esses objetos podem ser visualizadas em uma lista suspensa clicando no botão à direita da barra de ferramentas do script.

CAUTION
As propriedades desses objetos são somente para leitura, exceto para as sub-propriedades da propriedade vars.
A maioria dessas propriedades é atualizada somente após executar uma tarefa primária ou quando a instância ficar passiva. Os valores que são lidos não correspondem necessariamente ao status atual, mas ao status anterior.

Exemplo

Neste exemplo, e nos exemplos a seguir, crie um workflow que inclua uma atividade de código JavaScript e uma atividade final como exibido no diagrama a seguir.

Clique duas vezes na atividade de código JavaScript e insira o seguinte script:

logInfo("Label: " + instance.label)
logInfo("Start date: " + task.creationDate)

A função logInfo(message) insere uma mensagem no log.

Clique em OK para fechar o assistente de criação e, em seguida, inicie o workflow usando os botões de ação localizados na parte superior direita da lista de workflows. No final da execução, consulte o log. Você verá duas mensagens correspondentes ao script: uma exibe a identificação do workflow, a outra exibe a data em que o script foi ativado.

Variáveis variables

As variáveis são as propriedades livres dos objetos instance, task e event Os tipos de JavaScript autorizados para estas variáveis são string, number e Date.

Variáveis de instância instance-variables

As variáveis de instância (instance.vars.xxx) são comparáveis às variáveis globais. Eles são compartilhados por todas as atividades.

Variáveis de tarefa task-variables

As variáveis de tarefa (task.vars.xxx) são comparáveis às variáveis locais. São utilizadas somente pela tarefa atual. Essas variáveis são utilizadas por atividades persistentes para manter os dados e, às vezes, são utilizadas para troca de dados entre os diferentes scripts de uma mesma atividade.

Variáveis do evento event-variables

As variáveis de evento (vars.xxx) permitem a troca de dados entre as tarefas primárias de um processo de workflow. Essas variáveis são passadas pela tarefa que ativou a tarefa em andamento. É possível modificá-las e definir novas. Então, elas são passadas para as atividades seguintes.

CAUTION
No caso de atividades de tipo AND-join, as variáveis são mescladas, mas se uma mesma variável é definida duas vezes, há um conflito e o valor permanece indeterminado.

Evento são as variáveis usadas com mais frequência. Devem ser usadas em detrimento de variáveis de instância.

Certas variáveis de evento são modificadas ou lidas pelas várias atividades. Estas são todas as variáveis do tipo string. Por exemplo, uma exportação define a variável vars.filename com o nome completo do arquivo que acabou de ser exportado. Todas essas variáveis lidas ou modificadas são documentadas em Sobre atividades, nas seções Parâmetros de entrada e Parâmetros de saída das atividades.

Casos de uso example

NOTE
Outros casos de uso de fluxo de trabalho estão disponíveis nesta seção.

Exemplo 1

Neste exemplo, uma variável de instância é usada para calcular dinamicamente a porcentagem dividida que será aplicada em uma população.

  1. Crie um workflow e adicione uma atividade Start.

  2. Adicione e configure uma atividade de código JavaScript para definir uma variável de instância.

    Por exemplo: instance.vars.segmentpercent = 10;

  3. Adicione uma atividade Query e destinatários de acordo com suas necessidades.

  4. Adicione uma atividade Split e a configure para executar uma amostragem aleatória da população recebida. A porcentagem de amostragem pode ser qualquer escolha sua. Neste exemplo, está definido como 50%.

    É a porcentagem que é atualizada dinamicamente graças à variável de instância definida anteriormente.

  5. Na seção Initialization script da guia Advanced da atividade Split, defina uma condição JS. A condição JS seleciona a porcentagem de amostragem aleatória da primeira transição que sai da atividade Split e a atualiza para um valor definido pela variável de instância criada anteriormente.

    code language-none
    activity.transitions.extractOutput[0].limiter.percent = instance.vars.segmentpercent;
    

  6. Certifique-se de que o complemento seja gerado em uma transição separada da atividade Split e adicione as atividades End após cada transição de saída.

  7. Salve e execute o workflow. A amostragem dinâmica é aplicada de acordo com a variável de instância.

Exemplo 2

  1. Pegue o workflow do exemplo anterior e substitua o script da atividade JavaScript Code pelo seguinte script:

    code language-none
    instance.vars.foo = "bar1"
    vars.foo = "bar2"
    task.vars.foo = "bar3"
    
  2. Adicione o script a seguir ao script de inicialização da atividade End:

    code language-none
    logInfo("instance.vars.foo = " + instance.vars.foo)
    logInfo("vars.foo = " + vars.foo)
    logInfo("task.vars.foo = " + task.vars.foo)
    
  3. Inicie o workflow e examine o log.

    code language-none
    Workflow finished
    task.vars.foo = undefined
    vars.foo = bar2
    instance.vars.foo = bar1
    Starting workflow (operator 'admin')
    

Este exemplo mostra que a atividade após o JavaScript Code acessa as variáveis de instância e as variáveis de evento, mas as variáveis de tarefa não estão acessíveis a partir do exterior ('undefined').

Chamada de uma variável de instância em uma consulta calling-an-instance-variable-in-a-query

Depois de especificar uma variável de instância em uma atividade, é possível reutilizá-la em uma query de workflow.

Assim, para chamar uma variável instance.vars.xxx = "yyy" em um filtro, digite $(instance/vars/xxx).

Por exemplo:

  1. Crie uma variável de instância que define o nome interno de uma entrega através do JavaScript code: instance.vars.deliveryIN = "DM42".

  2. Criar uma query cujo direcionamento e dimensões de filtro são os destinatários. Nas condições, especifique que deseja localizar todos os destinatários que receberam a entrega especificada pela variável .

    Como lembrete, essas informações são armazenadas nos logs de entrega.

    Para fazer referência à variável da instância na coluna Value, digite $(instance/vars/@deliveryIN).

    O fluxo de trabalho retornará os destinatários da entrega DM42.

Funções avançadas advanced-functions

Além das funções JavaScript padrão, as funções especiais estão disponíveis para manipular arquivos, ler ou modificar dados no banco de dados ou adicionar mensagens ao log.

Diário journal

logInfo(message) foi detalhado nos exemplos acima. Essa função adiciona uma mensagem de informação ao diário.

logError(message) adiciona uma mensagem de erro ao log. O script interrompe a execução e o fluxo de trabalho muda para o status de erro (por padrão, a instância será pausada).

Script de inicialização initialization-script

Sob determinadas condições, é possível modificar uma propriedade de uma atividade no momento da execução.

A maioria das propriedades de atividades pode ser calculada dinamicamente, usando um template JavaScript ou porque as propriedades do workflow permitem explicitamente que o valor seja calculado por um script.

No entanto, para outras propriedades, é necessário usar o script de inicialização. Este script é avaliado antes que a tarefa seja executada. A variável activity faz referência à atividade correspondente à tarefa. As propriedades dessa atividade podem ser modificadas e afetarão somente essa tarefa.

Tópicos relacionados
Exemplos de código JavaScript em workflows

recommendation-more-help
cffff7e4-091f-472e-87ca-52087599f99d