Importante

Esse manual é específico das versões anteriores e legadas dos produtos Orquestra BPMS 3 e Orquestra ECM 2.

Para o novo produto Zeev, acesse kb.zeev.it. Para o novo produto Zeev docs, kb.zeev.it/v/docs.

Timer / Relógio

Importante! Para que a atividade do timer seja finalizada automaticamente, é necessário que um serviço especial tenha sido instalado no servidor que hospeda o Orquestra BPM. Confira os manuais de instalação e de configuração

O evento de "timer", quando utilizado sem vinculação à uma tarefa humana, é a representação de uma "parada" na execução do processo. Trata-se de um evento automático, controlado pelo sistema, que permite congelar a execução da instância do processo por um tempo pré-determinado.

Outro tipo de evento é o Timer "Embedded" que é vinculado a uma tarefa humana e permite que a mesma seja cancelada automaticamente após um determinado período de tempo.

Ao clicar em um elemento deste tipo, sua caixa de propriedades possuirá os seguintes campos:

  1. Título: o título desse elemento, para fins documentais;
  2. Descrição: a descrição desse elemento, para fins documentais;
  3. Tipo de evento: disponível apenas se o timer está vinculado (vide Timer Embedded/Relógio Vinculado abaixo);
    1. Interruptivo: quando este timer expirar irá interromper a execução da tarefa a qual está vinculado;
    2. Não-interruptivo: quando este timer expirar a tarefa a qual está vinculado não será afetada e o processo seguirá o fluxo a partir da ligação deste elemento com outras tarefas;
  4. Tipo de relógio: o tipo funcionamento desse relógio, conforme:
    1. Aguardar até uma data X: nesse caso, a instância do processo ficará congelada até uma data pré-determinada;
    2. Aguardar até o próximo dia X: nesse caso, a instância do processo ficará congelada até o próximo dia X (exemplo: rodar o processo somente a partir do dia 5 de cada mês). Atenção!: Caso o processo não tenha rodado o timer no mês corrente então o mês definido para este timer rodar a primeira vez será o mês corrente;
    3. Aguardar por um número X de horas: nesse caso, a instância do processo ficará congelada pelo número de horas a ser determinado;
    4. Aguardar por um número X de dias: : nesse caso, a instância do processo ficará congelada pelo número de dias a ser determinado;
  5. Tipo de data: representa o tempo que o relógio ficará esperando.
    1. Se você selecionou a primeira opção no campo "tipo" acima, esse tempo deverá ser uma data fixa no formato dd/MM/aaaa OU dd/MM/aaaa hh:mi:ss;
    2. Se você selecionou uma das duas últimas opções no campo "tipo" acima, esse tempo deverá ser um valor inteiro fixo;

Existem duas maneiras de definir o tipo de data, conforme vemos:

            

  1. Data fixa: nesse caso você determina manualmente uma data (no formato dd/mm/aaaa) ou número fixo (representando dias ou horas);
  2. Data dinâmica: nesse caso você escolhe qual campo do formulário irá possuir uma data (no formato dd/mm/aaaa) ou número inteiro (representando dias ou horas);

Horário de Expiração

Quando você configura um timer com "Tipo de relógio" igual a "Aguardar até uma data X" e "Tipo de data" igual a "Fixa", ao configurar uma data (por exemplo, 31/12/2015), o Timer irá expirar dia 31/12/2015 as 23:59:59.

Quando você configura um timer com "Tipo de relógio" igual a "Aguardar até uma data X" e "Tipo de data" igual a "Dinâmica", o Timer irá expirar na data definida em um campo do formulário.

Caso nesse campo do formulário tenha sido digitado somente uma data, sem horário (por exemplo, 31/12/2015), o Timer irá expirar as 00:00hs desse dia.

Caso nesse campo do formulário tenha sido digitado uma data e um horário,  (por exemplo, 31/12/2015 21:30), o Timer irá expirar exatamente na data e horários digitados.

Forçar para as 23:59

Um cenário comum é quando você deseja que o Timer expire em uma data preenchida em um campo do formulário, porém necessita que expire as 23:59 desse dia (e não as 00:00hs como é o padrão), e, ao mesmo tempo, não quer que o usuário tenha que digitar o horário no processo.

