1. Technical Field
The present invention is generally directed to an improved computing system. More specifically, the present invention is directed to a resource integrity engine that maintains the integrity of data in the computing system when handling transactions involving multiple software resources.
2. Description of Related Art
With the exception of very trivial applications, it is common for application programs executing in today's software environments to interact with multiple software resources in order to accomplish a specified task. Many times these software resources are basically independent of each other but together need to act as an atomic unit, i.e. an unbreakable whole, during the execution of the application program. This unit of execution, having multiple resources acting in concert as an atomic unit, is referred to as a transaction.
For example, a single task may require a database software resource to perform an update of a record in the database and require a messaging software resource to send a message to another software resource indicating completion of the update. The transaction would be comprised of the updating of the database record and the sending of the message. Both of these operations must be performed in order for the transaction to complete successfully.
Certain software operating systems provide a mechanism for executing collaboration between the individual resources. This mechanism is often referred to as a transaction manager. Such a mechanism creates a single context that acts as the single atomic unit for each transactional operation that is distributed among the individual resources. One well known technique for managing transactions in a transaction manager of this type is to use a two phase commit process.
The two phase commit process involves a “prepare phase” and a “commit phase.” During the “prepare phase,” the transaction manager informs all of the participants of the intended transaction and requests that they acknowledge that they are prepared to either commit or rollback the pending transaction. During the “commit phase,” all of the participants in the transaction are asked to commit the transaction, i.e. complete their portion of the transaction. If a participant is unable to commit the transaction or does not respond during the “prepare phase,” then the transaction fails and any changes are rolled back. The rollback of changes made by a transaction that has not been completed by all of the participants is intended to maintain integrity of the data in the system. That is, a synchronization of the states of the software resources involved in the transaction must be maintained.
The transaction manager provides this functionality transparent to the application program. While this is a perfectly acceptable approach when the managed software resources are supported by the computing system software, not all different software resource types are necessarily supported by every transaction manager. Furthermore, not all software environments include a transaction manager that may be used to manage transactions through, for example, a two phase commit process.
Thus, it would be beneficial to have an apparatus and method for maintaining the integrity of data in a computing system where a transaction manager is not present or where certain software resources are not supported by the transaction manager that may be present in the computing system.