In PPM stehen verschiedene Attributtransformationen vom Typ Zeitstempeltransformation zur Verfügung.
Die im PPM-System verfügbaren Zeitstempeltransformationen wandeln Quellsystem-Zeitstempelwerte, die in beliebigen Formaten vorliegen, in das zulässige, interne PPM-Format mit dem korrekten PPM-Zieldatentyp um. Die folgende Tabelle gibt einen Überblick über die verfügbaren Zeitstempeltransformationen:
Transformation |
PPM-Zieldatentyp |
---|---|
timestamp |
TIME |
timestamp_epoch |
TIME |
timeofday |
TIMEOFDAY |
timeofday_epoch |
TIMEOFDAY |
day |
DAY |
day_epoch |
DAY |
SAGDateTime |
TIME |
Zeitstempeltransformation timestamp, timeofday, day
Die Vorgaben bezüglich der Konfiguration von Zeitstempeltransformationen sind in der Dokumenttypdefinition eventmapping.dtd festgelegt:
...
<!ELEMENT transformation EMPTY>
<!ATTLIST transformation
type NMTOKEN "timestamp"
format CDATA #REQUIRED
>
...
Im XML-Attribut type wird angegeben, welche der möglichen Zeitstempeltransformationen verwendet werden soll. Dabei ist die Attributtransformation timestamp voreingestellt. Im XML-Attribut format wird angegeben, in welchem Format der Zeitstempel im Quellsystemattribut vorliegt.
Die Angabe im Attribut format entspricht dem Zeitstempelformat von Java:
Symbol |
Bezeichnung |
Datentyp |
Beispiel |
---|---|---|---|
G |
Epochenbezeichner |
Text |
AD |
y |
Jahr |
Zahl |
2003 |
MM |
Kalendermonat |
Zahl |
09 |
MMM |
Kalendermonat |
Text |
Sep |
MMMM |
Kalendermonat |
Text |
September |
d |
Kalendertag |
Zahl |
26 |
h |
Stunde, amerikanische Notation (1-12) |
Zahl |
12 |
H |
Stunde (0-23) |
Zahl |
14 |
m |
Minute |
Zahl |
42 |
s |
Sekunde |
Zahl |
57 |
S |
Millisekunde |
Zahl |
978 |
E |
Wochentag |
Text |
Donnerstag |
F |
Wochentagswiederholung im Monat |
Zahl |
2 |
D |
Tag im Jahr |
Zahl |
189 |
w |
Kalenderwoche |
Zahl |
27 |
W |
Woche im Mont |
Zahl |
2 (2. Woche im Monat) |
a |
Tageszeitbezeichner |
Text |
PM |
k |
Stunde (1-24) |
Zahl |
24 |
K |
Stunde, amerikanische Notation (0-11) |
Zahl |
7 |
z |
Zeitzone |
Text |
GMT |
´ |
Escape-Zeichen für Text |
Zeichen |
´Beispieltext´ |
´´ |
einfaches Hochkomma |
Zeichen |
´Beispiel´´Text´ |
Beispiel 1
Der Wert 2002-12-24 (<Jahr>-<Monat>-<Tag>) eines Quellsystemattributs wird durch die Formatzeichenfolge yyyy-MM-dd in das PPM-Format transformiert:
...
<transformation type="timestamp" format="yyyy-MM-dd"/>
...
Beispiel 2
Zusammengesetzte Quellsystemattributwerte:
...
<attribute ppmattributetype="AT_END_TIME">
<eventattributetype>ERF_DAT</eventattributetype>
<eventattributetype>ERF_ZEIT</eventattributetype>
<transformation format="yyyyMMddHHmmss"/>
</attribute>
...
Im Quellsystemattribut ERF_DAT liegt das Erfassungsdatum im Format yyyyMMdd und im Quellsystemattribut ERF_ZEIT die Erfassungszeit im Format HHmmss vor. Auszug der XML-Ausgabedatei:
<event>
...
<attribute type='ERF_DAT'>20011230</attribute>
...
</event>
<event>
...
<attribute type='ERF_ZEIT'>120730</attribute>
<attribute type='ERF_DAT'>20011101</attribute>
...
</event>
Für das erste System-Event wird das Attribut AT_END_TIME nicht erzeugt, da das Attribut ERF_ZEIT nicht vorhanden ist.
Beim zweiten System-Event sind beide Attribute vorhanden. Die Attributwerte werden in der angegebenen Reihenfolge zu 20011101120730 zusammengefügt, anschließend mit dem angegebenen Format yyyyMMddHHmmss ausgewertet und in den PPM-konformen Zeitstempel 01.11.2001 12:07:30 umgewandelt.
Beispiel 3
Im Attribut ERF_STD wird nur die Stunde erfasst, in der das System-Event erzeugt wurde. Der Erfassungszeitpunkt liegt dabei immer dreißig Minuten nach der vollen Stunde.
...
<attribute ppmattributetype="AT_END_TIME">
<eventattributetype>ERF_DAT</eventattributetype>
<value>::</value>
<eventattributetype>ERF_STD</eventattributetype>
<value>30</value>
transformation format="yyyyMMdd::HHmm"/>
</attribute>
...
Zugehöriges System-Event der Ausgabedatei:
...
<event>
...
<attribute type='ERF_STD'>12</attribute>
<attribute type='ERF_DAT'>20011001</attribute>
...
</event>
...
Die Attributwerte und konstanten Zeichenfolge werden in der angegebenen Reihenfolge zur Zeichenfolge 20011001::1230 zusammengesetzt und mit dem Format yyyyMMdd::hhmm in den PPM-konformen Zeitstempel 01.10.2001 12:30:00 umgewandelt, der an das PPM-Attribut AT_END_TIME geschrieben wird.
Zeitstempeltransformationen timestamp_epoch, timeofday_epoch und day_epoch
Die Zeitstempeltransformation timestamp_epoch wandelt einen Ganzzahlenwert, der die seit dem 1. Januar 1970 vergangenen Sekunden bzw. Millisekunden angibt, in das interne PPM-Format um. Im XML-Attribut format bestimmen Sie, ob der Ganzzahlenwert die Anzahl der Sekunden (Wert SECOND) oder Millisekunden (Wert MILLISECOND) seit dem 01.01.1970 0:00:00 GMT angibt. Bei der Berechnung wird die aktuelle Zeitzone des Systems berücksichtigt.
Die Attributtransformationen timeofday_epoch und day_epoch sind analog zu verwenden.
Beispiel (timestamp_epoch)
Im Quellsystemattribut WORK_ITEM-END_TIME ist die Anzahl der Sekunden seit dem 1. 1. 1970 angegeben.
...
<attribute type="WORK_ITEM-END_TIME">1221482578</attribute>
...
Um diesen Attributwert dem Wert des PPM-Attributs AT_END_TIME zuzuweisen, können Sie folgende Mapping-Regel verwenden:
...
<attribute ppmattributetype="AT_END_TIME">
<eventattributetype>
WORK_ITEM-END_TIME
</eventattributetype>
<transformation type="timestamp_epoch"
format="SECOND"/>
</attribute>
...
Attributtransformation SAGDateTime
Das Zeitformat SAGDateTime wird in sogenannten EDA Events verwendet. Event-Attribute vom Typ SAGDateTime werden bislang als Textattribute importiert, da das Datumsformat nicht ohne Weiteres von den bestehenden Zeitstempeltransformationen verarbeitet werden kann.
YYYY-MM-DDThh:mm:ss.sssTZD
Beispiele für Zeitangaben in diesem Format sind:
2011-04-28T08:15:59.001Z
2011-04-28T08:15:59.001+06:00
Transformatorklasse
Die Transformation SAGDateTime enthält die Funktionalität zum Transformieren von Zeitangaben im Format SAGDateTime in das PPM-interne Zeitformat.
Die Klasse kann im Attribut-Mapping im Rahmen des PPM-XML- und Process-Import verwendet werden. Dazu muss eine entsprechende Mapping-Regel definiert werden, die wie folgt aussehen könnte.
<attribute ppmattributetype="AT_TIMESTAMP_PPM">
<eventattributetype>TIMESTAMP_SAGDATETIME</eventattributetype>
<transformation type="SAGDateTime" format="yyyy-MM-dd'T'HH:mm:ss.SSSZ"/>
</attribute>
Die Anwendung dieser Regel führt dazu, dass der Inhalt des Event-Attributs TIMESTAMP_SAGDATETIME in einem PPM-kompatiblen Format an das PPM-Attribut AT_TIMESTAMP_PPM geschrieben wird. Dabei bleibt die Millisekundenangabe unberücksichtigt.
Die Anwendung der obigen Regel auf das Event-Attribut
<attribute type="TIMESTAMP_SAGDATETIME">2013-07-15T06:02:33.650Z</attribute>
würde in der Zeitzone UTC beispielsweise zur Erzeugung des folgenden PPM-Attributs führen:
<attribute type="AT_TIMESTAMP_PPM">15.07.2013 06:02:33</attribute>
Bei der Spezifikation der Mapping-Regel haben Sie zwei Optionen.
Wenn bekannt ist, ob die Zeitangabe im Event-Attribut millisekundengenau ist oder nicht, kann im Formatattribut der Transformation das erwartete Format (yyyy-MM-dd'T'HH:mm:ss.SSSZ für millisekundengenaue Zeitangabe, yyyy-MM-dd'T'HH:mm:ssZ für sekundengenaue Zeitangabe) angegeben werden. Die Anwendung einer Transformation für eine millisekundengenaue Zeitangabe auf eine sekundengenaue Zeitangabe und umgekehrt führt zu einem Fehler.
Wenn Sie kein Format angeben, werden bei der Transformation beide Zeitformate (dd'T'HH:mm:ss.SSSZ und yyyy-MM-dd'T'HH:mm:ssZ) nacheinander angewendet. Wenn eines der Formate erkannt wird, wird ein entsprechender Wert an das PPM-Attribut geschrieben.