US20050198393A1 - Method and apparatus for extendible information aggregationand presentation - Google Patents

Method and apparatus for extendible information aggregationand presentation Download PDF

Info

Publication number
US20050198393A1
US20050198393A1 US10/905,508 US90550805A US2005198393A1 US 20050198393 A1 US20050198393 A1 US 20050198393A1 US 90550805 A US90550805 A US 90550805A US 2005198393 A1 US2005198393 A1 US 2005198393A1
Authority
US
United States
Prior art keywords
information
client device
agent
computer
communications module
Prior art date
Legal status (The legal status 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 status listed.)
Abandoned
Application number
US10/905,508
Inventor
William Stutz
Arulnambi Kaliappan
Ronald Capwell
Paul Martin
Todd Ogrin
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Citrix Systems Inc
Original Assignee
Citrix 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 Citrix Systems Inc filed Critical Citrix Systems Inc
Priority to US10/905,508 priority Critical patent/US20050198393A1/en
Publication of US20050198393A1 publication Critical patent/US20050198393A1/en
Assigned to CITRIX SYSTEMS, INC. reassignment CITRIX SYSTEMS, INC. ASSIGNMENT OF ASSIGNORS INTEREST (SEE DOCUMENT FOR DETAILS). Assignors: KALIAPPAN, ARULNAMBI, CAPWELL, RONALD, OGRIN, TODD, MARTIN, PAUL, STUTZ, WILLIAM
Abandoned legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F40/00Handling natural language data
    • G06F40/10Text processing
    • G06F40/12Use of codes for handling textual entities
    • G06F40/151Transformation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F40/00Handling natural language data
    • G06F40/10Text processing
    • G06F40/12Use of codes for handling textual entities
    • G06F40/14Tree-structured documents
    • G06F40/143Markup, e.g. Standard Generalized Markup Language [SGML] or Document Type Definition [DTD]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F40/00Handling natural language data
    • G06F40/10Text processing
    • G06F40/166Editing, e.g. inserting or deleting

