Patent Publication Number: US-7587459-B2

Title: Remote application publication and communication system

Description:
CROSS-REFERENCE TO OTHER APPLICATION 
   This application is a continuation application of U.S. Ser. No. 10/122,433, filed Apr. 16, 2002, the entirety of which is incorporated herein by reference. 

   FIELD OF THE INVENTION 
   The present invention relates to a system and method for publishing applications and integrating them over the Internet. More particularly, the present invention is a system and method for providing access over the Internet to remote applications that are published on remote computers that communicate through a service agent. 
   BACKGROUND OF THE INVENTION 
   Presently, there are a variety of systems and methods in use for publishing and communicating with applications residing on computers connected to distributed networks such as the internet. One such method is to publish applications coded in the Javascript programming language on websites. When a user visits the website, the Javascript code is downloaded to their local computer and run within the web browser or java console of the local computer. Such systems require the receiving end computer to be equipped with necessary hardware and software resources to execute the downloaded application. This makes it unusable for accessing via small devices such as PDAs and mobile computing devices. 
   Another way is using active server pages. This technology executes a script at the server-end and transmits the results in HTML form to the client computer. Although it resolves the resource issue, i.e. any user running a web browser can view the results sent from the server, it makes the data unusable for integration (or further processing) at the receiving-end because it only represents the picture of results—the HTML code. 
   With above mentioned arts, publishing an application to the Internet requires a static IP address to permit client nodes to locate the publishing computer as a server node. This requires a special connection such as DSL lines or leased lines and also costs extra money to maintain them. Further, it inhibits the deployment of publishing computers over easily accessible dial-up internet service providers that use the point-to-point protocol to assign an IP address dynamically to a client. Another major disadvantage of having a static IP address is that it opens up the publishing computer to access by anyone via Internet, hence it introduces a large risk of being hacked. 
   One technology that has attempted to address security concerns is Virtual Private Networking (VPN). VPN requires both the client and the server ends to be closed using end-to-end encryption. Further, this requires the client to authenticate the connection using a username and password. As a result, it is unusable for publishing an application or web services to the Internet for access by persons using typical thin-client interfaces, such as web browsers. 
   Therefore, a method that would allow computers to publish applications or web services over the Internet without exposing it to risks associated with using a static IP address at the publishing computer would be a great advantage from security standpoint. 
   Moreover, it would be beneficial to have a system that delivers HTML or XML to the client computer yet allows users to bind data received from one Service (application that is exposed to the Internet) to another Service to allow integration between services. 
   Further, Internet based services generally require users to request information but do not notify users when events occur. Therefore, it would be beneficial to have a system that monitors conditions on behalf of the user and provides notification to the user when a predefined condition occurs, without requiring user intervention. 
   It would be further beneficial to bind such an event from one service to an action of another service to make an automatic, personalized integration. Additionally, it would be greatly advantageous if the specialized software could communicate with notification systems to provide unsolicited alerts and/or actions to remote devices via cellular phones, pagers, electronic mail systems, etc., when preset conditions have been met. 
   SUMMARY OF THE INVENTION 
   The invention is a system and method that permits a software application to be published on a remote computer terminal, with the capability to monitor predefined conditions and generate events, as well as receive such events from another service, and perform an action. According to an embodiment of the invention, the remotely published software application has a corresponding translation file that is read by a service agent. The translation file provides the service agent with the necessary parameters to interpret and process the data received from the remote software application and to also send commands, data, or other instructions to the remote software application. 
   An advantage of the present invention is that a user can access the remote software application via the Internet to monitor, in real time, data being collected by the remote software application. Further, another software program can monitor the data collected by the remote software application and compare the data with parameters stored in a database to determine if a condition has arisen that requires further action. The further action may include notifying a person, security company, fire company, police station, etc., of the condition that has arisen by either electronic mail, cellular pager, cellular telephone, any similar communications device, or combinations thereof. More importantly, the system could notify another application that is published using the same invention to perform a further action, initiate notification itself, or initiate some other action. Hence the present invention provides personalized integration over the Internet, by allowing a user or system administrator the ability to tie groups of resources together, software applications and services in particular, that will interact with one another through sets of rules that dictate what each software application should do in response to certain criteria, e.g., when a notification parameter or other parameter has been met. 
   For example, if one service is a remotely published application that monitors environmental conditions in a large office building. A user connecting to the Internet with a thin-client such as a web browser can set up a second service that includes notification conditions, e.g., events that must occur to trigger when a notification message will be sent to the user. One condition may be when the temperature on any floor of the building reaches a preset level. The remote application publishes the temperature over the Internet to a service agent allowing the user&#39;s second service to compare the data to the user&#39;s notification conditions. The user&#39;s second service may be the service agent itself, a second service agent, or an application or service running on a central server that received published data from the service agent. If the temperature on a floor of the building reaches the user&#39;s preset level, a notification can be sent to the user via email, a web browser, cellular phone, page, etc. Alternatively, some other action could be initiated when the user&#39;s notification condition is met, e.g., an alarm is sounded, the HVAC system of a monitored building is activated, etc. Further the user may wish to publish numerous remote applications, each carrying out a different function, as,a set of web services. 
   This system and method is particularly advantageous for remote building maintenance and security, travel and reservations systems, and other businesses where it is desirable to access real-time data from a variety of locations and provide notice to selected parties upon the occurrence of pre-defined events or perform further actions. 
   The system for publishing applications for access over the Internet of the present invention includes a published application stored on a computer readable medium, a service agent stored on the same or another computer readable medium in electronic communication with the published application, and a translation file accessible by the service agent and containing parameters for identifying the i/o format of the published application to permit the service agent to communicate with the published application. In one embodiment of the invention, the translation file is an XML (extended markup language) format data file. 
   The present invention may further comprise a remote application computer comprising a central processing unit and at least one storage device comprising a computer readable medium. The service agent, the published application, and the translation file are stored on computer readable media on the storage device or on separate storage devices accessible to the remote application computer. 
   The invention can further comprise a central server in electronic communication with said remote application computer. The function of the central server is to establish electronic communication with at least one, and preferably numerous, remote application computers over the internet or a wide area network. In such case, the remote application computer connects to the central server as a client node on the Internet, unlike in the prior art where it is required to publish as a server node with a static IP address. According to this feature of the invention, the remote application computer does not maintain an open port to receive connections. Instead, it only initiates communications with the central server. In the instances that the remote application computer is not in communication with the central server, the remote application computer is not open to any communication. In the instances where the remote application computer is in communication with the central server, it&#39;s communication port does not listen to further connection requests or remote procedure calls and thus is not open to unauthorized access. 
   This feature of the invention thus eliminates the risk of the remote computer being exposed to Internet as a server node and accessible for hacking, thereby introducing a security layer to the published application 
   An application server is also included and is in electronic communication with at least one central server. The application server includes a parameter database that comprises data that can comprise, but is not limited to, user logon information, permission files, and network addresses of at least one central server. The application server permits users connected to the application server via user terminals that are connected to the internet, but not necessarily directly to the application server, to view data collected or generated by the published applications, perform functions carried out by the remote applications, and to receive notifications, alerts, or other messages from the central server when specific conditions arise that are identified in a parameter file stored by the central server. 

   
     BRIEF DESCRIPTION OF THE DRAWING FIGURE 
       FIG. 1  is a schematic representation of a computing network including a published application according to the present invention. 
   

   DETAILED DESCRIPTION OF THE INVENTION 
   The present invention is a system and method that permits the publication of applications on local computers that are connected to distributed networks in a manner that allows remote users and computers on the network to communicate with the published application. Such a system includes, for example, monitoring software that is published on a computer for the purpose of monitoring and tracking the security, environment, or other condition existing within an office building, hotel, or other facility. A user located at a remote location, such as at the offices of a security service, fire station, etc., may wish to have real-time access to the data collected and generated by the published application and, optionally, for proper entities to be notified when certain conditions arise. 
   With reference to FIG. , in an embodiment of the present invention, a central server  10  is in electronic communication with a remote application computer  20 . The communication can be achieved via any known communications protocol and over any known type of network transport, i.e., fixed phone lines, cellular network, ethernet networks, etc. Those skilled in the art will recognize that there are many protocols used on such networks including TCP/IP, HTTP, ethernet, X.34, etc. It is permissible to mix network types and protocols to permit communication between various networks when, for example, the remote application computer  20  communicates with the central server  10  via an ethernet connection and the central server communicates with a general application server  30  that, in turn, communicates with remote clients  32  via TCP/IP and/or HTTP protocol over the internet. This permits the remote clients  32  to run any type of operating system convenient for the user and to employ a wide variety of user interfaces. Most commonly, however, the remote clients  32  will use a web browser as the user interface and communicate with the general application server  30  via the internet using a combination of the TCP/IP and HTTP protocols. Alternatively, the remote client  32  can be a computer that receives data from the remote application computer  20  for the purpose of routine monitoring or to ensure that conditions, such as temperature, HVAC operation, or other environmental conditions are maintained within specified parameters at a particular location. 
   The remote application computer  20  includes a service agent  22 , a published application  24 , and a translation file  26 . The service agent  22  is an application that permits the remote application computer to be identified by and to communicate with the central server  30 . By employing a service agent  22  for this purpose, the remote application computer  20  does not require a static IP address to be located and identified by the central server  30  for communication. Static IP addressing may, however, be used for the remote application computer  20 , if desired. 
   To avoid unauthorized access to the remote application computer  20 , this computer is connected to the network as a client node. A client node, in this instance, is capable of electronic communication with the central server  10 , but does not maintain an open port to receive connections. The central server  10  maintains an open port for connections and, thereby, permits access to the published application  24  on the remote application computer  20  by authorized network users. 
   In one embodiment of the invention, the remote application computer  20  includes a dynamically assigned IP address. Since dynamic IP addresses can change between sessions when the remote application computer  20  is connected to the network, and because the remote application computer  20  connects to the network as a client node, it is extremely difficult for unauthorized network users to locate, access, or communicate with the remote application computer  20 . Prior art methods and systems required a publishing computer to establish itself as a server node on the network with a static IP address. 
   Thus, according to the present invention, when acting as a client node, the remote application computer  20  transmits its IP address to the central server  30  when it connects to the network, allowing the central server  30  to establish a communication link with the data published by the service agent  22 . Moreover, by establishing the remote application computer  20  as a client node, unauthorized access to the published data and service agent  22  are inhibited, since a “hacker” would first have to know the location of the remote application computer  20  on the internet, i.e., the IP address, before attempting to hack into the computer and access data stored thereon. 
   The translation file  26  can be a text file, XML (extended markup language) file, or similar file known in the art that contains a set of parameters that permits the service agent  22  to communicate with the published application  24 . To allow the use of a published application  24  that is unrestricted in the form of its data output, the translation file  26  is opened and read by the service agent. The information stored in the translation file  26  includes the format of the data output from the published application  24 , the type of data output from the published application  24  and any additional information that might be required by the service agent  22  to communicate with the published application  24 . Those skilled in the art will readily recognize that the translation file  26  contains the basic protocol (also referred to in the art as i/o format) necessary for communication between the service agent  22  and the published application  24 . By configuring the remote application computer  20  in this manner, it eliminates the need for the published application  24  to be programmed to input and output information in a particular format to communicate with the service agent  24 . 
   Although only a single remote application computer  20  is shown in the drawing figure, it is preferred that the central server  10  be in electronic communication with a plurality of remote application computers  20 . It is possible, for instance to set up a system according to the present invention wherein multiple central servers operate worldwide. Individual servers  10  can be employed, for example to cover North America,  15  Asia, Europe, and the Pacific Rim, with each central server  10  in electronic communication with dozens, hundreds, or even thousands of remote application computers, depending on the operating capacity of the central server (i.e., storage space, processing power, network bandwidth, etc.) Creating the system of the present invention in this manner would permit a company to operate a worldwide building environmental monitoring network, hotel reservation system, or other system where it is desirable to receive and coordinate data from a large variety of locations. Since each location has the ability to publish a remote software application  24  that can communicate with the central server  10  via the translation file  26 , the present system enables each location to publish an application that is tailored to the specific needs at that location. Such specific needs may include local software that is in a particular language, software that monitors specific environmental conditions for a large building, software that monitors security status at a financial institution or office building, a conference room reservation system at a convention center, etc. It is also possible for multiple service agents to communicate with one another and for a user&#39;s parameter file to include instructions to notify a particular service agent when an event occurs. 
   Data that is input to or monitored by the remote application computer  20  is transmitted to the central server  10  via a direct link, distributed network, wireless network or other electronic means. The central server  10  may store the data received from the remote application computer  20  or, in one embodiment, compare the data against parameter files stored in a database  12  to determine if some condition has been met that requires the central server  10  to initiate further action such as to send an alert or other message. For example, when the remote application computer  20  is monitoring the environmental conditions of an office building and senses that the temperature is rising above the value stored in the parameter file in database  12 , the server may initiate an electronic mail message, cellular phone call, cellular pager message, etc., to the building superintendent or other party responsible for the office building. Since the parameter files in the central server&#39;s  10  database  12  can include a wide variety of “if . . . then . . . else” type instructions for the central server  10  to follow upon receipt of data from the remote application computer  20 , it is possible for the central server  10  to perform many functions. 
   In the previous example, a party is notified of the occurrence of an event that is monitored by the remote application computer  20  and reported (by the electronic transmission of data) to the central server  10  because a comparison of data received by the central server to notification conditions included in the parameter file indicated that a notification condition had arisen. Thereafter, the notified party may desire to access and review the data collected by the remote application computer  20  by logging onto the network via a user terminal  32  to obtain additional information or access the building&#39;s environmental control systems. In the absence of notification, the present system allows a remote user to access current monitoring conditions and any data previously collected by the remote application computer  20 , if such data is chosen to be stored at either the remote application computer  20  or the central server  10 . 
   The user terminal  32  may be any computer in electronic communication with the central server  10  via an application server  30 . Typically, the communication between the user terminal  32  and the application server  30  will be via the internet. Private networks, however, such as wide area networks and local area networks can also be structured according to the present invention. Further, the user terminal  32  may be a wireless device such as a handheld computer, cellular telephone, or other device that includes the capability of communicating with other computers across a network. 
   To access the data, information, or other functions that can be performed by the remote application computer  20  (such as, but not limited to, controlling environmental systems, making reservations, controlling security systems, and performing building maintenance functions), the user employs the user terminal  32  and establishes a connection with the application server  30 . The application server includes a logon database  34  that includes identification data for each user recognized by the system. Such information typically includes a logon ID, password, and a set of “permissions” for each user. The permissions for each user will include the remote application computer  20  that a user is permitted to access and the functions they are permitted to execute on that computer. The function may be accessing data, managing data, performing system maintenance, and/or accessing control systems (particularly when the remote application computer  20  has the capability of interfacing with the environmental control system, security system, or other building maintenance or operation system). Further, it is possible to integrate the application server  30  and central server  10  onto the same workstation computer, structure the system to operate the servers on separate computers, or use combinations thereof when multiple central servers  10  or application servers  30  are employed. One function of the application server  30  will be to keep track of the central server  10  to which the remote application computer  20  is in electronic communication with, and to route data and instructions between the user terminal  32 , appropriate central server  10 , and any remote application computers  20  which the user is permitted to access. This provides the user with the ability to monitor and carry out functions remotely for any location where a remote application computer  20  is installed. 
   The central server  10  maintains routing information for any remote application computers  20  connected thereto, and it is responsible for routing data from the remote application computer to the application server  30  which, in turn, routes communications to the user terminal  32 . To enable the transmission of data, information, and instructions between the published application  24  and user terminal  32 , the service agent  22  running on the remote application computer  20  conducts all communications between the published application  24  and central server  10 . 
   Periodically, or solely at start-up, the service agent  22  will contact the central server  10  and supply the central server with an indication that the remote application computer  20  exists on the network at a particular location. In the instance where the remote application computer  20  is connected to the central server  10  via the internet, the service agent  22  will transmit the IP (internet protocol) address of the remote application computer  20  to the central server  10 . This permits the central server  10  to route communications to the remote application computer  20 . The central server  10  may communicate periodically with the service agent  22  to verify that the remote application computer  20  or published application  24  operating thereon remains accessible and online. Further, there may exist a parameter in the database  12  to notify a particular user when a specific remote application computer  22  or published application  24  goes online or offline. Communication between the service agent  22  and the published application  24  is facilitated by the translation file  26 , but it is not required for there to be any additional intermediary processing or computing between the service agent  22  and the published application  24 . 
   The various applications referred to herein may also reside and run on computers as services. The applications described herein may run as typical applications or as services and services and applications may both be used while carrying out the present invention. For example, if one service is a remotely published application that monitors environmental conditions in a large office building. A user connecting to the Internet with a thin-client such as a web browser can set up a second service or application that includes notification conditions, e.g., events that must occur to trigger when a notification message will be sent to the user. One condition may be when the temperature on any floor of the building reaches a preset level. The remote application publishes the temperature over the Internet to a service agent allowing the user&#39;s second service to compare the data to the user&#39;s notification conditions. The user&#39;s second service may be the service agent itself, a second service agent, or an application or service running on a central server that received published data from the service agent. If the temperature on a floor of the building reaches the user&#39;s preset level, a notification can be sent to the user via email, a web browser, cellular phone, page, etc. Alternatively, some other action could be initiated when the user&#39;s notification condition is met, e.g., an alarm is sounded, the HVAC system of a monitored building is activated, etc. Further the user may wish to publish numerous remote applications, each carrying out a different function, as a set of web services.