Anexo técnico workflow 

No momento de execução de um workflow, assim que no momento da sua assinatura, dispõe-se de um contexto muito rico, sob a forma de classes de variáveis e de variáveis locais em linha. Este contexto depende do tipo de workflow e do processo em curso (workflow original, assinatura, workflow consecutivo a um primeiro workflow). Este anexo descreve o algoritmo utilizado pelo motor de workflow e detalhado as variáveis utilizáveis em cada estado.

Deve-se notar que o assistente de fórmula fornece uma lista de variáveis emitidas do contexto para construir as fórmulas a mais adaptada possível.

Algoritmo principal workflow objecto

Um workflow de tipo objecto se descompõe numa série de etapas que são as seguintes:

Inicialização das variáveis de ambiente

Esta etapa consiste a afectar as variáveis globais. Dispõe-se nomeadamente da variável USRWRK que corresponde ao utilizador corrente do workflow de origem.

Tratamento da regra de afectação

Nesta etapa, avalia-se as formulas dadas na regra, e se armazena numa variável dimencionada nomeada VALEXP. Isto permite dispor nomeadamente de valores agregados que não são forçosamente utilizados como critério de definição dos destinatários, mas simplesmente úteis na seguida do workflow (por exemplo para decidir do envio de uma mensagem em função de valores mínino, máximo, médias de um elemento).

O número de valores calculados é conhecido pela variável NBCOL.

Pesquisa-se em seguida, a partir dos valores calculados, a linha de regra que corresponde, para afectar o quadro de variáveis USER (indiciada de 1 a 10 no máximo).

Tratamento do worflow

Esta etapa se decompõe em várias sub-etapas. Então, determina-se um certo número de valores :

  • inicializa-se a variável CTX, que contém o contexto corrente, de após as fórmulas parametrizadas. Este contexto está armazenado no histórico workflow e será em seguida restituido se um evento worflow ulterior é desencadeado em seguida do primeiro.
  • Afecta as variáveis S_USER, S_CLEOBJ, S_ABREV, que definem o utilizador na origem do workflow, a chave de objecto ou do grupo de linhas, e o código objecto afectado.
  • Calcula-se S_NBRUSER, que dá o número de signatários realmente definidos na regra.

Em seguida, verifica-se as condições de execução em cabeaçlho do workflow. Se estas condições são realizadas, realiza-se as operações seguintes:

  • Constituição do contexto de devolução (îcone)
  • Atribuição de um número de crono em cada tratamento de uma regra. No caso do workflow manual, uma atribuição é feita em cada vez que se carrega o valor da chave principal (se não existe campo reagrupamento) ou de valor do reagrupamento (se existe uma).
  • Atribuição de um número de crono para cada linha (existem vários por grupo se existe um reagrupamento).
  • Execução da acção de início de workflow (se existe e que condições são reunidas).
  • Se uma mensagem deve ser enviada, ou um seguimento feito, pesquisa dos utilizadores delegados.
  • Se uma mensagem deve ser enviada, tratamento da mensagem.
  • Se um seguimento deve ser feito, tratamento da mensagem.
  • Execução da acção de tipo fim de workflow (se existe e que condições são reunidas).

Tratamento da mensagem

Esta etapa realiza as operações seguintes :

  • Constituição do texto por assemblagem do texto principal e do texto do detalhe das linhas (se existe uma).
  • Constituição do objecto da mensagem
  • Afixação da janela de modificação da mensagem (se a mensagem está modificável e se o desencadeamento interativo).
  • Transacção de registo nas tabelas correspondentes: AWRKHISMES contém o corpo da mensagem, AWRKHISJOI os documentos juntos, e AWRKHISDES os destinatários.
  • Envio da mensagem se a opção de envio agrupado está não activado. Senão, o envio grupado será feito no fim do tratamento do workflow.

Tratamento do seguimento

A etapa é realizada na actualização da linha de seguimento a tratar na tabela AWRKHISSUI. A transacção correspondente está separado dos precedentes (mas ela não foi executada que se os precedentes são bem passados).

Algoritmo principal workflow assinatura

Um workflow de tipo signatário está desencadeado no seguimento de uma acção de assinatura (seja manualmente depois o plano de trabalho, seja automaticamente via um outro evento de workflow ou uma notificação via um clique sobre uma relação).

