System structure
From now on, we include excerpts of the US patent application (No. US13/908,988), so the language register and the figure references follow those of the patent conventions. For example, we refer to Focus-n as “the invention”, and parts of the schemes are referred by their corresponding numbers as labeled in the illustrations.
The invention is preferably practiced in the context of an operating system resident on a personal computer, which incorporates a Java Virtual Machine (Standard Edition) that executes Java byte-code. However, other object-oriented languages that render capabilities similar to Java may also be utilized. Moreover, the context must also incorporate an object-oriented database manager for storing and retrieving the content of the data objects, although there exists means for translating object-oriented queries to other types of database managers, such relational databases. In any case, it should be understood that the invention may be embodied in many different forms and should not be construed as limited to the embodiments set forth herein.
FIG. 1 shows a symbolic block diagram of a generic framework 100 for the inventive system and methods. It consists of hardware blocks (gray-shaded) and software blocks (in white). The hardware of personal computers, server computers, or other computing devices such as smartphones and tablets, is basically composed of one or more Central Processor Units (CPUs) 110 for executing the software code, a Random Access Memory (RAM), so-called Volatile Memory, and its controller 120 for temporary holding the software code and data, other controllers 125 for Persistent (non-volatile) Memory devices 135, such as Read Only Memory (ROM), Flash Memory, Hard Drives, External Discs (CD-ROM, etc.) or other sorts of Removable Memory (pen drives, memory cards, etc.), for storing the software code and data when the computer is turned off, and a collection of Input/Output Controllers 130 for managing the input/output devices 140, such as Mouse, Keyboard, Screen, Network connection, etc., that make possible for the computing device to interact with the outer world, as well as other circuitry (not described in the diagram) that binds everything properly.
The inventive system 180 is called Focus-n. It needs a software framework composed of the Embedded code 145, that does the most basic handling of the machinery, the Operating System 150, that provides generic means for executing programs, a Database Manager 160, which will handle the content of the data objects, and a Runtime Environment for executing the Java byte-code of Focus-n, so called Java Virtual Machine (JVM) 170. Obviously, in the case that Focus-n was written in another programming language, other runtime environment would be necessary.
FIG. 2 refines the internal structure of Focus-n 180. The Kernel bloc 200 includes the code and data for the most basic working of the inventive system. For the rest of the diagram, the software subsystems are referred as “managers” (in squared blocks) because they are responsible of handling specific data entities (in rounded blocks).
The Base of Objects Manager 210 corresponds to Focus-n code that communicates with the Database Manager. The Base of Objects 215 is a symbolic representation of the object database of the Focus-n system, although the database is actually stored in a persistent media, such as a hard drive.
The Type Manager 220 provides means for controlling (identifying, importing, deleting, etc.) the available types of objects. One must observe that each type is represented as an object of the system (Type 1, … Type nt), which is a strategy to allow updating the collection of types without the need for rebuilding (recompiling) the inventive system. However, these strategy requires that the programming language can create objects at run-time (dynamically) from a “code block” that represents the structure and behavior of the user object (e.g., an object-oriented instance of a class or prototype), as the Java language does.
The Object Manager 230 is responsible for tracking generic data objects in use on volatile memory, which is necessary because it is not efficient to process the data of the objects directly on the persistent memory of the database.
The Project & Sets Manager 235 handles the content of all user projects and their included sets and subsets, which are held on volatile memory for efficiency reasons. Of course, any change in any generic object, type object, project, set or subset will be reflected on the corresponding instances of the database by the corresponding manager.
The Toolkit Manager 240 tracks the toolkits installed in the system. Analogously, the Viewer Manager 250 and the Framer Manager 260 enable the user to install or deinstall different viewers or framers for different types of objects. Indeed, toolkits, viewers and framers are objects of the inventive system, which makes it relatively easy for the user to adjust the capabilities of Focus-n to his or her necessities, although it requires that the programming language can load dynamically and execute the “code blocks” corresponding to that software components, as the Java language does.
Moreover, the framers handle the visualization of objects and sub-objects, by means of frames, so there is a Frame Manager 265 that controls all frames of the current objects in focus. Again, each frame is an object of the system, and should be loaded from the database into volatile memory for efficient handling, and later stored again in the database to record any changes on the state of frames.
Finally, there is a Menu Interface Manager 270 that is responsible for the objects representing menu interfaces, menus and menu items, which describe and allow to reconfigure the available user interfaces for each type of object.
All these software components mentioned thereof will be described more thoroughly in the following pages.