Nesse caso as seguintes abordagens são possíveis:

1. Utilizando uma Tarefa Orquestra, você pode modificar o valor do campo do formulário que armazena a data para incluir o horário desejado.

Nesse caso, antes do Timer, você deve incluir uma atividade do tipo "Tarefa Orquestra". Ela deve estar configurada para "Modificar Valor de Campo do Formulário". Selecione o campo do formulário que armazena a data. Na definição de seu novo valor, utilize uma concatenção entre o Token que representa o valor do próprio campo data mais o horário desejado.

Com isso, apesar de o usuário ter digitado, por exemplo, 31/12/2015, o Orquestra irá armazenar 31/12/2005 23:59:59, e o Timer respeitará esse novo horário.

2. Através de customizações / programações Javascript, você pode incluir funções customizadas que preencham automaticamente o horário desejado no campo do formulário após a data ter sido preenchida pelo usuário.

3. Utilizando uma abordagem de programação de banco de dados, é possível utilizar o evento "Pós-criação da tarefa" na configuração do Timer para, após ele ter sido criado (com horário vencendo as 00:00hs) seu horário seja modificado para as 23:59hs. Veja exemplo nesse link.

O Funcionamento do Timer

Quando uma instância de um processo atinge um timer, como vimos, o processo fica "congelado".

Na verdade, nesse momento é criada uma tarefa para um usuário fixo da ferramenta, chamado "Serviço Orquestra". Este serviço monitora as tarefas desse usuário e finaliza todas as tarefas que recém tornaram-se atrasadas. Caso uma tarefa de timer seja criada com uma data retroativa a tarefa será finalizada assim que o Serviço de Timer rodar.

Importante! O login "Serviço Orquestra" ou outro login parametrizado para este fim deve ser apenas para recebimento de tarefas de timer. Não utilizar este login para qualquer outro tipo de uso.
Importante! O serviço de Timer somente finalizará as atividades que estiverem pendentes para o login "Serviço Orquestra". Em simulação, as atividades não estão pendentes para esse usuário, estão pendentes para o usuário que está simulando. Por isso, não serão finalizadas.

Se você tiver permissões para tal, poderá inclusive acessar a conta desse usuário e verificar a sua caixa de entrada de tarefas, repleta de atividades de processos que estão congelados. Essas atividades são muito similares a atividades humanas normais. Você, se quiser e se tiver autorização, pode inclusive finalizar uma atividade de timer, dando seqüência em um processo.

Caso o processo permaneça congelado, no momento em que a atividade expirar, o sistema a finalizará automaticamente e dará seqüência ao processo.

Esse funcionamento é interessante pois permite a um administrador intervir em processo congelados, dando seqüência em sua execução quando isso se fizer necessário.

Timer Embedded (Relógio Vinculado)

Um Relógio Vinculado é um tipo de relógio associado a uma tarefa humana. Esse tipo de relógio tem efeito direto na tarefa a qual está associado.

O Timer "Embedded" como vimos acima vinculado à tarefa B tem as seguintes características:

  1. É ativado e começa a contar o tempo assim que a tarefa a que está vinculado é ativada;
  2. Quando o prazo do Timer expira:
    1. Caso ele seja do tipo "Interruptivo", a atividade B é cancelada e o processo prossegue para D
    2. Caso ele seja do tipo "Não-Interruptivo", a atividade B é permanece ativa e o processo prossegue para D, em paralelo
  3. Se a tarefa B é finalizada antes do prazo do Timer o Relógio é cancelado automaticamente e o processo continua pela ligação normal da tarefa.

Para criar um "Timer Embedded", é só arrastar o elemento de timer para "dentro" de uma atividade humana de aprovação ou instrução. O tamanho dele irá diminuir e seu título será escondido.

Timer e simulação

Ao realizar uma simulação/teste de um processo, o elemento timer será representado por uma tarefa pendente na caixa de entrada do usuário que está executando a simulação. O usuário não precisará aguardar pelo fim do prazo do timer, podendo finalizar a atividade do timer manualmente.

Importante destacar que em simulação/teste, a atividade do timer NÃO irá finalizar automaticamente, devendo ser finalizada manualmente.