Ebenso kann die Art der Verknüpfung der Bausteine in den Algorithmus mit eingehen. Ruft ein Baustein eine Operation eines anderen Bausteins beispielsweise synchron auf, wird somit also bis zur Lieferung eines Ergebnisses blockiert, so kann dies eine andere Verknüpfung der zugehörigen Managementinformation bedingen als im Falle eines asynchronen Aufrufs. Der genaue Algorithmus der Managementlogik wird also von den folgenden zwei Faktoren wesentlich beeinflußt:
Um die Verknüpfung der Managementinformation zu verdeutlichen, wird
in folgenden angegeben, wie die in Kapitel
geforderte transaktionsbasierte Überwachung möglich wäre.
Es wird also
gezeigt, wie die Antwortzeit, die Transaktionsdauer sowie die
Verfügbarkeit einzelner Bausteine aus den Informationen der
darunterliegenden Bausteine zu errechnen ist.
Nachdem im allgemeinen Fall keine explizite Präsentation eines
Ergebnisses vorliegt, wird im folgenden ein Algorithmus angegeben, wie
die Zeit bis zur Rückkehr des Kontrollflusses zum Aufrufer aus den
Zeiten der darunterliegenden Bausteine errechnet werden
kann. Abbildung skizziert den resultierenden Algorithmus.
Handelt es sich um einen instrumentierten Baustein (einen Basisbaustein), so kann die Antwortzeit mit Hilfe der Instrumentierung einfach gemessen werden. Ist dies nicht der Fall, so kann die Antwortzeit durch Berechnung der Summe der Antwortzeiten aller synchron von diesem Baustein aufgerufenen Bausteine ermittelt werden. Asynchron aufgerufene Bausteine werden bei dieser Berechnung nicht berücksichtigt, da die im asynchron aufgerufenen Baustein durchgeführten Berechnungen nicht mit in die Antwortzeit des übergeordneten Bausteins eingehen. Die Zeit für den asynchronen Aufruf selbst muß bei dieser Vorgehensweise vernachlässigt werden.
Mit Hilfe der Funktion Start(Baustein X) wird der Beginn der Transaktion ermittelt. Dieser kann entweder durch die Instrumentierung direkt ermittelt werden, oder wird durch den Startpunkt des ersten aufgerufenen Bausteins bestimmt. Um das Ende der Transaktion zu ermitteln, wird zunächst wiederum analog vorgegangen: Handelt es sich um einen instrumentierten Baustein, so kann das Ende einfach ermittelt werden. Ist dies nicht der Fall, so wird das Ende des zuletzt synchron aufgerufenen Bausteins bestimmt.
Daraufhin wird für alle asynchron aufgerufenen Bausteine der Zeitpunkt des Endes der entsprechenden Subtransaktion bestimmt. Handelt es sich hierbei um einen späteren Zeitpunkt als den bereits ermittelten, so wird dieser als das Ende der Transaktion betrachtet. Die eigentliche Transaktionsdauer wird dann aus der Differenz zwischen ermitteltem Endzeitpunkt und ermitteltem Startzeitpunkt errechnet.
Wiederum kann die Verfügbarkeit direkt bestimmt werden, wenn es sich um einen instrumentierten Baustein handelt. Andernfalls wird die Verfügbarkeit zunächst auf TRUE gesetzt. Daran anschließend wird die Verfügbarkeit aller synchron aufgerufenen Bausteine überprüft, die mit Hilfe einer AND-Verknüpfung in die Berechnung eingeht. Die Verfügbarkeit asynchron aufgerufener Bausteine geht nur dann in die Berechnung mit ein, wenn dies vom Anwendungsentwickler zum Zeitpunkt der Anwendungserstellung so bestimmt wurde.