Generieren und Festlegen von LUWIDs]
Der Unit-of-Work-Bezeichner (LUWID) wird verwendet, um Unterhaltungen zu identifizieren, die Teil einer einzelnen Synchronisierungspunkttransaktion sind. Alle Unterhaltungen mit derselben LUWID werden gleichzeitig committet (oder zurückgesichert).
Host Integration Server weist einem Transaktionsprogramm beim Starten des TP zwei LUWIDs zu. Bei lokal gestarteten TPs wird das TP_STARTED Verb ausgegeben. Die erste LUWID ist die geschützte LUWID des TP. Es wird vom Host Integration Server als LUWID für alle vom TP zugewiesenen Synchronisierungsebenen AP_SYNCPT Unterhaltungen verwendet. Wenn der TP ein ALLOCATE - oder MC_ALLOCATE Verb mit einem Synchronisierungsgrad von AP_SYNCPT ausgibt, generiert Host Integration Server eine Anfügung, die die aktuelle geschützte LUWID des TP enthält.
Die zweite LUWID ist die ungeschützte LUWID des TP. Es wird für alle Unterhaltungen verwendet, die vom TP mit einem anderen Synchronisierungslevel als AP_SYNCPT zugewiesen werden.
Für remote initiierte TPs kann die eingehende Anfügung eine LUWID für den TPit enthalten, wenn die Konversation einen Synchronisierungsgrad von AP_SYNCPT aufweist. Für Sync Point-Unterhaltungen speichert Host Integration Server die LUWID als geschützte LUWID des TP und generiert eine neue ungeschützte LUWID dafür. Bei Unterhaltungen mit einem anderen Synchronisierungslevel als Synchronisierungspunkt (AP_SYNCPT) speichert Host Integration Server die LUWID als ungeschützte LUWID des TP und generiert eine neue geschützte LUWID.
Host Integration Server generiert LUWIDs durch Verkettung:
Der vollqualifizierte Name der lokalen LU, dem ein einzelnes Byte vorangestellt ist, das seine Länge angibt (ohne das Längenbyte).
Eine 6-Byte-LUW-instance Zahl, die aus dem aktuellen Datum und der aktuellen Uhrzeit generiert wird (geändert, um die Eindeutigkeit bei Bedarf sicherzustellen).
Eine 2-Byte-LUW-Sequenznummer, initialisiert mit 1.
Wenn die vollqualifizierte LU-Namenskomponente der LUWID keine 17 Byte lang ist, fügt Host Integration Server keine Auffüllung zwischen ihr und der LUW-instance Zahl hinzu. Die Anwendung kann die Länge des LUWID und die darin enthaltenen Offsets der LUW-instance Zahl und LUW-Sequenznummer bestimmen, indem sie das erste Byte der LUWID untersucht, was die Länge des vollqualifizierten LU-Namens angibt.
Wenn Host Integration Server sowohl eine geschützte als auch eine ungeschützte LUWID für einen TP generiert, wird die ungeschützte LUWID erstellt, indem die instance Nummer der geschützten LUWID erhöht wird.
Die geschützte LUWID muss aus einem von vier Gründen von einem TP geändert werden:
Wenn eine Transaktion gesichert oder committet wird, muss die LUWID-Sequenznummer erhöht werden.
Wenn die Transaktionsstruktur aufgeteilt ist, muss eine neue LUWID für den TP generiert werden.
Wenn die Anwendung mehrere logische TPs zum Implementieren einer Transaktion verwendet, muss jeder TP über dieselbe LUWID verfügen (anders als die vom Host Integration Server zugewiesene).
Wenn die Anwendung als Gateway aus einer Nicht-SNA-Umgebung fungiert und LUWIDs mit einem anderen Mittel als "Attach" empfangen werden.
Damit ein TP neue LUWIDs festlegen oder generieren kann, wird von der APPC-API ein neues Verb ( SET_TP_PROPERTIES) bereitgestellt. Dieses Verb ermöglicht es dem TP, entweder seine LUWIDs auf einen vorhandenen Wert festzulegen, indem die LUWIDs bereitgestellt werden, oder neue zu generieren und sie ab dann zu verwenden. Wenn eine neue LUWID vom Host Integration Server generiert wird, ist sie garantiert eindeutig.
Beachten Sie, dass es in der Verantwortung der Anwendung (der Sync Point-Systemkomponente) liegt, den neuen LUWID PS-Header an das Partnersynchronisierungspunktsystem zu übertragen, wenn die geschützte LUWID geändert wird. Wenn ein neuer LUWID-PS-Header empfangen wird, muss die Anwendung die LU darüber informieren, indem sie SET_TP_PROPERTIES ausgibt.