Como implementar uma duração relativa
Você pode implementar uma duração relativa criando a tabela cmn_relative_duration e a inclusão de script DurationCalculator.
Antes de Iniciar
Procedimento
- Crie a tabela cmn_relative_duration.
- Crie a inclusão de script DurationCalculator.
- Crie uma amostra de entrada de duração relativa (por exemplo, "Próximo dia útil às 16h").
- Adicione os campos necessários às tabelas de SLA para oferecer suporte a durações relativas.
- Modificar cálculo de duração para SLAs.
- Modificar o cálculo do temporizador de Percentual de ANS para ANS (deve usar work_seconds).
- Adicione campos de programação ao fluxo de trabalho: programação e fuso horário (selecionados com base no campo da tabela de fluxo de trabalho).
- Adicione campos de suporte de duração à atividade Tarefa de fluxo de trabalho.
- Implemente o script de cálculo de duração para a atividade da tarefa.
A tabela de duração relativa e os métodos DurationCalculator
A tabela cmn_relative_duration oferece suporte à definição de uma data de vencimento como uma duração de tempo ou uma duração relativa.
Esta tabela consiste em dois campos: "nome" e "script". O campo "script" contém o script de cálculo da duração relativa. Este script inclui a variável "calculator", que é usada para calcular a data de vencimento.
O script include DurationCalculator pode ser usado para executar os cálculos de duração. A seguir estão os métodos disponíveis nesta inclusão de script.
| Método | Descrição |
|---|---|
| setSchedule(cadeia de caracteres schedID, [cadeia de caracteres fuso horário]) | Define a programação e o fuso horário a serem usados para calcular a data de vencimento. |
| setStartDateTime(início de GlideDateTime) | Define a hora de início dos cálculos de duração. Se "início" estiver em branco, usará a data/hora atuais. |
| calcDuration (int segundos) | Calcula a data e a hora de término. Após a conclusão, as propriedades this.endDateTime e this.seconds serão definidas para indicar os resultados do cálculo. |
| calcRelativeDuration(cadeia de caracteres relativeDurationID) | Calcula a duração usando o script de duração relativa especificado. Após a conclusão, as propriedades this.endDateTime e this.seconds serão definidas para indicar os resultados do cálculo. |
| getEndDateTime () | Obtém a propriedade this.endDateTime que foi definida por calcDuration/calculRelativeDuration indicando a data e hora de término da duração. |
| getSeconds() | Obtém a propriedade this.seconds que foi definida por calcDuration/calculRelativeDuration indicando o número total de segundos de trabalho a ser realizado para a duração. Nota: Este é o tempo total de trabalho, não o tempo total entre as horas de início e término e pode ser usado para determinar porcentagens do tempo de trabalho |
| getTotalSeconds() | Obtém a propriedade this.totalSeconds que foi definida por calcDuration/calculRelativeDuration indicando o número total de segundos entre as horas de início e término da duração. |
As funções a seguir são usadas em scripts de duração relativa:
| Função | Descrição |
|---|---|
| boolean isAfter(GlideDateTime dt, String time) | A "hora" é posterior à hora especificada por "dt"? dt, se estiver em branco, usará a data/hora atual. a hora está em "hh:mm:ss" no formato de 24 horas. |
| calcRelativeDueDate(glideDateTime start, int days, String endTime) | Calcula a data de vencimento começando em "início" e adicionando "dias" usando a programação e o fuso horário. Quando encontrarmos o dia em que o trabalho vence, defina a hora como "endTime" desse dia. Após a conclusão, as propriedades this.endDateTime e this.seconds serão definidas para indicar os resultados do cálculo. Se endTime estiver em branco, use o final do dia útil final. |