User interface for a distributed messaging framework6745203Abstract A computer user interface for handling information objects. The interface allows a user to make a request for information in the form of a one-time query or a persistent query. With the one-time query, the user defines one or more conditions in terms of attributes and values. The appropriate classes of objects are checked and any matching objects are identified as satisfying the query. A persistent query allows such a condition to be active at all times so that when one or more objects are created that satisfy the condition, those objects are identified as meeting the condition. Other features of the user interface allow the user to define objects and publish objects. Objects can be created or edited based on a class whose attributes are inherited. A predefined selection of menu options makes creating, editing and publishing objects simple and efficient. Access controls and settings are provided to control rights to created objects. Claims What is claimed is: Description COPYRIGHT NOTICE
TABLE I
Data Place Name String representing symbolic name of the
owner data place.
(CADT in name space of data places)
Data Definition String representing symbolic name of the
Name data definition.
(Unique in the name space of the owning data place)
Ver # Incrementally assigned for differing mutations of same
data definition in holding data place)
(CADT in the name space of the owning data place
and data definition)
System Modifier Activation Status. (More)
Flags
Host Algorithm.sub.1 Arbitrarily associated algorithm.
. . . . . .
Host Algorithm.sub.n Arbitrarily associated algorithm.
Instance Name Incrementally assigned for differing instances of
same data definition in holding owning space.
Attribute Order (CADT in the name space of the holding data place
Number.sub.0 and data definition)
Attribute Order Type Name Value System Modifier
Number.sub.1 Flags (32 Bits)
. . . . . . . . . . . . . . .
Attribute Order Type Name Value System Modifier
Number.sub.n Flags 932 Bits)
User Space
A named data definition can exist only in a named data place. Hence it is a two-dimensional entity [data place, date definition]. Data definitions can be created only in association with data places and are assigned CADTs by their owner data place. Data definition changes within owning data places are incrementally numbered based on the chronological order of the changes. Differing versions of the same definition always follow these rules: Attributes can be added and deleted but not updated in any of the characteristics of an attribute e.g., type. Any data definition version or related instance with a sequence number lower than any other can be treated transparently as one of a higher number. DD.sub.n ==DD.sub.m if n <=m Any data definition version or related instance with a sequence number higher than any other can be treated transparently as one of a lower number with truncation of absent fields. Attributes added can be deleted, but attributes deleted cannot be recreated. Any singular data place cannot contain multiple version numbers of the same data definition. Data definitions are used to create instances of the definitions. For example, a data instance such as the "Job Candidate" instance of FIG. 1A is created with a data definition that does not include values--merely attribute names and types for the values to be bound to the definition at a later time. Data definitions bind (assume unambiguous equivalency to) with specific sets of corresponding values to form distinct instances. Attribute names act as the rendezvous token while binding data values to data definitions and for the purpose of equivalency determination discussed in more detail below. Such sets are logically referred to as data values, such as data values 234 shown in FIG. 3. Data values do not physically exist by themselves but are supporting data that bind to a data definition (which is created in association with a data place) to result in a data instance as shown diagramatically in FIG. 3. A named data state interest request (or Data Request) is network addressable. This request is an ordered specification of one or more dimensions of data namely [data place, data definition, data value], where data place and data definition are straight single-value equivalency specifications and data values specifications are in the form of conditions on one or more of the attributes including the CADT (which is treated as any other attribute). The resulting set's size is determined by the number of matching occurrences. Data requests can be created only by data places and are also assigned CADTs by their owner data place. An example of a data request corresponding to the example discussed above in connection with FIG. 1A is a query for [Server1, Job Candidate, "When available"=AFTER 3-6-98]. Data requests have the same logical structure as a data definition except for the extra condition specification as shown in Table II.
TABLE II
Data Place Name String representing symbolic name of the
owner data place.
(CADT in name space of data pieces)
Data Definition String representing symbolic name of the
data definition.
Name (Unique in the name space of the owning data place)
Ver # Incrementally assigned for differing mutations of same
data definition in bolding data place.
(CADT in the name space of the owning data place
and data definition)
System Modifier Activation Status. (More)
Flags
Host Algorithm.sub.1 Arbitrarily associated algorithm.
. . . . . .
Host Algorithm.sub.n Arbitrarily associated algorithm
Instance Typed Condition Incrementally assigned for
Name Specification differing instances of same data
Attribute Order (Equal to definition in holding owning
Number.sub.0 space.
(CADT in the name space of the
holding data place and data
definition)
Attribute Order Type Name Typed Condition Value System
Number.sub.1 Modifier
Flags (32
Bits)
. . . . . . . . . . . . . . . . . .
Attribute Order Type Name Typed Condition Value System
Number.sub.n Modifier
Flags (32
Bits)
User Space
Interest request specifications can be set across one or more of the data state dimensions; namely, (data place, data definition, data value) by any data place. Lesser dimensions are valid following the rule that Data Request specifications of dimension n always include choices for previous dimensions, where the dimensions are numbered as follows: Dimension1: Data Place Interest Request=(source data place).f(data place) Request for complete replication. The above interest request results in all instances of all data definitions in the data place being returned. Dimension2: Data Definition Interest Request=(source data place).f(data place, data definition) Request for definition replication. The above interest request results in all instances of the data definition in the data place being returned. Dimension3: Data Value Interest Request=(source data place).f(data place, data definition, data value) Request for conditional instance replication. The above interest request results in all instances of the data definition in the data place that meet the data value query being returned. Interest request specifications can be made persistent by naming them. Such persistent requests are uniquely identifiable using the owner data place assigned ID. Named data instances are network addressable. This is a populated occurrence of a data definition and data request in any data place. Data instances get their names from the CADTs assigned to them by their owning data place. Data instances can, as a result, be queried on either the values or the unique ID This CADT completely supercedes the data values of the instance for the purpose of equivalency determination. A named data instance can occur only in a named data place for a named data definition. Hence it is a three dimensional entity [data place, date definition, data value]. A named algorithm is network addressable. An Algorithm can be merely a string of bytes, which can do meaningful work with fully defined data, hence functioning as associations between these data. Algorithms do not require a specific data place to exist. The simplest form of an algorithm could be a constant value, which may represent some semantic value to another algorithm, said algorithm then acting as a parametrizable algorithmic template. Algorithms can thus be seen as made up of templates and constants. Such a token can be seen as a simple association. (An examples of a token could be `contains` and a template could be `resolve containment`.) Processing Tenets The system builds upon the following basic processing rules, which are called processing tenets. Intrinsic operations of the system employ these and only these specifications of data structures and sequences of instructions. All other data structures and processing mechanisms are either built using them or are custom in nature and external to the system: The system basically deals with creating multiple data places and managing them. Management here is in terms ensuring that data definitions across places are always synchronized and data instances across places are always conditionally synchronized. This represents the intrinsic functionality of the system, it can be extended to any degree using external algorithms which provide meaningful service applications built on top of a given data place. These are called Data Place Applications (DPAs). As will be shown later, the ability of DPAs created by an independent user or company that manipulate data definitions created by another user or company provide an "open" system that lends itself to efficient commercial uses. Intrinsic and application algorithms can interface with the system data by two means. The first is Time Based Periodicity where the algorithm obtains information from the system, such as the synchronizing of data definitions and data instances, at predetermined periods of time. The second manner of interfacing allows the algorithm to be notified whenever there is any change in information of which the algorithm needs to be aware. The "on change" approach is obtained by the algorithm by submitting a Data Request to the system. Algorithms cause processing which can be one of three types: (1) data creation; (2) data assignment, further changes in the value dimension of data state; or (3) data movement, further changes in the place dimension of the data state. Such changes then cause further processing. The system finally provides for two kinds of inherent process addressabilities, an Inner NASIB process and an Outer NASIB process. The Inner NASIB Processes gain network addressing characteristics just by virtue of beginning execution. They are aware of the data place naming scheme and are always listening for requests on well-defined network byte transfer ports. Outer NASIB Processes gain network addressing characteristics by explicitly knowing the address of at least one Inner NASIB Process. Data places share hierarchical relationships among themselves, as mentioned. These relationships, however, are purely for addressing purposes. The data places are free to maintain independent data relationships (data definitions and data instances) with as many data places as desired, as long as each of them is addressable. Hence data places maintain two kinds of relationships: addressing and data. Each of these relationships can mutate completely independent of the other. Further, every data place has to provide at least one generic communication port for incoming and outgoing traffic. A data place, therefore, always needs to be parented off one, and only one, other data place. Although the system is very dynamic and allows the continuous creation, destruction and modification of data places by users, along with access grants to the data places, there are some special data places which are integral to the system's functioning. For example, the Root Data Place is the main node for sprouting the rest of the system's place hierarchy. FIG. 4 is a diagram showing the data place hierarchy based around root data place 250. The root data place requires no parent, and is an abstract space where no entities can actually reside. It refers to the collective knowledge domain of all NASIB processes existing on a connected computer network. The root data place is subdivided into domain data places, each of which could possibly be thought of as a NASIB server process. A domain data place is always directly network addressable and discoverable. Within a domain data place can exist as many named data places as required, each parented from a domain data place or a direct or indirect descendant of it. A named data place is always addressed through a domain address space. Data places assign unique IDs (i.e., CADTs) to the core entities of data definitions, data instances and data requests. In this manner, data is associated with an owning, (or, conceptually equivalent, controlling and creating) data place. Since the data place, itself, is associated with a user or machine, the ultimate control over core entities, and categorization of those entities, can be traced to a user or machine. The ability to categorize and handle data with respect to data places is a powerful tool in allowing a user to identify, collect and publish data and algorithms as will be shown in the examples below. FIG. 5 shows the five types of components always maintained by a data place. The components within data place 260 are NASIB communicator 262, Pending Algorithms Table 264, Source State Table 266, Change State Table 268 and Observer Requests Table 270. The NASIB communicator is a core algorithm which facilitates the transfer of the byte set to or from the requesting data place in response to a given NASIB communication specification. In effect, this is the communication port of the data place. The Pending Algorithms Table is a logical table representing a queue of tasks for the data place. The Source State Table is a logical table representing all the data instances in the data place organized typically by data definitions. The Change State Table is a logical table representing the list of changes applied to the source state table. Changes become part of the current state (or are deleted) when all resultant algorithms have marked it as no longer of any interest. The Observing Requests Table is a logical table representing the list of observer algorithms on the change state table. Other data places have their own components as illustrated by data places 280 and 290. An application represented at 292 performs operations on data at the Data Places by invoking the NASIBS communicator which uses the four tables to perform the operations. It is possible for multiple data places to share one or more of the state tables. Data places need to provide the following six local manipulation operations: (1) Create Data Definition; (2) Update Data Definition; (3) Delete Data Definition; (4) Create Instance given data definition; (5) Update Instance given data definition and instance ID (CADT); and (6) Delete Instance given instance ID (CADT). Data places need to provide access operations such as (1) Get Data Definition given definition name, (2) Get Data Instance given data definition and instance ID (CADT), and Get Data Instance given data request. Data places need to provide the following three kinds of synchronization operations: 1) Every instance of a new data definition that enters a data place results in a data request being generated on its definition in the owner data place. This algorithm is called the Default Definition Synchronizer Algorithm. It needs to be provided by every participating data place. This could be a singleton function. This function is like a Take Data Definition. 2) Data between any two data places is always exchanged based on data requests between them. There should be an algorithm to synchronize contents with another data place based on a data request. A persisted data request performs this function. This algorithm is called the Default Value Synchronizer Algorithm. It deletes all instances satisfying the data request in itself and inserts into it all instances satisfying the data request from the source data place (named instances as a result are automatically updated). There can be multiple instances of these. 3) A special case of the above kind of synchronization function is the Default Instance Synchronizer Algorithm, which is a data request using Instance Equivalency. This needs to be provided by every participating data place. This is a singleton function and is common enough to be considered intrinsic. This function is like a Take Data Instance Set. FIG. 6 shows tables shared among data places (or "spaces") as "Pending Algorithm Table," "Source State Table," "Change State Table" and "Observer Request Table." Formal State Tables of the System Intra Data Place and Inter Data Place operations are governed by the following state tables shown as Table IIIA and Table IIIB, below.
TABLE IIIA
Data Instance
New/Create Update by CADT Delete
Owner Space.sub.N Space.sub.M Space.sub.N Space.sub.M Space.sub.N
Space.sub.M
Space.sub.N Yes No Yes No Yes No
-Become -Import -Run -Request -run -Request
Owner -By Data Algorithm.sub.B Source Algorithm.sub.C
Source
-Run State Int. -By Data -By Data
State
Algorithm.sub.A Request State Int. Int.
Request
Request
Data Definition
FIG. 7 shows some of the relationships of Tables IIIA and IIIB in diagram form. Table IV lists rules that are followed by the system in handling data definitions, instances and processes. Definitions are always owned by data the place creating it. Whenever import of named definitions (through explicit "get") occurs across data places DDSA is installed. Once imported, any update requests on foreign data definitions are simply redirected by the operating data place to the owning data place; self-update takes place through the DDSA. An attempt to double delete a definition is not possible. Data instances are always owned by the data place creating them, whether the definition is local or imported. Whenever import of named instances ("query," as in traditional parlance is not an import) occurs across data places DISA is installed. Once imported any update requests on foreign data instances are simply redirected by the operating data place to the owning data place, self-update happens through the DISA. An attempt to double delete instance is a null operation. Data always comes into a data place by virtue of local creates or inter-data-place imports; no direct copy can be done. TABLE IV Note that multiple implementations are possible for the methods of the present invention disclosed in the source code involving various sequences of operations, concurrency strategies, locking strategies and optimization strategies. The basic steps represent the broad logical requirements of any implementation. For a detailed description of the workings of the algorithms the Source Code Appendix should be consulted.
Algorithm Sequence of Steps
A 1. Add Instances to definition-specific source state table.
2. Mark all changes in singleton state change table.
3. Assemble all data requests as per foreign data place
and data definition.
4. Run all resultant data requests and compare previous
Count.sub.P and new Count.sub.N.
If Count.sub.N - Count.sub.P > 0 generate an Add: Data
Instance for the respective data place.
5. Factor out common data instances by data place.
6. Dispatch to NASIB Communicator.
B 1. Add Instances to definition specific source state table.
2. Mark all changes in singleton state change table.
3. Assemble all data requests as per foreign data place
and data definition.
4. Run all resultant data requests and compare previous
CountP and new CountN If CountN - CountP > 0 mark
change as a Add: Data Instance for the respective
data place.
5. Run all resultant data requests and compare previous
CountP and new CountN. If CountN - CountP = 0 mark
change as a Del: Data Instance for the respective data
place.
6. Run all resultant data requests and compare previous
CountP and new CountN. If CountN - CountP = 0
generate an Upd: Data Instance request for the
espective data place.
7. Factor out common data instances by data place.
8. Dispatch to NASIB Communicator.
C 1. Delete instance from definition-specific source
state table.
2. Mark all changes in singleton state change table.
3. Assemble all data requests as per data place and
data definition.
4. Run all resultant data requests and compare previous
CountP and new CountN. If CountN - CountP < 0
generate a Del: Data Instance request for the espective
data place.
5. Factor out common data instances by data place.
Dispatch to NASIB Communicator.
D 1. Assign first version number for data definition.
2. Create data-definition-related source state table.
E 1. Assign new version number for data definition.
2. Effect data definition change by creating new table with
updated version number.
3. Assemble list of DDSAs from foreign data places.
4. Generate an Upd: Data Definition request for each
data place.
5. Dispatch to NASIB Communicator.
F 1. Delete data-definition-related source state table.
2. Assemble list of DDSAs from foreign data places.
3. Generate a Del: Data Definition request for each
data place.
4. Dispatch to NASIB Communicator.
Note that these algorithms involve only the five processing entities and the five logical components of each Data Place: Source State Table, Change State Table, Observer Requests Table, Pending Algorithm Table and the NASIB Communicator. The three kinds of operations on a data definition and on data instances are Add, Update and Delete. Permissibility is determined by the rules in an access table. The three kinds of operations permitted on data instances are Add, Update and Delete. Permissibility is determined by the rules in an access table. Operations and data storage are organized as per the data definitions involved, though heterogeneous implementations are possible using multiple serialization techniques, or other techniques. The Change State Table and the Observer Algorithm Table should always be locked by any concurrent thread for the entire period of operations, since both the tables are subject to internally dependent writes. The Observer Requests Table always keeps a current "satisfaction count" for itself as per each unique named data request. The algorithms executed from the Pending Algorithm Table typically deal only with the Source State Table and the Observer Request Table, never with the Change State Table. External Algorithms also suffer the same restrictions. Discrete distributed processes following these principles and techniques include these basic steps and tenets combined with higher level semantics, discussed immediately below, to form a data stream routing "super" system and application delivery and hosting framework. Physical Sample Implementation This section of the disclosure describes rules and protocols present in the system of the present invention. Any system capable of supporting all of the features of the preferred embodiment will adhere to at least these rules and protocols. However, other rules and protocols can be defined that would result in a capable system while being incompatible with a system following the rules and protocols below. This section merely provides one example of a high-level design blueprint for creating a specific embodiment of the invention. Basic NASIB systems deal with any process connected over distributed networks. Any process could be acting as a client or a server, or for that matter, both. However, for the purpose of this discussion, usable forms of this system can easily be built using the following higher level semantic modules: (1) A NASIB Server which is essentially a data place differentiator, synchronizer and manager. A NASIB server process should be an inner algorithm and should be capable of hosting the core algorithms and should be able to embed the NASIB protocol. (2) A NASIB Protocol to link up processes and to provide both synchronous and asynchronous data and algorithm communication facilities. (3) A NASIB Client, which is any application that can communicate with one or multiple NASIB servers using the NASIB protocol providing human or machine usable services. To be a NASIB client a process should be an outer algorithm and must be able to embed a NASIB protocol stub. A NASIB Server has the properties listed in Table V, below. NASIB Server Data places are mapped onto complete hosts (Domain Server), processes (Named Data Places) within a host or specific data structures (if the language supports it) within a process and can have a hierarchical relationship with one another. Every domain server has a Root Entity. A human user is looked upon as an externally driven algorithm associated with a recognizable implicit data place. Access control mechanisms are totally orthogonal to the rest of the system. Entities on a server which are visible to a human user can be organized into easily navigable hierarchical trees with completely flexible nested associations. The user drives his or her physical client algorithm through hardware traps to interact with entities of this entity tree. Using the data definitions and specifying his or her interests data place or places the user can query for existence of data satisfying values and place conditions. The user can also set data request events based on data value equivalency or data place equivalency. Satisfactory data instances could be returned as discrete self-describing objects each representing a distinct state or the same states over the constraints of the interest request. Such instances can be carried through canonical messages. The server gets its functionality by virtue of two kinds of algorithms. Implicit algorithms, which are consecutive sequential instructions that get their context from being together when the server begins execution. Arbitrary algorithms loaded over the network on-demand and dynamically linked to a virtual address space. Traditional processes extend functionalities by spawning other processes and communicating with them. The client can then build its functionality by again executing algorithms of two kinds: Implicit algorithms, which are consecutive sequential instructions that get their context from being together when the client begins execution. Arbitrary algorithms loaded over the network on-demand. These data-to-algorithm associations could be part of the served data. TABLE V NASIB Protocol The NASIB Protocol is an application layer protocol which can be implemented on top of one or many lower level protocols or their combinations. The NASIB Protocol essentially facilitates the transfer of NASIBs between NASIB processes over distributed connected networks; either server-to-server or client-to-server. Such a protocol should deal only with the NASIBs entities and provide a multiplicity of call interfaces and convenience collections. The NASIB protocol has the following protocol stack primitives shown in Tables VI and VII:
TABLE VI
Code Name for
ENT Entity Symbolic Name
DOM Domain Name, any name space
segmentation
identifier
CON Connection Name
DSN Data Definition Symbolic Name
LSN Algorithm Symbolic Name
INS Instance Symbolic Name
DVS Data Value Symbolic Name
RNM Request Symbolic Name
DSP Data Place Symbolic Name
Protocol Primitive Operands Return NASIB Client NASIB
Server
Data Place Communicator Operations
Connect Domain Name Named Yes Yes
Connection(s)
Disconnect Connection Name Void
CreateDataSpace Data Place Name Void
Data Definition Operations
NewDataDefinition Definition Name Definition Name
GetDataDefinition Definition Name, Named Yes Yes
Association Name Definition(s)
SetDataDefinition Definition Name Definition Name
delDataDefinition Definition Name Void
NASIB Stream Client A NASIB human usable client incorporates a definite number of graphical user interface (GUI) abstractions and operational pathways. The client has a typical Messaging and E-mail kind of paradigm and operates on a user's implicit data place. When each frame type in the NASIB protocol is seen as a self-describing canonical message the servers take on the nature of store-and-forward messaging servers, and the protocol streams between them, or between them and clients, are seen as messaging streams. These messaging streams are made up of just one kind of frame for each NASIB entity type. Further adding a higher level abstraction of message boxes where transport messages could be accumulated for a human user gives the system its E-mail like semantics. A Human Client Process is a generic object container acting like an imitator client with no native intelligence about the knowledge space. Loosely speaking, this means taking on the characteristics of any of the underlying client/server systems from multiple knowledge domains that it indirectly represents. Whenever users interact with entities in a NASIBs-based system the order of interaction is always enumerated as follows: A. Locate Named Definition in Target Named Space Some of the entities on a server are considered visible to an end user, these are called user entities. A user cannot interact with all information at the same time, so he needs to locate `what he is looking for` using an organization system, which gives him a reusable indexed navigation structure. This navigation structure always starts from the root entity of the server. Users can traverse any GUI manifestation (example tree) of this entity set to get to the entity of interest. Further this navigation mechanism must meet the need of separating the transversal links from the actual objects so as to create two parallel systems of links: Links to transverse to a particular object Logical interclass relationships between objects Each parallel system can then mutate independent of the other. B. Activate Named Definition Activating a user entity refers to performing any of a set of operations that can be done on a user entity, causing it to be executed with one of three relevant associated host algorithms: Definition Viewer Instance Viewer Collection Viewer The execution could result in: Creation of one or more data structures in the memory of the host process; Creation of a GUI object and its rendering; or Execution of another algorithm. C. Manipulate Named Definition Once an instance of the entity is created, the user can manipulate the entity using the appropriate host algorithm. Such manipulations would include basic data interactions like getting and setting values or activating other GUI elements. This step could be considered optional. D. Submit Entity against Data Place(s) A manipulated user entity is then submitted, causing one of the following five actions: Post Search Request: This refers to searching all relevant data places for instances of the data definition satisfying a set of data state equivalency equivalency requests against them. Post Store Search Request: This refers to creating a search specification and then persisting it against a data place or a set of data places. The system ensures that definitions and instances resulting from these searches are always synchronized with the rest of the system. Post an Instance: This refers to creating a specific binding of the data definition to compatible data values and submitting it to initiate processing in a target data place. Post a Definition Edit: This refers to creating a new definition or updating an existing definition and making it the effective definition of the entity from that point onward in the target data place. Execution of Custom Algorithm: This refers to just assigning data and control to another host algorithm. E. Manipulate Named Instances Submission of Search Request or Store Search Request results in the return of a data instance set representing the match for the search request specification. Results of a search specification over target data places results in a set of instances grouped as collections. Instances are automatically passed on to the associated Instance Viewer and collections are automatically passed on to the relevant Collection Viewer. Advanced Steps Robots This refers to writing programs that can intercept message streams on behalf of users and do extra processing on them in their data places. These are like CGI extensions to Web Servers. Writing Dynamic Scripts This refers to writing programs representing NASIB system executable algorithms, which use variables of type entity. If the definition of the entity changes the program is transparently regenerated. Data Browser User Interface Next, FIGS. 8-11 are discussed to disclose a preferred embodiment of a "data browser" implementation of the present invention. The data browser is a generic application for viewing information objects according to the system and architecture of the invention as described above. A specific application of the data browser uses object data definitions and queries to implement a utility customized for use by semiconductor chip design teams. This customized application of the data browser embodied as a software product called "ChipCast" is to be manufactured and distributed by MayaSoft Corporation of Sunnyvale, Calif. Although the ChipCast adaptation of the data browser is specifically designed to handle information processing among a semiconductor design team, it should be apparent that many applications of the data browser are possible. In fact, the data browser and the Internet information architecture discussed above, are so flexible that literally any application can run within the framework of the data browser, as will be discussed below. FIG. 8 shows a first user interface display 600. The display shows three principal sections, namely, query window 602, information hierarchy window 604 and work area 606. Many of the controls shown in FIG. 8 are common among software applications familiar to users and, as such, their operation will be intuitive. For example, the user interface shown in FIG. 8 includes pull-down menus accessible at the top by clicking on the headings "File," "Edit," etc. Also present is a task bar for allowing quick access to specific functions as discussed below. Scroll bars, tab buttons, dialogue boxes, etc. all function as expected and as is commonly known in the art. In FIG. 8, information hierarchy window 604 has a familiar folder and file "look" to it. However, although the folder icons operate in the traditional sense to hold and categorize information objects in a "tree" hierarchy, objects such as "File Bugs" shown at 608 are data definitions that are used to create additional instances of objects based on the data definition, search for object instances based on the data definition, and perform other functions on objects of the class defined by the data definition. Other objects such as "AMD Home" at 610 are Web page links. Still other information objects such as documents, files, programs, Web page links, commands, etc. are represented within information hierarchy 604 and are supported by the preferred embodiment data browser. In the future information object types can be added such as a video stream or file link, audio stream or file link, image link, etc. From the view shown in FIG. 8, the user may use the mouse and pointer to "click" on any of the items shown in hierarchy window 604. For example, if the user clicks on a Web page, such as Web page 610, that Web page will, in turn, be accessed from the Internet and displayed in the user's work area 606. Alternatively, the Web page can be made to display on the entire display screen. Thus, the user can catalog or otherwise organize Web pages and sites in the hierarchy window 604 and can access them. This allows the user a degree of integration of the object information scheme of the present invention with existing Web sites, pages, and information. The user can also click on any of the data definitions such as data definition 608. FIG. 9 shows screen display 620 as it would appear after the user clicks on the File Bugs data definition 608 of FIG. 8. In FIG. 9, note that the File Bugs data definition at 608 has been highlighted, that the header bar at 622 now shows that the File Bugs data definition is being displayed, and work window 606 shows details of the File Bugs data definition attribute and value pairs. Specifically, the data definition is shown along with its Attribute/Value pairs in the record display at 626 along with a "Condition" column separating the attribute and attribute values. The Condition column is included in the display because the specific display is that of the "Find" function tab. Although difficult to discern from the reprinting in this document, sufficient highlighting and animation is provided in the operation of the user interface so that when one of the function tabs "Find" results, "Publish," or "Edit" is selected at 624, the selection is easily discernible by the user. The Find function allows the user to formulate relational queries based on attributes and attribute values. The user is able to specify relational conditions by using attributes and attribute values. Hence, the user is provided with a Condition column separating the attribute and value columns. In the preferred embodiment, the user can use the Condition button at the top of the Condition column to aid in the selection of a Condition. For example, where the attribute has a "text" or "alphanumeric" text type value field, pressing the Condition button will cause a drop-down menu to be displayed with options such as "Equals," "Not Equals," "Starts With," "Ends With," and "Contains." This is illustrated in FIG. 10. In FIG. 10, the pull-down menu resulting from pressing the Condition button is shown at 630. Note that the "<none>" option allows no condition to be associated with a specific attribute/value pair. Also, the user may enter conditions by simply clicking on the specific condition field between any desired attributes and value pair and entering that condition from the keyboard, or by other means. Also, the number and type of possible selections provided by the drop-down menus as, for example, under the Condition button as just described, can be changed according to the specific data definition. The Condition drop-down menu is provided merely as a convenience to a user. Returning to FIG. 9, note that icons to the left side of the attribute column are used to indicate the type of value field associated with the attribute, assuming that the value field is of a generic type. For example, the "A" icon indicates an alphanumeric field, commonly referred to as a character string or "text" field; while the "16" icon next to the "Priority" attribute indicates an integer value type is required. Similar to the provision of the pull-down menu under the Condition button, pull-down menus can be provided under the "Attribute" and "Value" buttons to assist the user in manipulating information in the data definition. For example, where values for an attribute such as "Build Version" are restricted to, e.g., 8.2, 8.3, 8.4; the value pull-down menu, assuming that the user has highlighted the "Build Version" row, will show only those values as possible selections. In the find function, the user is not able to modify the attribute names. However, in other functions such as the "Edit" function, the attribute names may be modified in a similar fashion to the condition and value columns. As shown in FIG. 9 by the data definition table at 626, there are three conditions existing on a query being composed by the user. The first row of the record shows that a required condition is that the "Unit" attribute "Equals" the value "Bus Unit." Since the "Unit" attribute is an alphanumeric field, this means that the character string "Bus Unit" must be the value of the "Unit" attribute if an object instance of this "File Bugs" data definition is to match the query. In a similar fashion, the "Bug ID" attribute must have a value less than 90. Also, "Build Version" must contain the value "8.3." Once the query has been composed, the user may decide to do one of three things with the query. First, the user can execute the query immediately by pressing the "Execute" button shown at 630 in FIG. 9. Or, the user may save the query by clicking the box "Save Query" toward the bottom of the work window. Finally, the user may subscribe to the query by clicking the appropriate "Subscribe to Query" box towards the bottom of the work window. Assuming the user chooses to immediately execute the query by pressing the "Execute" button at 630, the display of FIG. 11 is generated. FIG. 11 shows screen display 640 which includes the results of executing the query of FIG. 9. The data browser program, in response to the "Execute" command issued by the user, automatically invokes the "Results" function. The results window is shown at 642 in accordance with the results function tab being selected. In actuality, the results window at 642 extends further downward; however, it is overlaid by a record window showing the currently selected object instance at 644. In the examples so far, the currently selected object instance is the topmost row of results window 642. This is shown highlighted as inverse video, i.e., white on black. Records window 644 shows the complete details of the attributes/values pairs of the highlighted record. Naturally, the user may then browse the results of the query by using the mouse and pointer to select desired object instances, or records, and view these in more detail in records window 644. Note that all of the results match the query conditions. Namely, the results of executing the query return only object instances where the unit attribute is equal to "Bus Unit," the "Bug ID" attribute has a value less than 90, and the "Build Version" attribute contains the value 8.3. As discussed in the system description above, the scope of the search of the query includes all instances of the class defined by the data definition. That is, the field of search is initially determined by the originator of the object definition. Since the user operating the user interface of the subject figures herein obtains the object from the originator, or from someone else who ultimately obtained it from the originator, the user's query based on relational conditions of attributes/values pairs in the object instance encompasses all instances of the class of defined objects, "File Bugs." As discussed above, this is subject to limitations imposed on the scope of query as, for example, where security issues are concerned, derivatives of the object have been made by third parties and are thus subject to any limitations imposed by those third parties or imposed on those third parties. See the detailed discussion regarding security and scope of query above. Thus, the user's ability to make complex queries on a large amount of data instances should be apparent. In this example of bug reports in a semiconductor design group, the user can make queries dealing with the status of problems in the design, personnel assigned to solve the problem, related problems, repeated problems, the number of problems per unit time, etc. The number of relational query compositions that can be made is almost endless and certainly encompasses almost any conceivable query that an engineer or manager could be interested in. Note that the above execution of a query was instantaneous. FIG. 11 shows that the query results were updated on Feb. 11, 1998, at 7:48 a.m. In this case, this is a "snapshot" or "one-time" query execution. However, the present invention also provides for a user creating and maintaining a "persistent query." This is done by checking the "Subscribe to Query" box shown in FIG. 9. In FIG. 9, assuming the user has checked the "Subscribe to Query" box, the query does not execute immediately as in the previously described example. Instead, an entry appears in the query window 602. As part of defining the persistent query, the user would not only check the "Subscribe to Query" box, but would enter a name in the name field at the bottom of work window 606. After the name is entered, the user can hit the "Execute" button 630 to create the persistent query which appears in query window 602 with the appropriate name. Assuming the user has used the name "My Design Issues" as the persistent query, FIG. 9 shows the query named "My Design Issues" having 50 hits. The user can then click on "My Design Issues" 650 to obtain the results screen similar to those shown in FIG. 11. However, since the query is now persistent, any subsequent instances of "File Bugs" objects that satisfy the query conditions will be logged and reflected in the number to the right of "My Design Issues." For example, assuming that an additional entry is published (discussed in detail below) by another engineer/user of the system that meets the conditions of the composed query, the number to the right of "My Design Issues" 650 would increase from 50 to 51. The use of persistent queries in this way provides the user with an automatically updated information repository. This is more precise than any subscription mechanism available on the Internet today. This mechanism is also comprehensive and reliable in that the user knows the quality and boundaries of the scope of the query. That is, the user is querying objects within the user's design group. Another feature of the present graphical user interface is that the query is treated by the interface as any other information object, such as a file folder, data definition, etc. Thus, the user is able to organize the queries as though they are traditional file folders or files. This greatly simplifies the user interface by making the query organizable and manipulable in a form with which computer users are already familiar. A persistent query can also be thought of as an "In-box" similar to an email in-box. As long as the query persists, instances that meet the query requirements will be "deposited" into the "space" defined by the query on the user's local server or machine (i.e., wherever the user has defined his or her data place). The instances appear as information objects, similar to email messages, to continue the analogy, whenever the user clicks on the persistent query represented as a node in the hierarchy tree. The "Save Query" check box allows a user to save a query without subscribing or executing the query. FIGS. 12-14C are next discussed to describe the ability of the data browser of the present invention to provide different features by using algorithms obtained outside of the data browser application program, itself. A feature of the system of the invention is that algorithms are treated in a similar fashion as the data. That is, algorithms, code, programs or, generally, any form of executable instructions can be supplied to the data browser, or another program, as a "value" of an attribute. For example, FIG. 14C shows a "Category" attribute which can be associated with any arbitrary data definition and which can be set to one of various executable languages or scripts such as "Transport," "Java Client," "HTML Client," "DB," "Server Back-end," or Miscellaneous. Once present in an object instance as a value for a particular object, the executable instructions may be invoked and executed automatically or optionally on command of the user. In this manner, new functionality can be associated with discrete data or single or multiple classes of data. New functionality can provide necessary or desired features for a user on an "as-needed" basis for a single application or multiple applications for one or more users. The possibilities presented by providing executable instructions in the information object architecture of the present invention provides an efficient tool in allowing a "thin" client to acquire powerful features when the features are needed. As an example of the case where a new feature is provided with discrete data, FIG. 12 shows screen display 670 where the display for the "Results" function tab in the work window is much different from the "Results" display presented earlier in connection with FIG. 11. Rather than the table format of FIG. 11, FIG. 12 shows the data as a bar chart. The height of each bar is proportional to the number of times that an attribute assumes the indicated value as a ratio of the total number of hits in the collection of instances. Although not shown in FIG. 12, the bars are color coded, also. The ability to view specific instances in different formats can be provided as a set of executable instructions with the instance itself. Alternatively, the executable instructions can be initially obtained from an information object's instance and stored for later use by an application program. In this way, the application program can be configured with selectable executable options that are always up-to-date. In this manner, any type of information display can be achieved--or any type of functionality, for that matter. Different executable instructions can be provided for any of the function tab operations of "Find," "Results," "Publish" and "Edit." An example of the "Find" function being modified according to executable instructions supplied with the "Miscellaneous Issues" information object is shown in FIG. 13. A comparison of FIG. 13 with previously discussed FIG. 10 shows that FIG. 13 allows the user to compose a query based on selection boxes rather than conditions within a tabulated record as shown in FIG. 10. In the preferred embodiment, the Data Browser is a Java Client. The Data Browser is running in a Mini-JAVA Operating System (JAVA OS) called "Java Virtual Machine" (JVM). JAVA-OS/JVM is embedded in the native operating system of the user's platform such as Unix, Windows, or NT. Or the JAVA-OS/JVM can be embedded in a special application like Netscape's Navigator Web browser. The Data Browser of the preferred embodiment is a "baseline" JAVA client that can be extended by the additional executable instructions that the Data Browser obtains; for example, by accessing an information object instance with associated executable instructions, by accessing executable instructions directly, or by other means as discussed herein. JAVA is chosen as the environment for the preferred embodiment because of JAVA's ability to link additional executable instructions at run-time. However, the present invention can be adapted for other operating environments. FIG. 14A shows a "Custom Viewer Settings" dialog box for the data browser. This dialog box shows the executable instructions that are used to view the entity, or data definition, "Miscellaneous Issues." The default features for implementing the various functions "Collection Viewer," "Object Viewer," "Publisher" and "Editor" have been overlayed by, respectively,"com.Mayasoft.client.DesignIssueColViewer," "com.Mayasoft.client.DesignIssueObjViewer," "com.Mayasoft.client.DesignIssuePublisher" and "com.Mayasoft.client.DesignIssueEditor" so that new functions are used for these features over the data browser's built-in functions. Note that the executable instruction modules are referenced by the HTTP URL+ pathname convention presented above and so are unique within the worldwide Internet system. Although the data browser application discussed here is shown in an Intranet application, the example is easily generalized to a group of engineers in different parts of the world communicating over the Internet. FIG. 14B shows the"Access Control For Entity" dialog box used to limit different users'abilities to access information objects. This is primarily provided for security control. By using the dialog box of FIG. 14B, an administrator (using a password or other form of ID) can assign rights to search, publish or edit specified classes of information objects. Although the user interface has been presented as an example of a specific application program, namely, a data browser in a chip design group, it should be apparent that a limitless number of applications can be designed around the information object system architecture presented herein. In fact, a great number of useful applications need not use any other application other than the data browser. For example, a generalized email system can be implemented that has more powerful features than most email systems available today using the same data browser discussed so far. This is accomplished by establishing an object definition of"Email Message" that is subscribed to by various members of a group. The"Email Message" includes attributes such as "Subject," "From," "To," "Date" and"Body." "In Boxes" are easily established for each user by creating a persitent query for each user where the condition of the"To" attribute must include the user's name. Whenever a new email message instance is created with a given user's name in the"To" field, the instance will increment the user's query. By providing a "Results" executable overlay the user's email can be arranged in chronological order. Such features as filtering mail, deleting mail, prioritizing mail, etc. are easily handled simply by imposing conditional relationships in the persistent query. The effect of using the attribute/value information object structure in a system having host processing as discussed above (in the system description section) and allowing user-defined relational queries and data-provider-created (or user-created, for that matter) executable instruction overlays is that a powerful data browser application that is compact and efficient can be designed to handle many different applications.
|
Same subclass Same class Consider this |
||||||||||
