Operadores de tempo

Os seguintes operadores estão disponíveis: createday, createtimeofday, createtimestamp, addtimespan, addfactorytimespan e weekday

Conversão de formato (data)

Marca XML:

createday

Operandos:

exatamente um valor

Resumo:

<createday>
<Value>
</createday>

Operandos:

TIME (TIMESTAMP, DATE)

Resultado:

Valor (data no formato dd.MM.aaaa)

Tipo de resultado:

DAY

Descrição:

Extrai uma data de um carimbo de data/hora do PPM.

Cálculo (PPM3)

Resultado

Data retornada pelo operando

Erro

Se o operando for de um tipo de dados inválido ou igual a NULL

Cálculo (PPM4)

Resultado

Data retornada pelo operando NULL se o operando for igual a NULL

Erro

Se o operando for de um tipo de dados inválido

Exemplo:

<calcattr name="AT_DAY" type="PROCESS">
<calculation>
<createday>
<filteredattribute name="AT_TIME"
nodetype="OT_FUNC"
objectname="this" filter="EARLY"/>
</createday>
</calculation>
</calcattr>

Conversão de formato (hora)

Marca XML:

createtimeofday

Operandos:

exatamente um valor

Resumo:

<createtimeofday>
<Value>
</createtimeofday>

Operandos:

TIME (TIMESTAMP, DATE)

Resultado:

Valor (hora do dia no formato hh:mm:ss)

Tipo de resultado:

TIMEOFDAY

Descrição:

Extrai a hora do dia de um carimbo de data/hora do PPM.

Cálculo (PPM3)

Resultado

Hora do dia definida pelo operando

Erro

Se o operando for de um tipo de dados inválido ou igual a NULL

Cálculo (PPM4)

Resultado

Hora do dia definida pelo operando NULL se o operando retornar NULL

Erro

Se o operando for de um tipo de dados inválido

Exemplo:

<calcattr name="AT_DAY" type="PROCESS">
<calculation>
<createtimeofday>
<filteredattribute name="AT_TIME"

nodetype="OT_FUNC"
objectname="this" filter="EARLY"/>
</createtimeofday>
</calculation>
</calcattr>

Conversão de formato (carimbo de data/hora)

Marca XML:

createtimestamp

Operandos:

um ou dois valores (Data ou Data e hora)

Resumo:

<createtimestamp>
<Date>
<Time> [optional]
</createtimestamp>

Operandos:

DAY, TIMEOFDAY

Resultado:

Valor (carimbo de data/hora no formato dd.MM.aaaa hh:mm:ss)

Tipo de resultado:

TIME (TIMESTAMP, DATE)

Descrição:

Cria um carimbo de data/hora PPM a partir de uma data ou de uma data e de uma hora.

Cálculo (PPM3)

Resultado

Carimbo de data/hora definido pelos operandos

Erro

Se pelo menos um operando for de um tipo de dados inválido ou igual a NULL

Cálculo (PPM4)

Resultado

Carimbo de data/hora definido pelos operandos. NULL se operando do tipo DAY retornar NULL ou se o primeiro operando do tipo de dados TIMEOFDAY e o segundo operando retornarem NULL.

Erro

Se pelo menos um operando for de um tipo de dados inválido

Exemplo:

<createtimestamp>
<constant>
<dataitem>
<datatype name="DAY">
25.01.2004
</datatype>
</dataitem>
</constant>
</createtimestamp>

Cria o carimbo de data/hora 25.01.2004 00:00:00.

Adição de um intervalo de tempo

Marca XML:

addtimespan

Operandos:

exatamente dois valores (carimbo de data/hora e intervalo de tempo, data e intervalo de tempo ou hora e intervalo de tempo)

Resumo:

<addtimespan>
<Time stamp or date or time>
<Time span>
<addtimespan>

Operandos:

Operando 1: TIME (TIMESTAMP, DATE) ou DAY ou TIMEOFDAY
Operando 2: TIMESPAN

Resultado:

Valor (carimbo de data/hora no formato dd.MM.aaaa hh:mm:ss)

Tipo de resultado:

Ponto no tempo: TIME (TIMESTAMP, DATE) ou DAY ou TIMEOFDAY

Descrição:

Adiciona um intervalo de tempo na escala de base (SECOND) a um carimbo de data/hora do PPM. O resultado é um carimbo de data/hora.

Cálculo (PPM3)

Resultado

Ponto no tempo resultante da adição do intervalo de tempo especificado (operando 2) ao ponto especificado no tempo (operando 1)

Erro

Se pelo menos um operando for igual a NULL ou de um tipo de dados inválido

Cálculo (PPM4)

