EP1171830A4 - Systemes et procedes d'applications dynamiques destines a un environnement informatique reparti - Google Patents

Systemes et procedes d'applications dynamiques destines a un environnement informatique reparti

Info

Publication number
EP1171830A4
EP1171830A4 EP00921505A EP00921505A EP1171830A4 EP 1171830 A4 EP1171830 A4 EP 1171830A4 EP 00921505 A EP00921505 A EP 00921505A EP 00921505 A EP00921505 A EP 00921505A EP 1171830 A4 EP1171830 A4 EP 1171830A4
Authority
EP
European Patent Office
Prior art keywords
components
user
server
component
client application
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.)
Withdrawn
Application number
EP00921505A
Other languages
German (de)
English (en)
Other versions
EP1171830A1 (fr
Inventor
Norman K Gudmundson
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.)
Quark Media House Sarl
Original Assignee
Quark Media House Sarl
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 Quark Media House Sarl filed Critical Quark Media House Sarl
Publication of EP1171830A1 publication Critical patent/EP1171830A1/fr
Publication of EP1171830A4 publication Critical patent/EP1171830A4/fr
Withdrawn legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/60Software deployment
    • G06F8/61Installation

Definitions

  • the present invention relates to dynamic application systems and particularly to dynamic application systems implementing behaviorally oriented object programming.
  • the traditional applications normally are designed to include all features and behaviors that may or may not be required by each individual users. Thus, traditional applications typically are very large in size. Additionally, traditional applications are normally bound to a particular hardware platform, operating system or application domain. Thus the applications normally must be substantially revised for use on other platforms, operating systems or application domains. There is presently a need for an efficient, reliable system for the collection, storage and processing of data from the multitude of data sources available, not only now but in increasing amounts in the future.
  • the present invention accomplishes these needs by providing dynamic application systems that, in a preferred embodiment, utilize behaviorally-oriented objects to adapt to the operating environment of the applications.
  • the dynamic applications only instantiate components necessary to perform the functionality required by the user.
  • the dynamic client application of the preferred embodiment of the present invention are able to be operated with a minimal operating system.
  • the dynamic client application utilizes a "seed" program that includes minimal executable code to create a connection with a server, download a set of system components from the server and install those components to create a user interface.
  • the seed application can go into a dormant phase at this point.
  • the user can then request desired functionality from the system.
  • the client application will then download the components necessary for the client application to either perform the functionality or to access this functionality elsewhere in a distributed computer system.
  • the seed program in a preferred embodiment, initially requests an identification from the user of the client computer. This identification is passed on to the server which determines the profile of the user assigned to that identification, the privileges and access allowed to that user, and downloads components for system components that the user is authorized to use.
  • the profile may also include such information as group membership indicating the name or identity of any user-groups to which the user belongs. If the user does not possess an identification, then the user is logged as a "guest" and a base level of components are downloaded and instantiated.
  • these system components include a component loader and an application, such as an XML (extensible Markup Language) parser, to determine the initial application structure and the attributes that are to be assigned to each instance of the components of the initial application structure and to verify other components.
  • an application such as an XML (extensible Markup Language) parser
  • the client application will make access requests to the server and download selected components based upon the user supplied information.
  • the components are combined with data from the user at runtime to provide application-specific functionality.
  • complex sets of behavior can be created for each component while still being generic for application for many tasks.
  • the components include behaviorally object- oriented components.
  • the components are able to provide rich messaging between components or objects.
  • Prior objects in traditional object- oriented systems, use static interfaces that require prior understanding of specific parameters of the objects interfaces before messaging between the objects can understand. Further, prior objects are created to expect certain responses from the objects with which they interact. Failure to receive or return expected responses causes the applications to break or fail.
  • the present invention in a preferred embodiment, provides behavior- oriented objects.
  • the components or instantiated objects are loosely coupled to one another to allow effective communication between the objects even when the interface of either or both objects changes substantially.
  • the particular implementation of the preferred embodiment uses a component interface that provides a two stage interface.
  • the first stage allows an object to perform a simple communication or "tap" of a second object.
  • This tap includes identification of the first object and information as to the method of response to the first object.
  • the second object responds by providing information as to the entry points of the second object.
  • the first object then sends a rich message to the second objects through those entry points.
  • These behaviorally oriented objects are also designed not to expect messages but to receive them if they are "tapped”. As a result, each object becomes dynamically modified to generate messages to any other object, or to no object at all. Another feature of the behaviorally oriented objects is the capability to
  • grade it's ability to implement useful functionality with it's programmed behavior. As the functionality of the component is used, or if the user is "pleased” with the performance of the component, the grade of the component is increased. If the user is displeased with the component or if the functionality is not utilized over time, the grade is decreased. Other components may use the grade of the component to determine whether to send messages to that component. The component may even be "encouraged” to mutate to more useful behavior by this capability. Useful functions will encourage the component to use those behaviors while unused behaviors will be dropped. The component may even be killed off if it's score drops to a certain level.
  • the client application becomes an information management tool.
  • the seed application downloads components from the server to allow it to instantiate the components into a user interface which communicates to other servers and/or data miners.
  • the user can also access a premium content database on the server, if the user's profile allows this access, to obtain preprocessed information.
  • the user can access preferred portals that have specialized data miners to speed the search process.
  • the data miners are collections of software objects that each apply sets of rules and/or strategies to determine if data contained at a data site fit the criteria. These miners employ fuzzy logic to determine if the data fits the criteria, and may seek verification from the user as well.
  • the user may also seek information from preferred services, such as airline, train, and other travel sites, merchandising sites and other sites requiring transactions.
  • the user will also have access to general or non-preferred data portals using non-specialized data miners.
  • An important feature of the preferred embodiment of the present invention is the ability to constantly track and verify changes in formats, protocols and access to the different sites.
  • the present invention tracks and verifies these changes and upgrades the system and client application components to maintain access to these sites without intervention of the user. Thus, even non-programmers will be able to utilize the present invention.
  • Additional features of the present invention include the incorporation of Personal Information Mangers. This enables personal information about the user to be incorporated into the client applications without the user having to frequently reenter this information.
  • Another feature is the data storehouse on the server.
  • the user is able to store collected information for access anywhere. The user does not have to access the same client computer each time. The user is able to gain access to the collected information from any computer having communication with the server by simply inputting the user identification.
  • the client application While access to the server is critical to maintaining the most current system components, the client application will cache components on the client computer to enable the user to utilize the client application when the connection between the client computer and server is broken. This allows laptop computers, handheld devices, appliances, even cellular telephones to function as the client computer.
  • FIG. 1 illustrates an exemplary network system and processes in which the present invention is implemented
  • FIG. 2 shows elements of an exemplary application environment in accordance with the present invention
  • FIG. 3 shows a component of the application environment of FIG. 2 in greater detail
  • FIG. 4 through FIG. 6 illustrate a particular implementation of the system and processes of FIG. 2 at various stages of implementation; and FIG. 7 shows an application description document in accordance with a particular implementation of the present invention.
  • FIG. 8 shows an XML file declaring the constituent components of an exemplary component in accordance with a particular implementation of the present invention. DETAILED DESCRIPTION OF THE PREFERRED EMBODIMENTS
  • the present invention provides a system and processes for creating dynamic relations between individual entities, such as bits of information spread across an infinite number of nodes connected together in networks.
  • individual entities such as bits of information spread across an infinite number of nodes connected together in networks.
  • an information gathering application is described as an example ofthe usefulness of this system and processes.
  • the system and processes of a preferred embodiment of the present invention utilizes Dynamic Application architecture to create behaviorally oriented programs operating in a client/server relationship.
  • a Dynamic Application exists as an unbounded set of components working together to form a software solution. Every Dynamic Application begins with a starting point, such as a "Seed”. This seed creates the initial environment for the Dynamic Application.
  • the seed for the World Wide Web would be the browser that provides access for a user to the World Wide Web.
  • Browsers are typically hybrids of old static architecture (using hard coded features) and new dynamic architecture.
  • browsers typically contain a relatively fixed set of features and are quite large, requiring extensive resources in order to operate.
  • the system and processes of the present invention operates quite differently than the above-described browsers.
  • the system and processes provides a completely dynamic seed.
  • the seed of the preferred embodiment of the present invention acts as a "client" having no particular features of it's own. Instead, it requests from a server (or multiple servers) such features as necessary for it to perform a requested function.
  • the system and processes is made up of the following components: the Seed: network connection (such as the Internet, other global network services. LAN. WAN, MAN, or other networks); Membership Identification;
  • Server comprising a repository, database, and storehouse: Client;
  • PIMs Local Personal Information Managers
  • the Seed The Seed as described above, is a completely dynamic kernel. In the preferred embodiment, the Seed is approximately 75K bytes. This allows it to function on even the smallest handheld device or appliance.
  • the first time that the Seed is run on a computer it requests the user for disk space and the user's Membership Identification (described below). If the user does not yet have a Membership Identification, then the Seed will grant the user a limited guest membership. A specific implementation of the Seed is described in greater detail below.
  • Membership Identification provides a particular set of features to the user. For instance, different levels of services may be accessible to the user depending on their Membership Identification. These different levels of services may be available for fees, or assigned to the user on a need to access basis.
  • the Server provides the functionality for the system and processes of the preferred embodiment of the present invention.
  • the Server provides the connections, the hardware and powers the system and provides access to all of the features and membership privileges.
  • the system and processes allows the
  • the Server in the preferred descriptive embodiment, has three major components (in addition to the hardware and network connection): the Feature repository, the Premium Content Database and the User Storehouse.
  • the Feature repository contains all the components required to enable a particular capability or feature (e.g., dynamic link library (DLL) files, data files and the like). It is contemplated that all features will evolve over time and so the Feature repository will evolve correspondingly. Thus, a reliable connection to the Server is necessary for the Client to remain fresh and vital.
  • the Feature repository may be implemented using any available data store technology and may be accessed through a directory service or file system mechanism.
  • the Premium Content Database contains preprocessed data. This database is option, but is discussed herein as having particular utility in an Information Management application used as an exemplary embodiment. It is to be expressly understood that the present invention is not limited to this exemplary embodiment. In some cases it may be more efficient for the Server to provide access to such preprocessed data rather than requiring each Client to obtain and process this data itself. An example of such preprocessed data contained in the Premium Content Database would be customer marketing lists. Preprocessing may also be used to add value to the data by coordinating, arranging, and collecting disparate data.
  • the User Storehouse is used to store information that belongs to a particular user that has requested such a facility.
  • the Storehouse allows a user to store information independent from a particular computer. Thus, a user is able to move from computer to computer without concern as to the location of stored data.
  • a user needs only a computer, a network connection to the Server and a Membership Identification.
  • the Client in the preferred embodiment of the present invention, is an "organic" user interaction application.
  • the Client begins with the Seed.
  • the Seed obtains the initial information from the user, such as the Membership Identification
  • the Seed then connects to the Server to download sufficient components from the Server to begin the formation of a user interface.
  • additional components and forms are downloaded and cached as required. For example, once the Seed obtains a valid Membership Identification, then it will request from the Server the components for a user interface, such as a browser.
  • a user interface such as a browser.
  • Seed Server may also recognize that the particular Membership Identification is allowed or prefers a particular user interface. Also, the Seed/Server may recognize that the user associated with that Membership Identification requires a particular language, i.e., U.S. English, Japanese. French, etc.
  • the Client is organic in that it will constantly change as necessary depending on the function requested of it. For example, the Client may be used as a data search application to acquire data on a particular subject. The Client may then be used to parse that data or to associate that data with word processing, layout editor, or other applications. As the user requests a change in the functionality of the Client, additional components and/or forms may be downloaded from the Repository of the Server and previously downloaded components may be discarded.
  • the system and processes of the present invention has particular application to obtaining data from various sources.
  • the present invention is able to efficiently perform data mining functions.
  • Data mining is the extraction of data of particular interest from raw sources.
  • Raw data is processed by collections of software objects ("Data Miners") which are organized to apply simple rules and strategies to the data.
  • the Data Miners use fuzzy logic to do their tasks. This includes locating information that is "probably, likely, or possibly” something they recognize.
  • the Data Miners also use "hints" that identify information that closely match certain criteria. Once a potential piece of information has been identified, the Miner "asks" a question to verify the information. A probability is assigned to such information which is applied to other pieces of information. Information that has the highest probability is then stored and low probability information is discarded.
  • These Preferred Data Portals include special Data Miners that know the specific formats and other details of these repositories. These special Data Miners perform fast and reliable extraction of data from their particular portal. Also, as the portals change the formats of the data contained therein, the Server will periodically validate the formats of the portals. This validation will typically occur in the background so the user is unaware of this operation.
  • the system and processes of the present invention provides specific data miners able to interact with sites providing such services. Since the form of such transactions frequently change or updated, the data miners associated with these services are tested frequently. Validation and updating of the data miners is performed without no action required by the user.
  • External data repositories are defined as any node that is not classified as a Preferred Data Portal or Preferred Services. Since these repositories do not have any special data miner associated with them, more general strategies are used for data extraction. In the preferred embodiment, once a data miner has become assigned to mine a particular site, the miner will "evolve” quickly or be given such a low priority (as discussed in further detail below) to be effectively killed off. It should be understood that Preferred Data Portal and Preferred
  • PIM Local Personal Information Manager
  • PIM Personal Information Manager
  • Outlook are useful to maintain and import personal information on the user to other applications.
  • PIMs require more specific solutions than are required by the Preferred Data Portals and Preferred Services.
  • Typically such products require specific components developed for that particular product. Integration with such services may be handled by including special purpose pluggable interfaces such as an outlet component.
  • these components will include procedural code rather than a behavior-oriented components. This procedural code is specific to a particular PIM and interfaces with an API provided by the PIM.
  • the present invention does not encourage, but can accommodate such specialized procedural code in a conventional object-oriented manner.
  • Installation of these components is similar to the installation of behavior- oriented program components and occurs, automatic in a manner that is transparent to users.
  • the Client is a dynamic software application comprising a plurality of weakly linked components.
  • the components comprise instantiated objects and are preferably implemented as hierarchical "container" objects (e.g., object that contain other objects). Since the client application is completely dynamic in the preferred implementation, each instance of the client will contain a different set of components and will vary from time-to-time as components are changed and updated.
  • the Client application as it exists at any instant in time is the entry point for all user interaction with the system in accordance with the present invention.
  • the Seed comprises a minimal set of executable code from which the entirety of the client application is spawned.
  • Seed may be the only component of the Client.
  • the role of Seed is akin to a kernel in an operating system, the Seed represents code that boots up. makes essential links to other devices and software, and executes a routine to enable more fully functional operation. Because the Seed is implemented as procedural code. the Seed preferably includes as little functionality as possible so that it does not need to be changed often, and will be robust in light of operating system changes and the like.
  • the Seed can implement a command line or dialog box type interface to get rudimentary user information such as name, account number, password and the like and makes a link to the Server to downloaded enough components for the formation of a user interface.
  • the user interface enables the Client to begin interaction with a new member.
  • Other components that would be loaded upon initialization might include components for accessing a mass storage device such as a datastore or for establishing and operating a cache structure. As the Client begins interacting with server, new components and data are downloaded and cached as required. Once initialized, the Seed becomes dormant and the Client is controlled by application components.
  • the Seed passes user ID and password information to the Repository Server which returns a user identification, a "profile", an initial code library, and a start-up XML file.
  • the user identification is a unique code or number assigned by the Server to that particular user ID and is used throughout the system to uniquely identify the user.
  • the profile contains user-specific information such as a list of code or modules available to the user (based upon permissions or privileges determined from the user ID), a list of components that should be loaded, group membership information, and the like.
  • the initial code library will include code for performing basic system-type functions such a system object for interacting with the operating system and performing system-type behaviors such task scheduling.
  • Other components include a component loader for loading new components and installing them in software application at runtime, and a component for parsing XML documents. Once an XML parsing component is installed, the startup XML document can be read to determine the initial application structure.
  • the preferred implementation uses a declarative application construction method in which application components are declared dynamically at runtime. An XML document is conveniently used to make this declaration.
  • the startup XML document essentially contains a list of components that are to be included in the Client application along with attributes that are to be assigned to each instance of the component.
  • the components describe above provide system-type functionality such as user interface implementation, XML parsing, class loading, and the like, additional components are downloaded to implement application-specific functionality.
  • any type of functionality can be implemented by selection of components from feature repository including text processing, spreadsheet, internet browsing and the like.
  • the Client serves as an information tool and so will selectively download components that enable the Client to specify desired information, retrieve the user-specified information, and present the user-specified information in a user-specified manner.
  • components are generally "generic" components that define rudimentary behaviors, but do not have enough structure as downloaded to implement any particular functionality.
  • a single component may include behaviors for accessing a web site at a uniform resource locator (URL) and returning an HTML document, but as downloaded does not specify which URL or know anything about the content of the HTML document.
  • This component's behavior is customized at runtime to provide application-specific functionality by providing the component with data specifying a URL, for example. This distinction between generic behavior and specific functionality is important to a complete understanding ofthe present invention.
  • Components are preferably complex combinations of other components and so provide more complex functionality than, for example, just accessing a web site and returning the HTML response page.
  • components are generic in that they are not data store specific, the particular combination of components contained within any other component makes each component an individual.
  • a component that is individualized for address retrieval may include a component for accessing a company web page, another object for identifying a zip code in the returned HTML page, another object selecting text from the returned page surrounding the zip code, and yet another object for formatting the selected text into tab-delimited address information.
  • components comprise generic elements and behavior-oriented objects
  • its functionality becomes application specific.
  • a particular instance of a component can be saved and reused to implement the specific functionality of its component objects.
  • a particular instance is not, however, sub-classed or extended to provide other functionality.
  • a component will "know", for example, a specific URL to access and will know specific information to select from the return HTML page.
  • the component is preferably given means to evolve so as to improve its performance or it be given such a low priority as to be effectively killed off.
  • components comprise a set of instantiated behavior-oriented objects.
  • components are not extensions, sub-classes, or over-ridden versions of objects or classes stored on server. Instead, they are instantiated directly from classes, objects, or object descriptions on the Server.
  • Components are high- level objects that implement a dynamic interface supporting rich messaging. Only after an instantiated object receives a message can it respond to perform application-specific functionality. Components are almost purely behavior. Behavior given context results in application-specific functionality.
  • FIG. 3 illustrates a simplified component 209 configured to select data from a URL.
  • the component comprises a set of other components, including thread component 301, a URL component 302, a data port component 303, a page grabber component 304, and a select text component 305.
  • Each component 301-305 implements a more primitive behavior than does the container component.
  • Thread component 301 serves to manage message passing within component. In general, any message passed to component is broadcast to ail of its sub components 301-305, and any message generated by any sub-component 301-305 is broadcast to all other sub-components, but thread component 301 may alter that general message passing.
  • Behavior Object-Oriented Components The above-described embodiment can be implemented in presently available object-oriented programming paradigms.
  • One difficulty in prior object-oriented systems is that objects, while implementing behavior, encapsulate conventional procedural code. This results in static interfaces such that an object requires specific parameters to be passed through the interface before the object can function.
  • To establish an interaction between two objects both objects must have an a priori understanding of the other's interfaces. This requirement forces programmers to rigidly define the interfaces.
  • rigid definition leads to many of the same problems as conventional (non object oriented) procedural code. Specifically, when the interfaces change, the application breaks. Also, objects are created to expect certain responses from the objects with which they interact. If an object fails to return an expected response, the application breaks.
  • Objects receive context in two manners. Upon instantiation, attributes can be assigned to the object. Additionally, messages passed to the object at runtime provide context. Together these context mechanisms give the component, and all components that are contained therein, the information needed to determine their functionality. Their functionality will be different if they are instantiated within a different parent, or if they are passed a different message.
  • the present invention provides a unique environment for providing dynamic object interfaces is an important feature of the components to make them "behavior-oriented". Hence, instantiated objects within components are "loosely coupled" to each other. This means that an object's interface can change substantially or entirely and still effectively communicate with other objects.
  • the particular implementation uses an component interface architecture that provides a two stage interface.
  • a component In a first stage, a component "taps" another component with which it wishes to communicate.
  • the tapped component responds with a message or message object that indicates its entry points.
  • the first component can then use the newly gained knowledge of the second component's entry points to send a rich message.
  • the only procedural interface that needs to be hard coded into both components is the simple tap interface.
  • the dashed-line interconnects in FIG. 3 are used to suggest this loose coupling mechanism.
  • a tap message preferably includes the requesting object's name or address (so the return message will reach the correct object).
  • the requesting object also implements an interface sufficient to receive the response message as a parameter and procedural logic sufficient to use the response message to implement the rich interface.
  • the tap interface is so simple that it can be used without modification among any number and variety of components without regard to their fundamental behavior.
  • the more complex rich interface is determined dynamically at runtime. Because the rich interface can be implemented in a very context-specific manner, the messaging between components can be richer than is practical with conventional object-oriented designs.
  • Object-oriented designs often require that a particular object receive a message for the application to proceed. If the message does not come, the application can break. Behavior oriented design relies on each object to generate messages to appropriate objects, but do not specify what those appropriate objects are. That decision is left to the object generating the message. For example, it is common to implement objects that send a message then either stall waiting for a return message, or notify another object that it should expect a message. In either case, if the message does not occur, the application breaks. In a behavior-oriented system in accordance with the present invention, objects do not expect messages but will receive them when tapped as described above.
  • each object can be dynamically modified to generate messages that are directed to any other object (or no other object in the case of terminal behaviors such as displaying information in a GUI).
  • terminal behaviors such as displaying information in a GUI.
  • Unplanned terminal behavior is a fact of life in software systems. What is important is implementing a graceful mechanism for handling such events.
  • the behavior-oriented model set out above could lead to a proliferation of dysfunctional objects that fail to generate useful messages.
  • an application component has two simple, built-in goals to be used by the user or by another object as often as possible and to avoid being deleted or hidden. In trying to achieve these goals, the information object learns to "please” the user with useful information; the user "teaches” the object by using it.
  • This feature of the present invention is implemented as a mechanism contained within each object that grades the ability of the object to implement useful functionality with it's programmed behavior. For example, each component maintains one or more "primary value" registers that hold a value indicating the objects viability or worth to the system. When a component is used the object contains primitive methods for increasing the primary value.
  • positive reinforcement can be given when a component receives useful information (e.g., information meeting specified value criteria) triggering the recipient to reward the sending object with primary value credits.
  • Primary value credits can be depleted implicitly as a function of time, or explicitly as a result of issuing a poor message (i.e., a punishment).
  • objects that fail to produce valuable results and/ or fail to direct their results to an appropriate object will have a net depletion of their primary value.
  • Objects succeeding in producing valuable results directed to an appropriate recipient object will have a net increase in their primary value.
  • objects self destruct when their primary value falls below a specified minimum.
  • objects implement a primary value test in their tap sequence so that an object wishing to send a message can select among a plurality of potential target objects based upon the primary value data returned during the tap sequence.
  • component 202 is accessed by a message from, for example, a user interface component 306 or an automated scheduling component 307.
  • the message object provided to component may include specific information needed by a "post" or “get” message that will be used by components 301-30 to access specific information.
  • URL object 302 responds by composing an HTTP message with a target URL including the post or get information derived from the input message to a data port component 303.
  • Data port component 303 interfaces with hardware and/or operating system resources to send the HTTP message and receive an HTTP response including, for example, an embedded HTLM page.
  • Data port component 303 has no knowledge of where it is sending a message or the message content, or whether a message will be returned. It performs a specific function at runtime by executing generic behaviors on runtime specified data provided in the message it receives.
  • the response message is sent to page grabber 304 which, for example, is configured genetically to strip off HTML tags from a message it receives. Again, page grabber 304 has no a priori expectation of the message it is to receive. It has an interface that accepts an HTTP or HTML message. If no message is ever received, page grabber 304 simply remains dormant. When page grabber 304 receives an HTTP or HTML message it strips off the tags and sends a plain text message to one or more select text component (s) 305.
  • a select text component can be configured to, for example, find the first string including a "$" and convert that string to a value.
  • Another select text component 305 can be configured to, for example, find the first string value following a specified string (e.g., "Company Name:"). Select text component (s) 305 has no knowledge of the received message and may not find the text to be selected in which case it simply becomes dormant.
  • a specified string e.g., "Company Name:”
  • select text component 305 finds the text, a message is generated to component.
  • Component can compile the messages generated by a variety of components into a message that it then sends to, for example, a company datastore object.
  • a company datastore object 308 is a generic object that can store company-specific information retrieved from the page using, for example, the company name text as an index.
  • the present invention enables a unique application that makes digital information and services easier to find and use.
  • the present invention includes a specific application in which a membership- based behavior-oriented system and processes is configured to act as an intelligent digital assistant.
  • the digital assistant processes, organizes, and manages digital information, learning from the user's instructions.
  • This embodiment ofthe present invention assists the user by:
  • Digital information is often hidden in raw data deposits, which the user can access using, for example, an Internet search engine (sometimes called a Data Portal). Even though the search engine provides a portal to the data, the meaning or significance of the data may be difficult for the user to discover on her own or using conventional data access technology including search engines. Sometimes the mere amount of data returned by a search engine obscures the significant information.
  • an Internet search engine sometimes called a Data Portal
  • the specific implementation of the present invention uses a process called “data mining”, as discussed above.
  • data mining raw data is processed by collections of instantiated software objects which are organized into “data miners” 409 (shown in FIG. 5).
  • Data miners 409 process raw data by applying simple rules and strategies to the data. Each miner applies a different rule or variant on a rule, to the work to be done. When a user interacts with the information the miners have produced, the interaction will either encourage or restrict both the miner that produced the information, and the information object itself.
  • a seed program 411 is delivered to a user. In an initial state, seed program is essentially equivalent to client application 409 because no other components have been downloaded.
  • the seed program comprises executable code on the user's system.
  • the seed code may be written to a specific platform such as UNIX or a Windows operating system, or may be written to a platform independent environment such as the Java programming environment. Java is a trademark of Sun Microsystems. Inc.
  • the seed program Upon execution, the seed program implements a command line or graphical user interface such as a dialog box. The user supplies identification information (e.g., user name and password). The seed program then creates a link to server 401. Server 401 downloads a startup message including a unique user ID assigned by server 401, a list of modules to load, and a set of startup components.
  • the remainder of system and processes 400 includes dynamic data and service resources such as a news service 416, government information data store 412, and a financial service 413.
  • Government information store 412 is an example of a preferred portal 212 (shown in FIG. 2) whereas financial service 413 is an example of a preferred service 213 shown in FIG. 2.
  • Server 401 is coupled to a feature repository that includes a variety of generic components.
  • software application 402 downloads and installs system components such as a system object 501, a class loader 502, and a user interface 503.
  • the particular implementation includes a component 504 called an object inspector that enables a user to interact with individual components and their constituent components and objects. This interaction enables a user to examine a component to determine its properties and in some cases to directly manipulate those properties.
  • GUI component 503 supports a "drag-and-drop" style interface enabling components to be visually represented, selected using mouse/screen interaction, and moved into or onto other components.
  • Client application 402 also includes a profile 506 that holds the user ID, a list of components to load, and a group membership list indicating the name or identity of any user-groups to which the user belongs.
  • a startup XML document 507 is also included provides a hierarchical text- based description of the client application 402.
  • An example startup XML file is shown in FIG. 7.
  • XML parser object can read the application description document 507 and interacting with system object 501 and class loader component 502 access and download components necessary for operation.
  • system object 501 (or an equivalent component) implements a link to a file system enabling access to datastore 414 and cache 404.
  • Seed code 411 can become dormant once client 402 has downloaded system components sufficient to support sustained operation. It should be noted that during subsequent restarts, seed 41 1 will look for already installed components before requesting downloads from server 401. Because components can be replaced dynamically at runtime, seed 41 1 can actually boot up using old components, then the client application 402 can replace those older components with fresher versions at runtime in the background. Client 402 reads XML application description document 414, checks it profile document 506 to determine if it already has the required component. If the component is not already present, application 402 makes access requests to server 401 and downloads selected components 409 based upon the user supplied identification information. For new users (i.e., non- authenticated users) or anonymous users a base level of components 409 may be downloaded. Seed 41 1 then instantiates components 409.
  • Declarative application construction controls the use of procedural code in the application by defining the software application as a set of objects
  • the application can thus be defined as a hierarchical listing of objects and a listing of attributes for those objects, without procedural code used to define the application itself.
  • a document authored using extensible markup language (XML) and stored as XML file 507 is used to describe applications.
  • XML extensible markup language
  • XML documents are a useful format because they provide a standard grammar that is well understood. Moreover, the XML language is extensible, actively developed, and readily transportable through a variety of communications media using commonly available HTTP transport mechanisms. Routers, switches, network ports, and other network devices handle XML formatted documents and are configured to handle them appropriately and reliably. It is contemplated that other formats and transport mechanisms may be used such as HTML forms. CORBA objects and the like.
  • the application description and/or component (s) 409 are listed an XML document called an "application description document" 701 and 801 shown in greater detail FIG. 7 and FIG. 8 respectively.
  • An application description document 507 may be defined by a "well formed" XML document or a "valid" XML document associated with a data type description
  • the application description documents 701 and 801 comprises a plurality of nested hierarchically arranged elements where at least one of the elements corresponds to a component object 409 in the client application 402.
  • Fig. 7 shows a start-up application description document 701 listing components that are instantiated during start up or boot operations.
  • containers for local data, object storage, and windowing are specified.
  • the containers are defined to have specified behaviors and an interface defined by listed nodes. Primitive behaviors are included for connecting to the server, loading new classes, and managing update services.
  • the XML document 701 also identifies the code file (e.g., "BIN/GUI" where the startup components are located.
  • the NODE NAME declarations in Fig. 7 are attributes.
  • Fig. 8 illustrates an XML file 801 declaring the constituent components of an exemplary component 409 in accordance with the present invention.
  • the XML file 801 includes a hierarchical listing of nested components.
  • each behavior object includes a globally unique identification.
  • object identifications are indicated as "BEHAVIOR ID” and "EVALJD” in FIG. 8.
  • an element declaration includes a version identifier (not shown), although new versions can be indicated also by assigning the new version a new object ID value.
  • the ObjectlD information uniquely identifies each component object instance among every component object instance of that type that has ever been created using the system in accordance with the present invention.
  • This global identifier enables every object to know exactly what object has sent a message. This information can be important in a behavior- oriented system as. like biological systems, a components behavior can be modified based on who has asked the behavior to be carried out. Because objects within components are high level, somewhat generic objects they appear indistinguishable from each other except for this global identification feature.
  • the components 409 therein will evolve with new versions implemented to improve performance or offer additional functionality. Also, components 409 will be added and removed dynamically. Accordingly, the application description document can specify a specific version of an object or component 409 that is to be instantiated. By default, for example, the most current version from server 401 can be used, or the most current version available in cache structure 404. However, an application author can specify an older version using the ObjectlD and versionID attributes shown in FIG. 7.
  • Application changes are readily implemented by changing the application document description instance (e.g., documents like 701 and/or 801) and downloading the new instance to client application 402.
  • the components 409 listed in the newly downloaded application description document are instantiated with the attributes declared in the application description. Because the components 409 are not tightly connected, the new components can be instantiated dynamically without affecting other components.
  • server 401 includes the ability to push application description documents out to client 402 so that the update process is initiated by server 401 rather than by any action of client 402.
  • the present invention in a descriptive preferred embodiment, is described in terms of a distributed system and processes such as an enterprise computing system or framework using public communication channels such as the Internet.
  • an important feature of the present invention is that it is readily scaled upwardly and downwardly to meet the needs of a particular application. Accordingly, unless specified to the contrary the present invention is applicable to significantly larger, more complex network environments as well as small network environments such as conventional LAN systems.
  • the present invention instead of defining a static set of features, the present invention is completely dynamic, requesting features from a server at runtime as needed. It is contemplated that the present invention will be particularly useful in environments that need to be extensible and support a wide variety and dynamically changing set of application behaviors.
  • the present invention provides a method and mechanism for defining application components and so can be adapted to new components (and the behaviors implemented by those components) that were unavailable or unknown when the software application is first implemented.
  • FIG. 1 illustrating an exemplary system and processes 100.
  • a number of computing devices and groups of devices are interconnected through a network 101.
  • a LAN 102 and a LAN 103 are each coupled to network 101 through gateway machines 104 and 105 respectively.
  • LANs 102 and 103 maybe implemented using any available topology such as a hub and spoke, topology of LAN 102 and a loop topology of LAN 103.
  • LANs 102 and 103 may implement one or more server technologies including, for example a UNIX, Novell, or Windows NT, or peer-to-peer type network.
  • Each network will include distributed storage implemented in each device and typically includes some mass storage device coupled to or managed by a server computer.
  • Network 101 comprises, for example, a public network such as the internet or another network mechanism such as a fiber channel fabric or conventional WAN technologies.
  • LAN 102 includes one or more workstations such as personal computer
  • LAN 102 also includes a server machine 107 and one or more shared devices such as printer 108.
  • a hub or router 109 provides a physical connection between the various devices in LAN 102.
  • Router 104 is coupled through gateway 109 to provide shared access to network 101.
  • Gateway 109 may implement any desired access and security protocols to manage access between network 101 and devices coupled to network 102.
  • network 103 comprises a collection of workstations III. 1 12 and 1 13 that share a common connection to network 101 through gateway 105.
  • Distributed computing environment 100 further includes a wide variety of devices that have a logical connection to the network supported by a physical connection to network 101.
  • a stand alone workstation For example, a stand alone workstation
  • 114 may. couple to network 101 through a modem or other suitable physical connection.
  • notebook computer 1 1 and palmtop computer 1 16 may connect to network 101 using known connection technologies. It is contemplated that a wide variety of devices may join the distributed network 100 including mobile phones, remote telemetry devices, information appliances, and the like. An important feature of the present invention is that it tolerates and adapts to an environment filled with heterogeneous hardware devices coupled to the network 101 from a variety of physical locations.
  • Each of the devices shown in FIG. 1 may include memory, mass storage, and a degree of data processing capability sufficient to manage their connection to network 101.
  • the computer program devices in accordance with the present invention are implemented in the memory of the various devices shown in FIG. 1 and enabled by the data processing capability of the devices shown in FIG. 1.
  • FIG. 2 illustrates components of a system and processes 200 in accordance with the present invention.
  • Server 201 it powers computing environment 200 and provides access to all features as well as managing membership privileges.
  • the Client connects through network 203 to server 201.
  • Network 203 comprises any type of packet switched, circuit switched, or cell switched network architecture and may be implemented using copper, fiber optic, radio frequency or other available data communication technology.
  • Network 203 may comprise a local area network (LAN), wide area network (WAN), or public network such as the Internet.
  • LAN local area network
  • WAN wide area network
  • Internet public network
  • Client 202 can remain disconnected from server 201 for a indeterminate amount of time, such as in the case of a handheld or laptop computer that can used for unspecified periods of time away from a connection to network 203. While disconnected from network 203, client 202 relies on information and components held in client cache 204, and features and components previously obtained while connected to network 203.

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Information Transfer Between Computers (AREA)

Abstract

L'invention concerne des systèmes d'applications dynamiques (200), mettant en oeuvre, dans un mode de réalisation préféré, des objets orientés comportement, afin d'adapter l'environnement de fonctionnement des applications. Dans ces applications dynamiques, ne sont utilisés que des composants nécessaires à l'exécution de la fonctionnalité requise par l'utilisateur. L'application client dynamique (202) du mode de réalisation préféré de l'invention peut être commandée à l'aide d'un système opérationnel minimal, lequel peut comporter des ordinateurs portatifs, des assistants numériques, des appareils électriques et analogue, et elle met en oeuvre un programme de «prédémarrage» (211) comprenant un code d'exécution minimal servant à créer une connexion avec un serveur (201), à télécharger un ensemble de composants du système (223, 222) à partir du serveur (201) et à installer ces composants afin de créer une interface utilisateur. L'utilisateur peut ensuite demander la fonctionnalité voulue à partir du système. L'application client télécharge alors les composants nécessaires au client, soit pour exécuter la fonctionnalité, soit pour accéder à cette fonctionnalité ailleurs, dans un système informatique réparti (200).
EP00921505A 1999-03-29 2000-03-29 Systemes et procedes d'applications dynamiques destines a un environnement informatique reparti Withdrawn EP1171830A4 (fr)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US12692899P 1999-03-29 1999-03-29
US126928P 1999-03-29
PCT/US2000/008373 WO2000058855A1 (fr) 1999-03-29 2000-03-29 Systemes et procedes d'applications dynamiques destines a un environnement informatique reparti

Publications (2)

Publication Number Publication Date
EP1171830A1 EP1171830A1 (fr) 2002-01-16
EP1171830A4 true EP1171830A4 (fr) 2004-10-20

Family

ID=22427423

Family Applications (1)

Application Number Title Priority Date Filing Date
EP00921505A Withdrawn EP1171830A4 (fr) 1999-03-29 2000-03-29 Systemes et procedes d'applications dynamiques destines a un environnement informatique reparti

Country Status (5)

Country Link
EP (1) EP1171830A4 (fr)
JP (1) JP2002540529A (fr)
AU (1) AU4181400A (fr)
CA (1) CA2367889A1 (fr)
WO (1) WO2000058855A1 (fr)

Families Citing this family (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20020124046A1 (en) * 2001-02-20 2002-09-05 Fischer William A. Peripheral devices which manage application upload to computing devices
US20050160414A1 (en) * 2004-01-21 2005-07-21 Nokia Corporation System and method for dynamically adding features to software applications
JP2006331307A (ja) * 2005-05-30 2006-12-07 Hitachi Kokusai Electric Inc 分散システム
WO2007090235A1 (fr) 2006-02-06 2007-08-16 Uiactive Ip Pty Ltd Système pour la réalisation de sessions de communications multimédia
EP2360581A1 (fr) 2010-01-18 2011-08-24 Thomson Licensing Procédé, système et dispositif pour l'exécution d'une application logicielle
US8856651B2 (en) * 2010-06-04 2014-10-07 Samsung Electronics Co., Ltd. Remote user interface cooperative application
US10558487B2 (en) 2015-12-11 2020-02-11 Microsoft Technology Licensing, Llc Dynamic customization of client behavior
CN110012086B (zh) * 2019-03-27 2023-10-20 努比亚技术有限公司 提高应用下载及安装速度的方法、终端及存储介质
CN113761437A (zh) * 2021-02-09 2021-12-07 北京沃东天骏信息技术有限公司 一种信息处理方法及装置、存储介质

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0367709A1 (fr) * 1988-11-04 1990-05-09 International Business Machines Corporation Personnalisation d'interface utilisateur pour programmes d'application
EP0793170A1 (fr) * 1996-02-29 1997-09-03 Sun Microsystems, Inc. Système et procédé de configuration automatisée d'ordinateurs domestiques
US5689708A (en) * 1995-03-31 1997-11-18 Showcase Corporation Client/server computer systems having control of client-based application programs, and application-program control means therefor
US5717923A (en) * 1994-11-03 1998-02-10 Intel Corporation Method and apparatus for dynamically customizing electronic information to individual end users
EP0848341A2 (fr) * 1996-11-22 1998-06-17 Webtv Networks, Inc. Mise-à-niveau à distance d'un logiciel par un réseau
US5828887A (en) * 1996-05-23 1998-10-27 Electronic Data Systems Corporation Network based program loader system and method of operation

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5446896A (en) * 1990-12-17 1995-08-29 Next, Inc. Method and apparatus for inter-program communication
US5835727A (en) * 1996-12-09 1998-11-10 Sun Microsystems, Inc. Method and apparatus for controlling access to services within a computer network
US6044465A (en) * 1997-07-07 2000-03-28 International Business Machines Corporation User profile storage on and retrieval from a non-native server domain for use in a client running a native operating system

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0367709A1 (fr) * 1988-11-04 1990-05-09 International Business Machines Corporation Personnalisation d'interface utilisateur pour programmes d'application
US5717923A (en) * 1994-11-03 1998-02-10 Intel Corporation Method and apparatus for dynamically customizing electronic information to individual end users
US5689708A (en) * 1995-03-31 1997-11-18 Showcase Corporation Client/server computer systems having control of client-based application programs, and application-program control means therefor
EP0793170A1 (fr) * 1996-02-29 1997-09-03 Sun Microsystems, Inc. Système et procédé de configuration automatisée d'ordinateurs domestiques
US5828887A (en) * 1996-05-23 1998-10-27 Electronic Data Systems Corporation Network based program loader system and method of operation
EP0848341A2 (fr) * 1996-11-22 1998-06-17 Webtv Networks, Inc. Mise-à-niveau à distance d'un logiciel par un réseau

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
See also references of WO0058855A1 *

Also Published As

Publication number Publication date
WO2000058855A1 (fr) 2000-10-05
EP1171830A1 (fr) 2002-01-16
JP2002540529A (ja) 2002-11-26
AU4181400A (en) 2000-10-16
CA2367889A1 (fr) 2000-10-05

Similar Documents

Publication Publication Date Title
US8448160B2 (en) Application programming interface for identifying, downloading and installing applicable software updates
US7069553B2 (en) Universal deployment tool
US6895586B1 (en) Enterprise management system and method which includes a common enterprise-wide namespace and prototype-based hierarchical inheritance
CA2390440C (fr) Systeme et methode pour une architecture a niveaux multiples faisant appel a la notation abstraite d'application
US6353926B1 (en) Software update notification
US8655738B2 (en) Contextual computing system
US7797698B2 (en) Method and apparatus for dynamic middleware assembly
US7493563B2 (en) Using content aggregation to build administration consoles
US7739310B1 (en) Extensible portlet templates
US7596611B1 (en) Method and apparatus for maintaining information for use in the configuration of a client
US20060020883A1 (en) Web page personalization
US8151256B2 (en) Platform independent registry framework
EP1061446A2 (fr) Gestion d'entreprise orientée Web avec possibilité de multiples zones d'archivage
US20030163807A1 (en) Weighted selection of target systems for distributed software installation
US20020188941A1 (en) Efficient installation of software packages
US20040034853A1 (en) Mobile download system
US20030225927A1 (en) Method and apparatus for multiplatform migration
EP1468375A1 (fr) Systeme et procede pour generer de maniere autonome des ponts d'interoperabilite entre des sources de donnees heterogenes sur la base d'une modelisation semantique derivee d'une ontologie auto-adaptative
WO2001061470A2 (fr) Procede et appareil permettant la migration multi-plates-formes
JP2008507755A (ja) インデックスベースのパラメータアクセス及びこれを使用するためのソフトウェア
US8640146B2 (en) Providing extensive ability for describing a management interface
US20070233717A1 (en) Generic product configuration framework for building product specific installers
EP1171830A1 (fr) Systemes et procedes d'applications dynamiques destines a un environnement informatique reparti
CN102027448A (zh) 用于使软件可用于下载的系统和方法
Parihar Asp. net Bible

Legal Events

Date Code Title Description
PUAI Public reference made under article 153(3) epc to a published international application that has entered the european phase

Free format text: ORIGINAL CODE: 0009012

17P Request for examination filed

Effective date: 20011009

AK Designated contracting states

Kind code of ref document: A1

Designated state(s): AT BE CH CY DE DK ES FI FR GB GR IE IT LI LU MC NL PT SE

AX Request for extension of the european patent

Free format text: AL;LT;LV;MK;RO;SI

A4 Supplementary search report drawn up and despatched

Effective date: 20040903

RIC1 Information provided on ipc code assigned before grant

Ipc: 7G 06F 15/16 A

Ipc: 7G 06F 9/445 B

STAA Information on the status of an ep patent application or granted ep patent

Free format text: STATUS: THE APPLICATION IS DEEMED TO BE WITHDRAWN

18D Application deemed to be withdrawn

Effective date: 20041124