Abstract:
An enterprise link for a software database is coupled to existing enterprise systems within an organization and also to an active data cache. The enterprise link contains an active designer whereby a user is able to create one or more data flow definitions on how to operate on data stored in the enterprise systems as the data in those systems changes. The transformed data is transmitted to a data flow service in the enterprise link in real-time where it is made available to end-users in the active data cache. It is emphasized that this abstract is provided to comply with the rules requiring an abstract that will allow a searcher or other reader to quickly ascertain the subject matter of the technical disclosure. It is submitted with the understanding that it will not be used to interpret or limit the scope or meaning of the claims. 37 CFR 1.72(b).

Description:
FIELD OF THE INVENTION  
         [0001]    The present invention relates generally to information technology in an enterprise, more particularly, to a system and method for acquiring and integrating data from disparate sources in an enterprise and for making the data continuously available, in real-time, to users.  
         BACKGROUND  
         [0002]    A paramount concern in a modern enterprise is the ability to quickly access changing information located on disparate systems and platforms within the enterprise. In order to properly maintain a comprehensive view of the operations and business processes within an organization, however, information on these systems needs to be integrated. For example, as an enterprise grows it requires increased flexibility of data sharing throughout its various automated business systems, such as customer relations management (CRM), enterprise resource planning (ERP), accounting, inventory control, and other systems. A practice known as enterprise application integration (EAI) enables an organization to share data throughout applications and data sources in an organization. EAI may include database linking, application linking, and data warehousing.  
           [0003]    Nevertheless, there have been numerous shortcomings in the integration and data sharing in information technology (IT) environments. Independent configuration for disparate technologies and industry standards often make integration requirements difficult to meet. Integrating an existing inventory control system to a new ERP software package, for instance, may be difficult due to the fact that both systems contain unique features that are customized to fit the requirements of particular areas within an organization. Moreover, many EAI solutions contain a confusing web of point-to-point connections between different applications, procedure calls, file transfers, and e-mail-type messaging to transmit organizational data. These solutions are thus high-risk because of their complexity. Moreover, the data within the individual systems is often locked up, sometimes in proprietary form, difficult to access, and not correlated with other systems and platforms. This makes it difficult to get a consistent, coherent view of all the business data across the enterprise.  
           [0004]    Yet another major shortcoming of prior EAI systems is that they are unable to source data from anywhere in the enterprise and to provide automated, in-depth analysis of events in the organization that happen as the events occur. Although some business processes are able to function with slow access to information, the availability of access to real-time information regarding the status and operation of business processes can greatly impact the profitability and efficiency of an organization. What is needed is a comprehensive business platform that enables companies to gather, organize, and deliver in real-time the disparate data driving their businesses  
       
    
    
     BRIEF DESCRIPTION OF THE DRAWINGS  
       [0005]    The present invention will be understood more fully from the detailed description that follows and from the accompanying drawings, which however, should not be taken to limit the invention to the specific embodiments shown, but are for explanation and understanding only.  
         [0006]    [0006]FIG. 1 is a block diagram of an enterprise link connected to existing enterprise systems and to an active data cache according to one embodiment of the present invention.  
         [0007]    [0007]FIG. 2A is a block diagram of message queue processing using the enterprise link of FIG. 1.  
         [0008]    [0008]FIG. 2B is a block diagram of a HTTP and API data request processing using the enterprise link of FIG. 1.  
         [0009]    [0009]FIG. 3 is an example of data stored in tabular form in an active data cache according to one embodiment of the present invention.  
         [0010]    [0010]FIG. 4 is a flow chart illustrating the steps of an active design process using an active designer according to one embodiment of the present invention.  
         [0011]    [0011]FIG. 5 is a flow chart illustrating the steps of utilizing an enterprise link system to obtain real-time data from disparate systems in an organization according to one embodiment of the present invention.  
         [0012]    [0012]FIG. 6 is an example of a computer system on which the present techniques may be implemented.  
     
    
     DETAILED DESCRIPTION  
       [0013]    The present invention provides an enterprise link for a software database. In the following description numerous specific details are set forth, such as the particular configuration of message queues to handle continuous, real-time data acquisition, the architecture of the enterprise link, and the details regarding specific enterprise systems in order to provide a thorough understanding of the present invention. However, persons having ordinary skill in the communication arts will appreciate that these specific details may not be needed to practice the present invention.  
         [0014]    Referring now to FIG. 1 there is shown a block diagram of an enterprise link connected to existing enterprise systems and to an active data cache according to one embodiment of the present invention. The existing enterprise systems may include legacy systems such as existing hardware and software packages, for example, single-purpose and/or multi-purpose applications designed to perform various functions within an organization (e.g., inventory, finance, accounting, sales force automation, human resources, etc.). There is shown in FIG. 1 a simplistic view of an enterprise computing runtime environment  101  containing a plurality of enterprise systems including packaged software applications such as “back office” applications  102  for enterprise resource planning (ERP), “front-office” applications  103  for customer relationship management (CRM), customized legacy systems  104 , and multidimensional/relational database management systems (RDBMS)  105 . Of course, a variety of other applications (not shown in this view) may also exist in the enterprise computing runtime environment  101 . These disparate systems may be coupled to one another using a local area network (LAN)  106 , a wide area network (WAN) or any other such networking environments commonplace in offices, enterprise-wide computer networks, the intranet, and the Internet. Further, network may include a wireless network, such that one or more computers may operate over a wireless LAN.  
         [0015]    As is known in the art, the existing enterprise systems contain a variety of different data about the organization. For example, the ERP system  102  may contain data regarding essential business functions including payroll, manufacturing, general ledger, and human resources whereas the CRM system  103  may contain core information regarding the organization&#39;s customers. As data in these various systems changes (e.g., a sale is made, a new employee is hired, payroll is processed, etc.), one or more message queueing systems  107  may be used to allow these various applications  102 , 103 ,  104 , etc., to exchange information on the data being stored in their systems. To this end, one implementation of the present invention employs a message queue server (e.g., the Microsoft RTM message Queue Server (MSMQ) although other message queuing systems may be used as well), to provide loosely-coupled and reliable network (across servers) communication services based on a message-queueing model. In MSMQ, messages are sent to a queue, where the message will stay until it is removed and used by another application. In this manner, loosely-coupled applications can share data to provide an enterprise-wide view of information, such as data and business transactions.  
         [0016]    An enterprise link  110  is coupled to the enterprise computing runtime environment  101  through a network connection, such as the Internet  111 . Of course, as is noted above, the network connection may also be a LAN, a WAN, a wireless network, or any other system of connections that allows one or more computers to exchange information. The enterprise link  110  integrates, in real-time, the disparate data in the message queues. The enterprise link  110  of the present invention is always active. It continuously accepts raw data feeds  121 ,  122 ,  123 , etc., from the existing enterprise systems, and then reformats, synchronizes, and consolidates the data. In a traditional model, the data in the message queues would only be processed through the dataflow system when a specified number of records had built up within the message queues (i.e., the data would be transmitted in batch mode). According to an algorithm contained within the data flow system of the present invention, however, individual records are processed through to the enterprise link  110  the moment that they appear (i.e., the program continuously checks for messages). In this manner, real-time data flow is transmitted through the raw data feeds  121 ,  122 ,  123  via the message queues. It should be noted that although a message queueing system is used in one embodiment, the enterprise link  100  may also obtain data from the enterprise computing runtime environment  101  in a variety of other ways. These sources of data may be, for example, HyperText Transport Protocol (“HTTP”) requests and/or Application Programming Interface (“API”) calls and/or Web Services calls. In these alternative embodiments, the enterprise link  110  contains a web server to process the HTTP requests and/or another application or server to process the API and/or Web Service calls.  
         [0017]    Regardless of how the enterprise link  110  receives the raw data feeds  121 ,  122 ,  123 , etc., the enterprise link  110  transmits the data it receives from the enterprise computing runtime environment  101  via a network connection  140  or through some other connection (not shown in this view) to an active data cache (ADC)  120 . The ADC  120  is a high-performance, memory-based persistent cache which stores the data  131 ,  132 , 133 , etc., it receives from the enterprise link  110 . The ADC  120  contains code which may be implemented in software such as Java , Perl, C++, or other types of programming languages that can be stored on a computer-readable medium (e.g., a disk) to manage the data  131 ,  132 , 133 , etc., that is actively changing within the enterprise computing runtime environment  101  and to make the data accessible to the end-user (not shown in this view) in real-time. In this manner, the data  131 ,  132 ,  133 , etc., in the ADC  120  is constantly changing in that it is synchronized in real-time with the data in the enterprise runtime computing environment  101 . The data  131 ,  132 ,  133 , etc., in the ADC  120  is persistent to disk  140 , but this disk  140  is only used for backup, restore, and recovery purposes.  
         [0018]    An active designer  154  is the component of the enterprise link  110  that determines what data will be contained within the ADC  120  and also the process by which the data  131 ,  132 ,  133 , etc., will be transmitted to the ADC  120 . As is shown in FIG. 1, the active designer  154  is also connected to the enterprise computing runtime environment  101  via the Internet  111 . In essence, the active designer  154  contains one or more lists of data flow definitions (not shown in this view) on how to operate on the data that is transmitted to the active designer  154  through the network connection  111 . Again, the code for the data flow definitions may be implemented in software such as JAVA, Perl, C++, C#, or other types of programming languages that can be stored on a computer-readable medium. For example, when sales data arrives at the ERP  102 , the active designer  154  contains a set of data flow definitions on how to retrieve, transform, and display this data (i.e., each data flow definition includes executable software code instructing the enterprise link  110  to retrieve the salesperson field whenever a sale is made, to describe how many sales that salesperson has made for the day, and then to transmit this data to the ADC  120 ). This mapping process (i.e., the process by which the enterprise link  110  is able to express data from multiple sources through various transformations and to transmit the transformed data to specified destinations) will be described in more detail in reference to FIG. 2A.  
         [0019]    Referring now to FIG. 2A there is shown a block diagram of message queue processing system using the enterprise link of FIG. 1. As is noted above, a variety of message queuing systems may be used in practicing the present invention (e.g., Microsoft RTM Message Queue Server). As data changes in the plurality of enterprise systems in the enterprise computing runtime environment  101 , the data is sent to the enterprise link  110  in data feeds through message queues  140 . The data that comes through the message queues  140  may come from disparate sources (i.e., the ERP system  102 , the CRM  103 , customized legacy systems  104 , etc.). The active designer  154  divides the data into transaction channels  155  (i.e., the method by which the data arrives) and transaction formats  156  (i.e., the method by which the data is interpreted). In the embodiment illustrated by FIG. 2A, Extensible Markup Language (XML) is used to specify the format of the records (as well as the values to be used in those records). It should be noted, however, that other types of data formats may be used as well. The data is then interpreted as logical instances of transaction sources  150  and transmitted to a data flow service  160 . The data flow service  160  is part of the enterprise link  110 . As is noted above, the data may also be transmitted to the enterprise link through HTTP requests and/or API calls and/or Web Services. FIG. 2B illustrates a web server  135  in the enterprise link  110  receiving data through HTTP requests  136  and API calls  137 .  
         [0020]    According to the embodiment illustrated by FIG. 2A, the data flow service  160  contains a plurality of data flow plans  162 ,  164 , 166 , as well as a data repository  170  which contains one or more lists of data flow definitions on how to operate on the data. As is described above, the active designer  154  creates the lists of data flow definitions which are stored in the data repository  170 . However, it is the data flow service  160  that actually executes or edits the data flow plans  162 ,  164 ,  166 , etc., when it is time to do so. One exemplary data flow service that can be utilized is the one described in U.S. Pat. No. 6,243,698 entitled “Extensible Database Retrieval and Viewing Architecture,” which is incorporated herein by reference. Of course, other types of data flow services may be used as well. The data flow plans  162 ,  164 ,  166 , etc., include executable code for accessing, manipulating, and/or outputting data received from the enterprise computing runtime environment  101 . A plan monitoring service  175  is connected to the data flow service  160 . The plan monitoring service  175  examines all the data flow plan links to datasets  180  that are defined in the ADC  120  and causes the data flow service  160  to run the plans associated with each dataset. The plan monitoring service  175  also includes a user interface  185  to monitor the data flow service  160  to ensure that all of the data flow plans  162 ,  164 ,  166 , etc., are being executed properly. In one embodiment, the user interface  185  allows the data flow plans  162 , 164 , 166 , etc., to be extensible. That is, through the user interface  185  new steps can be defined without having to change the application to support the new steps. The user interface  185  can thus extend the application (i.e., create a new set of transaction channels and transaction formats) without having to recompile the enterprise runtime computing environment  101 . The enterprise link  110  is also able to replicate existing metadata in the enterprise runtime computing environment  101  by importing datasets definitions from the existing enterprise systems into the active designer  154  through network link  170 . In this manner, whenever an enterprise link  110  is installed in an organization, an entirely new set of metadata conforming to the existing enterprise systems within the organization does not need to be defined by the active designer  154 .  
         [0021]    [0021]FIG. 3 is an example of data stored in a data set in tabular form in an active data cache according to one embodiment of the present invention. In the embodiment illustrated by FIG. 3, the enterprise link (not shown in this view) is used to monitor the state of a casino business in real-time. For example, all of the gaming devices (e.g., slot-type machines, video-poker machines, lottery machines, etc.) in a particular casino (not shown in this view) may be connected to a database server (e.g., such as an Oracle™ server) using a communication interface associated with each gaming device. The tabular form  190  contains a variety of data entry fields and associated labels. There is a data entry field for the slot-type machine identification  191 , for the identification of the current player operating the slot machine  192  (e.g., as identified by a player card inserted in the slot machine), for the amount of time the slot machine is idle  193 , and for the payout over time  194 . Every time data changes (e.g, every time a particular player uses an identified machine), the data generated by the machine will be recorded into the database. This data will be transmitted by the database server to the enterprise link over a network (not shown in this view) through a message queueing system Alternatively, the data generated by the slot machine could be sent directly to the message queueing system through some intermediate application monitoring the machine, bypassing the data base recording step. Using the enterprise link in the manner described herein, the data will then be manipulated by the data flow service according to the executing data flow plans that were created by the active designer (See FIG. 2A). This data is then transmitted via a network connection (not shown in this view) to the ADC where it is stored and made accessible to the end-user. This data may be accessed by the end-user from anywhere across the enterprise (or even across the globe, if necessary, using an Internet connection). In this manner, the data may be used for real-time decision making to give the business a competitive edge (e.g., by providing the end-users with the ability to monitor the gaming habits of specific players).  
         [0022]    Of course, although data stored in tabular form for a casino business is shown in FIG. 3, it should be noted that the tabular form of the present invention may contain a variety of different data entry fields to keep an end-user appraised in real-time about the events occurring anywhere across the enterprise in the course of conducting the business of the enterprise. For example, a chemical plant could specify database entry fields tailored to monitor dangerous changes within the chemical plant. In a second example, health care providers could specify database fields for a patient&#39;s medical history, diagnosis, and drug treatment plans. In yet another example, retail organizations could specify database fields for product sales and increases and decreases in inventory. In all of these examples, access to real-time recognition of business events in the database format would lead to heightened profitability and give the business a competitive edge.  
         [0023]    [0023]FIG. 4 is a flow chart illustrating the steps of an active design process using an active designer according to one embodiment of the present invention. In operation, the active designer is essentially a user-interface that allows an organization to customize the data stored in the ADC (i.e., to create data sets along with one or more lists of data flow definitions associated with each data set that specify how to operate on the data that is transmitted to the ADC in real-time via the enterprise link). A user determines what datasets need to be stored in the datasets in the ADC (processing block  201 ). This process involves both a creation of the data entry fields that are to be included in the datasets (processing block  202 ) and designating who should have access to these fields (processing block  203 ). The user then creates one or more lists of data flow definitions on how to operate on the data in response to messages arriving on the message queues (or HTTP or API calls or Web Services) (processing block  204 ) (e.g., keep a record of every order, of the person who made the order, of the time the order occurred, and then notify every salesperson in the organization about the order)(processing block  205 ). In operation, the data in an enterprise runtime computing environment is then interpreted as logical instances of transaction sources (processing block  206 ) and is transmitted to a data flow service in the enterprise link in real time (processing block  207 ) where it is translated (processing block  208 ) and used to create and/or update one or more data sets in the ADC (i.e., made available to end-users) (processing block  209 ).  
         [0024]    Referring now to FIG. 5 there is shown a flow chart illustrating the steps of utilizing an enterprise link system to obtain real-time data from disparate systems in an organization according to one embodiment of the present invention. An event occurs in an enterprise system within an organization (processing block  210 ). Data about the event is entered into an existing enterprise system within the organization (e.g., a CRM system) (processing block  211 ). The data is transmitted over the Internet to an enterprise link through the message queuing system (processing block  212 ). A data flow service in the enterprise link executes one or more data flow plans to operate on the data that is transmitted by the existing enterprise systems (processing block  213 ). The data is transmitted to an ADC (processing block  214 ) where it is made accessible to an end-user ( 215 ).  
         [0025]    Referring now to FIG. 6 there is shown an example of a computer system on which the present techniques may be implemented according to one embodiment of the present invention. The computer system  300  includes a processor  302  coupled through a bus  301  to a random access memory (RAM)  303 , a read only memory (ROM)  304 , and a mass storage device  305 . Mass storage device  305  could be a disk or tape drive for storing data and instructions. A display device  306  for providing visual output is also coupled to processor  302  through bus  301 . Keyboard  307  is coupled to bus  301  for communicating information and command selections to processor  302 . Another type of user input device is cursor control unit  308 , which may be a device such as a mouse or trackball, for communicating direction commands that control cursor movement on display  309 . Many other input devices well known in the art may also be used. Further coupled to processor  302  through bus  301  is an input/output (I/O) interface  310  which can be used to control and transfer data to electronic devices connected to computer  300 , such as other computers, tape records, and the like. The processor  302  may also be connected to a telephony interface  312  through bus  301 . It should be noted that although display device  306 , keyboard  307 , and cursor control unit  308  may be included in the computer system  300 , they are typically not essential for the computer system  300  to operate after the software has been installed.  
         [0026]    Network interface device  311  is coupled to bus  301  and provides a physical and logical connection between computer system  300  and the network medium (not shown in this view). Depending on the network environment in which computer  300  is used, this connection is typically to a server computer, but it can also be to a network router to another client computer. Note that the architecture of FIG. 3 is provided only for purposes of illustration, and a client computer used in conjunction with the present invention is not limited to this specific architecture.  
         [0027]    In the foregoing, an enterprise link for a software database has been described. Although the present invention has been described with reference to specific exemplary embodiments, it should be understood that numerous changes in the disclosed embodiments can be made in accordance with the disclosure herein without departing from the spirit and scope of the invention. The preceding description, therefore, is not meant to limit the scope of the invention. Rather, the scope of the invention is to be determined only by the appended claims and their equivalents.