Endlosschleifen in Services und Prozessinstanzen erkennen

Es gibt eine Gruppe von Eigenschaften zur Schleifenermittlung, die Sie verwenden können, um Endlosschleifen in Services und Prozessinstanzen zu erkennen und zu bearbeiten.

In der Datei 99Local.xml gibt es eine Eigenschaft loop-detection-duration für die Service-Engine und eine ebensolche Eigenschaft für die BPD-Engine (Business Process Definition, Geschäftsprozessdefinition). Mit dem Wert in jeder dieser Eigenschaften wird die erwartete Maximaldauer in Sekunden festgelegt, über die ein Service oder eine BPD-Instanz ausgeführt werden sollte; mit dem Wert -1 wird eine unbegrenzte Dauer angegeben. Die beiden Engines unterscheiden sich darin, was passiert, wenn der betreffende Service bzw. die betreffende BPD-Instanz die Maximaldauer überschreitet:
  • Wenn ein Service über einen längeren Zeitraum ausgeführt wird, gibt die Service-Engine entweder eine Nachricht an die Datei SystemOut.log aus oder stoppt den Service. Mit der Eigenschaft loop-detection-exception wird festgelegt, welche Aktion von der Engine ausgeführt wird. Wird die Eigenschaft auf true (wahr) gesetzt, stoppt die Engine den Service und generiert eine Ausnahmebedingung. Standardmäßig ist diese Eigenschaft auf false (falsch) gesetzt.

    Die Ausnahmebedingung wird verwendet, um die BPD-Instanz, die den Service enthält, darüber zu informieren, dass die Service-Engine gestoppt worden ist.

  • Wenn eine BPD-Instanz über einen längeren Zeitraum ausgeführt wird, gibt die BPD-Engine eine Nachricht an die Datei SystemOut.log aus. Aufgrund dieser Informationen kann ein Administrator die Instanz entweder aussetzen oder anderweitig bearbeiten.
Wichtig: Wie bei anderen Anpassungsänderungen auch, dürfen Sie die Datei 99Local.xml nicht direkt modifizieren. Verwenden Sie stattdessen die entsprechende 100Custom.xml-Datei für Ihre Topologie, um die Standardeinstellungen zu überschreiben. Weitere Informationen finden Sie unter Konfigurationsdatei '100Custom.xml' erstellen. Weitere Informationen zur Position der 100Custom.xml-Datei, die aktualisiert werden muss, finden Sie im Abschnitt Speicherort von 100Custom-Konfigurationsdateien.
In der Datei 99Local.xml sehen die Eigenschaften zum Erkennen von Endlosschleifen wie in den folgenden Beispielen aus:
<service-engine>
	<loop-detection-duration>120</loop-detection-duration>
	<loop-detection-exception>false</loop-detection-exception>
</service-engine>
<bpd-engine>
	<loop-detection-duration>60</loop-detection-duration>
</bpd-engine>
Wenn sich Services nicht in einer Endlosschleife befinden, aber die folgenden Nachrichten in der Datei SystemOut.log vorhanden sind, sollte in Betracht gezogen werden, die Werte der Eigenschaft loop-detection-duration für die Service-Engine zu ändern:
  • CWLLG0872W: Der Service '{0}' wird seit {1} Sekunden ausgeführt und befindet sich möglicherweise in einer Endlosschleife.
  • CWLLG0873W: Der Service '{0}' für die Instanz {1} ist seit {2} Sekunden aktiv und befindet sich möglicherweise in einer Endlosschleife.
  • CWLLG0874E: Der Service '{0}' wurde nach {1} Sekunden beendet, da er sich möglicherweise in einer Endlosschleife befindet.
  • CWLLG0875E: Der Service '{0}' für die Instanz {1} wurde nach {2} Sekunden beendet, da er sich möglicherweise in einer Endlosschleife befindet.

Wenn sich BPD-Instanzen nicht in einer Endlosschleife befinden, aber die folgende Nachricht in der Datei SystemOut.log vorhanden ist, sollte in Betracht gezogen werden, die Werte der Eigenschaft loop-detection-duration für die BPD-Engine zu ändern: CWLLG0871W: Die Instanz {0} der Geschäftsprozessdefinition (BPD) wird seit {1} Sekunden ausgeführt und befindet sich möglicherweise in einer Endlosschleife.

Beispiel: Um die Service-Engine entsprechend zu ändern, damit der Serviceablauf nach vier Minuten (240 Sekunden) gestoppt wird, fügen Sie den folgenden Code zur entsprechenden 100Custom.xml-Datei hinzu:

<server>
	<service-engine>
		<loop-detection-duration merge="replace">240</loop-detection-duration>
		<loop-detection-exception merge="replace">true</loop-detection-exception>
	</service-engine>
</server>