The disclosure relates generally to event processing, and more particularly, to processing business activity monitoring (BAM) events.
In general, business activity monitoring (BAM) provides information on various mission-critical activities occurring within a business in real time. To this extent, a BAM system attempts to provide a set of user interfaces that enable a user (e.g., a high-level manager) to view the current status of the business in real time. In a typical BAM system, for each significant event, such as the creation of a new monitored entity or a state change for a monitored entity, an event source transmits at least one message regarding the event to a messaging layer for processing. The message(s) typically include few details regarding the event/monitored entity, the full details of which can be accessed, when required, from an application database.
In processing a message for an event, the event source typically performs at least one transaction to generate and transmit the message to the messaging layer. Additionally, the messaging layer typically performs at least one transaction to filter and route the incoming messages to an appropriate monitor model queue, e.g., based on x-path filters, for further processing. Finally, the monitor model specific application processes the message and performs at least one database transaction for the event. Some BAM systems enable the use of batch update messages, which include information on multiple events in a single message. However, the messaging layer and monitor model specific application still need to process each event, typically within a separate transaction for each event.
Often, a BAM system monitors events for an asset having a very long or near perpetual lifecycle. For example, such systems include an airline tracking system that tracks aircraft status, a train tracking system, automobile fleet monitoring system, and/or the like. In these systems, the assets have a known group of states and a state for each asset may change numerous times over the lifecycle of the asset.
Aspects of the invention provide a solution in which asset state change events are processed using an asset-state identifier corresponding to a combination of the current state for the asset and the asset. The asset-state identifier uniquely identifies the combination from all other possible combinations of assets and states being monitored. When a new asset is identified, the asset-state identifiers can be generated and stored for subsequent use in updating the current state of the asset. In an embodiment, an event source in a business activity monitoring (BAM) system can send an update message that includes one or more asset-state identifiers for processing by a messaging system. Multiple asset-state identifiers can be processed by the messaging system and/or a monitoring system within a single transaction.
A first aspect of the invention provides a computer-implemented method of monitoring assets, the method comprising: receiving asset state change data for an asset at a first computer system, wherein the asset is a physical object utilized by an enterprise and wherein the asset change data includes a current state of the asset; generating an update message based on the asset state change data with the first computer system, wherein the generating includes: obtaining an asset-state identifier corresponding to a combination of the current state for the asset and the asset, wherein the asset-state identifier uniquely identifies the combination from all other possible combinations of assets and states being monitored; and adding the unique identifier to the update message; and transmitting the update message for processing by a second computer system.
A second aspect of the invention provides a computer system for monitoring assets, the computer system comprising: an event source including: a component configured to receive asset state change data for an asset, wherein the asset change data includes a current state of the asset; a component configured to generate an update message based on the asset state change data by obtaining an asset-state identifier corresponding to a combination of the current state for the asset and the asset, wherein the asset-state identifier uniquely identifies the combination from all other possible combinations of assets and states being monitored, and adding the unique identifier to the update message; and a component configured to transmit the update message for processing by a messaging system.
A third aspect of the invention provides a computer program comprising program code embodied in at least one computer-readable medium, which when executed, enables a computer system to implement a method of monitoring assets, the method comprising: receiving asset state change data for an asset, wherein the asset is a physical object utilized by an enterprise and wherein the asset change data includes a current state of the asset; generating an update message based on the asset state change data, wherein the generating includes: obtaining an asset-state identifier corresponding to a combination of the current state for the asset and the asset, wherein the asset-state identifier uniquely identifies the combination from all other possible combinations of assets and states being monitored; and adding the unique identifier to the update message; and transmitting the update message for processing by a second computer system.
A fourth aspect of the invention provides a method of generating a computer system for monitoring assets, the method comprising: providing a computer system operable to: receive asset state change data for an asset at a first computing device, wherein the asset is a physical object utilized by an enterprise and wherein the asset change data includes a current state of the asset; generate an update message based on the asset state change data with the first computing device, wherein the generating includes: obtaining an asset-state identifier corresponding to a combination of the current state for the asset and the asset, wherein the asset-state identifier uniquely identifies the combination from all other possible combinations of assets and states being monitored; and adding the unique identifier to the update message; and transmit the update message for processing by a second computing device.
A fifth aspect of the invention provides a method comprising: at least one of providing or receiving a copy of a computer program that is encoded in a set of data signals, wherein the computer program enables a computer system to implement a method of monitoring assets, the method comprising: receiving asset state change data for an asset at a first computer system, wherein the asset is a physical object utilized by an enterprise and wherein the asset change data includes a current state of the asset; generating an update message based on the asset state change data with the first computer system, wherein the generating includes: obtaining an asset-state identifier corresponding to a combination of the current state for the asset and the asset, wherein the asset-state identifier uniquely identifies the combination from all other possible combinations of assets and states being monitored; and adding the unique identifier to the update message; and transmitting the update message for processing by a second computer system.
Other aspects of the invention provide methods, systems, program products, and methods of using and generating each, which include and/or implement some or all of the actions described herein. The illustrative aspects of the invention are designed to solve one or more of the problems herein described and/or one or more other problems not discussed.
These and other features of the disclosure will be more readily understood from the following detailed description of the various aspects of the invention taken in conjunction with the accompanying drawings that depict various aspects of the invention.
It is noted that the drawings may not be to scale. The drawings are intended to depict only typical aspects of the invention, and therefore should not be considered as limiting the scope of the invention. In the drawings, like numbering represents like elements between the drawings.
As indicated above, aspects of the invention provide a solution in which asset state change events are processed using an asset-state identifier corresponding to a combination of the current state for the asset and the asset. The asset-state identifier uniquely identifies the combination from all other possible combinations of assets and states being monitored. When a new asset is identified, the asset-state identifiers can be generated and stored for subsequent use in updating the current state of the asset. In an embodiment, an event source in a business activity monitoring (BAM) system can send an update message that includes one or more asset-state identifiers for processing by a messaging system. Multiple asset-state identifiers can be processed by the messaging system and/or a monitoring system within a single transaction. As used herein, unless otherwise noted, the term “set” means one or more (i.e., at least one) and the phrase “any solution” means any now known or later developed solution.
Turning to the drawings,
Further, computing environment 10 includes a set of event sources 14. Each event source 14 comprises a computing component configured to monitor the operation of one or more components of enterprise system 12 for significant events corresponding to a monitored class of assets. The significant events can comprise any type of events, such as the addition of a new asset, removal of an asset, change of state of an asset, and/or the like. In an embodiment, an event source 14 can comprise software, such as an agent, which is configured to monitor enterprise system 12 for one or more significant events with respect to asset(s) of a particular type using any solution. For example, an event source 14 can monitor communications between two or more applications executing in enterprise system 12, monitor data being read from/written to enterprise data store 50, monitor data being communicated to enterprise system 12 from one or more other systems and/or user devices, and/or the like.
Regardless, when event source 14 detects a significant event for a monitored asset type, event source 14 can obtain data on the event and asset instance using any solution. For example, event source 14 can extract the data from a message being communicated within enterprise system 12, extract the data from a read/write operation on enterprise data store 50, request the data from enterprise data store 50, and/or the like. In general, two types of significant events for monitored assets include the creation/addition of a new asset, and subsequent state changes of the asset during its lifecycle. To this extent, event source 14 is shown receiving new asset data 40 and asset state change data 42. As further described herein, event source 14 generates a create message 44 in response to obtaining new asset data 40, and generates an update message 46 in response to obtaining asset state change data 42 for one or more monitored assets.
Event source 14 can be implemented in its own computer system (e.g., a computing device), or be implemented as software installed within one or more computing devices of enterprise system 12. In either case,
Computer system 20 is shown including a processing component 22 (e.g., one or more processors), a storage component 24 (e.g., a storage hierarchy), an input/output (I/O) component 26 (e.g., one or more I/O interfaces and/or devices), and a communications pathway 28. In general, processing component 22 executes program code, such as event program 30, which is at least partially fixed in storage component 24. While executing program code, processing component 22 can process data, which can result in reading and/or writing transformed data from/to storage component 24 and/or I/O component 26 for further processing. Pathway 28 provides a communications link between each of the components in computer system 20. I/O component 26 can comprise one or more human I/O devices, which enable a human user to interact with computer system 20 and/or one or more communications devices to enable a system user (e.g., messaging system 14) to communicate with computer system 20 using any type of communications link. To this extent, event program 30 can manage a set of interfaces (e.g., graphical user interface(s), application program interface, and/or the like) that enable human and/or system users to interact with event program 30. Further, event program 30 can manage (e.g., store, retrieve, create, manipulate, organize, present, etc.) the data, such as entity data 60, using any solution.
In any event, computer system 20 can comprise one or more general purpose computing articles of manufacture (e.g., computing devices) capable of executing program code, such as event program 30, installed thereon. As used herein, it is understood that “program code” means any collection of instructions, in any language, code or notation, that cause a computing device having an information processing capability to perform a particular function either directly or after any combination of the following: (a) conversion to another language, code or notation; (b) reproduction in a different material form; and/or (c) decompression. To this extent, event program 30 can be embodied as any combination of system software and/or application software.
Further, event program 30 can be implemented using a set of modules 32. In this case, a module 32 can enable computer system 20 to perform a set of tasks used by event program 30, and can be separately developed and/or implemented apart from other portions of event program 30. As used herein, the term “component” means any configuration of hardware, with or without software, which implements the functionality described in conjunction therewith using any solution, while the term “module” means program code that enables a computer system 20 to implement the functionality described in conjunction therewith using any solution. When fixed in a storage component 24 of a computer system 20 that includes a processing component 22, a module is a substantial portion of a component that implements the functionality. Regardless, it is understood that two or more components, modules, and/or systems may share some/all of their respective hardware and/or software. Further, it is understood that some of the functionality discussed herein may not be implemented or additional functionality may be included as part of computer system 20. For example, computer system 20 can further include one or more mission-critical applications, which enable enterprise system 12 (
When computer system 20 comprises multiple computing devices, each computing device can have only a portion of event program 30 fixed thereon (e.g., one or more modules 32). However, it is understood that computer system 20 and event program 30 are only representative of various possible equivalent computer systems that may perform a process described herein. To this extent, in other embodiments, the functionality provided by computer system 20 and event program 30 can be at least partially implemented by one or more computing devices that include any combination of general and/or specific purpose hardware with or without program code. In each embodiment, the hardware and program code, if included, can be created using standard engineering and programming techniques, respectively.
Regardless, when computer system 20 includes multiple computing devices, the computing devices can communicate over any type of communications link. Further, while performing a process described herein, computer system 20 can communicate with one or more other computer systems using any type of communications link. In either case, the communications link can comprise any combination of various types of wired and/or wireless links; comprise any combination of one or more types of networks; and/or utilize any combination of various types of transmission techniques and protocols.
As discussed herein, when executed by computer system 20, event program 30 makes computer system 20 a special purpose computer system (i.e., an event source 14), which is configured to monitor one or more assets of enterprise system 12 (
Regardless, in process 102, event source 14 obtains new asset data 40 for the new asset, which can include information on one or more attributes of the new asset, a current state for the new asset, and the like, using any solution. For example, event source 14 can extract some or all of the new asset data 40 from the notification (e.g., a unique identifier for the new asset). Further, event source 14 can request and receive new asset data 40 from enterprise data store 50 (e.g., using a component of enterprise system 12), or the like. In an embodiment, event source 14 only obtains new asset data 40 that is required to enable event source 14, messaging system 16, and monitoring system 18 (
In process 103, event source 14 obtains information on all of the possible states for the new asset. For example, event source 14 can manage asset data 60, which includes data on each of the possible states for a type of asset that event source 14 is monitoring. In an embodiment, event source 14 manages the asset data 60 using any solution, e.g., a database. In this case, event source 14 can obtain the asset data 60 when it is configured to monitor a particular type of asset. Alternatively, event source 14 can obtain the information on all of the possible states from a shared data store, such as enterprise data store 50 (
In process 104, event source 14 can generate, or otherwise obtain, a unique asset-state identifier for each possible combination of the new asset and a corresponding state of the new asset using any solution (e.g., using a hash or other type of algorithm applied on the identifiers for the state and asset, a creation timestamp for the asset, and/or the like). To this extent, the unique asset-state identifier will uniquely identify the combination of state and asset from all other possible combinations of states and assets being monitored within computing environment 10 (
In process 105, event source 14 can generate a create message 44 based on the new asset data 40 and asset-state identifiers and transmit the create message 44 for processing by messaging system 16. The create message 44 can include an asset record that includes one or more fields comprising data on the new asset (e.g., an asset identifier, an asset location, an asset state, pointer for retrieving additional asset information, and/or the like). Further, the create message 44 can include a plurality of asset-state records, each of which includes one of the plurality of asset-state identifiers and information on the corresponding state of the asset (e.g., state identifier, pointer for retrieving additional state information, and/or the like) that will enable messaging system 16 and/or monitoring system 18 (
In process 113, messaging system 16 can extract information on the new asset from the create message 44 and forward the information to monitoring system 18 for storage in monitored asset data store 54. For example, messaging system 16 can extract the asset record and/or information stored therein and provide the information to monitoring system 18. Monitoring system 18 can obtain additional information on the asset from, for example, enterprise data store 50. Regardless, monitoring system 18 can persist the information in monitored asset data store 54 using any solution (e.g., by adding a stored asset record that includes the information to, for example, a database table).
In process 114, messaging system 16 can extract information on the current state of the new asset from the asset record in the create message 44. The current state can comprise a unique identifier for the state or the like, which messaging system 16 can provide to monitoring system 18. Monitoring system 18 can persist the current state, and any additional information, in monitored asset data store 54 using any solution (e.g., by updating the stored asset record for the asset with information on the current state).
In process 115, messaging system 16 can extract information on all of the possible states for the asset from each of the plurality of asset-state records in the create message 44. The information for each possible state for the asset will include a unique asset-state identifier and information on the corresponding state of the asset (e.g., state identifier, pointer for retrieving additional state information, and/or the like). Further, messaging system 16 can include an asset identifier for the corresponding asset with the information. Messaging system 16 can provide the information on each possible state for the asset to monitoring system 18. Monitoring system 18 can persist the information on each possible state for the asset in monitored asset data store 54 using any solution (e.g., by adding a stored asset-state record for each possible state for the asset to, for example, a database table). In process 116, once all the information has been successfully persisted in monitored asset data store 54, messaging system 16 can end the transaction.
Once information on a new asset is persisted in monitored asset data store 54, monitoring system 18 can include information on the asset and/or update information on a group of assets in a set of user interfaces generated and updated by monitoring system 18 for presentation to one or more users (e.g., a set of business activity monitoring (BAM) user interfaces for presentation to high-level managers). Additionally, monitoring system 18 can obtain additional information on the asset from enterprise data store 50, which monitoring system 18 can include in one or more of the user interfaces. The set of user interfaces enable the user(s) to view the current status of a business in real time. To this extent, when the state of a monitored asset changes, it is desirable that the state change be reflected in the set of user interfaces generated and managed by monitoring system 18 as quickly as possible.
In process 202, event source 14 obtains asset state change data 42 for the state change, which can include a unique identifier for the asset for which the state changed and a unique identifier for the new state of the asset, using any solution. For example, event source 14 can extract some or all of the asset state change data 42 from the notification, obtain some or all of the asset state change data 42 from enterprise data store 50, and/or the like. In process 203, event source 14 determines the asset-state identifier that corresponds to the monitored asset and its new state using any solution. For example, event source 14 can retrieve the asset-state identifier from state change data store 52 using the unique identifiers for the asset and the new state.
In process 204, event source 14 adds the asset-state identifier to an update message 46, which will be provided to messaging system 16 for processing. In process 205, event source 14 determines whether to add another asset-state identifier corresponding to another asset state change event to the update message 46 using any solution. For example, when event source 14 obtains notifications of numerous state change events within a short period of time, event source 14 can combine multiple asset-state identifiers into a single update message 46. In this manner, the amount of update messages 46 transmitted for processing by messaging system 16 can be reduced without having a substantial impact on the currency of the status information within monitored asset data store 54. Alternatively, event source 14 can only include one asset-state identifier per update message 46 when messaging system 16 can timely process the update messages 46.
Additionally, event source 14 can determine whether messaging system 16 is currently unavailable for processing update messages 46 using any solution. For example, messaging system 16 can periodically send a message (e.g., a heartbeat) to event source 14 indicating that it is available to process messages, send an acknowledgement message in response to receiving a create message 44 or an update message 46, and/or the like. When event source 14 has not received a message from messaging system 16 for a predetermined amount of time and/or amount of messages, event source 14 can assume that messaging system 16 is not available for processing messages. In this case, event source 14 can continue to process asset state change events and add the corresponding asset-state identifiers to an update message 46. Further, when multiple asset status change events for the same asset are processed by event source 14 prior to sending an update message 46, event source 14 can remove the older asset status change event from the update message 46. Regardless, event source 14 can limit a number of asset-state identifiers included in a single update message 46 based on, for example, a pre-determined size limitation for the update message 46 set by the transmission protocol.
Once event source 14 determines that no more asset state change events are to be added to the update message 46, event source 14 can send the update message 46 for processing by messaging system 16 in process 206. In an embodiment, event source 14 can place the update message 46 on an update message queue, which holds incoming update messages 46 for processing by messaging system 16. As discussed herein, it is understood that event source 14 may not immediately send an update message 46 to messaging system 16, but rather may wait to send the update message 46 until event source 14 identifies that messaging system 16 is ready to process the update message 46.
In process 213, messaging system 16 initiates a transaction for processing the data in the update message(s) 46 to ensure that the update message(s) 46 is/are completely processed and that the results of only partial processing of the update message(s) 46 can be rolled back, if necessary. In process 214, messaging system 16 can extract and provide the asset-state identifier(s) from each of the update message(s) 46 to monitoring system 18 for updating monitored asset data store 54. In process 215, monitoring system 18 updates the data in monitored asset data store 54 to reflect the current state of each asset according to the corresponding asset-state identifier. For example, monitoring system 18 can use the asset-state identifier to obtain the asset identifier and the state identifier that correspond to the asset-state identifier. Monitoring system 18 can use the asset identifier to update the stored asset state with the state identifier (or some other representation of the current state) using any solution. In an embodiment, monitoring system 18 can use the asset-state identifier to retrieve a stored asset-state record that includes the asset identifier and the state identifier, and subsequently use the retrieved asset identifier to update a current state field in a stored asset record with the state identifier. Regardless, once all asset-state identifiers have been processed by monitoring system 18, messaging system 16 can end the transaction in process 216.
Once the update information has been processed to update monitored asset data store 54, monitoring system 18 can update asset information, such as information on the asset(s) and/or update information on a group of related assets, included in the set of user interfaces managed by monitoring system 18 for presentation to one or more users as discussed herein.
Returning to
While computing environment 10 is shown only including a single event source 14, it is understood that computing environment 10 can include any number of event sources 14. Similarly, computing environment 10 could include multiple messaging systems 16 and/or multiple monitoring systems 18, each of which processes create messages 44 and update messages 46 from a unique set of event sources 14. Further, while computing environment and the illustrative processes described herein have been shown and described in conjunction with distinct systems 12, 14, 16, 18, and distinct data stores, 50, 52, 54, it is understood that this is only illustrative and numerous alternative implementations are possible. For example, messaging system 16 and monitoring system 18 could be implemented as a single system. Further, monitored asset data store 54 and state change data store 52 could comprise a single data store that is shared by the systems. Still further, it is understood that enterprise system 12, messaging system 16, and monitoring system 18 can include similar components as shown and described in
While shown and described herein as a method and system for processing asset-related events, it is understood that aspects of the invention further provide various alternative embodiments. For example, in one embodiment, the invention provides a computer program fixed in at least one computer-readable medium, which when executed, enables a computer system to process asset-related events. To this extent, the computer-readable medium includes program code, such as event program 30 (
In another embodiment, the invention provides a method of providing a copy of program code, such as event program 30 (
In still another embodiment, the invention provides a method of generating a system for processing asset-related events. In this case, a computer system, such as computer system 20 (
The foregoing description of various aspects of the invention has been presented for purposes of illustration and description. It is not intended to be exhaustive or to limit the invention to the precise form disclosed, and obviously, many modifications and variations are possible. Such modifications and variations that may be apparent to an individual in the art are included within the scope of the invention as defined by the accompanying claims.