Dismiss
InnovationQ will be updated on Sunday, Oct. 22, from 10am ET - noon. You may experience brief service interruptions during that time.
Browse Prior Art Database

Transaction Maps for Stateless, Cross-Nodal Logical Units of Work

IP.com Disclosure Number: IPCOM000020222D
Original Publication Date: 2003-Nov-03
Included in the Prior Art Database: 2003-Nov-03
Document File: 3 page(s) / 24K

Publishing Venue

IBM

Abstract

Complex business transactions on the web usually require that a transaction pass through multiple logical nodes from inception to completion and developers encounter a problem when trying to debug transactions which span such nodes. This article describes the ability to distinguish the activity associated with the components of different logical units occurring on a single node, the ability to collect those component activities across an arbitrary number of nodes, where they do not necessarily have to have the knowledge of each other as well as the ability to analyze the results of those activities in a convenient map structure

This text was extracted from a PDF file.
At least one non-text object (such as an image or picture) has been suppressed.
This is the abbreviated version, containing approximately 43% of the total text.

Page 1 of 3

Transaction Maps for Stateless, Cross-Nodal Logical Units of Work

  Complex business transactions on the web usually require that a transaction pass through multiple logical nodes from inception to completion.

For instance, a typical database lookup might traverse the following 5 nodes:

0) Browser

1) Webserver

2) Application Server

3) Servlet

4) RDBMS Developers encounter a problem when trying to debug transactions which span such nodes. The problem occurs because each node in the transaction may provide a well-defined log of its actions relevant to the transaction, but nowhere is there a comprehensive model of the end-to-end transaction, from which can be derived all of the relevant pieces. For example, Figure 1 describes a transaction similar to that referenced above.

In this example, Nodes 1-4 may well each log a number of events into a single repository, for later analysis, but the data for a given transaction that occurs in Node 1 is combined with data from previous transactions and it typically distinguishable from other transactions only by tedious analysis of time stamp data, etc. Further, data across nodes is not linked, and requires effort on the part of the developer to reconstruct. For example, in the Figure, data in the log from Node 1 belonging to Transaction B - designated Log File N-1, Transaction B, has no linkage to that from Node 2 - designated Log File N-2, Transaction B.

Provided is a method whereby:

1

[This page contains 2 pictures or other non-text objects]

Page 2 of 3

a) data about a given transaction occurring partially on a single node can be isolated from earlier and later transactions b) data about a given transaction occurring across multiple nodes can be combined across those nodes in a logically-related structure or map for later analysis by developers

The invention operates as follows: A service is provided that links the various processes in a cross-nodal transaction.

The service provides a callable interface (either proprietary or Web Services-based) which allows modules of interest to: a) request a unique ID from the service

b) write log data utilizing this unique ID

c) record the location of the log data

d) pass the previously-acquired UID to the next node in the LUOW (Logical Unit of Work) sequence, enabling this next node to use this UID and append a newly-acquired UID to it in a hierarchical sequence in a format like this: 'UIDa.UIDb.UIDc...'.

The service further allows a completed cross-nodal LUOW - represented in the form of a structure or map - to be interrogated by a developer in the course of debugging or analysis of a problem. To avoid burdening developers of the source code for Nodes 1-4 having to write extra code, in implementation such a service may be delivered in the form of new classes (or extensions to existing classes) or as extension to existing packages, in the case of a Java implementation. These extensions need be invoked only when the user has complied the code in debug mode...