Home
Patent Search
IMT Blog
REGISTER
|
SIGN IN
United States Patent
5339392
Risberg , ; et al.
August 16, 1994
Title
Apparatus and method for creation of a user definable video displayed document showing changes in real time data
Abstract
A software program providing a facility for a user to compose a custom active document using tools provided by the program. The active document can be comprised of one or more sheets each of which is composed in a custom manner by the user and each of which can show real time data and the changes therein generated by any complex system. The user can select which real time data is to be displayed, where it is to be displayed and in what format and style it is to be displayed. The user can control the "look" of the active document through full control of the fonts, colors, pen etc. The user may also define alarm limits against which real time data updates are compared as well as scripts of commands to be performed in case an alarm limit is exceeded. Scripts of commands to be performed written by the user may also be invoked from a menu option. The tools provided for a financial analysis embodiment of the invention allow the user to layout each sheet of the active document with: quotes of prices, volume etc. on various financial instruments such as stocks, bonds, etc., tickers showing trade data, graphs over time of various values or superimposed graphs of changes over time of several real time data values, bar graphs of some aspect of a set of financial instruments, segments defined by the user of pages selected by the user of page-based financial services like telerate, and groups of real time data. "Buttons" can be programmed to perform any user defined script of actions. Metadata and style maps are used to offload some of the work of specifying the format of the displayed objects from the user to the machine itself.
Inventors:
Risberg; Jeffrey S.
(Palo Alto,
CA
)
, Skeen; Marion D.
(Palo Alto,
CA
)
Appl. No.:
636044
Filed:
December 28, 1990
Current U.S. Class:
715/762
715/765
715/774
715/501.1
Field of Search:
364/144-149,155,161,408,411,412,419 358/84
U.S. Patent Documents
4486853
December 1984
Parsons
4642790
February 1987
Minshull et al.
4750135
June 1988
Boilen
4845645
July 1989
Matin et al.
4868866
September 1989
Williams, Jr.
4901221
February 1990
Kodosky et al.
4914568
April 1990
Kodosky et al.
4914587
April 1990
Clouse
4943866
July 1990
Barker et al.
5058185
October 1991
Morris et al.
5126936
June 1992
Champion et al.
Foreign Patent Documents
2161003A
Jan., 1986
DE
Other References
Advertising Brochure: "LabVIEW 2, The Complete Instrumentation Software System", Copyright 1990, National Instruments Corp. .
Graphics interfaces make knobs and switches obsolete, T. Williams, Computer Design, vol. 29, No. 15, Aug. 1, 1990, Tulsa, Okla., U.S. pp. 78-94. .
Knowledge-Based System for Financial Applications, D. Leinweber, IEEE Expert, vol. 3, No. 3, Fall 1988 New York, N.Y., US pp. 18-31. .
The Electronic Arsenal of Program Traders, G. Christopoulos, Wall Street Computer Review, vol. 4, No. 2, Nov. 1986, US pp. 50-56. .
Software Stockpickers, M. Asner, Canadian Business, vol. 57, No. 9, Sep. 1984, CA pp. 138-142. .
All About Buttons, D. Goodman, The Complete Hypercard Handbook, 1988, New York, N.Y., US pp. 161-183. .
User-Tailorable Systems: Pressing the Issues with Buttons, A. Maclean et al, Human Factors in Computing Systems, Proceedings of CHI'90, Apr. 1990, pp. 175-182. .
Comprehensive Support for Graphical, Highly Interactive User Interfaces, B. A. Myers et al, Garnet, Computer, vol. 23, No. 11, Nov. 1990, Los Alamitos, Calif., US pp. 71-85. .
Effective Application Development for Presentation Manager Programs, S. M. Franklin & A. M. Peters, IBM System Journal, vol. 29, No. 1, 1990, Armonk, N.Y., US pp. 44-58. .
A General Methodology for Data Conversion and Restructuring, N.Y. Lum, et al, IBM Journal of research and development, vol. 20, No, 5, Sep. 1976, pp. 483-497..~
Primary Examiner:
Herndon; Heather R.
Attorney, Agent or Firm:
Fish; Ron
Parent Case Text
This is a continuation-in-part application of a prior co-pending U.S. patent application entitled "APPARATUS AND METHOD FOR PROVIDING DECOUPLING OF DATA EXCHANGE DETAILS AND PROVIDING HIGH PERFORMANCE COMMUNICATION BETWEEN SOFTWARE PROCESSES", Ser. No. 07/632,551, filed Dec. 21, 1990, which was a continuation-in-part of a prior co-pending U.S. patent application entitled "APPARATUS AND METHOD FOR PROVIDING DECOUPLING OF DATA EXCHANGE DETAILS AND PROVIDING HIGH PERFORMANCE COMMUNICATION BETWEEN SOFTWARE PROCESSES", Ser. No. 07/601,117, filed Oct. 22, 1990, now U.S. Pat. No. 5,257,369, which was a continuation-in-part of a prior co-pending U.S. patent application entitled "APPARATUS AND METHOD FOR PROVIDING DECOUPLING OF DATA EXCHANGE DETAILS AND PROVIDING HIGH PERFORMANCE COMMUNICATION BETWEEN SOFTWARE PROCESSES", Ser. No. 07/386,584, filed Jul. 27, 1989, now U.S. Pat. No. 5,187,787.
Claims
What is claimed is:
1. An apparatus for transforming a blank display of a computer into an active document having one or more pages of user defined display showing at least the changing values of data the value of which may change over time, said display changing as the values of said data changes, comprising:
a computer for storing and executing one or more programs, and having a display;
at least one source of changeable data;
a data path coupling said computer to said at least one source of changeable data;
a communication program in execution on said computer for carrying out subject based addressing for receiving subscription requests specifying a subject on which data is desired and for mapping the subject of each said subscription request to the identity and/or location of one or more sources of data on that subject, and for automatically establishing at least one subscription communication path via said data path to at least one of said sources of data on each said subject such that the current value of said data on each said subject for which there is an active subscription and all updates thereto will be obtained and made available for display;
a dispatcher program in execution on said computer and coupled to said communication program and to said input devices for receiving requests from a user via one or more of said input devices to display on said computer one or more items of said changeable data generated by said source of changeable data, said requests for data specified only by subject, and for generating and sending to said communication program a subscription request for each said subject thereby causing retrieval by said communication program on a subscription basis only said requested items of changeable data and all updates thereto via said data path, and for making said retrieved data and all changes thereto available for display; and
a document composition program in execution on said computer and coupled at least to said dispatcher program and to said computer display for accepting composition commands entered by a user via said dispatcher program, said compositions commands defining the desired content and appearance on said display of said active document and for receiving from said dispatcher program said changeable data retrieved by said communication program and displaying said changeable data on said display at the location and in the manner specified by said user through said composition commands such that the displayed values virtually instantaneously reflect changes in the value of said changeable data as said values change over time.
2. The apparatus of claim 1 wherein said document composition program includes means for storing said active document as one or more data records in said computer, and upon receiving a command to redisplay said active document from user via said one or more input devices, for displaying the most current value of each item of changeable data previously specified by said user when said active document was composed immediately upon redisplaying said active document.
3. The apparatus of claim 1 further comprising means for storing as a document definition data defining the content, layout and format of each page of said active document excluding the actual values of said changeable data but including the user specification of which items of said changeable data are to be requested and which portions of said changeable data are to be displayed and how and where said portions are to be displayed, and for providing a facility whereby said active document definition may be recalled and displayed with the current values of the changeable data specified in said active document definition being automatically obtained by said communication program by renewal of all subscription requests and renewal of all subscriptions on subjects previously specified by the user and recorded in said active document definition.
4. The apparatus of claim 1 wherein said composition program comprises means for creating in response to said composition commands instances of different classes of active objects which display on a display either real-time, changeable data generated by said source of changeable data or fixed, alphanumeric data entered by the user via said one or more of said input devices, each said active object for displaying data in accordance with an associated style map which defines the portion of said data to be displayed and defining where and how said data is to be display, each said active object having an associated data object storing data for storing an internal computer data representation of one or more data fields which together all the possible data which is available for display on the subject which resulted in retrieval of data and creation of said active object, said style map including a human readable specification of which data fields are to be displayed and which specifies said user's choices regarding selected display characteristics, each said active object also having an associated:
display object stored in said computer which encapsulates the data and executable instructions for said computer required to display the contents of the data object in the style specified by the user,
event trigger stored in said computer specifying the conditions under which the user desires additional processing by said computer to occur on this particular active object, typical event triggers being alarm limits, and
event script stored in said computer comprising a sequence of one or more commands to execute upon the occurrence of an event trigger.
5. An apparatus for creating a displayed image on a display in the form of a custom active document showing changes in real time data, said active document useful in visualizing events in a system characterized by data output by one or more sources of real time data the value of which can charge over time, said apparatus operating in a computing environment including said sources of real time data, a computer having said display and one or more input devices, and coupled to said sources of real time changeable data by a data path and communication software in execution on said computer, said communication software for accessing selected data generated by said sources of real time data using a subscription paradigm where for any item of said real time data for which a subscription has been requested, the current value of said selected items of said real time data and all updates thereto is obtained until the subscription is cancelled, said communication software for transmitting the current value of said selected item of real time data and all updates thereto to said computer until the subscription to the corresponding said item of real time data is cancelled, and said environment including one or more operating system programs in execution on said computer for controlling at least some of those aspects of the processing of at said computer normally controlled by operating system programs, said apparatus comprising:
one or more computer programs in execution on said computer for providing a facility whereby a user can compose from a blank computer display a dynamically changeable display image comprising a document having one or more pages where each page has a user defined composition, format and layout and has displayed thereon one or more user defined display objects some or all of which may display real time data from system displayed at user defined locations thereon, said one or more programs further comprising:
a real time data acquisition and composition program in execution on said computer and coupled to said communication software for receiving user requests to display one or more specific items of said real time data and for requesting said communication software to create a communication channel across said data path for each of said one or more items of specified items of real time data through which a stream of the user requested data may flow back to said acquisition and composition program for each specified item of said real time data, and for receiving said one or more streams of said changeable real time data and for displaying on said computer display one or more layout tool icons each of which may be invoked by said user to request and display in a user specified style one or more items of selected real time data so as to enable said user to compose said active document on said display, said acquisition and composition program for automatically converting said requests of items of said real time data specified by said user through invocation of said layout tool icons into one or more subscription requests to said communication software, and for continuously receiving as said stream of data associated with each said selected item of real time data the the current value thereof and all updates thereto until said subscription is cancelled, said current value of each requested item of real time data and updates thereto being displayed in each of one or more user specified areas of said active document displayed on said computer display, such that the format, style and content of said display of said active document on said computer display may be composed and altered by said user; and
input means coupled to said one or more input devices and said communication software for receiving input events comprising user composition commands and values of selected items of said real time data for which subscriptions exist and dispatching these events to said real time data acquisition and composition program for use in updating said displayed image of said document.
6. The apparatus of claim 5 wherein said real time data acquisition and composition program includes means for displaying changes in real time data selected for display in said active document simultaneously while said layout tool icons are being used to compose and alter the image of said active document, said layout and composition process occurring at any time without interrupting the flow of updates for any said real time data currently displayed on said document, and wherein said acquisition and composition program includes first means for displaying on said computer display a layout tool which may be invoked by a user such that one or more areas of said displayed image of said active document may be programmed to show the most current value of one or more user defined items of real time data which have values which change over time as well as showing the the changing value(s) over time of said one or more user designated items of real time data.
7. The apparatus of claim 6 wherein said first means comprises means for displaying the most current value of said real time data and a user defined number of prior values of said real time data versus time as a graph.
8. The apparatus of claim 7 wherein said real time data acquisition and composition program further comprises alarm limit setting means coupled to said first means for displaying a tool which may be invoked by a user to display on any said graph up to two active trend line alarm limits, typically upper and lower limits against which the most current value of said changeable real time data depicted on each said user defined graph may be compared, and for comparing each new updated value received for an item of real time data to the corresponding trend line alarm limits for the corresponding graph, and if an alarm limit established by an active trend line is equalled or exceeded, for generating an alert signal.
9. The apparatus of claim 8 wherein said real time data acquisition and composition program further comprises script means for coupling a script of user defined commands to any said alarm limit such that when said alarm limit is equalled or exceeded, said user defined sequence of commands is automatically executed by said computer.
10. The apparatus of claim 7 wherein said first means includes means for scaling each axis of said graph separately.
11. The apparatus of claim 7 wherein said first means includes means for displaying the numeric values on each axis of said graph for any particular point on the graph representing the value of a selected item of real time data at a particular time for any particular point on said graph which has been selected.
12. The apparatus of claim 7 wherein said first means includes means for causing automatic rescaling of the time axis for any graph wherein one of the axes has been user defined to show time.
13. The apparatus of claim 7 wherein said first means includes means for displaying a tool whereby a user may graphically designate a trend line by defining any two points on the desired trend line.
14. The apparatus of claim 7 wherein said first means includes means for allowing a user to enlarge the displayed view of any portion designated by a user of any said graph.
15. The apparatus of claim 7 wherein said first means includes means for displaying as a graph at least two items of said real time data and for displaying the values of said two items of real time data against the same two axes.
16. The apparatus of claim 5 wherein said real time data acquisition and composition program includes second means for displaying a layout tool which may be invoked by a user such that one or more areas of said display image of said active document may be programmed to show only the most current value of one or more user defined items of real time data.
17. The apparatus of claim 5 wherein said real time data acquisition and composition program includes third means for displaying a layout tool which may be invoked by a user such that one or more areas of said active document being composed on said computer display may be programmed to display the dynamically changeable value or values of real time data contained in one or more user designated portions of one or more user designated pages of data from a user designated, page-oriented financial information service.
18. The apparatus of claim 5 wherein said real time data acquisition and composition program includes fourth means for displaying a layout tool which may be invoked by a user whereby a plurality of pages of said active document may be composed by said user on a computer display, each page having a user defined layout comprising any number of items of user defined text displayed at user defined locations and displayed in user defined style on each page, and the value or values of any number of user specified items of real time data displayed in user designated locations and displayed in user defined style thereon.
19. The apparatus of claim 5 wherein said real time data acquisition and composition program includes:
alarm limit setting means for displaying a tool which may be invoked by a user so as to establish one or more alarm limits which are associated with one or more items of said real time data, and wherein said real time data includes updated values which arrive from time to time, each said alarm limit being compared with any incoming updated value of a corresponding item of real time data, and said alarm limit setting means also for setting an alert status when any one of said alarm limits is exceeded; and
script means coupled to said alarm limit setting means for, upon detection of said an alert status for any particular alarm limit, causing one or more user defined sequences of events to occur.
20. The apparatus of claim 19 wherein said script means comprises means for recognizing and carrying out in any user designated sequence commands for at least some of the following functions:
selection of active objects;
editing selected active objects;
moving and resizing of selected active objects;
moving between pages of said dynamically changeable displayed image of said active document;
editing a selected page of said dynamically changeable displayed image of said active document;
causing audible signals, or for causing a command of another program such as an operating system program to be executed or for pausing a user designated amount of time; and
controlling the display of the computing environment such as by displaying or not displaying the available tool icons for creating and editing said pages of said dynamically changeable displayed image of said active document or displaying or not displaying alignment aids for layout of said pages of said dynamically changeable image of said active document such as grid lines.
21. The apparatus of claim 20 wherein said script means further comprises means for providing a tool whereby a user may enter new commands which are available for execution during a user defined script of actions.
22. The apparatus of claim 19 wherein said script means includes means for selectively changing the format of said displayed image of said document when an alarm limit is exceeded.
23. The apparatus of claim 5 wherein said real time data acquisition and composition program further comprises fifth means for displaying a tool icon which may be invoked by a user to locate at one or more user defined locations on said user defined display image of said active document one or more quote active objects, each said quote active object for receiving and displaying the current price for a user designated financial issue at said designated location of said active document.
24. The apparatus of claim 5 wherein said real time data acquisition and composition program further comprises:
sixth means for displaying a layout tool which may be invoked by the user to program one or more button active objects at user definable locations on said dynamically changeable display image of said document composed by said user, and
further comprising seventh means coupled to one or more of said button active objects for causing to occur a specific user defined sequence of events associated with each button active object when the corresponding button active is selected.
25. The apparatus of claim 5 wherein said real time data acquisition and composition program includes means for creating an active object for each said user designated item of real time data displayed within said active document, each said active object having an associated list of properties and an associated list of operations which can be invoked by a user via said one or more input devices to change the values of various properties of said active object.
26. The apparatus of claim 25 wherein said computer in said environment has a memory and wherein each said active object is represented in said memory by a data record containing the values for each said property in said list of properties and a pointer to a library of programs for execution on said computer and which carry out the operations associated with said active object when invoked.
27. The apparatus of claim 26 wherein each said active object comprises:
a data object record in said memory for storing the internal computer representation of a set of data items pertinent to a particular item displayed on said document;
a style map record in said memory for storing style data specifying particular ones of the data items stored in said data object which are displayed and where these data items are displayed and the format of the display;
screen rendering means for rendering information on said display;
a display object means for storing a representation of the data from said data object record specified by said style map record and for sending said extracted data and one or more appropriate rendering commands based upon said style data to said screen rendering means such that said display is rendered with said data stored by said display object in accordance with said style data;
means for storing user defined event trigger condition data specifying the conditions for data stored in said data object record under which said user desires further action to occur; and
means coupled to said means for storing event trigger condition data, for storing one or more scripts of actions programmed by said user and associated with one or more events said actions of each script to be carried out by said computer in a sequence programmed by said user if a condition specified in the corresponding event trigger occurs.
28. The apparatus of claim 27 further comprising means for receiving data updates for a corresponding item of real time data, and for updating the corresponding real time data with its new the update value and storing the updated value in said display object means in accordance with said style data stored in said style map record, and for comparing any updated values for said real time data to any event trigger condition data stored in said means for storing event trigger condition data, and for displaying any special effects on said display according to said style data if any event trigger condition has been satisfied by an update to a corresponding item of real time data.
29. The apparatus of claim 5 further comprising means for displaying a tool which may be invoked by a user to display on said document table tool objects displaying useful reference information such as the names of commonly used pages of page oriented services or securities.
30. The apparatus of claim 5 wherein said real time data acquisition and composition program includes means for displaying a menu of universal commands which can be invoked by a user to edit or manipulate any pages or any active objects displayed on any page of said dynamically changeable displayed image of said document, and for displaying a pop-up menu of commands associated with any command selected by a user from said menu of universal commands.
31. The apparatus of claim 5 further comprising means for highlighting the display of data that has changed.
32. The apparatus of claim 5 further comprising means for displaying a text layout tool which may be invoked by a user such that one or more areas on said displayed image of said document, the positions of which may be selected by said user, may have displayed therein text information supplied by said user through one or more of said input devices.
33. The apparatus of claim 1 or 5 or 6 or 16 or 17 or 18 or 19 or 8 or 23 or 24 or 27 or 28 or 10 or 11 or 12 or 13 or 14 or 15 or 20 further comprising one or more other computers coupled to said data path, and publishing means in execution on said one or more computers and publishing changeable data organized in a page format, said composition program further comprising a page fragment tool means for displaying on said computer display a tool or icon which can be invoked by said user such that said user can cause to be displayed only a selectable portion of a particular page of said page format data by designating any portion of any page of said changeable page format data.
34. An apparatus for transforming a blank image on a computer display into an image of a dynamically changeable document having one or more pages the content, composition and style of each page being user selectable in real time, said document for display of one or more items of data the value(s) of which change over time, comprising:
a collection of sources that output data items the value(s) of which change over time:
a computer means having a display and one or more input devices and coupled to said collection of sources for selectively accessing said data sources and retrieving the current values of selected data items and receiving updates to the values of said data items:
a program in execution on said computer means for receiving composition commands from a user regarding the desired content, composition and layout of each page in the display of said document defining the items of data to be displayed, and for automatically converting those composition commands into subscriptions for the value of any data item specified in said composition commands and all updates thereto, and for receiving any said requested data item and any updates thereto and displaying the value of said received data item on said computer display in the location and format specified by the user through said composition commands, and for continuing to update the displayed value of each item of displayed data until a command is received from said user indicating the user no longer wishes to view that particular item of data.
35. The apparatus of claim 34 wherein said program in execution includes a script processor program which causes said computer to execute a script comprised of a series of commands selected by said user when a predetermined trigger condition programmed by said user occurs.
36. The apparatus of claim 35 wherein said program in execution includes means for displaying icons which, when selected by said user using an input device, set a trigger condition and for linking the trigger condition associated with each said icon to a corresponding script such that when said icon is selected, said script of commands is executed by said computer.
37. The apparatus of claim 35 wherein said program in execution includes means for setting alarm limits for the value of any user selected item of real time data, the value of said alarm limit being selectable by said user, and for setting a predetermined trigger condition associated with each said alarm limit when said alarm limit is equalled or exceeded by the value of the corresponding item of real time data, and for selectively linking each said trigger condition to a corresponding script.
38. The apparatus of claim 34 wherein said program in execution includes means for displaying any user selected item of real time data as a graph showing at least the current value of said item of real time data plotted against any other variable such as time.
39. An apparatus for transforming a blank computer display into a display on a computer terminal of one or more items of data which can change over time in the form of electromagnetic signals which are displayed in a selectable format and location, comprising:
one or more sources publishing said data which can change over time;
a computer having a video display and an input device and coupled to said source of data by a data path;
a data path coupling said computer to said source of said data;
a communication program in execution on said computer for receiving subscription requests identifying a subject and for converting the subject of said request into a communication link to an appropriate source for data on the selected subject and for retrieving the current value of data published by said source on the selected subject and subsequent updates thereto;
a computer program in execution on said computer for driving said display and controlling said computer, said computer program comprising:
means for receiving requests for data on selected subjects and for issuing a subscription request for each said subject to said communication program; and
composition means for receiving said requested data as electromagnetic signals from said communication program, and for virtually instantaneously displaying said data on said video display in a format and at a location which is selectable by said user through composition commands, and when updates to displayed data are received, for virtually instantaneously altering the display to display the new value of the data for which an update was received.
40. The apparatus of claim 39 wherein said composition means comprises tool means for receiving composition data defining the desired type and location of a visual manifestation of each item of said incoming, changeable, real time data, and for rendering said video in accordance with said composition data using the corresponding items of changeable real time data so as to create one or more pages of said changeable real time data displayed in the desired format, thereby allowing a user to create one or more displayed pages of said changeable real time data, each page of which may be composed by a user so as to have a particular theme or utility to said user.
41. The apparatus of claim 40 wherein said tool means of said composition means includes means for providing a facility to change the composition of any said displayed page of data at any time more or less information is desired about an item of data on said display or any time a new item of data is to be displayed, said tool means including means to issue a subscription request to obtain any new item of data as one or more electromagnetic signals.
42. The apparatus of claim 41 wherein said composition means is also for creating one or more pages of data which can change over time, each of said pages having the same appearance on said computer display when viewed by a user as said page had when composed on said computer display using said composition means.
43. The apparatus of claim 42 wherein said data path is a network or other data exchange media, and wherein said communication means carries out an appropriate communication protocol to obtain the requested data via said network or other data exchange media, and wherein said composition means receives said data as electromagnetic signals via said network or other data exchange media.
44. An apparatus for transforming a blank computer display of a computer into one or more pages of user defined video display showing the values of real time data from a source of real time changeable data, said real time data displayed on said computer display at one or more user defined locations on said computer display and in a user defined format, said computer having at least one input device and coupled to said source of real time changeable data by a data transfer path, comprising:
a dispatcher means in execution on said computer for receiving requests from a user via one or more of said input devices to display on said computer display one or more items of real time data generated by said source of real time data, and for causing said real time data to be retrieved via said data transfer path, and for making said retrieved real time data and all changes thereto available for display; and
further comprising a document composition means in execution on said computer and coupled to said dispatcher means for accepting composition commands from a user which define the desired content and appearance on said computer display of a document which includes at least some of the real time data generated by said source, the displayed values of said displayed real time data changing as changes to items of real time data at said source occur, said document comprising one or more pages, each page comprised of an image on said display the data contentl layout and format of each said image being defined by said user through entry of said composition commands via one or more of said input devices, the content of some or all of said pages including user defined items of static data and/or selected items of said changeable real time data, said user specifying by entry of one or more composition commands which items of real time data are to be displayed, and what portion of said real time data to display if less than all portions of an item of real time data is to be displayed, and where and how said selected item or items of real time data is to be displayed, and for causing said dispatcher means to request and obtain any item of said real time data specified in any composition command and for receiving said real time data from said dispatcher program and displaying said data at the location and in the manner specified by said user through said composition commands, and for continuing to receive and display said real time data and updates thereto even while processing receipt of new composition commands; and
means for storing the collection of said composition commands received by said document composition means as a document definition and for making said document definition available to be re-opened and displayed, and, upon re-opening of said document definition, for automatically causing said dispatcher program to obtain the current values for all the items of real time data specified by said composition commands and for displaying said current values in accordance with said composition commands stored in said document definition.
45. An apparatus for transforming a blank image on a computer display into an image of a dynamically changeable document having one or more pages the content, composition and style of each page being user selectable in real time, said document for display of one or more items of data the value(s) of which change over time, comprising:
a collection of data sources which output items of data the value(s) of which change over time;
a computer having a display and one or more input devices and coupled so as to be able to access said data sources and receive said data items output thereby and updates to the values of said data items;
a program in execution on said computer for receiving, at any time, composition commands from a user regarding the desired content, composition and layout of each page in the display of said document defining the items of data to be displayed, and for automatically converting those composition commands into requests for the value of any data item specified in said composition commands, and for receiving, at any time, any said requested data item and any updates thereto and displaying the value of said received data item on said computer display in the location and format specified by the user through said composition commands, and for continuing, at any time, to update the displayed value of each item of displayed data until a command is received from said user indicating the user no longer wishes to view that particular item of data.
46. An apparatus for transforming a blank image on a computer display into an image of a dynamically changeable document having one or more pages the content, composition and style of each page being user selectable in real time, said document for display of one or more items of data the value(s) of which change over time, comprising:
a collection of data sources for outputting data items, each of said data items comprised of one or more data components the value(s) of which can change over time, at least some of said data items being self-describing in that each data item is included within a data aggregate which is comprised of said data item and metadata which describes one or more of the following things about the data item: the organization or format, representation or type, or element or field names for the data elements or fields making up said data item;
a computer having a display and one or more input devices and in coupled so as to be able to access said data sources and having a communication program in execution thereon to access said data sources and obtain the current values of specified data items and to receive updates to the values of said specified data items;
a program in execution on said computer for storing a plurality of style maps each of which defines a particular style of displaying particular types of data items, and for receiving composition commands from a user regarding the desired content, composition and layout of each page in the display of said document defining the item(s) of data to be displayed, and for automatically converting those composition commands into requests to said communication program to obtain the value(s) of all data item(s) specified in said composition commands, and for receiving the value(s) of said specified data item(s) and any updates thereto and displaying the value(s) of said received data item on said computer display in the location and format specified by the user through said composition commands, and for continuing to update the displayed value of each item of displayed data until a command is received from said user indicating the user no longer wishes to view that particular item of data, and for using said composition commands as a specification for selection of one or more style maps controlling the display style of one or more corresponding items of data, and for using said style map corresponding to each item of data selected by said user for display and the metadata from the corresponding data aggregates containing said selected data item(s) to control a process of selecting and formatting for display particular data components from the corresponding data aggregate(s) containing the selected data item(s) and to control and carry out the process of displaying said selected, formatted data components on said computer display.
Description
BACKGROUND OF THE INVENTION
The invention pertains to the field of application programs for monitoring and managing complex systems with many variables having values which vary in real time. More specifically, the invention pertains to the field of software systems which permit the user to create custom active documents with the layout, look and content defined by the user and displayed on a video display. Changes in the values of real time data which are included in the active document defined by the user are reflected immediately on the display.
In the management of complex systems such as the financial community, airplanes, semiconductor fabrication processes, etc. it is often useful for a user such as a financial trader to be able to look at only some subset of the total data available to him or her or to arrange the available data in a style which best suits the user's management and/or analysis style. In the prior art for the financial community, the Quotron product fills some portion of this need, but is inadequate in many respects. The Quotron product has a video display where three basic areas are available for customization by the user. One area is reserved for stock quotes where individual stock prices are displayed in a block. The user can customize to the extent of defining which of the many stocks for which quotes are desired. The current price of the stock is then displayed in each block or window devoted to that stock by network access of a service that provides stock quotes. Changes in the stock price are reflected on the display when they occur. Another area of the display is reserved for so-called "tickers", i.e., streams of trade data for various stocks defined by the user with the stream for all the trade data moving across a common window. A third area of the display is reserved for a market monitor display where a plurality of stock prices are displayed as a group in a single window. With the content of the group, i.e., the stock prices selected for display selected by the user.
The Quotron product is inadequate in many respects. For example, it is useful for a user to be able to be able to define a multi-sheet, completely custom document with whatever data he or she desires on each sheet arranged in whatever groupings, locations, format, color, font, pen desired with changes in real time data being reflected immediately on the display. Further, it is useful for the user to be able to set upper and/or lower alarm limits for any or all real time data displayed on any sheet and to define scripts of actions to take if the value of the real time data exceeds these limits. Further, it is useful to be able to publish any or all the data shown on any sheet of the active document on a network to which other users and/or automated processes are coupled via their respective hosts. Finally, it is useful to be able for a user to define and layout certain areas which will appear on all sheets such as one to four margins, headers or footers with text, a common "button" or a set of buttons, i.e., display objects with user programmable text labels and a "push" operation with a programmable action which occurs every time upon a " push" of the button such as by selection of the button with a mouse, touch screen, voice designation or by the keyboard etc.
SUMMARY OF THE INVENTION
An apparatus and method according to the teachings of the invention provides a computer facility (hereafter the application or program) whereby a user, using a collection of layout tools may define an active document. "Active document" as that term is used herein means a video displayed document of one or more "sheets" of the user's design which incorporates text, displays of real time data in user definable style, e.g., color, font, background, pen size etc. and format, e.g., quote, ticker, graph etc., alarms, and alarm scripts, i.e., user defined scripts of commands to be processed (much like a word processing or spreadsheet macro)when an alarm limit is exceeded. The program automatically accesses the network to which the host is connected through network interface software which establishes the proper subscriptions for the desired real time data with the appropriate information service and the server upon which this service process is running. Real time data is then passed to the program from whatever network communication process is being used and is immediately displayed in the format, style and location previously specified by the user. Although the invention will hereafter be described in the preferred embodiment for use in a financial environment such as a trading floor of a broker such as Dean Witter etc., the invention is not limited to such applications. Any complex system which generates real time data which control operators must monitor are subject to being monitored and controlled using the teachings of the invention.
The user defines each sheet of the document using a variety of tools which can be used to create display objects such as simple quotes or tickers to sophisticated graphs and tables. The user may also use the tools to create text fields such as customized help screens which help other users understand the active document which has been created. All the tools share a common set of commands which are located in an menu typically displayed at the top of each sheet. Preferably, the tools are symbolized by icons and the menu options, when invoked, cause pop-up menus to appear with other options. The menu options are used to set the symbols for stock prices to be monitored, changing display characteristics and selecting which of the multiple pages to view. The location and type of menu display and the location and type of system used to display and/or invoke the layout tools is not critical to the invention. Similarly, the type of input device used to select tools, specify locations, specify symbols or the source of real time data to display at any particular display object, or to direct the program where on a sheet to display a particular display object is not critical to the invention. A mouse, trackball, digitizer, keyboard, voice processor and map coordinate system, touchscreen, or any other present or future device may be used such as a thought processor.
The tools provide access to information from any source including other programs running on the same host 0 or somewhere else on the network, ticker plants, information services or databases. In the preferred embodiment, the program can support data feeds from Reuters Market Feed 2000/IDN, Telekurs Ticker, CMQ Telerate MarketFeed, Canquote, and Quotron. In addition, the program (known commercially as the MarketSheet.TM. facility or program) can accept prices extracted from paged market data feeds such as Telerate TDPF, Reuters RDCDF, FBI and RMJ. These types of data are first extracted by Page Shredder.TM., another program available from the assignee of the present invention, but the particular manner in which the prices are extracted from page feeds is not critical nor is it part of the invention and the invention may be practiced without this facility or with any prior art method of extracting prices.
In the preferred embodiment, the tools available for defining an active document are as follows. A label tool allows the user to enter static text to label or annotate the active document or to create his or her own personalized help screens. A quote tools displays the value of an issue, including a user defined set of other fields pertaining to that particular company in a display style specified by the user. For example, a brief style displays only the price where a comprehensive style displays all the available fields. A ticker tool can be used as a selective or block ticker, and can show data in any display style. Upticks and Downticks can be shown in color and volume information can be included. A page fragment tool displays a region of a page-based feed such as Telerate or Reuters. Any region of the page designated by the user can be displayed from a single character to a full page. Highlighting modes are provided to highlight that has changed. A time based graph tool can be used to create graph display objects to graphically display the changes in value of a variable such as price per time. The time and price axes may be scaled to minutes or seconds, and the price value may be set to any unit such as 1/8 or 1/32 of a dollar. Above and below channel segments can be drawn on the graph. Graphs may be merged to show two issues against the same time axis. A data set graph tool can be used to create graph display objects which display the values of multiple instruments such as stocks or bonds or other subscribed values in real me such as a yield curve in a semiconductor processing application environment. Graphs may be merged to show two different sets of issues against each other to indicate market opportunities. A table tool can be used to create display objects which show position blotters, currency lookup tables, and names of commonly used pages securities. A publisher tool publishes information constructed using the invention or entered the user onto the network using the network communication process running in the environment in the invention is running. The published information can be used by other processes linked to the network or as a bulletin board for use by her traders. A button tool can be used to create splay objects that execute scripted actions when the button is "pushed", i.e., selected in any way on the splay such as by clicking on the button by a mouse. The scripted actions are entered by the user in whatever sequence is desired in a language such as the MarketScript.TM. command language comprised of all commands at the invention can execute. In the preferred embodiment, the scripted command sequence can also include commands to the operating system, the network communication software and other processes running on the same host or elsewhere on network. Buttons can be programmed to carry out commonly performed operations such as moving quickly to an important page or performing an operation to be carried out when an alert condition occurs. The buttons allow creation of hypertext links between different sheets, and the alert scripts can perform operations such as changing a color, flashing an object, sounding an audible alarm or executing an external program. The latter capability provides great flexibility by enabling clients to program features such as the ability to telephone a beeper service when an alert occurs. A "glossary" facility allows users to add new operations, i.e., commands, to the scripting language and customize the menus as needed.
For ease of learning the system, new users are supported by providing short and full menu sets. New users can use the short set while working with existing templates and tutorial files. After the system has been learned, the user can graduate to the full menu set.
In the preferred embodiment, the program is used in a distributed system architecture embodied in a local area network coupling workstations and personal computers such that the right amount of processing power can be dedicated to each user and application. The distributed system architecture also allows critical applications to be supported by redundant or complementary equipment such that the system is sufficiently reliable to continue to operate even if a market data feed or server should fail.
In the preferred embodiment, the program according to the teachings of the invention is ported to work with the TIB.RTM. suite of network communication programs available from the Teknekron Software Systems in Palo Alto, Calif. The TIB.RTM. software is described in U.S. patent applications having Ser. Nos. 386,584, filed Jul. 27, 1989 (now U.S. Pat. No. 5,187,787), 07/601,117, filed Oct. 22, 1990 (now U.S. Pat. No. 5,257,369) and Ser. No. 07/632,551, filed Dec. 21, 1990, the specifications and drawings of which are included herewith. The TIB.RTM. software supports subject based addressing, network architecture decoupling, communication protocol decoupling, data decoupling and separation of information sources from consumers. The TIB.RTM. software subject based addressing capability frees applications such as the program according to the teachings of the invention from the need to know exactly where on the network information of a particular type can be obtained. For example, a trader can reference "long bond yield" as the subject of a desired real time data subscription without the need to know the specific physical location on a specific page of a specific information service running on a specific server. Then, if the source of the information changes, users need not change their screens and programmers need not change their programs.
The separation of information sources and consumers allows users to add or change market data sources without changing the application that use the data. The users can also add and change applications without impact on the existing sources of information. For example, data values from fixed format pages of market data can be combined with data from elementized feeds in a realtime spreadsheet. The spreadsheet can compute a result, e.g., the theoretical value of a derivative security, and publish it on the network through the TIB.RTM. software. The program of the invention can then graph the value in real time. None of these application programs need ever be aware of the existence or operation of the others. New application programs can be added to a firm's computing repertoire at any time, building on each other to create a total information environment.
The menu of commands allows the user to display an index of the sheets which have been defined for a particular active document file, and to select the sheet to view. The menu options also include commands to manage sheets and sheet files, and to control the appearance of the display and the objects within it. The menu also includes commands to rearrange the location of the display object windows or boxes (the term boxes will be used herein to avoid confusion with the term windows in which separate processes may be running in multitasking environment or DOS windows environments). In the preferred embodiment, the display object boxes may be layered on top of each other, and the menu includes options to change the order of the layers and move any particular box to the top of a stack. In the preferred embodiment, only one sheet is shown on the display at any particular time, but in alternative embodiments, several sheets may be shown in separate "windows" or layers on the display.
BRIEF DESCRIPTION OF THE DRAWINGS
FIG. 1 is a typical sheet layout in an active document containing one or more user defined sheets constructed with a program according to the teachings of the invention.
FIG. 2 is a state diagram for the normal and alert states to illustrate the operation of alert scripts.
FIG. 3 is a diagram of a typical environment in which the program of the invention operates.
FIG. 4 is an example of an instance of an Active Object class.
FIG. 5 illustrates how the properties of an Active Object are stored as data structures in memory, and how libraries of programs are linked to these data structures to carry out the operations associated with each instance of an Active Object.
FIG. 6 is a block diagram of the parts of a program according to the teachings of the invention, and the components of the computing environment in which the program, according to the teachings of the invention, operates.
FIG. 7 is a block diagram of the parts of an Active Object.
FIG. 8 is a flow diagram of processing after a real time data update.
FIG. 9 is a diagram of event processing flow in a program according to the teachings of the invention.
FIG. 10 is a drawing illustrating the basic display of a program according to the teachings of the invention.
FIG. 11 is an illustration of the menu bar.
FIG. 12 is a dialog box example.
FIG. 13 is an example of the pull-down sheet menu.
FIG. 14 is an example of the dialog box to select the index of interest.
FIG. 15 is the tools icon menu.
FIG. 16 is an example of how the display for an Active Object changes when the object has been selected.
FIG. 17 is an example of the display for multiple Active Objects when they have been selected.
FIG. 18 is an example of an object which has been selected by keyboard transversal.
FIG. 19 is an example of overlapped Active Objects.
FIG. 20 shows the pull-down menu structure for all menu options on the menu bar.
FIG. 21 is a block diagram illustrating the relationships of the various software modules of the communication interface of one embodiment of the invention to client applications and the network.
FIG. 22 is an example of a form-class definition of the constructed variety.
FIG. 23 is an example of another constructed form-class definition.
FIG. 24 is an example of a constructed form -class definition containing fields that are themselves constructed forms. Hence, this is an example of nesting.
FIG. 25 is an example of three primitive form classes.
FIG. 26 is an example of a typical form instance as it is stored in memory.
FIG. 27 illustrates the partitioning of semantic data, format data, and actual or value data between the form-class definition and the form instance.
FIG. 28 is a flow chart of processing during a format operation.
FIG. 29 is a target format-specific table for use in format operations.
FIG. 30 is another target format-specific table for use in format operations.
FIG. 31 is an example of a general conversion table for use in format operations.
FIG. 32 is a flow chart for a typical semantic-dependent operation.
FIGS. 33A and 33B are, respectively, a class definition and the class descriptor form which stores this class definition.
FIG. 34 is a block diagram illustrating the relationships between the subject-mapper module and the service discipline modules of the communication component to the requesting application and the service for subject-based addressing.
FIG. 35 illustrates the relationship of the various modules, libraries and interfaces of an alternative embodiment of the invention to the client applications.
FIG. 36 illustrates the relationships of various modules inside the communication interface of an alternative embodiment.
FIG. 37 is a block diagram of a typical distributed computer network.
FIG. 38 is a process architecture showing the relationship of the DCC library to the DCC protocol engines in the daemon.
FIG. 39, comprised of FIGS. 39A and 39B, is a flow diagram of the process which occurs, inter alia, at the three layers of the software of the invention where a subscribe request is sent to a service.
FIG. 40, comprised of FIGS. 40A and 40B, is a flow chart of the process which occurs at, inter alia, the three layers of the software interface according to the teachings of the invention when a subscribe request is received at a data producing process and messages flow back to the subscribing process.
FIG. 41, comprised of FIGS. 41A and 41B, is a flow chart of the process which occurs at the DCC library and in the reliable broadcast protocol engine when messages are sent by the reliable broadcast protocol.
FIG. 42, comprised of FIGS. 42A and 42B, is a flow chart of processing by a reliable broadcast protocol engine on the data consumer side of the reliable broadcast transaction.
FIG. 43 is a flow chart of the processing which occurs in the service discipline to implement the Intelligent Multicast.TM. protocol.
FIG. 44 represents the process of creating display objects for display of real time data using style maps and the process of using the style maps and metadata to control the process of extraction, format and display of real time data items from self-describing data objects received in a subscription stream which is initiated when a composition command is used to create a display object.
FIG. 45 represents the process of handling changes to attributes of the quote object, such as symbol, stylemap name, or other attributes such as visual attributes.
In FIG. 46, there is shown the details of processing to repaint the display using a style map and metadata when an update data aggregate is received on an open subscription.
In FIGS. 47A and 47B, the details of the subroutine "Style Map Apply" are given.
DETAILED DESCRIPTION OF THE PREFERRED EMBODIMENT
Referring to FIG. 1, there is shown one example of a user defined sheet in an active document constructed using a program according to the teachings of the invention. At the top left corner of the sheet is the file name, in this case FOCUS, naming the file in which the active document of which the user programmed sheet of FIG. 1 is a part. A menu of commands, i.e., functions which can be invoked by the user through whatever input device is being used, is shown at 12. In the preferred embodiment, the menu choices shown at 12 each "overlie" a "pop-up" menu displaying further command choices related to the overlying command choice. Those pop-up menus will be detailed in a later figure. The menu lets the user display an index of sheets within the active document and to select the sheet to view. The menu 12 also includes options to manage sheet composition and active document files. The menu 12 also includes commands to control the appearance of the display and the display objects associated with the Active Objects programmed by the user into a sheet.
Icons representing the tools that are available to the user to define the Active Objects which are to appear on any particular sheet of an active document are shown at 13. Each tool, when invoked, allows the user to create an Active Object on the programmable portion of the display at a location specified by the user using some input device. Each tool can be used to define an instance of a particular class of Active Objects or to carry out an operation such as publish or display a grid for alignment or layout of the sheet. The general classes of Active Objects are labels, quotes, tickers, time graphs, data set graphs, page segments and buttons. The tools may also be invoked by name rather than graphically by selecting an icon representing that tool using a pointing device. Further description of the various tools will be provided below.
The user programmable display area proper is shown at 14. At the top of the display area in this example, the user has created an instance 16 of a label class Active Object with text entered by the user to define what the particular sheet being displayed is. This label Active Object was created by invoking the label tool represented by icon 15.
The program according to the teachings of the invention use objected oriented programming style. Although the preferred embodiment of a program according to the teachings of the invention has been written in C language for easier portability among machines using programming conventions to make the C language act like an object oriented programming language, it is easier to construct the program using object oriented programming languages such as C++.
The middle of the display area contains several instances of quote class Active Objects in different display formats generated by invoking the quote tool represented by icon 17. Each three, four, or five letter individual symbol in the box 18
and the number next to it represents an individual quote where the user specified the symbol based upon the stock issue he or she wanted to monitor.
The middle of the display also shows an instance 20 of a ticker class Active Object showing all trades in a specified set of issues that exceed a minimum volume set by the user. This particular criteria for display was programmed by the user using the ticker tool represented by icon 19.
At the bottom of the display is an instance 22 of a graph class of Active Object. The program allows graphing of trades, volumes, spreads, indexes or any other value. Two different types of graph tools are provided although only graph icon 21
is shown in FIG. 1. In the preferred embodiment, another graph icon is present in area 13 representing a tool to create Active Object instances of data set graphs. These types of graphs are usually bar graphs where each bar represents some real time value about a different stock issue designated by the user although in different embodiments, each bar can represent the real time value of any variable in a complex system.
An instance of a user designated portion of a standard financial page such as Telerate, page 8 has been created at 24 using the page fragment tool represented by icon 26.
"Active document" as that term is used herein means a video displayed document of one or more "sheets" of the user's design which incorporates text, displays of real time data in user definable style, e.g., color, font, background, pen size etc. and format, e.g., quote, ticker, graph etc., alarms, and alarm scripts, i.e., user defined scripts of commands to be processed (much like a word processing or spreadsheet macro) when an alarm limit is exceeded. The program automatically accesses the network to which the host is connected through network interface software which establishes the proper subscriptions for the desired real time data with the appropriate information service and the sever upon which this service process is running. Real time data is then passed to the program from whatever network communication process is being used and is immediately displayed in the format, style and location previously specified by the user. Although the invention will hereafter be described in the preferred embodiment for use in a financial environment such as a trading floor of a broker such as Dean Witter etc., the invention is not limited to such applications. Any complex system which generates real time data which control operators must monitor are subject to being monitored and controlled using the teachings of the invention.
The attributes of the Active Objects which are used to compose an active document are as follows.
A label Active Object is just a fixed character string placed in a position on a sheet entered by the user. Labels are used to identify sheets, regions on sheets, and individual monitoring Active Objects as well as in script files to generate messages when an alarm event occurs or to generate customized help screen for a particular active document. A label does not change in real time. Its attributes are: String (field) which is the text string to be displayed in the label object; and, Alignment (radio button list) which is one of three formatting options--left, center and right.
A quote object is a familiar market price quotation. Any number of quotes may be placed on a sheet. Attributes of the particular instance record for a quote Active Object determine not only what issue is quoted, but also what items of information from the total comprehensive record for a particular issue are displayed. Different types of quotes may have different formats. The attributes of a quote are:
Market Type (list)
Defines the type of information being received from the source in this quote, such as equity, option, future or shredder output. This choice is used to determine the information source, the available styles and the internal record formats.
Display Style (list)
Defines what display format is to be used for this quote. Each market type has one or more styles defined, which typically show different collections of fields from the received information. Most market types have a "brief" or "regular" style, which shows simply symbol and price information, and other styles may also be present which show more detail.
Symbol (field)
Defines the specific symbol, i.e., stock, to be used for this quote instance. The symbol may have a suffix which indicates the exchange to use. These suffixes may be translated into a longer exchange name through translations set up by the System Adminstrator. Also note that for user convenience, character entered will automatically be put into upper case (if lower case letters are needed, such as for a class or warrant, the shift key can be used).
Alter Field (command button)
Pops up a dialog box containing a list of numeric fields in records for this market type. Used to select which field to use in alert calculations. This dialog box also contains areas to enter four different scripts, which are executed under different conditions, as explained below.
Limits (2 buttons and fields)
These are used to set above and below limits for an alert. Also, the above and below limits can be activated and deactivated by clicking on the check boxes. When the value of the real time data goes above or below the limits, the object is shown in reverse video.
The choices listed in the Market Type and Style lists are defined in configuration files. Other types and styles can be set up by the System Administrator.
Quote objects are traversable, which means that the user can transverse to the quote object and enter a new symbol simply by entering it from the keyboard.
Quotes have four different scripts which are run for different reasons with respect to alerts. FIG. 2 illustrates states behind this concept. A quote is either in the normal state 27 or the alert state 28. When a real time data update comes into a normal state quote and does not trigger an alert, the "normal update" script is run. A script is a user defined string of commands that are executed in sequence. They can be commands that the program of the invention understands, commands to the operating system or other processes operating in the environment or commands to any other process running anywhere else on the network. The script language also has a glossary facility facility whereby the user can define new commands and add them to the script language. When an update comes in which triggers an alert, the "begin alert" script 30 is run. This script takes the quote object into the alert state 28 where the "alert update" script is run. Additional updates which are in alert run will continue to run the "alert update" script. Then when an update comes in which is back in the normal range, the "end alert" script will be run, followed by the "normal update script. Thus, the four scripts provide a way of checking for changes in the state, or for staying in the same state.
The ticker tool is a continuously shifting display of trades in a specified list of issues. In addition to attributes, the dialog box for a ticker displays the current list of securities being tracked and some commands for manipulating the list. The dialog box is used to change or add to the securities on the list. The ticker attributes are:
Create (command button)
Adds a security to the list. A mouse click on a Create Button, i.e., the icon 19 in FIG. 1, will cause the Subscription Entry dialog box to appear. The subscription for the desired real time data is edited using the dialog box and is completed with a mouse click on the OK button. Another subscription can be entered with another click on the Ticker icon 19.
Delete (command button)
Deletes the currently selected item from the list.
Edit (command button)
To edit items which are already on the list, one pointing device click on the item selects it. Then a click on the Edit button, and the Subscription entry dialog box will appear.
Copy From (command button)
Replaces the current ticker list with a copy of the one from another ticker. A dialog box will pop up requesting the name of the source ticker.
Add From (command button)
Like Copy From but adds to the current ticker list instead of replacing it.
Name Sort (button)
Sorts the securities listed in the selection list by their symbol names.
Type Sort (button)
Sorts the securities listed in the selection list by their market type.
The subscription entry dialog for the ticker tool is as follows:
Market Type (list)
Used to select the Market Type for the security.
Ticker Style (list)
Used to select the display format for trades or updates to the ticker subscription instance. There are generally several styles, similar to those defined for the Quote object. The styles are generally different for the different market types.
Symbol (field)
Used to enter the security symbol. The same conventions are used as for entering the symbol into the Quote dialog box.
Volume (field)
the minimum number of shares in trades to be displayed. Note that this dialog box field will only be shown for Market Types which have an associated volume field. For instance, most equity fields have a volume but RTSS results do not.
Composite or "wild card" tickers can be created simply by entering for the symbol a period followed by the name of the exchange code. The ticker object will then show every update reported by the feed on that exchange.
The ticker object will show new data each time it receives an update from the data feed which includes either a new volume value, or a new value for one of the fields in the specified style. Thus, if the display style shows the symbol, the last price, and the trade volume, updates will appear when there is a change of the last price or the trade volume. If the display style shows the symbol and the bid and ask price, updates will appear when there is a change of the bid price, ask price, or the volume field. In this way, the ticker can handle information from source which do not have the standard field, such as output from the Shredder, an application that "shreds" data from page format into its individual elements.
The Page Fragment tool, represented in FIG. 1 by the icon 26, is a user selectable rectangular section of a page from a page-based market data service. The user constructs a page fragment interactively, using a pointing device to designate the fragment to be extracted and its destination on the sheet being composed. This can be done starting from a page-based service application, or entirely within the program of the invention. The user can then modify these and other attributes using the page fragment dialog box and the menu commands.
To make a page fragment Active Object to be displayed, the following process is performed:
1. Move the cursor to a window, i.e., a page-based display, containing the source page.
2. Position the cursor at the upper left corner of the region the user wish to select.
3. Click and hold down the left mouse button and move the cursor to the right and down to the lower right corner of the region the user wishes to select. The fragment can be as small as two characters or as large as the entire page.
4. Release the mouse button. The fragment will appear in reverse video.
5. Select the Page Fragment tool from the toolbox by clicking on icon 26 or typing the name of the tool or using any other input device to select the tool.
6. Click the mouse button where the page fragment is to be located on the sheet being composed and drag to the lower right.
To make a page fragment with no source page:
1. Select the Page Fragment tool from the toolbox.
2. Drag the region where the page fragment is to be positioned on the sheet being composed.
3. The page fragment will be blank except for the title. Use the dialog box to define the service, page and region to be displayed in the page fragment. The default region will be the full page.
The dialog box for a page fragment will display the full source page, and draw the region being extracted for the fragment. The program according to the teachings of the invention draws display objects by invoking the functions of the commercially available XWINDOWS system in the preferred embodiment although other embodiments can be ported to any other commercially available or research screen rendering library, program or toolbox. The XWINDOWS system is available from a consortium of universities and commercial vendors known to those skilled in the art. To change the region in which the page fragment is displayed, the mouse or pointing device can be used to designate the upper left corner of the new region, and then drag to the lower right corner. The dialog box can also be used to set the following attributes:
Service (field)
The name of the page-based source, such as Telerate. Click on this field to bring up a dialog box to change the service. If another page fragment is also displaying that service and page, it will be Immediately shown in full source page display. If not, the user must confirm the dialog box to request the page from the service.
Page (field)
Page Number (or name), such as 7677. Click on this field to bring up a dialog box to change the page. If another page fragment is also displaying that service and page, it will be immediately shown in full source page display. If not, the user must confirm the dialog box to request the page from the service.
Title Position (radio button list)
Used to specify that there should be no title, or that there should be a title indicating the service and page number, and the highlighting mode. The default is that there is no title, in order to pack page fragments closely together.
Page Fragments are traversable. The user can traverse to a page fragment object, and enter a new page name or number simply by typing it from the keyboard.
The Graph tool allows creation of graph Active Objects with associated display objects which track the real time variations in a variable in a complex system such as market value. The graph object is a composite of several simpler objects: a graph/time axis, a price axis, and a graph area. Each of these areas can be independently selected for changes to colors, fonts, and borders. The outermost portion is the frame for all of the graph sub-objects, and must be selected in order to perform edit operations such as move, resize, or front/back restacking operations.
Each axis has its own attributes controlled by a separate dialog box. Because the graph object is a composite object, it may not be duplicated with the Duplicate tool.
When the user clicks and holds a mouse button anywhere inside the graph area, the value for the Price Axis is shown in the upper left hand corner of the Graph Display Area and the value for the Time Axis is shown in the upper right hand corner. This feature is useful in identifying numeric values for any point of the Graph Lines.
The Graph/Time axis dialog box allows the user to edit attributes of the overall graph as well as the attributes of the times axis. The attributes this dialog box currently supports are divided into the following categories.
SCALING ATTRIBUTES
Type (radio button list)
Selects the type of time axis. The time axis currently support two types of scales: time and ticks. The default is time.
Precision (radio button list)
When the scale type is set to time, the precision of the scale mark labels can be set to minutes or seconds. When the scale is set to ticks, precision is not adjustable.
Lock Scale (option button)
Freezes the time axis minimum and maximum values to their current settings, disabling automatic rescaling. When this option has been selected, a lock icon will be shown on the axis.
TIME AXIS LIMIT ATTRIBUTES
Maximum (field)
The upper limit of the time scale.
Minimum (field)
The lower limit of the time scale.
Step Value (field)
The increment to show when drawing hash marks and numbers on the time axis. Axis limits can be changed manually in the dialog box or can be changed using scaling commands
Draw Grid Lines (option button)
If selected, the tick marks on the times axis are drawn across the graph area.
CHARACTERISTICS
Axis Position (radio button list): selects position of time axis as either above or below the graph area.
New Price Axis (command button)
Creates a new additional price axis and positions it to the right of the existing axis.
GRAPH PRICE AXIS
Each graph can one or more price axis, each corresponding to a different instrument being graphed.
NAME
Symbol Name (field)
Defines the specific symbol to be used for this price axis, such as IBM or GOLD. This may be followed by an exchange code. The same conventions used in the Quote symbol name apply here.
PRICE AXIS LIMITS
Max Value (field)
Upper limit of price scale.
Min Value (field)
Low limit of price scale.
Step Value (field)
The increment to show when drawing hash marks and numbers on the price axis. Axis limits can be changed manually in the dialog box or can be changed using scaling commands.
Draw Grid Lines (option button)
If selected, the tick marks on the time axis are drawn across the graph area.
PRICE AXIS COMMANDS
Delete Axis (command button)
Deletes the selected price axis unless it is the only price axis.
Copy Axis (command button)
Copies the selected price axis and places it on the screen to the right of the existing axes
Clear Trends (command button)
Removes all trend lines related to the current price axis
Price Axis Attributes
Line Width (field)
Determines the width of the Graph Plot Line. Width of 0 is recommended for optimum repainting time
Retain Count (field)
The number of data points that are kept for the given axis. The default is 150, this means that the system keeps track of least 150 "ticks". Once 151 is plotted, the first tick is dropped off.
Point Size (field)
The size of the Point drawn when a new data value is plotted.
Precision (field)
The number of decimal places to show on the Price Axis (Y-axis) has marks.
Connect Points (radio button list)
If "Yes", will draw lines between data points; If "No", will only plot data points (be sure to set Point Size to greater than 1 if lines aren't drawn).
Direction (radio button list)
Places the current Price Axis on the Left or Right hand side (default is left).
Lock Scale (option button)
Freezes the price axis minimum and maximum values to their current settings, disabling automatic rescaling. When this option has been selected, a lock icon will be shown on the axis.
GRAPH TREND LINES
Trend Lines may be drawn on a graph to indicate support and resistance levels.
CREATING TREND LINES
1. Move the cursor to the point on the Graph where the Trend Line should begin.
2. Hold the Shift Key down and click the left mouse button. This creates one trend point. The user can move the trend point before releasing the button by moving the mouse to the desired location.
3. Click the left mouse button a second time on the first trend point, hold it down, and drag the cursor to a second trend point. The user will see a temporary trend line "following" the mouse cursor as the user drags it into position.
4. Release the Mouse Button to complete the line. It will appear as a dotted line.
EDITING TREND LINES
Insert Trend Points/Segments
Press and hold the left mouse button on one of the trend points. A new trend point will be created that can be dragged to the desired location.
Move Trend Point
Press and hold the right mouse button on the trend point to be moved and drag it to the desired location.
Delete Trend Point
Hold the shift key down, and click on the trend point with the right mouse button.
Move Trend Line
Hold down the Shift and Control keys together. Press and hold the right mouse button on any trend point on the line. Then drag the trend line to the desired location.
DELETING TREND LINES
Hold down the Shift and Control keys together and click the left mouse button on and trend point on the line. All trend lines can be deleted by using the clear trends command in the Price Axis Dialog Box.
GRAPH SCALING
The dynamic graph application provides very flexible scaling functions as follows:
Settable min, max, and step values
The minimum, maximum, and step values of the axes can be set via the dialog boxes discussed in the Price Axis sections. They can also be changed via the rescaling methods described below (zooming, and moving trend lines).
Automatic Rescaling
Axes can be rescaled automatically when new data points arrive. Unless scale is fixed, the graph adjusts periodically to accommodate the current shape of the line.
Fixed Scaling
The automatic rescaling feature can be turned off by setting the lock scale attribute to true. This attribute can be set via the dialog box.
Zoom Function
The graph object provides the capability to zoom in on a rectangular section of the graph. The same action can be accomplished by setting the axis limits manually, but it is much easier to perform such an operation using the mouse. To initiate a zoom, hold down the CONTROL key, click the LEFT mouse button at one corner of the desired zooming rectangle, drag the cursor to the opposite corner of the rectangle, and then release the button. The axes will rescale such that the specified rectangular viewing region takes up the whole graph viewing region. To zoom back such that all points are visible, hold down the CONTROL key and click the RIGHT mouse button anywhere on the graph view area.
Rescaling via trend line drawing
There is a potentially useful side effect of drawing trend lines that can be utilized as a quick method for rescaling the axes to the desired values. When dragging a trend line point, the user may move the point outside of the visible graph window. If the user releases the button while the point is outside, and the appropriate axes are not "fixed," then the axes will rescale automatically to accommodate the new point within the graph area. Thus to extend the time axis further to the right, instead of changing the max value via the dialog box, the user may move a trend line point the desired distance beyond the right boundary of the graph view. When the user releases the mouse button, the time axis will extend its scaling to include the new trend line point.
GRAPH ALERTS
The graph alert facility provides a notification if a data point moves outside a region defined by two active trend lines. At any given time, at most two trend lines can be active. If two trends are active, then activating a new trend line will deactivate the last recently activated trend line of the two. Activation and deactivation of trend lines is done via an abbreviated "move" trend point operation, i.e. clicking on any point of the trend line with the right mouse button without any mouse movement between press and release. Clicking on an inactive trend line activates it while clicking on an active trend line will deactivate it. An active trend line is drawn in the color of the graph plot with which it is associated. Inactive trend lines appear in a lighter color.
If two trend lines are active, any new point that comes in through the subscription will be checked to see if it falls between the values specified within the time range of the two trend lines. An alert is triggered when a graphed value goes outside the bounds of the active trend lines.
To use the alert facility:
1. Make sure the correct price axis is highlighted for the security for which the user wishes to set an alert.
2. Create two trend lines that define upper and lower limit ranges (a "channel") for the security.
3. Activate the trend lines by clicking on any trend point with the right mouse button. An active trend line is shown as a dotted line the color of the graph plot line. An inactive trend line is shown as a lightly colored line. The right mouse button is a toggle between active and inactive.
4. If the security value goes above or below the channel formed by the two trend lines, the graph will alert. The alert is shown by the new trend point flashing as a large square.
5. The alert will continue to flash until a new trend point alerts, or if the user clicks on the alert with the left mouse button.
There are two scripts associated with graph objects, one for normal updates and one for alert updates.
BUTTON
A button is an object which the user can interact with, and will cause a script to be carried out when clicked on. For instance, the button might perform the equivalent of a Sheet Next command, or transfer the user to a specific sheet. Buttons allow the user to determine the dynamic action of the sheets, as well as their appearance. These scripts are expressed in the MarketScript.TM. language.
Each button is created using the button tool, and the user can use the font fill, and pen menus to specify the appearance of the button (the border menu does not operate on buttons). However, since a button carries out its operation when clicked on with the left mouse button, the user must use the middle or right mouse buttons to bring up the dialog box to set the button attributes. The "Script" entry of the button dialog box allows the user to enter the script to be carried out.
BUTTON STYLES
Style include rectangular, rounded, shadow, check box, and radio button. In most cases, the check box and radio button styles are used when there are groups of buttons. Note that for check box and radio button styles, the alignment choice does not apply.
SCRIPTING LANGUAGE
Scripts are composed of one or more actions, which are entered as a sequence. The actions can perform operations such as selection of objects, editing of selected objects, navigation to sheets, and editing of the current sheet. Note that these commands must be entered exactly as shown with respect to case. The currently supported scripting commands are:
______________________________________ Object Selection Commands: all select selects all objects on current sheet none select selects no objects on current sheet self select selects the object which is running the script <item.sub.-- name> find select selects all items of given name <class.sub.-- name> class select selects all times of given class <region.sub.-- bounds> region selects all items in region select Editing of Selected Items: front restacks selected items to front back restacks selected items to back hide hides selected items show shows selected items clear highlight clear highlight of selected page fragment objects <color.sub.-- name> pen sets pen color of selected items <color.sub.-- name> sets border color of selected items border Color <integer> borderWidth sets border width of selected items <color.sub.-- name> fill sets fill color of selected items toggle visibility inverts hide/show of selected items Move and Resize of Selected Items: <xXy> move move of selected items to x, y <dxXdy> move relative move of selected items <widthXheight> size resizes selected items to width, height <dwidthXdheight> rsize relative resize of selected items <x> alignLeft aligns left edge of selected items to x <y> alignRight aligns right edge of selected items to x <y> alignTop aligns top edge of selected items to y <y> alignBottom aligns bottom edge of selected items to y Sheet Navigation Commands: first sheet transfer to first sheet prev sheet transfer to previous sheet next sheet transfer to next sheet last sheet transfer to last sheet index sheet active index dialog <sheet.sub.-- name> find sheet transfers to next sheet with given name, wraps back to front if needed, beeps if name not found. push sheet pushes current sheet onto stack pop sheet pops entry off of sheet stack and goes to that sheet Editing of Current Sheet: <color.sub.-- name> background sets sheet color background to named color on gridLines turns on drawing of gridlines off gridLines turns off drawing of gridlines toggle gridLines toggles the drawing of gridlines Execution Control beep beeps the workstation <UNIX command> execute runs UNIX command in back- ground <milliseconds> pause pause for specified amount of time Environment Control: on toolBox shows the toolbox off tollBox hides the toolbox toggle toolBox inverts hide/show sense of toolbox on gridTool turns on grid tool off gridTool turns off grid tool toggle gridTool toggles activation of grid tool ______________________________________
SCRIPTING EXAMPLES
Sheet operations are most useful when creating new traversal options on a set of sheets. The "find sheet" command is most useful to transfer to a specific sheet, and will search from the first sheet to the last to find one which matches the give name.
The object selection commands provide ways to select all objects, no objects, all of a given class, all of a given name, or all in a region. For instance, if the user created a set of Quote objects, and had some display elements of the Dow-Jones Industrials and the others display the Dow-Jones Utilities, assign the name "INDU" to all of one group, and assign the name "UTIL" to the other group.
Then use a button script of "INDU find select red fill" to turn all of the Industrials red, and "UTIL find select blue fill" to turn all of the Utilities blue under button control. Another useful example would be to use "Quote class select green fill" to change all quotes to have a green fill color.
A common use of scripts and pop-up objects is to annotate a sheet with a number of extra label objects which describe what is being monitored or graphed. Make sure that the label objects are in front of the other objects, and then give them all the name "DETAIL". Now create a button with the script "DETAIL find select show", and another with the script "DETAIL find select hide". Executing these two buttons will turn the detail on and off on your sheet.
SCRIPTING NOTES
If an item name, sheet name, command, or color name contains a space, it must be contained within quotation marks. Either single or double quotes may be used. Names containing single quotes may be contained in double quotes, and vice versa.
When setting up alert scripts for a group of Quotes, set up the scripts on the first one, and then use the Duplicate tool to make the others. The scripts will be copied into each one made.
There are roughly 80 pixels per inch on a workstation screen. All of the x, y, width, and height measures in the scripting language are in pixels.
It is common for scripts to select objects to operate on, but if scripts are run at unexpected times (such as due to Quote updates), they could change the selection status of the objects the user is trying to edit. For this reason, the selection status of the objects is saved at the start of the script execution, and is restored afterwards. Thus if a script begins with an "all select" phrase, it is not necessary to end with a "none select phrase".
Referring to FIG. 3, there is shown a typical network environment in which the preferred embodiment of the invention would be employed. Elementized data feeds are received via a LAN/WAN (Local Area Network/Wide Area Network) 32 and handled by a feed handler 34. Paged market feeds are received via the network 32 and handled by a feed handler 36. A workstation 38 running a shredder process breaks up the pages of the paged feeds into their constituent elements. A workstation 40 running a program according to the teachings of the invention is used by a user to compose an Active Document to manage financial information in real time. As the various quotes, tickers, graphs etc. are created, subscription requests for the required data are passed to the network communication software running on the workstation 40. If the TIB.RTM. network communication software is being used, the subscription requests are filled using subject based addressing. The subscription requests result in properly formatted service request transmissions on the network 32 to the proper service and server in the proper protocol to request the desired data. The server or servers then transmit the data back to the workstation 40 where it is displayed in the Active Document defined by the user.
Referring to FIG. 4, there is shown a typical example of an "object" as that term is used in the object oriented programming world. An object is an entity which has both properties and associated operations which can be invoked by a user to change the values of various properties of the object. In the simple example chosen, the object is an entity representing a class of objects in the form of bank accounts. The particular instance in this class is a bank account for Jessica Doe. The properties of each object in this class or the account number, the balance and the owner name. The operations that can be invoked are withdrawal, deposit and query. Each operation can be invoked by entering a command to identify the object and start the operation (typically the name of the operation) followed by the argument. The operation then uses the argument to change the properties of the object. For example, the command Doe. Deposit(100) would invoke the deposit operation and add 100 units to the balance property of the Doe bank account.
Typically, an object is represented in memory by a record containing the values for each of the properties and a link or pointer to a library of programs which carry out the operations associated with that object. This structure is shown in FIG.
5. In FIG. 5, two data records 42 and 44 represent the values of the properties for two instance of bank account class objects. Each record has a link or pointer, 46 and 48, respectively, to a library 50 of programs which carry out the operations associated with this class of objects.
Referring to FIG. 6, there is shown a diagram of the hierarchy of the parts of a typical program according to the teachings of the invention. A Frame Object 52 "contains" all the other Active Objects that will be manipulated by the system. The Frame Object contains menus, dialog boxes and exactly one Active Document. The menus are software automatically of a menu system 54 and a plurality of menu objects shown generally at 56. The menu system 54 handles user inputs from whatever input device is being used for selection of commands, i.e., menu options. The dialog boxes are implemented by a dialog manager 58 and a series of dialog objects shown generally at 60. The dialog manager 58 handles user input associated with user selection of desired values for editing properties of Active Object instances which have been created on a Sheet using a tool. It is also used to specify commands which are specific to certain types of Active Objects. Generally, the menu options shown at 12 in FIG.
1 are generic operations which can be applied to any Active Object. However, certain Active Objects have associated properties and operations which are specific to that class of Active Objects alone. These specific properties and operations are embodied in the instances of dialog objects shown at 60 in FIG. 6. For each class of Active Object which has specific properties and operations, there is one or more dialog object(s) which can be used in a user dialog to set specific properties of an instance of that class of Active Object and to invoke operations which are specific to that class of Active Object. A graph class of Active Object is an example of a type of Active Object which has more than one dialog box. There is one dialog box to set the properties of the x-axis and one dialog box to set the properties of the Y-axis. Some of these dialog boxes "pop-up" supplementary dialog boxes.
An Active Document object 62 "contains" a plurality of other objects. They are: a plurality of Sheet Objects which have been composed by the user using the tools described above and shown generally at 64; a plurality of Active Objects the instances of which are created using the tools described above and shown generally at 66; and group objects shown generally at 68. Group objects are essentially "containers" for other objects and can contain a plurality of Active Objects such as are shown generally at 70 instances of which are created using the tools, and one or more other group objects shown generally at 72 each of which may contain a plurality of Active Objects such as shown at 74 or other group objects such as are shown at 76.
Some of the properties of each Sheet Object are: whether a grid used for alignment of various Active Objects thereon is or is not displayed; grid size; background fill pattern, e.g., solid blue, dollar signs, etc.; a list of contained objects; scripts associated with the Sheet that handle alerts for any objects on the Sheet; whether the grid is being used; edit mode status, i.e., whether the user will be allowed to edit (unlocked) or not be allowed to edit (locked) the Active Document; etc. Some of the operations/commands associated with each Sheet Object are: toggle grid setting; change grid size; change background fill pattern; align an Active Object to the grid; change the edit mode status; etc.
The Active Document object 62 has various properties including: the current Sheet to display; the list of Sheets in the Active Document; the file name under which the Active Document is stored; the number of Sheets; etc. Some of the associated operations include: open an Active Document file; add a Sheet or Sheets from another Active Document to this Active Document; close an Active Document file with save or do not save options; go to next Sheet; go to previous Sheet; etc.
The properties and operations associated with each Active Object on a Sheet are as defined above in the descriptions of Active Objects created with the tools.
The pop-up or pull-down menus under the main menu options of the menu bar are menu objects as are the main menu options of menu bar 12 in FIG. 1.
The dialog manager 58 insures that the proper dialog object is selected to make the proper dialog box appear when a tool is invoked which requires a dialog to set the attributes of an instance of an Active Object being placed on a Sheet by a user. The dialog objects are the objects which actually embody the dialog boxes. The dialog objects contain text attributes that define the user's options and associated operations or commands which the user can invoke, e.g., graphically by clicking on an icon representing that operation, to change the properties or attributes of the Active Object to which the dialog box is associated.
The Active Objects such as those shown at 66 consist of labels, quotes, tickers, buttons, graphs etc. Label objects are "active" even though they are text because they can, for example, be changed as part of a script of commands which are executed as a result of an alarm condition.
All the objects on the right side of the line 78 are stored in memory using the same structure as any Active Object with properties and associated operations. Some properties or operations may be nullities however so that the same structure can be used for all types of objects to the right line 78.
A tool manager 79 manages a plurality of tools objects shown generally at 80. The tools manager 79 handles the user input events which are associated with selection of the class of the next type of Active Object to be created. It is also used to edit the existing Active Objects. The tools objects have associated Display Objects which invoke the display/windows system through the applications interface 82 to render the computer display of the computer having the program described herein in execution thereon. In the preferred embodiment, the XWindow system is used to render the icons which represent each tool. Each tool object has operations associated therewith which implement the operations defined above in the descriptions of the tools. The XWindow system is available commercially from the XWindow consortium of universities headed by MIT. It is also available through most workstation vendors such as Sun Microsystems. In other embodiments other window systems such as Microsoft Windows 3.0 or the Macintosh toolbox in the Macintosh operating system may also be used, or a screen rendering system can be programmed for custom screen rendering.
A global event dispatcher 84 receives event information such as real time data updates from subscriptions and user input events and dispatches the data to the appropriate object or manager or other portion of the system to cause appropriate processing.
A script processor 86 interprets the commands of scripts entered by a user defining the desired processing to be performed in the case where an Event Triggering that script has occurred. Such an event could be the activation of a button or a real time data update which exceeds an alarm limit programmed by the user. Basically, the script processor handles requests to process scripts generated by the instances of the Active Objects programmed onto the various Sheets by the user.
Program systems according to the teachings of the invention operate in an "environment" comprised of various other support processes (programs in execution on the host computer). The environment for a system according to the teachings of the invention is shown below the line 88. A high end network interface 90 receives requests for data from the system and communicates on the network (not shown) to obtain the requested data. In the preferred embodiment, the network interface is the TIB.RTM. network communication software commercially available from Teknekron Software Systems in Palo Alto, Calif. but other network communication software may also be used. For example, the IBM Datatrade.RTM. system, DEC's DECTrade.RTM. system or other high level network interfaces developed in the future may be used. The TIB.RTM. software automatically maps subscription requests on particular subjects, e.g., IBM equity prices, into the appropriate network addresses for the appropriate service and server that provides this information and selects and carries out the appropriate service discipline and network protocols to communicate with the selected server over the particular network LAN/WAN system to which the host running the system according to the invention is connected.
An operating system 92 is also part of the environment and carries out host traffic direction and computer resource management duties necessary to support the system according to the teachings of the invention.
A file application programmers interface and file management process 94 is also part of the environment and typically runs on a file server, although in some embodiments, it may be part of the operating system.
Finally, the environment includes the display/window systems application programmer's interface for screen rendering. The preferred embodiment of a system according to the teachings of the invention utilizes the commercially available XWindow screen rendering system. This system can receive commands to draw various objects such as line, point, box or other primitives and text, font and color codes etc. from an application program and then render the screen accordingly. Any known screen rendering system can be used in other embodiments, or the screen rendering function can be programmed as part of the program system according to the teachings of the invention.
Referring to FIG. 7, there is shown a diagram of the parts of an Active Object. An instance of an Active Object 100 contains a data object 102, a Style Map 104, a Display Object 106, one or more Event Triggers shown generally at 108 and one or more Event Scripts of commands to be performed sequentially if an Event Trigger condition occurs. These Event Scripts are shown generally at 110. The Active Object 100 includes a local event dispatcher which dispatches events, e.g., user commands, to the various Active Object components for processing. For example, data updates from a network or database are dispatched to the Data Object 102, and "display frame" or display related events are dispatched to the Display Object 106. Events handled by the local dispatcher can be internally generated, such as a "change notification" event from the Data Object, which is dispatched to the Display Object so that the displayed representation can be updated.
The Data Object contains the internal representation of the data being manipulated by the Active Object, i.e., a full listing of all the data which is available about a particular subject, only some of which does the user desire to view. For example, typically a quote object will have a Data Object with a large number of fields of data about a particular company and the trading activity in that company's stock.
The Style Map 104 contains a human readable specification defined by the user via selections from a dialog box which popped up when the instance of the quote Active Object was created which specify which of the data fields in the Data Object to display in a display frame or box shown on the display to represent the Active Object and where to display the selected fields in the display frame. The Style Map also contains data which specifies certain display characteristics such as what color to display the object when the price is going up and what color when the price is going down. The Style Map is simply a specification. It does not do any of the actual work of rendering the Active Object instance or screening and selecting data from the Data Object to be displayed.
The Active Object 100 tells the Display Object 106 what Style Map to use. Then a style processor (not shown) in 25 and the Display Object do the work of extracting the proper data from the Data Object and sending the proper commands to the screen rendering system to display the desired data in the user selected format and style. The Display Object 106 encapsulates the data and operations required to display the data object in the "style" requested by the user. That is, the Display Object contains the internal representation of the actual data to be displayed for this Active Object in the location on the current Sheet specified by the user and a style processor. This internal representation is sent to the screen rendering system by the style processor to actually draw the display seen by the user. The style processor is actually implemented in a library and the Display Object 106 contains a pointer to this library and receives a pointer to the style map 104 such that the Data Object can be processed by the style processor library programs in 5 accordance with the style map.
The Event Trigger is a specif