Definitions

  • the present invention relates to methods and apparatus for the aggregation of information from multiple sources for presentation to an end user.
  • the present invention relates to abstracted information aggregation and presentation utilizing extendible markup languages such as extensible markup language (XML).
  • XML extensible markup language
  • MY EXCITE presents users with a set of selectable information sources including sources for weather information, sources for equity market information, and sources for news information.
  • the user identifies one or more information sources of interest, which the MY EXCITE service provides in a convenient, single page format website that is periodically updated. Without MY EXCITE or a comparable service, the user needs to retrieve this information from disparate data sources using varying methods of communications.
  • the user would need to place a telephone call to the National Oceanic and Atmospheric Administration (NOAA) for weather, purchase the NEW YORK TIMES and read the financial section for equity market information, and use a radio to monitor a news station for the latest news.
  • NOAA National Oceanic and Atmospheric Administration
  • FIG. 1 depicts an apparatus for information aggregation and display known to the prior art, not necessarily used by the MY EXCITE service.
  • the aggregator 108 includes functionality to accept an incoming network connection from the client device 100 , including security measures using authentication credentials.
  • the aggregator 108 loads preference information, including a list of conduits 112 associated with the user, from persistent storage.
  • Each conduit 112 is adapted to process the information from an information source in data tier 116 and display it on a particular type of client device 100 .
  • an equity market information source is associated with two conduits 112 : one for displaying information in hypertext markup language (HTML) and one for displaying information in wireless markup language (WML).
  • HTML hypertext markup language
  • WML wireless markup language
  • a designer wishes to add a new information source (e.g., weather information) from data tier 116 .
  • This requires the creation of a new conduit 112 for each type of client device (e.g., web browser, WAP phone, etc.) supported by the aggregator 108 .
  • client device e.g., web browser, WAP phone, etc.
  • the designer must write a conduit 112 for each information source supported by the aggregator 108 .
  • the conduit model only allows the simple aggregation and conveyance of data from an information source to a client device.
  • Information provided by an information source may not be in a form appropriate for direct display on a client device 100 .
  • a source of equity market information could provide earnings and price data in response to a ticker symbol supplied by a user of a client device 100 . If the user's preference data requires a price-to-earnings ratio, mere presentation of price data and earnings data fails to meet that request. Therefore, it is desirable for the system to permit arbitrary processing of the data received from an information source before its presentation to an end user.
  • the present invention provides methods and apparatus for arbitrarily extendible information aggregation and display. This functionality is achieved by abstracting the components of the system into individual modules which communicate using a platform-independent, extendible markup language such as XML. A designer adds support for new information sources or client devices by abstracting and encapsulating messages to and from the information source or client device in a wrapper using a platform-independent, extendible markup language such as XML.
  • This additional level of abstraction and common intermediate format reduces the effort required to support a new information source or client device. Now a designer only needs to write one conduit to support a new information source or new client device.
  • the common intermediate format permits arbitrary processing of data from an arbitrary information source using a back-end integration server.
  • the present invention is an apparatus for the aggregation and display of information on a client device.
  • the apparatus module includes a communications module, an assimilation agent, and an integration service.
  • the communications module delivers information to and receives information from a client device.
  • the assimilation agent receives information from at least one information source and encapsulates the information in a first wrapper using a platform-independent extendible markup language.
  • the integration server communicates with the communications module and the assimilation agent.
  • the integration server receives encapsulated information from the assimilation agent, uses a rules engine to process the encapsulated information according to a predefined set of actions, and encapsulates the result in a second wrapper using a platform-independent extendible markup language.
  • the integration server provides the encapsulated result to the communications module.
  • the communications module delivers information to and receives information from the client device using hypertext markup language (HTML) or wireless markup language (WML).
  • the communications module delivers information customized according to a predefined profile.
  • the communications module delivers information customized according to the type of client device.
  • the communications module, the integration server and the assimilation agent communicate using XML.
  • the assimilation agent retrieves information from a SQL database, an Oracle database, a Domino database, a document repository, a SAP database, a computer in communications with the Internet, or an indexed database.
  • the apparatus also includes a content delivery broker that provides communications between the communications module and the integration server.
  • the communications provided by the content delivery broker utilize XML.
  • the apparatus also includes a receiver agent in communication with the integration server, receiving messages sent in a protocol.
  • this protocol is file transfer protocol (FTP), post office protocol, version 3 (POP3), hypertext transfer protocol (HTTP), Microsoft Message Queue messages (MSMQ), simple mail transfer protocol (SMTP), directory polling, and component-object model messages (COM).
  • the apparatus also includes a spider agent in communication with the integration server, initiating communications with a data source using a protocol.
  • this protocol is file transfer protocol (FTP), post office protocol, version 3 (POP3), hypertext transfer protocol (HTTP), Microsoft Message Queue messages (MSMQ), simple mail transfer protocol (SMTP), directory polling, and component-object model messages (COM).
  • the apparatus also includes a sender agent in communication with the integration server, sending messages using a protocol.
  • this protocol is file transfer protocol (FTP), post office protocol, version 3 (POP3), hypertext transfer protocol (HTTP), Microsoft Message Queue messages (MSMQ), simple mail transfer protocol (SMTP), directory polling, and component-object model messages (COM).
  • the present invention is a method for processing information from multiple sources for presentation to a user.
  • An assimilation agent receives information from at least one of several information sources.
  • the assimilation agent encapsulates the received information in a first wrapper using a platform-independent extendible markup language.
  • the assimilation agent transmits the encapsulated information to an integration server.
  • the integration server processes the information in accord with a predefined set of rules.
  • the integration server encapsulates the processed information in a second wrapper using a platform-independent extendible markup language.
  • the integration server transmits the processed information to a communications module.
  • the communications module delivers the processed information to a client device.
  • the communications module delivers the processed information to a client device by identifying the type of client device or the type of the processed information.
  • the communications module additionally selects an XML style sheet based (XSL) on the type of the client device or the type of the processed information and completes the selected XSL using the processed information.
  • the communications module additionally transforms the completed XSL to a form suitable for display on the client device and provides the transformed result to the client device.
  • XSL XML style sheet based
  • the present invention is an article of manufacture storing computer-readable program means for aggregating information from multiple sources for presentation to a user.
  • the article of manufacture includes computer-readable program means for receiving, by an assimilation agent, information from at least one of a set of information sources, computer-readable program means for encapsulating, by the assimilation agent, the received information in a first wrapper using a platform-independent extendible markup language, and computer-readable program means for transmitting, by the assimilation agent, the encapsulated information to an integration server.
  • the article of manufacture also includes computer-readable program means for processing, by the integration server, the encapsulated information in accord with a predefined set of rules, computer-readable means for encapsulating, by the integration server, the processing information in a second wrapper using a platform-independent extendible markup language, and computer-readable program means for transmitting, by the integration server, the processed information to a communications module.
  • the article of manufacture also includes computer-readable program means for delivering, by the communications module, the processed information to a client device.
  • the computer-readable program means for delivering, by the communications module, the processed information to a client device itself includes computer-readable program means for identifying the type of client device or the type of the processed information.
  • the computer-readable means for delivering, by the communications module, the processed information to a client device itself also includes computer-readable program means for selecting an XSL based on the type of client device or the type of the processed information, and computer-readable program means for completing the XSL with the processed information.
  • the computer-readable means for delivering, by the communications module, the processed information to a client device itself also includes computer-readable program means for transforming the XSL to a form suitable for display on the client device and computer-readable program means for providing the transformed XSL to the client device.
  • FIG. 1 is a block diagram of a prior art software system for the aggregation and display of information
  • FIG. 2 is a block diagram of an embodiment of a software system in accord with the present invention.
  • FIG. 3 is a block diagram illustrating a typical interconnection of the portal server 216 with various information sources
  • FIG. 4 is a sample display presented by the portal server 216 to an end user using client device 100 ;
  • FIG. 5 is an exemplary workflow diagram operating in the integration server module 208 .
  • FIG. 6 is a block diagram of an embodiment of a server array executing the software embodiment of FIG. 2 in accord with the present invention.
  • Applicants' invention provides methods and apparatus for extendible information aggregation and presentation.
  • the present invention reduces the effort required to add support for new display formats or new information sources by introducing an additional layer of abstraction into the process of information aggregation and display.
  • a designer identifies an information source she wishes to make available in aggregation with other information sources.
  • the designer builds an assimilation agent that provides one-way or two-way communications with the information source using messaging in a platform-independent extendible markup language such as XML.
  • An integration server accepts messages encapsulating information from the assimilation agent for processing.
  • the integration server provides the processed messages to a communications module for display on a client device.
  • FIG. 2 depicts an embodiment of a software system in accord with the present invention.
  • the system includes a communications module 200 in communication with various content delivery brokers (CDBs) 204 and conduits 112 .
  • CDBs 204 direct communicate with an integration server (IS) module 208
  • prior art conduits 112 direct communicate with an information source in data tier 116 , bypassing the IS module 208 .
  • the IS module 208 itself indirect communicates with information sources in data tier 116 through assimilation agents (AAs) 212 .
  • these modules are conveniently referred to as the portal server (PS) 216 .
  • PS portal server
  • the component modules of the PS 216 are typically software objects instantiated by a controlling process or dispatcher on an as needed basis. For example, when a user connects to the PS 216 , a dispatcher instantiates a communications module 200 to communicate with the user's client device 100 . Similarly, when the IS module 208 requires information from an information source, the dispatcher instantiates an assimilation agent 212 to intermediate with the information source.
  • the component modules of the PS 216 take many different forms.
  • the component modules are compiled binary objects in accord with CORBA, ActiveX, OpenDoc, or other object-oriented frameworks.
  • the component modules are scripts written in Perl, JavaScript, VBScript, or other scripting languages that are translated into machine language before execution.
  • the component modules are binary executables compiled from files written in one or more programming languages including but not limited to C, C++, C#, Lisp, or Pascal.
  • Each component module of PS 216 provides its own specialized functionality.
  • the communications module 200 communicates with client devices 100 .
  • the CDBs 204 provide a consistent interface for communications with IS module 208 .
  • Conduits 112 interface directly with external data sources such as a website, providing information to communications module 200 for display on a client device 100 .
  • Assimilation agents (AAs) 212 not only provide a consistent interface with internal and external data sources, but also encapsulate information from a data source in an platform-independent, extendible markup language that renders it susceptible to automated processing by IS module 208 .
  • AAs 212 also perform predefined tasks on business objects such as data files or word processor files.
  • the IS module 208 enables the automation of business processes, gathering information from sources including AAs 212 and processing it in accord with predefined actions and conditional rules.
  • Communications between the component modules in FIG. 2 utilize a platform-neutral extendible markup language such as XML. These communications contain, either directly or indirectly (e.g., through use of embedded URLs or other locators), business objects such as documents, or remote procedure calls (RPCs) such as search requests.
  • the contents of a communication are typically encapsulated in markup language by defining a message type for the communication. Message types provide metadata and routing information necessary to exchange data between an information source and PS 216 regardless of the individual protocols used and supported by the information source.
  • a user with a client device 100 establishes communications with one or more server computers executing software providing the desired functionality of the PS 216 .
  • the client device 100 typically interconnects with the server computers using a network 104 that passes messages encoded in an agreed-upon protocol.
  • the client device 100 is typically an electronic device capable of accepting input from a user and graphically displaying data.
  • client device 100 is a personal digital assistant (PDA).
  • PDA graphically displays information which the user interacts with using a stylus, keyboard, or other input device.
  • client device 100 is a personal computer running a web browser.
  • a browser window graphically displays information which the user interacts with using a mouse, keyboard, trackball, or other input device.
  • client device 100 is a web-aware cell phone or a thin client program such as METAFRAME from Citrix Software, Inc. of Ft. Lauderdale, Fla.
  • the network 104 typically carries data using electrical signaling, optical signaling, wireless signaling, a combination thereof, or any other signaling method known to the art.
  • the network can be a fixed channel telecommunications link such as a T1, T3, or 56 kb line; LAN or WAN links; a packet-switched network such as TYMNET; a packet-switched network of networks such as the Internet; or any other network configuration known to the art.
  • the network typically carries data in a variety of protocols, including but not limited to: user datagram protocol (UDP), asynchronous transfer mode (ATM), X.25, and transmission control protocol (TCP).
  • UDP user datagram protocol
  • ATM asynchronous transfer mode
  • TCP transmission control protocol
  • At least one server computer executes software providing the functionality of communications module 200 .
  • the communications module 200 identifies the type of client device 100 and uses this information to structure its interactions with the client device 100 .
  • the communications module 200 identifies the type of client device 100 by examining metadata provided by the client device 100 when initiating the connection. For example, when the client device 100 is a personal computer executing a web browser program, it will typically provide metadata identifying the web browser, whether the browser is “Mozilla-compatible,” and some information about the operating system hosting the web browser. This identification information enables the communications module 200 to identify and deploy themes or style sheets that use the specific features supported by the web browser, including non-standard features or features that vary between browser implementations.
  • the communications module 200 identifies the type of client device 100 by the number of the port on which the client device 100 attempts to establish a connection. If the port number is 80 , the communications module 200 assumes the client device 100 supports hypertext transfer protocol (HTTP) and subsequently display using hypertext markup language (HTML). If the port number is 9200 , the communications module assumes the client device 100 supports wireless access protocol (WAP) and subsequently displays using wireless markup language (WML).
  • HTTP hypertext transfer protocol
  • WAP wireless access protocol
  • WML wireless markup language
  • the communications module 200 typically operates by accessing stored template files associated with a particular type of client device 100 and merging the templates with data received from the CDBs 204 for display to the client device 100 .
  • these template files are XML style sheets (XSLs) with tags mapping to HTML and WML tags.
  • Template files typically specify a display scheme appropriate for the client device 100 .
  • client device 100 is a personal computer running a web browser program
  • a template file may specify a table with two columns where the first column occupies 30 percent of the screen and the second column occupies the other 70 percent of the screen.
  • the communications module 200 invokes a security broker (not shown) to authenticate the user's identity.
  • the security broker directs the communications module 200 to prompt the user for an identifier and a password.
  • the user enters an identifier and password, which the communications module 200 provides to the security broker.
  • the security broker checks the identifier and password against an internal database, file, or system registry to authenticate the user. If the identifier and password provided are not valid, the system denies access to the user and closes the connection to the client device 100 .
  • authentication credentials accepted by the security broker include but are not limited to shared secrets, public/private key schemes, biometric data, or other forms of authentication well known to the art.
  • the security broker leverages the authentication services provided by its operating system environment. For example, when the operating system is a member of the WINDOWS family of operating system products from Microsoft Corporation of Redmond, Wash., the security broker leverages the user, group, and domain information stored in the operating system and associated with the user.
  • the security broker is a COM object built using commercially-available programming tools, as described above.
  • the security broker supports methods including but not limited to user login, user logout, group enumeration, user enumeration, the enumeration of users in a particular group, and the changing of authentication credentials.
  • the communications module 200 accesses personalization information associated with the user and stored in an internal database (not shown).
  • This personalization information typically includes but is not limited to: a set of CDBs 204 for retrieving information from IS 208 for display to the user, a set of conduits 112 for retrieving information directly from information sources in data tier 116 , and a set of predefined workflows for use with IS module 208 , as discussed in further detail below.
  • PS 216 proceeds to aggregate information for display on the user's client device 100 .
  • the system invokes each CDB 204 and conduit 112 associated with the user.
  • an invoked CDB 204 or conduit 112 provides information to the communications module 200 for display to the end user.
  • Some CDBs 204 simply provide a dialog box or other graphical interface elements upon invocation.
  • Other CDBs 204 trigger one or more business flows in the IS module 208 .
  • Conduits 112 may directly query or poll information sources such as a search engine before providing output to the communications module 200 .
  • the communications module 200 supports per-user and global caching.
  • per-user caching causes the communications module 200 to present the same information in response to a request from a user until the lapse of a predetermined time period.
  • the communications module 200 suppresses requests to a CDB 204 until the lapse of the predetermined time period.
  • the communications module 200 invokes a CDB 204 to check a user's accounts for e-mail upon receipt of each and every HTTP REFRESH request from a user's web browser, even though e-mail tends to arrive infrequently.
  • a privileged user enables per-user e-mail caching, setting a timer to check for new e-mail every 10 minutes.
  • a first request to the communications module 200 invokes a CDB 204 to retrieve e-mail headers, presenting this information to the user. Subsequent requests for e-mail data will only return the information cached by the communications module 200 until 10 minutes have passed since the first request.
  • Global caching operates in a similar fashion, save that the communications module 200 maintains one identical copy of data for all users of the system. Therefore, global caching is ideally suited for applications such as company newsletters, news headlines, and local time and weather information.
  • all communications to and from the communications module 200 take the form of messages using a platform independent extendible markup language such as XML.
  • a bridging mechanism converts an HTTP request into an XML request.
  • this functionality is provided by a specialized DLL that translates between the two types of requests.
  • this functionality is provided by an active server page (ASP), permitting a designer to modify the XML messages sent to the communications module 200 or the HTTP responses and cookies sent to the client device 100 .
  • a second DLL provides functionality to transfer binary files as Multipurpose Internet Mail Extensions (MIME) encoded files.
  • MIME Multipurpose Internet Mail Extensions
  • the key value can be any of a form variable, a query string, or a server variable.
  • the translation functionality strips the encapsulating XML tags from the message and sends the HTML information embedded within the CDATA section.
  • the ⁇ anchor.text> tag contains a link to a SmartSummary, a particular type of CDB 204 .
  • a SmartSummary CDB 204 presents a user with a convenient interface for a large, disparate set of data sources by organizing the data around a common object or entity.
  • the PS system 216 is deployed in a hospital environment. Physician users of the system treat patients for various illnesses. An individual patient is associated with entries in tens of data sources scattered across the hospital or managed care group to which the hospital belongs. These sources include, but are not limited to, admitting records, contact and insurance information, transplant reports, radiology reports, laboratory reports, and transcriptions. The efficiency and quality of treatment would be impaired if the physician was required to spend significant amounts of time to locate the records she needs to treat a patient.
  • the SmartSummary CDB 204 accepts a patient name from a physician and, in one embodiment, invokes a business flow on IS module 208 .
  • the flow launches tens of assimilation agents 212 to access all relevant databases, returning information concerning the patient to the IS module 208 .
  • the IS module 208 aggregates this data and sends it to the communications module 200 for communication to the physician through her client device 100 .
  • Similar implementations of SmartSummary lend themselves to implementation in a finanacial context, where it is desirable to aggregate data concerning credit ratings, purchasing power, outstanding debt, and purchase histories, or in any other context where disparate data sources are naturally organized around a single person or entity.
  • the SmartSummary CDB 204 interfaces with a database to retrieve data associated with a person or entity instead of launching assimilation agents 212 to gather data.
  • receiver agents or spider agents (see below) accept patient data from documents containing patient data that are submitted to the system.
  • the documents are parsed into individual data elements, which are stored in the database.
  • the SmartSummary CDB 204 is launched and it retrieves the appropriate information from the database. In one embodiment, this retrieval is accomplished using an assimilation agent 214 .
  • CDBs 204 interface with IS module 208 , conveying information from it to communications module 200 for display to the end user on client device 100 .
  • the CDB 204 may be configured to interact with a “null” data source. For example, if a designer wishes to present a tabbed window interface appearance to an end user, the designer provides a first CDB 204 to create a header frame and a footer frame on the display and a second CDB 204 to draw a tabbed window interface in the header frame.
  • the CDB 204 is a software object with various object properties that permit its customization.
  • the CDB 204 includes properties that control whether an end user can personalize the CDB 204 , specify a minimum size for the display of content from the CDB 204 , specify the maximum number of times that a CDB 204 can appear on a webpage, and specify whether the CDB 204 refreshes its content on every page request.
  • the CDB 204 is script-based. The software designer implements the CDB 204 using VBScript, JScript, Perl, or other scripting languages known to one of ordinary skill in the art.
  • a CDB 204 is a component-object model (COM) dynamically-linkable library (DLL) developed using programming tools such as VISUAL BASIC STUDIO or VISUAL C++ STUDIO from Microsoft Corporation of Redmond, Wash.
  • the CDB 204 takes the form of other computer-executable software objects known to one of ordinary skill in the art.
  • the CDB 204 typically supports at least two methods.
  • a first “Configure” method controls the initialization of the CDB 204 .
  • a second “Process” method performs whatever transactions or processing the designer wishes the CDB 204 to perform.
  • the software designer uses a set of template files to simplify the coding of CDB 204 .
  • the user edits the template files to supply code implementing the desired CDB functionality and compiles the code into a machine-executable program or DLL.
  • the template files typically include definitions for one or more software sub-objects that a designer may wish to implement in the CDB 204 .
  • These sub-objects include but are not limited to application-specific dictionary sub-objects for the storage of data specific to a particular CDB 204 , audit trail sub-objects, request sub-objects to contain the parameters associated with incoming requests to the CDB 204 , response sub-objects for outgoing responses from the CDB 204 , session sub-objects for the storage of session-specific data, cookie sub-objects for the storage of data for use as cookies on a client device 100 , header sub-objects to permit the communications module 200 to maximize, minimize, close and refresh a window, user sub-objects to store user-specific settings for communications module 200 , and personalize sub-objects to store a user's customizable pages and theme preferences.
  • a designer simply deletes the definitions for sub-objects that the CDB 204 will not utilize.
  • PS 216 also includes a set of specialized data sources in data tier 116 .
  • One specialized data source is taxonomy.
  • a taxonomy imposes multiple, arbitrary, hierarchical structures upon an arbitrary data set.
  • Typical taxonomies would include a database of customer records that can be selectively organized by employer, or a database of digitally-formatted music that can be selectively organized by artist, album title, or publisher.
  • CDBs 204 and conduits 112 provide what is typically referred to as “pull” assimilation agents: they retrieve information from sources in response to user actions such as a login, a mouse click, a button press, or another user-driven event. It is also desirable that third-party information providers have a mechanism to supply information to an embodiment of the present invention for display to a user at intervals controlled by the information provider, instead of the user of the PS 216 . This model of information service is typically referred to as a “push” information service.
  • FIG. 3 illustrates how several push information services interact with an embodiment of the present invention, permitting third-party information providers to supply the system with information at their option.
  • a receiver agent 300 accepts communications from third-party trading partners 304 in a variety of protocols. These protocols include but are not limited to file transfer protocol (FTP), post-office protocol, version 3 (POP3), common-object model (COM) messaging, and HTTP. As illustrated, a receiver agent 300 typically includes a module for each supported protocol. Some embodiments feature modules that support one or more protocols, especially when those protocols are substantially similar. In other embodiments, receiver agent 300 takes the form of a set of receiver agents 300 ′, with each receiver agent 300 ′ supporting one or more individual protocols. Like the other software components of the embodiments of the present invention, receiver agent modules may be implemented as active server pages, COM DLLs, or executable files using commercially-available software development tools, as described above.
  • FTP file transfer protocol
  • POP3 post-office protocol
  • COM common-object model
  • HTTP HyperText Transfer Protocol
  • HTTP HyperText Transfer Protocol
  • a receiver agent 300 typically includes a module for each supported protocol. Some embodiments feature modules that support one or more protocols, especially when
  • Each receiver agent module accepts a message in a given protocol and encapsulates it in a platform-neutral extendible markup language such as XML. This encapsulated message is suited to subsequent asynchronous or synchronous processing at the option of the designer. If the designer elects asynchronous processing, the receiver agent 300 delivers the encapsulated message to message queue 308 for later processing by message processor 312 . If the designer elects synchronous processing, the receiver agent 300 transfers the encapsulated message directly to the receiver agent 300 for COM messaging. In another embodiment, the receiver agent 300 routes messages directly to the agent server 604 , as discussed below.
  • spider agents 316 execute data source adapters (DSAs) either on a periodic, scheduled basis or on an aperiodic, as-needed basis.
  • DSAs data source adapters
  • Individual DSAs initiate communications with a remote data source using a particular protocol hard-coded into the DSA.
  • Typical protocols include but are not limited to FTP, HTTP, structured query language (SQL), and open database connectivity (ODBC) protocol.
  • Each DSA encapsulates its retrieved information in a platform-neutral extensible markup language such as XML before routing it to a queue 308 for later processing by message processor 312 .
  • Exemplary uses of a DSA include: accessing a data source, retrieving data, retrieving metadata, or maintaining index logs of events related to the spidering process.
  • the DSA itself typically includes configuration information such as authentication credentials, targets for information storage and retrieval (including but not limited to pathnames, uniform resource locators (URLs), and IP addresses), and the maximum link depth for traversal of a data source.
  • configuration information such as authentication credentials, targets for information storage and retrieval (including but not limited to pathnames, uniform resource locators (URLs), and IP addresses), and the maximum link depth for traversal of a data source.
  • a DSA is a COM DLL, designed and compiled using commercially-available tools as described above.
  • a DSA supports methods included but not limited to a method to return the children of a data source, a method to retrieve data from a temporary file, a method to write data to a temporary file, a method to obtain configuration values for the DSA, a method to log the DSA's data-gathering activities, and a method to retrieve metadata values.
  • Sender agents 324 provide the PS 216 with one or more methods to communicate with a third party, not necessarily a user of the PS 216 , via the third party's communication device.
  • each sender agent 324 is adapted to communicate with a client device 100 using network 104 using a particular method or protocol.
  • PS 216 invokes a sender agent 324 that utilizes simple mail transfer protocol (SMTP) to convey information to client device 100 : PS 216 sends a message and information identifying the recipient of the message to the sender agent 324 .
  • the sender agent 324 opens a connection to network 104 and sends the message to the user, where it eventually arrives at the user's client device 100 .
  • SMTP simple mail transfer protocol
  • sender agent 324 initiates a telephone call to the third party and uses a combination of computer-generated speech and speech recognition to deliver information to the third party. In another embodiment, sender agent 324 sends a wireless page to the third party's pager or page-equipped cell phone.
  • Receiver agents 300 , spider agents 316 , and sender agents 324 are characterized by their extendible, open architectures. As new protocols are developed for use by a receiver agent 300 , spider agent 316 , or sender agent 324 , a user writes a new protocol module to translate or encapsulate the new protocol in the platform-neutral extendible markup language utilized by the components of PS 216 .
  • the message processor 312 periodically reviews one or more queues 308 for messages received from receiver agents 300 , spider agents 316 , or other sources. In one embodiment, the message processor 312 retrieves any available messages in first-in/first-out (FIFO) order for processing. In another embodiment, if a message is available for processing, the message processor 312 queries the IS module 208 to determine whether the IS 208 is busy, backlogged, or idle. If the IS module 208 is idle, the message processor 312 removes a message from the queue 308 and sends it to the IS module 208 for processing.
  • FIFO first-in/first-out
  • IS module 208 interacts with information sources in data tier 116 through assimilation agents (AAs) 212 .
  • IS module 208 includes a flow designer that permits a designer to graphically implement complex processes conditionally processing and routing information between AAs 212 and CDBs 204 . These graphically-depicted processes are referred to as “business flows,” because they typically model a real world decision-making or business process.
  • business flows control the transmission and receipt of information among AAs 212 , CDBs 204 , and communications module 200 by performing actions and evaluating conditional statements.
  • a sample business flow could respond to a user's invocation of a search CDB 204 by searching the user's Outlook's contacts, querying an LDAP server, posting a form to the ANYWHO webserver provided by AT&T Corporation of New York, N.Y., and querying an X.500 database, ending the chain of events prematurely if any one of the individual queries yielded the desired result.
  • the tool used to create a business flow is a WYSIWIG (“what-you-see-is-what-you-get”) object-oriented drawing tool such as VISIO from Microsoft Corporation of Redmond, Wash.
  • the flow designer is a specialized WYSIWIG object-oriented drawing tool that converts the designer's drawings into a series of conditional statements suited to automated execution.
  • ovals in the flow signify starts and stops in the process.
  • diamonds in the flow signify conditional tests, whose satisfaction or failure changes which steps are subsequently executed.
  • straight lines are implemented as conditional tests whose condition is always satisfied.
  • a user connects to the XP system 216 , authenticates her identity, receives a rendered webpage composed of the results from her associated CDBs 204 , and interacts with content on the webpage by entering information into a dialog box and clicking a button.
  • a dispatcher instantiates the IS module 208 to receive the entered information passed from the user through another CDB 204 ′.
  • the IS module 208 loads a predetermined business flow from a file, a database or other persistent storage.
  • the business flow is associated with the individual user.
  • the business flow is associated with the user's group, position, or another taxonometric characteristic, such as her purchasing privileges.
  • the IS module 208 selects a flow or script from a group of flows or scripts in response to metadata or other information contained in the information received from CDB 204 .
  • IS module 208 executes the flow sequentially from start to finish, taking actions and evaluating conditional statements that may affect actions subsequently performed.
  • the IS module 208 retrieves and processes information from message processor 312 and one or more of the AAs 212 on an as-needed, step-by-step basis.
  • IS module 208 provides the processed information to CDB 204 for display on client device 100 or, when appropriate, to sender agent 324 for delivery to another individual.
  • Assimilation agents (AAs) 212 are similar to receiver agents, spider agents, and sender agents in that they provide a designer with convenient mechanisms to interface IS module 208 with various information sources. For example, a user can add the equivalent of a sender agent using FTP protocol by creating an AA 212 to launch an FTP client program, connect with an FTP site, supply an authorized logon credential, and then upload information to the site using FTP.
  • AAs 212 typically provide advanced processing functionality, for example, filtering or otherwise preprocessing information before its receipt by IS module 208 .
  • AAs 212 provide bidirectional communication with the information sources they interface with.
  • the AA 212 not only retrieves information from the information source, it also receives information from the IS module 208 or end user and applies it to the information source, modifying or updating the information source.
  • AAs 212 are script-based. In another embodiment, AAs 212 are component-object model (COM) objects, such as COM dynamically-linked libraries (DLLs) or executable files. In one embodiment, an AA 212 object supports at least two methods: a first method to initialize the AA 212 and a second method to perform whatever processing the designer wants the AA 212 to perform. The output of an AA 212 is typically encapsulated in a platform-independent, extendible markup language such as XML.
  • XML platform-independent, extendible markup language
  • AAs 212 can be created and deployed using a variety of software tools.
  • an object designer uses VISUAL BASIC STUDIO or VISUAL C++ STUDIO from Microsoft Corporation of Redmond, Wash.
  • a user specifies a name and a threading model (e.g., single-threaded, “apartment”-threaded, etc.) for the AA 212 .
  • the programming system provides a series of template files configured to match the specified name and threading model.
  • the user edits the template files to supply code implementing the desired AA functionality and compiles the code into a machine-executable program or DLL.
  • the user may also add labels or icons for use in IS module 208 , or other snap-in extensions.
  • template files include definitions for one or more software sub-objects that a user may wish to implement in an AA 212 .
  • These sub-objects include but are not limited to application-specific dictionary sub-objects for the storage of data specific to a particular AA 212 , audit trail sub-objects, message sub-objects for outgoing messages sent by the AA 212 to a clipboard memory, request sub-objects to contain the parameters associated with incoming requests to the AA 212 , response sub-objects for outgoing responses from the AA 212 , and session sub-objects for the storage of session-specific data. A designer simply deletes the definitions for sub-objects that the AA 212 will not utilize.
  • FIG. 4 illustrates a sample display presented on a client device to an end user interacting with one embodiment of the present invention. This discussion is meant to illustrate the operation of one embodiment of the present invention, not to limit the scope of the invention as claimed.
  • the user has personally selected some of her CDBs, such as the “Sports Scores” CDB, whose output appears at 400 .
  • Other CDBs are automatically available to all employees, such as the “Weather” CDB, whose output appears at 404 .
  • Still other CDBs, such as the “Mail” CDB (whose output appears at 408 ) are available to the user by virtue of her membership in the group of users “Human Resources.”
  • a CDB has drawn the tabbed window interface 412 at the top of the figure. Using these tabs, the user can distribute her CDBs among multiple windowed views, with the components of each view sharing some common taxonometric trait or having a common role appropriate to the institution employing the user.
  • Each CDB whose output is visible on the “Home” page has its properties set to permit the user to customize its appearance. For example, a sub-object in each of the onscreen CDBs permits the user to minimize the appearance of the CDB or edit its settings, such as its size and layout. The designer, who has selected the CDBs that are available to User Spiegel and other users, has enabled per-user and global caching where appropriate.
  • the user's “Mail” CDB is set to per-user caching of 10 minutes, so that the CDB will only check for e-mail in her accounts on various servers scattered across the organization every 10 minutes. Specifying the magnitude of the delay, and in some embodiments the start time for measuring the delay, helps the site administrator balance the load on the POP3 servers the organization uses to administer mail services. Similarly, global caching has been enabled for the “Headlines” CDB (whose output appears at 416 ), ensuring that every user of the “Headlines” CDB receives the same set of news headlines.
  • FIG. 5 depicts a typical business process modeled in the IS module and invoked by a user from a CDB with an input form present on the user's webpage. Again, this discussion is meant to illustrate the operation of one embodiment of the present invention, not to limit the scope of the invention as claimed.
  • a system designer has met with ACME Manufacturing Company, a hypothetical business entity, to discuss the automation of the purchase order process.
  • the designer and her team has met with various members of ACME's management team, the accounting department, and employees with responsibility for ordering supplies.
  • an employee with purchasing responsibility completes a purchase order form, entering information including but not limited to desired items for purchase, desired quantities, quoted prices, and shipping information (Step 500 ).
  • the form is routed to the accounting department, where it arrives two days later (Step 504 ).
  • a supervisor in the accounting department reviews the request, calls around to check the availability of her staff, and delegates the request to a particular employee for processing (Step 508 ).
  • the employee processes the request.
  • the employee After completing various phone calls to verify the necessity of the purchase order, the employee either approves or disapproves the purchase order (Step 512 ). If the request is disapproved, it is returned to the desk of the employee making the purchase order by interoffice mail, arriving some two days later (Step 516 ).
  • Step 520 If the purchase order is approved, notification of approval is returned by interoffice mail to the employee making the purchase order, arriving some two days later.
  • the employee in accounting routes the purchase order to another member of the accounting staff to update the accounting mainframe to reflect the purchase (Step 524 ). Two days later, when the accounting system is updated, the purchase order is sent to the office supply vendor for fulfillment (Step 528 ).
  • the system designer creates a Purchase Order (PO) CDB to provide a web-based purchase order form.
  • the CDB is made available to individual users and groups with purchasing responsibilities.
  • the system designer also codes an AA to interact with the accounting department's legacy mainframe system and a sender to send messages using SMTP.
  • Work Queue CDBs are created for the accounting department and individual users in accounting, permitting the assignment of work to the department as a whole or to individual users, respectively.
  • the system designer uses a WYSIWYG business flow tool to graphically implement the business process of FIG. 5 , associating each step in the figure with an action or a decision.
  • the director of the Supplies Department connects to the PS system and updates his personalized webpages, placing the PO CDB next to the conduit that apprises him of the inventory in his warehouse and the CDB forecasts the supplies that his division of the company will use over the next week, keeping all of these CDBs on a tabbed window titled “Supplies.”
  • the department supervisor checks the “Supplies” page.
  • the supervisor invokes the PO CDB.
  • the supervisor enters the name of the supply needed, the quantity needed, and the date the supplies are required.
  • the supervisor clicks a button and the PO CDB generates an HTTP request for transmission through the network.
  • An intermediary DLL intercepts the HTTP request and converts it to an XML message, as described above.
  • the XML message is routed through the company network until it arrives at the communications module, where it is sent to the appropriate CDB.
  • the CDB forwards the message to the IS module.
  • the IS module examines the metadata contained in the message to determine that the XML message is a purchase order request.
  • the IS module searches its library of business processes for the appropriate flow to handle purchase orders, which is the flow the designer has implemented based on FIG. 5 .
  • the IS module Having received a purchase order (Step 500 ′), the IS module sends it to the Group Work Queue CDB for the accounting department (Step 504 ′). At this point, the IS module pauses its execution of the business flow until the purchase order is either accepted or rejected.
  • Each member of the accounting department log in to the PS system and authenticate themselves.
  • Each member of the accounting department has access to his or her own set of CDBs and the Group Work Queue CDB, which permits individual employees in the accounting department to assume responsibility for tasks delegated to the department as a whole.
  • an accounting employee interacts with the Group Work Queue CDB and transfers the PO to her Personal Work Queue CDB for processing (Step 508 ′).
  • the transferred PO joins the other POs pending in the employee's personal work queue.
  • the Personal Work Queue CDB graphically depicts the employee's outstanding assignments in a list.
  • the employee selects each PO, which in turn invokes another CDB to graphically display the particulars of the PO alongside an APPROVE button and a DENY button (Step 512 ′). If the employee fails to approve or deny the PO within two days, or if the PO remains unassigned in the Group Work Queue CDB for more than a day, the appropriate CDB routes the PO to the Personal Work Queue for the head of the accounting department.
  • the CDB sends a message back to the IS module indicating the PO has been denied.
  • the IS module resumes processing of the business flow, following the “DENIED” branch away from Step 512 ′.
  • the IS module invokes a sender to notify the original employee responsible for the purchase order that the PO has been denied (Step 516 ′).
  • the CDB sends a message back to the IS module indicating the PO has been approved.
  • the IS module resumes processing of the business flow, following the “APPROVED” branch.
  • the IS module invokes a sender to notify the original employee responsible for the purchase order that the PO has been approved (Step 520 ′).
  • the fields of the e-mail are generated through merging administratively-configured text with text from the purchase order.
  • the “To” field is populated by the value of the PO message Xpath //requestor.email.
  • the “Subject” field is always “Your supplies request has been approved.”
  • a second sender is invoked to alert the Receiving department of the impending delivery of supplies.
  • the IS module invokes a custom AA to update the accounting department's legacy mainframe system (Step 524 ′). Once the system is updated, the IS module forwards the PO to another sender to convey the PO to the appropriate vendor (Step 528 ′). The sender waits for an acknowledgement from the vendor, which it will forward to the IS module. If the IS module does not receive an acknowledgement within 8 hours, the IS module will send a message to the Group Work Queue CDB for the information technology department for troubleshooting. If the sender receives a rejection from the vendor, the sender forwards the rejection to the IS module, which forwards it to the employee originally responsible for the purchase order.
  • FIG. 6 some embodiments of the present invention are deployed in a multi-server computing environment to improve performance and the ability to service user transactions.
  • This computing environment typically includes one or more web server processes 600 , one or more agent server processes 604 , and a state server process 608 .
  • One or more users interact with the system using one or more client devices 100 .
  • the client devices 100 typically interconnect with the server computers using network 104 that passes messages encoded in an agreed-upon protocol, as discussed above.
  • the messages sent by client device 100 through network 104 arrive at one or more server computers for processing.
  • the server computers run one or more computer programs providing web server functionality, agent server functionality, state server functionality, or other functionalities as discussed in greater detail below.
  • these server processes are web servers 600 1 , 600 2 , and 600 N ; agent servers 604 1 and 604 N ; and state server 608 .
  • FIG. 6 only depicts three web server processes, two agent server processes, and a single state server process to facilitate discussion.
  • Embodiments of the claimed invention can assume configurations including any number of processes and any number of server computers. Therefore, this discussion should not be presumed to limit the scope of the claimed invention.
  • the various server processes have effectively bidirectional channels of communication permitting the passage of information between processes.
  • the particular form of these channels will vary depending on the underlying hardware configuration executing the server processes. For example, if the server processes operate on a network of single-processor machines interconnected by a LAN, the channels can be packets transmitted in accord with Ethernet or Token Ring protocols. In another embodiment, only a subset of server processes include bidirectional channels of communications.
  • each server process includes a load-balancing module with functionality to monitor the status of its own server process.
  • only a subset of the server processes include a load-balancing module.
  • the module determines whether its server process is operating on a transaction, has a backlog of transactions, or is presently idle.
  • the load-balancing module includes functionality to share its status with other load-balancing modules and functionality to query other load-balancing modules concerning their status.
  • the messages passed through the network 104 are directed by a router to one or more computers running one or more web server processes 600 .
  • the router first queries the web server processes 600 to identify the least-busy process before it routes the message, typically a HTTP GET request. After the least-busy web server process 600 has been identified, the message is routed to it.
  • the web server 600 parses the HTTP request and services it.
  • the load balancing module of web server 600 queries each agent server 604 to identify the least-busy agent server 604 .
  • the web server 600 passes the request to the least-busy agent server for servicing.
  • any agent server 604 may force an election at any time by broadcasting a request election datagram to all other agent servers 604 .
  • the election results are determined by a comparison of the set of election criteria which is transmitted within the request election datagram transmitted by the requesting agent server 604 with the set of election criteria maintained by each receiving agent server 604 ′.
  • the first election criterion from the datagram of the requesting agent server 604 is compared by the receiving node to the first criterion of the receiving agent server 604 ′.
  • the highest ranking of the two criteria being compared wins the comparison and the agent server with that criterion wins the election. If the two criteria tie, then the next criteria are sequentially compared until the tie is broken.
  • server agent 604 ′ receiving the request election datagram has a higher election criteria than that received in the request election datagram, the agent server 604 ′ receiving the request election datagram issues its own request election datagram. If the receiving agent server 604 ′ has a lower election criteria than the criteria received in the request election datagram, the receiving agent server 604 ′ determines it is not the master agent server and attempts to determine which agent server 604 is the master agent server 604 .
  • the criteria which determine the outcome of the election include: whether or not the agent server 604 is statically configured as a master network information server node; whether the agent server 604 has the higher software version number; and whether the agent server 604 is the longest running agent server 604 .
  • the datagram structure for the election request includes an unsigned shortword for the agent server software version number, an unsigned shortword in which the bits are flags which designate whether the node is statically configured as a master agent server 604 and an unsigned longword containing the amount of time the agent server 604 has been running.
  • the master agent server 604 may transmit a declare message to the other agent servers 604 declaring itself to be the master agent server 604 . If another agent server believes itself to be a master agent server 604 , the other agent server will request an election. In this way erroneous master agent servers 604 are detected and removed. In addition an election may also be requested: by any agent server 604 when that agent server 604 is instantiated or by any agent server 604 to whom the master agent server 604 has failed to acknowledge an update message. After an election has occurred and the new master agent server 604 has been determined, all the agent servers 604 wait a random period of time and then send a datagram to the master agent server 604 with its latest load information.
  • master agent server 604 When master agent server 604 receives an update datagram from a server agent, then the master agent server 604 may reply to the transmitting agent server with an acknowledgment. If the master agent server 604 fails to receive data from an agent server 604 , then the master agent server 604 discards the old data from the agent server 604 after a predetermined amount of time.
  • agent server 604 If an agent server node does not receive an acknowledgment from the master agent server 604 after the agent server 604 has sent an update datagram, the agent server 604 retransmits the update datagram. The agent server 604 will attempt N retransmits (in one embodiment) before it assumes that the master agent server 604 has failed. When this occurs the agent server 604 transmits an election request. If the agent server 604 receives an acknowledgment, then it periodically updates the master agent server 604 , in one embodiment every 5 to 60 minutes.
  • the agent server 604 typically includes a software dispatcher process capable of allocating memory, freeing memory, and instantiating and terminating software processes in allocated memory.
  • the agent server 604 instantiates the software system of FIG. 2 , including communications module 200 , CDBs 204 , IS module 208 , and AAs 212 .
  • the agent server 604 uses the state server 608 for the storage of persistent data values and information associated with requests sent to the web server 600 .
  • the state server 608 includes a relational database for storing this information.
  • Using state server 608 for the storage of information associated with ongoing requests permits load balancing with transactional granularity among agent servers 604 . For example, if client device 100 sends multiple HTTP GET requests to the system of the present invention, each GET request can be translated into an XML message and routed by the web server process 600 to a different agent server 604 .
  • each agent server 604 processes an isolated request as part of a related transaction by storing and retrieving information related to the transaction in state server 608 .
  • load balancing between agent servers 604 is implemented at the session level.
  • the least busy agent server 604 is identified.
  • This least-busy agent server 604 is assigned to the user for the duration of her session: all of the user CDB's and other software processes are executed by that agent server. If the user ends her connection and reconnects lately, it is possible that a different agent server 604 will process her transactions.
  • agent server 604 instantiates the components of the portal server (PS) system, the instantiated components, the web server 600 , the agent server 604 , and the state server 608 intercommunicate using messages in a platform-independent extendible markup language such as XML.
  • the web server 600 Upon receiving a request from the end user's client device 100 , the web server 600 typically encapsulates a business object such as a document in a markup language wrapper and passes it to the agent server 604 .
  • the agent server 604 relays the message to the dispatcher, which in turn relays it to the communications module for processing.
  • the dispatcher directly routes messages to IS module or an alternate processing engine (not shown).
  • the dispatcher determines the target for transmitted messages by instantiating a rule-based processing engine that examines the contents of the message and makes routing decisions based on its contents.
  • the agent server 608 proceeds to process the next request it receives.
  • the following example illustrates load-balancing among the web servers 600 and the agent servers 604 of FIG. 6 .
  • the web server 600 1 which is hosting the user's session, polls agent servers 604 1 and 604 2 using a load-balancing module to identify the least-busy agent server. Whichever agent server is less busy is assigned the task of instantiating and running the communications module associated with the user's session.
  • the web server 100 1 polls agent servers 604 1 and 604 2 using a load-balancing module to identify the least-busy agent server. Whichever agent server is less busy is assigned the task of instantiating and running the security broker associated with the user's session.
  • the process repeats itself for each module of the PS system 216 that requires instantiates and processor time. For example, when the user's list of conduits and CDBs is loaded, each conduit or CDB is potentially routed to a different machine to maintain an even load among agent servers 604 .
  • state server 608 provides persistent storage for the state of the user's session. As each agent server 604 completes a request, it updates the session record on the state server 608 to reflect the completion of the transaction. Session storage on the state server 608 also increases the fault tolerance of the system, enabling the redeployment of computing tasks between agent servers 604 in the event of a failure of one or more agent servers 604 .

