Patent Publication Number: US-2003229559-A1

Title: Asset management platform

Description:
CROSS-REFERENCE TO RELATED APPLICATIONS  
     [0001] This application claims the benefit of U.S. Provisional Application No. 60/371,544, filed Apr. 9, 2002, U.S. Provisional Application No. 60/385,010, filed May 31, 2002, U.S. Provisional Application No. 60/385,008, filed May 31, 2002, U.S. Provisional Application No. 60/385,009, filed May 31, 2002, and U.S. Provisional Application No. 60/421,928, filed Oct. 28, 2002, all of which are hereby incorporated herein by reference. 
    
    
     
       BACKGROUND  
       [0002] 1. Field of the Invention  
       [0003] This invention pertains in general to computer-based monitoring and managing of mobile assets and in particular to a platform for providing management of a fleet of mobile assets.  
       [0004] 2. Background Art  
       [0005] Many enterprises, such as business and government agencies, rely on a set of widely-distributed assets in order to conduct business. For example, a delivery service uses a fleet of trucks to make deliveries. During the day, some of the trucks are being loaded at a central depot, some trucks are at various points on their delivery routes, and other trucks have completed their routes and are heading back to the central depot. Another example is a government agency having a pool of laptop computers that are temporarily assigned to employees. At a given time, some of the laptops are at the agency&#39;s offices, other laptops are at the employees&#39; homes, and still other laptops are “on the road” with traveling employees. A third example is a car rental agency having a fleet of cars. At a given time, some of the cars in the fleet are not rented and are stored in a parking lot or another central location. Other cars in the fleet are rented and are being driven around a city or other geographic area by the renters.  
       [0006] In each of these examples, the enterprise has a desire to track the movements of the mobile assets. The delivery service wants to know the locations of its trucks, the government agency wants to know the locations of its laptops, and the rental car company wants to know the locations of its cars. In addition, the enterprise may wish to track the assets&#39; movements in a way that allows for more sophisticated analysis. For example, the delivery service may want to know if a particular truck is running late on its route or has missed a stop and the government agency may want to locate a missing laptop. Likewise, the rental car agency may want to know if the renters are violating the rental contract by traveling outside geographic limits or speeding.  
       [0007] Accordingly, there is a need in the art for a way to track sets of potentially-mobile assets. A solution to this need should allow flexible and extensible tracking in order to support different enterprises and asset types. Moreover, the solution should provide flexible reporting and notification tools in order to meet the goals of the enterprises.  
       SUMMARY OF THE INVENTION  
       [0008] The above need is met by an asset management platform (AMP) having sophisticated message processing, reporting, and notification capabilities.  
       [0009] Each mobile asset has an asset tracking device (ATD) that allows the asset to send messages to the AMP reporting its location and other data. The AMP includes a network adapter module that interfaces with the ATDs to receive the messages. A router module routes the messages to a business operations middleware (BOM) module and/or other destinations.  
       [0010] The BOM module performs complex event processing and condition matching, enabling event-driven notification and multi-point routing, and providing machine-to-human, machine-to-machine, and machine-to-application communication. The BOM includes a queue router that routes the messages to zero or more processing queues. In one embodiment, the BOM includes four different processing queues to which the queue router can route messages: a message response queue; a location queue; a routing queue, and an event-action queue. Each queue is served by one or more associated subscriber modules. The subscriber modules read each message from the associated queue, perform processing of the message, and cause any output or external actions to occur in response.  
       [0011] The event-action queue subscriber module processes messages in the event-action queue according to event-action rules stored in a database. In one embodiment, the event-action rules include predicates and actions that realize well-defined interfaces. This decomposition allows new and custom predicates and actions to be easily added to the system. The predicates describe the possible states of the mobile asset and/or AMP, and the actions describe actions that can be performed if one or more of the predicates are satisfied. In one embodiment, the predicates are optimized to provide asset tracking and fleet management capabilities. Types of predicates include: spatial predicates, time predicates, asset input/output predicates, routing predicates, trend predicates, and movement predicates. Types of actions include: human notification actions, application notification actions, and device notification actions. The event-action queue subscriber evaluates the predicates against data in the messages and, if the predicates are satisfied, effectuates the actions.  
       [0012] Accordingly, a fleet manager or other end-user can establish event-action rules in the AMP to implement custom asset tracking, reporting, and notifying capabilities, as well as integration with other applications. 
     
    
    
     BRIEF DESCRIPTION OF THE DRAWINGS  
     [0013]FIG. 1 is a high-level block diagram illustrating an environment including an asset management platform (AMP) according to an embodiment of the present invention;  
     [0014]FIG. 2 is a high-level block diagram illustrating a more detailed view of the AMP of FIG. 1 according to one embodiment and other entities that can interface with the AMP;  
     [0015]FIG. 3 is a high-level block diagram illustrating a more detailed view of one embodiment of the business operations middleware (BOM) module in the AMP;  
     [0016]FIG. 4 is a high-level block diagram illustrating one embodiment of modules in the database of the AMP; and  
     [0017]FIG. 5 is a flow chart illustrating steps for utilizing the AMP to perform asset tracking according to one embodiment of the present invention. 
    
    
     [0018] The figures depict an embodiment of the present invention for purposes of illustration only. One skilled in the art will readily recognize from the following description that alternative embodiments of the structures and methods illustrated herein may be employed without departing from the principles of the invention described herein.  
     DETAILED DESCRIPTION OF THE PREFERRED EMBODIMENTS  
     [0019]FIG. 1 is a high-level block diagram illustrating an environment  100  including an asset management platform (AMP)  110  according to an embodiment of the present invention. FIG. 1 illustrates three mobile assets  112  in communication with the AMP  110 . The AMP  110 , in turn, is in communication with an end-user  114 . FIG. 1 and the other figures use like reference numerals to identify like elements. A letter after a reference numeral, such as “ 112 A,” indicates that the text refers specifically to the element having that particular reference numeral. A reference numeral in the text without a following letter, such as “ 112 ,” refers to any or all of the elements in the figures bearing that reference number (e.g. “ 112 ” in the text refers to reference numerals “ 112 A,” “ 112 B,” “ 112 C,” and/or “ 112 D” in the figures).  
     [0020] A mobile asset  112  is a thing that can be tracked by the AMP  110 . Examples of mobile assets include cars, trucks, ships, laptop and desktop computers, people, animals, packages, clothing, fine art, luggage, etc. The asset  112  need not be mobile at any given instance in time; in fact, some assets may be stationary for extended periods of time or not generally thought of as “mobile.” Accordingly, this description uses the phrase “mobile asset” to refer to both mobile and immobile assets. Only three mobile assets  112  are illustrated in FIG. 1 for purposes of clarity. However, typical environments  100  can have any number of mobile assets  112 .  
     [0021] Each mobile asset  112  has an asset tracking device (ATD)  116 . In one embodiment, the ATD  116  is a device that is physically attached to the asset  112 . For example, the ATD  116  can be a device that is physically installed in a car or truck, woven into the fabric of clothing, enclosed in a suitcase, painted on the top of a truck, etc. In another embodiment, the ATD  116  is integrated into the asset itself. For example, the ATD  116  functionality can be included in a personal computer through the integration of hardware and/or software modules. The ATD  116  and the mobile asset  112  are assumed to be at the same location at any given point in time, so that the location of the ATD is a proxy for the location of the mobile asset itself. For this reason, this description sometimes treats the ATD  116  and the mobile asset  112  as the same entity.  
     [0022] In general, the ATD  116  supports and/or provides two functionalities: 1) position determination; and 2) position reporting. In one embodiment, the ATD  116  provides position determination by having a conventional sensor adapted to use the satellite-based Global Positioning System (GPS) to determine the ATD&#39;s  116  current longitude, latitude, altitude, heading, velocity, etc. In other embodiments, an ATD  116  uses other position determination systems, such as an inertia-based tracking system, the Galileo satellite navigation system, a cellular telephone tower or television signal triangulation system, and/or an assisted GPS system such as the wide area augmentation system (WAAS). Different ATDs  116  in the environment  100  can use different position determination systems.  
     [0023] In one embodiment, the ATD  116  provides position reporting by having functionality for sending electronic messages reporting the ATD&#39;s position to the AMP  110 . One embodiment of the ATD  116  includes a processor and memory and is adapted to execute program code modules for generating messages. In one embodiment, the ATD  116  is configured to send messages at certain intervals, such as every 5 minutes or every day. In another embodiment, the ATD  116  is configured to send the messages upon the occurrence of one or more events, such as when the ATD&#39;s rate of acceleration exceeds a predetermined limit, when the ATD moves a certain distance, when a car door is unlocked, and/or when the ATD has moved within a certain distance of a predetermined location. The ATD  116  can also be adapted to change its position-reporting logic in response to messages received from the AMP  110  or another entity.  
     [0024] The messages generated by the ATD  116  preferably contain data describing aspects of its associated mobile asset  112 . In one embodiment, a message contains some or all of the following data: an ATD identification (ID) specifying the ATD  116  that generated the message; a device type ID that specifies the type of ATD that generated the message; a mobile asset ID identifying the mobile asset  112  with which the ATD is associated; an enterprise ID identifying the enterprise with which the mobile asset/ATD is associated; a message type field specifying the event that caused the message to be generated; a status message field identifying the status of one or more sensors of the mobile asset; location information describing the current location of the mobile asset; and time information specifying the date/time when the message was generated. Messages can include other data in addition to, or instead of, the data described herein.  
     [0025] In one embodiment, the ATD  116  uses conventional cellular wireless communication technologies to exchange messages with the AMP  110 , including cellular telephone technologies using the cell control channel, cellular digital packet data (CDPD), general packet radio service (GPRS), etc. The ATD  116  can also use conventional wireless computer networking technologies, such as 802.11, to communicate with the AMP  110 . In other embodiments, the ATD  116  utilizes satellite-based communication technologies, non-cellular based radio communication technologies, and/or other technologies. Communication between the ATD  116  and the AMP  110  is preferably bi-directional and the ATD and AMP can utilize different technologies for different directions of communication.  
     [0026] In one embodiment, at least some of the functionality of the ATD  116  is performed in combination with another entity. For example, the ATD  116  include a radio frequency (RF) identification (RFID) tag or bar code that is read when it comes within range of a scanner. The scanner, in turn, generates the message and transmits it to the AMP  110 .  
     [0027] The AMP  110  exchanges messages with the ATDs  116  and provides sophisticated data-driven message processing capabilities. The processing capabilities are utilized to provide monitoring, managing, reporting, and notifying functionality to the end-users  114 . For example, in one embodiment the AMP  110  provides functionality for monitoring and managing a fleet of trucks on delivery routes. AMP  110  processes messages from the trucks to perform functions such as determining whether trucks are on schedule, whether trucks have deviated from assigned routes, whether the trucks are speeding, etc.  
     [0028] The end-user  114  illustrated in FIG. 1 is representative of a person, computer system, application, or other entity that communicates with the AMP  110  to access the monitoring, managing, reporting, and/or notifying functionalities. The AMP  110  and end-user  114  can communicate via a variety of technologies and interfaces. For example, the end-user can communicate with the AMP  110  using a telephone-based interactive voice response (IVR) interface, a web page-based interface, an email interface, data exchanged via a network connection utilizing the transmission control protocol/Internet Protocol (TCP/IP), and/or a dedicated application interface. The end-user  114  can utilize a variety of devices to access these interfaces, including a telephone, computer system, pager, etc. These communications can utilize conventional wired and/or wireless data and/or voice communications links. Although only one end-user  114  is shown in FIG. 1, embodiments of the environment  100  have many end-users.  
     [0029]FIG. 2 is a high-level block diagram illustrating a more detailed view of one embodiment of the AMP  110  and other entities interfacing with the AMP. In one embodiment, the AMP  110  comprises one or more modules executing on a conventional computer system. As used herein, the term “module” refers to computer program logic and/or any hardware or circuitry utilized to provide the functionality attributed to the module. Thus, a module can be implemented in hardware, firmware, and/or software. Embodiments of the AMP  110  can have different and/or additional modules than the ones described herein. Moreover, in different embodiments the functionality of the AMP  110  is distributed throughout the modules in a manner different than described herein.  
     [0030] The AMP  110  includes a network adapter module  210  (referred to herein as the “network adapter”) for interfacing with the mobile assets  112 . The network adapter  210  includes functionality for receiving messages from the mobile assets  112  and for sending messages to the mobile assets. In one embodiment, the network adapter  210  is comprised of multiple sub-adapters, with each sub-adapter configured to interface with a particular communication medium utilized by the mobile assets  112 . For example, in one embodiment a sub-adapter is configured to interface with the mobile assets  112  via cellular telephone network technologies such as CDPD and/or GSM, a second sub-adapter is configured to interface with the mobile assets via networking links to the Internet, and a third sub-adapter is configured to interface via a satellite-based communications medium.  
     [0031] The formats of the messages exchanged between the network adapter  210  and the mobile assets  112  vary depending upon the communication technology and media utilized to transport the messages. For example, the messages can be formatted to provide data in fixed-width fields, to provide data as name=value statements, and/or to provide data as name/length/value statements. In one embodiment the messages are transported over a packet-switched network and, therefore, are encapsulated in a packet-based representation. Other embodiments utilize other data representations for the messages.  
     [0032] The network adapter  210  converts messages received from mobile assets  112  from the representation utilized by the mobile assets into a standardized representation utilized by the AMP  110  (and vice versa). In one embodiment, the standardized representation is an extensible markup language (XML)-based well-formed data structure having fields and corresponding data that can be read by the other modules in the AMP  110 . In one embodiment, the characteristics of the data structure are determined by the type of ATD  116 , communication media, and/or sub-adapter involved in the message exchange.  
     [0033] A protocol handler  212  is adapted to receive the messages (i.e., the data structures corresponding to the messages) from the network adapter  210 . For each message, the protocol handler  212  preferably discerns how to read the data structure. In one embodiment, the protocol handler  212  reads the device type ID and a network adapter ID (added by the network adapter  210 ) from the message. These two IDs allow the protocol handler  212  to identify the type of ATD  116  and communication medium. The protocol handler utilizes this information to parse the data structure of the message and access the data contained therein.  
     [0034] The protocol handler  212  also preferably augments the message by adding any missing information that can be derived from the data in the message. For example, in one embodiment the message from the mobile asset  112  includes a device ID but not an enterprise ID. The protocol handler  212  accesses a database  214  correlating device IDs with enterprise IDs and obtains the enterprise ID associated with the message. The protocol handler  212  inserts the enterprise ID into the message.  
     [0035] A database module  214  (referred to herein as the “database”) holds data utilized by the other modules in the AMP  110  to process the messages. The database  214  is described in more detail below.  
     [0036] A user interface (UI) module  215  provides an interface through which an end-user  114  can access the functionality of the AMP  110 . In one embodiment, the UI module  215  provides a graphical user interface (GUI) that an end-user can access via the Internet, another computer network, and/or a direct connection in order to monitor and configure the AMP  110 . The GUI includes a series of web pages with which the end-user  114  interacts.  
     [0037] A router module  216  (referred to herein as the “router”) is adapted to receive augmented messages from the protocol handler  212  and route the messages to one or more destinations. Routing tables  412 , stored in the database  214  and/or another location, specify where to route the messages. The router  216  analyzes the data in the message, applies the routing tables  412  to the data, and routes the data accordingly. In one embodiment, the routing tables  412  specify that the router  216  route a copy of every message to a business operations middleware (BOM) module  222  (referred to herein as the “BOM”) in the AMP  110 .  
     [0038] The routing tables  412  can also specify that the router  216  route copies of messages to the protocol handler  212  and/or to application modules  218  (referred to herein as “applications”). The applications  218  can be internal or external to the AMP  110 . The router  216  thus provides a way for non-AMP-based applications  218  to tap into the stream of messages to/from the mobile assets  112  and BOM  222 . For example, an enterprise using the AMP  110  to track a fleet of mobile assets  112  can execute an application  218  that processes messages from assets in the fleet. In order to display a map with real time locations of assets, allow dynamic routing of assets, etc. In one embodiment, the applications  218  utilize application adapters  220  to convert messages received from the router  216  into formats suitable for the applications (and vice-versa).  
     [0039] The BOM  222  performs complex event processing and condition matching, enabling event-driven notification and multi-point routing, and providing machine-to-human and machine-to-machine communication. The BOM  222  also provides uninterrupted operation when message processing logic is altered and/or new mobile assets  112  are introduced to the environment  100 .  
     [0040] An end-user adapter module  224  (referred to herein as the “end-user adapter”) interfaces with end-users  114 . The end-user adapter  224  converts messages to the end-users  114  from the format utilized by the BOM  222  and/or other modules in the AMP  110  into the proper format for communicating the message. For example, the end-user adapter  224  can convert an output message into a voice message, an email, an update on a web page, etc.  
     [0041] A job scheduler module  226  (referred to herein as the “job scheduler”) supports functionality in the AMP  110  utilizing timing and/or scheduling. The job scheduler  226  is called by other modules in the AMP  110  to establish timers. The job scheduler  226  maintains state information about the timers and generates timer messages when a timer expires. The timer messages include meta-information describing the reason for the timer and the mobile asset  112 , enterprise, or other entity with which it is associated. The timer messages are provided to the router  216  for processing in the same manner as other messages.  
     [0042] As described above, the operation of the AMP  110  is preferably bi-directional. Thus, application modules  218  and/or BOM  222  can generate, process, and send messages to the mobile assets  112 . Those of skill in the art will recognize that the operation of the various modules may vary depending upon whether a module is receiving a message from the mobile assets  112  or sending a message to a mobile asset.  
     [0043]FIG. 3 is a high-level block diagram illustrating a more detailed view of the BOM  222  of FIG. 2. Messages sent by the router  216  to the BOM  222  are received by a parsing module  310  (referred to herein as the “parser”). The parser  310  parses each well-formed data structure of a message into an internal representation of the message utilized by the BOM  222 . In one embodiment, the internal representation is an XML-based data structure.  
     [0044] The parser  310  passes the message (i.e., the internal representation of the message) to a data transformation module  312  (referred to herein as the “data transformer”). The data transformer  312  augments the message by adding state information and other data stored in the database  224  to produce a fully-formed, normalized message. In one embodiment, the data transformer  312  normalizes the message received from the mobile asset  112  into a specific category of message utilized by the BOM  222 . For example, the data transformer  312  can normalize an “ignition off” message received from a mobile asset  112  into an “asset stopped” message and normalize an “airbag deployed” message from a mobile asset into an “asset crashed” message.  
     [0045] The data transformer  312  passes the normalized messages to a queue routing module  314  (referred to herein as the “queue router”). The queue router  314  uses routing tables to route the messages to zero or more processing queues based on the message types and/or other information in the message. In one embodiment, the BOM  222  includes four different processing queues  316  to which the queue router  314  can route messages: a message response queue  316 A; a location queue  316 B; a routing queue  316 C; and an event-action queue  316 D.  
     [0046] The message response queue  316 A stores messages received from mobile assets  112  in response to queries sent to the assets. For example, the AMP  110  can send a message to a mobile asset  112  requesting that the asset report its position and/or the status of a sensor. When the mobile asset  112  generates a response message, the queue router  314  routes a copy of the message to the message response queue  316 A.  
     [0047] The location queue  316 B stores messages describing the current locations of mobile assets  112 . In one embodiment, most messages from mobile assets  112  include location information and, therefore, the queue router  314  routes copies of most messages into the location queue  316 B.  
     [0048] The routing queue  316 C stores messages that come from mobile assets  112  that are operating geographic routes (e.g., delivery routes). If the queue router  314  determines that the message is from a mobile asset  112  on a geographic route, the queue router routes a copy of the message to the routing queue  316 C.  
     [0049] The event-action queue  316 D stores messages having associated event-actions stored in the database  214 . In general, the event-actions are processing rules that act on messages. It will be understood that not every event has an associated action. Indeed, the event-action rules provide flexibility in responding to messages from mobile assets and allow the behavior of the AMP  110  to be data-driven and context-sensitive. If the queue router  314  determines that the message and/or mobile asset  112  has associated event-actions, the queue router routes a copy of the message to the event-action queue  316 D. In one embodiment, the queue router  314  identifies applicable event-action rules by querying the database  214  for rules associated with the message, the ID of the mobile asset  112 , the ID of the ATD  116 , the ID of an enterprise with which the mobile asset is associated, etc.  
     [0050] Each queue  316  is served by one or more associated subscriber modules  318  (referred to herein as “subscribers”). The subscribers  318  read each message from the associated queue, perform processing of the message, and cause any output or external actions to occur in response. In one embodiment, each queue  316  has a dedicated subscriber  318  that contains functionality for dealing with the type of messages in the queue. There can be multiple instances of a subscriber  318  and, in one embodiment, each message in a queue  316  is handled by a separate instance of the appropriate subscriber.  
     [0051] Turning now to the specific subscribers  318 , the message response subscriber  318 A processes the responses from the mobile assets  112  and updates the database  214  if necessary. For example, if a response includes a value of a sensor at the mobile asset  112 , the subscriber  318 A updates an appropriate field in the database  214  with the value of the sensor. The message response subscriber  318 A also communicates the content in the responses to the application  218  and/or end-user  114  that initially requested the response. In one embodiment, the message response subscriber  318 A also acts as an exception handler. If a response from a mobile asset  112  contains an abnormal or unexpected value and/or other data indicative of a problem with the mobile asset, the message response subscriber  318 A flags the exception and initiates an exception handling routine. This routine can, for example, update a value in the database  214 , send an alert notification to an end-user  114 , insert a message in another queue, and/or perform other actions.  
     [0052] In one embodiment, the message response subscriber  318 A maintains state information in the database  214  allowing it to associate responses in the message response queue  316  with messages sent to the mobile assets  112 . For example, the message response subscriber  318 A can use the device ID associated with the mobile asset&#39;s ATD  116  to pair messages sent to and received from the mobile asset.  
     [0053] The location queue subscriber  318 B manages an asset location information module  414  in the database  214 . The location queue subscriber  318 B reads current locations from the messages in the location queue  316 B and updates the module  414  in the database  214  to reflect the assets reported locations.  
     [0054] The routing queue subscriber  318 C updates mobile asset geographic route information in the database  214  in response to the data in the messages in the routing queue  316 C. For example, the subscriber  324  can update the database  214  to indicate that a mobile asset  112  has made a stop on a route, is running late, has finished the route, etc.  
     [0055] The event-action queue subscriber  318 D processes messages according to event-action rules stored in the database  214 . In general, the event-action queue subscriber  318 D receives a message from the queue, queries the database  214  to identify the event-action rules that apply to the message, evaluates the events, and performs any specified actions.  
     [0056]FIG. 4 is a high-level block diagram illustrating modules in the database  214  according to one embodiment of the AMP  110 . In different embodiments of the AMP  110 , the database  214  holds different and/or additional modules than those described herein. Although FIGS. 2 and 4 illustrate a centralized database  214 , embodiments of the AMP  100  have distributed databases.  
     [0057] The database  214  includes a message normalization data module  410 . This module  410  holds data utilized by the network adapter  210 , protocol handler  212 , parser  310 , data transformer  312  and/or other modules in the AMP  110  to normalize and augment messages received from the mobile assets  112 . For example, in one embodiment the message normalization data module  410  holds data correlating device IDs and enterprise IDs.  
     [0058] A routing tables module  412  holds routing tables for use by the router  216 , queue router  314 , and/or other modules in the AMP  110 . An asset location information module  414  describes the locations of the mobile assets  112 , including the current locations and travel histories. An asset route information module  416  describes geographic routes associated with the mobile assets  112  and related information, such as whether a mobile asset has completed stops on the route. A state information module  418  holds data describing the state of the AMP  110 , such as information utilized by the message response queue subscriber  318 A to pair messages and responses.  
     [0059] An event-action rules module  420  stores event-action rules utilized by the event-action queue subscriber  318 D to process messages in the event-action queue  316 D. In one embodiment, the event-action rules module  420  stores predicates and actions representing potential event-action rules. The predicates describe the possible states of the mobile asset  112  and/or AMP  110 , and the actions describe actions that can be performed if one or more of the predicates are satisfied. The event-action rules module  420  also stores data describing predicates and actions that have been combined to form instances of event-action rules applicable to specific mobile assets, enterprises, etc. In one embodiment, event-action rules are represented as a set of IF {PREDICATE} THEN {ACTION} statements.  
     [0060] In one embodiment, the predicates are optimized to provide asset tracking and fleet management capabilities. To this end, there are several classes of predicates: spatial predicates, time predicates, asset input/output (I/O) predicates (also referred to as “sensor control predicates”), routing predicates, trend predicates, and movement predicates. Multiple predicates can be combined using conditional logic to form complex predicates. In addition, additional predicates can be made available to the platform  110  by loading new predicates into the event-action rules module  420 . Other embodiments have other classes of predicates instead of, or in addition to, the ones described herein.  
     [0061] Spatial predicates evaluate the location of a mobile asset  112 . For example, a spatial predicate can determine if a mobile asset  112  is within a certain distance of a location, if the asset has violated specified geographic borders (e.g., borders established by a geofence), etc.  
     [0062] Time predicates evaluate the behavior of the mobile asset  112  with respect to a time limit or time period. For example, a time predicate can determine whether a mobile asset  112  has moved within the last X minutes, whether the asset has reported its position within a specified time interval, whether the asset has remained near a geographic location for longer than a specified interval, etc.  
     [0063] Sensor control predicates evaluate the condition of a sensor at the mobile asset  112 . For example, a sensor control predicate can determine whether an ignition is on or off, whether a door is open or closed, whether an air bag has deployed, the amount of gas in a gas tank, etc.  
     [0064] Routing predicates evaluate the condition of a mobile asset  112  with respect to a geographic route. For example, a routing predicate can determine whether an asset has made a stop on the route, whether the asset is behind or ahead of schedule, whether the asset is within X minutes of making a delivery, etc.  
     [0065] Trend predicates evaluate the current message in the context of historical messages received from a mobile asset  112 . For example, a trend predicate can assess whether an asset has failed to maintain its delivery schedule for the second time in a week, whether an asset  112  has exceeded a speed limit for the third time in a 24 hour period, etc.  
     [0066] Movement predicates evaluate the current rate of travel reported by the mobile asset  112 . For example, a movement predicate can determine whether a current rate of travel exceeds or falls below a set limit (e.g., whether the mobile asset is speeding), whether an average rate of travel exceeds or falls below a set limit, etc.  
     [0067] The actions in the event-action rules module  420  describe output and control functions that the AMP  110  can perform if one or more predicates is satisfied. As with predicates, additional actions can be added to the platform  110  by loading the actions into the event-action rules module  420 . Other embodiments have other types of actions instead of, or in addition to, the ones described herein.  
     [0068] The output functions generally provide notifications to humans, applications, and/or ATDs  116 . The human notifications include making a telephone call, sending an electronic page, updating a web page or an IVR system, etc. Application notifications include calling a function in an application program interface (API), sending a message to an application via the Internet or another network, updating a module in the database  214 , etc. Device notifications include sending a message to an ATD  116  at one or more mobile assets  112  in order to update data stored at the ATD, reconfigure the ATD, and/or change the ATD&#39;s behavior. The control functions generally establish or alter control logic in the AMP  110 . For example, a control function can update a module in the database  214 , insert a message into one or more of the queues  316 , and/or interface with the job scheduler  226  to start or stop a timer.  
     [0069] In one embodiment, the event-action rules are established by an end-user  114  who utilizes the GUI provided by the UI module  215  to select and associate predicates and actions. In another embodiment, the end-user  114  selects and activates pre-established event-action rules.  
     [0070] The event-action rules allow the AMP  110  to perform many asset tracking and fleet management functions. For example, the event-action rules can be configured to automatically place a telephone call to a person when a taxi is nearing a pickup location. Likewise, the event-action rules can be configured to send a page to a fleet manager when a sensor at a mobile asset  112  indicates than an airbag has deployed. In another example, the event-action rules can tell a billing application to bill a customer once a truck has made a delivery at the customer&#39;s location.  
     [0071]FIG. 5 is a flow chart illustrating steps for utilizing the AMP  110  to perform asset tracking according to one embodiment of the present invention. It should be understood that other embodiments of the present invention may perform different and/or additional steps than those described herein in order to perform different and/or additional tasks. Furthermore, the steps can be performed in different orders and/or performed by different entities than described herein. In one embodiment, the AMP  110  performs multiple instances of the steps concurrently as messages are received from, and sent to, the mobile assets  112 .  
     [0072] Initially, an end-user  114  establishes  510  an event-action rule. This step can be performed by a person using a web browser to access web pages provided by the UI module  215 , by an application  218  executing autonomously, or by another entity in communication with the AMP  110 . In one embodiment, the event-action rule is established by identifying a pre-existing rule, marking it as active, and supplying any parameters utilized by the rule&#39;s predicates and/or actions. The AMP  110  stores the event-action rule in the database  214 .  
     [0073] At some point after the event-action rule is established  510 , the AMP  110  receives  512  a message from a mobile asset  112 . For example, the message can be a periodic location update. The modules in the AMP  110  normalize and augment the received message (if necessary), to create a fully-formed message.  
     [0074] The queue router  314  analyzes the message and places  514  it in the one or more queues  316  in the BOM  222  appropriate for the message. The message typically includes the location of the mobile asset  112  and, therefore, the queue router  314  places a copy of the message in the location queue  316 B. If the queue router  314  determines that the message has associated event-action rules in the database  214 , the queue router places a copy of the message in the event-action queue  316 D. The queue router  314  can also place the message in one or more of the other queues  316  depending upon the characteristics of the message.  
     [0075] Each subscriber  318  associated with a queue that received a copy of the message reads the message from the queue  316  and processes the message. In particular, the subscriber  318 D for the event-action queue  316 D reads the message from the queue and queries the database  214  to identify  516  the associated event-action rules. The subscriber  318 D evaluates  516  the event-action rule. If the predicate(s) for the event-action rule is satisfied, the subscriber  316 D performs  518  the specified action(s) (or calls other modules that perform the action). If the predicate(s) is not satisfied, the subscriber  318 D does not perform the action. Once the action is performed, or if no actions are performed, the process returns to step  512  where it waits for another message from a mobile asset  112  or other source.  
     [0076] The following “long stop” example illustrates how the AMP  110  can be used to perform asset tracking in the real world. A “long stop” occurs when a mobile asset  112  does not move for a predetermined time period. Assume a fleet manager wants to be notified when a truck on a route remains immobile for longer than 30 minutes. Thus, the fleet manager establishes  510  an event-action rule for detecting a long stop. The fleet manager uses the GUI provided by the UI module  215  to define and activate a rule stating:  
                                                  IF                         MOBILE ASSET is immobile for TIME PERIOD                         THEN                         NOTIFY END-USER.                      
 
     [0077] In this rule, “MOBILE ASSET” is a parameter that indicates the asset or assets for which the rule is applicable, “TIME PERIOD” is a parameter that indicates the length of time that MOBILE ASSET must be immobile in order to satisfy the predicate, “NOTIFY” is a parameter that indicates the type of action to perform if the predicate is satisfied, and “END-USER” is a parameter indicating the person or other entity to whom the action is directed. The fleet manager uses the GUI to specify that “MOBILE ASSET” is the trucks in the fleet, “TIME PERIOD” is 30 minutes, “NOTIFY” is a telephone call, and “END-USER” is the fleet manager. The AMP  110  stores the event-action rule in the database  214 .  
     [0078] The AMP  110  receives and normalizes messages from the trucks in the fleet. Certain messages from the trucks are normalized into “asset stopped” messages that indicate that the trucks have stopped moving. These messages are processed by the BOM  222 , where the subscriber  318 D for the event-action queue  316 D correlates the message with the long stop rule from the database  214 .  
     [0079] To effectuate the long stop event-action rule, the event-action queue subscriber  318 D calls the job scheduler  226  and activates a 30 minute timer associated with the stopped truck. After 30 minutes, the job scheduler  226  generates a message indicating that the timer expired and including metadata allowing the subscriber  318 D to associate the timer message with the stopped truck. The timer message is placed in the event-action queue  316 D. Upon receipt of the timer message from the queue  316 D, the subscriber  318 D examines the asset location information  414  in the database  214  to determine whether the truck has moved since the timer was set. If the truck has not moved, the “long stop” predicate is satisfied. Therefore, the subscriber  318 D carries out the action by having the end-user adapter  224  place a telephone call to the fleet manager.  
     [0080] In sum, the AMP  110  according to the present invention provides an intelligent, articulated, and configurable platform for performing fleet management and other asset tracking functions. The platform provides customizable real-time event-actions and intelligent data routing and integration. Moreover, the platform is highly-scalable and supports multiple types of ATDs  116  and communication media.  
     [0081] The above description is included to illustrate the operation of the preferred embodiments and is not meant to limit the scope of the invention. The scope of the invention is to be limited only by the following claims. From the above discussion, many variations will be apparent to one skilled in the relevant art that would yet be encompassed by the spirit and scope of the invention.