O PPM fornece várias transformações de atributos do tipo Transformação de carimbo de data/hora.
As transformações do carimbo de data/hora disponíveis no sistema PPM convertem valores do carimbo de data/hora do sistema de origem, em qualquer formato, para o formato interno válido do PPM, com o tipo de dados de destino adequado para o PPM. A tabela seguinte fornece uma visão geral das transformações do carimbo de data/hora disponíveis:
Transformação |
Tipo de dados de destino do PPM |
---|---|
timestamp |
TIME |
timestamp_epoch |
TIME |
timeofday |
TIMEOFDAY |
timeofday_epoch |
TIMEOFDAY |
day |
DAY |
day_epoch |
DAY |
SAGDateTime |
TIME |
Transformações do carimbo de data/hora timestamp, timeofday, day
Os padrões para a configuração das transformações do carimbo de data/hora são especificados na definição do tipo de documento eventmapping.dtd:
...
<!ELEMENT transformation EMPTY>
<!ATTLIST transformation
type NMTOKEN "timestamp"
format CDATA #REQUIRED
>
...
No atributo XML type pode especificar quais das transformações do carimbo de data/hora disponíveis devem ser usadas. A transformação de atributos timestamp é padrão. O atributo XML format especifica o formato do carimbo de data/hora no atributo do sistema de origem.
Os dados no atributo format correspondem ao formato do carimbo de data/hora Java:
Símbolo |
Descrição |
Tipo de dados |
Exemplo |
---|---|---|---|
G |
Identificador Epoch |
Texto |
AD |
y |
Ano |
Figura |
2003 |
MM |
Mês do calendário |
Figura |
09 |
MMM |
Mês do calendário |
Texto |
Set |
MMMM |
Mês do calendário |
Texto |
Setembro |
d |
Dia do calendário |
Figura |
26 |
h |
Hora, notação americana (1-12) |
Figura |
12 |
H |
Hora (0-23) |
Figura |
14 |
m |
Minuto |
Figura |
42 |
s |
Segundo |
Figura |
57 |
S |
Milissegundo |
Figura |
978 |
E |
Dia de semana |
Texto |
Quinta-feira |
F |
Recorrência de weekday no mês |
Figura |
2 |
D |
Dia do ano |
Figura |
189 |
w |
Semana do calendário |
Figura |
27 |
W |
Semana do mês |
Figura |
2 (2. semana do mês) |
a |
Identificador da hora do dia |
Texto |
PM |
k |
Hora (1-24) |
Figura |
24 |
K |
Hora, notação americana (0-11) |
Figura |
7 |
M |
Fuso horário |
Texto |
GMT |
´ |
Caractere de escape para texto |
Caracteres |
'Example text' |
´´ |
Apóstrofo simples |
Caracteres |
'Example' 'Text' |
Exemplo 1
O valor 2002-12-24 (<Year>-<Month>-<Day>) para um atributo do sistema de origem é transformado no formato PPM usando a cadeia de caracteres de formato aaaa-MM-dd:
...
<transformation type="timestamp" format="yyyy-MM-dd"/>
...
Exemplo 2
Valores de atributo do sistema de origem consolidado:
...
<attribute ppmattributetype="AT_END_TIME">
<eventattributetype>ERF_DAT</eventattributetype>
<eventattributetype>ERF_ZEIT</eventattributetype>
<transformation format="yyyyMMddHHmmss"/>
</attribute>
...
No atributo do sistema de origem ERF_DAT, a data de criação está presente no formato aaaaMMdd e no atributo do sistema de origemERF_ZEIT, a hora de criação está presente no formato HHmmss. Extrato do arquivo de saída XML:
<event>
...
<attribute type='ERF_DAT'>20011230</attribute>
...
</event>
<event>
...
<attribute type='ERF_ZEIT'>120730</attribute>
<attribute type='ERF_DAT'>20011101</attribute>
...
</event>
No primeiro evento de sistema, o atributo AT_END_TIME não é criado porque o atributo ERF_ZEIT não está presente.
No segundo evento de sistema, ambos os atributos estão presentes. Os valores de atributo são unidos na sequência especificada para obter 20011101120730 e em seguida avaliados usando o formato especificado aaaaMMddHHmmss e transformados no carimbo de data/hora compatível com o PPM 01.11.2001 12:07:30.
Exemplo 3
No atributo ERF_STD apenas é registrada a hora na qual o evento de sistema foi criado. A hora de criação é sempre trinta minutos depois da hora.
...
<attribute ppmattributetype="AT_END_TIME">
<eventattributetype>ERF_DAT</eventattributetype>
<value>::</value>
<eventattributetype>ERF_STD</eventattributetype>
<value>30</value>
<transformation format="yyyyMMdd::HHmm"/>
</attribute>
...
Evento de sistema associado do arquivo de saída:
...
<event>
...
<attribute type='ERF_STD'>12</attribute>
<attribute type='ERF_DAT'>20011001</attribute>
...
</event>
...
Os valores de atributo e as cadeias de caracteres de constantes são combinados na cadeia de caracteres 20011001::1230 e transformados usando o formato aaaaMMdd::hhmm para obter o carimbo de data/hora compatível com o PPM 01.10.2001 12:30:00, o qual é gravado no atributo do PPM AT_END_TIME.
Transformações do carimbo de data/hora timestamp_epoch, timeofday_epoch e day_epoch
A transformação do carimbo de data/hora timestamp_epoch transforma um valor inteiro indicando os segundos ou milissegundos que passaram desde 1 de janeiro de 1970 no formato interno do PPM. No atributo XML format, é especificado se o valor inteiro indica o número de segundos (SECOND) ou milissegundos (MILLISECOND) que passaram desde 01.01.1970 0:00:00 GMT. O fuso horário atual do sistema é considerado no cálculo.
Use as transformações de atributos timeofday_epoch e day_epoch da mesma forma.
Exemplo (timestamp_epoch)
No atributo do sistema de origem WORK_ITEM-END_TIME, é indicado o número de segundos desde 1 de Janeiro de 1970.
...
<attribute type="WORK_ITEM-END_TIME">1221482578</attribute>
...
Use a seguinte regra de mapeamento para associar este valor do atributo ao valor do atributo AT_END_TIME do PPM:
...
<attribute ppmattributetype="AT_END_TIME">
<eventattributetype>
WORK_ITEM-END_TIME
</eventattributetype>
<transformation type="timestamp_epoch"
format="SECOND"/>
</attribute>
...
Transformação de atributos SAGDateTime
O formato de hora SAGDateTime é usado nos chamados eventos EDA. Até agora, os atributos de evento da hora SAGDateTime foram importados como atributos de texto porque as transformações de carimbo de data/hora existentes não conseguem processar facilmente o formato da data.
YYYY-MM-DDThh:mm:ss.sssTZD
Exemplos de horas neste formato:
2011-04-28T08:15:59.001Z
2011-04-28T08:15:59.001+06:00
Classe do transformador
A transformação SAGDateTime contém uma função para transformar as horas no formato SAGDateTime em formatos de hora específicos do PPM.
A classe pode ser usada no mapeamento de atributo durante a importação de XML e de processos do PPM. Tem de ser definido um mapeamento, que poderá ter a seguinte aparência.
<attribute ppmattributetype="AT_TIMESTAMP_PPM">
<eventattributetype>TIMESTAMP_SAGDATETIME</eventattributetype>
<transformation type="SAGDateTime" format="yyyy-MM-dd'T'HH:mm:ss.SSSZ"/>
</attribute>
A aplicação desta regra leva a que o conteúdo do atributo de evento TIMESTAMP_SAGDATETIME seja gravado no atributo do PPM AT_TIMESTAMP_PPM em formato compatível com o PPM. Os milissegundos serão ignorados.
A aplicação da regra acima ao atributo de evento
<attribute type="TIMESTAMP_SAGDATETIME">2013-07-15T06:02:33.650Z</attribute>
resultaria no seguinte atributo do PPM quando usado no fuso horário UTC:
<attribute type="AT_TIMESTAMP_PPM">15.07.2013 06:02:33</attribute>
Tem duas possibilidades para especificar a regra de mapeamento.
Se for sabido que o tempo no atributo do evento é exato ao milissegundo, pode especificar o formato esperado no atributo de formato da transformação (aaaa-MM-dd'T'HH: mm:ss.SSSZ para horas até ao milissegundo , aaaa-MM-dd'T'HH: mm:ssZ para horas até ao segundo). Usar uma transformação para uma hora até ao milissegundo em uma hora até ao segundo, e vice-versa, resultará em um erro.
Se não especificar um formato, ambos os formatos de hora (dd'T'HH:mm:ss.SSSZ e aaaa-MM-dd'T'HH:mm:ssZ) são aplicados consecutivamente durante a transformação. Se um dos formatos for reconhecido, o valor correspondente será gravado no atributo do PPM.