Abstract

Methods and apparatus for arbitrarily extendible information aggregation and display. This functionality is achieved by abstracting the components of the system into individual modules which communicate using a platform-independent, extendible markup language such as extensible markup language (XML). A designer adds support for new information sources or client devices by abstracting and encapsulating messages to and from the information source or client device in a wrapper using a platform-independent, extendible markup language such as XML.

Description

    CROSS REFERENCE TO RELATED APPLICATIONS
  • This application is a continuation of co-pending U.S. application Ser. No. 09/891,821 filed on Jun. 26, 2001.
  • FIELD OF THE INVENTION
  • The present invention relates to methods and apparatus for the aggregation of information from multiple sources for presentation to an end user. In particular, the present invention relates to abstracted information aggregation and presentation utilizing extendible markup languages such as extensible markup language (XML).
  • BACKGROUND OF THE INVENTION
  • The closing decades of the 20th century have been characterized as the beginning of an “Information Age.” Before the widespread deployment of computers in the 1970s and 1980s, records and other data were stored in analog, human-readable formats using paper records, microfiche, and microfilm. With computerization, the storage of data became a digital task, storing information on magnetic or optical media in computer-readable formats. Unfortunately, computerization preceded widespread internetworking by roughly twenty years. The result is a dizzying array of data sources often separated by geographical or legal boundaries, stored in potentially incompatible formats, and held by owners whose interests may argue against interoperability and easy access.
  • However, end users need and want simple access to information from all of these data sources. This need has driven the creation of various techniques enabling a single end user to access and work with information with multiple, disparate data sources. For example, At Home Corporation of Redwood City, Calif. offers the MY EXCITE service. MY EXCITE presents users with a set of selectable information sources including sources for weather information, sources for equity market information, and sources for news information. The user identifies one or more information sources of interest, which the MY EXCITE service provides in a convenient, single page format website that is periodically updated. Without MY EXCITE or a comparable service, the user needs to retrieve this information from disparate data sources using varying methods of communications. For example, the user would need to place a telephone call to the National Oceanic and Atmospheric Administration (NOAA) for weather, purchase the NEW YORK TIMES and read the financial section for equity market information, and use a radio to monitor a news station for the latest news.
  • FIG. 1 depicts an apparatus for information aggregation and display known to the prior art, not necessarily used by the MY EXCITE service. The aggregator 108 includes functionality to accept an incoming network connection from the client device 100, including security measures using authentication credentials.
  • After authentication, the aggregator 108 loads preference information, including a list of conduits 112 associated with the user, from persistent storage. Each conduit 112 is adapted to process the information from an information source in data tier 116 and display it on a particular type of client device 100. In one embodiment, an equity market information source is associated with two conduits 112: one for displaying information in hypertext markup language (HTML) and one for displaying information in wireless markup language (WML).
  • Assume that a designer wishes to add a new information source (e.g., weather information) from data tier 116. This requires the creation of a new conduit 112 for each type of client device (e.g., web browser, WAP phone, etc.) supported by the aggregator 108. Similarly, if the designer wishes to add support for devices using a new display format, then the designer must write a conduit 112 for each information source supported by the aggregator 108.
  • For a real-world system typically accessing hundreds of data sources in data tier 116 using hundreds of conduits 112, the costs of upgrading the system to address a new display format or incorporate a new information source from data tier 116 are significant.
  • Moreover, the conduit model only allows the simple aggregation and conveyance of data from an information source to a client device. Information provided by an information source may not be in a form appropriate for direct display on a client device 100. For example, a source of equity market information could provide earnings and price data in response to a ticker symbol supplied by a user of a client device 100. If the user's preference data requires a price-to-earnings ratio, mere presentation of price data and earnings data fails to meet that request. Therefore, it is desirable for the system to permit arbitrary processing of the data received from an information source before its presentation to an end user.
  • BRIEF SUMMARY OF THE INVENTION
  • The present invention provides methods and apparatus for arbitrarily extendible information aggregation and display. This functionality is achieved by abstracting the components of the system into individual modules which communicate using a platform-independent, extendible markup language such as XML. A designer adds support for new information sources or client devices by abstracting and encapsulating messages to and from the information source or client device in a wrapper using a platform-independent, extendible markup language such as XML.
  • This additional level of abstraction and common intermediate format reduces the effort required to support a new information source or client device. Now a designer only needs to write one conduit to support a new information source or new client device. The common intermediate format permits arbitrary processing of data from an arbitrary information source using a back-end integration server.
  • In one aspect, the present invention is an apparatus for the aggregation and display of information on a client device. The apparatus module includes a communications module, an assimilation agent, and an integration service. The communications module delivers information to and receives information from a client device. The assimilation agent receives information from at least one information source and encapsulates the information in a first wrapper using a platform-independent extendible markup language. The integration server communicates with the communications module and the assimilation agent. The integration server receives encapsulated information from the assimilation agent, uses a rules engine to process the encapsulated information according to a predefined set of actions, and encapsulates the result in a second wrapper using a platform-independent extendible markup language. The integration server provides the encapsulated result to the communications module.
  • In one embodiment, the communications module delivers information to and receives information from the client device using hypertext markup language (HTML) or wireless markup language (WML). In another embodiment, the communications module delivers information customized according to a predefined profile. In yet another embodiment, the communications module delivers information customized according to the type of client device. In still another embodiment, the communications module, the integration server and the assimilation agent communicate using XML. In yet another embodiment, the assimilation agent retrieves information from a SQL database, an Oracle database, a Domino database, a document repository, a SAP database, a computer in communications with the Internet, or an indexed database.
  • In another embodiment, the apparatus also includes a content delivery broker that provides communications between the communications module and the integration server. In yet another embodiment, the communications provided by the content delivery broker utilize XML.
  • In another embodiment, the apparatus also includes a receiver agent in communication with the integration server, receiving messages sent in a protocol. In yet another embodiment, this protocol is file transfer protocol (FTP), post office protocol, version 3 (POP3), hypertext transfer protocol (HTTP), Microsoft Message Queue messages (MSMQ), simple mail transfer protocol (SMTP), directory polling, and component-object model messages (COM).
  • In another embodiment, the apparatus also includes a spider agent in communication with the integration server, initiating communications with a data source using a protocol. In yet another embodiment, this protocol is file transfer protocol (FTP), post office protocol, version 3 (POP3), hypertext transfer protocol (HTTP), Microsoft Message Queue messages (MSMQ), simple mail transfer protocol (SMTP), directory polling, and component-object model messages (COM).
  • In another embodiment, the apparatus also includes a sender agent in communication with the integration server, sending messages using a protocol. In yet another embodiment, this protocol is file transfer protocol (FTP), post office protocol, version 3 (POP3), hypertext transfer protocol (HTTP), Microsoft Message Queue messages (MSMQ), simple mail transfer protocol (SMTP), directory polling, and component-object model messages (COM).
  • In another aspect, the present invention is a method for processing information from multiple sources for presentation to a user. An assimilation agent receives information from at least one of several information sources. The assimilation agent encapsulates the received information in a first wrapper using a platform-independent extendible markup language. The assimilation agent transmits the encapsulated information to an integration server. The integration server processes the information in accord with a predefined set of rules. The integration server encapsulates the processed information in a second wrapper using a platform-independent extendible markup language. The integration server transmits the processed information to a communications module. The communications module delivers the processed information to a client device.
  • In one embodiment, the communications module delivers the processed information to a client device by identifying the type of client device or the type of the processed information. In another embodiment, the communications module additionally selects an XML style sheet based (XSL) on the type of the client device or the type of the processed information and completes the selected XSL using the processed information. In still another embodiment, the communications module additionally transforms the completed XSL to a form suitable for display on the client device and provides the transformed result to the client device.
  • In another aspect, the present invention is an article of manufacture storing computer-readable program means for aggregating information from multiple sources for presentation to a user. The article of manufacture includes computer-readable program means for receiving, by an assimilation agent, information from at least one of a set of information sources, computer-readable program means for encapsulating, by the assimilation agent, the received information in a first wrapper using a platform-independent extendible markup language, and computer-readable program means for transmitting, by the assimilation agent, the encapsulated information to an integration server. The article of manufacture also includes computer-readable program means for processing, by the integration server, the encapsulated information in accord with a predefined set of rules, computer-readable means for encapsulating, by the integration server, the processing information in a second wrapper using a platform-independent extendible markup language, and computer-readable program means for transmitting, by the integration server, the processed information to a communications module. The article of manufacture also includes computer-readable program means for delivering, by the communications module, the processed information to a client device.
  • In one embodiment, the computer-readable program means for delivering, by the communications module, the processed information to a client device itself includes computer-readable program means for identifying the type of client device or the type of the processed information. In still another embodiment, the computer-readable means for delivering, by the communications module, the processed information to a client device itself also includes computer-readable program means for selecting an XSL based on the type of client device or the type of the processed information, and computer-readable program means for completing the XSL with the processed information. In yet another embodiment, the computer-readable means for delivering, by the communications module, the processed information to a client device itself also includes computer-readable program means for transforming the XSL to a form suitable for display on the client device and computer-readable program means for providing the transformed XSL to the client device.
  • BRIEF DESCRIPTION OF THE DRAWINGS
  • These and other advantages of the invention may be more clearly understood with reference to the specification and the drawings, in which:
  • FIG. 1 is a block diagram of a prior art software system for the aggregation and display of information;
  • FIG. 2 is a block diagram of an embodiment of a software system in accord with the present invention;
  • FIG. 3 is a block diagram illustrating a typical interconnection of the portal server 216 with various information sources;
  • FIG. 4 is a sample display presented by the portal server 216 to an end user using client device 100;
  • FIG. 5 is an exemplary workflow diagram operating in the integration server module 208; and
  • FIG. 6 is a block diagram of an embodiment of a server array executing the software embodiment of FIG. 2 in accord with the present invention.
  • In the drawings, like reference characters generally refer to the same parts throughout the different views. The drawings are not necessarily to scale, emphasis instead being placed upon illustrating the principles of the invention.
  • DETAILED DESCRIPTION OF THE INVENTION
  • In brief overview, Applicants' invention provides methods and apparatus for extendible information aggregation and presentation. The present invention reduces the effort required to add support for new display formats or new information sources by introducing an additional layer of abstraction into the process of information aggregation and display. A designer identifies an information source she wishes to make available in aggregation with other information sources. Working with a generic software object, the designer builds an assimilation agent that provides one-way or two-way communications with the information source using messaging in a platform-independent extendible markup language such as XML. An integration server accepts messages encapsulating information from the assimilation agent for processing. The integration server provides the processed messages to a communications module for display on a client device.
  • Portal Server (PS)
  • FIG. 2 depicts an embodiment of a software system in accord with the present invention. The system includes a communications module 200 in communication with various content delivery brokers (CDBs) 204 and conduits 112. CDBs 204 direct communicate with an integration server (IS) module 208, while prior art conduits 112 direct communicate with an information source in data tier 116, bypassing the IS module 208. The IS module 208 itself indirect communicates with information sources in data tier 116 through assimilation agents (AAs) 212. In the aggregate, these modules are conveniently referred to as the portal server (PS) 216.
  • The component modules of the PS 216 are typically software objects instantiated by a controlling process or dispatcher on an as needed basis. For example, when a user connects to the PS 216, a dispatcher instantiates a communications module 200 to communicate with the user's client device 100. Similarly, when the IS module 208 requires information from an information source, the dispatcher instantiates an assimilation agent 212 to intermediate with the information source.
  • Because of the diversity and facility of modern programming practices, the component modules of the PS 216 take many different forms. In some embodiments, the component modules are compiled binary objects in accord with CORBA, ActiveX, OpenDoc, or other object-oriented frameworks. In other embodiments, the component modules are scripts written in Perl, JavaScript, VBScript, or other scripting languages that are translated into machine language before execution. In still other embodiments, the component modules are binary executables compiled from files written in one or more programming languages including but not limited to C, C++, C#, Lisp, or Pascal.
  • Each component module of PS 216 provides its own specialized functionality. The communications module 200 communicates with client devices 100. The CDBs 204 provide a consistent interface for communications with IS module 208. Conduits 112 interface directly with external data sources such as a website, providing information to communications module 200 for display on a client device 100. Assimilation agents (AAs) 212 not only provide a consistent interface with internal and external data sources, but also encapsulate information from a data source in an platform-independent, extendible markup language that renders it susceptible to automated processing by IS module 208. In some embodiments, AAs 212 also perform predefined tasks on business objects such as data files or word processor files. The IS module 208 enables the automation of business processes, gathering information from sources including AAs 212 and processing it in accord with predefined actions and conditional rules.
  • Communications between the component modules in FIG. 2 utilize a platform-neutral extendible markup language such as XML. These communications contain, either directly or indirectly (e.g., through use of embedded URLs or other locators), business objects such as documents, or remote procedure calls (RPCs) such as search requests. The contents of a communication are typically encapsulated in markup language by defining a message type for the communication. Message types provide metadata and routing information necessary to exchange data between an information source and PS 216 regardless of the individual protocols used and supported by the information source.
  • In normal operation, a user with a client device 100 establishes communications with one or more server computers executing software providing the desired functionality of the PS 216. The client device 100 typically interconnects with the server computers using a network 104 that passes messages encoded in an agreed-upon protocol.
  • The client device 100 is typically an electronic device capable of accepting input from a user and graphically displaying data. In one embodiment, client device 100 is a personal digital assistant (PDA). The PDA graphically displays information which the user interacts with using a stylus, keyboard, or other input device. In another embodiment, client device 100 is a personal computer running a web browser. A browser window graphically displays information which the user interacts with using a mouse, keyboard, trackball, or other input device. In other embodiments, client device 100 is a web-aware cell phone or a thin client program such as METAFRAME from Citrix Software, Inc. of Ft. Lauderdale, Fla.
  • The network 104 typically carries data using electrical signaling, optical signaling, wireless signaling, a combination thereof, or any other signaling method known to the art. The network can be a fixed channel telecommunications link such as a T1, T3, or 56 kb line; LAN or WAN links; a packet-switched network such as TYMNET; a packet-switched network of networks such as the Internet; or any other network configuration known to the art. The network typically carries data in a variety of protocols, including but not limited to: user datagram protocol (UDP), asynchronous transfer mode (ATM), X.25, and transmission control protocol (TCP).
  • Once a connection is established, at least one server computer executes software providing the functionality of communications module 200. The communications module 200 identifies the type of client device 100 and uses this information to structure its interactions with the client device 100. In one embodiment, the communications module 200 identifies the type of client device 100 by examining metadata provided by the client device 100 when initiating the connection. For example, when the client device 100 is a personal computer executing a web browser program, it will typically provide metadata identifying the web browser, whether the browser is “Mozilla-compatible,” and some information about the operating system hosting the web browser. This identification information enables the communications module 200 to identify and deploy themes or style sheets that use the specific features supported by the web browser, including non-standard features or features that vary between browser implementations.
  • In another embodiment, the communications module 200 identifies the type of client device 100 by the number of the port on which the client device 100 attempts to establish a connection. If the port number is 80, the communications module 200 assumes the client device 100 supports hypertext transfer protocol (HTTP) and subsequently display using hypertext markup language (HTML). If the port number is 9200, the communications module assumes the client device 100 supports wireless access protocol (WAP) and subsequently displays using wireless markup language (WML).
  • The communications module 200 typically operates by accessing stored template files associated with a particular type of client device 100 and merging the templates with data received from the CDBs 204 for display to the client device 100. In one embodiment, these template files are XML style sheets (XSLs) with tags mapping to HTML and WML tags. Template files typically specify a display scheme appropriate for the client device 100. For example, in one embodiment where client device 100 is a personal computer running a web browser program, a template file may specify a table with two columns where the first column occupies 30 percent of the screen and the second column occupies the other 70 percent of the screen.
  • After identifying of the client device 100, the communications module 200 invokes a security broker (not shown) to authenticate the user's identity. In one embodiment, the security broker directs the communications module 200 to prompt the user for an identifier and a password. The user enters an identifier and password, which the communications module 200 provides to the security broker. The security broker checks the identifier and password against an internal database, file, or system registry to authenticate the user. If the identifier and password provided are not valid, the system denies access to the user and closes the connection to the client device 100. In other embodiments, authentication credentials accepted by the security broker include but are not limited to shared secrets, public/private key schemes, biometric data, or other forms of authentication well known to the art.
  • In another embodiment, the security broker leverages the authentication services provided by its operating system environment. For example, when the operating system is a member of the WINDOWS family of operating system products from Microsoft Corporation of Redmond, Wash., the security broker leverages the user, group, and domain information stored in the operating system and associated with the user.
  • In one embodiment the security broker is a COM object built using commercially-available programming tools, as described above. In another embodiment, the security broker supports methods including but not limited to user login, user logout, group enumeration, user enumeration, the enumeration of users in a particular group, and the changing of authentication credentials.
  • After completing the authentication process, the communications module 200 accesses personalization information associated with the user and stored in an internal database (not shown). This personalization information typically includes but is not limited to: a set of CDBs 204 for retrieving information from IS 208 for display to the user, a set of conduits 112 for retrieving information directly from information sources in data tier 116, and a set of predefined workflows for use with IS module 208, as discussed in further detail below.
  • Using the user's personalized settings, PS 216 proceeds to aggregate information for display on the user's client device 100. The system invokes each CDB 204 and conduit 112 associated with the user. In turn, an invoked CDB 204 or conduit 112 provides information to the communications module 200 for display to the end user. Some CDBs 204 simply provide a dialog box or other graphical interface elements upon invocation. Other CDBs 204 trigger one or more business flows in the IS module 208. Conduits 112 may directly query or poll information sources such as a search engine before providing output to the communications module 200. The source code for an exemplary conduit 112 that reads a list of stock symbols and displays related data from CNBC follows:
    //Implementation of the ISequoiaConfig interface
    STDMETHODIMP CMyAgent::Configure(BSTR configSpace, BSTR configName,
    VARIANT config, VARIANT_BOOL* pErrorCode)
    {
        // get the necessary info from the DOM document
        MSXML::IXMLDOMDocumentPtr pXMLDoc(config);
        // Read list of stock symbols to get data for, put into a collection
        MSXML::IXMLDOMNodeListPtr pNodeList = pXMLDoc->selectNodes(”/
            stocks/symbols”);
        if (pNodeList)
        {
            for(int lcv=0; lcv<pNodeList->length; lcv++)
            {
                    MSXML::IXMLDOMNodePtr pNode = pNodeList->item[lcv];
                    _bstr_t symbol = pNode->text;
                    m_pCollection->AddItem(_variant_t(symbol);
                }
            }
        };
        //Implementation of the ISequoiaAgent interface
        STDMETHODIMP CMyAgent::Process(IDispatch * Context, VARIANT_BOOL *
        bResult)
        {
            _bstr_t strResult(“”)
            //Create the output of the CDA
            strresult += “<SCRIPT language=“JavaScript”>”
            strresult += strresult & “function submitForm( ){”
            strresult = strresult & “if (ValidateSymbolPresence( )){”
            strresult = strresult & “document.frmQuote.submit( );”
            strresult = strresult & “return true;}”
            strresult = strresult & “else{”
            strresult = strresult & “return false;”
            strresult = strresult & “}”
            strresult = strresult & “}”
            strresult = strresult & “function ValidateSymbolPresence( )”
            strresult = strresult & “{”
            strresult = strresult & “var OK = true;”
            strresult = strresult & “if (document.frmQuote.Symbol.value == ”)”
            strresult = strresult & “{”
            strresult = strresult & “alert(‘Please enter a symbol...’);”
            strresult = strresult & “OK = false;”
            strresult = strresult & “document.frmQuote.Symbol.focus( );”
            strresult = strresult & “} return(OK);”
            strresult = strresult & “}”
            strresult = strresult & “</SCRIPT>”
            strresult = strresult & “<FORM action=”“http://host.cnbc.com/
            jetson/Symbol_Go_Box.html”“ target=”“_new”“ method=”“post”“
            name=”“frmQuote”“ onSubmit=”“return ValidateSymbolPresence( )”“>”
            strresult = strresult & “<TABLE>”
            strresult = strresult & “<TR>”
            strresult = strresult & “<TD>”
            strresult = strresult & “<A HREF=”“http://www.cnbc.com/home.html”“
            target=”“_blank”“><IMG SRC=”“images/cnbc4.GIF”“ width=”“151”“
            height=”“71”“ border=”“0”“></A></TD>”
            strresult = strresult & “<TD valign=middle>QUOTE BOX</TD></TR></
            TABLE>”
            strre sult = strresult & “Enter company name or symbol(s):<BR>”
            strresult = strresult & “<INPUT size=”“30”“ name=Symbol
            value=”“”“>”
            strresult = strresult & “&nbsp;&nbsp;<A HREF=”“#”“
            onClick=”“submitForm( )”“>Go</a>”
            strresult = strresult & “</FORM>”
            // extract the Response object from the context
            CONTEXTLib::ISequoiaContextPtr pContext(Context);
            CONTEXTLib::ISequoiaResponsePtr pResponse(pContext->Response);
            // Write the result to the Response object
            pResponse->Write(strResult);
            *bResult = VARIANT_TRUE;
            return S_OK;
    }
  • To reduce reprocessing of frequently accessed but infrequently changing information, the communications module 200 supports per-user and global caching. In one embodiment, per-user caching causes the communications module 200 to present the same information in response to a request from a user until the lapse of a predetermined time period. In another embodiment, the communications module 200 suppresses requests to a CDB 204 until the lapse of the predetermined time period.
  • In an embodiment without caching, the communications module 200 invokes a CDB 204 to check a user's accounts for e-mail upon receipt of each and every HTTP REFRESH request from a user's web browser, even though e-mail tends to arrive infrequently. In another embodiment, a privileged user enables per-user e-mail caching, setting a timer to check for new e-mail every 10 minutes. A first request to the communications module 200 invokes a CDB 204 to retrieve e-mail headers, presenting this information to the user. Subsequent requests for e-mail data will only return the information cached by the communications module 200 until 10 minutes have passed since the first request.
  • Global caching operates in a similar fashion, save that the communications module 200 maintains one identical copy of data for all users of the system. Therefore, global caching is ideally suited for applications such as company newsletters, news headlines, and local time and weather information.
  • In one embodiment, all communications to and from the communications module 200 take the form of messages using a platform independent extendible markup language such as XML. However, most client devices 100 such as web browsers or wireless-aware cell phones do not directly support XML. In one embodiment, a bridging mechanism converts an HTTP request into an XML request. In one embodiment, this functionality is provided by a specialized DLL that translates between the two types of requests. In another embodiment, this functionality is provided by an active server page (ASP), permitting a designer to modify the XML messages sent to the communications module 200 or the HTTP responses and cookies sent to the client device 100. In another embodiment, a second DLL provides functionality to transfer binary files as Multipurpose Internet Mail Extensions (MIME) encoded files.
  • The following is an exemplary XML message translated by the translation functionality from an HTTP request and sent to PS 216:
                <cds>
                    <sequoia>
                        <app.server>
                            <configspace>seqportal</configspace>
                            <sessionid>A8E206DA-73A2-11D4-BA33-
    0050DA306FA2</sessionid>
                        </app.server>
                    </sequoia>
                <messageid>20000817170906</messageid>
                <routeinfo>
                    <sent/>
                    <expire/>
                    <to/>
                <from/>
                </routeinfo>
                <attachments/>
                <body>
                    <sequoia.request hostname=“h_rose” type=“HTML”>
                        <data name=“clientcertificate”/>
                        <data name=“form”>
                            <item key=“SUBMIT”>Search</item>
                            <item key=“empName”>Hannah Rose</item>
                        </data>
                        <data name=“querystring”>
                            <item key=“page”>home</item>
                            <item key=“cdaid”>{A5DBC0E4-0F42-11D4-
                               8FF1-0050DA2FEE7E}|Search Employee</item>
                            <item key=“action”>doSearch</item>
                        </data>
                        <data name=“servervariables”>
                            <item key=“ALL_HTTP”>HTTP_ACCEPT:*/*
                                HTTP_ACCEPT_LANGUAGE:en-us
                                HTTP_CONNECTION:Keep-Alive
                                HTTP_HOST:h_rose
                                HTTP_REFERER:http://h_rose/seqportal/cds/
            host.asp?page=home&amp;cdaid={A5DBC0E4-0F42-
                                    11D4-8FF1-0050DA2FEE7E}|
                                    Search Employee&amp;action=default
                                    HTTP_USER_AGENT:Mozilla/4.0
    (compatible;
                                    MSIE 5.01; Windows NT)
            HTTP_COOKIE:h%5Frose%5Fseqportal%5Fcds%
            5FSession%5FID=A8E206DA%2D73A2%2D11D4%
                                    2DBA33%2D0050DA306FA2
                                HTTP_CONTENT_LENGTH:26
                                HTTP_CONTENT_TYPE:application/x-www-form-
    urlencoded
                                HTTP_ACCEPT_ENCODING:gzip, deflate
                            </item>
                            <item key=“ALL_RAW”>Accept: */*
                                Accept-Language: en-us
                                Connection: Keep-Alive
                                Host: h_rose
                                Referer: http://h_rose/seqportal/cds/
                                host.asp?page=home&amp;cdaid={A5DBC0E4-
    0F42-11D4-
                                8FF1-0050DA2FEE7E}|Search Employee&amp;
                                action=default User-Agent: Mozilla/4.0
                                (compatible; MSIE 5.01; Windows NT)
                                Cookie: h%5Frose%5Fseqportal%5Fcds%
                                5FSession%5FID=A8E206DA%2D73A2%
                                2D11D4%2DBA33%2D0050DA306FA2
                                Content-Length: 26
                                Content-Type: application/x-www-form-urlencoded
                                Accept-Encoding: gzip, deflate</item>
                            <item key=“APPL_MD_PATH”>/LM/W3svc/1/root
                                /SeqPortal</item>
                            <item key=“APPL_PHYSICAL_PATH”>
                                C:\Inetpub\wwwroot\SeqPortal\</item>
                            <item key=“AUTH_PASSWORD”></item>
                            <item key=“AUTH_TYPE”></item>
                            <item key=“AUTH_USER”></item>
                            <item key=“CERT_COOKIE”></item>
                            <item key=“CERT_FLAGS”></item>
                            <item key=“CERT_ISSUER”></item>
                            <item key=“CERT_KEYSIZE”></item>
                            <item key=“CERT_SECRETKEYSIZE”></item>
                            <item key=“CERT_SERIALNUMBER”></item>
                            <item key=“CERT_SERVER_ISSUER”></item>
                            <item key=“CERT_SERVER_SUBJECT”></item>
                            <item key=“CERT_SUBJECT”></item>
                            <item key=“CONTENT_LENGTH”>26</item>
                            <item key=“CONTENT_TYPE”>application/x-www-form-
    urlencoded</item>
                            <item key=“GATEWAY_INTERFACE”>CGI/1.1</item>
                            <item key=“HTTPS”>off</item>
                            <item key=“HTTPS_KEYSIZE”></item>
                            <item key=“HTTPS_SECRETKEYSIZE”></item>
                            <item key=“HTTPS_SERVER_ISSUER”></item>
                            <item key=“HTTPS_SERVER_SUBJECT”></item>
                            <item key=“INSTANCE_ID”>1</item>
                            <item
    key=“INSTANCE_META_PATH”>/LM/W3SVC/1</item>
                            <item key=“LOCAL_ADDR”>255.255.10.10</item>
                            <item key=“LOGON_USER”></item>
                            <item key=“PATH_INFO”>/seqportal/cds/host.asp</item>
                            <item
    key=“PATH_TRANSLATED”>C:\Inetpub\wwwroot\SeqPortal\cds\host.asp</item>
                            <item
    key=“QUERY_STRING”>page=home&amp;cdaid={A5DBC0E4-0F42-11D4-8FF1-
            0050DA2FEE7E}|Search%20Employee&amp;action=doSearch</item>
                            <item key=“REMOTE_ADDR”>255.255.10.10</item>
                            <item key=“REMOTE_HOST”>255.255.10.10</item>
                            <item key=“REMOTE_USER”></item>
                            <item key=“REQUEST_METHOD”>POST</item>
                            <item key=“SCRIPT_NAME”>/seqportal/cds/host.asp</item>
                            <item key=“SERVER_NAME”>h_rose</item>
                            <item key=“SERVER_PORT”>80</item>
                            <item key=“SERVER_PORT_SECURE”>0</item>
                            <item key=“SERVER_PROTOCOL”>HTTP/1.1</item>
                            <item key=“SERVER_SOFTWARE”>Microsoft-IIS/4.0</item>
                            <item key=“URL”>/seqportal/cds/host.asp</item>
                            <item key=“HTTP_ACCEPT”>*/*</item>
                            <item key=“HTTP_ACCEPT_LANGUAGE”>en-us</item>
                            <item key=“HTTP_CONNECTION”>Keep-Alive</item>
                            <item key=“HTTP_HOST”>h_rose</item>
                            <item
    key=“HTTP_REFERER”>http://h_rose/seqportal/cds/host.asp?page=home&amp;
                                cdaid={A5DBC0E4-0F42-11D4-8FF1-
    0050DA2FEE7E}|Search Employee&amp;
                                action=default</item>
                            <item key=“HTTP_USER_AGENT”>Mozilla/4.0(compatible;
    MSIE 5.01; Windows
                                NT)</item>
                            <item
    key=“HTTP_COOKIE”>h%5Frose%5Fseqportal%5Fcds
            %5FSession%5FID=A8E206DA%2D73A2%2D11D4%
                                2DBA33%2D0050DA306FA2</item>
                            <item key=“HTTP_CONTENT_LENGTH”>26</item>
                            <item key=“HTTP_CONTENT_TYPE”>application/x-www-
    form-
                                urlencoded</item>
                            <item key=“HTTP_ACCEPT_ENCODING”>gzip,
    deflate</item>
                            </data>
                            <data name=“cookies”/>
                        </sequoia.request>
                    </body>
                </cds>
  • Note that the individual component fields of the translated message typically take the form:
    <data name=” data_type”>
    <item key=” key_name”> key_value</item>
    </data>
  • where the key value can be any of a form variable, a query string, or a server variable.
  • Similarly, the following is an exemplary XML message for transmission from communications module 200 to client device 100:
    <result>
        <number>3</number>
        <anchor>http://training15/smartsummary/getContent.asp
            ?dsn=xassummaries&amp;provider=MSDASQL.1&amp;
            username=sa&amp;password=&amp;
            query=select+summary+from+PHONELISTKeys&amp;
            FileType=xml&amp;index=2
        </anchor>
        <anchor.text>
            <![CDATA[
                http://training15/smartsummary/
                    getContent.asp?dsn=xassummaries&amp;
                    provider=MSDASQL.1&amp;username=sa&amp;
    password=&amp;query=select+summary+from+PHONELISTKeys
                    &amp;FileType=xml&amp;index=2
                ]]>
            </anchor.text>
            <source.server>Enterprise</source.server>
            <summary>
                <![CDATA[
                    <A HREF=“javascript:showStyledDoc
                    (&quot;http://training15/smartsummary/
                    getContent.asp?dsn=xassummaries&amp;
                    provider=MSDASQL.1&amp;username=sa&amp;password=
                    &amp;query=select+summary+from+PHONELISTKeys
                    &amp;FileType=xml&amp;index=2&quot;);”>
                    Styled Document Goes Here
                    </A>
                    <BR/>
                        Customer Service<BR/>
                    <font color=“#999999”>
                    Summary Info Goes Here
            ]]>
        </summary>
        <display.name></display.name>
        <relevance></relevance>
        <docid></docid>
    </result>
  • The translation functionality strips the encapsulating XML tags from the message and sends the HTML information embedded within the CDATA section.
  • The <anchor.text> tag contains a link to a SmartSummary, a particular type of CDB 204. A SmartSummary CDB 204 presents a user with a convenient interface for a large, disparate set of data sources by organizing the data around a common object or entity. In one embodiment, the PS system 216 is deployed in a hospital environment. Physician users of the system treat patients for various illnesses. An individual patient is associated with entries in tens of data sources scattered across the hospital or managed care group to which the hospital belongs. These sources include, but are not limited to, admitting records, contact and insurance information, transplant reports, radiology reports, laboratory reports, and transcriptions. The efficiency and quality of treatment would be impaired if the physician was required to spend significant amounts of time to locate the records she needs to treat a patient.
  • The SmartSummary CDB 204 accepts a patient name from a physician and, in one embodiment, invokes a business flow on IS module 208. The flow launches tens of assimilation agents 212 to access all relevant databases, returning information concerning the patient to the IS module 208. The IS module 208 aggregates this data and sends it to the communications module 200 for communication to the physician through her client device 100. This presents the physician with a single configurable screen displaying all the data associated with a patient. Similar implementations of SmartSummary lend themselves to implementation in a finanacial context, where it is desirable to aggregate data concerning credit ratings, purchasing power, outstanding debt, and purchase histories, or in any other context where disparate data sources are naturally organized around a single person or entity.
  • In another embodiment, the SmartSummary CDB 204 interfaces with a database to retrieve data associated with a person or entity instead of launching assimilation agents 212 to gather data. Typically, receiver agents or spider agents (see below) accept patient data from documents containing patient data that are submitted to the system. In one embodiment, the documents are parsed into individual data elements, which are stored in the database. When the user requests a SmartSummary, the SmartSummary CDB 204 is launched and it retrieves the appropriate information from the database. In one embodiment, this retrieval is accomplished using an assimilation agent 214.
  • CDBs 204 interface with IS module 208, conveying information from it to communications module 200 for display to the end user on client device 100. If a purely graphical display feature is desired, the CDB 204 may be configured to interact with a “null” data source. For example, if a designer wishes to present a tabbed window interface appearance to an end user, the designer provides a first CDB 204 to create a header frame and a footer frame on the display and a second CDB 204 to draw a tabbed window interface in the header frame.
  • In one embodiment, the CDB 204 is a software object with various object properties that permit its customization. In one embodiment, the CDB 204 includes properties that control whether an end user can personalize the CDB 204, specify a minimum size for the display of content from the CDB 204, specify the maximum number of times that a CDB 204 can appear on a webpage, and specify whether the CDB 204 refreshes its content on every page request.
  • In some embodiments, the CDB 204 is script-based. The software designer implements the CDB 204 using VBScript, JScript, Perl, or other scripting languages known to one of ordinary skill in the art. In other embodiments, a CDB 204 is a component-object model (COM) dynamically-linkable library (DLL) developed using programming tools such as VISUAL BASIC STUDIO or VISUAL C++ STUDIO from Microsoft Corporation of Redmond, Wash. In other embodiments, the CDB 204 takes the form of other computer-executable software objects known to one of ordinary skill in the art.
  • The CDB 204 typically supports at least two methods. A first “Configure” method controls the initialization of the CDB 204. A second “Process” method performs whatever transactions or processing the designer wishes the CDB 204 to perform.
  • In one embodiment, the software designer uses a set of template files to simplify the coding of CDB 204. The user edits the template files to supply code implementing the desired CDB functionality and compiles the code into a machine-executable program or DLL.
  • The template files typically include definitions for one or more software sub-objects that a designer may wish to implement in the CDB 204. These sub-objects include but are not limited to application-specific dictionary sub-objects for the storage of data specific to a particular CDB 204, audit trail sub-objects, request sub-objects to contain the parameters associated with incoming requests to the CDB 204, response sub-objects for outgoing responses from the CDB 204, session sub-objects for the storage of session-specific data, cookie sub-objects for the storage of data for use as cookies on a client device 100, header sub-objects to permit the communications module 200 to maximize, minimize, close and refresh a window, user sub-objects to store user-specific settings for communications module 200, and personalize sub-objects to store a user's customizable pages and theme preferences. A designer simply deletes the definitions for sub-objects that the CDB 204 will not utilize.
  • In some embodiments, PS 216 also includes a set of specialized data sources in data tier 116. One specialized data source is taxonomy. A taxonomy imposes multiple, arbitrary, hierarchical structures upon an arbitrary data set. Typical taxonomies would include a database of customer records that can be selectively organized by employer, or a database of digitally-formatted music that can be selectively organized by artist, album title, or publisher.
  • PS Interface with Information Sources
  • CDBs 204 and conduits 112 provide what is typically referred to as “pull” assimilation agents: they retrieve information from sources in response to user actions such as a login, a mouse click, a button press, or another user-driven event. It is also desirable that third-party information providers have a mechanism to supply information to an embodiment of the present invention for display to a user at intervals controlled by the information provider, instead of the user of the PS 216. This model of information service is typically referred to as a “push” information service. FIG. 3 illustrates how several push information services interact with an embodiment of the present invention, permitting third-party information providers to supply the system with information at their option.
  • A receiver agent 300 accepts communications from third-party trading partners 304 in a variety of protocols. These protocols include but are not limited to file transfer protocol (FTP), post-office protocol, version 3 (POP3), common-object model (COM) messaging, and HTTP. As illustrated, a receiver agent 300 typically includes a module for each supported protocol. Some embodiments feature modules that support one or more protocols, especially when those protocols are substantially similar. In other embodiments, receiver agent 300 takes the form of a set of receiver agents 300′, with each receiver agent 300′ supporting one or more individual protocols. Like the other software components of the embodiments of the present invention, receiver agent modules may be implemented as active server pages, COM DLLs, or executable files using commercially-available software development tools, as described above.
  • Each receiver agent module accepts a message in a given protocol and encapsulates it in a platform-neutral extendible markup language such as XML. This encapsulated message is suited to subsequent asynchronous or synchronous processing at the option of the designer. If the designer elects asynchronous processing, the receiver agent 300 delivers the encapsulated message to message queue 308 for later processing by message processor 312. If the designer elects synchronous processing, the receiver agent 300 transfers the encapsulated message directly to the receiver agent 300 for COM messaging. In another embodiment, the receiver agent 300 routes messages directly to the agent server 604, as discussed below.
  • Similar to receiver agents 300, spider agents 316 execute data source adapters (DSAs) either on a periodic, scheduled basis or on an aperiodic, as-needed basis. Individual DSAs initiate communications with a remote data source using a particular protocol hard-coded into the DSA. Typical protocols include but are not limited to FTP, HTTP, structured query language (SQL), and open database connectivity (ODBC) protocol. Each DSA encapsulates its retrieved information in a platform-neutral extensible markup language such as XML before routing it to a queue 308 for later processing by message processor 312.
  • Exemplary uses of a DSA include: accessing a data source, retrieving data, retrieving metadata, or maintaining index logs of events related to the spidering process. The DSA itself typically includes configuration information such as authentication credentials, targets for information storage and retrieval (including but not limited to pathnames, uniform resource locators (URLs), and IP addresses), and the maximum link depth for traversal of a data source.
  • In one embodiment, a DSA is a COM DLL, designed and compiled using commercially-available tools as described above. In another embodiment, a DSA supports methods included but not limited to a method to return the children of a data source, a method to retrieve data from a temporary file, a method to write data to a temporary file, a method to obtain configuration values for the DSA, a method to log the DSA's data-gathering activities, and a method to retrieve metadata values.
  • Sender agents 324 provide the PS 216 with one or more methods to communicate with a third party, not necessarily a user of the PS 216, via the third party's communication device. Typically, each sender agent 324 is adapted to communicate with a client device 100 using network 104 using a particular method or protocol. In one embodiment, PS 216 invokes a sender agent 324 that utilizes simple mail transfer protocol (SMTP) to convey information to client device 100: PS 216 sends a message and information identifying the recipient of the message to the sender agent 324. The sender agent 324 opens a connection to network 104 and sends the message to the user, where it eventually arrives at the user's client device 100. In other embodiments, sender agent 324 initiates a telephone call to the third party and uses a combination of computer-generated speech and speech recognition to deliver information to the third party. In another embodiment, sender agent 324 sends a wireless page to the third party's pager or page-equipped cell phone.
  • Receiver agents 300, spider agents 316, and sender agents 324 are characterized by their extendible, open architectures. As new protocols are developed for use by a receiver agent 300, spider agent 316, or sender agent 324, a user writes a new protocol module to translate or encapsulate the new protocol in the platform-neutral extendible markup language utilized by the components of PS 216.
  • The message processor 312 periodically reviews one or more queues 308 for messages received from receiver agents 300, spider agents 316, or other sources. In one embodiment, the message processor 312 retrieves any available messages in first-in/first-out (FIFO) order for processing. In another embodiment, if a message is available for processing, the message processor 312 queries the IS module 208 to determine whether the IS 208 is busy, backlogged, or idle. If the IS module 208 is idle, the message processor 312 removes a message from the queue 308 and sends it to the IS module 208 for processing.
  • Business Flow Processing
  • Referring to FIG. 2, the IS module 208 interacts with information sources in data tier 116 through assimilation agents (AAs) 212. In one embodiment, IS module 208 includes a flow designer that permits a designer to graphically implement complex processes conditionally processing and routing information between AAs 212 and CDBs 204. These graphically-depicted processes are referred to as “business flows,” because they typically model a real world decision-making or business process.
  • In one embodiment, business flows control the transmission and receipt of information among AAs 212, CDBs 204, and communications module 200 by performing actions and evaluating conditional statements. A sample business flow could respond to a user's invocation of a search CDB 204 by searching the user's Outlook's contacts, querying an LDAP server, posting a form to the ANYWHO webserver provided by AT&T Corporation of New York, N.Y., and querying an X.500 database, ending the chain of events prematurely if any one of the individual queries yielded the desired result.
  • In one embodiment, the tool used to create a business flow is a WYSIWIG (“what-you-see-is-what-you-get”) object-oriented drawing tool such as VISIO from Microsoft Corporation of Redmond, Wash. In another embodiment, the flow designer is a specialized WYSIWIG object-oriented drawing tool that converts the designer's drawings into a series of conditional statements suited to automated execution.
  • In one embodiment, ovals in the flow signify starts and stops in the process. In another embodiment, diamonds in the flow signify conditional tests, whose satisfaction or failure changes which steps are subsequently executed. In yet another embodiment, straight lines are implemented as conditional tests whose condition is always satisfied.
  • In one embodiment, a user connects to the XP system 216, authenticates her identity, receives a rendered webpage composed of the results from her associated CDBs 204, and interacts with content on the webpage by entering information into a dialog box and clicking a button. A dispatcher instantiates the IS module 208 to receive the entered information passed from the user through another CDB 204′.
  • The IS module 208 loads a predetermined business flow from a file, a database or other persistent storage. In one embodiment, the business flow is associated with the individual user. In another embodiment, the business flow is associated with the user's group, position, or another taxonometric characteristic, such as her purchasing privileges. In another embodiment, the IS module 208 selects a flow or script from a group of flows or scripts in response to metadata or other information contained in the information received from CDB 204.
  • With the business flow loaded, IS module 208 executes the flow sequentially from start to finish, taking actions and evaluating conditional statements that may affect actions subsequently performed. The IS module 208 retrieves and processes information from message processor 312 and one or more of the AAs 212 on an as-needed, step-by-step basis. IS module 208 provides the processed information to CDB 204 for display on client device 100 or, when appropriate, to sender agent 324 for delivery to another individual.
  • Assimilation agents (AAs) 212 are similar to receiver agents, spider agents, and sender agents in that they provide a designer with convenient mechanisms to interface IS module 208 with various information sources. For example, a user can add the equivalent of a sender agent using FTP protocol by creating an AA 212 to launch an FTP client program, connect with an FTP site, supply an authorized logon credential, and then upload information to the site using FTP. However, AAs 212 typically provide advanced processing functionality, for example, filtering or otherwise preprocessing information before its receipt by IS module 208.
  • In one embodiment, AAs 212 provide bidirectional communication with the information sources they interface with. The AA 212 not only retrieves information from the information source, it also receives information from the IS module 208 or end user and applies it to the information source, modifying or updating the information source.
  • In one embodiment, AAs 212 are script-based. In another embodiment, AAs 212 are component-object model (COM) objects, such as COM dynamically-linked libraries (DLLs) or executable files. In one embodiment, an AA 212 object supports at least two methods: a first method to initialize the AA 212 and a second method to perform whatever processing the designer wants the AA 212 to perform. The output of an AA 212 is typically encapsulated in a platform-independent, extendible markup language such as XML.
  • AAs 212 can be created and deployed using a variety of software tools. In some embodiments, an object designer uses VISUAL BASIC STUDIO or VISUAL C++ STUDIO from Microsoft Corporation of Redmond, Wash. A user specifies a name and a threading model (e.g., single-threaded, “apartment”-threaded, etc.) for the AA 212. The programming system provides a series of template files configured to match the specified name and threading model. The user edits the template files to supply code implementing the desired AA functionality and compiles the code into a machine-executable program or DLL. The user may also add labels or icons for use in IS module 208, or other snap-in extensions.
  • Typically, template files include definitions for one or more software sub-objects that a user may wish to implement in an AA 212. These sub-objects include but are not limited to application-specific dictionary sub-objects for the storage of data specific to a particular AA 212, audit trail sub-objects, message sub-objects for outgoing messages sent by the AA 212 to a clipboard memory, request sub-objects to contain the parameters associated with incoming requests to the AA 212, response sub-objects for outgoing responses from the AA 212, and session sub-objects for the storage of session-specific data. A designer simply deletes the definitions for sub-objects that the AA 212 will not utilize.
  • Code for an illustrative AA 212 that checks a document into a repository follows:
            <%
                Option Explicit
                ‘----- Variable Declarations -----’
                Dim objServer
                Dim oInterchange, oStatus
                Dim sDocType, sRepServer, sFileLoc, sFileName
                Dim sUserID, sAction, sTitle, IFound
                Dim sQuery, sDocId
                Dim metadata, element
                Dim pDOM, newDoc
                On Error Resume Next
                ‘----- Begin Code ------’
                Set pDOM = Request.DOMDocument
                Set objServer = CreateObject(“Sequoia.HTMLServer.1”)
                With objServer
                    sAction =
    UCase(.HTMLDecode(pDOM.SelectSingleNode(“/hyperpublish_original/action”).text))
                    sDocType =
    .HTMLDecode(pDOM.SelectSingleNode(“/hyperpublish_original/metadata[@fieldname=‘DOC_TYPE’]”).text)
                    sRepServer =
    .HTMLDecode(pDOM.SelectSingleNode(“/hyperpublish_original/reposerver”).text)
                    sFileLoc =
    .HTMLDecode(pDOM.SelectSingleNode(“/hyperpublish_original/fileloc”).text)
                    sFileName = Right(sFileLoc, Len(sFileLoc) − InStrRev(sFileLoc, “\”))
                    sUserID =
    .HTMLDecode(pDOM.SelectSingleNode(“/hyperpublish_original/userid”).text)
                End With
                If (sAction = “CHECKIN” Or sAction = “METASAVE”) Then
                    Set oInterchange = CreateObject(“Sequoia.InterchangeServer.1”)
                    If Not (oInterchange Is Nothing) Then
                        Set oStatus = oInterchange.Connect(sRepServer)
                        If oStatus.StatusNumber <> 0 Then
                            Response.Write “Unable to connect to repository.”
                        End If
                    Else
                        Response.Write “Unable to instantiate repository.”
                    End If
                End If
                If oStatus.StatusNumber = 0 Then
                    If (sAction = “CHECKIN”) Then
                        With oInterchange
                            .user = UCase(sUserID)
                            .CreateDoc sDocType, newDoc
                        End With
                        newDoc.localFileName = sFileLoc
                        Set metadata = pDOM.getElementsByTagName(“metadata”)
                        For Each element In metadata
                         With element
                            ‘If no title is provided, use the original filename’
                            If UCase(.attributes.getNamedItem(“fieldname”).text) =
    “TITLE” Then
                                If Trim(.text) = “” Then.text = sFileName
                                sTitle = .text
                            End If
                            newDoc.SetIndexFieldValue
    .attributes.getNamedItem(“fieldname”).text, .text
                         End With
                        Next
                        ‘set OFN index field & check in’
                        With newdoc
                            .setindexfieldvalue “OFN”, sFileName
                            .AutoDelete = false
                            Set oStatus = .CheckIn
                        End With
                        If oStatus.statusNumber <> 0 Then
                            Response.Write “Unable to check in document.” &
                                “Please make sure index field values and the
    document filename do not include ampersand characters.”
                        Else
                            newDoc.Refresh
                            ‘Append Title and DocID to original message’
                            With pDOM
            .documentelement.appendChild(pDOM.createElement(“docid”))
            .SelectSingleNode(“/hyperpublish_original/docid”).text = sTitle & “∥” & newDoc.DocID
                            End With
                        End If
                        Set newDoc = Nothing
                        Call oInterchange.Disconnect
                    End If
                End If
                Set objServer = Nothing
                Set oStatus = Nothing
                Set newdoc = Nothing
                Set oInterchange = Nothing
                Set element = Nothing
                Set metadata = Nothing
                Set pDOM = Nothing
                ‘Check if an error occurred - if so, replace original message with a dummy error
    message.’
                ‘The dummy message will force the following decision point to route to a dummy error
    script,’
                ‘causing flow execution to stop.’
                ‘(Definition) An error has occurred if there is text on the response buffer.’
                If Trim(Response.Read) <> “” Then pDOM.loadXML(“<error>Source:
    RepositoryCheckIn Script</error>”)
            %>
  • Sample Display on Client Device
  • FIG. 4 illustrates a sample display presented on a client device to an end user interacting with one embodiment of the present invention. This discussion is meant to illustrate the operation of one embodiment of the present invention, not to limit the scope of the invention as claimed.
  • User Jen Spiegel, an employee of the Human Resources department, has completed the authentication process with the security broker as described above. Her personalized set of CDBs has been invoked, and the results aggregated by communications module for presentation to the web browser on her desktop computer.
  • The user has personally selected some of her CDBs, such as the “Sports Scores” CDB, whose output appears at 400. Other CDBs are automatically available to all employees, such as the “Weather” CDB, whose output appears at 404. Still other CDBs, such as the “Mail” CDB (whose output appears at 408) are available to the user by virtue of her membership in the group of users “Human Resources.”
  • A CDB has drawn the tabbed window interface 412 at the top of the figure. Using these tabs, the user can distribute her CDBs among multiple windowed views, with the components of each view sharing some common taxonometric trait or having a common role appropriate to the institution employing the user. Each CDB whose output is visible on the “Home” page has its properties set to permit the user to customize its appearance. For example, a sub-object in each of the onscreen CDBs permits the user to minimize the appearance of the CDB or edit its settings, such as its size and layout. The designer, who has selected the CDBs that are available to User Spiegel and other users, has enabled per-user and global caching where appropriate. For example, the user's “Mail” CDB is set to per-user caching of 10 minutes, so that the CDB will only check for e-mail in her accounts on various servers scattered across the organization every 10 minutes. Specifying the magnitude of the delay, and in some embodiments the start time for measuring the delay, helps the site administrator balance the load on the POP3 servers the organization uses to administer mail services. Similarly, global caching has been enabled for the “Headlines” CDB (whose output appears at 416), ensuring that every user of the “Headlines” CDB receives the same set of news headlines.
  • It is important to note that the user sees the results of invoking the software objects that are the CDBs, translated into an appropriate format for her client device. That is, although the user sees the output of the “Weather” CDB 404, the user does not directly see the “Weather” CDB itself.
  • Illustrative Deployment of XPS System
  • FIG. 5 depicts a typical business process modeled in the IS module and invoked by a user from a CDB with an input form present on the user's webpage. Again, this discussion is meant to illustrate the operation of one embodiment of the present invention, not to limit the scope of the invention as claimed.
  • A system designer has met with ACME Manufacturing Company, a hypothetical business entity, to discuss the automation of the purchase order process. The designer and her team has met with various members of ACME's management team, the accounting department, and employees with responsibility for ordering supplies.
  • The system designer has distilled the process for ordering supplies into a grpahical flowchart presented in FIG. 5. First, an employee with purchasing responsibility completes a purchase order form, entering information including but not limited to desired items for purchase, desired quantities, quoted prices, and shipping information (Step 500). Through interoffice mail the form is routed to the accounting department, where it arrives two days later (Step 504). The next morning, a supervisor in the accounting department reviews the request, calls around to check the availability of her staff, and delegates the request to a particular employee for processing (Step 508). Two days later, the employee processes the request. After completing various phone calls to verify the necessity of the purchase order, the employee either approves or disapproves the purchase order (Step 512). If the request is disapproved, it is returned to the desk of the employee making the purchase order by interoffice mail, arriving some two days later (Step 516).
  • If the purchase order is approved, notification of approval is returned by interoffice mail to the employee making the purchase order, arriving some two days later (Step 520). The employee in accounting routes the purchase order to another member of the accounting staff to update the accounting mainframe to reflect the purchase (Step 524). Two days later, when the accounting system is updated, the purchase order is sent to the office supply vendor for fulfillment (Step 528).
  • Having studied this process, the system designer or her peers either implement a new embodiment of the invention or modifies an existing embodiment to provide the desired functionality. The system designer creates a Purchase Order (PO) CDB to provide a web-based purchase order form. The CDB is made available to individual users and groups with purchasing responsibilities. The system designer also codes an AA to interact with the accounting department's legacy mainframe system and a sender to send messages using SMTP. Work Queue CDBs are created for the accounting department and individual users in accounting, permitting the assignment of work to the department as a whole or to individual users, respectively. The system designer uses a WYSIWYG business flow tool to graphically implement the business process of FIG. 5, associating each step in the figure with an action or a decision.
  • The director of the Supplies Department connects to the PS system and updates his personalized webpages, placing the PO CDB next to the conduit that apprises him of the inventory in his warehouse and the CDB forecasts the supplies that his division of the company will use over the next week, keeping all of these CDBs on a tabbed window titled “Supplies.”
  • On a daily basis, the department supervisor checks the “Supplies” page. When the forecast CDB indicates that on-hand inventory will be exhausted in one month's time, the supervisor invokes the PO CDB. The supervisor enters the name of the supply needed, the quantity needed, and the date the supplies are required. The supervisor clicks a button and the PO CDB generates an HTTP request for transmission through the network. An intermediary DLL intercepts the HTTP request and converts it to an XML message, as described above.
  • The XML message is routed through the company network until it arrives at the communications module, where it is sent to the appropriate CDB. The CDB forwards the message to the IS module. The IS module examines the metadata contained in the message to determine that the XML message is a purchase order request. The IS module searches its library of business processes for the appropriate flow to handle purchase orders, which is the flow the designer has implemented based on FIG. 5.
  • Having received a purchase order (Step 500′), the IS module sends it to the Group Work Queue CDB for the accounting department (Step 504′). At this point, the IS module pauses its execution of the business flow until the purchase order is either accepted or rejected.
  • Members of the accounting department log in to the PS system and authenticate themselves. Each member of the accounting department has access to his or her own set of CDBs and the Group Work Queue CDB, which permits individual employees in the accounting department to assume responsibility for tasks delegated to the department as a whole. In this example, an accounting employee interacts with the Group Work Queue CDB and transfers the PO to her Personal Work Queue CDB for processing (Step 508′).
  • The transferred PO joins the other POs pending in the employee's personal work queue. The Personal Work Queue CDB graphically depicts the employee's outstanding assignments in a list. The employee selects each PO, which in turn invokes another CDB to graphically display the particulars of the PO alongside an APPROVE button and a DENY button (Step 512′). If the employee fails to approve or deny the PO within two days, or if the PO remains unassigned in the Group Work Queue CDB for more than a day, the appropriate CDB routes the PO to the Personal Work Queue for the head of the accounting department.
  • If the PO is denied, the CDB sends a message back to the IS module indicating the PO has been denied. The IS module resumes processing of the business flow, following the “DENIED” branch away from Step 512′. The IS module invokes a sender to notify the original employee responsible for the purchase order that the PO has been denied (Step 516′).
  • If the PO is approved, the CDB sends a message back to the IS module indicating the PO has been approved. The IS module resumes processing of the business flow, following the “APPROVED” branch. The IS module invokes a sender to notify the original employee responsible for the purchase order that the PO has been approved (Step 520′). The fields of the e-mail are generated through merging administratively-configured text with text from the purchase order. The “To” field is populated by the value of the PO message Xpath //requestor.email. The “Subject” field is always “Your supplies request has been approved.” The “Body” field is generated from the following administratively configured text: “Click <a href={MessageURL}>here</a> for PO#{//PO.Number}.” In some embodiments, a second sender is invoked to alert the Receiving department of the impending delivery of supplies.
  • The IS module invokes a custom AA to update the accounting department's legacy mainframe system (Step 524′). Once the system is updated, the IS module forwards the PO to another sender to convey the PO to the appropriate vendor (Step 528′). The sender waits for an acknowledgement from the vendor, which it will forward to the IS module. If the IS module does not receive an acknowledgement within 8 hours, the IS module will send a message to the Group Work Queue CDB for the information technology department for troubleshooting. If the sender receives a rejection from the vendor, the sender forwards the rejection to the IS module, which forwards it to the employee originally responsible for the purchase order.
  • Deployment of PS in a Load-Balanced Server Environment
  • As illustrated in FIG. 6, some embodiments of the present invention are deployed in a multi-server computing environment to improve performance and the ability to service user transactions. This computing environment typically includes one or more web server processes 600, one or more agent server processes 604, and a state server process 608.
  • One or more users interact with the system using one or more client devices 100. The client devices 100 typically interconnect with the server computers using network 104 that passes messages encoded in an agreed-upon protocol, as discussed above. The messages sent by client device 100 through network 104 arrive at one or more server computers for processing. The server computers run one or more computer programs providing web server functionality, agent server functionality, state server functionality, or other functionalities as discussed in greater detail below. In the embodiment of FIG. 6, these server processes are web servers 600 1, 600 2, and 600 N; agent servers 604 1 and 604 N; and state server 608. As understood by one of ordinary skill in the art, these disparate processes can execute concurrently on a single one-processor computer, multiple one-processor computers, a single multi-processor computer, multiple multi-processor computers, or any combination thereof. Moreover, the embodiment of FIG. 6 only depicts three web server processes, two agent server processes, and a single state server process to facilitate discussion. Embodiments of the claimed invention can assume configurations including any number of processes and any number of server computers. Therefore, this discussion should not be presumed to limit the scope of the claimed invention.
  • As FIG. 6 indicates, in one embodiment the various server processes have effectively bidirectional channels of communication permitting the passage of information between processes. The particular form of these channels will vary depending on the underlying hardware configuration executing the server processes. For example, if the server processes operate on a network of single-processor machines interconnected by a LAN, the channels can be packets transmitted in accord with Ethernet or Token Ring protocols. In another embodiment, only a subset of server processes include bidirectional channels of communications.
  • In one embodiment, each server process includes a load-balancing module with functionality to monitor the status of its own server process. In another embodiment, only a subset of the server processes include a load-balancing module. In one embodiment, the module determines whether its server process is operating on a transaction, has a backlog of transactions, or is presently idle. In another embodiment, the load-balancing module includes functionality to share its status with other load-balancing modules and functionality to query other load-balancing modules concerning their status.
  • In one embodiment, the messages passed through the network 104 are directed by a router to one or more computers running one or more web server processes 600. In another embodiment, the router first queries the web server processes 600 to identify the least-busy process before it routes the message, typically a HTTP GET request. After the least-busy web server process 600 has been identified, the message is routed to it.
  • The web server 600 parses the HTTP request and services it. In one embodiment, the load balancing module of web server 600 queries each agent server 604 to identify the least-busy agent server 604. The web server 600 passes the request to the least-busy agent server for servicing. In another embodiment, any agent server 604 may force an election at any time by broadcasting a request election datagram to all other agent servers 604. The election results are determined by a comparison of the set of election criteria which is transmitted within the request election datagram transmitted by the requesting agent server 604 with the set of election criteria maintained by each receiving agent server 604′. That is, the first election criterion from the datagram of the requesting agent server 604 is compared by the receiving node to the first criterion of the receiving agent server 604′. The highest ranking of the two criteria being compared wins the comparison and the agent server with that criterion wins the election. If the two criteria tie, then the next criteria are sequentially compared until the tie is broken. If server agent 604′ receiving the request election datagram has a higher election criteria than that received in the request election datagram, the agent server 604′ receiving the request election datagram issues its own request election datagram. If the receiving agent server 604′ has a lower election criteria than the criteria received in the request election datagram, the receiving agent server 604′ determines it is not the master agent server and attempts to determine which agent server 604 is the master agent server 604.
  • In one embodiment the criteria which determine the outcome of the election include: whether or not the agent server 604 is statically configured as a master network information server node; whether the agent server 604 has the higher software version number; and whether the agent server 604 is the longest running agent server 604. In one embodiment, the datagram structure for the election request includes an unsigned shortword for the agent server software version number, an unsigned shortword in which the bits are flags which designate whether the node is statically configured as a master agent server 604 and an unsigned longword containing the amount of time the agent server 604 has been running.
  • Periodically, the master agent server 604 may transmit a declare message to the other agent servers 604 declaring itself to be the master agent server 604. If another agent server believes itself to be a master agent server 604, the other agent server will request an election. In this way erroneous master agent servers 604 are detected and removed. In addition an election may also be requested: by any agent server 604 when that agent server 604 is instantiated or by any agent server 604 to whom the master agent server 604 has failed to acknowledge an update message. After an election has occurred and the new master agent server 604 has been determined, all the agent servers 604 wait a random period of time and then send a datagram to the master agent server 604 with its latest load information. When master agent server 604 receives an update datagram from a server agent, then the master agent server 604 may reply to the transmitting agent server with an acknowledgment. If the master agent server 604 fails to receive data from an agent server 604, then the master agent server 604 discards the old data from the agent server 604 after a predetermined amount of time.
  • If an agent server node does not receive an acknowledgment from the master agent server 604 after the agent server 604 has sent an update datagram, the agent server 604 retransmits the update datagram. The agent server 604 will attempt N retransmits (in one embodiment) before it assumes that the master agent server 604 has failed. When this occurs the agent server 604 transmits an election request. If the agent server 604 receives an acknowledgment, then it periodically updates the master agent server 604, in one embodiment every 5 to 60 minutes.
  • The agent server 604 typically includes a software dispatcher process capable of allocating memory, freeing memory, and instantiating and terminating software processes in allocated memory. The agent server 604 instantiates the software system of FIG. 2, including communications module 200, CDBs 204, IS module 208, and AAs 212.
  • The agent server 604 uses the state server 608 for the storage of persistent data values and information associated with requests sent to the web server 600. In one embodiment, the state server 608 includes a relational database for storing this information. Using state server 608 for the storage of information associated with ongoing requests permits load balancing with transactional granularity among agent servers 604. For example, if client device 100 sends multiple HTTP GET requests to the system of the present invention, each GET request can be translated into an XML message and routed by the web server process 600 to a different agent server 604. In one embodiment, each agent server 604 processes an isolated request as part of a related transaction by storing and retrieving information related to the transaction in state server 608.
  • In another embodiment, load balancing between agent servers 604 is implemented at the session level. When a user connects with the system, the least busy agent server 604 is identified. This least-busy agent server 604 is assigned to the user for the duration of her session: all of the user CDB's and other software processes are executed by that agent server. If the user ends her connection and reconnects lately, it is possible that a different agent server 604 will process her transactions.
  • After agent server 604 instantiates the components of the portal server (PS) system, the instantiated components, the web server 600, the agent server 604, and the state server 608 intercommunicate using messages in a platform-independent extendible markup language such as XML. Upon receiving a request from the end user's client device 100, the web server 600 typically encapsulates a business object such as a document in a markup language wrapper and passes it to the agent server 604. The agent server 604 relays the message to the dispatcher, which in turn relays it to the communications module for processing. In some embodiments, the dispatcher directly routes messages to IS module or an alternate processing engine (not shown). The dispatcher determines the target for transmitted messages by instantiating a rule-based processing engine that examines the contents of the message and makes routing decisions based on its contents. Upon completing service of the request, the agent server 608 proceeds to process the next request it receives.
  • In the interest of clarity, and not to limit the scope to the invention as claimed, the following example illustrates load-balancing among the web servers 600 and the agent servers 604 of FIG. 6. Referring to the example of FIG. 4, assume that user Jen Spiegel, an employee of the Human Resources department, has begun the authentication process as described above. The web server 600 1, which is hosting the user's session, polls agent servers 604 1 and 604 2 using a load-balancing module to identify the least-busy agent server. Whichever agent server is less busy is assigned the task of instantiating and running the communications module associated with the user's session. When the user begins the authentication process, the web server 100 1 polls agent servers 604 1 and 604 2 using a load-balancing module to identify the least-busy agent server. Whichever agent server is less busy is assigned the task of instantiating and running the security broker associated with the user's session. The process repeats itself for each module of the PS system 216 that requires instantiates and processor time. For example, when the user's list of conduits and CDBs is loaded, each conduit or CDB is potentially routed to a different machine to maintain an even load among agent servers 604.
  • It is possible to balance loads between agent servers 604 by dividing transactions into individual requests because state server 608 provides persistent storage for the state of the user's session. As each agent server 604 completes a request, it updates the session record on the state server 608 to reflect the completion of the transaction. Session storage on the state server 608 also increases the fault tolerance of the system, enabling the redeployment of computing tasks between agent servers 604 in the event of a failure of one or more agent servers 604.
  • Many alterations and modifications may be made by those having ordinary skill in the art without departing from the spirit and scope of the invention. Therefore, it must be expressly understood that the illustrated embodiment has been shown only for the purposes of example and should not be taken as limiting the invention, which is defined by the following claims. The following claims are thus to be read as not only literally including what is set forth by the claims but also to include all equivalent elements for performing substantially the same function in substantially the same way to obtain substantially the same result, even though not identical in other respects to what is shown and described in the above illustrations.

Claims (22)

1. Apparatus for the aggregation and display of information on a client device, said apparatus comprising:
a communications module delivering information to and receiving information from a client device;
an assimilation agent receiving information from at least one information source and encapsulating said information in a first wrapper using a platform-independent extendible markup language; and
an integration server in communication with said communications module and said assimilation agent, said integration server receiving said encapsulated information from said assimilation agent, said integration server comprising a rules engine for processing said encapsulated information in accord with a predefined set of rules and encapsulating the result in a second wrapper using a platform-independent extendible markup language, and said integration server providing said encapsulated result to said communications module.
2. The apparatus of claim 1 wherein said communications module delivers information to and receives information from said client device using one of hypertext markup language (HTML) and wireless markup language (WML).
3. The apparatus of claim 1 wherein said communications module delivers information customized according to a predefined profile.
4. The apparatus of claim 1 wherein said communications module delivers information customized according to the type of client device.
5. The apparatus of claim 1 wherein said communications module, said integration server, and said assimilation agent communicate using extensible markup language (XML).
6. The apparatus of claim 1 wherein said assimilation agent retrieves information from one of a SQL database, an Oracle database, a Domino database, a document repository, a SAP database, a computer in communication with the Internet, and an indexed database.
7. The apparatus of claim 1 further comprising:
a content delivery broker providing communications between said communications module and said integration server.
8. The apparatus of claim 7 wherein said communications provided by said content delivery broker utilize extensible markup language (XML).
9. The apparatus of claim 1 further comprising:
a receiver agent in communication with said integration server and receiving messages sent in a protocol.
10. The apparatus of claim 9 wherein said protocol is one of file transfer protocol (FTP), post office protocol, version 3 (POP3), hypertext transfer protocol (HTTP), Microsoft Message Queue protocol (MSMQ), simple mail transfer protocol (SMTP), Directory Polling, and component-object model messages (COM).
11. The apparatus of claim 1 further comprising:
a spider agent in communication with said integration server and initiating communications with a data source using a protocol.
12. The apparatus of claim 11 wherein said protocol is one of FTP, POP3, HTTP, MSMQ, SMTP, Directory Polling, and COM.
13. The apparatus of claim 1 further comprising:
a sender agent in communication with said integration server and sending messages using a protocol.
14. The apparatus of claim 14 wherein said protocol is one of FTP, POP3, HTTP, MSMQ, SMTP, Directory Polling, and COM.
15. A method for aggregating information from multiple sources for presentation to a user, said method comprising the steps:
(a) receiving, by an assimilation agent, information from at least one of a plurality of information sources;
(b) encapsulating, by the assimilation agent, said received information in a first wrapper using a platform-independent extensible markup language;
(c) transmitting, by the assimilation agent, said encapsulated information to an integration server;
(d) processing, by the integration server, said encapsulated information in accord with a predefined set of rules;
(e) encapsulating, by the integration server, the processed information in a second wrapper using a platform-independent extensible markup language;
(f) transmitting, by the integration server, the processed information to a communications module; and
(g) delivering, by the communications module, said processed information to a client device.
16. The method of claim 15 wherein step (g) comprises the steps:
(g-a) identifying at least one of the type of client device or the type of said processed information.
17. The method of claim 16 wherein step (g) further comprises the steps:
(g-b) selecting an XML style sheet based on the result of step (g-a); and
(g-c) completing said XML style sheet with said processed information.
18. The method of claim 17 wherein step (g) further comprises the step:
(g-d) transforming the result of step (g-c) to a form suitable for display on said client device; and
(g-e) providing the result of step (g-d) to said client device.
19. An article of manufacture having computer-readable program means embodied therein for aggregating information from multiple sources for presentation to a user, said article comprising:
computer-readable program means for receiving, by an assimilation agent, information from at least one of a plurality of information sources;
computer-readable program means for encapsulating, by the assimilation agent, said received information in a first wrapper using a platform-independent extensible markup language;
computer-readable program means for transmitting, by the assimilation agent, said encapsulated information to an integration server;
computer-readable program means for processing, by the integration server, said encapsulated information in accord with a predefined set of rules;
computer-readable program means for encapsulating, by the integration server, the processed information in a second wrapper using a platform-independent extensible markup language;
computer-readable program means for transmitting, by the integration server, the processed information to a communications module; and
computer-readable program means for delivering, by the communications module, said processed information to a client device.
20. The article of manufacture of claim 19 wherein said computer-readable program means for delivering, by the communications module, said processed information to a client device comprises:
computer-readable program means for identifying at least one of the type of client device or the type of said processed information.
21. The article of manufacture of claim 20 wherein said computer-readable program means for delivering, by the communications module, said processed information to a client device further comprises:
computer-readable program means for selecting an XML style sheet based on said at least one of the type of client device and the type of said processed information; and
computer-readable program means for completing said XML style sheet with said processed information.
22. The article of manufacture of claim 21 wherein said computer-readable program means for delivering, by the communications module, said processed information to a client device further comprises:
computer-readable program means for transforming said completed XML style sheet to a form suitable for display on said client device; and
computer-readable program means for providing said transformed style sheet suitable for display on said client device to said client device.
US10/905,508 2001-06-26 2005-01-07 Method and apparatus for extendible information aggregationand presentation Abandoned US20050198393A1 (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
US10/905,508 US20050198393A1 (en) 2001-06-26 2005-01-07 Method and apparatus for extendible information aggregationand presentation

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US09/891,821 US6886046B2 (en) 2001-06-26 2001-06-26 Methods and apparatus for extendible information aggregation and presentation
US10/905,508 US20050198393A1 (en) 2001-06-26 2005-01-07 Method and apparatus for extendible information aggregationand presentation

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
US09/891,821 Continuation US6886046B2 (en) 2001-06-26 2001-06-26 Methods and apparatus for extendible information aggregation and presentation

Publications (1)

Publication Number Publication Date
US20050198393A1 true US20050198393A1 (en) 2005-09-08

Family

ID=25398874

Family Applications (2)

Application Number Title Priority Date Filing Date
US09/891,821 Expired - Lifetime US6886046B2 (en) 2001-06-26 2001-06-26 Methods and apparatus for extendible information aggregation and presentation
US10/905,508 Abandoned US20050198393A1 (en) 2001-06-26 2005-01-07 Method and apparatus for extendible information aggregationand presentation

Family Applications Before (1)

Application Number Title Priority Date Filing Date
US09/891,821 Expired - Lifetime US6886046B2 (en) 2001-06-26 2001-06-26 Methods and apparatus for extendible information aggregation and presentation

Country Status (1)

Country Link
US (2) US6886046B2 (en)

Cited By (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20060230059A1 (en) * 2005-03-30 2006-10-12 International Business Machines Corporation Method and apparatus to select and deliver portable portlets
US20070056031A1 (en) * 2005-08-19 2007-03-08 Opnet Technologies, Inc. Automatic access to network devices using various authentication schemes
US20080065678A1 (en) * 2006-09-12 2008-03-13 Petri John E Dynamic schema assembly to accommodate application-specific metadata
US20080294513A1 (en) * 2007-05-23 2008-11-27 Buse Jr T Joseph Method of targeted marketing
US20090006432A1 (en) * 2007-06-27 2009-01-01 Bossong-Iselborn Claudia U Systems and methods for merging data into documents
US20100088363A1 (en) * 2008-10-08 2010-04-08 Shannon Ray Hughes Data transformation
US7937370B2 (en) 2000-09-22 2011-05-03 Axeda Corporation Retrieving data from a server
US7966418B2 (en) 2003-02-21 2011-06-21 Axeda Corporation Establishing a virtual tunnel between two computer programs
US20110179073A1 (en) * 2008-10-08 2011-07-21 Localize Direct Ab Method for Localizing Text in a Software Application
US8055758B2 (en) 2000-07-28 2011-11-08 Axeda Corporation Reporting the state of an apparatus to a remote computer
US8060886B2 (en) 2002-04-17 2011-11-15 Axeda Corporation XML scripting of SOAP commands
US8065397B2 (en) 2006-12-26 2011-11-22 Axeda Acquisition Corporation Managing configurations of distributed devices
US8108543B2 (en) 2000-09-22 2012-01-31 Axeda Corporation Retrieving data from a server
US8370479B2 (en) 2006-10-03 2013-02-05 Axeda Acquisition Corporation System and method for dynamically grouping devices based on present device conditions
US8406119B2 (en) 2001-12-20 2013-03-26 Axeda Acquisition Corporation Adaptive device-initiated polling
US20130283291A1 (en) * 2012-04-24 2013-10-24 Sap Ag Managing Business Process Messaging
CN109840298A (en) * 2018-12-29 2019-06-04 中国科学院计算技术研究所 The multi information source acquisition method and system of large scale network data
AU2018206754B2 (en) * 2005-10-11 2020-10-08 Becton Dickinson Infusion Therapy Systems Inc. Sequences for detection and identification of methicillin-resistant Staphylococcus aureus (MRSA) of MREJ types xi to xx
US10880271B2 (en) 2005-06-03 2020-12-29 Asavie Technologies Limited Secure network communication system and method

Families Citing this family (84)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6615189B1 (en) 1998-06-22 2003-09-02 Bank One, Delaware, National Association Debit purchasing of stored value card for use by and/or delivery to others
US7809642B1 (en) 1998-06-22 2010-10-05 Jpmorgan Chase Bank, N.A. Debit purchasing of stored value card for use by and/or delivery to others
US7660763B1 (en) 1998-11-17 2010-02-09 Jpmorgan Chase Bank, N.A. Customer activated multi-value (CAM) card
EP1188135A2 (en) 1998-12-23 2002-03-20 The Chase Manhattan Bank System and method for integrating trading operations including the generation, processing and tracking of trade documents
US8793160B2 (en) 1999-12-07 2014-07-29 Steve Sorem System and method for processing transactions
US20020016818A1 (en) * 2000-05-11 2002-02-07 Shekhar Kirani System and methodology for optimizing delivery of email attachments for disparate devices
US7873649B2 (en) * 2000-09-07 2011-01-18 Oracle International Corporation Method and mechanism for identifying transaction on a row of data
US7831467B1 (en) 2000-10-17 2010-11-09 Jpmorgan Chase Bank, N.A. Method and system for retaining customer loyalty
EP1337928B1 (en) * 2000-10-17 2018-06-13 Citrix Systems, Inc. Network and method for invisible proxy and hooking systems with wireless communication
WO2002037386A1 (en) 2000-11-06 2002-05-10 First Usa Bank, N.A. System and method for selectable funding of electronic transactions
US8805739B2 (en) 2001-01-30 2014-08-12 Jpmorgan Chase Bank, National Association System and method for electronic bill pay and presentment
US7082604B2 (en) * 2001-04-20 2006-07-25 Mobile Agent Technologies, Incorporated Method and apparatus for breaking down computing tasks across a network of heterogeneous computer for parallel execution by utilizing autonomous mobile agents
US20020194226A1 (en) * 2001-06-15 2002-12-19 Dinesh Sheth Internet information aggregation system using programmatic data extraction
US6886046B2 (en) * 2001-06-26 2005-04-26 Citrix Systems, Inc. Methods and apparatus for extendible information aggregation and presentation
US20030014502A1 (en) * 2001-07-03 2003-01-16 Snider Gregory Stuart E-service communication method and system
WO2003010701A1 (en) 2001-07-24 2003-02-06 First Usa Bank, N.A. Multiple account card and transaction routing
US8020754B2 (en) 2001-08-13 2011-09-20 Jpmorgan Chase Bank, N.A. System and method for funding a collective account by use of an electronic tag
US20030163483A1 (en) * 2002-02-19 2003-08-28 Abraham Zingher Method and system for a data service to control access to personal information
US20030167295A1 (en) * 2002-03-01 2003-09-04 Verity, Inc. Automatic network load balancing using self-replicating resources
US20040210498A1 (en) 2002-03-29 2004-10-21 Bank One, National Association Method and system for performing purchase and other transactions using tokens with multiple chips
WO2003083619A2 (en) 2002-03-29 2003-10-09 Bank One, Delaware, N.A. System and process for performing purchase transaction using tokens
US8635254B2 (en) 2002-08-08 2014-01-21 Axeda Corporation Maintaining independent states for multiple web browser instances
AU2003237363A1 (en) * 2002-08-29 2004-03-19 United States Postal Services Shared services platform
US20080313282A1 (en) 2002-09-10 2008-12-18 Warila Bruce W User interface, operating system and architecture
US7809595B2 (en) 2002-09-17 2010-10-05 Jpmorgan Chase Bank, Na System and method for managing risks associated with outside service providers
US20040122736A1 (en) 2002-10-11 2004-06-24 Bank One, Delaware, N.A. System and method for granting promotional rewards to credit account holders
JP2004185541A (en) * 2002-12-06 2004-07-02 Minolta Co Ltd Device management device
US7350199B2 (en) * 2003-01-17 2008-03-25 Microsoft Corporation Converting XML code to binary format
US8306907B2 (en) 2003-05-30 2012-11-06 Jpmorgan Chase Bank N.A. System and method for offering risk-based interest rates in a credit instrument
US8175908B1 (en) 2003-09-04 2012-05-08 Jpmorgan Chase Bank, N.A. Systems and methods for constructing and utilizing a merchant database derived from customer purchase transactions data
US7725875B2 (en) * 2003-09-04 2010-05-25 Pervasive Software, Inc. Automated world wide web navigation and content extraction
US7873353B2 (en) * 2003-09-30 2011-01-18 Ianywhere Solutions, Inc. Method and system for accessing applications and data, and for tracking of key indicators on mobile handheld devices
US20050114361A1 (en) * 2003-11-26 2005-05-26 Brent Roberts Method and apparatus for integrating data repositories and frameworks
JP4046086B2 (en) * 2004-01-21 2008-02-13 トヨタ自動車株式会社 Variable compression ratio internal combustion engine
EP1738271A4 (en) * 2004-03-15 2008-12-03 Bungee Labs Inc Declarative computer programming language method and system
US7805523B2 (en) * 2004-03-15 2010-09-28 Mitchell David C Method and apparatus for partial updating of client interfaces
US7398265B2 (en) * 2004-04-09 2008-07-08 Oracle International Corporation Efficient query processing of XML data using XML index
US7440954B2 (en) * 2004-04-09 2008-10-21 Oracle International Corporation Index maintenance for operations involving indexed XML data
US7603347B2 (en) 2004-04-09 2009-10-13 Oracle International Corporation Mechanism for efficiently evaluating operator trees
US8266234B1 (en) 2004-06-11 2012-09-11 Seisint, Inc. System and method for enhancing system reliability using multiple channels and multicast
US7801911B1 (en) 2004-06-11 2010-09-21 Seisint, Inc. System and method for using activity identifications in a database system
US7406461B1 (en) 2004-06-11 2008-07-29 Seisint, Inc. System and method for processing a request to perform an activity associated with a precompiled query
US7797333B1 (en) * 2004-06-11 2010-09-14 Seisint, Inc. System and method for returning results of a query from one or more slave nodes to one or more master nodes of a database system
US7739287B1 (en) 2004-06-11 2010-06-15 Seisint, Inc. System and method for dynamically creating keys in a database system
US7778997B1 (en) 2004-06-11 2010-08-17 Seisint, Inc. System and method for managing throughput in the processing of query requests in a database system
US7873650B1 (en) 2004-06-11 2011-01-18 Seisint, Inc. System and method for distributing data in a parallel processing system
US7917495B1 (en) 2004-06-11 2011-03-29 Seisint, Inc. System and method for processing query requests in a database system
US7693826B1 (en) 2004-06-11 2010-04-06 Seisint, Inc. System and method for pre-compiling a query and pre-keying a database system
US20080162382A1 (en) * 2004-06-14 2008-07-03 Symphonyrpm,Inc. Decision object for associating a plurality of business plans
US7516121B2 (en) * 2004-06-23 2009-04-07 Oracle International Corporation Efficient evaluation of queries using translation
JP4709213B2 (en) * 2004-06-23 2011-06-22 オラクル・インターナショナル・コーポレイション Efficient evaluation of queries using transformations
US20060026214A1 (en) * 2004-07-29 2006-02-02 International Business Machines Corporation Switching from synchronous to asynchronous processing
US7849219B2 (en) * 2004-07-30 2010-12-07 Idx Investment Corporation Communication system and method for real-time internet-based network connectivity to multiple heterogeneous backend systems
US7668806B2 (en) * 2004-08-05 2010-02-23 Oracle International Corporation Processing queries against one or more markup language sources
US7543032B2 (en) * 2004-10-22 2009-06-02 Canyonbridge, Inc. Method and apparatus for associating messages with data elements
US7163060B2 (en) * 2004-11-09 2007-01-16 Halliburton Energy Services, Inc. Difunctional phosphorus-based gelling agents and gelled nonaqueous treatment fluids and associated methods
WO2006104534A2 (en) * 2005-03-25 2006-10-05 The Motley Fool, Inc. Scoring items based on user sentiment and determining the proficiency of predictors
US20060217994A1 (en) * 2005-03-25 2006-09-28 The Motley Fool, Inc. Method and system for harnessing collective knowledge
US7401731B1 (en) 2005-05-27 2008-07-22 Jpmorgan Chase Bank, Na Method and system for implementing a card product with multiple customized relationships
US7822682B2 (en) 2005-06-08 2010-10-26 Jpmorgan Chase Bank, N.A. System and method for enhancing supply chain transactions
US20060294196A1 (en) * 2005-06-27 2006-12-28 Elie Feirouz Method and system for storing a web browser application session cookie from another client application program
WO2008048304A2 (en) * 2005-12-01 2008-04-24 Firestar Software, Inc. System and method for exchanging information among exchange applications
US20070174454A1 (en) * 2006-01-23 2007-07-26 Mitchell David C Method and apparatus for accessing Web services and URL resources for both primary and shared users over a reverse tunnel mechanism
CA2643342C (en) * 2006-02-24 2015-09-22 Verisign, Inc. System and method for cross-carrier mobile device capability discovery
US8478873B2 (en) * 2006-03-08 2013-07-02 Harmonic Inc. Techniques for use of a system-unique identifier in an architecture having a file system utilizing distributed metadata servers
US7890955B2 (en) * 2006-04-03 2011-02-15 Microsoft Corporation Policy based message aggregation framework
US20070240041A1 (en) * 2006-04-05 2007-10-11 Larry Pearson Methods and apparatus for generating an aggregated cascading style sheet
US7970758B2 (en) * 2006-08-31 2011-06-28 Red Hat, Inc. Automatic completion with LDAP
US20080183725A1 (en) * 2007-01-31 2008-07-31 Microsoft Corporation Metadata service employing common data model
US20080235361A1 (en) * 2007-03-21 2008-09-25 David Crosbie Management layer method and apparatus for dynamic assignment of users to computer resources
US20080262883A1 (en) * 2007-04-19 2008-10-23 Weiss Stephen J Systems and methods for compliance and announcement display and notification
US8196092B2 (en) * 2007-06-14 2012-06-05 Verizon Patent And Licensing Inc. XSL dialog modules
US8622308B1 (en) 2007-12-31 2014-01-07 Jpmorgan Chase Bank, N.A. System and method for processing transactions using a multi-account transactions device
US8554652B1 (en) 2008-02-21 2013-10-08 Jpmorgan Chase Bank, N.A. System and method for providing borrowing schemes
US20100251143A1 (en) * 2009-03-27 2010-09-30 The Ransom Group, Inc. Method, system and computer program for creating and editing a website
US8356309B1 (en) * 2009-09-15 2013-01-15 American Megatrends, Inc. Graphical display of management data obtained from an extensible management server
US8301501B1 (en) * 2009-12-23 2012-10-30 Intuit Inc. Method and system for informing a user of the effect of a hypothetical purchase on the user's finances at the point of sale
WO2012100303A1 (en) * 2011-01-27 2012-08-02 Amplifier Marketing Pty Limited Method and system for providing content
US9026904B2 (en) * 2012-03-14 2015-05-05 International Business Machines Corporation Automatic modification of cascading style sheets for isolation and coexistence
US9053085B2 (en) * 2012-12-10 2015-06-09 International Business Machines Corporation Electronic document source ingestion for natural language processing systems
US10970778B1 (en) 2013-03-13 2021-04-06 Jpmorgan Chase Bank, N. A. System and method for using a financial services website
EP3060985B1 (en) * 2013-10-23 2021-07-07 Citrix Systems, Inc. Methods and systems for automatic configuration of algorithms in a system based on self aware algorithms
US9058626B1 (en) 2013-11-13 2015-06-16 Jpmorgan Chase Bank, N.A. System and method for financial services device usage
US9626336B2 (en) 2014-08-22 2017-04-18 Microsoft Technology Licensing, Llc Remote management of a graphical user interface

Citations (21)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5958016A (en) * 1997-07-13 1999-09-28 Bell Atlantic Network Services, Inc. Internet-web link for access to intelligent network service control
US20020103881A1 (en) * 2000-09-11 2002-08-01 Francois Granade Method and system for integrating applications and mobile networks
US6430624B1 (en) * 1999-10-21 2002-08-06 Air2Web, Inc. Intelligent harvesting and navigation system and method
US20020116534A1 (en) * 2000-11-14 2002-08-22 Doug Teeple Personalized mobile device viewing system for enhanced delivery of multimedia
US20020147749A1 (en) * 2001-04-06 2002-10-10 Ortiz C. Enrique Mobile presentation system
US20020156833A1 (en) * 2001-04-20 2002-10-24 Palm, Inc. Content access from a communications network using a handheld computer system and method
US20030058277A1 (en) * 1999-08-31 2003-03-27 Bowman-Amuah Michel K. A view configurer in a presentation services patterns enviroment
US6701314B1 (en) * 2000-01-21 2004-03-02 Science Applications International Corporation System and method for cataloguing digital information for searching and retrieval
US6721747B2 (en) * 2000-01-14 2004-04-13 Saba Software, Inc. Method and apparatus for an information server
US6826597B1 (en) * 1999-03-17 2004-11-30 Oracle International Corporation Providing clients with services that retrieve data from data sources that do not necessarily support the format required by the clients
US6886046B2 (en) * 2001-06-26 2005-04-26 Citrix Systems, Inc. Methods and apparatus for extendible information aggregation and presentation
US20050114757A1 (en) * 2000-04-24 2005-05-26 Ranjit Sahota Method and system for transforming content for execution on multiple platforms
US6961776B1 (en) * 2000-12-22 2005-11-01 Nortel Networks Limited Architecture for multiple channel access to applications
US7310350B1 (en) * 2000-12-29 2007-12-18 Oracle International Corporation Mobile surveys and polling
US20080010335A1 (en) * 2000-02-01 2008-01-10 Infogin, Ltd. Methods and apparatus for analyzing, processing and formatting network information such as web-pages
US7373422B1 (en) * 2000-08-04 2008-05-13 Oracle International Corporation Techniques for supporting multiple devices in mobile applications
US20080313532A1 (en) * 2001-03-06 2008-12-18 International Business Machines Corporation Method and apparatus for repurposing formatted content
US7483983B1 (en) * 2000-11-13 2009-01-27 Telecommunication Systems, Inc. Method and system for deploying content to wireless devices
US7577834B1 (en) * 2000-05-09 2009-08-18 Sun Microsystems, Inc. Message authentication using message gates in a distributed computing environment
US7672879B1 (en) * 1998-12-08 2010-03-02 Yodlee.Com, Inc. Interactive activity interface for managing personal data and performing transactions over a data packet network
US8145554B2 (en) * 1998-12-08 2012-03-27 Yodlee.com, Inc Portfolio synchronizing between different interfaces

Patent Citations (24)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5958016A (en) * 1997-07-13 1999-09-28 Bell Atlantic Network Services, Inc. Internet-web link for access to intelligent network service control
US8145554B2 (en) * 1998-12-08 2012-03-27 Yodlee.com, Inc Portfolio synchronizing between different interfaces
US7672879B1 (en) * 1998-12-08 2010-03-02 Yodlee.Com, Inc. Interactive activity interface for managing personal data and performing transactions over a data packet network
US6826597B1 (en) * 1999-03-17 2004-11-30 Oracle International Corporation Providing clients with services that retrieve data from data sources that do not necessarily support the format required by the clients
US20030058277A1 (en) * 1999-08-31 2003-03-27 Bowman-Amuah Michel K. A view configurer in a presentation services patterns enviroment
US6430624B1 (en) * 1999-10-21 2002-08-06 Air2Web, Inc. Intelligent harvesting and navigation system and method
US6721747B2 (en) * 2000-01-14 2004-04-13 Saba Software, Inc. Method and apparatus for an information server
US6701314B1 (en) * 2000-01-21 2004-03-02 Science Applications International Corporation System and method for cataloguing digital information for searching and retrieval
US20080010335A1 (en) * 2000-02-01 2008-01-10 Infogin, Ltd. Methods and apparatus for analyzing, processing and formatting network information such as web-pages
US20050114757A1 (en) * 2000-04-24 2005-05-26 Ranjit Sahota Method and system for transforming content for execution on multiple platforms
US7577834B1 (en) * 2000-05-09 2009-08-18 Sun Microsystems, Inc. Message authentication using message gates in a distributed computing environment
US20080215733A1 (en) * 2000-08-04 2008-09-04 Oracle International Corporation Techniques for supporting multiple devices in mobile applications
US7373422B1 (en) * 2000-08-04 2008-05-13 Oracle International Corporation Techniques for supporting multiple devices in mobile applications
US20020103881A1 (en) * 2000-09-11 2002-08-01 Francois Granade Method and system for integrating applications and mobile networks
US7483983B1 (en) * 2000-11-13 2009-01-27 Telecommunication Systems, Inc. Method and system for deploying content to wireless devices
US20090187819A1 (en) * 2000-11-13 2009-07-23 Bonefas Rudy G Method and system for deploying content to wireless devices
US20020116534A1 (en) * 2000-11-14 2002-08-22 Doug Teeple Personalized mobile device viewing system for enhanced delivery of multimedia
US6961776B1 (en) * 2000-12-22 2005-11-01 Nortel Networks Limited Architecture for multiple channel access to applications
US7310350B1 (en) * 2000-12-29 2007-12-18 Oracle International Corporation Mobile surveys and polling
US20080313532A1 (en) * 2001-03-06 2008-12-18 International Business Machines Corporation Method and apparatus for repurposing formatted content
US7546527B2 (en) * 2001-03-06 2009-06-09 International Business Machines Corporation Method and apparatus for repurposing formatted content
US20020147749A1 (en) * 2001-04-06 2002-10-10 Ortiz C. Enrique Mobile presentation system
US20020156833A1 (en) * 2001-04-20 2002-10-24 Palm, Inc. Content access from a communications network using a handheld computer system and method
US6886046B2 (en) * 2001-06-26 2005-04-26 Citrix Systems, Inc. Methods and apparatus for extendible information aggregation and presentation

Cited By (42)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8055758B2 (en) 2000-07-28 2011-11-08 Axeda Corporation Reporting the state of an apparatus to a remote computer
US8898294B2 (en) 2000-07-28 2014-11-25 Axeda Corporation Reporting the state of an apparatus to a remote computer
US7937370B2 (en) 2000-09-22 2011-05-03 Axeda Corporation Retrieving data from a server
US8762497B2 (en) 2000-09-22 2014-06-24 Axeda Corporation Retrieving data from a server
US10069937B2 (en) 2000-09-22 2018-09-04 Ptc Inc. Retrieving data from a server
US8108543B2 (en) 2000-09-22 2012-01-31 Axeda Corporation Retrieving data from a server
US8406119B2 (en) 2001-12-20 2013-03-26 Axeda Acquisition Corporation Adaptive device-initiated polling
US9170902B2 (en) 2001-12-20 2015-10-27 Ptc Inc. Adaptive device-initiated polling
US9674067B2 (en) 2001-12-20 2017-06-06 PTC, Inc. Adaptive device-initiated polling
US8752074B2 (en) 2002-04-17 2014-06-10 Axeda Corporation Scripting of soap commands
US9591065B2 (en) 2002-04-17 2017-03-07 Ptc Inc. Scripting of SOAP commands
US10708346B2 (en) 2002-04-17 2020-07-07 Ptc Inc. Scripting of soap commands
US8060886B2 (en) 2002-04-17 2011-11-15 Axeda Corporation XML scripting of SOAP commands
US7966418B2 (en) 2003-02-21 2011-06-21 Axeda Corporation Establishing a virtual tunnel between two computer programs
US8291039B2 (en) 2003-02-21 2012-10-16 Axeda Corporation Establishing a virtual tunnel between two computer programs
US10069939B2 (en) 2003-02-21 2018-09-04 Ptc Inc. Establishing a virtual tunnel between two computers
US9002980B2 (en) 2003-02-21 2015-04-07 Axeda Corporation Establishing a virtual tunnel between two computer programs
US9071570B2 (en) * 2005-03-30 2015-06-30 International Business Machines Corporation Method and apparatus to select and deliver portable portlets
US20060230059A1 (en) * 2005-03-30 2006-10-12 International Business Machines Corporation Method and apparatus to select and deliver portable portlets
US10880271B2 (en) 2005-06-03 2020-12-29 Asavie Technologies Limited Secure network communication system and method
US20070056031A1 (en) * 2005-08-19 2007-03-08 Opnet Technologies, Inc. Automatic access to network devices using various authentication schemes
US8230491B2 (en) * 2005-08-19 2012-07-24 Opnet Technologies, Inc. Automatic access to network devices using various authentication schemes
AU2018206754B2 (en) * 2005-10-11 2020-10-08 Becton Dickinson Infusion Therapy Systems Inc. Sequences for detection and identification of methicillin-resistant Staphylococcus aureus (MRSA) of MREJ types xi to xx
US8244694B2 (en) * 2006-09-12 2012-08-14 International Business Machines Corporation Dynamic schema assembly to accommodate application-specific metadata
US20080065678A1 (en) * 2006-09-12 2008-03-13 Petri John E Dynamic schema assembly to accommodate application-specific metadata
US8370479B2 (en) 2006-10-03 2013-02-05 Axeda Acquisition Corporation System and method for dynamically grouping devices based on present device conditions
US9491071B2 (en) 2006-10-03 2016-11-08 Ptc Inc. System and method for dynamically grouping devices based on present device conditions
US8769095B2 (en) 2006-10-03 2014-07-01 Axeda Acquisition Corp. System and method for dynamically grouping devices based on present device conditions
US10212055B2 (en) 2006-10-03 2019-02-19 Ptc Inc. System and method for dynamically grouping devices based on present device conditions
US9491049B2 (en) 2006-12-26 2016-11-08 Ptc Inc. Managing configurations of distributed devices
US8788632B2 (en) 2006-12-26 2014-07-22 Axeda Acquisition Corp. Managing configurations of distributed devices
US9712385B2 (en) 2006-12-26 2017-07-18 PTC, Inc. Managing configurations of distributed devices
US8065397B2 (en) 2006-12-26 2011-11-22 Axeda Acquisition Corporation Managing configurations of distributed devices
US20080294513A1 (en) * 2007-05-23 2008-11-27 Buse Jr T Joseph Method of targeted marketing
US8126928B2 (en) * 2007-06-27 2012-02-28 Sap Ag Systems and methods for merging data into documents
US20090006432A1 (en) * 2007-06-27 2009-01-01 Bossong-Iselborn Claudia U Systems and methods for merging data into documents
US8984165B2 (en) * 2008-10-08 2015-03-17 Red Hat, Inc. Data transformation
US20110179073A1 (en) * 2008-10-08 2011-07-21 Localize Direct Ab Method for Localizing Text in a Software Application
US20100088363A1 (en) * 2008-10-08 2010-04-08 Shannon Ray Hughes Data transformation
US8745635B2 (en) * 2012-04-24 2014-06-03 Sap Ag Managing business process messaging
US20130283291A1 (en) * 2012-04-24 2013-10-24 Sap Ag Managing Business Process Messaging
CN109840298A (en) * 2018-12-29 2019-06-04 中国科学院计算技术研究所 The multi information source acquisition method and system of large scale network data

Also Published As

Publication number Publication date
US6886046B2 (en) 2005-04-26
US20030028563A1 (en) 2003-02-06

Similar Documents

Publication Publication Date Title
US6886046B2 (en) Methods and apparatus for extendible information aggregation and presentation
US11483258B2 (en) Techniques for providing connections to services in a network environment
US7454462B2 (en) Distributed computing services platform
US6345288B1 (en) Computer-based communication system and method using metadata defining a control-structure
US5862325A (en) Computer-based communication system and method using metadata defining a control structure
US6782003B1 (en) Data management system and method
US20190190977A1 (en) System and method of automatic generation and insertion of analytic tracking codes
US20050210379A1 (en) Internet-based system for dynamically creating and delivering customized content within remote web pages
US20050004978A1 (en) Object-based on-line transaction infrastructure
US20030120593A1 (en) Method and system for delivering multiple services electronically to customers via a centralized portal architecture
US20080270577A1 (en) Electronic pages with communication features
US20080091663A1 (en) Software Bundle for Providing Automated Functionality to a WEB-Browser
US20070130347A1 (en) Method and Apparatus for Providing Calculated and Solution-Oriented Personalized Summary-Reports to a User through a Single User-Interface
NZ523826A (en) System and method for integrating public and private data
AU2001271596A1 (en) System and method for integrating public and private data
WO2009042717A1 (en) Data paging with a stateless service
US8291032B2 (en) Email system
US20020198992A1 (en) Methods and apparatus for load balanced information aggregation and presentation
US20050021858A1 (en) Network conduit for providing access to data services
US20060143208A1 (en) Bitmask access for managing blog content
EP1421479A2 (en) Distributed computing services platform
CA2247498C (en) An automated communications system and method for transferring informations between databases in order to control and process communications
US20040260817A1 (en) Facilitating access to a resource of an on-line service
Deodhar et al. PROJECT REPORT-CS 8803 (AIA) M-SHARE–SOCIAL NETWORKING ON MOBILE DEVICES GROUP MEMBERS: HARESH AVHAD
Team Middleware Architecture Report

Legal Events

Date Code Title Description
AS Assignment

Owner name: CITRIX SYSTEMS, INC., FLORIDA

Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNORS:STUTZ, WILLIAM;KALIAPPAN, ARULNAMBI;CAPWELL, RONALD;AND OTHERS;REEL/FRAME:023746/0829;SIGNING DATES FROM 20011203 TO 20020115

STCB Information on status: application discontinuation

Free format text: ABANDONED -- FAILURE TO RESPOND TO AN OFFICE ACTION