
Sie können Ihren Adapter an die Process Monitoring Infrastructure (PMI) anbinden. Im SAP-Umfeld können technische Abläufe über Systemgrenzen hinausgehen (beispielsweise 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.
Weitere Informationen: Process Monitoring Infrastructure
Bevor PMI-Einträge geschrieben werden können, müssen Sie Zugriff auf ein Objekt erhalten, das PMIAccess implementiert. Verwenden Sie dazu das Objekte PublicAPIAccess .
Mit getPMIAccess() erhalten Sie ein PMIAccess -Objekt.
Weitere Informationen: XI-Message-Interfaces
Die PMI-Trace-Daten werden erst im Speicher gesammelt und danach asynchron in den PMI-Server geladen. Die Auswirkung auf das zu überwachende System und auf dessen Performanz ist gering.
SAP-Systeme, die mit systemübergreifendem Message-Austausch zu tun habe (beispielsweise tRFC), 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.
Weitere Informationen: Prozess-Monitoring mit PMI (Process Monitoring Infrastructure)
Interface-Überblick
| Merkmal | Wert |
|---|---|
|
Name |
AF PMI Access |
|
Zweck |
Schreiben von PMI-Daten |
|
Typ |
Interface in Fassade com.sap.aii.af.ifc.facade |
|
Technischer Name |
com.sap.engine.interfaces.messaging.api.pmi |
|
Zertifizierung |
Optional |
|
Syntax |
JavaDoc package com.sap.engine.interfaces.messaging.api.pmi |
Rufen Sie folgende Methode in Ihrem Adapter auf:
PMIAccess-Methoden
| Methodenname | Bedeutung |
|---|---|
|
invokeAdapterInboundAgent |
Verwenden Sie die Methode in einem Senderadapter, um 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. Weitere Informationen: Message-ID Erzeugung, Persistenz und Mapping |
|
invokeCPALookupAgent |
Zeichnet die Adressinformation für eine gegebene Message-ID auf. Haben Sie invokeAdapterInboundAgent aufgerufen, muss die Methode für einen Senderadapter aufgerufen werden. |
|
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ängerrichtung aufgerufen werden, damit der Message-Ausgang aufgezeichnet wird. Wenn Sie die Methode mit einer externen MessageID aufrufen, muss der Adapter entweder invokeIDMappingAgent aufrufen oder den MessageIDMapper verwenden, um das ID-Mapping PMI bekannt zu geben. |
|
invokeAFStatusAgent, invokeChannelDeterminationAgent, invokeXIRA… |
Nur für interne Verwendung |
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.engine.interfaces.messaging.api.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
}
…