As etapas correspondentes são os seguintes :

  • Inicialização das variáveis herdadas
  • Carregamento das classes de variáveis [F] (tabelas) definidos pelo evento de origem.
  • Para um workflow de tipo cabeçalho ou de tipo linha sem reagrupamento, tratamento da regra de afectação depois, tratamento do workflow.
  • Se é um workflow com um reagrupamento de linhas,leitura das linhas de agrupamento correspondente ao seguimento, o tratamento da regra de afectação, depois tratamento do workflow.
  • Para cada linha, execução da acção de tipo linha e formatação do texto da linha.
  • O seguimento do processo é idêntico a um workflow standard.

Inicialização das variáveis herdadas

As variáveis herdadas do contexto de assinatura são afectadas nesta fase. Estas variáveis são as seguintes :

NUMORG

número cronológico de origem.

USRORG

destinatário do evento de origem.

NUMSIG

crono sobre o qual se foi desencadeada o processo de assinatura.

USRDES

destinatário do crono sobre o qual foi desencadeado o processo de assinatura.

USRWRK

utilizador que assina

MAIWRK

endereço de mensagem do signatário, quando a assinatura se faz por uma ligação http externa.

LEVSIG

Nível de assinatura (o evento de origem porta o número 0, os eventos que se encadeam portam os número sucessivos a partir de 1).

RETORG

Chave do objecto no qual foi desencadeado o workflow de origem.

CONTXT

Referência de îcone de devolução.

CLEOBJ

Número do crono assinados

CTX(1..15)

Variáveis do contexto.

S_USER

Destinatário tendo desencadeado o workflow de origem.

S_CLEOBJ

Chave de desencadeamento (objecto ou reagrupamento)

S_ABREV

Abreviação do objecto do workflow de origem.

S_NBRUSR

Número de utilizadores definidos na regra de workflow de origem.

Algoritmo de tratamento de uma assinatura.

A fase de assinatura de um evento se faz pelo processo seguinte:

  • inicialização do contexto de assinatura.
  • Verificação da existência do crono e fecho.
  • Avaliação (à vista das condições) da lista das respostas autorizados.
  • Registo de uma resposta por entre as respostas possíveis.
  • Fecho da ficha que gerou o primeiro seguimento.
  • Carregamento das classes de variáveis [F]
  • Actualização da variável RESULT em função da resposta
  • Modificação desta variável por registo (se a resposta é modificável)

Em seguida, a transacção de assinatura propriamente dita está feito :

  • Execução das acções de assinatura se existirem
  • Actualização do campo corresponde à resposta (se elas existem)
  • Tratamento da regra de workflow associado à assinatura (se existe uma)
  • Actualização da linha de seguimento (flag assinada, signatário correspondente).

inicialização do contexto de assinatura.

Quando um utilizador assina um seguimento, as variáveis no contexto no contexto são os seguintes:

CRONO

crono do evento sobre o qual se vai fazer uma assinatura.

USRDES

código utilizador do destinatário.

USRSIG

código utilizador do signatário

USRMAIL

endereço de mensagem do signatário, quando a assinatura se faz por uma ligação http externa.

NUMORG

Crono evento de origem sobre a qual foi feita a primerira signatura.

USRORG

Destinatário deste evento.

LEVSIG

Nível de assinatura (o evento de origem porta o número 0, os eventos que se encadeam portam os número sucessivos a partir de 1).

USRTOP

Destinatário principal (os outros são delegados).

NUMGRP

Grupo de evento a assinar

CTX(1..15)

Variáveis do contexto.

S_USER

Destinatário tendo desencadeado o workflow de origem.

S_CLEOBJ

Chave de desencadeamento (objecto ou reagrupamento)

S_ABREV

Abreviação do objecto do workflow de origem.

S_NBRUSR

Número de utilizadores definidos na regra de workflow de origem.

O quadro de variáveis REPCHR permite de saber se outros destinatários do mesmo evento já foram assinados. Conta-se em facto o número de grupos (um grupo está igual a uma linha no quadro dos signatários, desde que um delegado foi assinado, o evento está assinado e não pode ser assinado uma segunda vez por um outro membro do mesmo grupo).

Tem-se então:

REPCHR(0) = número de respostas que resta a fazer : se por exemplo existem 4 linhas de signatários na descrição do evento e que um foi assinado, este valor é igual a 3.

REPCHR(NO), onde NO pode valer de 1 a 10, dá o número de signatários que responderam com a resposta colocada sobre a linha número NO no quadro das respostas.

Estas variáveis permitem nomeadamente de condicionar as etapas seguintes pelo facto que o último signatário em espera foi respondido, ou de trabalhar sobre as lógicas maioritárias de assinatura.