Your Browser is not longer supported

Please use Google Chrome, Mozilla Firefox or Microsoft Edge to view the page correctly
Loading...

{{viewport.spaceProperty.prod}}

Beispielprogramme zur Asynchron-Verarbeitung für UPIC-Clients

Für die Asynchron-Verarbeitung für UPIC-Clients werden mit openUTM die drei Teilprogramme UPDIAL, UPASYN und UPDGET ausgeliefert.

Funktionen

Mit diesen drei Teilprogrammen wird gezeigt, wie man von einem UPIC-Client aus asynchrone Aufträge erteilen und asynchron über das Ergebnis informiert werden kann.

In diesem Beispiel wird die Asynchron-Nachricht zunächst an die USER-Queue der Benutzerkennung geschickt, unter der sich der UPIC-Client angemeldet hat. Anschließend wird die Nachricht von einem Dialog-Teilprogramm gelesen und am Client ausgegeben. Der Vorteil asynchroner Verarbeitung liegt z.B. darin, dass der Benutzer am UPIC-Client sofort nach der Auftragsannahme einen neuen Auftrag eingeben kann und nicht bis zur Auftragsbeendigung blockiert ist.

Diese drei Programme haben folgende Funktionen:

  • UPDIAL liest eine Eingabenachricht, schickt diese als Asynchron-Auftrag an das Teilprogramm UPASYN und gibt eine Auftragsannahmebestätigung am Client aus.

  • UPASYN empfängt diese Nachricht, wartet 5 Sekunden zur Simulation einer komplexen Verarbeitung und schreibt das Ergebnis in die USER-Queue der Benutzerkennung, unter der sich der UPIC-Client angemeldet hat.

  • UPDGET liest mit Warten (60 Sekunden) aus der USER-Queue der Benutzerkennung des Vorgangs (bei leerer Dialog-Nachricht) bzw. der in der Dialog-Nachricht mitgegebenen Benutzerkennung. Dadurch kann der Vorgang UPDGET unter einer anderen Benutzerkennung (z.B. ohne Verwendung eines Security Users) als die Vorgänge UPDIAL und UPASYN ablaufen und die Nachricht aus der User-Queue des Benutzers abholen, der den Vorgang UPDIAL gestartet hat.

    Enthält die nicht leere Dialog-Nachricht keine gültige Benutzerkennung, beendet sich UPDGET mit einer Fehlermeldung. Falls keine Queue-Nachricht vorliegt, wird UPDGET erneut gestartet, sobald eine Nachricht eintrifft, oder die Wartezeit abgelaufen ist. Falls eine Queue-Nachricht vorliegt, wird diese mit MPUT an den UPIC-Client gesendet und mit PEND-RE der eigene TAC nochmals aufgerufen, um auf die nächste Nachricht zu warten.

Bestandteile

Die Quellprogramme und Objektmodule werden als Elemente der Bibliothek
SYSLIB.UTM.070.EXAMPLE ausgeliefert. Die Beispielprogramme sind nur in Verbindung mit einem darauf abgestimmten UPIC-Clientprogramm sinnvoll einsetzbar.

 

Integration in eine UTM-Anwendung

Falls der Client nur mit Benutzern betrieben werden soll, die mit RESTART=NO generiert wurden, ist der Ablauf wie folgt:

Der UPIC-Client hält zwei Verbindungen zur UTM-Anwendung und meldet sich jeweils mit derselben Benutzerkennung bei openUTM an. Der Client startet im ersten Thread den Dialog-Vorgang UPDGET zum Lesen der Asynchron-Nachrichten. Im zweiten Thread startet der Client auf explizite Anforderung den Dialog-Vorgang UPDIAL, der dann einen Asynchron-Auftrag an UPASYN erzeugt.

Soll der Client auch mit Benutzern betrieben werden die mit RESTART=YES generiert wurden, so kann folgendermaßen vorgegangen werden:

Der Client meldet sich nur im zweiten Thread mit dem Security-User an, im ersten Thread aber ohne expliziten Security-User. openUTM weist ihm also einen, der Verbindung fest zugeordneten Benutzer, zu. Der erste Thread liefert dann beim Starten des Vorgangs UPDGET (und bei jedem Dialogschritt) den Namen des Security-Users in der Dialog-Nachricht mit.