WO2001069383A1 - Method and apparatus for providing services to a user of a client device configured by templates that reference other templates - Google Patents

Method and apparatus for providing services to a user of a client device configured by templates that reference other templates Download PDF

Info

Publication number
WO2001069383A1
WO2001069383A1 PCT/US2000/027587 US0027587W WO0169383A1 WO 2001069383 A1 WO2001069383 A1 WO 2001069383A1 US 0027587 W US0027587 W US 0027587W WO 0169383 A1 WO0169383 A1 WO 0169383A1
Authority
WO
WIPO (PCT)
Prior art keywords
template
client device
server
client
templates
Prior art date
Application number
PCT/US2000/027587
Other languages
French (fr)
Other versions
WO2001069383A9 (en
Inventor
Anthony C. Fascenda
Original Assignee
Aether Systems, Inc.
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Aether Systems, Inc. filed Critical Aether Systems, Inc.
Priority to AU2000278649A priority Critical patent/AU2000278649A1/en
Publication of WO2001069383A1 publication Critical patent/WO2001069383A1/en
Publication of WO2001069383A9 publication Critical patent/WO2001069383A9/en

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/4401Bootstrapping
    • G06F9/4411Configuring for operating with peripheral devices; Loading of device drivers

Definitions

  • the present invention relates generally to a method and apparatus for providing services to a user of a client device used in a communication system.
  • a typical client-server environment includes a client application, such as an Internet web-browser, and a server application respectively executing on independent computer based platforms and communicating with one another.
  • the client application submits information requests to the server application in response to user input at the client end.
  • the server transmits information responses to the client application.
  • the user interacts with the client- server environment using a Graphical User Interface (GUI) of the client application.
  • GUI Graphical User Interface
  • a large number of client and browser applications can operate in a distributed service environment.
  • a distributed service environment is one in which the numerous client applications interact with one or more server applications, each of the server applications hosting a wide variety of data services provided by a variety of "private" and possibly public service providers.
  • Wireless client devices including the above mentioned client applications can operate in such a distributed service environment.
  • the user interacts with available services via the client application.
  • the client application provides user functionality so that the user can interact with the client device and thereby access the services.
  • the client application is a complex computer program stored in a memory of a client device and executable on one or more processors of the client device.
  • a client application expands to accommodate more user functionality - for example, to access more and/or expanded services
  • the expanded client application can require correspondingly more memory in the client device.
  • a memory limited client device such as a pager
  • user functionality requirements are high, thus requmng relatively complex client applications.
  • memory resources are scarce Therefore, there is a need to provide high levels of user functionality in a client application, but at the same time, limit memory requirements.
  • the present invention is directed to a method and an apparatus for providing services to a user of a client device configured by templates that reference other templates.
  • the client device and a server communicate with each other over a communication network.
  • the client device includes templates that define a configuration of the client device, and thereby establish a level of user functionality at the client device.
  • the templates can determine the data services a user can access using the client device, including various data service options and/or features.
  • the configuration can determine the way in which the client device interacts with the user to provide user access to the data services.
  • Complex templates can be used to configure the client device and to estab sh a high level of such user functionality.
  • a template is broken down or sub-divided into smaller templates referred to as "include files".
  • the template includes references to the "include files”. In this way, a complex template can be simplified and modula ⁇ zed using the include files. This simplifies template development, and as a result, the development of high levels of user functionality at the client device using the complex
  • a plurality of templates can reference a single included file to significantly reduce the amount of memory required to store the plurality of templates.
  • This reduction memory results because the information in the single include file (which may require a large amount of memory) is removed from each of the plurality of templates and replaced in each template with a single reference to the include file.
  • One embodiment of the present invention is a method used a communication system for providing data services to a user.
  • the communication system includes a client device communicating with a server over a communication network.
  • the client device includes a client template database for sto ⁇ ng a plurality of templates defining a client device configuration.
  • the method uses templates that reference other templates, and includes the steps of receiving a user request entered at the client device, and retneving a first template associated with the user request from the client template database
  • the first template includes a reference to a second template.
  • the method further includes sending a client request from the client to the server over the communication network.
  • the client request includes a first template identifier corresponding to the first template.
  • the method also includes receiving a server response from the server at the client device, wherein the server response includes data service information relating to one of the first and second templates.
  • the server includes a server template database for sto ⁇ ng a plurality of templates defining client device configurations.
  • the method includes the step of receiving a client request from the client device, the client request including a first template identifier corresponding to a first template, the first template including a reference to a second template.
  • the method further includes determining a server response based on the first and second templates, and sending the server response from the server to the client device over the communication network.
  • FIGS. 1A and IB illustrate exemplary communications systems which the present invention is useful
  • FIG. 2A illustrates an exemplary two-way communications client device for use with the present invention
  • FIG. 2B is an illustration of a paging device manufactured by Research In
  • FIG. 3 is an illustration of a logical architecture corresponding to the communication system of FIGs. 1A and IB and the communications device of FIG. 2A.
  • FIG. 4A is an illustration at a high level of an embodiment of a template used in the logical architecture of FIG. 3.
  • FIG.4B is a diagrammatic representation of an exemplary content portion of a template used in the logical architecture of FIG. 3.
  • FIG. 4C is an illustration of a completed template or display page corresponding to the template of FIG. 4B.
  • FIG. 4D is an illustration of a list of exemplary definitions or descriptors defining the template of FIG. 4B and the display page of FIG. 4C.
  • FIG. 5 is an illustration of an exemplary hierarchy of display pages.
  • FIG.6A is an illustration of an exemplary user interface including linked pages defined by a hierarchy of templates, before a template update in accordance with the present invention.
  • FIG.6B is an illustration of the exemplary user interface of FIG. 6B, after the template update.
  • FIG. 7A is an illustration of an exemplary information table stored in a server transaction database used in the logical architecture of FIG. 3.
  • FIG. 7B is an illustration of an exemplary information table stored in a server template database used in the logical architecture of FIG. 3.
  • FIG.8 is an illustration of an exemplary information table stored in a client transaction database of the client device of FIG. 2A.
  • FIG. 9A is an illustration of an exemplary information request message transmitted by a client application used in the logical architecture of FIG. 3.
  • FIG. 9B is an illustration of an exemplary information response message transmitted by a server application used in the logical architecture of FIG. 3.
  • FIG. 9C is an illustration of another exemplary information response message including a template update, in accordance with the present invention.
  • FIG. 10 is a flow chart of an exemplary method of requesting information at a client in the logical architecture of FIG. 3, according to an embodiment of the present invention.
  • FIG. 10A is a flow chart of an exemplary method of receiving and responding to an information response at a client in the logical architecture of FIG. 3, according to an embodiment of the present invention.
  • FIG. 11 is a flow chart of an exemplary method of responding to an information request of FIG. 10 at a server in the logical architecture of FIG. 3, according to an embodiment of the present invention
  • FIG. 11A is a flow chart of an exemplary method of responding to an information request of FIG. 10 including a Get_template command at a server in the logical architecture of FIG. 3, according to an embodiment of the present invention.
  • FIG. 12 is a flow chart of exemplary method steps expanding on the method of FIG. 11.
  • FIG. 13 is a illustration of exemplary display pages at a client device before and after receipt of an information response at the client device.
  • FIG. 14 is a graphical illustration of an exemplary use of include files, according to the present invention.
  • FIG. 15 is an illustration of exemplary details of a quote template of FIG. 15, including exemplary explicit template definitions
  • FIG. 16 is an illustration of two include files taken from the quote template of FIG. 15.
  • FIG. 17. is an illustration of an exemplary template corresponding to the quote template of FIG. 15, and including references to the include files of FIG. 16
  • FIGs. 18A and 18B are illustrations of respective exemplary templates referencing common include files.
  • FIG. 19 is an illustration of an exemplary table used by a server and/or client device of the present invention to maintain configuration control over and to store templates and include files, according to the present invention.
  • FIG. 20 is a flow chart of an exemplary method of using include files to access data services, according to an embodiment of the present invention.
  • FIG. 21 is an exemplary computer system, which may be used to perform the operations of the present invention. Detailed Description of the Preferred Embodiments
  • the present invention relates to a method and system for automatically initializing and configuring a client device (e.g., a two-way paging device, a wireless phone, a personal data assistant, or a desk top computer).
  • a client device e.g., a two-way paging device, a wireless phone, a personal data assistant, or a desk top computer.
  • the present invention can be used in a two-way wireless communications system.
  • the present invention can be used in various other types of communications system.
  • the present invention can be used with the Internet.
  • a client device can be, for example, a wireless device that wirelessly accesses the Internet
  • Internet e.g., a PalmPilot® or a wireless phone
  • personal computer that is wired to the Internet.
  • Communications system 100 includes a plurality of cell sites 102 each having a coverage area that is typically about 5 to 10 miles in diameter. A coverage area of one cell site often overlaps a portion of a coverage area of another cell site, which are illustrated for exemplary purposes by the hexagonal regions.
  • Each cell site 102 includes an antenna 104 for transmitting and receiving messages to and from two-way wireless client devices 108 (e.g., a two-way pager, a wireless phone, a hand held computing device) that are located within a geographic coverage area of the cell site 102.
  • two-way wireless client devices 108 e.g., a two-way pager, a wireless phone, a hand held computing device
  • separate antennas may be used for sending and receiving messages, as would be apparent to a person skilled in the relevant art.
  • Each cell 102 is coupled to communications network 110, which can be, for example, an X.25 packet switched network.
  • Communications network 110 may include, but is not limited to, land based links such as fiber optics or terrestrial microwave, and/or satellite based links, as would also be apparent to a person skilled in the relevant art.
  • Each cell site 102 is in communications with a message system center (MSC) 120 that includes a subscriber database (also referred to as a user database) that maintains records of all subscribers (also referred to as users) on the system, a unique identity sequence for the subscriber's client device, and an indication of the cell site from which the client device last sent a message (such as an acknowledgment message or a request message).
  • MSC message system center
  • subscriber database also referred to as a user database
  • MSC 120 a unique identity sequence for the subscriber's client device
  • communications between each cell cite 102 and MSC 120 is accomplished through communications network 110.
  • each cell site 102 can have a dedicated link to MSC 120.
  • Communications network 110 can be coupled to a public switched telephone network (PSTN) 112 so that a message can be sent to and from client device 108 via PSTN 112.
  • PSTN public switched telephone network
  • a message can also be sent from one client device 108 to another client device 108 using communications system 100.
  • communications system 100 is the Bell South
  • Wireless Data network also known as the RAM Mobile Data network
  • ARDIS network which are both well known two-way nationwide wireless packet data networks.
  • a client device (e.g., two-way wireless communications device) 108 typically identifies itself to MSC 120 by sending a registration or identification signal.
  • Such signals include a data field including at least one unique identifier, such as a Mobile Identification Number (MEN) and/or Electronic Serial Number (ESN).
  • MEN Mobile Identification Number
  • ESN Electronic Serial Number
  • a MIN which can be reprogrammed, is analogous to a telephone number.
  • An ESN is hard-coded and fixed such that it difficult, if not impossible to change.
  • Some devices include both a MIN and an ESN.
  • the client device used in an embodiment of the present invention discussed in more detail below, only includes one unique identifier, known as a Mobile Access Number (MAN), which is similar to an ESN in that it is hard-coded and fixed.
  • MAN Mobile Access Number
  • the identification signal sent by client device 108 can include one or more of the above discussed unique identifiers, or any other similar unique identifier. Such identification information can be periodically transmitted by client device 108 and/or included with other types of messages sent by client device 108. Such unique identifiers are also sent with each request sent by a client device 108.
  • An optional function of MSC 120 is to determine whether the unique identifier of a client device is valid.
  • a received unique identifier such as a unique identity sequence comp ⁇ sing a st ⁇ ng of digitally represented alphanume ⁇ c characters, can be compared to a maintained database of unique identifiers (i.e., MINs, ESNs, MANs) to detect fraud.
  • MSC 120 can keep track of the approximate whereabouts of each client device 108 by keeping track of which cell site 102 a message, sent by a client device 108, originated. When MSC 120 is thus informed of the approximate whereabouts of each individual client device 108, it can later limit the number of cell sites 102 from which it transmits a message addressed to a particular client device 108. MSC 120 can even limit the transmission of a message to only one cell site 120 having a coverage area within which the particular client device 108 is believed to be located. The coverage area of a limited number of cell cites 102 (possibly only a single cell site or a last know site and its adjacent sites) shall be referred to as a targeted coverage area.
  • the targeted area can be the area covered by a single cell site or a slightly larger area that is also covered by a few adjacent cell sites.
  • This limited or "targetted" transmission is much more efficient than broadcast-type transmission where a message is transmitted from every cell site, regardless of a location of a client device 108 to which the message is addressed.
  • Servers 114 are supported by communications system 100. That is, communications system 100 provides for message delivery between a server 114 and one or more client devices 108. Servers 114 can communicate directly with client devices 108 or indirectly with client devices 108 via communications network 110 Alternatively, servers 114 can communicate with communications network 110 through PSTN 112. In one embodiment, a server 114 provides information to a client device 108 upon receiving a request from the client device 108. Additionally, servers 114 can initiate the sending of information (e.g., unsolicited information) to a client device 108. This can be done periodically or upon a t ⁇ gge ⁇ ng event Additional details about the types of services and the information provided by services providers 114 are discussed below.
  • information e.g., unsolicited information
  • the present invention is also useful in data networks such as a local area network (LAN), a home area network (HAN), and a wide area network (WAN).
  • LAN local area network
  • HAN home area network
  • WAN wide area network
  • the present invention is useful in the largest present day WAN, known as the Internet, and in smaller WANs.
  • the Internet is a world-wide set of interconnected computer networks that can be used to access a growing amount and va ⁇ ety of information electronically.
  • One method of accessing information on the Internet is known as the World Wide Web (www, or the "web”).
  • the web is a dist ⁇ ubbed, hypermedia system, and functions as a client-server based information presentation system.
  • Information that is intended to be accessible over the web is generally stored in the form of "pages" on servers (e.g., general purpose computers).
  • FIG. IB is a network block diagram showing a plurality of clients 108 and servers 114 connected to the Internet 118.
  • a client sends a request to a server the request specifies, among other things, a destination address (e.g., a URL) and a source address that can be used to identify a user.
  • a destination address e.g., a URL
  • a source address that can be used to identify a user.
  • a part of the URL known as the Domain Name is passed to a domain server (DNS) to be translated to a network address
  • DNS domain server
  • the network address specifies the Internet protocol (IP) address of the intended server.
  • IP Internet protocol
  • Servers 114 maintain or otherwise have access to local or remote databases that store and/or provide va ⁇ ous types of data.
  • remote databases 130 are maintained by data sources 132.
  • FIG. 1A also shows a local database 116 that is maintained by server 114.
  • Servers 114 can communicate with data sources 132 through dedicated links or through communications network 110, for example.
  • the type and number of databases, and the form of communication of data between the servers 114 and the databases, is implementation specific.
  • the invention covers the ability of a server system to provide information to client devices via a wireless communications system, which typically has a plurality of cell sites that are coupled to a communications network.
  • the invention also covers the ability of a server system to provide information to client devices via a wired communications system, or via a communications system consisting of a combination of wired and wireless links.
  • the functions performed by the server system can comp ⁇ se software running on one or more general purpose computers or on telecommunications-specific hardware.
  • the combination of the software and hardware to accomplish the functions of the present invention can be conceptualized as a union of server controllers that each perform a discrete task, such as: sending a request from a client device in response to user input at the client device; receiving the request at a server over the communications network; identifying a user based on the request; determining a response based on the request; sending the response to the client device of the user, or the like.
  • One, two, or more of these discrete tasks can be performed by a single server controller That is, the tasks performed by a first server controller and a second server controller can be performed by a single server controller and still be within the spi ⁇ t and scope of the present invention.
  • the discrete tasks can be performed by any number of server controllers.
  • a further desc ⁇ ption of exemplary software and hardware controllers is provided below. ///. Exemplary Client Devices
  • Client device 108 includes an antenna 202, a transmitter 204, a receiver 206, a microprocessor 208, a display 210 and a keypad 212
  • Transmitter 204 is controlled by microprocessor 208 and transmits messages using antenna 202.
  • Messages received from a transmitter of the communications system 100 are received through antenna 202 or a separate antenna (not shown)
  • the received messages are routed from antenna 202 to receiver 206 and processed by microprocessor 208, for example.
  • Display 210 can be a liquid crystal display and is used for displaying, to a user (also referred to as subsc ⁇ ber) of client device
  • Display 210 can also display lists and/or menus from which a subsc ⁇ ber can make selections and perform va ⁇ ous functions. Other methods of presenting the received information, such as aurally through a speaker or through another type of display, are not precluded.
  • Keypad 212 can include as few as one button, but may also include an entire alphanume ⁇ c keypad, touch pad, or can be integrated with a display, such as a touch-screen display.
  • Client device 108 also includes a memory 214 that can store software and/or data. Microprocessor 208 can w ⁇ te to and read from memory 214.
  • client device 108 is an Inter@ct ⁇ veTM Pager 950 manufactured by Research In Motion (RIM), Limited, of Waterloo, Onta ⁇ o, Canada.
  • the RIM Inter@ct ⁇ ve pager (RIM pager) is a commercially available device that provides for two-way wireless communications
  • the REVI pager shown in FIG. 2B, includes a 31-key keypad 212, roller wheel 214 that is similar to a mouse, and screen display 210 with 8 lines of text by approximately 28 characters per line.
  • the RIM page also includes a built-in internal radio modem for two-way wireless communications over a cellular network such as the BellSouth network
  • client device 108 is a Palm PilotTM computing device, manufacture by 3Com Corporation, of Santa Clara, California
  • Client device 108 can also be a wireless communication device such as, but not limited to, a wireless telephone, a data transceiver, and a paging receiver
  • Client device 108 can be fixed, portable, or mobile, such as a mobile telephone.
  • the use of other two-way communications devices is within the spi ⁇ t and scope of the present invention.
  • client device 108 can be a personal computer that, for example, communicates with servers 114 via a network such as the Internet 118.
  • client device 108 can also be a personal computing device that wirelessly accesses the Internet Those of ordinary skill in the art will envision other implementations of client device 108 and appreciate that they are encompassed by the present invention.
  • the system desc ⁇ bed in connection with FIGs. 1A, IB, 2A and 2B provides a plurality of ever expanding information services to a user of client device 108.
  • a user requests stock p ⁇ ces from server 114, using client device 108.
  • server 114 transmits the requested stock p ⁇ ces to client device 108.
  • Client dev ⁇ cel08 then displays the stock p ⁇ ces to the user on display 210.
  • Logical architecture 300 corresponds to the system of FIGs 1 A and IB.
  • Logical architecture 300 includes a client application 304 residing in client device 108, and a server application 306 residing m server 114.
  • Client application 304 also referred to as client 304
  • server application 306 are, for example, computer programs respectively supported by computer controllers and memo ⁇ es of client device 108 and server 114.
  • Server 114 (also referred to as server controller 114) comp ⁇ ses the hardware and/or software required to accomplish specific functions of the present invention.
  • Server 114 can be conceptualized as a union of servers that each perform a discrete task. One, two, or more of these discrete tasks can be performed by a single server 114. That is, the tasks performed by a first server
  • client device 108 comp ⁇ ses the hardware and/or software (for example, client 304) required to accomplish specific functions of the present invention.
  • client 304 also referred to as client controller 304
  • client controller 304 can be conceptualized as a union of clients that each perform a discrete task.
  • One, two, or more of these discrete tasks can be performed by a single client 304.
  • the tasks performed by a first client 304 and a second client 304 can be performed by a single client 304 and still be within the spi ⁇ t and scope of the present invention.
  • the discrete tasks can be performed by any number of clients 304. That is, the task performed by a single client 304 can be performed by a plurality of clients.
  • Client 304 includes a user interface 308 at client device 108 for allowing a user to interact with one or more information services supported by the system of the present invention.
  • User interface 308 displays formatted information pages on display 210 and permits the user to navigate between such display pages.
  • User interface 308 also provides the user with a mechanism to enter requests and/or commands using, for example, keypad 212 (see FIG. 2B).
  • Client 304 interfaces with a client template database 310 and a client transaction database 312 stored in a memory of client device 108.
  • Client template database 310 includes a plurality of individual templates 314, typically associated with one or more information services provided by the system of the present invention.
  • client device 108 for example, client 304 and user interface 308 is configured, and can be updated or reconfigured, in accordance with individual templates 314
  • each template 314 is typically associated with a display page, and uniquely defines the type of information and a layout or format of information presented to the user on the display page.
  • Each template 314 can also define a set of available actions a user can initiate when viewing an associated display page, thereby allowing, for example, the user to request information from the display page and to navigate between display pages.
  • Client device 108 can transmit information request message 316 to server 114 when approp ⁇ ate. Client device 108 also receives response message 318 (transmitted by server 114) and can store information in the response message in client transaction database 312, so as to preserve the information for later retneval. Also, user interface 308 can display requested information to the user.
  • Server 114 can communicate with a plurality of clients, e.g., client device 108, associated with a plurality of client devices 108. Server 114 dist ⁇ butes requested information to client devices 108, and maintains configuration control over the client devices. To perform such tasks, server 114 interfaces with a plurality of information stores, including a server template database 330, a server transaction database 332, and an exemplary service information store 334.
  • Service information store 334 includes real-time data from data sources 132 (not shown m FIG. 3; see FIG. 1A).
  • Service information store 334 can include data relating to finance and stocks, sports, weather, airline schedules, and the like.
  • Service information store 334 can be a local database 116 or a remote database 130.
  • server 114 receives information request 316 from client device 108, server 114 retrieves the requested information from information store 334, and transmits the information to client device 108 using information response message 318. Since this information in response message 318 can include information relating to one or more data services, it is also referred to herein as "data service information”.
  • Server transaction database 332 stores past transaction event data thereby enabling server 114 to track information server 114 has previously transmitted to each client device 108.
  • Server transaction database 332 can include tables mapping individual client device unique identifiers (for example, MANs, MINs, or ESNs) to authorized services and associated templates. Server 114 can use such mapping tables to validate/authorize client requests.
  • Server 114 maintains transaction event data for past and on-going transactions between server 114 and client devices 108 in server transaction database 332. Such data is used to track and control the various transactions in the system of the present invention and to build transaction history tables for each of the client devices 108.
  • Server template database 330 includes the latest or most current versions of the available templates in the system of the present invention.
  • Server template database 330 can also include tables mapping individual client device unique identifiers to the most cu ⁇ ent template versions authorized for client devices 108 associated with the unique identifiers.
  • new templates are stored in server template database 330 and/or existing stored templates are updated, to reflect the additions. Therefore, at any given time, it is possible a client device 108 includes an old version of a template, that is, an out-of-date template that requires updating.
  • server 114 determines whether the template (at client device 108) associated with the request message is the most current template (for example, an updated template). If the template is an old version, server 114 retrieves the most current template from server template database 330, and then transmits an appropriate template update, along with the requested information, to client device 108 using response message 318. In this manner, server 114 dist ⁇ butes the most current template versions to client devices 108 on a per access and an as needed basis. Thus, server 114 efficiently dist ⁇ butes template updates to client devices 108 to render new service features and options available to the users, and maintain configuration control over the clients. Further details regarding initially configu ⁇ ng a client device with templates are provided inU.S. Patent Application No.09/523, 170, entitled “System, Method and Apparatus for Initial Configuration of a Client Device,” incorporated herein in its entirety by reference
  • the templates stored in client device 108 define a configuration of the client device.
  • the configuration of client device 108 can determine the data services a user can access using client device 108, including va ⁇ ous data service options and/or features. Also, the configuration can determine the way in which client device 108 interacts with the user to provide data services to the user. This can include, but is not limited to, the types of pages displayed to the user, the appearance of the display pages, the types and/or arrangements of information displayed on the pages, the navigable hierarchy of display pages presented to the user, the types and/or operations of actions the user can initiate when the user is presented with the display pages, the types of requests a user can enter via client device 108 and/or the content of client requests resulting from such entered user requests.
  • FIG. 4A is an illustration at a high level of an exemplary embodiment of template 314.
  • Template 314 includes a template header 400 having a template identifier 400a, a template version identifier or number 400b, and an optional template title 400c.
  • Template 314 also includes a content portion 402 and an action portion 404.
  • Content portion 402 includes definitions or desc ⁇ ptors (such as textual, symbolic and/or graphical desc ⁇ ptors) that define a layout and appearance of an associated display page on display 210. In other words, content portion 402 specifies an arrangement of information fields on the associated display page.
  • action portion 404 includes definitions (such as textual, symbolic, and/or graphical desc ⁇ ptors) specifying a set of actions a user can initiate with respect to the associated display page
  • action portion 404 can include: menu action definitions 404a, such as menu pull-down actions and scroll-wheel shortcuts; keyboard action definitions 404b, such as keyboard shortcuts (e.g., press "W" for weather service requests), branching action definitions 404c, allowing the user to branch from the cu ⁇ ent template and display page to a next template and display page linked with the current template; and external references 404d, such as URLs.
  • Such actions are available to the user at the display page associated with template 314.
  • Content portion 402 is now further desc ⁇ bed.
  • Content portion 402 typically includes text (for example, field labels) and va ⁇ able desc ⁇ ptors (for example, stock quote information).
  • Content portion 402 defines a format for the va ⁇ able information and text within the display page
  • Content portion 402 can also include references to tables and graphical entities stored in the client device memory.
  • a diagrammatic representation of the content portion of an exemplary template 406 is depicted in FIG. 4B.
  • Template 406 includes a title 410 (that is part of the header of the template) for displaying the text "PRECIOUS METALS".
  • the content portion of template 406 includes the following definitions: a field 412 for displaying current time; a plurality of information field identifiers or labels 414 arranged a column; and a first set of information fields 416 for displaying vanable information (such as stock p ⁇ ces) and a second set of va ⁇ able fields 418 for displaying further va ⁇ able information corresponding to the information field identifiers.
  • Template 406 is incomplete because none of the information fields are populated with the specified va ⁇ able information.
  • client device 108 When client device 108 receives requested information corresponding to template 406, client device 108 populates an instance of template 406 with the requested information, thereby creating a completed template.
  • User interface 308 displays the completed template to the user as a display page.
  • FIG. 4C A display page/completed template 420 corresponding to template 406, is depicted in FIG 4C.
  • field 412, fields 416, and fields 418 are respectively populated with current time, hi/low stock p ⁇ ces, and stock p ⁇ ce deviations.
  • each template can incorporate a unique set of actions available to the user when the template is displayed as a display page, as mentioned above. In other words, actions can vary from template to template and page to page in the present invention. Template actions are further descnbed below.
  • FIG. 4D is an illustration of a list of exemplary definitions or desc ⁇ ptors that define template 406 (FIG. 4B), and thus display page 420 (FIG.
  • NT NT
  • VERSION TI
  • TI TI
  • Content portion 402 (corresponding to labels 414, and fields 416 and 418 of FIG. 4B) includes a plurality of content definitions 436 for metal p ⁇ cing information.
  • a spaced pair of percent symbols (%) delimits each information field.
  • the definition " ⁇ SILNER%0: 11 %% 1 :6%” causes two va ⁇ able fields of information to be displayed after the text "SILVER" on the display of client device 108.
  • Action portion 404 includes exemplary action definitions 442 and 444.
  • the actions defined by action definitions 442 and 444 are available to the user when the display page associated with the template (for example, display page 420 of FIG. 4C) is being displayed.
  • Action definition 442 defines a menu choice "refresh" in a list of displayed menu items.
  • client device 108 When “refresh” is selected in one embodiment, client device 108 ret ⁇ eves the most recently received information relating to template temp, from client transaction database 312, and refreshes the display with the ret ⁇ eved data. In another embodiment, selecting “refresh” causes client device 108 to first update the display with information ret ⁇ eved form client transaction database 312 as just desc ⁇ bed, and then transmit an information request for new information to refresh the displayed information. In still another embodiment, the first step is omitted from the just desc ⁇ bed two-step embodiment Action definition 444 defines a shortcut key as "SP", the "space bar” key
  • the templates of the present invention provide a powerful and convenient mechanism for configu ⁇ ng, reconftgu ⁇ ng, and updating client device 108
  • the new and/or updated templates are automatically dist ⁇ ubbed to and stored in client devices 108.
  • the new and/or updated templates correspondingly expand the service features and options available to the user so that the user can access the new and expanded services.
  • the new and/or updated templates are transmitted from server 114 in such a way as to be transparent to the user.
  • the user is no longer burdened with physically returning the user device to a service center for such an update or with ente ⁇ ng configuration data at client device 108.
  • developers are freed from the burden of redeveloping (and then distributing to many users) new versions of complex client application software and user interface software to accommodate every new feature or service upgrade.
  • users can advantageously compose new and or updated templates in a convenient development environment (for example, on a personal computer) at the server end of the system.
  • the templates are then automatically dist ⁇ ubbed to the users on a per user basis, as needed, as will be desc ⁇ bed further below.
  • templates 314 stored in template data base 310, and the actions specified m each of the templates define an interconnected hierarchy of user navigable display pages at client device 108.
  • FIG 5 is an illustration of an exemplary hierarchy of display pages 502.
  • user interface 308 displays a home or welcome page 504 to the user when client device 108 is first powered-on.
  • Home page 504 is a service starting page.
  • actions, represented by connectors 506, defined for the home page by the associated home page template the user can branch to a quote request page
  • a portfolio page 510 a portfolio page 510, an informative "about" page 512, and a set-up page 514.
  • the user can navigate between the aforementioned pages and a quote display page 516, a chart page 518, a user alert page 520, user page 522 and an add symbol page 524. Templates and the actions defined thereby advantageously provide a convenient mechanism for alte ⁇ ng user interface 308 and associated applications in accordance with expanding services, without changing the underlying user interface or client computer programs.
  • An exemplary update to user interface 308 is now desc ⁇ bed with reference to FIGs. 6A and 6B.
  • a user interface 602 is defined by a quote entry page 604, a quote display page
  • a new template defining a new page 614 called "Equity News”
  • New page/template 614 can be linked to and thus only accessible from quote display page 606, assuming new page 614 should be accessible only after a particular stock quote is displayed on quote display page 606.
  • an action 616 can be added to quote display page (template) 606.
  • the added action 616 can define a branch key N, which when pressed, causes a branch from quote display page 606 to Equity News page 614 in accordance with the above assumption.
  • server 114 accesses server transaction database 330 to manage transactions with numerous client devices
  • FIG. 7A is an illustration of an exemplary transaction table 700 stored server transaction database 330
  • Exemplary table 700 includes a client identification column 702, atemplate identifier column 703, an optional template title column 704, a template version column 706, an index column 708, a date column 710, a time column 712, and a parameters column 714.
  • Each row of client identification column 702 includes a unique identifier of a client device 108 (e.g., MAN, ESN, MIN).
  • Each row of template identifier column 703 includes a unique identifier of a template (e.g., temp t , temp 2 , temp 3 ).
  • Each row of template version column 706 specifies the version of the template in the corresponding row of column 703.
  • ent ⁇ es in template version column 706 specify the version of a template (i.e., identified in column 703) that a specific client (i.e., identified in column 702) cu ⁇ ently has stored in its client template database 310
  • Each row of index column 708 identifies the data type that is used to populate the corresponding template in column 703.
  • the data included in parameters column 714 is the data that was sent to the corresponding client (in column 702) the last time server 114 provided that client with the data type of column 708.
  • Each row of date column 710 and time column 712 specifies when server 114 last provided the client device of column 702 with the data included in parameters column 714.
  • FIG. 7B is an illustration of an exemplary table 750 stored in server template database 330.
  • Table 750 includes a column 754 listing the identifiers of cu ⁇ ent templates stored in database 330, a column 756 listing template version numbers for the identified templates, and a column 758 listing the definitions of the identified templates.
  • Each row 760 corresponds to an identified template, for example, template temp,.
  • version column 756 is deleted since a template version can be determined from the template header (e.g., header 400) included in the template definition.
  • FIG. 8 is an illustration of an exemplary table 800 stored in client transaction database 312 of client device 108.
  • Table 800 is essentially the same as server transaction table 700 of FIG 7 A and discussed above, except that table 800 does not include a client identifier column (e.g., column 702). This is because client transaction database 312, and thus table 800, are specific to only one client device 108
  • FIG. 9A is an illustration of an exemplary information request message 900 (corresponding to information request message 316 of FIG.3) transmitted by client device 108.
  • the information request message (e.g., 900) is also refe ⁇ ed to as a client request, since it is initiated by client device 108.
  • the fields of message 900 are a ⁇ anged in accordance with an exemplary message format, and it is to be understood that message 900 can be arranged in other formats.
  • Message 900 includes a client device identifier (such as a MAN) 902, transaction information
  • a template identifier or name 906 used by client device 108 and server 114 to track the current transaction, a template identifier or name 906, a template version identifier 908 identifying the version of the named template stored in template database 310, and a specific information request 910.
  • transaction information 904 includes a transaction number 912 and a client state 914.
  • Client 108 tracks each request using transaction number 912, which only client 108 can increment.
  • Client state number
  • client 108 can store transaction number 912 and client state number 914 in, and retrieve transaction number 912 and client state number 914 from, additional columns (not shown) of server transaction database table 700. Use of transaction number 912 and client state number 914 are discussed below.
  • Client device 108 increments transaction number 912 every time it sends a client request to server 114. Only client device 108 can increment transaction number 912. However, client device 108 never increments client state number 914. Rather, server 114 increments client state number 914 when it sends a server response to client device 108.
  • each request (e.g., 900) includes a transaction number 914.
  • Server 114 responds to each request individually and echoes back the appropriate transaction number 914 in each server response (e.g.,
  • Each server response received by client device 108 is stored in client transaction database 310. Additionally, in one embodiment, a display page associated with the server response to the last (i.e., in time) client request is displayed to the user.
  • Client state 914 is used by server 114 to determine the last successfully received (by client device 108) server response to a particular client request. This is important because client device 108 may fail to receive a server response sent by server 114. Thus, server 114 should save the last sent server response in, for example, a suspense file. Only when sever 114 receives a new client request (i.e., for the same information) with the same state number does it write the data of the last server response (which was stored in the suspense file) to server transaction database 332.
  • server 114 may receive a "state 6" client request and return a new "state 7" server response to client device 108. If client device 108 never receives the server response with "state 7", then the next time client device 108 makes the same client request it will again be a "state 6" client request. In this manner, server 114 will know that client device 108 never received the "state 7" server response. This enables server 114 to use old "state 6" data (rather than the data last sent to client device 108, that is associated with "state 7”) when performing a comparison of old data to new data to thereby produce a server response.
  • either client device 108 or server 114 can reset client state 914 to zero when a server response includes a full update (as opposed to a server response that only includes changes).
  • FIG. 9B is an illustration of an exemplary information response message 920 (corresponding to information response message 318) transmitted by server
  • the information response message (e.g., 920) is also referred to as a server response, since it is initiated by server 114.
  • Message 920 (also referred to as server response 920) includes requested information 922, provided in response to specific information request 910 of information request message 900.
  • FIG. 10 represents a se ⁇ es of method steps 1000 performed by client device 108 in response to a request for information from a user
  • the method begins at a step 1002 when the user of client device 108 issues a request for information from a displayed page, via user interface 308.
  • This request can be thought of as a "display information" request, and is associated with a stored template 314.
  • client device 108 que ⁇ es client template database 310 to determine whether an approp ⁇ ate template 314 associated with the request is locally available.
  • client device 108 determines that the approp ⁇ ate template is not locally available (i.e., if the answer to step 1004 is NO), then, at a step 1005, client device 108 sends a get_template command to server 114. This can occur, for example, if client device 108 was initially configured with a single template, such as a home template (e.g , temp home ) associated with a home page, and no other templates have since been supplied to the client device. In such a situation, the home page can allow branch actions to other named templates not resident in client template database 310. Thus, at step 1004, client device 108 detects an absence of one of these other named templates from template database 310 when the user initiates a branch action to the missing template. In turn, client device
  • step 1006 the approp ⁇ ate template is ret ⁇ eved from client template database 310.
  • step 1008 there is a determination whether data associated with the approp ⁇ ate template is available from client transaction database 312. If the answer to step 1008 is YES, then flow continues to a step 1010, where the template is populated with data from client transaction database 312. The data ret ⁇ eved from client transaction database 312 is the data last received from server 114 to populate the ret ⁇ eved template (e.g., data from an earlier transaction). If the answer to step 1008 is NO, then flow jumps directly to a step 1016, which is discussed below. In one embodiment, after step 1010, in a step 1012, the populated template is displayed (i.e., an associated page) on display 210 of client device 108
  • the approp ⁇ ate template preferably includes a status field that can be populated with status data (e g., date and time).
  • status data e.g., date and time.
  • the information displayed to the user can be stale, for example, the data can be days, hours, or seconds old, depending on when client 108 last received the information to populate the approp ⁇ ate template
  • client device 108 If the user directs client device 108 to do something other than refresh the information (i.e., if the answer to step 1014 is NO), then client device 108 functions accordingly. For example, the user may initiate a branch action that causes client device 108 to display a different page.
  • client device 108 composes and transmits an appropriate information request message to server 114, at a step 1016.
  • a user can request refreshed information by pressing a predefined action key, such as the "enter” key or "space bar” key.
  • An example request message 900 is desc ⁇ bed above in connection with FIG. 9A.
  • flow jumps directly from step 1008 to step 1016, such that client device 108 sends a request message to server 114 after client device 108 ret ⁇ eves data from client transaction database 312.
  • flow jumps directly from step 1006 to step 1016, such that client device 108 sends a request message to server 114 after client 204 ret ⁇ eves the approp ⁇ ate template from client template database 310.
  • Server Responds to an Information Request and Provides a Template Update
  • FIG. 11 represents a se ⁇ es of method steps 1100 performed by server 114 m response to a request for information from client device 108.
  • the process begins at a step 1102 when server 114 receives a request message (e.g., request
  • server 1 14 identifies client device 108. This is accomplished using a unique identifier (e.g 902) included in the request.
  • server 114 recognizes that the client device 108 that sent the request message has a template for displaying the requested information, because the request (e.g., 900) includes a template identifier (e.g., 906).
  • server 114 can also determine whether the specific information request is autho ⁇ zed for the requesting MAN.
  • server 114 ret ⁇ eves the latest (i.e., most current or up-to-date) version of the identified template (e.g., the template identified by template identifier 906) from server template database 330.
  • server 114 ret ⁇ eves the latest (i.e., most current or up-to-date) version of the identified template (e.g., the template identified by template identifier 906) from server template database 330.
  • server 114 ret ⁇ eves the latest (i.e., most current or up-to-date) version of the identified template (e.g., the template identified by template identifier 906) from server template database 330.
  • server 114 ret ⁇ eves the latest (i.e., most current or up-to-date) version of the identified template (e.g., the template identified by template identifier 906) from server template database 330.
  • server 114 ret ⁇ eves the latest (i.e., most current or up-to-date
  • server 114 ret ⁇ eves/de ⁇ ves the requested information required to populate the data fields of the template that was ret ⁇ eved at step 1106. For example, at step 1108, server 114 ret ⁇ eves the requested information from information store 334 in accordance with the most current template definition.
  • server 114 determines whether client 108 has the most cu ⁇ ent template. To make this determination, server 114 compares template version identifier 906 of the template named in information request message 900 against the version identifier for the same named template just retneved from server template database 330 (e.g., in column 756 of table 750 of FIG. 7B) at step 1106.
  • server 114 determines that the identified client device 108 does not have the latest version of the approp ⁇ ate template (i.e., the answer to step 1110 is NO), then client device 108 has an "old" template that requires updating with a "new" template, namely, the template just ret ⁇ eved from server template database 330. Accordingly, at a step 1112, server 114 composes an information response message (e.g., message 930) including: a) information ret ⁇ eved from information store 334 at step 1108; and b) template update information from the "new" template. In one embodiment, server 114 includes the entire "new" template in the information response message.
  • an information response message e.g., message 930
  • server 114 compares the "old" template to the "new” template to determine changes between the two templates. Server 114 then includes only these changes in the response message, to thereby shorten the response message and reduce required transmission bandwidth when the response message is transmitted. In a further embodiment, particularly if the "new" template includes a large amount of information, server 114 partitions the "new" template into a se ⁇ es of consecutive but separate messages.
  • server 114 determines at step 1110 that client device 108 does not require a template update (i.e., the answer to step 1110 is YES), then server 114 composes an information response message using only the information ret ⁇ eved from information store 334 (e.g., message 920), since a template update is unnecessary.
  • server 114 transmits the composed information response message to client 108. For example, server 114 transmits response message 920 or 930 composed respectively at steps 1114 or
  • the message that server 114 composes at step 1114 or 1112 (and sends at step 1116) includes all the data necessary to populate a template. In another embodiment, the message that server 114 composes at step
  • an advantage of this embodiment is that the size of the response message (or messages) is further reduced.
  • An advantage of the present invention is that if the client device 108 (to which the response message is being sent) has the most cu ⁇ ent template, then the composed and transmitted response message (e g., message 920 composed at step
  • 1114) only includes the information required to populate and thus refresh a template. This significantly reduces the size of the response message (or messages) that is transmitted from server 114 to client device 108. Minimizing the size of response messages reduces the cost and/or response time (also referred to as latency) for providing information services For example, where a communications system provider charges on a volume basis, the less data transmitted means less cost to the user. Additionally, since latency is typically proportional to the amount of data being transmitted, the less data transmitted means lower latency. A further advantage is the reduction in a system transmission bandwidth, such that more users can be supported by the services of the system.
  • step 1114 server 114 que ⁇ es server transaction database 332 to determine the information, for the particular template, that client device 108 has stored in client transaction database
  • server 114 searches table 700, of FIG 7A, based on client identifier 902 and template identifier 906 to determine what information was last sent to client device 108 for the identified template.
  • server 114 compares the information in each data field (i.e., the information ret ⁇ eved in step 1108 of FIG. 11) against the record of what was last successfully received by client device 108 (i.e , determined in step 1202), to thereby determine the information that has changed (also refe ⁇ ed to as the changed fields).
  • Steps 1202 and 1204 can be illustrated with reference to FIG. 13.
  • An "old" page 1302 represents the information (populating a precious metals template) that client device 108 has stored m client transaction database 312 (i.e., at step 1202).
  • Server 114 determines that client device 108 has such an old page of information using server transaction database 332.
  • a "new" page 1304 represents up-to-date or current information (populating the same precious metals template) ret ⁇ eved by server 114 at step 1108.
  • a change definition 1306 represents a change in information between old page 1302 and new page 1304.
  • Server 114 determines change definition 1306 by compa ⁇ ng the information in old page 1302 to the information in new page 1304 Server 114 can compress change definition 1306 using a data compression technique to produce a compressed change definition 1308, thereby further reducing the size of the response message
  • server 114 que ⁇ es server transaction database 332, based also on client state number 912 (i.e, in addition to client identifier 902 and template identifier 906) to ensure that server 114 actually compares the up-to-date information (i.e., the information ret ⁇ eved in step 1108) against what client device 108 actually has stored in its client transaction database
  • server 114 will perform the compa ⁇ son using information that was last sent to client device 108, but never received by client device 108
  • FIG. 10A represents a se ⁇ es of method steps 1050 performed by client device 108 when the client receives a response message from server 114. The process begins at a step 1052 when client device 108 receives a response message
  • step 1116 receives (e.g., message 920 or 930) from server 114 (see FIG. 11, step 1116).
  • client device 108 determines whether the response message includes a template update. If the response message includes a template update for an identified template, at a step 1056, client device 108 updates the ldentified template in client template database 310 using template update information from the response message. Then flow proceeds to a step 1058.
  • step 1058 client device 108 updates client transaction database 312 with information from the response message. For example, client device 108 replaces a row of client transaction table 800 containing "old" information with "new" information received from the response message.
  • client device 108 refreshes the current display page, if approp ⁇ ate, by ret ⁇ eving the "new" information from client transaction database
  • the current display page is updated to reflect a designated display a ⁇ angement, information fields, actions and refreshed data associated with the "new" or updated template.
  • FIG. 11 A represents an exemplary se ⁇ es of method steps 1150 performed by server 114 when the server receives a get__template command from client device 108 (see FIG. 10, step 1005).
  • the process begins at a step 1152 when server 114 receives an information request message from client device 108
  • server 114 determines whether the request message includes the get_template command.
  • the get_template command includes a template identifier identifying a template required by the requesting client device 108. If the request message does not include a get_template command, flow control branches to step 1158, desc ⁇ bed below, and the method continues from step 1158.
  • server 114 validates the requested template. To validate the requested template, server 114 queries server template database 330 using the requested template identifier in the get_template command to determine whether the requesting client device 108 is an authorized user of the requested template and its associated services. If the requesting client device 108 is not an authorized user of the requested template, server 114 transmits an error message to the requesting client, and the process terminates. Otherwise, server 114 retrieves the requested template from server template database 330.
  • server 114 collects data in accordance with the retrieved template, as described above in connection with step 1108 of FIG. 11.
  • server 114 composes an information response message including a template update, as described above in connection with step 1112 of FIG. 11.
  • the template update includes the retrieved template in its entirety.
  • server 114 transmits the information response/template update, as described above in connection with step 1116 of FIG. 11.
  • client device 108 executes the method steps described above in connection with FIG. 10A.
  • client device 108 sends a get_template command to server 114, but no template definitions, such as variable (field) definitions, etc, are associated with the get_template command.
  • This get__template command is not considered a request for any information other than an absent template.
  • Server 114 determines whether this get_template command or a client request for information has been received. If a client request for information is received, then server 114 executes method steps 1104 - 1116, as described above connection with FIG. 11. On the other hand, if a get_template command is received, server 114 returns only the requested template, if authorized, to client device 108 without collecting data service information.
  • both of the above described steps 1158 and 1160 are omitted.
  • the above desc ⁇ bed embodiments "automatically" update templates in client device 108 because the updates occur without requi ⁇ ng any predetermined, update-specific actions from the user.
  • the user need only submit information requests in the normal course of client device operation, such as from a system services display page, and in response, the system of the present invention automatically effects the necessary template update.
  • a template update correspondingly updates options, features, and/or services available to the client device and the user thereof.
  • the update of the options, features, and/or services available to the client device corresponds to a reconfiguration of the client device.
  • templates 314 include header portion 400, and can optionally include content and action portions 402 and 404.
  • action definitions such as menu choices
  • content definitions specify data fields and the like
  • a template can become complex when numerous template definitions are associated with the template.
  • sto ⁇ ng numerous complex templates, each including many repetitive definitions can require a substantial amount of memory. Therefore, the present invention simplifies the design of such complex templates, reduces the amount of memory required to store the templates, and can dist ⁇ bute repetitive information across "globally" accessible templates.
  • a globally accessible template is a template that can be referenced by a referencing template, and then incorporated or included into the referencing template as needed, as will be further desc ⁇ bed below.
  • a first template includes a reference to a second template.
  • the template definitions of the first and second templates can be combined.
  • the second, referenced template is referred to as an "include" file or template.
  • FIG. 14 is a graphical illustration of an exemplary use of include files according to the present invention.
  • Quote template 1400 are depicted in FIG. 14.
  • Quote template 1400 is used to display and request stock quote and trading information.
  • Quote template 1400 can be stored in either or both of client template database 310 and/or server template database 330.
  • First view 1400a of template 1400 corresponds to a gene ⁇ c format of quote template 1400 Header 400, content portion 402, and action portion 404 of template 1400 are depicted m first view 1400a.
  • template 1400 Further details of template 1400 are depicted in second view 1400b.
  • content portion 402 of the quote template 1400 includes the following template definitions (e g., data fields/va ⁇ able, text, etc.) relating to stock quote and trading information: current p ⁇ ce definitions 1406, bid/ask definitions 1408; high/low p ⁇ ce definitions 1410; and volume definitions 1412.
  • template definitions e g., data fields/va ⁇ able, text, etc.
  • Each of definitions 1406 - 1412 can include data fields or va ⁇ ables, formatting information, text, etc.
  • Quote template 1400 also includes action definitions 1414 corresponding to menu actions (e.g., menu selections from a display page associated with the quote template) and keyboard definitions 1416.
  • Each of the template definitions 1406-1416 can include one or many template definitions In the case where each of the definitions 1406-1416 includes many definitions, quote template 1400 can be complex and require a large amount of memory when stored in template database 310 or 330.
  • the present invention simplifies the design of such a complex template by breaking up or dividing a single template, such as template 1400, into a plurality of smaller "include” files or templates.
  • a plurality of such include files 1430 for template 1400 are depicted in view 1400c.
  • the plurality of include files 1430 comp ⁇ se the following files or templates: a "current” include file 1432 containing the one or more "current” definitions 1406, a "bid/ask” include file 1434 containing the one or more "bid/ask” definitions 1408, a "high/low” include file 1436 containing the one or more "high/low” definitions 1410, and a "volume” include file 1438 containing the one or more "volume” definitions 1412 Also, a menu include file 1440 and a keyboard include file 1442 respectively contain menu definitions 1414 and keyboard definitions 1416
  • quote template 1400 need no longer contain the explicit template definitions now removed to include files 1430. Instead, quote template 1400 need only contain a single reference to each of the include files 1430, whereby when the quote template is accessed by either server 114 or client device 108, the quote template can be reconstructed from include files 1430 using the references thereto Accordingly, as depicted m FIG.
  • quote template 1400 contains a plurality of references 1450 to respective include files 1430
  • References 1450 link the plurality of include files 1430 to referencing template 1400
  • Exemplary references include address pointers to the referenced templates, or the template identifiers of the referenced templates.
  • each of the include files 1432-1442 is constructed as a template containing the necessary content and/or action definitions required to construct the more complex quote template 1400.
  • server 114 and/or client device 108 combines the referenced include files or templates to construct quote template 1400 Breaking up a template (such as the quote template) into smaller templates (include files) has several advantages. First, include files modula ⁇ ze and thus simplify template design because numerous template definitions can be replace with a few simple references to respective include files.
  • include files can reduce the amount of memory required to store a plurality of templates at client device 108 or at server 114
  • memory can be wasted when a plurality of templates commonly incorporate the same template definitions
  • Include files can reduce memory requirements because the commonly incorporated and repetitive template definitions can be removed from the plurality of templates and placed in a single, commonly accessible include file.
  • a single reference to the common include file replaces the repetitive template definitions, thus reducing memory requirements overall.
  • FIG. 15 is an illustration of exemplary further details of quote template 1400, without references to include files.
  • a list of explicit template definitions corresponding to quote template 1400 are depicted in FIG. 15.
  • Quote template 1400 includes menu action definitions 1414 for a plurality of menu actions (see
  • FIG. 14 a plurality of menu actions 1504, keyboard action definitions 1416 (see FIG. 14), a plurality of keyboard action definitions 1508, and content definitions 1406-1412 (see FIG. 14).
  • a "'" symbol preceding text indicates that the text following the '"" is a comment, and not a template definition.
  • Include files can simplify quote template 1400 of FIG. 15. Such a use of include files to simplify quote template 1400 is now described with reference to FIGs 15, 16 and 17.
  • explicit menu action definitions 1414 can be removed from quote template 1400 and placed into a corresponding include file 1440 (FIG. 16) having a template identifier 1602 ("menul").
  • FIG. 16 includes an illustration of include file menu 1.
  • explicit keyboard action definitions 1416 can be removed from quote template 1400 and placed into an include file 1442 (FIG. 16) having a template identifier 1604 ("keyl").
  • Template 1400 can be constructed (simplified) to reflect the removal of menu and keyboard definitions 1414 and 1416 from template 1400.
  • An exemplary technique for referencing the menul and keyl include templates is illustrated in FIG. 17, wherein quote template 1700 includes a reference 1702 ("menul") to the menul include file and a reference 1704 ("keyl) to the keyl mclude file.
  • the text "IN" preceding references 1702 and 1704 indicates to client device 108 and/or server 114 that the references to follow (e.g., template identifiers) are references to include files
  • client device 108 or server 114 inserts the template definitions from the referenced include files or templates (for example, from menul or key 1 ) into quote template 1700 as if the included definitions were part of the quote template.
  • template 1700 is transformed into template 1400 as depicted in FIG. 15 A compa ⁇ son between FIG. 15 and FIG 17 indicates the use of include files to simplify complex templates
  • FIG. 18A a template 1800 references by name "current” include file 1432, "bid/ask” template 1434, an "open/close” include file, and "volume” include file
  • a template 1802 also references “current” include file 1432, the "open/close” include file, and “volume” include file 1438
  • template 1802 also references “high/low” include file 1436. Accordingly, several of the include files (for example, include files 1432, 1434, andl438) serve both templates 1800 and 1802, thus reducing memory over the case when include files are not used
  • FIG. 19 is an illustration of an exemplary table 1900 that can be stored in either or both of server template database 330 and/or client template database 310.
  • Table 1900 is used by server 114 and/or client device 108 to maintain configuration control over and to store templates and include files in the present invention.
  • Table 1900 includes a first column 1902 listing template identifiers, such as an identifier for the quote template, a column 1904 listing a template version for each of the templates named in column 1902, and an information column 1906 listing either template definitions for, or the names of templates referenced by, the templates named in column 1902.
  • Each row (for example, row 1910) of table 1900 corresponds to a named template.
  • row 1910 corresponds to the quote template.
  • a first field 1912 corresponding to column 1902 includes the template identifier "quote”
  • a field 1914 corresponding to column 1904 includes a version identifier "1.1" for the quote template
  • a second row 1912 corresponds to the q_header template referenced by the quote template and name in field 1916 of row 1910.
  • Row 1912 includes a version number " 1.2" and explicit template definitions ("text") in a field 1920.
  • the explicit definitions include header definitions that are to be included by reference into the quote template.
  • a third row 1922 corresponds to the q_content template referenced in field 1916 of row 1910.
  • row 1922 includes a field 1924 containing a plurality of include files "q_content_cu ⁇ ent", "q_content_ask”, etc.
  • the effect of the above-desc ⁇ bed table structure is the following.
  • the quote template references three include files(for example, the q_content template, etc.), and, turn, the q_content template contains references to additional include files (for example, a q_content_b ⁇ d_ask template).
  • Remaining table rows 1930, 1932, 1934, 1936 and 1938 of table 1900 correspond to templates previously referenced as include files by other referencing templates.
  • each of the rows 1930-1938 includes a field in column 1906 containing explicit definitions for the template named in the associated row
  • the quote template must first be ret ⁇ eved from table 1904. That is, information is relieve from row 1910. Since the quote template includes references to the q_header, q_content, and q_act ⁇ ons templates, these templates (rows of lnformation) must also be retneved from table 1900. Once the q_header template is ret ⁇ eved from table 1900, explicit definitions are available and can be inserted into the quote template. However, to reconstruct the content portion of the quote template, the further referenced templates including explicit definitions (e.g., q__content_current, q_content_b ⁇ d_ask, etc.) must also be ret ⁇ eved from table
  • the structure desc ⁇ bed in connection with table 1900 provides examples of both direct referencing and indirect referencing from a template.
  • a direct reference occurs when a first template (e.g., the quote template) references a second template (e.g., the qjieader template), and the second template includes explicit template definitions that can be combined with the template definitions of the first template.
  • indirect referencing occurs when both the first and second templates (e.g., the quote and q_content templates, respectively) include references such that a third template (e.g., q_content_current) must be ret ⁇ eved before an explicit definition is found.
  • the second template is an intermediate template that must be traversed before explicit definitions can be ret ⁇ eved.
  • FIG. 20 represents an exemplary se ⁇ es of method steps 2000 performed by the system of the present invention when a template including references to another template (that is, to an include file) is accessed.
  • the method begins at a step 2004 when the user enters an information request at client device 108. For example, the user can enter a request for client device 108 to refresh currently- displayed information, or to ret ⁇ eve new information from server 114, as desc ⁇ bed above.
  • client 304 receives the user request.
  • client device 108 ret ⁇ eves a first template temp, associated with the user's request from client template database 310.
  • Template temp includes a reference to a second template temp 2 in a manner previously descnbed.
  • temp 2 is considered an include template or file.
  • client device 108 composes and sends a client request to server 114.
  • the client request includes the template identifier for temp, and a unique client device identifier for client device 108.
  • server 114 receives the client request and retrieves the template temp, from the server template database 330 based on the template identifier and the unique device identifier for client device 108 in the client request.
  • first temp includes a reference to the second template temp 2 .
  • server 114 determines whether template temp, references other templates. In a case where there are no such references in temp, server 114 processes the client request in accordance with the method described above in connection with FIG. 11. However, in this case, when server 114 detects the reference to temp 2 in temp, server 114 retrieves temp 2 from server template database 330.
  • server 114 combines the template definitions of templates temp, and temp 2 to create a combined template (that is, a reconstructed template).
  • template temp includes indirect references
  • server 114 retrieves intermediate templates to reconstruct temp,.
  • server 114 collects data service information in accordance with the definitions of the combined template, as described above in connection with the method of FIG. 11.
  • server 114 composes a server response and transmits the server response to client device 108.
  • the server response includes the data service information and the template identifier for temp,.
  • client device 108 receives the server response.
  • the client device 108 retrieves client template temp, from client template database 310 based on template identifier temp, in the server response.
  • client device 108 determines whether template temp, references any templates, and detects the reference to template temp 2 in template temp,. Client device 108 then retrieves template temp 2 from client template database 310. (Note: if there was no such reference in temp 2 in temp,, then client device 108 proceeds with the method descnbed previously in connection with, for example, FIG.
  • client device 108 At a next step 2028, client device 108 combines the definitions of templates temp, and temp 2 to create a combined list of template definitions (as did server 114). At a next step 2030, client device 108 displays a page associated with the combined templates (e.g., templates temp, and temp 2 ) including, for example, data fields populated with data service information provided m the server response.
  • a page associated with the combined templates e.g., templates temp, and temp 2
  • An additional benefit of the present invention is that by removing portions of a template, which are commonly used by a plurality of templates, to an include file, the common portions can be defined in one place, thus providing consistency across all of the templates referencing the include file
  • Another benefit of the present invention is that changes to the include file are made for the benefit of all files and/or templates referencing the include file, thus eliminating the need to make changes to each of the referencing files and/or templates
  • server 114 can send a single template update when necessary to update the include file and the referencing templates, the single template update is automatically propagated (by reference) to all of the referencing templates. By contrast, without include files, server 114 would have to send a template update to each of the plurality of templates.
  • include files can considerably conserve airtime or transmission bandwidth, to reduce cost and latency. It is to be understood that the use of include files as desc ⁇ bed above in section E 5. can be combined with the other aspects of the present invention desc ⁇ bed in other sections of the detailed desc ⁇ ption and with aspects and features desc ⁇ bed in the above referenced U.S. patent applications, which are incorporated herein by reference.
  • include files can be combined with template updating, whereby a new template containing references to include files is download from server 114 to client device 108.
  • include files features can be combined with features relating to value added services for specific users, desc ⁇ bed in U.S Patent Application No. 09/523,166, entitled "System, Method and Apparatus of Providing Value Added Services to Specific
  • Server 114 can perform specific features of the present invention using server controllers, which in effect compnse a computer system
  • server controllers which in effect compnse a computer system
  • communication-specific hardware can be used to implement the present invention, the following desc ⁇ ption of a general purpose computer system is provided for completeness.
  • the present invention is preferably implemented in software.
  • the invention may be implemented using hardware or a combination of hardware and software. Consequently, the invention may be implemented in a computer system or other processing system.
  • An example of such a computer system 2100 is shown m FIG.21.
  • client and server applications 304 and 306 each executes on distinct computer systems 2100.
  • the computer system 2100 includes one or more processors, such as processor
  • Computer system 2100 also includes a main memory 2108, preferably random access memory (RAM), and may also include a secondary memory 2110
  • the secondary memory 2110 may include, for example, a hard disk d ⁇ ve 2112 and/or a removable storage d ⁇ ve 2114, representing a floppy disk d ⁇ ve, a magnetic tape d ⁇ ve, an optical disk d ⁇ ve, etc
  • the removable storage d ⁇ ve 2114 reads from and/or w ⁇ tes to a removable storage unit 2118 in a well known manner Removable storage unit 2118, represents a floppy disk, magnetic tape, optical disk, etc which is read by and w ⁇ tten to by removable storage d ⁇ ve 2114
  • Removable storage unit 2118 represents a floppy disk, magnetic tape, optical disk, etc which is read by and w ⁇ tten to by removable storage d ⁇ ve 2114
  • Removable storage unit 2118 represents a floppy disk, magnetic tape, optical disk, etc which is read by and w ⁇ tten
  • secondary memory 2110 may include other similar means for allowing computer programs or other instructions to be loaded into computer system 2100
  • Such means may include, for example, a removable storage unit 2122 and an interface 2120 Examples of such means may include a program cartridge and cartridge interface (such as that found in video game devices), a removable memory chip (such as an EPROM, or PROM) and associated socket, and other removable storage units 2122 and interfaces 2120 which allow software and data to be transferred from the removable storage unit 2122 to computer system 2100
  • Computer system 2100 may also include a communications interface 2124
  • Communications interface 2124 allows software and data to be transfe ⁇ ed between computer system 2100 and external devices
  • communications interface 2124 may include a modem, a network interface (such as an Ethernet card), a communications port, a PCMCIA slot and card, etc
  • Software and data transferred via communications interface 2124 are the form of signals 2128 which maybe electronic, electromagnetic, optical or other signals capable of being received by communications interface 2124 These signals 2128 are provided to communications interface 2124 via a communications path 2126
  • Communications path 2126 car ⁇ es signals 2128 and may be implemented using wire or cable, fiber optics, a phone line, a cellular phone link, an RF link and other communications channels.
  • computer program medium and “computer usable medium” are used to generally refer to media such as removable storage d ⁇ ve 2114, a hard disk installed in hard disk d ⁇ ve 2112, and signals 2128.
  • These computer program products are means for providing software to computer system
  • Computer programs are stored in mam memory 2108 and/or secondary memory 2110. Computer programs may also be received via communications interface 2124. Such computer programs, when executed, enable the computer system 2100 to implement the present invention as discussed herein. In particular, the computer programs, when executed, enable the processor 2104 to implement the process of the present invention. Accordingly, such computer programs represent controllers of the computer system 2100.
  • the processes performed by server 114 and server application 306, and by client device 108 and client application 304 can be performed by computer control logic (e.g., called "controllers").
  • client and server template databases 310 and 330, and client and server transaction databases 312 and 332 are stored in respective memo ⁇ es 2108 and/or respective memo ⁇ es 2110.
  • the software may be stored in a computer program product and loaded into computer system 2100 using removable storage d ⁇ ve 2114, hard d ⁇ ve 2112 or communications interface 2124.
  • features of the invention are implemented p ⁇ ma ⁇ ly in hardware using, for example, hardware components such as application specific integrated circuits (ASICs).
  • ASICs application specific integrated circuits
  • va ⁇ ous embodiments of the present invention have been desc ⁇ bed above, it should be understood that they have been presented by way of example, and not limitation It will be apparent to persons skilled in the relevant art that va ⁇ ous changes m form and detail can be made therein without departing from the spi ⁇ t and scope of the invention.
  • the present invention has been desc ⁇ bed above with the aid of functional building blocks illustrating the performance of specified functions and relationships thereof.
  • the bounda ⁇ es of these functional building blocks have been arbitra ⁇ ly defined herein for the convenience of the desc ⁇ ption. Alternate bounda ⁇ es can be defined so long as the specified functions and relationships thereof are approp ⁇ ately perfonned Any such alternate bounda ⁇ es are thus within the scope and spi ⁇ t of the claimed invention.
  • these functional building blocks can be implemented by discrete components, application specific integrated circuits, processors executing approp ⁇ ate software and the like or any combination thereof.
  • the breadth and scope of the present invention should not be limited by any of the above- desc ⁇ bed exemplary embodiments, but should be defined only in accordance with the following claims and their equivalents.

Abstract

A method and an apparatus for providing services to a user of a client device operating in a client-server environment. A client device and a server communicate with each other over a communication network. The client device includes templates that define a configuration of the client device, and thereby establish a level of user functionality at the client device. For example, the templates can determine the data services a user can access using the client device, including various data service options and/or features. Also, the configuration can determine the way in which the client device interacts with the user to provide user access to the data services. Complex templates can be used to configure the client device and to establish a high level of such user functionality. A template can be broken down or sub-divided into smaller templates referred to as 'include files'. The template includes references to the 'include files'. In this way, a complex template can be simplified and modularized using the include files. This simplifies template development, and as a result, the development of high levels of user functionality at the client device using the complex templates. Also, a plurality of templates can reference a single included file to significantly reduce the amount of memory required to store the plurality of templates.

Description

Method and Apparatus for Providing Services to a User of a Client Device Configured by Templates that Reference other
Templates
Background of the Invention
Field of the Invention
The present invention relates generally to a method and apparatus for providing services to a user of a client device used in a communication system.
Related Art
A typical client-server environment includes a client application, such as an Internet web-browser, and a server application respectively executing on independent computer based platforms and communicating with one another. The client application submits information requests to the server application in response to user input at the client end. In response, the server transmits information responses to the client application. The user interacts with the client- server environment using a Graphical User Interface (GUI) of the client application.
A large number of client and browser applications can operate in a distributed service environment. A distributed service environment is one in which the numerous client applications interact with one or more server applications, each of the server applications hosting a wide variety of data services provided by a variety of "private" and possibly public service providers. Wireless client devices including the above mentioned client applications can operate in such a distributed service environment. The user interacts with available services via the client application. In other words, the client application provides user functionality so that the user can interact with the client device and thereby access the services. In many instances, the client application is a complex computer program stored in a memory of a client device and executable on one or more processors of the client device. As such a client application expands to accommodate more user functionality - for example, to access more and/or expanded services, the expanded client application can require correspondingly more memory in the client device. In a memory limited client device, such as a pager, used to provide data services to a user, user functionality requirements are high, thus requmng relatively complex client applications. However, memory resources are scarce Therefore, there is a need to provide high levels of user functionality in a client application, but at the same time, limit memory requirements.
Complex client applications can be difficult to initially develop. Similarly, the client applications are difficult to modify to accommodate expanded services provided at the server-end of the system, and to enhance user functionality. Therefore, there is a need to simplify the way in which client application functionality can be developed and provided to a user in a client device There is a related need to simplify the development and redevelopment of a client application.
Summary of the Invention
The present invention is directed to a method and an apparatus for providing services to a user of a client device configured by templates that reference other templates. The client device and a server communicate with each other over a communication network. The client device includes templates that define a configuration of the client device, and thereby establish a level of user functionality at the client device. For example, the templates can determine the data services a user can access using the client device, including various data service options and/or features. Also, the configuration can determine the way in which the client device interacts with the user to provide user access to the data services. Complex templates can be used to configure the client device and to estab sh a high level of such user functionality. In the present invention, a template is broken down or sub-divided into smaller templates referred to as "include files". The template includes references to the "include files". In this way, a complex template can be simplified and modulaπzed using the include files. This simplifies template development, and as a result, the development of high levels of user functionality at the client device using the complex templates.
In the present invention, a plurality of templates can reference a single included file to significantly reduce the amount of memory required to store the plurality of templates. This reduction memory results because the information in the single include file (which may require a large amount of memory) is removed from each of the plurality of templates and replaced in each template with a single reference to the include file.
One embodiment of the present invention is a method used a communication system for providing data services to a user. The communication system includes a client device communicating with a server over a communication network. The client device includes a client template database for stoπng a plurality of templates defining a client device configuration. The method uses templates that reference other templates, and includes the steps of receiving a user request entered at the client device, and retneving a first template associated with the user request from the client template database The first template includes a reference to a second template. The method further includes sending a client request from the client to the server over the communication network. The client request includes a first template identifier corresponding to the first template. The method also includes receiving a server response from the server at the client device, wherein the server response includes data service information relating to one of the first and second templates.
Another related embodiment of the present invention is a method performed at the server. The server includes a server template database for stoπng a plurality of templates defining client device configurations. The method includes the step of receiving a client request from the client device, the client request including a first template identifier corresponding to a first template, the first template including a reference to a second template. The method further includes determining a server response based on the first and second templates, and sending the server response from the server to the client device over the communication network.
Additional related embodiments of the present invention directed to a client and a server apparatuses are also provided
Additional features and advantages of the present invention, as well as the structure and operation of vaπous embodiments of the present invention, are descπbed in detail below with reference to the accompanying drawings
Brief Description of the Figures
The features, objects, and advantages of the present invention will become more apparent from the detailed descπption set fourth below when taken in conjunction with the drawings in which like reference characters identify corresponding elements throughout and wherein-
FIGS. 1A and IB illustrate exemplary communications systems which the present invention is useful;
FIG. 2A illustrates an exemplary two-way communications client device for use with the present invention; FIG. 2B is an illustration of a paging device manufactured by Research In
Motion (RIM), Limited, of Waterloo, Ontario, Canada.
FIG. 3 is an illustration of a logical architecture corresponding to the communication system of FIGs. 1A and IB and the communications device of FIG. 2A. FIG. 4A is an illustration at a high level of an embodiment of a template used in the logical architecture of FIG. 3.
FIG.4B is a diagrammatic representation of an exemplary content portion of a template used in the logical architecture of FIG. 3. FIG. 4C is an illustration of a completed template or display page corresponding to the template of FIG. 4B.
FIG. 4D is an illustration of a list of exemplary definitions or descriptors defining the template of FIG. 4B and the display page of FIG. 4C. FIG. 5 is an illustration of an exemplary hierarchy of display pages.
FIG.6A is an illustration of an exemplary user interface including linked pages defined by a hierarchy of templates, before a template update in accordance with the present invention.
FIG.6B is an illustration of the exemplary user interface of FIG. 6B, after the template update.
FIG. 7A is an illustration of an exemplary information table stored in a server transaction database used in the logical architecture of FIG. 3.
FIG. 7B is an illustration of an exemplary information table stored in a server template database used in the logical architecture of FIG. 3. FIG.8 is an illustration of an exemplary information table stored in a client transaction database of the client device of FIG. 2A.
FIG. 9A is an illustration of an exemplary information request message transmitted by a client application used in the logical architecture of FIG. 3.
FIG. 9B is an illustration of an exemplary information response message transmitted by a server application used in the logical architecture of FIG. 3.
FIG. 9C is an illustration of another exemplary information response message including a template update, in accordance with the present invention.
FIG. 10 is a flow chart of an exemplary method of requesting information at a client in the logical architecture of FIG. 3, according to an embodiment of the present invention.
FIG. 10A is a flow chart of an exemplary method of receiving and responding to an information response at a client in the logical architecture of FIG. 3, according to an embodiment of the present invention. FIG. 11 is a flow chart of an exemplary method of responding to an information request of FIG. 10 at a server in the logical architecture of FIG. 3, according to an embodiment of the present invention
FIG. 11A is a flow chart of an exemplary method of responding to an information request of FIG. 10 including a Get_template command at a server in the logical architecture of FIG. 3, according to an embodiment of the present invention.
FIG. 12 is a flow chart of exemplary method steps expanding on the method of FIG. 11. FIG. 13 is a illustration of exemplary display pages at a client device before and after receipt of an information response at the client device.
FIG. 14 is a graphical illustration of an exemplary use of include files, according to the present invention.
FIG. 15 is an illustration of exemplary details of a quote template of FIG. 15, including exemplary explicit template definitions
FIG. 16 is an illustration of two include files taken from the quote template of FIG. 15.
FIG. 17. is an illustration of an exemplary template corresponding to the quote template of FIG. 15, and including references to the include files of FIG. 16 FIGs. 18A and 18B are illustrations of respective exemplary templates referencing common include files.
FIG. 19 is an illustration of an exemplary table used by a server and/or client device of the present invention to maintain configuration control over and to store templates and include files, according to the present invention. FIG. 20 is a flow chart of an exemplary method of using include files to access data services, according to an embodiment of the present invention.
FIG. 21 is an exemplary computer system, which may be used to perform the operations of the present invention. Detailed Description of the Preferred Embodiments
I. Introduction
The present invention relates to a method and system for automatically initializing and configuring a client device (e.g., a two-way paging device, a wireless phone, a personal data assistant, or a desk top computer). The present invention can be used in a two-way wireless communications system. Additionally, the present invention can be used in various other types of communications system. For example, the present invention can be used with the Internet. In an embodiment where the present invention is used with the Internet, a client device can be, for example, a wireless device that wirelessly accesses the
Internet (e.g., a PalmPilot® or a wireless phone) or a personal computer that is wired to the Internet.
Preferred embodiments of the present invention are discussed in detail below. While specific steps, configurations and arrangements are discussed, it should be understood that this is done for illustrative purposes only.
//. Exemplary Communications Systems
An exemplary wireless communication system 100 in which the present invention is useful is illustrated in FIG. 1A. Communications system 100 includes a plurality of cell sites 102 each having a coverage area that is typically about 5 to 10 miles in diameter. A coverage area of one cell site often overlaps a portion of a coverage area of another cell site, which are illustrated for exemplary purposes by the hexagonal regions. Each cell site 102 includes an antenna 104 for transmitting and receiving messages to and from two-way wireless client devices 108 (e.g., a two-way pager, a wireless phone, a hand held computing device) that are located within a geographic coverage area of the cell site 102. Alternatively, separate antennas may be used for sending and receiving messages, as would be apparent to a person skilled in the relevant art. Each cell 102 is coupled to communications network 110, which can be, for example, an X.25 packet switched network. Communications network 110 may include, but is not limited to, land based links such as fiber optics or terrestrial microwave, and/or satellite based links, as would also be apparent to a person skilled in the relevant art.
Each cell site 102 is in communications with a message system center (MSC) 120 that includes a subscriber database (also referred to as a user database) that maintains records of all subscribers (also referred to as users) on the system, a unique identity sequence for the subscriber's client device, and an indication of the cell site from which the client device last sent a message (such as an acknowledgment message or a request message). Preferably, communications between each cell cite 102 and MSC 120 is accomplished through communications network 110. Alternatively, each cell site 102 can have a dedicated link to MSC 120. Communications network 110 can be coupled to a public switched telephone network (PSTN) 112 so that a message can be sent to and from client device 108 via PSTN 112.
A message can also be sent from one client device 108 to another client device 108 using communications system 100. In one embodiment, communications system 100 is the Bell South
Wireless Data network (also known as the RAM Mobile Data network) or the ARDIS network, which are both well known two-way nationwide wireless packet data networks.
A client device (e.g., two-way wireless communications device) 108 typically identifies itself to MSC 120 by sending a registration or identification signal. Such signals include a data field including at least one unique identifier, such as a Mobile Identification Number (MEN) and/or Electronic Serial Number (ESN). A MIN, which can be reprogrammed, is analogous to a telephone number. An ESN is hard-coded and fixed such that it difficult, if not impossible to change. Some devices include both a MIN and an ESN. The client device used in an embodiment of the present invention, discussed in more detail below, only includes one unique identifier, known as a Mobile Access Number (MAN), which is similar to an ESN in that it is hard-coded and fixed. The identification signal sent by client device 108 can include one or more of the above discussed unique identifiers, or any other similar unique identifier. Such identification information can be periodically transmitted by client device 108 and/or included with other types of messages sent by client device 108. Such unique identifiers are also sent with each request sent by a client device 108.
An optional function of MSC 120 is to determine whether the unique identifier of a client device is valid. A received unique identifier, such as a unique identity sequence compπsing a stπng of digitally represented alphanumeπc characters, can be compared to a maintained database of unique identifiers (i.e., MINs, ESNs, MANs) to detect fraud.
MSC 120 can keep track of the approximate whereabouts of each client device 108 by keeping track of which cell site 102 a message, sent by a client device 108, originated. When MSC 120 is thus informed of the approximate whereabouts of each individual client device 108, it can later limit the number of cell sites 102 from which it transmits a message addressed to a particular client device 108. MSC 120 can even limit the transmission of a message to only one cell site 120 having a coverage area within which the particular client device 108 is believed to be located. The coverage area of a limited number of cell cites 102 (possibly only a single cell site or a last know site and its adjacent sites) shall be referred to as a targeted coverage area. Thus, the targeted area can be the area covered by a single cell site or a slightly larger area that is also covered by a few adjacent cell sites. This limited or "targetted" transmission is much more efficient than broadcast-type transmission where a message is transmitted from every cell site, regardless of a location of a client device 108 to which the message is addressed.
Servers 114 (typically controlled by a service provider) are supported by communications system 100. That is, communications system 100 provides for message delivery between a server 114 and one or more client devices 108. Servers 114 can communicate directly with client devices 108 or indirectly with client devices 108 via communications network 110 Alternatively, servers 114 can communicate with communications network 110 through PSTN 112. In one embodiment, a server 114 provides information to a client device 108 upon receiving a request from the client device 108. Additionally, servers 114 can initiate the sending of information (e.g., unsolicited information) to a client device 108. This can be done periodically or upon a tπggeπng event Additional details about the types of services and the information provided by services providers 114 are discussed below.
The present invention is also useful in data networks such as a local area network (LAN), a home area network (HAN), and a wide area network (WAN). For example, the present invention is useful in the largest present day WAN, known as the Internet, and in smaller WANs. The Internet is a world-wide set of interconnected computer networks that can be used to access a growing amount and vaπety of information electronically. One method of accessing information on the Internet is known as the World Wide Web (www, or the "web"). The web is a distπbuted, hypermedia system, and functions as a client-server based information presentation system. Information that is intended to be accessible over the web is generally stored in the form of "pages" on servers (e.g., general purpose computers). Users can access a web site using general-purpose computers, wireless hand held computing devices, Internet capable wireless phones (e.g., a Wireless Application Protocol (WAP) Internet enabled telephone), and the like, referred to as clients, by specifying the uniform resource locator (URL) of the site. FIG. IB is a network block diagram showing a plurality of clients 108 and servers 114 connected to the Internet 118.
When a client sends a request to a server the request specifies, among other things, a destination address (e.g., a URL) and a source address that can be used to identify a user. A part of the URL known as the Domain Name is passed to a domain server (DNS) to be translated to a network address The network address specifies the Internet protocol (IP) address of the intended server. The client request is passed to the server having the network address.
Servers 114 maintain or otherwise have access to local or remote databases that store and/or provide vaπous types of data. For example, referπng to FIG. 1A, remote databases 130 are maintained by data sources 132. FIG. 1A also shows a local database 116 that is maintained by server 114. Servers 114 can communicate with data sources 132 through dedicated links or through communications network 110, for example. The type and number of databases, and the form of communication of data between the servers 114 and the databases, is implementation specific.
The invention covers the ability of a server system to provide information to client devices via a wireless communications system, which typically has a plurality of cell sites that are coupled to a communications network. The invention also covers the ability of a server system to provide information to client devices via a wired communications system, or via a communications system consisting of a combination of wired and wireless links. The functions performed by the server system can compπse software running on one or more general purpose computers or on telecommunications-specific hardware. Alternatively, the combination of the software and hardware to accomplish the functions of the present invention can be conceptualized as a union of server controllers that each perform a discrete task, such as: sending a request from a client device in response to user input at the client device; receiving the request at a server over the communications network; identifying a user based on the request; determining a response based on the request; sending the response to the client device of the user, or the like. One, two, or more of these discrete tasks can be performed by a single server controller That is, the tasks performed by a first server controller and a second server controller can be performed by a single server controller and still be within the spiπt and scope of the present invention. Alternatively, the discrete tasks can be performed by any number of server controllers. A further descπption of exemplary software and hardware controllers is provided below. ///. Exemplary Client Devices
An exemplary two-way wireless communications client device 108 is illustrated in FIG. 2A. Client device 108 includes an antenna 202, a transmitter 204, a receiver 206, a microprocessor 208, a display 210 and a keypad 212 Transmitter 204 is controlled by microprocessor 208 and transmits messages using antenna 202. Messages received from a transmitter of the communications system 100 are received through antenna 202 or a separate antenna (not shown) The received messages are routed from antenna 202 to receiver 206 and processed by microprocessor 208, for example. Display 210 can be a liquid crystal display and is used for displaying, to a user (also referred to as subscπber) of client device
108, information received via communications system 100. Display 210 can also display lists and/or menus from which a subscπber can make selections and perform vaπous functions. Other methods of presenting the received information, such as aurally through a speaker or through another type of display, are not precluded. Keypad 212 can include as few as one button, but may also include an entire alphanumeπc keypad, touch pad, or can be integrated with a display, such as a touch-screen display. Client device 108 also includes a memory 214 that can store software and/or data. Microprocessor 208 can wπte to and read from memory 214. In one embodiment, client device 108 is an Inter@ctιve™ Pager 950 manufactured by Research In Motion (RIM), Limited, of Waterloo, Ontaπo, Canada. The RIM Inter@ctιve pager (RIM pager) is a commercially available device that provides for two-way wireless communications The REVI pager, shown in FIG. 2B, includes a 31-key keypad 212, roller wheel 214 that is similar to a mouse, and screen display 210 with 8 lines of text by approximately 28 characters per line. The RIM page also includes a built-in internal radio modem for two-way wireless communications over a cellular network such as the BellSouth network In another embodiment, client device 108 is a Palm Pilot™ computing device, manufacture by 3Com Corporation, of Santa Clara, California Client device 108 can also be a wireless communication device such as, but not limited to, a wireless telephone, a data transceiver, and a paging receiver Client device 108 can be fixed, portable, or mobile, such as a mobile telephone. Of course the use of other two-way communications devices is within the spiπt and scope of the present invention.
For some embodiments, client device 108 can be a personal computer that, for example, communicates with servers 114 via a network such as the Internet 118. Client device 108 can also be a personal computing device that wirelessly accesses the Internet Those of ordinary skill in the art will envision other implementations of client device 108 and appreciate that they are encompassed by the present invention.
IV. Embodiments of the Invention
A.l. Client-Server Architecture
The system descπbed in connection with FIGs. 1A, IB, 2A and 2B provides a plurality of ever expanding information services to a user of client device 108. In an example application, a user requests stock pπces from server 114, using client device 108. In response, server 114 transmits the requested stock pπces to client device 108. Client devιcel08 then displays the stock pπces to the user on display 210.
A logical architecture 300 of an embodiment of the present invention is depicted m FIG. 3. Logical architecture 300 corresponds to the system of FIGs 1 A and IB. Logical architecture 300 includes a client application 304 residing in client device 108, and a server application 306 residing m server 114. Client application 304 (also referred to as client 304) and server application 306 are, for example, computer programs respectively supported by computer controllers and memoπes of client device 108 and server 114. Server 114 (also referred to as server controller 114) compπses the hardware and/or software required to accomplish specific functions of the present invention. Server 114 can be conceptualized as a union of servers that each perform a discrete task. One, two, or more of these discrete tasks can be performed by a single server 114. That is, the tasks performed by a first server
114 and a second server 114 can be performed by a single server 114 and still be within the spiπt and scope of the present invention Alternatively, the discrete tasks can be performed by any number of servers 114. That is, the task performed by a single server 114 can be performed by a plurality of servers. Similarly, client device 108 compπses the hardware and/or software (for example, client 304) required to accomplish specific functions of the present invention. In client device 108, client 304 (also referred to as client controller 304) can be conceptualized as a union of clients that each perform a discrete task. One, two, or more of these discrete tasks can be performed by a single client 304. That is, the tasks performed by a first client 304 and a second client 304 can be performed by a single client 304 and still be within the spiπt and scope of the present invention. Alternatively, the discrete tasks can be performed by any number of clients 304. That is, the task performed by a single client 304 can be performed by a plurality of clients.
A.2. Client Overview
Client 304 includes a user interface 308 at client device 108 for allowing a user to interact with one or more information services supported by the system of the present invention. User interface 308 displays formatted information pages on display 210 and permits the user to navigate between such display pages. User interface 308 also provides the user with a mechanism to enter requests and/or commands using, for example, keypad 212 (see FIG. 2B).
Client 304 interfaces with a client template database 310 and a client transaction database 312 stored in a memory of client device 108. Client template database 310 includes a plurality of individual templates 314, typically associated with one or more information services provided by the system of the present invention. In the present invention, client device 108 (for example, client 304 and user interface 308) is configured, and can be updated or reconfigured, in accordance with individual templates 314 As will be further descπbed below, each template 314 is typically associated with a display page, and uniquely defines the type of information and a layout or format of information presented to the user on the display page. Each template 314 can also define a set of available actions a user can initiate when viewing an associated display page, thereby allowing, for example, the user to request information from the display page and to navigate between display pages.
Client device 108 can transmit information request message 316 to server 114 when appropπate. Client device 108 also receives response message 318 (transmitted by server 114) and can store information in the response message in client transaction database 312, so as to preserve the information for later retneval. Also, user interface 308 can display requested information to the user.
A.3. Server and Server Database Overview
Server 114 can communicate with a plurality of clients, e.g., client device 108, associated with a plurality of client devices 108. Server 114 distπbutes requested information to client devices 108, and maintains configuration control over the client devices. To perform such tasks, server 114 interfaces with a plurality of information stores, including a server template database 330, a server transaction database 332, and an exemplary service information store 334.
Service information store 334 includes real-time data from data sources 132 (not shown m FIG. 3; see FIG. 1A). Service information store 334 can include data relating to finance and stocks, sports, weather, airline schedules, and the like. Service information store 334 can be a local database 116 or a remote database 130. When server 114 receives information request 316 from client device 108, server 114 retrieves the requested information from information store 334, and transmits the information to client device 108 using information response message 318. Since this information in response message 318 can include information relating to one or more data services, it is also referred to herein as "data service information".
Server transaction database 332 stores past transaction event data thereby enabling server 114 to track information server 114 has previously transmitted to each client device 108. Server transaction database 332 can include tables mapping individual client device unique identifiers (for example, MANs, MINs, or ESNs) to authorized services and associated templates. Server 114 can use such mapping tables to validate/authorize client requests. Server 114 maintains transaction event data for past and on-going transactions between server 114 and client devices 108 in server transaction database 332. Such data is used to track and control the various transactions in the system of the present invention and to build transaction history tables for each of the client devices 108.
Server template database 330 includes the latest or most current versions of the available templates in the system of the present invention. Server template database 330 can also include tables mapping individual client device unique identifiers to the most cuπent template versions authorized for client devices 108 associated with the unique identifiers. As new services, features and options are added to the system of the present invention, new templates are stored in server template database 330 and/or existing stored templates are updated, to reflect the additions. Therefore, at any given time, it is possible a client device 108 includes an old version of a template, that is, an out-of-date template that requires updating. When server 114 receives information request message 316 from client device 108, server 114 determines whether the template (at client device 108) associated with the request message is the most current template (for example, an updated template). If the template is an old version, server 114 retrieves the most current template from server template database 330, and then transmits an appropriate template update, along with the requested information, to client device 108 using response message 318. In this manner, server 114 distπbutes the most current template versions to client devices 108 on a per access and an as needed basis. Thus, server 114 efficiently distπbutes template updates to client devices 108 to render new service features and options available to the users, and maintain configuration control over the clients. Further details regarding initially configuπng a client device with templates are provided inU.S. Patent Application No.09/523, 170, entitled "System, Method and Apparatus for Initial Configuration of a Client Device," incorporated herein in its entirety by reference
B.l. Template Overview
In the present invention, the templates stored in client device 108 define a configuration of the client device. The configuration of client device 108 can determine the data services a user can access using client device 108, including vaπous data service options and/or features. Also, the configuration can determine the way in which client device 108 interacts with the user to provide data services to the user. This can include, but is not limited to, the types of pages displayed to the user, the appearance of the display pages, the types and/or arrangements of information displayed on the pages, the navigable hierarchy of display pages presented to the user, the types and/or operations of actions the user can initiate when the user is presented with the display pages, the types of requests a user can enter via client device 108 and/or the content of client requests resulting from such entered user requests. The configuration of client device 108 can also determine how client device 108 responds to vaπous user requests. FIG. 4A is an illustration at a high level of an exemplary embodiment of template 314. Template 314 includes a template header 400 having a template identifier 400a, a template version identifier or number 400b, and an optional template title 400c. Template 314 also includes a content portion 402 and an action portion 404. Content portion 402 includes definitions or descπptors (such as textual, symbolic and/or graphical descπptors) that define a layout and appearance of an associated display page on display 210. In other words, content portion 402 specifies an arrangement of information fields on the associated display page.
On the other hand, action portion 404 includes definitions (such as textual, symbolic, and/or graphical descπptors) specifying a set of actions a user can initiate with respect to the associated display page For instance, action portion 404 can include: menu action definitions 404a, such as menu pull-down actions and scroll-wheel shortcuts; keyboard action definitions 404b, such as keyboard shortcuts (e.g., press "W" for weather service requests), branching action definitions 404c, allowing the user to branch from the cuπent template and display page to a next template and display page linked with the current template; and external references 404d, such as URLs. Such actions are available to the user at the display page associated with template 314.
Content portion 402 is now further descπbed. Content portion 402 typically includes text (for example, field labels) and vaπable descπptors (for example, stock quote information). Content portion 402 defines a format for the vaπable information and text within the display page Content portion 402 can also include references to tables and graphical entities stored in the client device memory. A diagrammatic representation of the content portion of an exemplary template 406 is depicted in FIG. 4B. Template 406 includes a title 410 (that is part of the header of the template) for displaying the text "PRECIOUS METALS". The content portion of template 406 includes the following definitions: a field 412 for displaying current time; a plurality of information field identifiers or labels 414 arranged a column; and a first set of information fields 416 for displaying vanable information (such as stock pπces) and a second set of vaπable fields 418 for displaying further vaπable information corresponding to the information field identifiers. Template 406 is incomplete because none of the information fields are populated with the specified vaπable information. When client device 108 receives requested information corresponding to template 406, client device 108 populates an instance of template 406 with the requested information, thereby creating a completed template. User interface 308 displays the completed template to the user as a display page. A display page/completed template 420 corresponding to template 406, is depicted in FIG 4C. In display page 420, field 412, fields 416, and fields 418 are respectively populated with current time, hi/low stock pπces, and stock pπce deviations. In the present invention, each template can incorporate a unique set of actions available to the user when the template is displayed as a display page, as mentioned above. In other words, actions can vary from template to template and page to page in the present invention. Template actions are further descnbed below. FIG. 4D is an illustration of a list of exemplary definitions or descπptors that define template 406 (FIG. 4B), and thus display page 420 (FIG. 4C), as the template can be stored in either client or server template databases 310 or 330. The illustrated list of definitions correspond to a data service for precious metal pπces. In header 400, "NT", "VERSION", and "TI" respectively specify the template name "tempi", version "1.1", and title "PRECIOUS METALS".
Content portion 402 (corresponding to labels 414, and fields 416 and 418 of FIG. 4B) includes a plurality of content definitions 436 for metal pπcing information. A spaced pair of percent symbols (%) delimits each information field. For example, the definition "<SILNER%0: 11 %% 1 :6%" causes two vaπable fields of information to be displayed after the text "SILVER" on the display of client device 108. Action portion 404 includes exemplary action definitions 442 and 444. The actions defined by action definitions 442 and 444 are available to the user when the display page associated with the template (for example, display page 420 of FIG. 4C) is being displayed. Action definition 442 defines a menu choice "refresh" in a list of displayed menu items. When "refresh" is selected in one embodiment, client device 108 retπeves the most recently received information relating to template temp, from client transaction database 312, and refreshes the display with the retπeved data. In another embodiment, selecting "refresh" causes client device 108 to first update the display with information retπeved form client transaction database 312 as just descπbed, and then transmit an information request for new information to refresh the displayed information. In still another embodiment, the first step is omitted from the just descπbed two-step embodiment Action definition 444 defines a shortcut key as "SP", the "space bar" key
(also referred to as the "symbol key") on keypad 212, which when pressed, causes a branch to a predetermined home template or page called temphome. Client device 108 then displays the home page associated with temphome.
The templates of the present invention provide a powerful and convenient mechanism for configuπng, reconftguπng, and updating client device 108
(including, for example, client 304 and user interface 308). As the system of the present invention adds new services and/or expands existing service options and features, correspondingly new and/or updated templates are automatically distπbuted to and stored in client devices 108. The new and/or updated templates correspondingly expand the service features and options available to the user so that the user can access the new and expanded services. In the present invention, the new and/or updated templates are transmitted from server 114 in such a way as to be transparent to the user. Advantageously, the user is no longer burdened with physically returning the user device to a service center for such an update or with enteπng configuration data at client device 108. Also, developers are freed from the burden of redeveloping (and then distributing to many users) new versions of complex client application software and user interface software to accommodate every new feature or service upgrade. Instead, users can advantageously compose new and or updated templates in a convenient development environment (for example, on a personal computer) at the server end of the system. Advantageously, the templates are then automatically distπbuted to the users on a per user basis, as needed, as will be descπbed further below.
In the present invention, templates 314 stored in template data base 310, and the actions specified m each of the templates, define an interconnected hierarchy of user navigable display pages at client device 108. FIG 5 is an illustration of an exemplary hierarchy of display pages 502. In the example hierarchy, user interface 308 displays a home or welcome page 504 to the user when client device 108 is first powered-on. Home page 504 is a service starting page. Using actions, represented by connectors 506, defined for the home page by the associated home page template, the user can branch to a quote request page
508, a portfolio page 510, an informative "about" page 512, and a set-up page 514. The user can navigate between the aforementioned pages and a quote display page 516, a chart page 518, a user alert page 520, user page 522 and an add symbol page 524. Templates and the actions defined thereby advantageously provide a convenient mechanism for alteπng user interface 308 and associated applications in accordance with expanding services, without changing the underlying user interface or client computer programs. An exemplary update to user interface 308 is now descπbed with reference to FIGs. 6A and 6B. With reference to FIG. 6A, a user interface 602 is defined by a quote entry page 604, a quote display page
606, a portfolio page 608 and an FxAlert page 610 (for precious metal pπces) linked together by actions 612.
With reference to FIG. 6B, to add a new service or user capability, for example, the ability of obtaining the latest news for a particular stock, a new template, defining a new page 614 called "Equity News," can be composed for accessing such latest new stock information New page/template 614 can be linked to and thus only accessible from quote display page 606, assuming new page 614 should be accessible only after a particular stock quote is displayed on quote display page 606. To effect such a link, an action 616 can be added to quote display page (template) 606. For example, the added action 616 can define a branch key N, which when pressed, causes a branch from quote display page 606 to Equity News page 614 in accordance with the above assumption.
Cl. Server Transaction Database
As descπbed above in connection with FIG. 3, server 114 accesses server transaction database 330 to manage transactions with numerous client devices
108. FIG. 7A is an illustration of an exemplary transaction table 700 stored server transaction database 330 Exemplary table 700 includes a client identification column 702, atemplate identifier column 703, an optional template title column 704, a template version column 706, an index column 708, a date column 710, a time column 712, and a parameters column 714. Each row of client identification column 702 includes a unique identifier of a client device 108 (e.g., MAN, ESN, MIN). Each row of template identifier column 703 includes a unique identifier of a template (e.g., tempt, temp2, temp3). Each row of template version column 706 specifies the version of the template in the corresponding row of column 703. Accordingly, entπes in template version column 706 specify the version of a template (i.e., identified in column 703) that a specific client (i.e., identified in column 702) cuπently has stored in its client template database 310 Each row of index column 708 identifies the data type that is used to populate the corresponding template in column 703. The data included in parameters column 714 is the data that was sent to the corresponding client (in column 702) the last time server 114 provided that client with the data type of column 708. Each row of date column 710 and time column 712 specifies when server 114 last provided the client device of column 702 with the data included in parameters column 714.
C.2. Server Template Database
As descπbed above in connection with FIG. 3, server 114 accesses server template database 330 to maintain configuration control over client devices 108. FIG. 7B is an illustration of an exemplary table 750 stored in server template database 330. Table 750 includes a column 754 listing the identifiers of cuπent templates stored in database 330, a column 756 listing template version numbers for the identified templates, and a column 758 listing the definitions of the identified templates. Each row 760 corresponds to an identified template, for example, template temp,. In another embodiment, where each template includes a version identifier (see FIG. 4A, header 400 of template 314), version column 756 is deleted since a template version can be determined from the template header (e.g., header 400) included in the template definition.
C.3. Client Transaction Database
FIG. 8 is an illustration of an exemplary table 800 stored in client transaction database 312 of client device 108. Table 800 is essentially the same as server transaction table 700 of FIG 7 A and discussed above, except that table 800 does not include a client identifier column (e.g., column 702). This is because client transaction database 312, and thus table 800, are specific to only one client device 108
D.l. Information Request and Response Messages
FIG. 9A is an illustration of an exemplary information request message 900 (corresponding to information request message 316 of FIG.3) transmitted by client device 108. The information request message (e.g., 900) is also refeπed to as a client request, since it is initiated by client device 108. The fields of message 900 are aπanged in accordance with an exemplary message format, and it is to be understood that message 900 can be arranged in other formats. Message 900 includes a client device identifier (such as a MAN) 902, transaction information
904 used by client device 108 and server 114 to track the current transaction, a template identifier or name 906, a template version identifier 908 identifying the version of the named template stored in template database 310, and a specific information request 910.
In one embodiment, transaction information 904 includes a transaction number 912 and a client state 914. Client 108 tracks each request using transaction number 912, which only client 108 can increment. Client state number
914 specifies the last successfully received update for the template identified by template identifier 906. In one embodiment, client 108 can store transaction number 912 and client state number 914 in, and retrieve transaction number 912 and client state number 914 from, additional columns (not shown) of server transaction database table 700. Use of transaction number 912 and client state number 914 are discussed below.
Client device 108 increments transaction number 912 every time it sends a client request to server 114. Only client device 108 can increment transaction number 912. However, client device 108 never increments client state number 914. Rather, server 114 increments client state number 914 when it sends a server response to client device 108.
If client device 108 issues multiple client requests (e.g., multiple requests for stock quotes AAPL, MSFT, GE, INTC, etc.), each request (e.g., 900) includes a transaction number 914. Server 114 responds to each request individually and echoes back the appropriate transaction number 914 in each server response (e.g.,
920). Each server response received by client device 108 is stored in client transaction database 310. Additionally, in one embodiment, a display page associated with the server response to the last (i.e., in time) client request is displayed to the user. Client state 914 is used by server 114 to determine the last successfully received (by client device 108) server response to a particular client request. This is important because client device 108 may fail to receive a server response sent by server 114. Thus, server 114 should save the last sent server response in, for example, a suspense file. Only when sever 114 receives a new client request (i.e., for the same information) with the same state number does it write the data of the last server response (which was stored in the suspense file) to server transaction database 332. For example, server 114 may receive a "state 6" client request and return a new "state 7" server response to client device 108. If client device 108 never receives the server response with "state 7", then the next time client device 108 makes the same client request it will again be a "state 6" client request. In this manner, server 114 will know that client device 108 never received the "state 7" server response. This enables server 114 to use old "state 6" data (rather than the data last sent to client device 108, that is associated with "state 7") when performing a comparison of old data to new data to thereby produce a server response.
In one embodiment, either client device 108 or server 114 can reset client state 914 to zero when a server response includes a full update (as opposed to a server response that only includes changes).
FIG. 9B is an illustration of an exemplary information response message 920 (corresponding to information response message 318) transmitted by server
114. The information response message (e.g., 920) is also referred to as a server response, since it is initiated by server 114. Message 920 (also referred to as server response 920) includes requested information 922, provided in response to specific information request 910 of information request message 900.
E.l. Client Requests Information and Issues a Getjemplate Command
Exemplary methods of requesting and responding to information requests are now descπbed. FIG. 10 represents a seπes of method steps 1000 performed by client device 108 in response to a request for information from a user The method begins at a step 1002 when the user of client device 108 issues a request for information from a displayed page, via user interface 308. This request can be thought of as a "display information" request, and is associated with a stored template 314. Atanextstep 1004, client device 108 queπes client template database 310 to determine whether an appropπate template 314 associated with the request is locally available. If client device 108 determines that the appropπate template is not locally available (i.e., if the answer to step 1004 is NO), then, at a step 1005, client device 108 sends a get_template command to server 114. This can occur, for example, if client device 108 was initially configured with a single template, such as a home template (e.g , temphome) associated with a home page, and no other templates have since been supplied to the client device. In such a situation, the home page can allow branch actions to other named templates not resident in client template database 310. Thus, at step 1004, client device 108 detects an absence of one of these other named templates from template database 310 when the user initiates a branch action to the missing template. In turn, client device
108 sends the get_template command. Further method steps related to the get_template command are discussed below connection with FIGs. 10A and 11.
If the appropπate template is locally available, then at a step 1006, the appropπate template is retπeved from client template database 310. At a next step 1008, there is a determination whether data associated with the appropπate template is available from client transaction database 312. If the answer to step 1008 is YES, then flow continues to a step 1010, where the template is populated with data from client transaction database 312. The data retπeved from client transaction database 312 is the data last received from server 114 to populate the retπeved template (e.g., data from an earlier transaction). If the answer to step 1008 is NO, then flow jumps directly to a step 1016, which is discussed below. In one embodiment, after step 1010, in a step 1012, the populated template is displayed (i.e., an associated page) on display 210 of client device 108
Preferably a status (e.g., date and time) of the displayed information is also displayed. Accordingly, the appropπate template preferably includes a status field that can be populated with status data (e g., date and time). The information displayed to the user can be stale, for example, the data can be days, hours, or seconds old, depending on when client 108 last received the information to populate the appropπate template
If the user directs client device 108 to do something other than refresh the information (i.e., if the answer to step 1014 is NO), then client device 108 functions accordingly. For example, the user may initiate a branch action that causes client device 108 to display a different page.
At a decision step 1014, if the user requests that the information (i.e., that populates the template) be refreshed with "new" information (i.e., if the answer to step 1014 is YES), client device 108 composes and transmits an appropriate information request message to server 114, at a step 1016. In one embodiment, a user can request refreshed information by pressing a predefined action key, such as the "enter" key or "space bar" key. An example request message 900 is descπbed above in connection with FIG. 9A.
In an alternative embodiment, flow jumps directly from step 1008 to step 1016, such that client device 108 sends a request message to server 114 after client device 108 retπeves data from client transaction database 312. In another embodiment, flow jumps directly from step 1006 to step 1016, such that client device 108 sends a request message to server 114 after client 204 retπeves the appropπate template from client template database 310. E.2. Server Responds to an Information Request and Provides a Template Update
FIG. 11 represents a seπes of method steps 1100 performed by server 114 m response to a request for information from client device 108. The process begins at a step 1102 when server 114 receives a request message (e.g., request
900) sent from client device 108. At a step 1104, server 1 14 identifies client device 108. This is accomplished using a unique identifier (e.g 902) included in the request. In this example, server 114 recognizes that the client device 108 that sent the request message has a template for displaying the requested information, because the request (e.g., 900) includes a template identifier (e.g., 906). At this point, server 114 can also determine whether the specific information request is authoπzed for the requesting MAN.
At a next step 1106, server 114 retπeves the latest (i.e., most current or up-to-date) version of the identified template (e.g., the template identified by template identifier 906) from server template database 330. Atastep 1108, server
114 retπeves/deπves the requested information required to populate the data fields of the template that was retπeved at step 1106. For example, at step 1108, server 114 retπeves the requested information from information store 334 in accordance with the most current template definition. In a step 1110, server 114 determines whether client 108 has the most cuπent template. To make this determination, server 114 compares template version identifier 906 of the template named in information request message 900 against the version identifier for the same named template just retneved from server template database 330 (e.g., in column 756 of table 750 of FIG. 7B) at step 1106.
If server 114 determines that the identified client device 108 does not have the latest version of the appropπate template (i.e., the answer to step 1110 is NO), then client device 108 has an "old" template that requires updating with a "new" template, namely, the template just retπeved from server template database 330. Accordingly, at a step 1112, server 114 composes an information response message (e.g., message 930) including: a) information retπeved from information store 334 at step 1108; and b) template update information from the "new" template. In one embodiment, server 114 includes the entire "new" template in the information response message. In another embodiment, server 114 compares the "old" template to the "new" template to determine changes between the two templates. Server 114 then includes only these changes in the response message, to thereby shorten the response message and reduce required transmission bandwidth when the response message is transmitted. In a further embodiment, particularly if the "new" template includes a large amount of information, server 114 partitions the "new" template into a seπes of consecutive but separate messages.
On the other hand, if server 114 determines at step 1110 that client device 108 does not require a template update (i.e., the answer to step 1110 is YES), then server 114 composes an information response message using only the information retπeved from information store 334 (e.g., message 920), since a template update is unnecessary. At a next step 1116, server 114 transmits the composed information response message to client 108. For example, server 114 transmits response message 920 or 930 composed respectively at steps 1114 or
1112.
In one embodiment, the message that server 114 composes at step 1114 or 1112 (and sends at step 1116) includes all the data necessary to populate a template. In another embodiment, the message that server 114 composes at step
1114 (and sends at step 1116) includes the information that has changed since client device 108 last successfully received a server response (i.e., to populate the particular template) from server 114, but does not include the information that has not changed since server 114 last sent a successfully received server response message Accordingly, an advantage of this embodiment is that the size of the response message (or messages) is further reduced.
An advantage of the present invention is that if the client device 108 (to which the response message is being sent) has the most cuπent template, then the composed and transmitted response message (e g., message 920 composed at step
1114) only includes the information required to populate and thus refresh a template. This significantly reduces the size of the response message (or messages) that is transmitted from server 114 to client device 108. Minimizing the size of response messages reduces the cost and/or response time (also referred to as latency) for providing information services For example, where a communications system provider charges on a volume basis, the less data transmitted means less cost to the user. Additionally, since latency is typically proportional to the amount of data being transmitted, the less data transmitted means lower latency. A further advantage is the reduction in a system transmission bandwidth, such that more users can be supported by the services of the system.
Further details of step 1114, according to an embodiment of the present invention, are now discussed with reference to FIG. 12. In a step 1202, server 114 queπes server transaction database 332 to determine the information, for the particular template, that client device 108 has stored in client transaction database
312. For example, server 114 searches table 700, of FIG 7A, based on client identifier 902 and template identifier 906 to determine what information was last sent to client device 108 for the identified template.
In a step 1204, server 114 then compares the information in each data field (i.e., the information retπeved in step 1108 of FIG. 11) against the record of what was last successfully received by client device 108 (i.e , determined in step 1202), to thereby determine the information that has changed (also refeπed to as the changed fields).
Steps 1202 and 1204 can be illustrated with reference to FIG. 13. An "old" page 1302 represents the information (populating a precious metals template) that client device 108 has stored m client transaction database 312 (i.e., at step 1202). Server 114 determines that client device 108 has such an old page of information using server transaction database 332. A "new" page 1304 represents up-to-date or current information (populating the same precious metals template) retπeved by server 114 at step 1108. A change definition 1306 represents a change in information between old page 1302 and new page 1304. Server 114 determines change definition 1306 by compaπng the information in old page 1302 to the information in new page 1304 Server 114 can compress change definition 1306 using a data compression technique to produce a compressed change definition 1308, thereby further reducing the size of the response message
In one embodiment, at step 1202, server 114 queπes server transaction database 332, based also on client state number 912 (i.e, in addition to client identifier 902 and template identifier 906) to ensure that server 114 actually compares the up-to-date information (i.e., the information retπeved in step 1108) against what client device 108 actually has stored in its client transaction database
312. If this query is not based also on client state number 912, there is a possibility that server 114 will perform the compaπson using information that was last sent to client device 108, but never received by client device 108
E.3. Client Receives an Information Response and a Template
Update
FIG. 10A represents a seπes of method steps 1050 performed by client device 108 when the client receives a response message from server 114. The process begins at a step 1052 when client device 108 receives a response message
(e.g., message 920 or 930) from server 114 (see FIG. 11, step 1116).
At a decision step 1054, client device 108 determines whether the response message includes a template update. If the response message includes a template update for an identified template, at a step 1056, client device 108 updates the ldentified template in client template database 310 using template update information from the response message. Then flow proceeds to a step 1058.
On the other hand, if the response message does not include a template update, then flow proceeds directly from decision step 1054 to step 1058. At step 1058, client device 108 updates client transaction database 312 with information from the response message. For example, client device 108 replaces a row of client transaction table 800 containing "old" information with "new" information received from the response message.
At a next step 1060, client device 108 refreshes the current display page, if appropπate, by retπeving the "new" information from client transaction database
312. If a template update was received, and it is appropπate to update the current display page, then the current display page is updated to reflect a designated display aπangement, information fields, actions and refreshed data associated with the "new" or updated template.
E.4. Server Receives an Information Request Including a
Getjemplate Command From the Client
FIG. 11 A represents an exemplary seπes of method steps 1150 performed by server 114 when the server receives a get__template command from client device 108 (see FIG. 10, step 1005). The process begins at a step 1152 when server 114 receives an information request message from client device 108
At a decision step 1154, server 114 determines whether the request message includes the get_template command. The get_template command includes a template identifier identifying a template required by the requesting client device 108. If the request message does not include a get_template command, flow control branches to step 1158, descπbed below, and the method continues from step 1158.
On the other hand, if the request message includes a get_template command, then at a step 1156, server 114 validates the requested template. To validate the requested template, server 114 queries server template database 330 using the requested template identifier in the get_template command to determine whether the requesting client device 108 is an authorized user of the requested template and its associated services. If the requesting client device 108 is not an authorized user of the requested template, server 114 transmits an error message to the requesting client, and the process terminates. Otherwise, server 114 retrieves the requested template from server template database 330.
At next step 1158, server 114 collects data in accordance with the retrieved template, as described above in connection with step 1108 of FIG. 11. At a next step 1160, server 114 composes an information response message including a template update, as described above in connection with step 1112 of FIG. 11. In this case, the template update includes the retrieved template in its entirety. At a next step 1162, server 114 transmits the information response/template update, as described above in connection with step 1116 of FIG. 11. When client device 108 receives the information response message, client device 108 executes the method steps described above in connection with FIG. 10A.
In another embodiment for updating templates, client device 108 sends a get_template command to server 114, but no template definitions, such as variable (field) definitions, etc, are associated with the get_template command. This get__template command is not considered a request for any information other than an absent template. Server 114 determines whether this get_template command or a client request for information has been received. If a client request for information is received, then server 114 executes method steps 1104 - 1116, as described above connection with FIG. 11. On the other hand, if a get_template command is received, server 114 returns only the requested template, if authorized, to client device 108 without collecting data service information. In other words, in this embodiment, both of the above described steps 1158 and 1160 are omitted. The above descπbed embodiments "automatically" update templates in client device 108 because the updates occur without requiπng any predetermined, update-specific actions from the user. The user need only submit information requests in the normal course of client device operation, such as from a system services display page, and in response, the system of the present invention automatically effects the necessary template update. As descπbed above, such a template update correspondingly updates options, features, and/or services available to the client device and the user thereof. The update of the options, features, and/or services available to the client device corresponds to a reconfiguration of the client device.
E.5. Include Files
As previously descπbed, templates 314 include header portion 400, and can optionally include content and action portions 402 and 404. Often, action definitions (such as menu choices) and content definitions (specifying data fields and the like) can be repeated from template to template. In other words, more than one template can share the same content/action definitions. This can waste precious memory resources Also, a template can become complex when numerous template definitions are associated with the template. Also, stoπng numerous complex templates, each including many repetitive definitions, can require a substantial amount of memory. Therefore, the present invention simplifies the design of such complex templates, reduces the amount of memory required to store the templates, and can distπbute repetitive information across "globally" accessible templates. A globally accessible template is a template that can be referenced by a referencing template, and then incorporated or included into the referencing template as needed, as will be further descπbed below. In other words, in the present invention, a first template includes a reference to a second template. When required, the template definitions of the first and second templates can be combined. The second, referenced template, is referred to as an "include" file or template.
FIG. 14 is a graphical illustration of an exemplary use of include files according to the present invention. Three views, namely, a first view 1400a, a second view 1400b, and a third view 1400c, of an exemplary "quote" template
1400 are depicted in FIG. 14. Quote template 1400 is used to display and request stock quote and trading information. Quote template 1400 can be stored in either or both of client template database 310 and/or server template database 330.
First view 1400a of template 1400 corresponds to a geneπc format of quote template 1400 Header 400, content portion 402, and action portion 404 of template 1400 are depicted m first view 1400a.
Further details of template 1400 are depicted in second view 1400b. As depicted in view 1400b, content portion 402 of the quote template 1400 includes the following template definitions (e g., data fields/vaπable, text, etc.) relating to stock quote and trading information: current pπce definitions 1406, bid/ask definitions 1408; high/low pπce definitions 1410; and volume definitions 1412. Each of definitions 1406 - 1412 can include data fields or vaπables, formatting information, text, etc.
Quote template 1400 also includes action definitions 1414 corresponding to menu actions (e.g., menu selections from a display page associated with the quote template) and keyboard definitions 1416. Each of the template definitions 1406-1416 can include one or many template definitions In the case where each of the definitions 1406-1416 includes many definitions, quote template 1400 can be complex and require a large amount of memory when stored in template database 310 or 330.
The present invention simplifies the design of such a complex template by breaking up or dividing a single template, such as template 1400, into a plurality of smaller "include" files or templates. A plurality of such include files 1430 for template 1400 are depicted in view 1400c. Specifically, the plurality of include files 1430 compπse the following files or templates: a "current" include file 1432 containing the one or more "current" definitions 1406, a "bid/ask" include file 1434 containing the one or more "bid/ask" definitions 1408, a "high/low" include file 1436 containing the one or more "high/low" definitions 1410, and a "volume" include file 1438 containing the one or more "volume" definitions 1412 Also, a menu include file 1440 and a keyboard include file 1442 respectively contain menu definitions 1414 and keyboard definitions 1416
In view 1400c, since content definitions 1406-1412 and action definitions 1416-1414 of template 1400 are subdivided into include files 1430, quote template 1400 need no longer contain the explicit template definitions now removed to include files 1430. Instead, quote template 1400 need only contain a single reference to each of the include files 1430, whereby when the quote template is accessed by either server 114 or client device 108, the quote template can be reconstructed from include files 1430 using the references thereto Accordingly, as depicted m FIG. 14, view 1400b, quote template 1400 contains a plurality of references 1450 to respective include files 1430 References 1450 link the plurality of include files 1430 to referencing template 1400 Exemplary references include address pointers to the referenced templates, or the template identifiers of the referenced templates.
In one embodiment, each of the include files 1432-1442 is constructed as a template containing the necessary content and/or action definitions required to construct the more complex quote template 1400. When necessary, server 114 and/or client device 108 combines the referenced include files or templates to construct quote template 1400 Breaking up a template (such as the quote template) into smaller templates (include files) has several advantages. First, include files modulaπze and thus simplify template design because numerous template definitions can be replace with a few simple references to respective include files. Second, include files can reduce the amount of memory required to store a plurality of templates at client device 108 or at server 114 For example, in the absence of include files, memory can be wasted when a plurality of templates commonly incorporate the same template definitions Include files can reduce memory requirements because the commonly incorporated and repetitive template definitions can be removed from the plurality of templates and placed in a single, commonly accessible include file. In each of the plurality of templates formerly containing the repetitive definitions, a single reference to the common include file replaces the repetitive template definitions, thus reducing memory requirements overall.
FIG. 15 is an illustration of exemplary further details of quote template 1400, without references to include files. A list of explicit template definitions corresponding to quote template 1400 are depicted in FIG. 15. Quote template 1400 includes menu action definitions 1414 for a plurality of menu actions (see
FIG. 14), a plurality of menu actions 1504, keyboard action definitions 1416 (see FIG. 14), a plurality of keyboard action definitions 1508, and content definitions 1406-1412 (see FIG. 14). Note that a "'" symbol preceding text indicates that the text following the '"" is a comment, and not a template definition. Include files can simplify quote template 1400 of FIG. 15. Such a use of include files to simplify quote template 1400 is now described with reference to FIGs 15, 16 and 17. With reference to FIGs. 15 and 16, explicit menu action definitions 1414 can be removed from quote template 1400 and placed into a corresponding include file 1440 (FIG. 16) having a template identifier 1602 ("menul"). FIG. 16 includes an illustration of include file menu 1. Similarly, explicit keyboard action definitions 1416 can be removed from quote template 1400 and placed into an include file 1442 (FIG. 16) having a template identifier 1604 ("keyl").
Template 1400 can be constructed (simplified) to reflect the removal of menu and keyboard definitions 1414 and 1416 from template 1400. An exemplary constructed template 1700 reflecting the removal of the definitions, and the placement thereof into include files menul and keyl, is depicted in FIG. 17. An exemplary technique for referencing the menul and keyl include templates is illustrated in FIG. 17, wherein quote template 1700 includes a reference 1702 ("menul") to the menul include file and a reference 1704 ("keyl) to the keyl mclude file. The text "IN" preceding references 1702 and 1704 indicates to client device 108 and/or server 114 that the references to follow (e.g., template identifiers) are references to include files
When it is necessary to fully reconstruct quote template 1400 from template 1700, client device 108 or server 114 inserts the template definitions from the referenced include files or templates (for example, from menul or key 1 ) into quote template 1700 as if the included definitions were part of the quote template. As a result of reconstruction, template 1700 is transformed into template 1400 as depicted in FIG. 15 A compaπson between FIG. 15 and FIG 17 indicates the use of include files to simplify complex templates
As mentioned above, include files can be used to reduce the memory required to store templates in the case where several templates share the same template definitions. An illustration of this is provided by FIGs. 18A and 18B. In FIG. 18A, a template 1800 references by name "current" include file 1432, "bid/ask" template 1434, an "open/close" include file, and "volume" include file
1438. With reference to FIG. 18B, a template 1802 also references "current" include file 1432, the "open/close" include file, and "volume" include file 1438 However, template 1802 also references "high/low" include file 1436. Accordingly, several of the include files (for example, include files 1432, 1434, andl438) serve both templates 1800 and 1802, thus reducing memory over the case when include files are not used
FIG. 19 is an illustration of an exemplary table 1900 that can be stored in either or both of server template database 330 and/or client template database 310. Table 1900 is used by server 114 and/or client device 108 to maintain configuration control over and to store templates and include files in the present invention. Table 1900 includes a first column 1902 listing template identifiers, such as an identifier for the quote template, a column 1904 listing a template version for each of the templates named in column 1902, and an information column 1906 listing either template definitions for, or the names of templates referenced by, the templates named in column 1902. Each row (for example, row 1910) of table 1900 corresponds to a named template. For example, row 1910 corresponds to the quote template. In row 1910, a first field 1912 corresponding to column 1902 includes the template identifier "quote", a field 1914 corresponding to column 1904 includes a version identifier "1.1" for the quote template, and a field 1916 corresponding to column
1906 contains the template identifiers "q_header", "q_content", and "q_actιons" referenced as include files by the quote template Each of these template identifiers (e.g., q_header) corresponds to an include file or template referenced by the quote template In table 1900, explicit template definitions are referred to as "text", but note that no such explicit template definitions are stored in field
1916.
A second row 1912 corresponds to the q_header template referenced by the quote template and name in field 1916 of row 1910. Row 1912 includes a version number " 1.2" and explicit template definitions ("text") in a field 1920. The explicit definitions include header definitions that are to be included by reference into the quote template. A third row 1922 corresponds to the q_content template referenced in field 1916 of row 1910. Note that row 1922 includes a field 1924 containing a plurality of include files "q_content_cuπent", "q_content_ask", etc. The effect of the above-descπbed table structure is the following. The quote template references three include files(for example, the q_content template, etc.), and, turn, the q_content template contains references to additional include files (for example, a q_content_bιd_ask template).
Remaining table rows 1930, 1932, 1934, 1936 and 1938 of table 1900 correspond to templates previously referenced as include files by other referencing templates. Note that each of the rows 1930-1938 includes a field in column 1906 containing explicit definitions for the template named in the associated row Accordingly, to reconstruct the quote template from the templates it references, the quote template must first be retπeved from table 1904. That is, information is relieve from row 1910. Since the quote template includes references to the q_header, q_content, and q_actιons templates, these templates (rows of lnformation) must also be retneved from table 1900. Once the q_header template is retπeved from table 1900, explicit definitions are available and can be inserted into the quote template. However, to reconstruct the content portion of the quote template, the further referenced templates including explicit definitions (e.g., q__content_current, q_content_bιd_ask, etc.) must also be retπeved from table
1900. Once all of the referenced templates containing explicit definitions are retπeved from table 1900, the quote template can be fully reconstructed with the explicit definitions retπeved from the table.
The structure descπbed in connection with table 1900 provides examples of both direct referencing and indirect referencing from a template. A direct reference occurs when a first template (e.g., the quote template) references a second template (e.g., the qjieader template), and the second template includes explicit template definitions that can be combined with the template definitions of the first template. On the other hand, indirect referencing occurs when both the first and second templates (e.g., the quote and q_content templates, respectively) include references such that a third template (e.g., q_content_current) must be retπeved before an explicit definition is found. In this case, the second template is an intermediate template that must be traversed before explicit definitions can be retπeved. FIG. 20 represents an exemplary seπes of method steps 2000 performed by the system of the present invention when a template including references to another template (that is, to an include file) is accessed. The method begins at a step 2004 when the user enters an information request at client device 108. For example, the user can enter a request for client device 108 to refresh currently- displayed information, or to retπeve new information from server 114, as descπbed above. At a next step 2006, client 304 receives the user request. At a next step 2008, client device 108 retπeves a first template temp, associated with the user's request from client template database 310. Template temp, includes a reference to a second template temp2 in a manner previously descnbed. In other words, temp2 is considered an include template or file. At a next step 2010, client device 108 composes and sends a client request to server 114. The client request includes the template identifier for temp, and a unique client device identifier for client device 108.
At a next step 2012, server 114 receives the client request and retrieves the template temp, from the server template database 330 based on the template identifier and the unique device identifier for client device 108 in the client request. As stored in server template database 330, first temp, includes a reference to the second template temp2. At a next step 2014, server 114 determines whether template temp, references other templates. In a case where there are no such references in temp,, server 114 processes the client request in accordance with the method described above in connection with FIG. 11. However, in this case, when server 114 detects the reference to temp2 in temp,, server 114 retrieves temp2 from server template database 330. At a next step 2016, server 114 combines the template definitions of templates temp, and temp2 to create a combined template (that is, a reconstructed template). When template temp, includes indirect references, server 114 retrieves intermediate templates to reconstruct temp,.
At a next step 2018, server 114 collects data service information in accordance with the definitions of the combined template, as described above in connection with the method of FIG. 11. At a next step 2020, server 114 composes a server response and transmits the server response to client device 108. The server response includes the data service information and the template identifier for temp,.
At a next step 2022, client device 108 receives the server response. At a next step 2024, the client device 108 retrieves client template temp, from client template database 310 based on template identifier temp, in the server response. At a next step 2026, client device 108 determines whether template temp, references any templates, and detects the reference to template temp2 in template temp,. Client device 108 then retrieves template temp2 from client template database 310. (Note: if there was no such reference in temp2 in temp,, then client device 108 proceeds with the method descnbed previously in connection with, for example, FIG. 10A) At a next step 2028, client device 108 combines the definitions of templates temp, and temp2 to create a combined list of template definitions (as did server 114). At a next step 2030, client device 108 displays a page associated with the combined templates (e.g., templates temp, and temp2) including, for example, data fields populated with data service information provided m the server response.
It will be apparent from the above descπption that when include files are used, the design of a template can be simplified and the size of the template referencing the include files can be reduced and distπbuted over multiple files, each of which can be separately managed. Using indirect referencing, include files can be "nested" to add flexibility to the design of a template. By using include files, the layout of complex pages can be sub-divided into a number of smaller, less complex pages. Also, customization of one or more templates can be achieved by changing the include file the one or more templates references, and without changing the referencing templates.
An additional benefit of the present invention is that by removing portions of a template, which are commonly used by a plurality of templates, to an include file, the common portions can be defined in one place, thus providing consistency across all of the templates referencing the include file Another benefit of the present invention is that changes to the include file are made for the benefit of all files and/or templates referencing the include file, thus eliminating the need to make changes to each of the referencing files and/or templates In the context of template updating, another advantage is that server 114 can send a single template update when necessary to update the include file and the referencing templates, the single template update is automatically propagated (by reference) to all of the referencing templates. By contrast, without include files, server 114 would have to send a template update to each of the plurality of templates. Thus, include files can considerably conserve airtime or transmission bandwidth, to reduce cost and latency. It is to be understood that the use of include files as descπbed above in section E 5. can be combined with the other aspects of the present invention descπbed in other sections of the detailed descπption and with aspects and features descπbed in the above referenced U.S. patent applications, which are incorporated herein by reference. For example, include files can be combined with template updating, whereby a new template containing references to include files is download from server 114 to client device 108. In another example, include files features can be combined with features relating to value added services for specific users, descπbed in U.S Patent Application No. 09/523,166, entitled "System, Method and Apparatus of Providing Value Added Services to Specific
Users," incorporated herein in its entirety by reference
F.l. Hardware and Software Implementations
Server 114 can perform specific features of the present invention using server controllers, which in effect compnse a computer system Although communication-specific hardware can be used to implement the present invention, the following descπption of a general purpose computer system is provided for completeness. The present invention is preferably implemented in software. Alternatively, the invention may be implemented using hardware or a combination of hardware and software. Consequently, the invention may be implemented in a computer system or other processing system. An example of such a computer system 2100 is shown m FIG.21. In the present invention, for example, client and server applications 304 and 306 each executes on distinct computer systems 2100. The computer system 2100 includes one or more processors, such as processor
2104. The processor 2104 is connected to a communication infrastructure 2106 (for example, a bus or network). Nanous software implementations are descπbed in terms of this exemplary computer system. After reading this descπption, it will become apparent to a person skilled in the relevant art how to implement the invention using other computer systems and/or computer architectures Computer system 2100 also includes a main memory 2108, preferably random access memory (RAM), and may also include a secondary memory 2110 The secondary memory 2110 may include, for example, a hard disk dπve 2112 and/or a removable storage dπve 2114, representing a floppy disk dπve, a magnetic tape dπve, an optical disk dπve, etc The removable storage dπve 2114 reads from and/or wπtes to a removable storage unit 2118 in a well known manner Removable storage unit 2118, represents a floppy disk, magnetic tape, optical disk, etc which is read by and wπtten to by removable storage dπve 2114 As will be appreciated, the removable storage unit 2118 includes a computer usable storage medium having stored therein computer software and/or data
In alternative implementations, secondary memory 2110 may include other similar means for allowing computer programs or other instructions to be loaded into computer system 2100 Such means may include, for example, a removable storage unit 2122 and an interface 2120 Examples of such means may include a program cartridge and cartridge interface (such as that found in video game devices), a removable memory chip (such as an EPROM, or PROM) and associated socket, and other removable storage units 2122 and interfaces 2120 which allow software and data to be transferred from the removable storage unit 2122 to computer system 2100 Computer system 2100 may also include a communications interface 2124
Communications interface 2124 allows software and data to be transfeπed between computer system 2100 and external devices Examples of communications interface 2124 may include a modem, a network interface (such as an Ethernet card), a communications port, a PCMCIA slot and card, etc Software and data transferred via communications interface 2124 are the form of signals 2128 which maybe electronic, electromagnetic, optical or other signals capable of being received by communications interface 2124 These signals 2128 are provided to communications interface 2124 via a communications path 2126 Communications path 2126 carπes signals 2128 and may be implemented using wire or cable, fiber optics, a phone line, a cellular phone link, an RF link and other communications channels.
In this document, the terms "computer program medium" and "computer usable medium" are used to generally refer to media such as removable storage dπve 2114, a hard disk installed in hard disk dπve 2112, and signals 2128. These computer program products are means for providing software to computer system
2100.
Computer programs (also called computer control logic) are stored in mam memory 2108 and/or secondary memory 2110. Computer programs may also be received via communications interface 2124. Such computer programs, when executed, enable the computer system 2100 to implement the present invention as discussed herein. In particular, the computer programs, when executed, enable the processor 2104 to implement the process of the present invention. Accordingly, such computer programs represent controllers of the computer system 2100. By way of example, in a preferred embodiment of the invention, the processes performed by server 114 and server application 306, and by client device 108 and client application 304, can be performed by computer control logic (e.g., called "controllers"). Also, client and server template databases 310 and 330, and client and server transaction databases 312 and 332 are stored in respective memoπes 2108 and/or respective memoπes 2110. Where the invention is implemented using software, the software may be stored in a computer program product and loaded into computer system 2100 using removable storage dπve 2114, hard dπve 2112 or communications interface 2124.
In another embodiment, features of the invention are implemented pπmaπly in hardware using, for example, hardware components such as application specific integrated circuits (ASICs). Implementation of the hardware state machine so as to perform the functions descπbed herein will be apparent to persons skilled in the relevant art(s).
V. Conclusion While vaπous embodiments of the present invention have been descπbed above, it should be understood that they have been presented by way of example, and not limitation It will be apparent to persons skilled in the relevant art that vaπous changes m form and detail can be made therein without departing from the spiπt and scope of the invention.
The present invention has been descπbed above with the aid of functional building blocks illustrating the performance of specified functions and relationships thereof. The boundaπes of these functional building blocks have been arbitraπly defined herein for the convenience of the descπption. Alternate boundaπes can be defined so long as the specified functions and relationships thereof are appropπately perfonned Any such alternate boundaπes are thus within the scope and spiπt of the claimed invention One skilled in the art will recognize that these functional building blocks can be implemented by discrete components, application specific integrated circuits, processors executing appropπate software and the like or any combination thereof. Thus, the breadth and scope of the present invention should not be limited by any of the above- descπbed exemplary embodiments, but should be defined only in accordance with the following claims and their equivalents.
All cited patent documents and publications in the above descπption are incorporated herein by reference

Claims

What Is Claimed Is:
1. In a communication system for providing data services to a user, the communication system including a client device communicating with a server over a communication network, the client device including a client template database for stoπng a plurality of templates defining a client device configuration, a method including the steps of: a. receiving a user request entered at the client device; b. retneving a first template associated with said user request from said client template database, said first template including a reference to a second template; c. sending a client request from the client device to a server over said communication network, said client request including a first template identifier corresponding to said first template; and d. receiving a server response from the server at the client device, said server response including data services information relating to one of said first and said second templates.
2. The method of claim 1, wherein said second template is stored in said client template database and includes one or more second template definitions for defining said configuration of said client device, the method further compπsing the steps of: e. retπevmg said second template from said client template database based on said reference to said second template said first template; and f. combining said one or more second template definitions with said first template to create a combined set of template definitions defining a configuration of said client device.
3. The method of claim 1, wherein said second template includes a content portion defining one of one or more labels and an aπangement of said one or more labels on a displayable page associated with said second template, the method further compπsing the step of displaying said one or more labels.
4. The method of claim 1, wherein said second template includes a content portion defining one or more data fields and an arrangement of said one or more data fields on a displayable page associated with said second template, the method further compπsing the step of displaying a portion of said data services information m one or more of said one or more data fields.
5. The method of claim 1 , wherein said second template includes an action portion defining one or more actions available to a user when a page associated with said second template is displayed, said one or more actions being associated with one or more data services, the method further compπsing the steps of: displaying said page; and accessing one of said data services when the user selects one of said one or more actions from said page.
6. The method of claim 1, wherein said second template includes a content portion defining one or more data fields for display on a page associated with said second template, and an action portion defining one or more actions available to a user when said page associated with said second template is displayed, said one or more actions being associated with one or more data services, the method further compπsing the step of displaying a portion of said data services information in one or more of said data fields on said page.
7. The method of claim 1, wherein said server response includes template update information for said second template, said template update information including one or more new template definitions for reconfiguring the client device
8. The method of claim 7, further comprising the step of updating said second template with said template update information.
9. The method of claim 7, wherein a plurality of templates stored in the client template database reference said second template, the method further comprising the step of updating said second template with said template update information, thereby updating said plurality of templates with said update information by reference.
10. The method of claim 2, wherein steps e. and f. occur prior to step d.
11. The method of claim 2, wherein steps e. and f. occur after step d.
12. The method of claim 2, wherein said reference includes a template identifier corresponding to said second template, and step e. comprises retrieving said second template based on said template identifier.
13. The method of claim 2, wherein said reference is an indirect reference to said second template, and step e. comprises the step of traversing at least one intermediate template to arrive at a direct reference to said second template.
14. In a communication system for providing data services to a user, the communication system including a client device communicating with a server over a communication network, the server including a server template database for stoπng a plurality of templates defining client device configurations, a method including the steps of: a. receiving a client request from the client device, said client request including a first template identifier corresponding to a first template, said first template including a reference to a second template; b. determining a server response based on said first and second templates; and c. sending said server response from the server to the client device over said communication network.
15 The method of claim 14, wherein said second template includes one or more second template definitions for defining a configuration of the client device, and wherein step b. compnses: retrieving said first template from said server template database based on said first template identifier; and retπeving said second template from said server template database based on said reference to said second template in said first template
16 The method of claim 14, wherein said second template includes one or more second template definitions for defining a configuration of the client device, and wherein step b. further compπses- collecting data services information in accordance with one or more of said one or more second template definitions; and composing said client request based on said data services information.
17 The method of claim 16, wherein said second template includes a content portion defining one of one or more labels and an aπangement of said one or more labels on a displayable page associated with said second template, and one or more data fields and an aπangement of said one or more data fields on a displayable page associated with said second template, and wherein said collecting step compπses collecting said data services information in accordance with said one or more data field definitions if said second template includes said one or more data fields.
18. The method of claim 16, wherein said second template includes an action portion defining one or more actions available to a user when a page associated with said second template is displayed, said one or more actions being associated with one or more data services
19. The method of claim 14, further compπsing the steps of: determining whether the client device requires a template update; and sending said template update in said server response as determined at said determining step, wherein said template update includes template update information for said second template, said template update information including one or more new template definitions for reconfiguπng the client device.
20. The method of claim 15, wherein said reference is a second template identifier coπesponding to said second template.
21. The method of claim 15, wherein said reference is an indirect reference to said second template, and said retπeving step compπses the step of traversing at least one intermediate template to arπve at a direct reference to said second template
22. A client apparatus in a communication system for providing data services to a user, the client apparatus communicating with a server over a communication network, the client apparatus compπsing: a client template database for stoπng a plurality of templates used to configure the client apparatus; a controller adapted to receive a user request entered at the client device, the controller being adapted to retπeve a first template associated with said user request from said client template database, said first template including a reference to a second template; a transmitter adapted to send a client request to a server over said communication network, said client request including a first template identifier corresponding to said first template; and a receiver adapted to receive a server response from the server, said server response including data services information relating to one of said first and second templates.
23. The apparatus of claim 22, wherem said second template is stored in said client template database and includes one or more second template definitions for defining said configuration of said client apparatus, the method further compπsing the steps of, said controller being adapted to: retπeve said second template from said client template database based on said reference to said second template in said first template; and combine said one or more second template definitions with said first template to create a combined set of template definitions defining a configuration of said client device.
24. The apparatus of claim 22, further compπsing a display, and wherein said second template includes a content portion defining one of one or more labels and an arrangement of said one or more labels on a displayable page associated with said second template, said controller being adapted to provide said displayable page to said display.
25. The apparatus of claim 22, further comprising a display, and wherein said second template includes a content portion defining one or more data fields and an arrangement of said one or more data fields on a displayable page associated with said second template, a portion of said data services information relating to one or more of said data fields, said controller being adapted to provide said displayable page to said display.
26. The apparatus of claim 22, further comprising a display, and wherein said second template includes an action portion defining one or more actions available to a user when a page associated with said second template is displayed, said one or more actions being associated with one or more data services, said controller being adapted to: provide said page to said display; and respond in accordance with said action portion to access one of said data services when the user selects one of said one or more actions from said page.
27. The method of claim 23, further comprising a display, and wherein said second template includes a content portion defining one or more data fields for display on a page associated with said second template, and an action portion defining one or more actions available to a user when said page associated with said second template is displayed, said one or more actions being associated with one or more data services, said controller being adapted to provide said page to said display, whereby a portion of said data services information is displayed in one or more of said data fields on said page.
28 The apparatus of claim 22, wherein said server response includes template update information for said second template, said template update information including one or more new template definitions for reconfiguπng the client device.
29. The apparatus of claim 28, wherein said controller is adapted to update said second template with said template update information
30. The apparatus of claim 28, wherein a plurality of templates stored in said client template database reference said second template, and wherein said controller is adapted to update said second template with said template update information, to thereby update said plurality of templates with said update information by reference.
31. The apparatus of claim 23, wherein said reference includes a template identifier corresponding to said second template, and said controller is adapted to retπeve said second template from said client template database based on said template identifier.
32. A server apparatus in a communication system for providing data services to a user, the server apparatus communicating with a client device over a communication network, the server apparatus compπsing: a server template database for stoπng a plurality of templates used to configure client devices; a controller adapted to: receive a client request from the client device, said client request including a first template identifier corresponding to a first template, said first template including a reference to a second template, determine a server response based on said first and second templates, and send said server response to the client device over said communication network.
33. The apparatus of claim 32, wherein said second template includes one or more second template definitions for defining a configuration of the client device, and wherein said server is adapted to: retπeve said first template from said server template database based on said first template identifier; and retπeve said second template from said server template database based on said reference to said second template in said first template.
34. The apparatus of claim 32, wherein said second template includes one or more second template definitions for defining a configuration of the client device, said controller being adapted to: collect data services information in accordance with one or more of said one or more second template definitions; and compose said client request based on said data services information.
35. The apparatus of claim 34, wherein said second template includes a content portion defining one of one or more labels and an arrangement of said one or more labels on a displayable page associated with said second template, and one or more data fields and an aπangement of said one or more data fields on a displayable page associated with said second template, and wherein said controller is adapted to collect said data services information in accordance with said one or more data field definitions when said second template includes said one or more data fields. 36 The apparatus of claim 34, wherem said second template includes an action portion defining one or more actions available to a user when a page associated with said second template is displayed, said one or more actions being associated with one or more data services
37 The apparatus of claim 32, wherein said controller is adapted to determine whether the client device requires a template update, and if the client device requires said template update, send said template update in said server response, wherein said template update includes template update information for said second template, said template update information including one or more new template definitions for reconfiguπng the client device
38 The apparatus of claim 33, wherein said reference is a second template identifier corresponding to said second template
39 The apparatus of claim 33, wherein said reference is an indirect reference to said second template, and said controller is adapted to traversing at least one intermediate template to arrive at a direct reference to said second template, to thereby retπeve said second template services
PCT/US2000/027587 2000-03-10 2000-10-06 Method and apparatus for providing services to a user of a client device configured by templates that reference other templates WO2001069383A1 (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
AU2000278649A AU2000278649A1 (en) 2000-03-10 2000-10-06 Method and apparatus for providing services to a user of a client device configured by templates that reference other templates

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US52316700A 2000-03-10 2000-03-10
US09/523,167 2000-03-10
US53403200A 2000-03-24 2000-03-24
US09/534,032 2000-03-24

Publications (2)

Publication Number Publication Date
WO2001069383A1 true WO2001069383A1 (en) 2001-09-20
WO2001069383A9 WO2001069383A9 (en) 2002-05-16

Family

ID=27061063

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/US2000/027587 WO2001069383A1 (en) 2000-03-10 2000-10-06 Method and apparatus for providing services to a user of a client device configured by templates that reference other templates

Country Status (2)

Country Link
AU (1) AU2000278649A1 (en)
WO (1) WO2001069383A1 (en)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20150142934A1 (en) * 2013-11-20 2015-05-21 At&T Mobility Ii Llc Method for managing device configurations using configuration templates

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5797128A (en) * 1995-07-03 1998-08-18 Sun Microsystems, Inc. System and method for implementing a hierarchical policy for computer system administration
US5940834A (en) * 1997-03-13 1999-08-17 Mitel Corporation Automatic web page generator
US6029196A (en) * 1997-06-18 2000-02-22 Netscape Communications Corporation Automatic client configuration system

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5797128A (en) * 1995-07-03 1998-08-18 Sun Microsystems, Inc. System and method for implementing a hierarchical policy for computer system administration
US5940834A (en) * 1997-03-13 1999-08-17 Mitel Corporation Automatic web page generator
US6029196A (en) * 1997-06-18 2000-02-22 Netscape Communications Corporation Automatic client configuration system

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
ANONYMOUS: "Using a Template Processor to Simplify Programming", RESEARCH DISCLOSURE,GB,INDUSTRIAL OPPORTUNITIES LTD. HAVANT, vol. 41, no. 413, 1 September 1998 (1998-09-01), pages 1 - 3, XP002137727, ISSN: 0374-4353 *

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20150142934A1 (en) * 2013-11-20 2015-05-21 At&T Mobility Ii Llc Method for managing device configurations using configuration templates
US9577877B2 (en) * 2013-11-20 2017-02-21 At&T Mobility Ii Llc Method for managing device configurations using configuration templates
US9686631B2 (en) 2013-11-20 2017-06-20 At&T Intellectual Property I, L.P. Method for managing device configurations using configuration templates
US9900724B2 (en) 2013-11-20 2018-02-20 At&T Intellectual Property I, L.P. Method for managing device configurations using configuration templates
US10652714B2 (en) 2013-11-20 2020-05-12 At&T Intellectual Property I, L.P. Method for managing device configurations using configuration templates

Also Published As

Publication number Publication date
WO2001069383A9 (en) 2002-05-16
AU2000278649A1 (en) 2001-09-24

Similar Documents

Publication Publication Date Title
US6560604B1 (en) System, method, and apparatus for automatically and dynamically updating options, features, and/or services available to a client device
US6466937B1 (en) System, method and apparatus for utilizing transaction databases in a client-server environment
EP1382162B1 (en) Method and system for wireless distribution of local information
EP0887750B1 (en) Information providing apparatus for server and computer-readable recording medium storing information providing program for server
US7392308B2 (en) System, method, and computer program product for placement of channels on a mobile device
US20040203854A1 (en) Formatting location information based on output device specifications
US8370321B2 (en) Automated information-provision system
US20020120710A1 (en) Mechanism for caching dynamically generated content
JP2000163367A (en) Method and architecture (system) for interactive bidirectional communication device to interact with network
US20020077114A1 (en) Ergonomic system for control of devices through portable wireless terminals
US20020174110A1 (en) Method for maintaining remotely accessible information on personal digital devices
US20030191868A1 (en) Method, system and computer program product for a lightweight directory access protocol client application program interface
RU2316131C2 (en) Method for storing pages in memory of mobile device (variants) and mobile device for realization of the method
KR20070040598A (en) Integrated portal service system and method, and user terminal device therefor
KR100549768B1 (en) Method and apparatus for updating databases
US20020183043A1 (en) System and method for delivery and updating of data transmitted to a mobile terminal
WO2001069444A2 (en) System, method, and apparatus for providing value added services to specific users
KR20090116096A (en) Method for display of browser and portable terminal using the same
WO2001069383A1 (en) Method and apparatus for providing services to a user of a client device configured by templates that reference other templates
AU2000278560A1 (en) System, method and apparatus for initial configuration of a client device
KR20020044556A (en) Method and apparatus for electronic bookmarking of vendor locations via a personal digital assistant or other user device
Afonso et al. Dynamic data delivery to mobile users
US20010018707A1 (en) Web server system and method for controlling a web server system
US20030191749A1 (en) Lightweight directory access protocal method, system and computer program product
Huynh Developing WAP services with Allaire's ColdFusion

Legal Events

Date Code Title Description
AK Designated states

Kind code of ref document: A1

Designated state(s): AE AG AL AM AT AU AZ BA BB BG BR BY BZ CA CH CN CR CU CZ DE DK DM DZ EE ES FI GB GD GE GH GM HR HU ID IL IN IS JP KE KG KP KR KZ LC LK LR LS LT LU LV MA MD MG MK MN MW MX MZ NO NZ PL PT RO RU SD SE SG SI SK SL TJ TM TR TT TZ UA UG UZ VN YU ZA ZW

AL Designated countries for regional patents

Kind code of ref document: A1

Designated state(s): GH GM KE LS MW MZ SD SL SZ TZ UG ZW AM AZ BY KG KZ MD RU TJ TM AT BE CH CY DE DK ES FI FR GB GR IE IT LU MC NL PT SE BF BJ CF CG CI CM GA GN GW ML MR NE SN TD TG

121 Ep: the epo has been informed by wipo that ep was designated in this application
AK Designated states

Kind code of ref document: C2

Designated state(s): AE AG AL AM AT AU AZ BA BB BG BR BY BZ CA CH CN CR CU CZ DE DK DM DZ EE ES FI GB GD GE GH GM HR HU ID IL IN IS JP KE KG KP KR KZ LC LK LR LS LT LU LV MA MD MG MK MN MW MX MZ NO NZ PL PT RO RU SD SE SG SI SK SL TJ TM TR TT TZ UA UG UZ VN YU ZA ZW

AL Designated countries for regional patents

Kind code of ref document: C2

Designated state(s): GH GM KE LS MW MZ SD SL SZ TZ UG ZW AM AZ BY KG KZ MD RU TJ TM AT BE CH CY DE DK ES FI FR GB GR IE IT LU MC NL PT SE BF BJ CF CG CI CM GA GN GW ML MR NE SN TD TG

COP Corrected version of pamphlet

Free format text: PAGES 1/24-24/24, DRAWINGS, REPLACED BY NEW PAGES 1/25-25/25; DUE TO LATE TRANSMITTAL BY THE RECEIVING OFFICE

REG Reference to national code

Ref country code: DE

Ref legal event code: 8642

122 Ep: pct application non-entry in european phase
NENP Non-entry into the national phase

Ref country code: JP