Abstract:
Techniques are provided for updating a local cache database of an application system in a multi-system environment having a central system that maintains central data objects that are shared by the multiple systems. A first application system executes an application and processes a document using a data object having a version identifier. A message is sent to a second application system including the data object used to process the document and a corresponding version identifier for the data object. The second application system receives the message, and the version identifier in the message is compared to a version identifier of a corresponding data object stored in the second application system. If the version identifier of the data object stored in the second application system indicates that a more recent version of the data object exists, the more recent version of the data object is requested from a central system that maintains the data objects and the second system is updated.

Description:
TECHNICAL FIELD  
       [0001]     This invention relates to asynchronous data transfer between different computing systems, and more particularly to techniques for updating and maintaining the integrity of data in a multiple-system environment where asynchronous messaging is employed.  
       BACKGROUND  
       [0002]     A multiple-system network architecture may include a central system that contains a central database of data objects that are used by other computing systems in the network. The use of the central data objects by the other systems in the network may be accomplished by storing a local copy of the central data objects in each system&#39;s local cache database. The local cache database of each system may be updated whenever a change is made to the central data objects in the central system via asynchronous messages that are sent from the central system to the other systems in the network.  
         [0003]     The various systems in the network run applications and may create, for example, business documents that are exchanged between the systems for processing. A first system may generate and process a document using the version of the central data objects stored in its local cache database and send that document to a second system in the network for further processing. When the document arrives at the second system, further processing may be performed using the version of the central data objects that exists at the time in the second system&#39;s local cache database, and that existing information may be merged with the existing data in the document. Because asynchronous messaging may be used to update the local cache databases of the first and second systems, these systems may have different versions of the central data objects stored in their respective local cache databases at any given point in time. Thus, there is a potential for conflicts between the information merged into the document by the first and second systems during the processing of the document.  
       SUMMARY  
       [0004]     Generally, the invention provides techniques for updating a local cache database of an application system in a multiple-system environment having a central system that maintains central data objects that are shared by the multiple systems. In one aspect, the invention provides a method for performing such an update. In the method, a message identifying a data object having a version identifier assigned by the central system is received by a second application system from a first application system. The version identifier of the data object in the message is compared to a version identifier of a corresponding data object stored in the local cache of the second application system. If the version identifier of the data object stored in the local cache of the second application system indicates that a more recent version of the data object exists, a more recent copy of the data object is requested from the central system, and the local cache of the second application system is updated with the more recent copy of the data object in the central system.  
         [0005]     In another aspect, the invention features a method of updating a local cache of an application system in a multiple-system environment having a central system that maintains central data objects that are shared by the multiple systems. The method includes executing an application in a first application system and processing a document using a data object having a version identifier assigned by the central system. A message is sent to a second application system containing a data object identifier to identify the data object used to process the document and the version identifier that corresponds to the data object.  
         [0006]     Embodiments of these methods may include one or more of the following features. The version identifier may be a timestamp that indicates the time of the modification of the data object. Alternatively, the version identifier may be a version number that is incremented after each modification of the data object. In some implementations, the message from the first application system may contain the data object having a version identifier assigned by the central system. The message may also identify a document that was processed using the data object.  
         [0007]     In alternative implementations, the local cache database of the second application system may be updated with the most recent copy of the data objects by receiving an asynchronous message from the central system containing a most recent copy of the data objects. The central data objects may be shared by the multiple systems by storing a copy of the central data objects in a local cache of each system. The central system may update the local cache of each system by sending an asynchronous message to each system containing the most recent copy of the central data objects.  
         [0008]     In other aspects, the invention provides computer program products that perform the above-described methods and techniques. In particular, the computer program products comprise executable instructions embodied on either a computer readable medium or a propagated signal.  
         [0009]     The details of one or more embodiments of the invention are set forth in the accompanying drawings and the description below. Other features, objects, and advantages of the invention will be apparent from the description and drawings, and from the claims. 
     
    
     DESCRIPTION OF DRAWINGS  
       [0010]      FIG. 1  is a block diagram of a multiple-system network in which business documents are created for processing by multiple systems.  
         [0011]      FIG. 2  is a diagram showing an example protocol for a message that may be transferred between the systems of  FIG. 1 .  
         [0012]      FIG. 3  is a block diagram of a computer system that may be included in the systems of  FIG. 1 .  
         [0013]      FIG. 4  is a flowchart of a method of updating a local cache database of a system shown in  FIG. 1 . 
     
    
       [0014]     Like reference symbols in the various drawings indicate like elements.  
       DETAILED DESCRIPTION  
       [0015]     A multiple-system network  10 , shown in the  FIG. 1  example, includes three networked computing systems, which in this example are a central system  20 , a sales system  30 , and a logistics system  40 . The central system  20  maintains a database  22  of data objects that are utilized by the other systems  30  and  40  in the network. Each data object maintained by the central system  20  includes a corresponding version identifier. The version identifier tracks the modifications or changes that are made to each data object. The sales system  30  and the logistics system  40  each store a copy of the central data objects and the corresponding version number in a local cache database  32  and  42 , respectively. For each change made to the data objects in the central system  20 , the central system  20  updates the copies of the data objects stored locally by the sales system  30  and logistics system  40  by sending both systems an asynchronous message containing the update. Because asynchronous messaging is used to update the local databases, at any given point in time, the sales system  30  and logistics system  40  may contain different versions of the data objects.  
         [0016]     The sales system  30  and the logistics system  40  each may execute, for example, business applications and generate business documents, such as customer orders, delivery orders, invoices, etc., that are exchanged between the systems  30  and  40  for processing. In other implementations, other types of business documents or files may be created by the application systems. In the example of a customer order, the customer order may be generated and processed by the sales system  30  and sent to the logistics system  40  as part of an asynchronous message for further processing. To generate this customer order, the sales system  30  may use its local copy of the central data objects. Because the version of the data objects stored locally by the sales system  30  and the logistics system  40  may differ, the data objects and corresponding version numbers used by the sales system  30  to generate the sales order are identified in the message transmitting the customer order to the logistics system  40 . The logistics system  40  then uses this information to determine whether its local cache database  42  has the most recent version of the central data objects, and if not, may request an update of the data objects before processing the customer order. By including the version numbers of the sales system&#39;s data objects in the message to the logistics system  40 , conflicts between the processing results of the two systems can be avoided and the integrity of the data in the local databases can be maintained.  
         [0017]     The central system  20  includes a central database  22 , a user interface  24 , and a message transport layer  26 . The central database  22  may contain one or more data objects that are used by the various systems in the network. In the  FIG. 1  example, the data objects relate to products or inventory items that are integral to the business documents that may be generated by the sales and logistics systems  30  and  40 . The data objects may include information relating to price, quantity, physical characteristics of the item, delivery time, etc. In other examples, the data objects may relate to other information that may be relevant to other types of applications. Each data object in the central system  20  includes a version identifier. The version identifier may be, for example, a version number that is incremented after each change or modification. Alternatively, the version identifier may be a timestamp that reflects the actual time of the modification. Yet in other implementations, a different non-cyclical identifier may be used to track the changes made to the central data objects.  
         [0018]     The information relating to the data objects, such as price or quantity, may be modified or changed through the user interface  24 . These changes may be made by a system administrator accessing the central system  20  or, alternatively, by application systems in the network that are authorized to make these modifications. When a data object is modified in the central database  22 , the central system  20  sends a message to the systems in the network to update their respective local copies of the central data objects. These messages are sent asynchronously to the other systems in the network through message transport layer  26 . In this example, a network  12  connects the central system  20 , the sales system  30 , and logistics system  40 . The network  12  may be a LAN, the Internet, or another suitable network.  
         [0019]     The sales system  30  includes a local cache database  32 , a system database  34 , a business application  36 , and a message transport layer  38 . The local cache database  32  stores the sales system&#39;s local copy of the central data objects that are maintained by the central system  20 . Each data object stored in the local cache database  32  includes the version identifier assigned by the central system  20 . The system database  34  stores data that is maintained and modified exclusively by the sales system  30 . This may include customer names and addresses, payment information, etc. In other implementations, the sales system  30  may include additional databases. These databases could store replicated data, such as the data objects stored by the local cache database  32 , or could store other information used exclusively by the sales system  30 .  
         [0020]     The business application  36  of the sales system  30  executes applications or algorithms and creates business documents as discussed previously. In the  FIG. 1  example, the sales system  30  generates business documents using the data stored in the local cache database  32  and system database  34 . In other examples, additional information from other databases may also be used. Once the business documents are generated and processed by the applications in the business application  36 , they are sent as part of a message to the other systems in the network for further processing. The messages are sent to the other systems through the message transport layer  38  and network  12 . In this example, the messages are sent to the other systems asynchronously; however, the messages may also be transmitted between the systems using other suitable methods. The transport layer  38  also receives, from the central system  20 , messages that contain the changes that have been made to the central data objects. The transport layer  38  also receives messages from the other systems in the network, such as the logistics system  40 .  
         [0021]     In the  FIG. 1  example, the logistics system  40  is similar to the sales system  30  in that it includes a local cache database  42 , a system database  44 , a business application  46 , and a message transport layer  48 . The local cache database  42  stores the logistics system&#39;s local copy of the central data objects that is used in conjunction with the system database  44  to execute business applications and process business documents in a manner similar to the sales system  30 . Messages are sent and received by the logistics system  40  via message transport layer  48 .  
         [0022]      FIG. 2  is a diagram of an example message format that may be used for messages transferred between the systems of  FIG. 1 . The message format may be best described in the context of the  FIG. 1  example where a customer order is generated by the sales system  30  and is sent to the logistics system  40  for further processing. In the  FIG. 2  example, the message  60  includes a destination system identifier  62 , which identifies the system or systems to which the message is being transferred. A document identifier  64  is also included in the message. The document identifier  64  identifies the type of document being transmitted, such as a customer order, rather than a delivery order, an invoice, or some other type of document.  
         [0023]     The message  60  also includes a data object identifier  66 . The data object identifier  66  identifies the data object or data objects that were used to generate the document being transmitted. Alternatively, the data objects themselves, rather than an identifier, may be included in the message. Data object version identifiers  68  for each data object are also included. The identification of the data objects and the corresponding version identifiers allow the receiving system to determine whether its local cache database includes the most recent version of the data objects, as is discussed in greater detail below. The message also includes a payload  70 . The payload  70  may include values and information corresponding to the transmitted document, the data objects, or any relevant information stored in the system&#39;s own database, such as the sales system database  34 . In the customer order example, the payload may include information such as the customer&#39;s name and address, the item or items that have been purchased, delivery instructions, etc. In other examples, the payload  70  may be omitted.  
         [0024]      FIG. 3  is a block diagram of a computer system  80  that may be included in the systems  20 ,  30 , and  40  of  FIG. 1 . The computer system  80  of the  FIG. 3  example includes program memory  82  containing a message program  84  and an updating program  86 . The message program  84  contains instructions that when loaded into RAM  90  and executed by processor  88  generate a message for transmission to another system in the network (the message being shown in  FIG. 2 ). The processor  88  may obtain the data objects and version identifiers included in the  FIG. 2  message from local cache database  92 . The message may then be stored in RAM  90  until it is output by an Input/Output module  94  to a message transport layer (shown in  FIG. 1 ). Messages may also be received through the Input/Output module  94  and stored in RAM  90  for processing. The updating program  86  contains instructions that when loaded into RAM  90  and executed by processor  88  processes the received messages stored in RAM  90  and, if necessary, updates the data objects stored in local cache database  92 .  
         [0025]      FIG. 4  is a flowchart depicting a method of updating a system&#39;s local cache database before processing a business document. The  FIG. 4  example illustrates the method  100  using the customer order example of  FIG. 1 . The method  100  begins at step  110  with the generation of a document (i.e., customer order) by the sales system  30  containing information relating to a data object, as described previously. Next, the sales system  30  sends a message to the logistics system  40  at step  120 . The message contains a document identifier, a data object identifier, and a version identifier, for example, a version number of the data object used by the sales system to generate the document, as shown in  FIG. 2 . In examples where more than one data object is used by the sales system  30  to generate the document, the message contains the additional data objects and corresponding version numbers. At step  130 , the logistics system  140  receives the message from the sales system containing the document and related data object information.  
         [0026]     Upon receipt of the message containing the document at step  140 , the logistics system  40  compares the version numbers of the data objects identified in the message with the version numbers of the corresponding data objects stored in the logistic system&#39;s local cache database  42 . If it is determined at step  150  that the versions of the data objects are equal or the same, then the logistics system  40  proceeds by processing the document at step  200 . If, on the other hand, the version numbers are not the same, then the logistics system  40  must determine at step  160  if the local copy of the data object stored in its local cache database  42  is stale or if the sales system  30  used a stale version of the data object to generate the document. The logistics system  40  can make this determination by comparing the version numbers of the data objects.  
         [0027]     If the version of the data objects in the logistics system&#39;s local cache is more recent than the version of the data objects set forth in the message, then a process may be performed at step  170  to replace the information generated by the sales system  30  using the stale data object information with updated data object information. This process may be performed by sending a message to the sales system  30  indicating that a more recent version of the data objects exist and having the sales system  30  update its local cache  32  and regenerate the document. Alternatively, the logistics system  40  could update the information in the document and send a message to the sales system  30  indicating that an update of the data objects in the sale system&#39;s local cache database  32  is necessary. Once the stale data object information in the document has been replaced and the potential conflicts have been resolved, the logistics system  40  can process the document at step  200 .  
         [0028]     Alternatively, if the logistics system  40  determines at step  160  that the version of the data objects in its local cache database  42  are stale, then the logistics system  40  requests a more recent version of the data objects from the central database  22  at step  180 . Once the logistics system  40  has received the most recent version of the data objects at step  190 , it may proceed by processing the document at step  200 .  
         [0029]     A number of embodiments of the invention have been described. Nevertheless, it will be understood that various modifications may be made without departing from the spirit and scope of the invention. For example, the method of updating the local cache database of a system is applicable to networks with more than two application systems. The method may also be used in networks that have conflicts between the local cache databases of the various systems, but do not employ asynchronous messaging. Accordingly, other embodiments are within the scope of the following claims.