Automated system for messaging based on chains of relationships
A computer system for automatically generating and sending messages to individuals, entities, processes, or locations (objects) in response to events when specified conditions are met. The automated messaging system is capable of delivering generated messages via a plurality of message delivery mechanisms (e.g. e-mail, FAX, voice mail, textual page). The automated messaging system provides the ability to link objects in chains of relationships and to use these chains to determine which messages to generate, which objects are the recipient of generated messages, and via which message delivery mechanism generated messages are sent. The automated messaging system is useful in a variety of environments including asset management, electronic-commerce, and Internet-based securities trading, as well as other applications.
Latest Frazier Spaeth LLC Patents:
The present invention relates to a computer system for automatically generating and sending messages to recipients in response to events when specified conditions are met.
BACKGROUND OF THE INVENTIONPeople working in organizations often need to know and/or track events relevant to their specific duties and responsibilities within their organizations. In addition, people often need or desire to know and/or track events relevant to their personal lives. Therefore, the need to automatically generate and deliver messages in response to events that meet a prescribed set of conditions is well known.
Current methods for automatically generating messages require a simple (i.e., direct) relationship between the event and the recipient of the message. For example, an investor can instruct an online trading system to send a page or an e-mail “when the stock price of XYZ reaches 50”. As another example, a mainframe supervisory operator can instruct an automated paging system to page the operator if the mainframe computer goes down. As a further example, a consumer can instruct an electronic-commerce website to send an e-mail notifying her when a sweater in her size is in stock. It is not straightforward, however, for an automated process to generate messages where a complex or indirect relationship exists, such as an instruction to “tell me when the stock price of any company that is owned by a company in which my brother has stock reaches 50”, or “page me if a mainframe computer in a building managed by Jones goes down”, or “e-mail me when a sweater in one of my children's sizes is in stock”.
A more detailed example of the requirement to automatically generate and deliver messages in response to events is the field of asset management. All organizations, large and small, manage the assets they own or control. Some organizations track their assets to calculate the property, plant and equipment figures for their balance sheets. Other organizations, such as hospitals, track the use of their assets in order to allocate costs associated with those assets to a separate entity (e.g., insurance companies, Medicare). Still other organizations, including many government contractors, universities and research laboratories, use assets purchased as part of their contracts with the government and so must track those assets using strict accountability requirements that typically accompany these contracts.
A simple approach to asset management is to have a database of assets. A typical record in an asset database would include a unique asset identifier, such as an asset number, an asset description and a location within the organization where the asset is deployed. The asset database must be kept up to date as assets are acquired, disposed of, or moved from location to location. A centralized approach to asset management entails having a central group of asset managers track the assets and update the asset database for all work groups within the organization. However, this can add considerable overhead to the process of managing assets, since an asset manager would need to be called in and take some action for each acquisition, disposal, or movement of an asset from one location to another. If the organization is large, there may be many asset managers. An individual desiring to move an asset from one end of a building to another might find it difficult to identify the correct asset manager to inform of the move.
Another approach is to decentralize the asset management process so that each work group within the organization is responsible for tracking its own assets and making the appropriate updates to the database. While decentralization does make some administrative processes easier, it can make asset management and reporting more difficult from the perspective of the overall organization. Consequently, decentralization might not be acceptable to some organizations that require strict control over their assets.
This shows the need exists in both centralized and decentralized asset management to automatically generate messages in response to changes (which are events) recorded in an asset database. This is also illustrative of the more general requirement for the automated generation of messages in response to events in any circumstance.
Computer systems that generate e-mail messages in response to the recordation of events in a database exist in the prior art. However, these systems are not capable of generating a message when an indirect relationship exists between the event and the message recipient. These systems are also not typically capable of generating messages for a plurality of delivery mechanisms, i.e., they generate messages for delivery by e-mail only.
As used herein, the term “database” generally refers to collections of data organized into structured forms. Some well-known database forms include hierarchical, or tree, structures, relational data structures, network structures, and graph structures.
The data in a database is typically organized to permit easy retrieval of information. Databases are typically used to provide multiple users with access to information in a variety of formats. A database may be implemented on a variety of computer platforms (e.g., personal computer, minicomputer, mainframe computer) and operating systems (e.g., Windows, Macintosh, VMS, OS/390). In some uses of the term “database”, the database includes a database engine. A database engine provides an interface for users or programs to access (e.g., read, write, modify) data in the database. For example, an SQL (Structured Query Language) database system might integrate a database and a database engine so that a user or program need not fully understand the details of the database, but need only be able to formulate SQL statements and present those statements to the database system. A database engine can be implemented in dedicated hardware, be embodied in software executed by a general-purpose computer, or be some combination of those.
As used herein, the term “message” refers to data that forms a communication from one or more sources to one or more recipients. A source or recipient is that which has the capability to generate or receive, respectively, a message, and includes an individual, entity, process or location. The capability to generate or receive messages may be provided through any conventional device or technology including Internet appliances, personal digital assistants, pagers, phones, fax machines and computers.
The term “e-mail” generally refers to a utility for communicating messages over a network between e-mail “boxes” that are each associated with a source and/or recipient. Typically, an e-mail message is a “store-and-forward” message, which allows a recipient to receive a message even if the recipient is not connected to the network when the message is sent. With a store-and-forward system, a message travels from the source to the recipient along a path and where the path is temporarily blocked, as would be the case if the device that connects the recipient to the network is temporarily off-line, the message is held and delivered the next time the intended recipient connects to the network.
The term “FAX” generally refers to a utility for communicating messages that are transmitted in a nonreal-time fashion (such as store-and-forward) where the messages are formatted as telephonically transmittable data that is delivered to a device capable of decoding the data and displaying or storing it in a plurality of formats, such as a printed page, a file on a computer's hard drive or spoken word.
The term “voice mail” generally refers to a utility for communicating messages that are transmitted in a nonreal-time fashion (such as store-and-forward) where the messages are formatted as audio data representing human or computer-generated speech, preferably in a language understandable to the recipient.
The terms “textual page” and “page” generally refers to a utility for communicating messages formatted as a signal that triggers a small electronic device called a pager to emit an audible tone or a vibration which alerts the individual in possession of the pager that a message has arrived. A pager typically provides a mechanism capable of displaying the content of the message to the recipient.
The term “server” generally refers to a combination of computer hardware and software that services one or more processes called clients. Clients need not be aware of how the services provided by a server are implemented.
SUMMARY OF THE INVENTIONOne advantage of some embodiments of an automated messaging system according to the present invention is that messages generated in response to events can be sent to recipients (e.g., individuals, entities, processes, locations) based on chains of relationships that links the events to the recipients.
One such automated messaging system includes an event database, an object database, a relationship database, a message criteria database, a proto-message database, and a recipient address database to generate and deliver a message in response to an event to a recipient. The automated messaging system allows the relationship between an event and a recipient to be direct or indirect, that is, the relationship can be a chain of relationships that link the event to the recipient. The automated messaging system can deliver the generated messages by a plurality of message delivery mechanisms (e.g., e-mail, FAX, voice mail, voice-synthesized telephone message, textual page).
One embodiment of an automated messaging system according to the present invention is an automated asset management system. In this embodiment, assets are tracked in an asset database. Users and connected systems interact with the asset database to keep its contents up to date. These interactions, which are viewed as events by the asset database, are compared against a list of message generation criteria. If a match is found, a relationship database, which links objects to each other in a chain of relationships, is used to determine what objects (e.g., people, business units, external organizations) should be sent a message about the asset or assets affected by the event. Any object in a chain may be a recipient. Each recipient can choose one or more message delivery mechanisms (e.g., e-mail, FAX, voice mail, textual page) by which messages to that recipient may be delivered. The automated messaging system sends a message to each recipient via its chosen message delivery mechanism(s), thereby notifying each recipient of the event.
The asset management system receives changes from an acquisition module, a retirement/disposal module, a management module, an inventory review module and/or an accounting module. The acquisition module records the addition of new assets. The retirement/disposal module records the removal of assets. The management module records, inter alia, changes to an asset's location, the accountable individual and the accountable work group. The accounting module records the financial transactions that occur for assets.
Other modules might also handle excess assets, inactive assets, assets controlled by agreements, changes based on the physical inventorying of assets, changes based on routine and non-routine maintenance of assets, changes based on the movement of assets by a shipping or material management system, and outputs to reporting systems and accounting systems.
The asset management system, as well as other embodiments of an automated messaging system according to the present invention, can include one computer or a collection of computers, preferably an arrangement that is connected by a network (e.g., an intranet, the Internet) and is scalable to allow many connections with a plurality of nodes. The network may also include other processing elements or equipment (e.g., a printer, a modem, a FAX machine). More generally, an automated messaging system according to the present invention may be embodied in software, hardware or a combination of software and hardware.
In addition to generating and delivering messages relating to the management of assets, an automated messaging system according to the present invention could be used to handle chains of relationships that deal with employment, contract approvals/execution authority, electronic-commerce, etc. In particular, the data structures of or the algorithms used by one or more of the event database, object database, relationship database, message criteria database, proto-message database, and recipient address database could be utilized in an automated system for messaging based on chains of relationships in a wide variety of applications.
A further understanding of the nature and advantages of the inventions herein may be realized by reference to the remaining portions of the specification and the attached drawings.
BRIEF DESCRIPTION OF THE DRAWINGS
In the figures, like elements are labeled with like numbers and different instances of like elements are labeled with like numbers and different parenthetical numbers or letters.
As shown, message server 24 is coupled to receive message instructions from database server 12 and to send messages to various output servers, such as an e-mail server 30, a FAX server 32, a voice mail server 34 and a textual page server 36, that serve as message delivery mechanisms. E-mail server 30 receives message instructions and generates and delivers an e-mail message to a recipient. FAX server 32 receives message instructions and generates and delivers a FAX to a recipient. Voice mail server 34 receives message instructions and generates and delivers a voice mail message to a recipient. The voice mail server 34 might also handle the sending of synthesized voice messages, which differ from automated voice mail messages only in that the message is played to a person answering the telephone instead of being recorded for later play by the recipient. Textual page server 36 receives message instructions and generates and delivers a textual page to a recipient. The precise technology for generating and delivering e-mails, facsimiles, voice mail messages and textual pages is well known in those various arts. Other message delivery mechanisms known in the art can also be used.
The process used by a delivery mechanism to transmit a message could encode it to accommodate the connections between the source and recipient. For example, if the source and recipient are TCP/IP-aware computers with an internet between them, the message might be encoded as IP packets. If the source and recipient are e-mail enabled computers or applications, the message might be encoded as one or more e-mail messages. If the source and recipient are processes running in an application space under an operating system, the message might be relayed via procedure calls or interprocess messages. Other message transmission processes known in the art can also be used.
The modules in asset management system 10 are preferably designed to assist with the management of assets in each phase of their life, from acquisition through retirement/disposal. Each module interacts, preferably in real-time, with database server 12 to ensure that the data captured by one module is available to any other module as needed. In addition to asset tracking and message instruction generation, database server 12 can be used for other purposes or multiple purposes (such as hosting other software applications, e.g., time keeping, payroll) without duplicating effort.
Each module or event generator sends “events” to database server 12. Acquisition module 14 sends events relating to a new asset to database server 12. The rules that determine how a new asset is categorized do not need to be hard-coded business logic, but can be defined by the user or the organization and stored as business logic. The automated messaging system can generate and deliver a message in response to new asset information being recorded in database server 12.
Asset retirement/disposal module 16 sends events relating to the disposal of an asset from database server 12. Retired/disposed asset information is recorded in database server 12 with complete historical information should it be needed for later analysis.
Management module 18 assigns to each asset a location, an accountable individual and an accountable organization. A history of each update, including who made the change and when, is retained for each asset. Data security is maintained by allowing only those users who have been explicitly given access to an organization's asset data the capability to perform updates on those records. An asset's accountable individual can be given the capability, by the asset's accountable work group, to update the location of his or her assets. The automated messaging system can generate and deliver a message in response to updates to an asset's location, accountable individual and accountable organization (or any other asset property) being recorded in database server 12.
In order to provide for inter-work group and inter-individual transfers, management module 18 uses a request/accept/deny paradigm to ensure that accountability is not transferred without the consent of both parties. This permits a work group or individual to request that a second work group or individual become accountable for an asset. The automated messaging system can generate and deliver a message in response to requests for transfers being recorded in database server 12. If the second party agrees to the transfer, the request is accepted and accountability is transferred without further action on the part of the requesting party. The automated messaging system can generate a message in response to the second party's acceptance of the transfer being recorded in database server 12. If the second party disagrees with the requested transfer, the request is denied and the automated messaging system can generate and deliver a message in response to the second party's denial of the transfer being recorded in database server 12.
Management module 18 might also provide mass update capability, so that, in a single transaction, a work group can update the location or accountable individual of several assets, or a user who represents multiple organizations can transfer assets from one work group to another. Because each such update is viewed as an event from the perspective of database server 12, the automated messaging system can generate and deliver a message for each asset that is the subject of a mass update.
Inventory review module 20 supports both work group-wide and random sampling inventory methods. The rules which govern how an inventory will be conducted, from the criteria that determine the inventory baseline to the set of acceptable verifications, are captured by database server 12 for use in subsequent processing and reporting. Inventory review module 20 can upload data from an external device 23 (e.g., a barcode device, a hand held computer) as a verification. Inventory review module 20 can also recognize changes recorded in database server 12 as a verification, such as the receipt of an asset into excess or the change of an asset's accountable organization. Such changes are known as inventory by exception verifications. Because each such verification is viewed as an event from the perspective of database server 12, the automated messaging system can generate and deliver a message in response to the upload of a verification from an external device 23 or the creation of an inventory by exception in database server 12.
Accounting module 22 performs several functions, some of which can be triggered automatically by other modules. As an example, asset capitalization can be automatically triggered once the acquisition of an asset is complete. Other accounting functions operate independently; for example, an asset's capitalized value can be transferred when one asset is incorporated into another. In either case, accounting module 22 produces journal entries in real-time and posts them to a subsidiary ledger contained within database server 12. Accounting module 22 also calculates and records the depreciation of assets. The frequency and method used to calculate the depreciation is definable by the organization. Because financial transactions and their associated journal entries are viewed as events from the perspective of database server 12, the automated messaging system can generate and deliver a message automatically in response to journal entries being posted to the subsidiary ledger in database server 12 and in response to events being recorded by accounting module 22 in database server 12.
Those skilled in the art will recognize that other input and output modules can be added to or substituted into this system. Those skilled in the art will also recognize that each input and output module specified above may not be necessary to every embodiment of the invention.
As shown in
Message criteria database 76 records the conditions under which recipients should be notified of an event recorded in event database 62. Message criteria entry system 40 is used by recipients to record these conditions (e.g., via an HTML page that displays a list of event types from which recipients can choose). Message criteria database 76 also records the message delivery mechanisms (shown as e-mail server 30, FAX server 32, voice mail server 34 and textual page server 36 in
Automated message generator 70 examines the events captured in event database 62 and the contents of message criteria database 76 to determine what messages are to be generated and delivered to which recipients via which message delivery mechanisms. Automated message generator 70 passes message instructions to message server 24, for delivery to recipients using one or more message delivery mechanisms.
Message instruction generator 82 receives a proto-message from proto-message database 80 and retrieves asset data from asset database 60 to create a set of message instructions for message server 24. One way for message instruction generator 82 to interact with proto-message database 80 is for message instruction generator 82 to poll proto-message database 80 to determine when a new proto-message has been recorded. Another way for message instruction generator 82 to interact with proto-message database 80 is for proto-message database 80 to use an asynchronous mechanism (such as a database trigger) to inform message instruction generator 82 that a new proto-message has been recorded. Other ways may also be used. Message instruction generator 82 can retrieve asset data from asset database 60 by ways well known in the art, such as SQL statements, to enable message instructions to include pertinent asset information such as asset number and asset description.
Message server 24 retrieves the address of the recipient from recipient address database 84 by ways well known in the art, such as SQL statements.
While the various components of automated message generator 70 are shown in close proximity in
-
- Event Type—the type of event that has occurred and one relationship:
- Basis Object—the object that is the subject of the event. Event database 62 might also include other relationships and other attributes (e.g., the event's date and time) that might be needed for actions other than message generation.
-
- Object Identifier (OID)— the object's unique identifier
- Object Type—the object's type.
Object database 72 might also include relationships and other attributes (e.g., last name, first name, employee number, asset identifier) that might be needed for actions other than message generation.
-
- Relationship Type—the type of relationship between the parent and child objects and two relationships:
- Child Object—the object that is considered to be the child in the relationship
- Parent Object—the object that is considered to be the parent in the relationship. Relationship database 74 might also include other relationships and other attributes. (e.g., creation date and time, modification date and time, backup message delivery mechanism) that might be needed for actions other than message generation.
-
- Event Type—the type of event that triggers the generation of a message
- Message Delivery Mechanism—the mechanism that delivers a generated message
- Object Type—the type of object that triggers the generation of a message
- Relationship Type—the type of relationship (direct or indirect) between an object and a recipient that triggers the generation of a message
and one relationship: - Recipient Object—the object that is to receive a generated message. Message criteria database 76 might also include other relationships and other attributes (e.g., criterion creation date and time, modification date and time, backup message delivery mechanism) that might be needed for actions other than message generation.
-
- Message Delivery Mechanism—the mechanism that delivers a generated message and three relationships:
- Basis Event—the event that has triggered the generation of a message
- Basis Object—the object that is the subject of the event that has triggered the generation of a message
- Recipient Object—the object that is to receive the generated message.
Proto-message database 80 might also include other relationships and other attributes (e.g., creation date and time, modification date and time, backup message delivery mechanism, message number) that might be needed for actions other than message generation.
Alternate structures and storage mechanisms for recipient address database 84 are possible and, in fact, likely to be seen in practice. For example, it is common for commercial human resource software applications (e.g., Peoplesoft, Oracle, SAP) to record the phone numbers (e.g., voice, FAX, pager, mobile) and e-mail addresses for employees. Internet standard directory protocols (e.g., LDAP, ph) are also used to capture phone numbers, e-mail addresses and network addresses for both people and other inanimate objects (e.g., conference rooms, FAX machines, printers). The automated messaging system can make use of these and other alternate recipient address databases without substantial modification. At a minimum, recipient address database 84 preferably includes two attributes:
-
- Address—the recipient's address
- Message Delivery Mechanism—the mechanism that delivers a generated message and one relationship:
- Recipient Object—the object whose address is represented.
Recipient address database 84 might also include other relationships and other attributes (e.g., creation date and time, modification date and time, address type) that might be needed for actions other than message generation.
While the various databases are separately shown in
Step A1:
Database server 12 can process and record simultaneous events. In a large organization, thousands of events might occur each hour that are processed and recorded by database server 12. Message criteria database 76 and object database 72 will also typically have a large number of records. Because of the size of these databases, several efficiency measures might be implemented if the response times are not otherwise reasonable given the computing power available. One measure for message processor 78 to determine if further processing is necessary is to perform a simple test as it considers each newly recorded event in event database 62. That is, message processor 78 tests for the existence of at least one record in message criteria database 76 that matches the event type of the newly created event in event database 62 and the object type of the object that is the subject of the event. If the event type and object type of the newly created event match at least one record in message criteria database 76, processing continues by message processor 78 for the newly created event. Otherwise, the event is considered no further by message processor 78.
Step A2:
The chains of relationships between objects are readily visualized when relationship database 74 is drawn as a directed graph, such as in
Table 1 is pseudocode for a recursive depth-first traversal that may be used by message processor 78 for generating messages in response to events recorded in event database 62. The well-known recursive depth-first traversal has been augmented to determine which messages, if any, are to be generated and delivered to a recipient. The steps of the process are labeled “S1”, “S2”, “S3”, “S4” in the pseudocode and are referenced below parenthetically. The process identifies recipients by traversing paths in the directed graph constructed from relationship database 74 that originate with the object that is the subject of the newly created event by the call Traverse (V, { }) where V is the object that is the subject of the newly created event.
In Visitation 1, message processor 78 visits the “Tim” vertex, and {relationship_types seen_during traversal}={used-by}. All of the conditions of S3 are fulfilled by record 1 of the sample data given for message criteria database 76 in
In the Visitation 2, message processor 78 visits the “Susan” vertex, and {relationship_types_seen_during_traversal}={used-by, employed-by, supervised-by}. All of the conditions of S3 are fulfilled by record 2 of the sample data given for message criteria database 76 in
Thus, one newly created event has resulted in two proto-messages for two distinct recipients based on two distinct relationships, the first direct and the second indirect, to the object that is the subject of the newly created event, namely “Computer 123”.
In Visitation 1, message processor 78 visits the “Kristen” vertex and {relationship_types_seen_during_traversal}={used_by}. All of the conditions of S3 are fulfilled by record 1 of the hypothetical data given for message criteria database 76 in
In Visitation 2, message processor 78 visits the “Finance” vertex and {relationship_types_seen_during_traversal}={used_by, employed_by}; the conditions of S3 are not fulfilled and no proto-message is generated.
In Visitation 3, message processor 78 visits the “Susan” vertex, and {relationship_types seen_during traversal}={used-by, employed-by, supervised-by}. All of the conditions of S3 are fulfilled by record 2 of the sample data given for message criteria database 76 in
Step A3:
Message instruction generator 82 examines, using ways well known in the art, proto-message database 80 and, if needed, asset database 62 and generates message instructions for message server 24.
Step A4:
Based on these message instructions, message server 24 creates one or more messages.
Step A5:
The messages are delivered by one or more of message delivery mechanisms 30-36. In some embodiments, steps A1, A2, A3, A4 and A5 are separate and distinct steps, while in other embodiments, two or more of the steps are combined into one or more combined steps.
A message system for asset management has been described above, with reference to
As shown in
As shown, message server 124 is coupled to receive message instructions from database server 112 and to send messages to various output servers, such as an e-mail server 130, a FAX server 132, a voice mail server 134 and a textual page server 136, that serve as message delivery mechanisms. These output servers provide the same functions as the output servers described above with reference to
Automated messaging system 100 is, in many ways, similar to asset management system 10 shown in
New information or data, updates to information or data (including mass updates), security for information or data, transfer of responsibility for information or data, inventory of information or data, verifications relating to information or data, the interaction of modules, the interaction between one or more modules and one or more external devices (such as described in reference to
Those skilled in the art will recognize that other input and output modules can be added to or substituted into this system. Those skilled in the art will also recognize that the number of input and output modules need not be the same in every embodiment.
As shown in
Message criteria database 176 records the conditions under which recipients should be notified of an event recorded in event database 162. Message criteria entry system 140 is used by recipients to record these conditions (e.g., via an HTML page that displays a list of event types from which recipients can choose). Message criteria database 176 also records the message delivery mechanisms (shown as e-mail server 130, FAX server 132, voice mail server 134 and textual page server 136 in
Automated message generator 170 examines the events captured in event database 162 and the contents of message criteria database 176 to determine what messages are to be generated and delivered to which recipients via which message delivery mechanisms. Automated message generator 170 passes message instructions to message server 124, for delivery to recipients using one or more message delivery mechanisms.
Message instruction generator 182 receives a proto-message from proto-message database 180 and retrieves information or data from domain-specific database 160 to create a set of message instructions for message server 124. One way for message instruction generator 182 to interact with proto-message database 180 is for message instruction generator 182 to poll proto-message database 180 to determine when a new proto-message has been recorded. Another way for message instruction generator 182 to interact with proto-message database 180 is for proto-message database 180 to use an asynchronous mechanism (such as a database trigger) to inform message instruction generator 182 that a new proto-message has been recorded. Other ways may also be used. Message instruction generator 182 can retrieve domain-specific information or data from domain-specific database 160 by ways well known in the art, such as SQL statements, to enable message instructions to include pertinent and/or identifying information or data.
Message server 124 retrieves the address of the recipient from recipient address database 184 by ways well known in the art, such as SQL statements.
While the various components of automated message generator 170 are shown in close proximity in
The flow chart presented in
While the above is a complete description of specific embodiments of the invention, additional embodiments are also possible. For example, automated message generator 170 could be configured to generate a signal that performs an action (such as opening a door or changing the state of a switch) rather than generating a message. Therefore, the above description should not be taken as limiting the scope of the invention, which is defined by the appended claims along with their full scope of equivalents.
Claims
1-14. (canceled)
15. A computer readable medium containing a plurality of data structures that facilitate indirect message generation, each of said plurality of data structures comprising:
- an attribute that defines a relationship type between a child and a parent object, and
- a plurality of relationships associating said data structure with an object database, said object database identifying the type of said parent and child objects;
- wherein said plurality of data structures are configured in a tree-structure hierarchy facilitating backwards traversal from child to parent objects, and said attribute facilitates selective generation of messages to parent objects.
16.-20. (canceled)
21. A method in a messaging system of generating messages for delivery to recipients in response to events when specified conditions are met, comprising:
- recording a plurality of objects into an object database, wherein each object is one or more of a subject of an event or a recipient of a message;
- recording a plurality of recipient delivery addresses into a recipient address database, wherein each recipient address defines a message recipient address for a specific delivery mechanism;
- recording a plurality of message registrations into a message criteria database, wherein each message registration defines an associated set of message criteria that should trigger generation of at least one message, at least one associated message recipient and one or more delivery mechanisms for delivering generated messages to the at least one associated message recipient;
- recording a plurality of events into an event database;
- recording a plurality of hierarchical relationships between objects into a relationship database, wherein each object is associated with one or more of an event, a recipient or another object and wherein the hierarchical relationships form chains of relationships between objects from objects associated with events to recipients;
- matching each event with the message criteria and the chains of relationships with the message criteria to generate proto-message instructions;
- matching the proto-message instructions with the recipient addresses to transform the proto-message instructions into one or more message suitable for delivery to the recipient at the addresses and via the delivery mechanism in a corresponding entry in the recipient address database;
- delivering each message to its recipient at an address, originally recorded into the recipient address database, and via a delivery mechanism, originally recorded into the message criteria database, specified by the message recipient.
22. A system comprising:
- an action registration database, wherein each action registration in the action registration database defines a set of one or more entities that are subject of an action in response to a future event when the future event meets an action criteria associated with the action registration;
- a relationship database having at least one relationship instance that associates a relationship attribute with a first object and a second object, said first object and said second object having first object attributes and second object attributes, respectively;
- an action criteria database having at least one action criteria instance, the at least one action criteria instance having a plurality of action criteria attributes; and
- a processor that initiates an action in response to an event by identifying zero or more matching action registrations that match the event, and for each of the matching action registrations, matching the subjects of the matching action registrations with first objects according to first object attributes to identify zero or more matching first objects, mapping the matching first objects to a set of zero or more second objects using the relationship database, and initiating zero or more actions that match action criteria in the action criteria database associated with the matching action registrations using the set of zero or more second objects as subjects of the initiated actions.
23. The system of claim 22, wherein the actions are sending messages, the second objects are entities that can receive messages and the relationship database defines which entities get messages when events associated with first objects related in the relationship database to the second objects occur.
24. The system of claim 22, further comprising:
- a proto-message database for receiving a proto-message instance created by the processor;
- a message instruction generator that creates message instructions based upon the proto-message instance; and
- a message server that creates messages based upon the message instructions.
25. The system of claim 22, further comprising an object database that holds first object instances and second object instances associated with said first objects and second objects, respectively.
26. The system of claim 22, wherein said object attributes include object types.
27. The system of claim 22, further comprising an event database having at least one event instance that associates event types with first object instances.
28. In a messaging system for generating messages for delivery to recipients in response to specified conditions, an apparatus comprising:
- an object database that contains a plurality of object records wherein each object record has an associated object type, the types including a person object records and asset type records;
- an event database comprising event records, wherein an event record indicates an event with respect to a basis object, wherein the basis object for the event record is represented in the object data base by an asset type record;
- a relationship database separate from the object database, wherein the relationship database relates objects in the object database along relationship chains of one or more links; and
- a message processor that reads event records from the event database and generates for an event record, under the specified conditions, one or more proto-message relating to the event represented by the event record and objects of asset type, wherein the message processor also reads the object database and the relationship database to determine relationship chains associated with the object that is the subject of the event record.
29. The apparatus of claim 28, further comprising:
- logic for matching proto-message instructions with recipient addresses using a recipient database; and
- logic for delivering messages according to the results from the logic for matching proto-message instructions with recipient addresses.
30. A computer readable medium containing program code and data structures usable in a messaging system for generating messages for delivery to recipients in response to events when specified conditions are met, comprising:
- data structures or program code for generating data structures including an object database, a recipient address —database, a message criteria database, an event database and a relationship database;
- program code for recording a plurality of objects into the object database, wherein each object is one or more of a subject of an event or a recipient of a message;
- program code for recording a plurality of recipient delivery addresses into the recipient address database, wherein each recipient address defines a message recipient address for a specific delivery mechanism;
- program code for recording a plurality of message registrations into the message criteria database, wherein each message registration defines an associated set of message criteria that should trigger generation of at least one message, at least one associated message recipient and one or more delivery mechanisms for delivering generated messages to the at least one associated message recipient;
- program code for recording a plurality of events into the event database;
- program code for recording a plurality of hierarchical relationships between objects into the relationship database, wherein each object is associated with one or more of an event, a recipient or another object and wherein the hierarchical relationships form chains of relationships between objects from objects associated with events to recipients;
- program code for matching each event with the message criteria and the chains of relationships with the message criteria to generate proto-message instructions;
- program code for matching the proto-message instructions with the recipient addresses to transform the proto-message instructions into one or more message suitable for delivery to the recipient at the addresses and via the delivery mechanism in a corresponding entry in the recipient address database;
- program code for delivering each message to its recipient at an address, originally recorded into the recipient address database, and via a delivery mechanism, originally recorded into the message criteria database, specified by the message recipient.
31. A computer readable medium containing program code and data structures for initiating actions based on action subjects and chains of relationships from the action subjects, comprising:
- an action registration database, or program code to generate such a database, wherein each action registration in the action registration database defines a set of one or more entities that are subject of an action in response to a future event when the future event meets an action criteria associated with the action registration;
- a relationship database, or program code to generate such a database, having at least one relationship instance that associates a relationship attribute with a first object and a second object, said first object and said second object having first object attributes and second object attributes, respectively;
- an action criteria database, or program code to generate such a database, having at least one action criteria instance, the at least one action criteria instance having a plurality of action criteria attributes;
- program code for initiating an action in response to an event by identifying zero or more matching action registrations that match the event;
- program code for matching, for each of the matching action registrations, the subjects of the matching action registrations with first objects according to first object attributes to identify zero or more matching first objects;
- program code for mapping the matching first objects to a set of zero or more second objects using the relationship database; and
- program code for initiating zero or more actions that match action criteria in the action criteria database associated with the matching action registrations using the set of zero or more second objects as subjects of the initiated actions.
32. The computer readable medium of claim 31, wherein the actions are sending messages, the second objects are entities that can receive messages and the relationship database defines which entities get messages when events associated with first objects related in the relationship database to the second objects occur.
33. The computer readable medium of claim 31, further comprising:
- program code for generating a proto-action object instance according to at least action criteria and the set of zero or more second objects;
- a proto-action object database, or program code for generating such a database, for receiving the proto-action object instance;
- program code implementing an action instruction generator that creates action instructions based upon the proto-action object instance; and
- program code implementing an action server that initiates actions based upon the action instructions.
34. The computer readable medium of claim 31, further comprising an object database that holds first object instances and second object instances associated with said first objects and second objects, respectively.
35. The computer readable medium of claim 31, wherein said object attributes include object types.
36. The computer readable medium of claim 31, further comprising an event database having at least one event instance that associates event types with first object instances.
37. A computer readable medium containing program code for implementing a method of tracking assets using a computer, the program code comprising:
- program code for recording a plurality of message objects;
- program code for recording a plurality of message recipients;
- program code for accepting message registrations into a message criteria database, wherein each message registration defines a set of one or more message entities objects that are to receive a message of be considered in response to a future event when the future event relating to one or more tracked assets meets a message criteria associated with the message registration;
- program code for detecting message events based on changes to a database of tracked assets;
- program code for querying, for each detected message event, the message criteria database to identify at least one message registration with a message criteria satisfied by the detected message event, resulting in a message registration query result;
- program code for generating, for each detected message event, a message recipient set from the message recipient query result and a chain of relationships, wherein the chain of relationships is a query result of querying a relationship database and includes at least one parent object and at least one child object; and
- program code for sending a message to each of the message recipients in the message recipient set following detection of the message events.
Type: Application
Filed: Oct 5, 2004
Publication Date: Mar 17, 2005
Applicant: Frazier Spaeth LLC (Livermore, CA)
Inventor: Timothy Frazier (Livermore, CA)
Application Number: 10/959,643