Resultado

NULL se pelo menos um operando for NULL Ponto no tempo resultante da adição do intervalo de tempo especificado (operando 2) ao ponto especificado no tempo (operando 1)

Erro

Se o tipo de dados for inválido

Exemplo:

<calcattr name="AT_NTOFD" type="PROCESS">

<calculation>

<addtimespan>

<constant>

<dataitem>

<datatype name="TIMEOFDAY">
08:35:41
</datatype>
</dataitem>
</constant>
<constant>
<dataitem>
<datatype name="TIMESPAN">
-30 MINUTE
</datatype>

</dataitem>

</constant>

</addtimespan>

</calculation>

</calcattr>

No tempo especificado, é adicionado um período de tempo negativo de trinta minutos. O valor do resultado 08:05:41 é salvo no atributo de destino AT_NTOFD.

Adição de um intervalo de tempo, incluindo um calendário de fábrica

Adiciona um intervalo de tempo do calendário de fábrica a um carimbo de data/hora do PPM. O resultado é um carimbo de data/hora. A configuração e uso do operador addfactorytimespan é semelhante à que é usada para addtimespan. Para este cálculo, o intervalo de tempo do calendário de fábrica especificado é adicionado a partir de uma hora de início. Por padrão, o operador suporta apenas a adição de intervalos de tempo do calendário de fábrica positivos. Se também quiser calcular pontos no passado, poderá adicionar intervalos de tempo negativos especificando o atributo XML opcional negfactorytimespan="TRUE" (valor padrão: FALSE). Se o ponto no tempo calculado estiver exatamente em um limite de tempo de trabalho, o operador retornará o mais antigo ponto no tempo possível.

Exemplos

Tomando a condição simplificada de um horário de trabalho diário das 9h às 17h:

Se quiser usar um calendário de fábrica diferente do calendário de fábrica padrão (factorycalendar.xml) pode especificar um arquivo XML contendo o calendário de fábrica a ser usado. Especifique em o atributo XML attributename, a função ou atributo da instância de processo que determina o nome do arquivo do calendário de fábrica XML a ser usado. O atributo tem de ser especificado na função ou instância de processo onde o cálculo é executado. No atributo XML directory, especifique o diretório onde procurar o arquivo do calendário de fábrica especificado. Os dois atributos XML attributename e directory têm sempre de ser especificados em conjunto.

Especifique o diretório correspondente contendo o arquivo de calendário de fábrica a ser usado relacionado com o diretório de dados do PPM. O diretório de dados PPM data_ppm está localizado em <PPM installation directory>\ppm\server\bin\work\.

Exemplo

...

<addfactorytimespan directory="calc\fc" attributename="AT_FC_NAME">

...

Se o atributo AT_FC_NAME contiver o valor myFactoryCalendar.xml, o calendário de fábrica definido em o arquivo myFactoryCalendar.xml é usado para cálculo. O arquivo está localizado em <PPM installation directory>\ppm\server\bin\work\data_ppm\calc\fc\.

A adição de intervalos de tempo do calendário de fábrica é feita sempre na unidade base Person-second. Os fatores de conversão usados são independentes do calendário de fábrica e definidos no arquivo de configuração específico do cliente transformationfactors.xml. Se não quiser usá-los, poderá usar apenas intervalos de tempo do calendário de fábrica com as unidades segundos de pessoa, minuto ou hora para adicionar um intervalo de tempo com base em um calendário de fábrica.

Determinar o dia de semana (a partir de uma data)

Marca XML:

weekday

Operandos:

exatamente um valor

Resumo:

<weekday>
<Value>
</weekday>

Operandos:

Exatamente um operando: TIME ou DAY

Resultado:

Cadeia de caracteres no formato MO, TU, WE, TH, FR, SA ou SU

Tipo de resultado:

TEXT

Descrição:

Determina o dia de semana para um tipo de data do PPM e retorna o valor como uma cadeia de caracteres.

Cálculo (PPM4)

Resultado

Uma das constantes MO, TU, WE, TH, FR, SA ou SU, dependendo do dia de semana da data transferida.

Erro

Se o operando for de um tipo de dados inválido ou um número inválido de operandos.

Exemplo:

<calcattr name="AT_WEEKDAY" type="PROCESS">
<calculation>
<weekday>
<constant>
<dataitem>
<datatype name="DAY">
25.08.2007
</datatype>
</dataitem>
</constant>
</weekday>
</calculation>
</calcattr>

Determina o dia de semana para a data especificada ('Sábado') e retorna o valor como a cadeia de caracteres TEXT SA.

Os valores das dimensões de texto que usam resultados do operador weekday não podem ser classificados.