A method of coupling asynchronous process interaction between computer systems integrated within an overall system of interconnected systems includes receiving a set of information describing an invocation call for execution of a first process on a first system integrated within the overall system; correlating a first callback argument received upon completion of the first process that includes a first unique identifier for the first process generated by the first system with the set of information according to the first unique identifier for the first process; and sending a notification message to a callback endpoint in a second process implemented to receive notification upon completion of the first process by the first system indicating completion of the first process. The second process executing on a second system integrated within the overall system makes the invocation call. The set of information specifies the first unique identifier and the callback endpoint.
|
1. A method of coupling asynchronous process interaction between computer systems integrated within an overall system of interconnected systems, the method comprising:
receiving a set of information describing an invocation call for execution of a first process on a first system integrated within the overall system, a second process executing on a second system integrated within the overall system making the invocation call, the set of information specifying a first unique identifier for the first process generated by the first system and a callback endpoint in the second process implemented to receive notification upon completion of the first process by the first system;
correlating a first callback argument received upon completion of the first process that includes the first unique identifier for the first process with the set of information according to the first unique identifier for the first process;
translating each callback argument received upon completion of each process invoked for execution on each system integrated within the overall system into a corresponding callback record according to a common protocol, further comprising adding each callback record to a callback queue, and wherein each callback record includes a unique identifier generated for the corresponding process sending the callback argument by the system on which the process is invoked for execution; and
sending a notification message to the callback endpoint in the second process specified in the set of information indicating completion of the first process;
wherein the set of information describing the invocation call includes a first timeout event for the first process, and wherein, if the first translated callback record is not located in the callback queue upon receiving the set of information, correlating the first callback argument with the set of information comprises periodically scanning the correlation record data store according to the first unique identifier for the first process to determine a status of the first timeout event in the first event correlation record, accessing a first interface mechanism implemented by the first system to periodically poll the first system to receive a current execution state of the first process on the first system according to the first unique identifier for the first process upon the status of the first timeout event being determined to be expired during periodic scanning of the correlation record data store, constructing an emulation of the first callback record for the first process upon the current execution state of the first process being determined to be completed during periodic polling of the first system, and correlating the emulated first callback record with the first event correlation record according to the first unique identifier for the first process.
16. A non-transitory computer-usable medium having computer readable instructions stored thereon for execution by a processor to perform a method of coupling asynchronous process interaction between computer systems integrated within an overall system of interconnected systems, the method comprising:
receiving a set of information describing an invocation call for execution of a first process on a first system integrated within the overall system, a second process executing on a second system integrated within the overall system making the invocation call, the set of information specifying a first unique identifier for the first process generated by the first system and a callback endpoint in the second process implemented to receive notification upon completion of the first process by the first system;
correlating a first callback argument received upon completion of the first process that includes the first unique identifier for the first process with the set of information according to the first unique identifier for the first process;
translating each callback argument received upon completion of each process invoked for execution on each system integrated within the overall system into a corresponding callback record according to a common protocol, further comprising adding each callback record to a callback queue, and wherein each callback record includes a unique identifier generated for the corresponding process sending the callback argument by the system on which the process is invoked for execution; and
sending a notification message to the callback endpoint in the second process specified in the set of information indicating completion of the first process;
wherein the set of information describing the invocation call includes a first timeout event for the first process, and wherein, if the first translated callback record is not located in the callback queue upon receiving the set of information, correlating the first callback argument with the set of information comprises periodically scanning the correlation record data store according to the first unique identifier for the first process to determine a status of the first timeout event in the first event correlation record, accessing a first interface mechanism implemented by the first system to periodically poll the first system to receive a current execution state of the first process on the first system according to the first unique identifier for the first process upon the status of the first timeout event being determined to be expired during periodic scanning of the correlation record data store, constructing an emulation of the first callback record for the first process upon the current execution state of the first process being determined to be completed during periodic polling of the first system, and correlating the emulated first callback record with the first event correlation record according to the first unique identifier for the first process.
17. A data processing system comprising:
at least one processor;
a random access memory for storing data and programs for execution by the at least one processor; and
computer readable instructions stored in the random access memory for execution by the at least one processor to perform a method of coupling asynchronous process interaction between computer systems integrated within an overall system of interconnected systems, the method comprising:
receiving a set of information describing an invocation call for execution of a first process on a first system integrated within the overall system, a second process executing on a second system integrated within the overall system making the invocation call, the set of information specifying a first unique identifier for the first process generated by the first system and a callback endpoint in the second process implemented to receive notification upon completion of the first process by the first system;
correlating a first callback argument received upon completion of the first process that includes the first unique identifier for the first process with the set of information according to the first unique identifier for the first process;
translating each callback argument received upon completion of each process invoked for execution on each system integrated within the overall system into a corresponding callback record according to a common protocol, further comprising adding each callback record to a callback queue, and wherein each callback record includes a unique identifier generated for the corresponding process sending the callback argument by the system on which the process is invoked for execution; and
sending a notification message to the callback endpoint in the second process specified in the set of information indicating completion of the first process;
wherein the set of information describing the invocation call includes a first timeout event for the first process, and wherein, if the first translated callback record is not located in the callback queue upon receiving the set of information, correlating the first callback argument with the set of information comprises periodically scanning the correlation record data store according to the first unique identifier for the first process to determine a status of the first timeout event in the first event correlation record, accessing a first interface mechanism implemented by the first system to periodically poll the first system to receive a current execution state of the first process on the first system according to the first unique identifier for the first process upon the status of the first timeout event being determined to be expired during periodic scanning of the correlation record data store, constructing an emulation of the first callback record for the first process upon the current execution state of the first process being determined to be completed during periodic polling of the first system, and correlating the emulated first callback record with the first event correlation record according to the first unique identifier for the first process.
12. A method of coupling asynchronous process interaction between computer systems integrated within an overall system of interconnected systems, the method comprising:
receiving a set of information describing an invocation call for execution of a first process on a first system integrated within the overall system, a second process executing on a second system integrated within the overall system making the invocation call, the set of information specifying a first unique identifier for the first process generated by the first system and a callback endpoint in the second process implemented to receive notification upon completion of the first process by the first system;
correlating a first callback argument received upon completion of the first process that includes the first unique identifier for the first process with the set of information according to the first unique identifier for the first process;
sending a notification message to the callback endpoint in the second process specified in the set of information indicating completion of the first process;
translating each callback argument received upon completion of each process invoked for execution on each system integrated within the overall system into a corresponding callback record according to a common protocol, further comprising adding each callback record to a callback queue, and wherein each callback record includes a unique identifier generated for the corresponding process sending the callback argument by the system on which the process is invoked for execution, wherein correlating the first callback argument with the set of information comprises receiving the first callback argument from the first system upon completion of the first process, translating the first callback argument into a first callback record according to the common protocol, and correlating the first callback record with the set of information according to the first unique identifier for the first process;
analyzing the callback queue to attempt locate the first callback record according to the first unique identifier for the first process upon receiving the set of information;
creating a first event correlation record for the first process that includes the set of information if the first callback record is not located in the callback queue upon receiving the set of information, and wherein correlating the first callback argument with the set of information comprises correlating the first callback record with the first event correlation record according to the first unique identifier for the first process if the first callback record is not located in the callback queue upon receiving the set of information; and
storing the first event correlation record in a correlation record data store if the first callback record is not located in the callback queue upon receiving the set of information;
wherein the correlation record data store is maintained by a process correlation management module, the process correlation management module providing a second interface mechanism accessible to perform a specified set of addition, deletion, and modification operations on event correlation records maintained in the correlation record data store.
10. A method of coupling asynchronous process interaction between computer systems integrated within an overall system of interconnected systems, the method comprising:
receiving a set of information describing an invocation call for execution of a first process on a first system integrated within the overall system, a second process executing on a second system integrated within the overall system making the invocation call, the set of information specifying a first unique identifier for the first process generated by the first system and a callback endpoint in the second process implemented to receive notification upon completion of the first process by the first system;
correlating a first callback argument received upon completion of the first process that includes the first unique identifier for the first process with the set of information according to the first unique identifier for the first process;
sending a notification message to the callback endpoint in the second process specified in the set of information indicating completion of the first process;
translating each callback argument received upon completion of each process invoked for execution on each system integrated within the overall system into a corresponding callback record according to a common protocol, further comprising adding each callback record to a callback queue, and wherein each callback record includes a unique identifier generated for the corresponding process sending the callback argument by the system on which the process is invoked for execution, wherein correlating the first callback argument with the set of information comprises receiving the first callback argument from the first system upon completion of the first process, translating the first callback argument into a first callback record according to the common protocol, and correlating the first callback record with the set of information according to the first unique identifier for the first process;
analyzing the callback queue to attempt locate the first callback record according to the first unique identifier for the first process upon receiving the set of information;
creating a first event correlation record for the first process that includes the set of information if the first callback record is not located in the callback queue upon receiving the set of information, and wherein correlating the first callback argument with the set of information comprises correlating the first callback record with the first event correlation record according to the first unique identifier for the first process if the first callback record is not located in the callback queue upon receiving the set of information; and
storing the first event correlation record in a correlation record data store if the first callback record is not located in the callback queue upon receiving the set of information;
wherein the first system is not implemented to provide the first callback argument upon completion of the first process, and wherein correlating the first callback argument with the first set of information comprises accessing a first interface mechanism implemented by the first system to periodically poll the first system to receive a current execution state of the first process on the first system according to the first unique identifier for the first process, constructing an emulation of the first callback record for the first process upon the current execution state of the first process being determined to be completed during periodic polling of the first system, and correlating the emulated first callback record with the first event correlation record according to the first unique identifier for the first process.
2. The method of
3. The method of
4. The method of
5. The method of
6. The method of
7. The method of
8. The method of
9. The method of
11. The method of
13. The method of
14. The method of
15. The method of
|
Exemplary embodiments of the present invention relate to systems of interconnected computer systems, and more particularly, to asynchronous process interaction between computer systems integrated within an overall system of interconnected systems.
In information technology (IT) systems that integrate multiple interconnected, heterogeneous software systems in which the executing process flows and tasks for each individual system are interrelated with the internal state of the overall system, the interconnected systems have a need to interact with one another. In one aspect of interaction between the interconnected systems, the internal states for the processes being executed by the different system are dependent on process flows and tasks executing throughout the overall system (that is, the internal state for a process being executed by one of the interconnected systems can change as a result of the execution of process flows and tasks on other systems interconnected within the overall system). In another aspect, the execution of process flows and tasks by the interconnected systems is dependent on the state of the overall system (for example, a dependency where a system must be in a certain state for a process flow to continue). Nevertheless, each of the interconnected systems integrated within the overall system may have its own particular implementation for state handling, inter-process communication, and synchronous and asynchronous job execution. As a result, interfaces must be implemented to provide for communication between the systems, for example, where two systems need to communicate with one another to track the progress of external states, to wait for the end of external tasks to synchronize their own processing, or to be notified by event messages transmitted by external tasks upon a state change.
One common IT architectural implementation for systems of multiple, interconnected computer systems that has been increasing in importance recently provides for the systems to be integrated so as to contribute to a higher-level business flow. In systems implemented according to this architecture, the execution can be described according to the client-server model of computer process interaction. More particularly, a high-level process flow is executed by a control flow system (the client system), and the individual stages of the high-level process flow are performed by other individual systems (the server systems) integrated within the overall system. In particular, at various points during execution of the high-level process flow, the control flow client system will invoke another of the interconnected systems to execute the actual functionality for the concrete operations performed during a certain stage in the high-level process flow. The operations performed during a certain stage in the high-level process flow by the invoked system may involve an isolated, primitive task, or the invoked system may operate in a manner similar to the control flow client system to direct execution of a complex process flow in which the system directing the complex process flow (now viewed as the client system) will invoke another of the interconnected systems as a server system to execute the actual functionality for the concrete operations performed during a certain stage in the complex process flow. In this manner, the high-level business process flow performed by the overall system integrating the heterogeneous systems can be executed using a nested chain of interconnected systems executing higher-level functionality to act as client systems to systems that act as server systems to provide lower-level functionality.
In existing implementations of such integrated systems, the needed interconnections between the individual systems are provided for using a synchronous messaging pattern (for example, the control flow execution directed by the client system “waits” for each call made to another system to return before continuing to execute). The correlation between the combined flows performed in the individual stages as described above is performed unique task identifiers such as IDs, tickets, etc. For example, when a system directing a control flow acts as a client to invoke another system as a server to execute some task, the server system may return a ticket that identifies the specific instance of the invoked process being executed, and the client then waits for the specific process instance identified by the returned ticket to complete. Where the interconnected systems in such a system are homogeneous (same type, same vendor, etc.), the coupling and correlation of the interrelated tasks and flows provided by each interacting system can be performed quite easily because the homogeneous systems will generally use the same mechanisms for identifying tasks or for notifying one another. This is particularly true where the combined flows are executed within a single system.
The coupling and correlation in an implementation providing a heterogeneous system of interconnected systems, however, imposes implementation challenges because the mechanisms of task identification and notification differ among interacting systems. With respect to task identification, it will often be the case that completely different information domains are used for identifying tasks by the different integrated systems. Domains of different interconnected systems are not trivial to correlate. In particular, with respect to notification mechanisms, it is a challenge to couple the communication channels used by the systems to one another because they may rely on different, incompatible protocols for communication. In certain situations, for example, the callback protocols offered by a system acting as a server may be different from those understood by the calling system acting as the client. In other situations, a system called as a server may not even be configured to provide any notification mechanisms, in which case the systems acting as clients must actively poll the server system for task completion. Situations such as these can involve a large overhead cost for developing the binding implementation.
An exemplary embodiment of a method of coupling asynchronous process interaction between computer systems integrated within an overall system of interconnected systems includes receiving a set of information describing an invocation call for execution of a first process on a first system integrated within the overall system; correlating a first callback argument received upon completion of the first process that includes a first unique identifier for the first process generated by the first system with the set of information according to the first unique identifier for the first process; and sending a notification message to a callback endpoint in a second process implemented to receive notification upon completion of the first process by the first system indicating completion of the first process. The second process executing on a second system integrated within the overall system makes the invocation call. The set of information specifies the first unique identifier and the callback endpoint.
Exemplary embodiments of the present invention that are related to computer program products and data processing systems corresponding to the above-summarized method are also described and claimed herein.
Additional features and advantages are realized through the techniques of the present invention. Other exemplary embodiments and aspects of the present invention are described in detail herein and are considered a part of the claimed invention. For a better understanding of the present invention with advantages and features, refer to the description and to the drawings.
The subject matter that is regarded as the present invention is particularly pointed out and distinctly claimed in the claims at the conclusion of the specification. The foregoing and other objects, features, and advantages of the various embodiments of the present invention are apparent from the following detailed description of exemplary embodiments taken in conjunction with the accompanying drawings in which:
The detailed description explains exemplary embodiments of the present invention, together with advantages and features, by way of example with reference to the drawings. The flow diagrams depicted herein are just examples. There may be many variations to these diagrams or the steps (or operations) described therein without departing from the spirit of the present invention. For instance, the steps may be performed in a differing order, or steps may be added, deleted, or modified. All of these variations are considered a part of the claimed invention.
While the specification concludes with claims defining the features of the present invention that are regarded as novel, exemplary will be better understood from a consideration of the detailed description in conjunction with the drawings. It is of course to be understood that the embodiments described herein are merely exemplary, which can be embodied in various forms. Therefore, specific structural and functional details disclosed in relation to the exemplary embodiments described herein are not to be interpreted as limiting, but merely as a representative basis for teaching one skilled in the art to variously employ embodiments in virtually any appropriate form, as well as any suitable modifications that may be made to these embodiments. Further, the terms and phrases used herein are not intended to be limiting but rather to provide an understandable description of the present invention. As used herein, the singular forms “a”, “an”, and “the” are intended to include the plural forms as well, unless the content clearly indicates otherwise. It will be further understood that the terms “comprises”, “includes”, and “comprising”, when used in this specification, specify the presence of stated features, integers, steps, operations, elements, components, and/or groups thereof.
Exemplary embodiments of the present invention can be implemented to provide an asynchronous coupling mechanism for performing translation of messages required for correlating process and flow states in state-aware systems of multiple, interconnected computer systems. Exemplary embodiments can be implemented to provide a resource that can be incorporated within such a system of interconnected systems as messaging middleware to enable heterogeneous systems integrated within the system to couple with one another by providing for correlation between the internal and external process and flow states, thereby providing increased interoperability, portability, and flexibility for the system.
Exemplary embodiments of the present invention as will be described herein can be implemented using one or more program modules and data storage units. As used herein, the term “modules”, “program modules”, “components”, “systems”, “tools”, “utilities”, and the like include routines, programs, objects, components, data structures, and instructions, or instructions sets, and so forth that perform particular tasks or implement particular abstract data types. As can be appreciated, the modules refer to computer-related entities that can be implemented as software, hardware, firmware and/or other suitable components that provide the described functionality, and which may be loaded into memory of a machine embodying an exemplary embodiment of the present invention. Aspects of the modules may be written in a variety of programming languages, such as C, C++, Java, etc. As used herein, the terms “data storage unit,” “data store”, “storage unit”, and the like can refer to any suitable memory device that may be used for storing data, including manual files, machine readable files, and databases. The functionality provided by exemplary embodiments can be combined and/or further partitioned. The modules and/or storage units can all be implemented and run on the same computing system (for example, the exemplary computer system illustrated in
Referring now to
Of course, it should be noted that
As depicted in
In the present exemplary embodiment, callback interface 120 is pluggable according to the interfaces implemented for communication by each interconnected system, and polling interface 140 is pluggable according to the interfaces implemented by each interconnected system for providing state information. That is, callback interface 120 and polling interface 140 are implemented with the ability to interact with heterogeneous, interconnected systems through plug-in handlers each configured according to the protocols of a particular type of interconnected system. This affords developers with the ability to easily adapt coupling system 100 by implementing new or custom protocol schemes according to the different types of interconnected systems of the overall system within which the coupling system is incorporated.
Correlation manager 110 is configured to register with each interconnected system of the overall system within which exemplary coupling mechanism 100 is incorporated to receive information from each system on tasks or processes invoked by that system and the invoking processes, as well as callback arguments received from each system executing an invoked process. The information received from each system for each process invoked by that system includes a unique identifier generated for the invoked process generated by the server system executing the invoked process and a callback endpoint in the invoking process being executed by the client. The callback endpoint is implemented within the invoking process to receive notification upon completion of the invoked process by the server system. The callback arguments passed from the invoked server systems are received by callback interface 120. Correlation manager 110 is further configured to store the information describing the interrelated states of pairs of interacting systems, which may be heterogeneous, acting in client and server roles to one another in the overall system within which the coupling mechanism is incorporated, and to use this information to correlate the callback arguments from the invoked systems acting as servers to the invoking systems acting as clients. The information utilized by correlation manager 110 to correlate callback arguments to the originating process calls can include unique identifiers for the invoked processes provided by the systems acting in the role of servers. These unique identifiers can be included as callback metadata in the event correlation record stored in correlation record data store 112 by correlation manager 110 for each invoked process. Correlation manager 110 is further configured to perform cleanup of correlation record data store 112 to delete old or expired event correlation records.
Because “call before wait” situations, which occur where an invoked process provides a callback argument for an invocation call before correlation manager 110 has stored a corresponding event correlation record for the invocation call in correlation record data store 112, can arise, the correlation manager stores each incoming callback argument it receives in a callback queue 114. Thus, each incoming callback argument is made persistent in callback queue 114, which provides an asynchronous communication mechanism. Callback queue 114 can be implemented to provide enhanced resilience functionality to ensure that callback arguments are not lost, for example, in the event of a system failure.
Upon storing an event correlation record for an invoked process in correlation record data store 112, correlation manager 110 steps through the callback arguments stored in callback queue 114 to attempt to identify a callback argument that corresponds to the inserted event correlation record. If correlation manager 110 locates such a corresponding callback argument in callback queue 114, the correlation manager processes this callback argument in the same manner as if the callback argument had been sent after storing the event correlation record corresponding to the invoked process in correlation record data store 112. As a result, correlation manager 110 is configured to avoid problems caused by lost callback arguments in “call before wait” situations.
In the present exemplary embodiment, upon local system 102 making an asynchronous call invoking external system 104 to execute a particular task, the local system receives a reply message from the external system that contains a unique identifier for the requested task and transfers this unique identifier to correlation manager 110. Upon receiving this information, correlation manager 110 creates an event correlation record that includes the unique identifier for the task provided by external system 104 in a set of callback metadata for the invoked task. Correlation manager 110 then determines whether a callback argument for the invoked task has already been received by attempting to locate a callback argument identified by the unique identifier provided by external system 104 for the invoked task by analyzing callback queue 114. If a callback argument for the requested task is located in callback queue 114, correlation manager 110 notifies the registered end point specified in the event correlation record for the requested task and discards the event correlation record for the requested task. If a callback argument for the requested task is not located in callback queue 114, correlation manager 110 stores the event correlation record in correlation record data store 112. Upon the arrival of callback arguments for the invoked task in callback queue 114 (transmitted from either external system 104 or callback emulator 130, as will be described), correlation manager 110 is configured to perform a scan of correlation record data store 112 for the event correlation record waiting on the received callback arguments and transfer a notification message to the registered end point specified as waiting for the callback in the event correlation record corresponding to the received callback argument. If no event correlation record for an invoked task is located in correlation record data store 112 that corresponds to the callback argument, the callback argument is added to callback queue 114.
In exemplary coupling mechanism 100, callback emulator 130 is configured to periodically poll the states of processes being executed by the interconnected systems at a constant time interval and to use the information gathered by during polling to provide state information to correlation manager 110. The frequency of the periodic polling performed by callback emulator 130 is controlled by a timer 132 and is configurable according to the invoked tasks being monitored. Because some systems integrated within the system within which coupling mechanism 100 is incorporated may not be implemented to send callback events to correlation manager 110, callback emulator 130 is configured to emulate callback arguments provided for processes invoked on systems that are not capable of sending them. That is, where a system acting in the role of a server provides an interface that allows for the current execution state of the system to be supplied, callback emulator 130 can periodically call the interface of the system to obtain the execution state information for a particular task, construct an emulation of a callback argument from the system for task upon recognizing an indication that the task has completed in the current execution state information provided by the system, and provide the emulated callback argument to correlation manager 110 by adding the emulated callback argument to callback queue 114. Callback emulator 130 is configured to be adapted to the particular interface methods implemented by each system integrated within the system within which coupling mechanism 100 is incorporated, and the callback emulator utilizes the metadata identifier provided by the systems executing the invoked process to identify the particular tasks for each emulated callback argument the callback emulator provides to correlation manager 110. In this manner, from the perspective of correlation manager 110 within coupling mechanism 100, callback emulator 130 is viewed as acting like the server system to transfer the callback argument to the correlation manager, and, upon receiving an emulated callback argument from the callback emulator, the correlation manager makes these emulated callback arguments persistent by adding them to callback queue 114 in the same manner as when collecting the actual callback arguments received from the systems that are implemented to provide callback arguments. Callback emulator 130 is thereby transparent to correlation manager 110.
In state-aware systems of multiple, interconnected computing systems within which coupling mechanism 100 is configured to be incorporated, a callback argument sent from a system acting a server to perform a particular task requested by an invocation call from a system acting as a client are sometimes lost due to, for example, network problems or system outages. Request monitor 150 is implemented to aid the system within which coupling mechanism 100 is incorporated in recovering from these situations. More particularly, request monitor 150 is controlled by a timer 152 to periodically access correlation manager 110 to perform a scan of the event correlation records in correlation record data store 112 to identify callback arguments indicated as being lost. When a system acting as a client invokes another system to perform a particular task, the upper time limit within which the task is normally expected to have been completed (that is, the upper time limit provided in a timeout event as configured by the developer according to expectations regarding the requested task) is provided by the invoked system. Where the time period for this upper time limit has expired for a requested task having a corresponding event correlation record in correlation record data store 112 for which a callback argument has not been received, request monitor 150 is configured to identify the callback argument corresponding to event correlation record as being lost. Request monitor 150 is configured to recover from identified lost callback arguments by employing callback emulator 130 to call the appropriate interface method to request the appropriate state of the tasks requested by the originating calls from the underlying systems that correspond to the lost callback arguments.
Referring now to
At stage 3 in the example workflow depicted in
At stage 5, callback emulator 130 periodically accesses correlation manager 110 to perform a scan of correlation record data store 112 to identify each requested task within the overall system that requires the particular system executing the task to be polled for the state of the task. More specifically, callback emulator 130 identifies each event correlation record in correlation record data store 112 for which a corresponding callback argument has not yet been received from the process corresponding to the event correlation record (for example, callback emulator 130 may be configured to identify each event correlation record for which the current state of execution for the corresponding task is indicated as having the state ‘STARTED’). Following each periodic scan of correlation record data store 112, callback emulator 130 is configured to poll each particular system executing a process corresponding to an event correlation record identified at stage 5 for the state of the process. A timer 132 controls the frequency of the periodic scanning of correlation record data store 112 and polling performed by callback emulator. For example, at stage 6 in
Alternatively, where external system 104 is configured with a mechanism to provide callback arguments, upon completion of execution of the process requested by process 106 on the external system, callback interface 120, at stage 8, receives the callback argument send from the external system for the completed process. Callback interface 120 is configured to translate the callback arguments passed from systems executing invoked processes into a protocol understood by the invoking systems. At stage 9, callback interface 120 transmits the callback argument to callback queue 114. Correlation manager 110 then correlates this callback to the corresponding event correlation record in correlation record data store 112 and updates the event correlation record corresponding to the completed task in correlation record data store 112 (for example, the state for the entry is modified to ‘FINISHED’). Upon the event correlation record corresponding to the task requested by process 106 being updated to indicate that the task has completed (either at stage 7 or stage 9 in the example operation depicted in
Referring now to
Referring now to
Referring now to
In exemplary process 500, at block 505, the invoking process is executing on the client. At block 510, the invoking process sends the invocation call to the server and enters a wait state on the client. At block 515, the server receives the invocation call, sends a response message to the client that the invoked call has been received, and begins executing the invoked task. The response includes a unique identifier generated for the invoked task by the server. At block 520, the server completes execution of the invoked task and sends a callback argument for the task that includes a unique identifier generated for the invoked task by the server. At block 525, the callback argument is translated into a common protocol. At block 530, the callback argument is made persistent in a callback queue. At block 535, information on the invoking process, the invoked task, and the unique identifier included in the response from the server is received from the client. At block 540, the callback queue is analyzed to identify the callback argument for the invoked task by mapping the unique identifier for the task received at block 535. At block 545, the callback argument is provided to the client. At block 550, the client resumes execution of the invoking process.
In the preceding description, for purposes of explanation, numerous specific details are set forth in order to provide a thorough understanding of the described exemplary embodiments. Nevertheless, one skilled in the art will appreciate that many other embodiments may be practiced without these specific details and structural, logical, and electrical changes may be made.
Some portions of the exemplary embodiments described above are presented in terms of algorithms and symbolic representations of operations on data bits within a processor-based system. The operations are those requiring physical manipulations of physical quantities. These quantities may take the form of electrical, magnetic, optical, or other physical signals capable of being stored, transferred, combined, compared, and otherwise manipulated, and are referred to, principally for reasons of common usage, as bits, values, elements, symbols, characters, terms, numbers, or the like. Nevertheless, it should be noted that all of these and similar terms are to be associated with the appropriate physical quantities and are merely convenient labels applied to these quantities. Unless specifically stated otherwise as apparent from the description, terms such as “executing” or “processing” or “computing” or “calculating” or “determining” or the like, may refer to the action and processes of a processor-based system, or similar electronic computing device, that manipulates and transforms data represented as physical quantities within the processor-based system's storage into other data similarly represented or other such information storage, transmission or display devices.
Exemplary embodiments of the present invention can be realized in hardware, software, or a combination of hardware and software. Exemplary embodiments can be realized in a centralized fashion in one computer system or in a distributed fashion where different elements are spread across several interconnected computer systems. Any kind of computer system—or other apparatus adapted for carrying out the methods described herein—is suited. A typical combination of hardware and software could be a general-purpose computer system with a computer program that, when being loaded and executed, controls the computer system such that it carries out the methods described herein.
Exemplary embodiments of the present invention can also be embedded in a computer program product, which comprises all the features enabling the implementation of the methods described herein, and which—when loaded in a computer system—is able to carry out these methods. Computer program means or computer program as used in the present invention indicates any expression, in any language, code or notation, of a set of instructions intended to cause a system having an information processing capability to perform a particular function either directly or after either or both of the following (a) conversion to another language, code or, notation; and (b) reproduction in a different material form.
A computer system in which exemplary embodiments can be implemented may include, inter alia, one or more computers and at least a computer program product on a computer readable medium, allowing a computer system, to read data, instructions, messages or message packets, and other computer readable information from the computer readable medium. The computer readable medium may include non-volatile memory, such as ROM, Flash memory, Disk drive memory, CD-ROM, and other permanent storage. Additionally, a computer readable medium may include, for example, volatile storage such as RAM, buffers, cache memory, and network circuits. Furthermore, the computer readable medium may comprise computer readable information in a transitory state medium such as a network link and/or a network interface including a wired network or a wireless network that allow a computer system to read such computer readable information.
Exemplary computer system 600 can include a display interface 608 that forwards graphics, text, and other data from the communication infrastructure 602 (or from a frame buffer not shown) for display on a display unit 610. Computer system 600 also includes a main memory 606, which can be random access memory (RAM), and may also include a secondary memory 612. Secondary memory 612 may include, for example, a hard disk drive 614 and/or a removable storage drive 616, representing a floppy disk drive, a magnetic tape drive, an optical disk drive, etc. Removable storage drive 616 reads from and/or writes to a removable storage unit 618 in a manner well known to those having ordinary skill in the art. Removable storage unit 618, represents, for example, a floppy disk, magnetic tape, optical disk, etc. which is read by and written to by removable storage drive 616. As will be appreciated, removable storage unit 618 includes a computer usable storage medium having stored therein computer software and/or data.
In exemplary embodiments, secondary memory 612 may include other similar means for allowing computer programs or other instructions to be loaded into the computer system. Such means may include, for example, a removable storage unit 622 and an interface 620. Examples of such may include a program cartridge and cartridge interface (such as that found in video game devices), a removable memory chip (such as an EPROM, or PROM) and associated socket, and other removable storage units 622 and interfaces 620 which allow software and data to be transferred from the removable storage unit 622 to computer system 600.
Computer system 600 may also include a communications interface 624. Communications interface 624 allows software and data to be transferred between the computer system and external devices. Examples of communications interface 624 may include a modem, a network interface (such as an Ethernet card), a communications port, a PCMCIA slot and card, etc. Software and data transferred via communications interface 624 are in the form of signals which may be, for example, electronic, electromagnetic, optical, or other signals capable of being received by communications interface 624. These signals are provided to communications interface 624 via a communications path (that is, channel) 626. Channel 626 carries signals and may be implemented using wire or cable, fiber optics, a phone line, a cellular phone link, an RF link, and/or other communications channels.
In this document, the terms “computer program medium,” “computer usable medium,” and “computer readable medium” are used to generally refer to media such as main memory 606 and secondary memory 612, removable storage drive 616, a hard disk installed in hard disk drive 614, and signals. These computer program products are means for providing software to the computer system. The computer readable medium allows the computer system to read data, instructions, messages or message packets, and other computer readable information from the computer readable medium. The computer readable medium, for example, may include non-volatile memory, such as Floppy, ROM, Flash memory, Disk drive memory, CD-ROM, and other permanent storage. It can be used, for example, to transport information, such as data and computer instructions, between computer systems. Furthermore, the computer readable medium may comprise computer readable information in a transitory state medium such as a network link and/or a network interface including a wired network or a wireless network that allow a computer to read such computer readable information.
Computer programs (also called computer control logic) are stored in main memory 606 and/or secondary memory 612. Computer programs may also be received via communications interface 624. Such computer programs, when executed, can enable the computer system to perform the features of exemplary embodiments of the present invention as discussed herein. In particular, the computer programs, when executed, enable processor 604 to perform the features of computer system 600. Accordingly, such computer programs represent controllers of the computer system.
Although exemplary embodiments of the present invention have been described in detail, the disclosure is not intended to be exhaustive or limited to the described embodiments. It should be understood that various changes, substitutions and alterations could be made thereto without departing from spirit and scope of the inventions as defined by the appended claims. Variations described for exemplary embodiments of the present invention can be realized in any combination desirable for each particular application. Thus particular limitations, and/or embodiment enhancements described herein, which may have particular advantages to a particular application, need not be used for all applications. Also, not all limitations need be implemented in methods, systems, and/or apparatuses including one or more concepts described with relation to exemplary embodiments of the present invention.
The exemplary embodiments presented herein were chosen and described to best explain the principles of the various embodiments of the present invention and the practical application, and to enable others of ordinary skill in the art to understand the invention. It will be understood that those skilled in the art, both now and in the future, may make various modifications to the exemplary embodiments described herein without departing from the spirit and the scope of the present invention as set forth in the following claims. These following claims should be construed to maintain the proper protection for the various embodiments of the present invention.
Illgner-Kurz, Monika, Spatzier, Thomas, Schmid, Bernhard, Ochs, Georg, Werner, Jeremias, Bachhuber-Haller, Christoph, Henke, Martin
Patent | Priority | Assignee | Title |
8850005, | Nov 11 2010 | SAP SE | Systems and methods for business network management discovery and consolidation |
Patent | Priority | Assignee | Title |
6901596, | May 07 1998 | Hewlett Packard Enterprise Development LP | Method of communicating asynchronous events to remote procedure call clients |
7051335, | Jun 30 1999 | Siemens Aktiengesellschaft | Synchronization of applications in distributed systems using an asynchronous communication channel |
7363342, | Jul 08 2003 | Microsoft Technology Licensing, LLC | Method and apparatus for providing web services in a collaborative computing system |
7930702, | Mar 14 2005 | Oracle International Corporation | Web services layer synchrony in relation to the business layer synchrony |
20070162560, | |||
20070234371, | |||
WO165815, |
Executed on | Assignor | Assignee | Conveyance | Frame | Reel | Doc |
Nov 18 2008 | BACHHUBER-HALLER, CHRISTOPH | International Business Machines Corporation | ASSIGNMENT OF ASSIGNORS INTEREST SEE DOCUMENT FOR DETAILS | 021992 | /0104 | |
Nov 18 2008 | HENKE, MARTIN | International Business Machines Corporation | ASSIGNMENT OF ASSIGNORS INTEREST SEE DOCUMENT FOR DETAILS | 021992 | /0104 | |
Nov 18 2008 | ILLGNER-KURZ, MONIKA | International Business Machines Corporation | ASSIGNMENT OF ASSIGNORS INTEREST SEE DOCUMENT FOR DETAILS | 021992 | /0104 | |
Nov 18 2008 | OCHS, GEORG | International Business Machines Corporation | ASSIGNMENT OF ASSIGNORS INTEREST SEE DOCUMENT FOR DETAILS | 021992 | /0104 | |
Nov 18 2008 | SCHMID, BERNHARD | International Business Machines Corporation | ASSIGNMENT OF ASSIGNORS INTEREST SEE DOCUMENT FOR DETAILS | 021992 | /0104 | |
Nov 18 2008 | WERNER, JEREMIAS | International Business Machines Corporation | ASSIGNMENT OF ASSIGNORS INTEREST SEE DOCUMENT FOR DETAILS | 021992 | /0104 | |
Nov 19 2008 | International Business Machines Corporation | (assignment on the face of the patent) | / | |||
Nov 19 2008 | SPATZIER, THOMAS | International Business Machines Corporation | ASSIGNMENT OF ASSIGNORS INTEREST SEE DOCUMENT FOR DETAILS | 021992 | /0104 |
Date | Maintenance Fee Events |
May 20 2016 | REM: Maintenance Fee Reminder Mailed. |
Oct 09 2016 | EXP: Patent Expired for Failure to Pay Maintenance Fees. |
Date | Maintenance Schedule |
Oct 09 2015 | 4 years fee payment window open |
Apr 09 2016 | 6 months grace period start (w surcharge) |
Oct 09 2016 | patent expiry (for year 4) |
Oct 09 2018 | 2 years to revive unintentionally abandoned end. (for year 4) |
Oct 09 2019 | 8 years fee payment window open |
Apr 09 2020 | 6 months grace period start (w surcharge) |
Oct 09 2020 | patent expiry (for year 8) |
Oct 09 2022 | 2 years to revive unintentionally abandoned end. (for year 8) |
Oct 09 2023 | 12 years fee payment window open |
Apr 09 2024 | 6 months grace period start (w surcharge) |
Oct 09 2024 | patent expiry (for year 12) |
Oct 09 2026 | 2 years to revive unintentionally abandoned end. (for year 12) |