Bereitstellen einer eigenen Logik zur Fehlerbehandlung

Meistens erfordern Fehlernachrichten einen Benutzereingriff, um den im Nachrichtentext beschriebenen Fehler zu beheben. Um die tägliche Synchronisationsverwaltung zu vereinfachen, können Sie Routinearbeiten, die bei Auftreten bestimmter Fehler erforderlich sind, durch Bereitstellen einer eigenen Programmlogik automatisieren.

Vorgehensweise

  1. Gehen Sie wie folgt vor, um die automatische Fehlerverarbeitung zu definieren: Öffnen Sie die folgende Datei mit einem Texteditor Ihrer Wahl, um diese zu editieren:
    DSYUserExits.properties
    
    Diese Datei ordnet eine Nachrichtennummer einer Routine oder einem Programm zu, die bzw. das ausgeführt wird, wenn die Nachrichtennummer in das Protokoll geschrieben wird. Diese Merkmaldatei unterstützt viele unterschiedliche Parameter.
    # Formats:
    # {DSY message id}={class to execute} {environment parameters}
    # {DSY message id}={command to execute} {environment parameters}
    #   where
    #     {DSY message id}:
    #       a DSY* message id that you want to define a user exit for (such as 
    #       DSYD000E)
    #     {class to execute}:
    #       the name the Java .class to execute. This class must implement the
    #       com.ibm.mobileservices.DSYUserExitsInterface
    #     {command to execute}:
    #       the name the command to execute (such as pager.exe)
    #     {environment parameters}:
    #       a series of parameters to pass in to the class or command to execute
    #
    #   Optional command tags:
    #     <DSYID>            = the message id
    #     <DSYIDMSG>         = the message id message text
    #     <DSYIDMSG_>        = the message id message text, but all blanks are 
    #                          converted to underscores
    #     <DSYMSG>           = the message text
    #     <DSYMSG_>          = the message text, but all blanks are converted to 
    #                          underscores.
    #     <SERVER_IPADDRESS> = the server ip address (such as 9.112.19.143)
    #     <SERVER_NAME>      = the server name (such as mpauser.stl.ibm.com)
    #
    # Refer to the messages section for available DSY message ids.
    #
    # Example 1:
    #   If you wanted to have user exists for DSYD000E, you would add a line 
    #   similar to the following:
    #
    # DSYD000E=pager.exe number=5551234 id=<DSYID> msg=<DSYMSG_>
    #
    # When a DSYD000E message was issued, the pager.exe command would be executed
    # with two environment parameters would be set: number=5551234, id=DSYD000E
    # and msg=DSY message text, substituting an underscore (_) for blanks.
    #
    # Example 2:
    #   If you wanted to have a class executed when a DSYD020E was encountered,
    #   you would add a line similar to the following:
    #
    # DSYD020E=com.ibm.mobileservices.DSYUserExitsSample.class
    #
    # When a DSYD020E was issued, the com.ibm.mobileservices.DSYUserExitsSample 
    # class would be executed.
    
  2. Ordnen Sie der Nachrichtennummer am Ende der Datei eine Aktion zu, die ausgeführt werden soll, wenn die Nachricht in das Protokoll geschrieben wird. Diese Aktion kann ein Befehl (wie z. B. eine ausführbare Datei oder eine Stapeldatei) oder eine Java-Klasse sein. Verwenden Sie das folgende Format:
    nachrichtennummer=aktion parameter=wert
    
    Dabei gilt Folgendes:

    nachrichtennummer
    Die Nummer der Fehlernachricht. Eine Liste der Nachrichtennummern und der zugehörigen Nachrichtentexte finden Sie in Fehlernachrichten.

    aktion
    Die Datei, die auf den Befehl oder die Java-Klasse verweist, die aufgerufen werden soll. Die Java-Klasse muss Folgendes implementieren: com.ibm.mobileservices.DSYUserExitsInterface.

    parameter=wert
    Eine Reihe von Parametergruppen (z. B. lastname=Doe firstname=John ), wobei die einzelnen Gruppen durch jeweils ein Leerzeichen zu trennen sind.

    Die auszuführende Aktion muss auf eine gültige Routine oder ein Programm verweisen.

Angenommen, Sie möchten einen Benutzer-Exit aufnehmen, der Sie entsprechend benachrichtigt, wenn die Nachricht DSYD000E ausgegeben wird. Sie könnten hierfür ein Programm mit dem Namen pager.exe schreiben, das Ihren Pager anwählt, und die Pagernummer als Parameter eingeben. Die Zeile in der Datei DSYUserExits könnte dann so aussehen:

DSYD000E=pager.exe nummer=9980674

Sie haben auch die Möglichkeit, die folgenden Parameter und Variablen in den Befehl aufzunehmen:

ID
Verwenden Sie diesen Parameter, um die Nummer der Nachricht zu schreiben. Als Parameterwert geben Sie die Variable DSYID an.

MSG
Verwenden Sie diesen Parameter, um den Nachrichtentext zu schreiben. Geben Sie als Parameterwert DSYMSG an, um den tatsächlichen Nachrichtentext zu schreiben, oder DSYMSG_, wenn der Nachrichtentext geschrieben, aber alle Leerzeichen im Text in Unterstreichungszeichen konvertiert werden sollen.

Das folgende Beispiel zeigt, wie derselbe Pager angewählt werden kann, die Nachrichtennummer und der Text aber so übergeben werden, dass Sie auf der Pager-Anzeige erscheinen:

DSYD000E=pager.exe nummer=9980674 id=dsyid msg=dsymsg

Beachten Sie aber, dass Sync Server weder die Gültigkeit der Einträge in der Merkmaldatei DSYUserExits prüft, noch verfolgt, ob die Aktion, die Sie der Nachricht zugeordnet haben, tatsächlich ausgeführt wird.

Verwenden Sie das Dateitool DSYUserExitsTest.bat, um eine Benutzer-Exit-Routine zu testen. Verwenden Sie für den Test das folgende Format:

DSYUserExitsTest.bat dsy-nachrichten-id

Dabei ist dsy-nachrichten-id die Nachrichtennummer, die Sie simulieren wollen. Wenn Sie keine Nachrichten-ID angeben, wird eine Liste der verfügbaren Nachrichten-IDs angezeigt.

Beispielbefehl mit der Nachrichten-ID DSYS001I:

DSYUserExitsTest.bat dsys001i

Die Nachricht DSYS001I wird generiert und der für diese Nachricht definierte Benutzer-Exit wird gestartet.

Beispielbefehl mit einer ungültigen Nachrichtennummer:

DSYUserExitsTest.bat zzz

Die Ausgabe des Tools DSYUserExitsTest:

DSYUserExitsTest
    DSY-Nachrichten-ID 'ZZZ' wurde nicht gefunden. Die folgenden
    DSY-Nachrichten-IDs sind gültig: 
DSYA000E, DSYA001E, DSYD000E, DSYD002E, DSYD006E, DSYD007E, ...

Zugehörige Konzepte

Zugehörige Tasks