Anbindung an PMI
Sie können Ihren Adapter an die Process Monitoring Infrastructure (PMI) anbinden. Im SAP-Umfeld können technische Abläufe über Systemgrenzen hinausgehen (z.B. im Business Process Management). Die Anbindung an PMI bietet Ihnen die Möglichkeit einer Überwachung dieser Abläufe über Systemgrenzen hinweg.
PMI sammelt Daten von unterschiedlichen Systemen mit Hilfe von PMI-Agenten, die ihre Daten dann einem zentralen System zur Auswertung zur Verfügung stellen.
Die PMI-Trace-Daten werden erst im Speicher gesammelt und danach asynchron in den PMI-Server hochgeladen. Daher ist die Auswirkung auf das zu überwachende System und auf dessen Performanz gering.
SAP-Systeme, die mit systemübergreifendem Message-Austausch zu tun habe (z.B. tRFC oder die Runtime Workbench), sind automatisch an PMI angeschlossen.
PMI ist mit dem
SAP Solution
Manager integriert. Der SAP Solution Manager verbindet die
Business-Prozess-Sicht mit dem technischen Tracing über Systemgrenzen
hinweg.
Weiter Informationen zum
Prozess-Monitoring mit PMI finden Sie unter:
Prozess-Monitoring mit
PMI (Process Monitoring Infrastructure)
Interface-Überblick
Merkmal |
Wert |
Name |
AF PMI Access |
Zweck |
Schreiben von PMI-Daten |
Typ |
Java-Bibliothek |
Technischer Name |
Com.sap.aii.af.service.pmi |
Zertifizierung |
Optional |
Syntax |
Siehe unter Pfad: JavaDoc (.\index) package com.sap.aii.af.service.pmi |
● Verwenden Sie die PMIAccess-Klasse, um PMI-Events zu setzen. Das Adapter-Framework ruft die PMIAccess-Klasse auf.
● Adapter können die folgenden PMIAccess-Methoden implementieren, um die komplette Message-Verarbeitung zu überwachen:
PMIAccess-Methoden
Methodenname |
Bedeutung |
invokeAdapterInboundAgent |
Kann vom Adapter in Sender-/Inbound-Richtung dazu verwendet werden, den Eingang einer neuen Message so bald wie möglich zu melden. Die Methode verlangt eine Message-ID. Dabei muss es sich nicht um die XI-Message-ID handeln, wenn der MessageIDMapper anschließend dazu verwendet wird, die Message-ID auf eine XI-Message-ID zu mappen. Siehe auch: Message-ID Erzeugung, Persistenz und Mapping |
invokeCPALookupAgent |
Zeichnet die Adressinformation für eine gegebene Message-ID auf. Die Methode muss für den Adapter in Sender-/Inbound-Richtung aufgerufen werden, falls invokeAdapterInboundAgent zuvor aufgerufen wurde. |
invokeIDMappingAgent |
Muss im Adapter implementiert werden, um das Mapping zwischen externer ID und XI-MessageID dem PMI bekannt zu geben. Sie müssen die Methode implementieren, falls invokeAdapterInboundAgent mit externer Message-ID aufgerufen wird und der MessageIDMApper-Service nicht verwendet wird. |
invokeAdapterOutboundAgent |
Kann in Empfänger-/Outbound-Richtung aufgerufen werden, damit der Message-Ausgang aufgezeichnet wird. Wenn Sie die Methode mit einer externen MessageID aufrufen, dann muss der Adapter entweder invokeIDMappingAgent aufrufen oder den MessageIDMapper verwenden, um das ID-Mapping PMI bekannt zu geben. |
● Alle weiteren PMIAccess-Methoden brauchen Sie nicht zu berücksichtigen.
● Falls die XI-Message-ID in einer der oben genannten Methoden gesetzt wird, dann muss es sich um einen hexdezimalen String handeln, wenn Sie callPMIAgent() verwenden und dieser auf TRUE gesetzt ist.
Der Auszug zeigt eine interne Adaptermethode, die eine bereits umgesetzte Message (Klasse MyMessage) an ein externes Protokoll sendet. Als zweiter Parameter wird die XI-Message-ID als IGUID weitergeleitet, um so das PMI-Monitoring und das Message-ID-Mapping zu ermöglichen.
package com.mycompany.XI.adapter.impl;
…
import com.sap.aii.af.service.idmap.MessageIDMapper;
import com.sap.aii.af.service.pmi.PMIAccess;
import com.sap.guid.IGUID;
…
public void sendMessage(MyMessage message, IGUID xmbmsgid) throws MyException {
…
try {
//Important: Use hex string XI message ID representation for PMI
//logging (inside mapper). The archiving interval for the ID mapping is set to 1 day
messageIDMapper.createIDMap(xmbmsgid.toHexString(),externalMsgId,
System.currentTimeMillis() + 1000*3600*24);
} catch(Throwable t) {
…
}
// Write PMI endpoint entry
try {
PMIAccess.invokeAdapterOutboundAgent(externalMsgId, "JMS", qos);
} catch (Throwable t) {
TRACE.catching(SIGNATURE,t); // Ignore
}
…