Patent ID: 8170896

Claim:
A method for performing a transaction including delivering messages, said method comprising: establishing a conversation between two or more applications, wherein the conversation defines two or more roles for the applications, and wherein the conversation is further associated with a unique name and version; initiating a transaction by a first workflow process, said transaction including a message addressed to a second workflow process; wherein the first workflow process and the second workflow process implement said roles of the conversation; storing the message by the first workflow process into a persistent queue and committing said transaction by the first workflow process after the message has been persisted such that any resources locked by the transaction are released for use by other transactions; retrieving the message from the queue by an escrow process that is external with respect to the first workflow process; transmitting the message from the escrow process to the second workflow process wherein the transmission of the message occurs outside of said transaction; wherein if the first workflow process abnormally terminates after the message has been stored in the persistent queue, the escrow process will continue attempting to deliver the message to the second workflow process unaffected by termination of the first workflow process; and receiving, by the escrow process, an acknowledgement of receiving the message at the second workflow process and removing the message from the queue by the escrow process if the acknowledgement is received before the escrow process times out; wherein in the event that the escrow process times out before the acknowledgement is received, the escrow process re-transmits the message to the second workflow process, wherein the second workflow process implements duplicate message detection to filter out duplicate messages sent by the escrow process.