WO1999040512A1 - Method and system for user defined interactions between plurality of active software applications - Google Patents
Method and system for user defined interactions between plurality of active software applications Download PDFInfo
- Publication number
- WO1999040512A1 WO1999040512A1 PCT/US1999/002801 US9902801W WO9940512A1 WO 1999040512 A1 WO1999040512 A1 WO 1999040512A1 US 9902801 W US9902801 W US 9902801W WO 9940512 A1 WO9940512 A1 WO 9940512A1
- Authority
- WO
- WIPO (PCT)
- Prior art keywords
- trigger
- action
- user
- objects
- provider
- Prior art date
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
- G06F9/542—Event management; Broadcasting; Multicasting; Notifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45504—Abstract machines for programme code execution, e.g. Java virtual machine [JVM], interpreters, emulators
- G06F9/45508—Runtime interpretation or emulation, e g. emulator loops, bytecode interpretation
- G06F9/45512—Command shells
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
- G06F9/543—User-generated data transfer, e.g. clipboards, dynamic data exchange [DDE], object linking and embedding [OLE]
Definitions
- the invention relates generally to computer systems, which supports multiple parallel execution of a plurality of application programs ("applications").
- applications application programs
- the invention concerns a system and method using a user-definable software interaction system (USIS) through which a user can assign from an action pool and a trigger pool one or more actions (responses) to execute upon occurance of a triggering event (condition).
- USIS user-definable software interaction system
- User is defined as a person using a computer who has knowledge of the basic functionality of applications providing varying degrees of specialized services (ranging from general, for example a word- processor, to specific, for example a stock market activity monitor). In general, users do not know the art of software programming.
- a "User-environment” is defined as a configuration of a computer environment (that is hardware, software components, and operating system) that is designed to facilitate the use of the components by a particular user or type of user.
- Software component is defined as a computer program that enhances the usefulness and functionality in the combined utilization of the computer hardware and operating system; such enhancements include allowing a user to perform tasks not already supported by the operating system and improving upon the performance of tasks already supported by the operating system.
- a software component can run independently through operating system commands (as do executable files in the Windows operating System, Windows is a trademark of the Microsoft Corporation) or can require invocation by another software component currently being executed (as ActiveX modules do when instantiated in an Object Linking and Embedding (OLE)
- Software components can be used directly by users and other software components.
- Software components accessed directly by the user through a user-interface for the purposes of completing specific kinds of tasks are also called applications.
- Interface is defined as a conceptual and operational communication point (a point where data is passed or shared) between two participants in a system.
- An interface can be either programmatic or user-driven.
- a programmatic interface can be implemented in a variety of ways depending upon the computer environment (that is, the operating system, hardware configuration, software configuration).
- Programmatic interfaces assume that two participants (usually individual software components, but also advanced scripting mechanisms provided by some applications) agree upon the protocol for using the interface, wherein one or both participants expose (that is, make visible and accessible) to the other participant a means of receiving, retrieving, and/or modifying data.
- a software component can have multiple implementations of the same inte:face, thus providing a variety means for communication with other participating software components.
- the interfaces used are implemented through conventional methods (that is, Common Object Model (COM) interfaces, C++ methods, and system calls) familiar to those skilled in the art of object-oriented Windows programming (Windows is a trademark of Microsoft Corporation); other conventional methods, however, can be used to implement the interfaces of which the invention consists.
- a user-driven interface is also referred to as a "user-interface.”
- a software component may or may not have a user-interface, which typically renders or allows manipulation of data relevant to an application.
- the user-interface includes a variety of means of allowing input from the user and output to the user, such as the graphical representation of data on a computer screen (for example, a document window, a stock market ticker monitor), a graphical representation of means to manipulate application data or other components of the computer environment (for example, buttons, menus, dialog boxes), physical output devices (for example, sound devices, CRT displays), physical input devices (for example, keyboards, mice, voice input mechanisms).
- a computer screen for example, a document window, a stock market ticker monitor
- a graphical representation of means to manipulate application data or other components of the computer environment for example, buttons, menus, dialog boxes
- physical output devices for example, sound devices, CRT displays
- physical input devices for example, keyboards, mice, voice input mechanisms
- GUIs Graphical user interfaces
- a GUI/operating system of the preferred embodiment reside within a computer-readable media that allows one or more users to initiate the manipulation of displayed object icons and text on a device Any suitable computer-readable media may retain the GUI and operating system
- the Apple Macintosh operating system, Microsoft Windows 98 or NT operating system, and UNIX X-Windows are common and very popular examples of GUIs, illustrating the fact that the advantages of GUIs over conventional text-based user interfaces are widely recognized As a result of most PC using GUIs, a variety of different means for organizing and navigating through various applications have been developed
- the operational capability of a user interface of the windowing system type is fundamental to, but distinct from, the invention
- the GUI includes conventional ways for initiating and managing application program execution and for initiating, managing, activating, and deactivating application windows on the display Apple and Macintosh are trademarks of Apple Corporation
- the invention assumes the existence of a computer environment providing one or more means of communication among software components through conventional programmatic interfaces that can be tailored to specific purposes
- An exemplary embodiment enhances and customizes a conventional means of inter-software communication present in the Windows operating system environment "Object Linking and Embedding" (OLE) automation by Microsoft Corporation of Redmond, Washington, is defined as a system of protocols and interfaces giving software component developers the ability to create applications that expose objects to programming tools and macro languages for creating and manipulating objects exposed in one application from another application and to create tools that access and manipulate objects
- OLE automation represents custom controls, which are part of the Windows libraries suite
- Custom controls provides programmers with the facility to define commands, write program modules that correspond to the commands, and to list and describe each Windows "instance" (that is, each manifestation of a template of a Windows entity, such as a GUI window)
- Custom control supports the concept of classes of instances, wherein each instance can be assigned to, and hence be described in part by, one of a plurality of different instance type classes
- a class
- GUIs for various applications are based upon windowing schemes, which support simultaneous execution of several applications
- Each executing application may be provided with one or more windows which affords users a way to provide input to the executing application and to receive output from it
- OLE-type automation poses are the difficulty for users to define complex reactions from a triggering event Since the user generally does not have the capability of writing batch or script programming for an application, the user cannot script sophisticated interaction among applications in the user-environment
- macro languages such as, WordBasic, a scripting language provided in Microsoft WORD application program
- users are not able to script complex interaction among different types of software components without using programmatic means.
- a method for allowing user to customize simple procedures is often provided.
- One particular user-interface the Microsoft Windows (trademarks of Microsoft Corporation) operating system, has provided in its applications the ability to associate an action (response) with a triggering input event such as a single "click" on an icon, pressing a button, pressing a hot or accelerator key
- a triggering input event such as a single "click" on an icon, pressing a button, pressing a hot or accelerator key
- the customization dialog-boxes provided in Microsoft applications, such as WORD and EXCEL are examples of this form of user-definable software customization.
- scripting is often limited to a one-to-one relationship between triggering events and subsequent actions.
- Another problem is that these user-definition mechanisms do not provide a means of incorporating triggers and actions provided by software components yet to be included in the user-environment.
- the present invention provides a solution to these problems by allowing users to non-programmatically script sophisticated software interaction. This concerns mteraction among software components that includes the triggering of not only a singular action, but also series of actions that may or may not depend upon the contextual information available in the user-environment (such as, property values of software components or the state of activity in software components) at the time of execution
- the primary advantage of the present invention is to provide an efficient and effective action manager method that allows the user to assign a list of one or multiple actions (responses) to a single triggering event (condition), wherein the actions and triggering events may occur in multiple software components not directly aware of each others existence
- Trigger is defined as a computer event that initiates execution of a script of actions, a Trigger can be a) a mouse event (clicking on a hypertext link, single and double clicking on an icon, a field, or any program control area, pressing a button), b) a keyboard event (pressing a key, or a sequence of keys), c) a voice generated event and d) any software generated event (conditional, scheduler generated, or any OLE object state)
- Action is defined as a process or function that can be performed by a software component An action can be a) execution of any software module, b) invocation of a method in a software object, c) setting or querying a property in a software object Whenever the user activates the trigger, the system invokes the specified actions The system makes available to a user a
- the invention provides an executive means for generating trigger providing software components and action providing software components for assignment and execution at a users disposal by implementing programming interfaces making available trigger and actions objects
- the invention is preferably implemented with an interactive computer system having a keyboard or other user specified input device, a display, and a user interface capable of initiating execution of one or more application programs
- the preferred use of the invention is financial market quote application that incorporates multiple financial service application programs
- FIG 1 is a diagram illustrating a user-definable interaction system using the invention
- FIG 2 is a diagram illustrating the method of assigning and configuring trigger scripts for selected action objects used in the system of FIG 1
- FIG 3 is a diagram illustrating the method of executing the trigger scripts that are assigned as configured by the method in FIG 2,
- FIG 4 is a block diagram illustrating an exemplary system for using the invention
- FIG 5 is a block diagram illustrating a terminal as used in FIG 4,
- FIG 6 shows an exemplary container application for using the invention in financial market quote application used in the exemplary system of FIG 4,
- FIG 7 shows a way for inputting a trigger object to the action manager system in the financial application shown in FIG 6,
- FIG 8 shows a continuation of the process shown in FIG 7, and FIG 9 shows a completion of the process shown in FIG 8 BEST MODE FOR CARRYING OUT THE INVENTION
- a user-definable interaction software system (USIS) 1000 is driven by two basic elements trigger objects and action objects These elements each operate on two layers the software-interaction layer 207 and the user-definition layer 205
- the USIS uses Component Object Model (COM) technology that is well known in the software arts to implement the present invention using the functionality and capabilities of various operating system platforms (for example, Microsoft Windows and Apple operating system (Microsoft and Windows are trademarks of Microsoft Corporation in Redmond, Washington and Apple is a trademark of Apple, Inc , Cupertino, CA)
- Microsoft Windows and Windows are trademarks of Microsoft Corporation in Redmond, Washington and Apple is a trademark of Apple, Inc , Cupertino, CA
- Trigger Objects' Trigger objects are unique events occurring in participating module objects. Such events can take a variety of forms that include but are not limited to a) the results of user defined activity that include pressing a function key, clicking an on-screen button, selecting an item from a menu, entering information into a field, issuing a voice command, or other user defined event, b) notifications from non-user input sinks that include information from network data streams (for example when a keyword is found in a data packet from a news feed), operating system messages (for example, when a window is activated), common software interaction protocols (for example, when a COM method is called or a specific type of DDE message is received), proprietary messaging protocols (for example, when a scheduling program broadcasts an alarm), and c) changes in monitored elements of the global environment that include network connections (for example, whether a certain server remains available), the system clock (for example, whether a specific amount of time has elapsed), and a state of other applications (for example, whether an Internet browser has been closed)
- Action Objects are unique commands for executing specific software functionality
- Such activity can include a variety of forms that include but are not limited to a) execution of commands inherent in the global environment—such as, issuing standard operating system commands (for example, executing modules, opening documents, closing windows), following commonly supported software-interaction protocols (for example, creating objects through COM), setting accessible system variables (for example, printer defaults), and b) execution of commands provided by specific applications or modules that include calling exported functions (for example, OLE automation methods, dynamic link libraries ( DLL)), setting public variables (for example, OLE Object Properties, currently open document, currently open user resource locator (URL))
- Layers of Interaction Triggers and actions operate at two layers of abstraction, both of which are necessary for allowing user-definable software scripting that include a) Software-Interaction Layer that at this level, triggers and actions are uniquely identified elements of participating software modules as described below (Note that interaction at this layer denotes interaction among software components, not interaction between the user and a software component ), and
- the Action Manager 200 provides interfaces for allowing users to create trigger-action object relationships at the User-Definition Layer (that is, without users having to know the underlying software configuration or architecture)
- the Action Manager also provides software interfaces for communicating with participating components
- the Action Manager translates user-meaningful identifiers for trigger and action objects to and from software-meaningful identifiers for triggers and actions II.
- USIS 1000 is composed of three types of components Trigger Providers, Action Providers, and Action Manager (Note that the Action Manager must be a single instance of a single module, but that Providers (especially, but not exclusively, in object models, such as COM) can have multiple instances of a single class of Provider Unless otherwise noted, references to "Providers" denote a class of Provider and not a specific instance Action Manager 200 interacts with multiple Trigger Providers through one or more triggering protocols Action Manager interacts with multiple Action Providers through one or more activation protocols Trigger Providers and Action Providers supporting one or more of the protocols supported by Action Manager are considered compliant A protocol determining compliance makes the following assumptions' a) Providers can be distinguished by either class or instance according to a public identifier that include but are not limited to class ED in OLE, class name in OLE, file names (for example, for executable programs), references to specific instantiations (for example, a process identifier, to specific windows of running applications,
- Trigger Providers can notify the Action Manager 200 when specific events occur through a shared interface that include but are not limited to common interfaces for software interaction (for example, COM interfaces), proprietary interfaces for software interaction (for example, a specific OLE event, a specific window message), and e) Action Manager 200 has means of invoking actions in Action Providers through a shared interface that include but are not limited to the operating system (for example, executing an module, opening a document), common interfaces for software interaction (for example, COM interfaces), proprietary interfaces for software interaction (for example, a specific OLE automation method, a call to a function in a sharable library, a specific message).
- Trigger Providers can notify the Action Manager 200 when specific events occur through a shared interface that include but are not limited to common interfaces for software interaction (for example, COM interfaces), proprietary interfaces for software interaction (for example, a specific OLE event, a specific window message), and e) Action Manager 200 has means of invoking actions in Action Providers through
- Trigger Provider Proxies and Action Provider Proxies enable non-compliant Trigger Providers and Action Providers to participate in the system.
- Proxies support both Action Manager compliant protocols and other protocols for interacting with non- compliant Providers.
- the protocols supported by both Providers and Action Manager operate at the Software-Interaction Layer.
- the Action Manager also supports protocols that operate at the User-definition Layer. How specific system components implement USIS protocols and interfaces is described in more detail below.
- Action Manager The Action Manager 200 establishes the connection between the Software-interaction Layer and the User-definition Layer by associating Provider and element identifiers with identifiers meaningful in a specific user-environment.
- the user-environment identifiers enable scripting of specific types of software interaction without requiring the user to know about the underlying software architecture and configuration.
- the Action Manager In order to manage this software interaction the Action Manager must support protocols for software interaction, for user definition, and for translation between the Software-interaction Layer and the User-definition Layer.
- the Action Manager supports the following protocols at the layer of software-interaction: a) a means of identifying Trigger Providers; b) one or more interfaces and protocols for gathering trigger identifiers from available Trigger Providers; c) one or more interfaces and protocols for receiving notification of triggered events from Trigger Providers; d) a means of identifying available Action Providers; d) one or more interfaces and protocols for gathering action identifiers from Action Providers; and e) one or more interfaces and protocols for using the action identifiers to invoke specific responses in Action Providers.
- the Action Manager supports one or more interfaces and protocols for creating, editing, and deleting Trigger Scripts as discussed below.
- the Action Manager includes three sub-components for translating identifiers of triggers and actions to and from different layers of interaction: a) a Trigger Pool, b) an Action Pool, and c) a collection of Trigger Scripts.
- the Trigger Pool: A Trigger Pool 201 enables the translation of triggers between the User-definition Layer and the Software-interaction Layer by associating Trigger Providers and identifiers for their triggers with identifiers tailored to the user- environment.
- the Trigger Pool is essentially a list of trigger objects available to a specific user-environment, wherein each list item includes: a) identifiers requisite for software-interaction protocols that include i) an identifier for a Trigger Provider (class or instance), ii) an identifier for a specific trigger within the Trigger Provider identified, and c) an optional list of parameters that can be obtained from the trigger; and b) identifiers requisite for user-definition protocols of a user-meaningful identifier for the trigger and (optionally) an identifier for the Trigger Provider.
- the Action Manager supports the following functionality for maintaining the Trigger Pool: a) means of learning about software-defined identifiers for triggers and Trigger Providers available in the global environment (that is, providing one or more interfaces for learning about available triggers; b) one or more selective interfaces 305 that are programmatic (for example, a COM interface, a DDL) and/or user-driven (for example, a dialog box, a menu command.) for generating the Trigger Pool 201 (that is, assigning user-meaningful identifiers to software-defined identifiers and storing to a central list); c) one or more means of saving the current state of the Trigger Pool and restoring that state at a later time and another location (for example, reading and writing a file, serializing to and from an OLE compound document, reading and writing system registry entries); and d) one or more interfaces 306 used to query the Trigger Pool for its content, in particular the user friendly identifiers for available triggers.
- the Action Pool 202 enables the translation of actions between the User-definition Layer and the Software-interaction Layer by associating Action Providers and identifiers for their actions with identifiers tailored to the user- environment.
- the Action Pool is essentially a list of actions available to a specific user- environment, wherein each list item includes: a) identifiers requisite for software- interaction protocols that include an identifier for an Action Provider, an identifier for a specific Action within the Action Provider identified, and an optional set of arguments that can be passed to the Action Provider; and b) identifiers requisite for user-definition protocols that include a user-meaningful identifier for the Action and (optionally) an identifier for the Action Provider, and a directive on which instance of an Action Provider class should perform an action—that is, a new instance, the first available, or a specific instance.
- the Action Manager supports the following functionality for maintaining the Action Pool that include: a) means of learning about software-defined identifiers for actions and Action Providers available in the global environment (that is, providing one or more interfaces for learning about actions); b) one or more programmatic and/or user- driven interfaces 307 for populating the Action Pool (that is, assigning user-meaningful identifiers to software-defined identifiers and storing to a central list); c) one or more means of saving the current state of the Action Pool and restoring that state at a later time and another location (for example, reading and writing a file, serializing to and from an OLE compound document, reading and writing system registry entries); and d) one or more interfaces 308 used to query the Action Pool for its content, in particular the user friendly identifiers for available actions.
- Trigger Scripts associate specific trigger identifiers with one or more specific action identifiers.
- the Action Manager 200 maintains a collection of Trigger Scripts, allowing them to be saved in some form (for example, in a compound document, in the system registry).
- Each trigger script includes information necessary for software interaction, including: a) an identifier for an instance of a Trigger Provider; b) an identifier for a specific trigger offered by the identified Trigger Provider; and c) a list of actions, wherein each list item includes an identifier for an Action Provider (including information specifying the scope of activation [for example, within a new instance of an Action Provider, within a specific previously created instance of an Action Provider]), an identifier for a specific action in the Action Provider, and an optional set of parameters.
- the Action Manager 200 supports the following functionality for maintaining Trigger Scripts that include: a) one or more interfaces 309 (that is, selectively programmatic and user-driven) for creating Trigger Scripts (that is, allowing users to associate a user-meaningful identifier for a trigger with one or more user-meaningful identifiers for actions and then storing the corresponding software-meaningful identifiers in a list, wherein the translation between user-meaningful and software- meaningful identifiers refers to the Trigger Pool and the Action Pool created for a specific user-environment); and b) one or more means of saving and restoring the Trigger Scripts at a later time and another location (for example, reading and writing a file, serializing to and from an OLE compound document, reading and writing system registry entries).
- Trigger Providers The Trigger Provider is a software component that maintains a list of events each associated with a unique identifier
- Compliant Trigger Providers support one or more of the trigger protocols also supported by the Action Manager.
- Non-compliant Trigger Providers can participate in USIS 1000 through a Trigger Provider Proxy, which translates protocols not supported by the Action Manager to and from those which are supported.
- Instantiations of compliant Trigger Providers and Trigger Provider Proxies must each include the following: a) a list of scriptable triggers (for example, mouse-click of an on-screen button, selection from a menu, receipt of an updated message) each associated by an identifier compatible with one of the protocols supported by Action Manager (for example, OLE LD, integer value, unique string); b) one or more compliant (that is, supported by a protocol also supported by Action Manager) interfaces for publishing the list of identifiers for scriptable triggers to the Action Manager; and c) one or more compliant interfaces for notifying the Action Manager of the identifier of a scriptable trigger when the event associated with it has occurred.
- a list of scriptable triggers for example, mouse-click of an on-screen button, selection from a menu, receipt of an updated message
- Action Manager for example, OLE LD, integer value, unique string
- compliant interfaces for publishing the list of identifiers for scriptable triggers to the Action Manager
- the Action Provider is a software component that maintains a list of commands each associated with a unique identifier.
- Compliant Action Providers support one or more of the activation protocols also supported by the Action Manager.
- Non-compliant Action Providers can participate in USIS 1000 through an Action Provider Proxy, which translates protocols not supported by the Action Manager to and from those which are supported.
- Instantiations of compliant Action Providers and Action Provider Proxies must each include the following: a) a list of scriptable actions (for example, opening a document, drawing a chart, making a request for data available over a network, and navigating to a specific URL) each associated by an identifier compatible with one of the protocols supported by Action Manager (for example, OLE
- the Action Manager 200 is implemented as a C++ object using C++ programming language within an OLE container application designed for execution within the Windows operating system using well known OLE programming techniques.
- a "container" is defined as a software component having multiple contained applications. As is well known in the art, this container application is associated with menu bars, optional scrolling view bars and partitioned display areas. Within these latter display areas, there can be text, graphics, multiple applications, and the like. An example of this is Microsoft WORD word processing program (a trademark of Microsoft Corporation).
- the containing application is both a Trigger Provider and an Action Provider, for which the Action Manager object provides a proprietary interface for executing USIS 1000 protocols within a software module.
- the Action Manager 200 is also an OLE automation object participant, using OLE automation methods and events for executing the USIS protocols using multiple independent software modules.
- the Action Manager sub-components are also implemented as C++ objects. There is not a one-to-one correspondence between sub-components (that is, the Trigger Pool, the Action Pool, and Trigger Scripts); rather, this preferred embodiment of the
- Action Manager stores a collection of C++ objects corresponding to Providers.
- a single Provider object can be both a Trigger Provider and an Action Provider, hence the use of a single object to implement both types of interfaces).
- Each of these Provider objects is uniquely identified to the Action Manager by the concatenation of a) a string representing the OLE Program LD, which corresponds to the identifier for a class of Provider, (for example, "Navigator”; "DynamicQuote") and b) a string representing the object name, which corresponds to a specific instance of a class of Provider (for example, "Services" as an instance of the Navigator class; "Commands” as another instance of the Navigator class; "DynamicQuote.2" as the second instance of the Quote class).
- Action Pool each of which must store software-meaningful identifiers for Providers
- User-meaningful identifiers for the providers can be retrieved by using the Program ID to lookup a user-friendly name in the system registry using the Windows operating system, alternatively, the object name can be used as a user-meaningful identifier
- Each Provider object stores a collection of user-meaningful identifiers for the actions its supports (if any exist)
- a software-meaningful identifier is mapped to each user-meaningful identifier This mapped collection implements the remaining functionality of the Action Pool, which, stores action identifiers both for the Software- interaction Layer and for the User-definition Layer
- Each Provider object also stores a mapped collection of software-meaningful identifiers for the triggers it supports (if any exist)
- a "DWORD" value serves as a unique key for locating the trigger within the Provider objects trigger collection, as well as a software-meaningful identifier representing part of the functionality of the Trigger Pool
- T ⁇ gger Providers take the form of a) OLE automation controls or b) the application containing the Action Manager object Compliant Trigger Providers maintain a collection of software-meaningful trigger identifiers (a DWORD value in this embodiment), each of which is associated with a specific event Trigger Providers make themselves visible to the Action Manager via the trigger publication interface 301, trough which they pass a DWORD value identifying a trigger to the Action Manager object 200, which stores the DWORD value in the Trigger Pool 201 as described above
- This interface 301 has two implementations in this embodiment of USIS a) a set of C++ methods exposed by the Action Manager within a software module (that is, within the application containing the Action Manager), and b) a set of proprietary OLE
- Trigger Providers notify the Action Manager when an event which is associated with a trigger has occurred via trigger notification interface 302, through which they pass a DWORD value identifying the event triggered to the Action Manager object 200 which uses the DWORD value and the identifier of the Trigger Provider to locate a
- Trigger Script to execute FIG 3, as discussed below, outlines what happens within the Action Manager from the point it receives the trigger identifier through the trigger notification interface from the Trigger Provider
- This interface 302 has two implementations in this embodiment of USIS a) a C++ method exposed by the Action Manager within a software module (that is, within the application containing the Action Manager); and b) a proprietary OLE Automation event exposed by compliant Trigger Providers to the Action Manager.
- Trigger Provider Proxies in this embodiment, are implemented as OLE Automation controllers and OLE Containers.
- the application containing the Action Manager is an example of the OLE Container type of Trigger Provider Proxy. As a proxy, it supports both Action Manager interfaces 301, 302 and interfaces 310 required by specific kinds of non-compliant Trigger Providers— in this case, OLE Automation objects that do not support the proprietary OLE events implement in this embodiment of the Action Manager.
- the Proxy enables non-compliant Trigger Providers to participate in the system by assigning OLE events in the non-compliant component to unique
- the Proxy then uses in protocols compliant to the Action Manager.
- the OLE Container version of the Trigger Provider Proxy would query (through conventional OLE methods) the OLE automation events provided by a non-compliant Trigger Provider. This Proxy would then assign a unique identifier to each event, publish the events to the Action Manager through a compliant interface 301, and wait for a notification of the occurrence of one of the events through conventional OLE protocol.
- the Proxy Upon receiving a notification of an event from the non-compliant Trigger Provider, the Proxy then notifies the Action Manager through a compliant interface 302. From that point, the flow of action is identical to that which occurs with a compliant Trigger Provider.
- Action Providers take the form of a) OLE automation controls and b) the application containing the Action Manager object. These controls maintain a collection of software- meaningful action identifiers, each of which is associated with a specific command or method. Action Providers make themselves visible to the Action Manager via the action publication interface 303, through which they publish a string value and a DWORD value identifying an action to the Action Manager object 200, which stores these values in the Action Pool 202 as described above.
- This interface 303 has two implementations in this embodiment of USIS: a) a set of C++ methods exposed by the Action Manager within a software module (that is, within the application containing the Action Manager), and b) a proprietary, but publicly accessible, section in the Windows operating system registry
- the Action Manager executes actions stored in a Trigger Script via the activation interface 304, through which the Action Manager invokes the methods stored in Trigger Script in an Action Provider FIG 3 as discussed below outlines how the
- Action Manager determines what action to invoke in what Action Provider in the process of executing a particular script
- This interface 304 has two implementations in this embodiment of USIS a) a proprietary command message for invoking actions from within a software component (in this case a type of window message as might be used in typical Windows based applications), and b) a proprietary OLE Automation method exposed by compliant Action Providers
- Action Provider Proxies are implemented as OLE Automation controllers and OLE Containers
- the application containing the Action Manager is an example of the OLE Container type of Action Provider Proxy As a proxy, it supports both Action Manager interfaces 303, 304 and interfaces 310 required by specific kinds of non-compliant Action Providers— in this case, OLE Automation objects that do not support the proprietary OLE events implemented in this embodiment of the Action Manager
- the Proxy enables non-compliant Trigger Providers to participate in the system by assigning OLE events in the non-compliant component to unique action identifiers, which the Proxy then uses in protocols compliant to the Action
- the OLE Container version of the Action Provider Proxy would query (through conventional OLE methods) the OLE automation events provided by a non-compliant Action Provider (for example, Microsoft's Web browser control) This Proxy would then assign a unique identifier to each OLE method, publish these methods to the Action Manager through a compliant interface 303, and invoke the method when necessary (that is, when the Action Manager executes an action the proxy through a compliant interface) through conventional OLE protocols Until an action in the Proxy is invoked through a compliant interface, the flow of execution is identical to that which occurs with a compliant Action Provider Referring to FIG 2, which is a flow diagram illustrating the method 204 of configuring the action and trigger objects using USIS shown in FIG 1 in the user- definition layer 205 section A user begins the configuration at step 40 by assigning trigger objects to the assigned action objects from the Trigger Pool and Action Pool A user selects at least one trigger at step 42 and an action object from the Action Pool at step 44 At step 46, a determination is made whether there are
- Trigger Scripts 203 Collection of Trigger Scripts 203, if not go to step 64 and determine if there are more Trigger Objects to configure in USIS. If no more Trigger objects are to be assigned, then end the process at step 66
- FIG 3 is a flow diagram illustrating the method 206 of executing the action and trigger objects using USIS shown in FIG 1 in the software interaction layer 207 section
- a user begins the execution of a trigger object at step 70 when the Action Manger 200 receives a user specified input event associated with the assigned trigger object previously defined in the method 204 in FIG 2
- step 72 get Trigger Provider Class, Instance, Trigger LD (the parameters)
- step 73 find the Script for the Instance, Class or Default from the Collection of Trigger Script 203
- a determination is made whether a Trigger Script is found for the Class Instance, Class or Default and if not, the execution ends If there is a Trigger Script, go to step 76 and obtain the Action object from the Script (Action Provider ID and Action LD) and then proceed to step 77 and determine whether are arguments If there are arguments, then get and set the argument for the action in step 78 until there are no more arguments as determined by step 79
- step 80 find an
- the national computer center 10 is connected through an information transmission structure 12 including transmission lines, regional data centers, and concentrator sites (all not specifically shown) Other services, independent of the financial data, are provided from third party services 13 by conventional means of data transmission
- a subscriber server 14 which can be multiple servers collectively shown as the server 14, is connected to the information transfer structure 12 and third party services 13 and through a local area network 15 (or the Internet) to a plurality of branch terminals 16 Three are shown but there could be any practical number
- the server 14 is a NT or UNIX-based machine executing either NT or UNIX operating systems with an appropriate application program interface (API) and the terminals have a Microsoft Windows-based operating system in personal computers (PC) which run a commercially-available user interface such as the Microsoft Windows NT system
- API application program interface
- the terminal 16 typically includes a commercially-available PC 17, which is capable of supporting concurrent execution of a plurality of application programs 18, 19, and 20
- the application programs 18-20 are interfaced through an OLE container applications 22 that is joined conventionally to a graphical user interface 24
- the graphical user interface is a software system which allows a user to directly manipulate the application programs 18, 19, and 20 by means of conventional I/O devices such as a CRT display 25, a keyboard 26, or a mouse 27, or other user specified device, or all of them if desired
- a file manager 30 is alsoprovided which opens, maintains, and closes files on behalf of the navigator function 22 and the graphical user interface 24
- the file manager 30 operates in conjunction with one or more peripheral storage devices such as a direct access storage device (hard disk drive) 31
- GUI 24 of the present invention is shown in connection with graphical display and control of executing multiple active applications, and in particular, financial service applications
- the Reuters Plus (a trademark of Reuters Limited) financial service navigator is used on a platform operating system with GUI capability, preferably
- the navigator function 22 and interface 24 manage and control the contents of the "container" having multiple active application mod ales
- the preferred embodiment of the invention has a user interface 24 based on Microsoft Windows operating system, the container can be implemented in any number of different GUI operating systems
- the navigator function application 22 is a software program written in the well-known C++ language and is capable of being compiled and executed on a PC processor such as the processor 17
- the navigator application function 22 can include macro-instructions called a keystroke or mouse "hook" which interfaces the navigator function 22 with the keyboard 26 or preferably uses a mouse 27 or other user defined input (for example, voice recognition)
- This function can be understood with reference to the Programmer's Reference Functions, published by Microsoft Corporation (1987-1998) for the Microsoft Windows operating system
- a keystroke or mouse control hook function intercepts all input keys or mouse actions and passes them to a keyboard hook or mouse processing routine in the navigator function 22 for processing before they are passed to theapp cations
- An exemplary form for a navigator uses the keystroke hook function that enables the navigator function 22 to detect user specified actions in response to which the navigator function invokes certain actions
- the keystroke hook function is discussed in detail in commonly assigned U S patent 5,721,850 entitled, "Method and means for a
- the navigator function 22 also maintains a system configuration file
- the system file is maintained for the purpose of establishing a set of window characteristics definitive of a set of system windows and is used as a point of reference in navigating through window configurations
- each application (including the navigator function) maintains its own window configuration buffer which is used, when the application executes, to keep the current parameter values definitive of the current configuration of the application's window
- Such buffers include window configuration buffers and are maintained in real memory
- the third party services as illustrated in FIG 4 can be applications that interface with other applications such as a Microsoft EXCEL spreadsheet application as well as word processing application such as Microsoft WORD word-processing program Using Microsoft Windows, a selection of spreadsheet cells of a Microsoft EXCEL spreadsheet can be placed inside a WORD document
- the EXCEL spreadsheet is an "object server" document
- the selection of spreadsheet cells is an "object"
- a financial service navigator application window 100 is shown, and in particular, the Reuters Plus (a trademark of Reuters Limited ) application made by Reuters, New York, NY This application provides current market quote data to financial service professionals This window typically could appear on a terminal display 25
- the navigator window 100 includes a menu bar 102, an application object execution button bar 104, and a display areas of multiple financial application objects 106, 108, and 110 on a display screen
- Exemplary application objects 106, 108 and 1 10 contain research, market data news fundamentals and analytics m one window
- An Internet Web browser 116 can be incorporated in the container as one of the application objects and shown in part of the display as seen navigated to the Yahoo web site
- Each of the buttons in the bar 104 represents particular object window viewing for a selected financial service application
- Adjacent the top of the application object display are button tabs 1 12 for control of the container, each of which identifies a functionality such as printing, searching services and the like within an one of application object programs
- the invention USIS method can be
- the Reuters Plus application containing financial market quote data also provides personalized action management of events by allowing a user (for example, a broker) to create unique association of triggering events with a series of resulting actions
- These customized action management triggering events effectuate any combination of service application action objects (for example, these include displaying of Chart History of a security, and then sending the chart to a printer or fax, going to a user designated display page, and requesting on that page a quote, headlines, and information from EDGAR filings)
- These actions are assigned to a triggering event (for example, a double clicking on a field, a hotkey or combination of hotkeys, a generated active icon button, a balloon menu associated with a particular Active-X object in an application object)
- an Action Manager window 150 of Reuters Plus application is shown where user selects a trigger, which in this case is a double clicking on a field "Block
- FIG 8 an Action Manager window 160 of Reuters Plus application is shown where user assigns or removes an assignment of a series of actions to the previously selected trigger in FIG 7, the trigger, which is double clicking on "Block Count" field
- an Action Manager window 170 of Reuters Plus application is shown where user assigns a series of available action to the previously selected hotkey "F9" (not shown) This window allows a user to edit previously configured triggers
- a broker selects a field inside a quote service module, and configures a double-click trigger for that field to produce a display of historical chart, headlines, fundamental data, and send this display to a printer While consulting with a customer from a Reuters Plus workstation, the broker can double-click on the specified trigger field, and the desired actions will follow
- a broker selects a conditional trigger of an alert set to indicate that a security of interest reached a specified price The broker configures this trigger to produce a chart display for this security, print it, and also send a message via e-mail to his or her associates and pager device If a security of interest reaches the price specified by the trigger configuration, even in the case that the broker is away from a Reuters Plus workstation, an alert will trigger the desired series of actions a printer will print a chart for that security, the broker's associates will get an e-mail tailored to the triggering event, and the broker will receive
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Multimedia (AREA)
- Stored Programmes (AREA)
- User Interface Of Digital Computer (AREA)
Abstract
Description
Claims
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
AU27619/99A AU2761999A (en) | 1998-02-09 | 1999-02-09 | Method and system for user defined interactions between plurality of active software applications |
Applications Claiming Priority (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US7414398P | 1998-02-09 | 1998-02-09 | |
US60/074,143 | 1998-02-09 | ||
US24699899A | 1999-02-08 | 1999-02-08 | |
US09/246,998 | 1999-02-08 |
Publications (3)
Publication Number | Publication Date |
---|---|
WO1999040512A1 true WO1999040512A1 (en) | 1999-08-12 |
WO1999040512A8 WO1999040512A8 (en) | 2000-01-27 |
WO1999040512A9 WO1999040512A9 (en) | 2000-02-17 |
Family
ID=26755300
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
PCT/US1999/002801 WO1999040512A1 (en) | 1998-02-09 | 1999-02-09 | Method and system for user defined interactions between plurality of active software applications |
Country Status (1)
Country | Link |
---|---|
WO (1) | WO1999040512A1 (en) |
Cited By (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2001027737A2 (en) * | 1999-10-11 | 2001-04-19 | I2 Technologies, Inc. | Customizable user window |
EP1398717A1 (en) * | 2002-09-11 | 2004-03-17 | Atsmai Technology | Data refreshing process for a computer application |
EP1573710A2 (en) * | 2002-12-16 | 2005-09-14 | Microsoft Corporation | Systems and methods for interfacing with computer devices |
EP1696315A2 (en) | 2005-02-28 | 2006-08-30 | Microsoft Corporation | Automated data organization |
EP1696319A2 (en) | 2005-02-28 | 2006-08-30 | Microsoft Corporation | End user data activation |
WO2006121620A2 (en) * | 2005-05-05 | 2006-11-16 | Imi Innovations, Inc. | System and method for improved cursor functionality |
FR2904710A1 (en) * | 2006-08-01 | 2008-02-08 | Thales Sa | Hook application for e.g. launching search in database from Word application, translates shortcut into control line, completes command by copying selected data in field and shapes data conforming to command, when shortcut is element of list |
US8051406B2 (en) | 2004-04-30 | 2011-11-01 | Microsoft Corporation | Rich end-user data views |
TWI421735B (en) * | 2010-06-04 | 2014-01-01 | Mitake Information Corp | Device and method for a detailed information combination of the stock quoting software |
EP3881915A1 (en) * | 2012-09-28 | 2021-09-22 | Sony Interactive Entertainment Inc. | Method for executing a mini-game |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP0451963A2 (en) * | 1990-03-30 | 1991-10-16 | International Business Machines Corporation | Interactive computer system |
WO1995031768A1 (en) * | 1994-05-16 | 1995-11-23 | Apple Computer, Inc. | Computer system for automatically instantiating tasks designated by a user |
WO1996031823A1 (en) * | 1995-04-07 | 1996-10-10 | Sofmap Future Design Co., Ltd. | Data processing system and method, and computer program architecture |
-
1999
- 1999-02-09 WO PCT/US1999/002801 patent/WO1999040512A1/en active Application Filing
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP0451963A2 (en) * | 1990-03-30 | 1991-10-16 | International Business Machines Corporation | Interactive computer system |
WO1995031768A1 (en) * | 1994-05-16 | 1995-11-23 | Apple Computer, Inc. | Computer system for automatically instantiating tasks designated by a user |
WO1996031823A1 (en) * | 1995-04-07 | 1996-10-10 | Sofmap Future Design Co., Ltd. | Data processing system and method, and computer program architecture |
Cited By (19)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2001027737A2 (en) * | 1999-10-11 | 2001-04-19 | I2 Technologies, Inc. | Customizable user window |
WO2001027737A3 (en) * | 1999-10-11 | 2002-05-10 | I2 Technologies Inc | Customizable user window |
US6857017B1 (en) | 1999-10-11 | 2005-02-15 | I2 Technologies Us, Inc. | Customizable notification user window |
EP1398717A1 (en) * | 2002-09-11 | 2004-03-17 | Atsmai Technology | Data refreshing process for a computer application |
EP1573710A4 (en) * | 2002-12-16 | 2007-11-21 | Microsoft Corp | Systems and methods for interfacing with computer devices |
EP1573710A2 (en) * | 2002-12-16 | 2005-09-14 | Microsoft Corporation | Systems and methods for interfacing with computer devices |
US8051406B2 (en) | 2004-04-30 | 2011-11-01 | Microsoft Corporation | Rich end-user data views |
EP1696319A3 (en) * | 2005-02-28 | 2008-01-02 | Microsoft Corporation | End user data activation |
EP1696315A3 (en) * | 2005-02-28 | 2008-01-02 | Microsoft Corporation | Automated data organization |
EP1696315A2 (en) | 2005-02-28 | 2006-08-30 | Microsoft Corporation | Automated data organization |
US7565663B2 (en) | 2005-02-28 | 2009-07-21 | Microsoft Corporation | Automated data organization |
AU2006200232B2 (en) * | 2005-02-28 | 2010-12-09 | Microsoft Technology Licensing, Llc | Automated data organization |
EP1696319A2 (en) | 2005-02-28 | 2006-08-30 | Microsoft Corporation | End user data activation |
KR101219856B1 (en) * | 2005-02-28 | 2013-01-08 | 마이크로소프트 코포레이션 | Automated data organization |
WO2006121620A2 (en) * | 2005-05-05 | 2006-11-16 | Imi Innovations, Inc. | System and method for improved cursor functionality |
WO2006121620A3 (en) * | 2005-05-05 | 2007-12-27 | Imi Innovations Inc | System and method for improved cursor functionality |
FR2904710A1 (en) * | 2006-08-01 | 2008-02-08 | Thales Sa | Hook application for e.g. launching search in database from Word application, translates shortcut into control line, completes command by copying selected data in field and shapes data conforming to command, when shortcut is element of list |
TWI421735B (en) * | 2010-06-04 | 2014-01-01 | Mitake Information Corp | Device and method for a detailed information combination of the stock quoting software |
EP3881915A1 (en) * | 2012-09-28 | 2021-09-22 | Sony Interactive Entertainment Inc. | Method for executing a mini-game |
Also Published As
Publication number | Publication date |
---|---|
WO1999040512A9 (en) | 2000-02-17 |
WO1999040512A8 (en) | 2000-01-27 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US6469714B2 (en) | Infocenter user interface for applets and components | |
US7543299B2 (en) | Creating web services programs from other web services programs | |
US5754173A (en) | Method and system for creating user interface independent programs with a user interface provider | |
US6380954B1 (en) | Method and system for layout of objects within a perimeter using constrained interactive search | |
US6889160B2 (en) | Simulation of network service test environments | |
EP1412846B1 (en) | Method and system for management of multiple network resources | |
AU2007297617B2 (en) | Common component framework | |
JP5089684B2 (en) | Technology for generating service programs | |
US6859213B1 (en) | Method and apparatus for selecting attachments | |
US8196096B2 (en) | .Net ribbon model for a ribbon user interface | |
US20020199025A1 (en) | System and method to create an application and to manipulate application components within the application | |
US20040017392A1 (en) | Web service control for use in a graphical programming environment | |
US20060265662A1 (en) | System and method for generating and updating user interfaces of web-based applications | |
US20040255269A1 (en) | Automatically configuring a graphical user interface element to bind to a graphical program | |
JP2023152695A (en) | System and method for using browser to design robotic process automation (rpa) robot | |
WO1999040512A1 (en) | Method and system for user defined interactions between plurality of active software applications | |
JP4339376B2 (en) | Object-oriented cursor tool | |
JPH10105499A (en) | Client/server system and recording medium for recording program used in client/server system | |
Kao | Experience in undergraduate research in communications | |
Moldaschl | ooRexxTry Reengineering | |
JPH11345204A (en) | Method and system for managing object displayed in graphical user interface |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
AK | Designated states |
Kind code of ref document: A1 Designated state(s): AL AM AT AU AZ BA BB BG BR BY CA CH CN CU CZ DE DK EE ES FI GB GD GE GH GM HR HU ID IL IN IS JP KE KG KP KR KZ LC LK LR LS LT LU LV MD MG MK MN MW MX NO NZ PL PT RO RU SD SE SG SI SK SL TJ TM TR TT UA UG US UZ VN YU ZW |
|
AL | Designated countries for regional patents |
Kind code of ref document: A1 Designated state(s): GH GM KE LS MW SD SZ UG ZW AM AZ BY KG KZ MD RU TJ TM AT BE CH CY DE DK ES FI FR GB GR IE IT LU MC NL PT SE BF BJ CF CG CI CM GA GN GW ML MR NE SN TD TG |
|
121 | Ep: the epo has been informed by wipo that ep was designated in this application | ||
DFPE | Request for preliminary examination filed prior to expiration of 19th month from priority date (pct application filed before 20040101) | ||
AK | Designated states |
Kind code of ref document: C1 Designated state(s): AL AM AT AU AZ BA BB BG BR BY CA CH CN CU CZ DE DK EE ES FI GB GD GE GH GM HR HU ID IL IN IS JP KE KG KP KR KZ LC LK LR LS LT LU LV MD MG MK MN MW MX NO NZ PL PT RO RU SD SE SG SI SK SL TJ TM TR TT UA UG US UZ VN YU ZW |
|
AL | Designated countries for regional patents |
Kind code of ref document: C1 Designated state(s): GH GM KE LS MW SD SZ UG ZW AM AZ BY KG KZ MD RU TJ TM AT BE CH CY DE DK ES FI FR GB GR IE IT LU MC NL PT SE BF BJ CF CG CI CM GA GN GW ML MR NE SN TD TG |
|
CFP | Corrected version of a pamphlet front page | ||
CR1 | Correction of entry in section i |
Free format text: PAT. BUL. 32/99 UNDER (30) REPLACE "NOT FURNISHED" BY "09/246998" |
|
AK | Designated states |
Kind code of ref document: C2 Designated state(s): AL AM AT AU AZ BA BB BG BR BY CA CH CN CU CZ DE DK EE ES FI GB GD GE GH GM HR HU ID IL IN IS JP KE KG KP KR KZ LC LK LR LS LT LU LV MD MG MK MN MW MX NO NZ PL PT RO RU SD SE SG SI SK SL TJ TM TR TT UA UG US UZ VN YU ZW |
|
AL | Designated countries for regional patents |
Kind code of ref document: C2 Designated state(s): GH GM KE LS MW SD SZ UG ZW AM AZ BY KG KZ MD RU TJ TM AT BE CH CY DE DK ES FI FR GB GR IE IT LU MC NL PT SE BF BJ CF CG CI CM GA GN GW ML MR NE SN TD TG |
|
COP | Corrected version of pamphlet |
Free format text: PAGES 1/7-7/7, DRAWINGS, REPLACED BY NEW PAGES 1/8-8/8; DUE TO LATE TRANSMITTAL BY THE RECEIVING OFFICE |
|
NENP | Non-entry into the national phase |
Ref country code: KR |
|
REG | Reference to national code |
Ref country code: DE Ref legal event code: 8642 |
|
122 | Ep: pct application non-entry in european phase |