SYSTEM AND METHOD FOR DOCUMENT CONSTRUCTION
A document construction and management system is described. In one embodiment, documents are assembled by combining one or more modules. In one embodiment, the modules are combined according to one or more construction rules. The modules can be provided to a number of subscribers, each subscriber having one or more users. Access to each of the modules can be controlled on a subscriber basis and/or on a user basis based on different users or user classes. When new modules or new versions of an existing module are added to the database of available modules, access to the new module or version can be restricted until the new modules or versions have been reviewed and accepted. During the review period, the previous version of the module is made available to users for construction of documents. In one embodiment, one or more access rules are used to control which modules are available to which users. In one embodiment, search rules are provided to facilitate searching for a desired module.
Latest Advisys, Inc. Patents:
- System and method for document construction
- Plasmid mediated supplementation for treating chronically ill subjects
- Electrode assembly for constant-current electroporation and use
- Treating anemia in subjects by administration of plasmids encoding growth hormone releasing hormone
- Devices and methods for biomaterial production
This application is a continuation of U.S. patent application Ser. No. 11/243,494, filed Oct. 3, 2005, entitled “SYSTEM AND METHOD FOR DOCUMENT CONSTRUCTION,” which is hereby incorporated by reference in its entirety.
BACKGROUND1. Field of the Invention
The present invention relates to systems and methods for generating documents from modular elements and for managing the modular elements.
2. Description of the Related Art
Many types of documents or document-like entities are generated by modular construction techniques in a manner not unlike that used for assembling mechanical devices. The document constructed from modular components can be source code for a software program, a Computer Aided Design (CAD) drawing, a text document, etc. For example, in many software systems, especially event-driven graphical user interface systems such as Microsoft Windows, much of the source code is repetitive and boiler-plate in nature. Thus, many software development systems provide for generation of source code by assembling various pieces of code, much in the same way than form paragraphs are often used to assemble a financial report or other text document. In a CAD environment, drawings of various pieces of an assembly are combined into a single document to produce a complete drawing of the desired assembly. In each of these cases, there is a need for quality control and pre-screening of the modules used to assemble the final document. Changes to existing modules are usually checked and verified before a new version of the module is made available to the users. Many software version control systems keep track of changes to the software, and provide a check-in check-out procedure such that only one person at a time can modify an module. In addition, most software version control systems also keep and audit trail of change to all for “rolling back” to a previous version of the software when a problem is discovered in a newer version. However, existing systems do not provide sufficient control over which users are allowed to access which modules and the existing systems do not provide sufficient control over how modules are assembled into documents.
SUMMARYThese and other problems are solved by a document management system that provides a multi-level access and assembly control. In one embodiment, documents are assembled by combining one or more modules. The modules can be provided to a number of subscribers, each subscriber having one or more users. Access to each of the modules can be controlled on a subscriber basis and/or on a user basis based on different user classes (e.g., supervisory user, first-level user, second-level user, public user, etc.).
When new modules or new versions of an existing module are added to the database of available modules, access to the new module or version can be restricted until such time as a supervisory user or other designated user has reviewed the new module of the changes to an existing module. During the review period, the previous version of the module is made available to users for construction of documents. In one embodiment, one or more access rules are used to control which modules are available to which users. In one embodiment, a different set of access rules can be provided for each subscriber, thus, allowing each subscriber to control access for the subscriber's user base.
In one embodiment, one or more search rules are configured to facilitate searching of the module database for a desired module. In one embodiment, the search rules are configured on a subscriber basis such that each subscriber can define a different set of search rules. In one embodiment, a database of default search rules is provided.
In one embodiment, one or more construction rules determine how various modules are combined during production of a document. In one embodiment, a user specifies an ordered list of modules to be used to construct a desired document. The construction rules are used by a construction engine to modify the user-supplied list to produce a document list as an ordered list of modules that will actually be used to construct the document. In one embodiment, the construction engine adds additional modules to the user-supplied list. In one embodiment, the construction list changes the order of the modules in the user-supplied list.
In one embodiment, the modules include software source code. In one embodiment, the modules include scripts in a scripting language (e.g., Basic, Lisp, Javascript, Perl, etc.). In one embodiment, the modules include CAD drawing files. In one embodiment, the modules include executable programs that construct a document or portions of a document. In one embodiment, the modules include XML code. In one embodiment, the modules include word-processing files. In one embodiment, the modules include text documents. In one embodiment, the modules include markup language files (e.g., HTML, SGML, Adobe Acrobat, Postscript, Encapsulated Postscript, etc.)
Using the Internet 103 (or other suitable network connection), the subscriber system 104 communicates with a first-level user system 108, a second-level user system 109, and a public user system 110. One or more root databases are provided to the root system 101, and one or more subscriber databases 105 are provided to the subscriber system 106. A supervisory user system 107 is provided to the subscriber system 104 by a local or Internet connection.
In the system 100, a user, such as the one or more of the users 108-109 can construct documents using data from the root databases 102 and/or the subscriber databases 105. In one embodiment, the documents are constructed as a collection of modules (as shown in
In one embodiment, the databases 201-203 and 211-212 are part of the root databases 102, and the user information databases 221-222 are part of the subscriber database 105. However, one of ordinary skill in the art will recognize that the information in the databases 201-203, 211-212, and 221-224 can be distributed between the root databases 102 and 105 as needed to meet performance, stability and/or data integrity needs. One of ordinary skill in the art will further recognize that the databases 201-203, 211-212, and 221-224 can be combined in whole or in part, and are described as separate databases for purposes of explanation and not by way of limitation.
The modules 301-303 are obtained from the module database 201. Access to each of the modules can be controlled on a subscriber basis and/or on a user basis. User access can be restricted on a user-by-user basis (e.g., based on a user ID). User access can also be restricted based on different user classes (e.g., supervisory user, first-level user, second-level user, public user, etc.). User access can also be restricted based on different user authorization levels, licenses, job functions, etc. In one embodiment, one or more access rules are used to control which modules are available to which users. In one embodiment, a different set of access rules can be provided for each subscriber, thus, allowing each subscriber to control access for the subscriber's user base.
In one embodiment, the modules include software source code. In one embodiment, the modules include scripts in a scripting language (e.g., Basic, Lisp, Javascript, Perl, etc.). In one embodiment, the modules include CAD drawing files. In one embodiment, the modules include executable programs that construct a document or portions of a document. In one embodiment, the modules include XML code. In one embodiment, the modules include word-processing files. In one embodiment, the modules include text documents. In one embodiment, the modules include markup language files (e.g., HTML, SGML, etc.).
One of ordinary skill in the art will recognize that the type of data in the modules is a function of the type of document being produced. Thus, for example, if the system 100 is configured to produce a computer program, then the modules will typically contain source code, or scripts (or programs) to generate source code. Thus, in such a system, instantiation of each module produces zero or more lines of source code to be added to the document 300. By contrast, if the documents 300 is to be a CAD drawing, then the modules will typically contain CAD files, or scripts (or programs) to generate CAD files, and the CAD files generated will be combined to produce the CAD file document 300.
In one embodiment, the document 300 is a report produced in a markup language (e.g., HTML, SGML, Adobe Acrobat, Postscript, Encapsulated Postscript, etc.) containing text and/or graphics. Examples of reports include, for example, a web page, a program design document, a financial report, etc. The modules to produce a report can include, for example, markup language files, graphics files, template files, scripts, executable code, etc. Modules containing markup language can include, for example, form paragraphs, boilerplate language, standard text, standard headings, etc. Graphics files such as pictures, graphs, charts, and the like can be provided in a desired format (e.g., bitmap, jpeg, tiff, etc.). Template files can include markup language files with fields to be filled with user-supplied data during module instantiation (e.g., Name, address, etc.). Scripts and/or executable files can be configured to dynamically generate markup language content for the document 300.
In one embodiment, one or more search rules are configured to facilitate searching of the module database 201 for a desired module. In one embodiment, the search rules are configured on a subscriber basis such that each subscriber can define a different set of search rules. In one embodiment, the default search rule database 203 is provided and the default rules are modified for each subscriber according to the subscriber level databases 211-212. In one embodiment, the default search rule database 203 is omitted and the search rules are provided for each subscriber in the subscriber level databases 211-212.
After the module database is updated, the process advances to a process block 403 wherein an access rule database 481 for each subscriber is updated to indicate that a new module or new version of a module is available. A timestamp for the new version is also provided. The process then advances to a process block 404. In the process block 404, notices are sent to each subscriber informing the subscriber that a module has been added or updated. Notices are sent based on subscriber information obtained from the access rules database 481. If the updated module is not used by a particular subscriber, then no notice is sent. Thus, for example, in
If, after a specified acceptance period, no response is received from a subscriber (as shown, for example, for subscriber #2 in
A subscriber can review and reject the new module or update (as shown, for example, for subscriber #3 in
Alternatively, subscribers can also review and accept the new module or update (as shown, for example, for subscriber #4 in
The process advances from the process block 409 (default rejection) or the process block 413 (edit user access or search rules) to a process block 414 where the access rules database 481 and the search rules database 482 are updated to reflect the inputs from the subscriber.
During the review process shown in
In one embodiment, the previous version of the module (version N) becomes unavailable to all users at the end of the acceptance period.
The list of allowed modules is provided to a process block 604 where the list of allowed modules is filtered according to one or more search rules (from the search rule database 482) using the optional search criteria provided by the user. The result of the process block 604 is the list of modules. The list of modules is formatted in a process block 605 and then presented to the user in a process block 607.
Once the document template is complete, the request list is provided to a construction rules engine (in a process block 703) where the request list is edited according to one or more construction rules to produce the actual list of modules to be used in the document (a document list). In one embodiment, the construction rules define interactions between various modules and/or requirements based on various modules. The following are typical examples of construction rules (where the identifier M### is used to identify various modules):
-
- Module M001 and module M002 cannot appear in the same document.
- Module M003 requires module M004.
- If Module M005 appears with module M006, then module M005 must precede module M006 in the document.
- Module M007 is required in all documents.
- Etc.
The output of the process block 703 is a document template that includes a document list and the document options. The document list is an ordered list of all the modules that will be used to construct the document. In one embodiment, the user can, optionally, save the document template for later recall.
The document template is then provided to a process block 705 where each module in the document list is instantiated. Some modules (e.g., modules that include scripts or executable code) can produce dialog boxes or other user input requests, and thus, the process of module instantiation typically involves some interaction with the user. The instantiated modules are then provided to a construction block 706 where the instantiated modules are assembled into a document. In one embodiment, the construction block also adds page numbering, borders, generates a table of contents, etc. In one embodiment, the assembled document is then provided to a process block 707 where the document is formatted for display on a screen or printer, etc. The formatted document is then delivered to the user.
As described above, the system described herein can be used to construct documents for many different purposes such as writing software, constructing CAD drawings, producing reports, etc. The samples shown in
A control group 902 includes user input controls to specify user access controls for the currently-selected module (e.g., “Requires Securities License”, “Requires Life and Health License”, “Requires Property and Casualty License”, etc.).
The screen 1200 also includes a document list 1201 that shows the documents in the document list (e.g., the list of modules after the construction rules have been applied to the current request list), and a preview area 1202 for previewing modules from the document list.
Although various embodiments have been described above, other embodiments will be within the skill of one of ordinary skill in the art. Thus, although described in terms of a deaf user, such description was for sake of convenience and not by way of limitation. The invention is limited only by the claims that follow.
Claims
1. A document management system which includes a processor and memory, the document management system comprising:
- a module database configured to store a first module and a second module;
- a construction engine configured to use at least both of said first and second modules to construct a document according to one or more construction rules so that the document includes content based on the first module and content based on the second module; and
- a module review engine configured to allow multiple subscribers to review and approve or reject a new version of said first module, said construction engine configured to use a prior version of said first module for documents assembled by a subscriber until said new version of the first module has been approved by the subscriber, wherein the approval or rejection of the new version of the first module by the subscriber does not affect the ability of different subscribers to approve or reject the new version of the first module.
2. The document management system of claim 1, wherein the module review engine is further configured to allow multiple subscribers to review and approve or reject a new version of said second module, said construction engine configured to use a prior version of said second module for documents assembled by a subscriber until said new version of the second module has been approved by the subscriber, wherein the approval or rejection of the new version of the second module by the subscriber does not affect the ability of different subscribers to approve or reject the new version of the second module.
3. The document management system of claim 1, further comprising an access control engine configured to control access to said first and second modules based on different user classes according to one or more access rules.
4. The document management system of claim 2, wherein said user classes comprise a supervisor user class.
5. The document management system of claim 2, wherein said user classes comprise a second-level user class.
6. The document management system of claim 2, wherein said user classes comprise a public user class.
7. The document management system of claim 1, further comprising one or more access rules to describe how said first and second modules are combined.
8. The document management system of claim 1, wherein said search rules are configured on a subscriber basis such that each subscriber can define a different set of search rules.
9. The document management system of claim 1, further comprising a search engine configured to allow a user to search for modules in said database according to one or more search rules.
10. The document management system of claim 9, wherein said search rules comprise one or more default search rules.
11. The document management system of claim 1, wherein said construction engine uses said construction rules to modify a user-supplied list of modules to produce a document list as an ordered list of modules to be used to construct said document.
12. The document management system of claim 1, wherein said construction engine adds additional modules to a user-supplied list according to one or more of said construction rules.
13. The document management system of claim 1, wherein said construction engine reorders modules in a user-supplied list according to one or more of said construction rules.
14. The document management system of claim 1, wherein said first module comprises content selected from a group comprising: source code, script code, CAD files, XML code, document text, markup language data, and a word-processing file.
15. The document management system of claim 1, wherein said first module comprises executable code that is executed to produce at least a portion of said document.
16. The document management system of claim 1, further configured to prohibit the subscriber's access to said prior version of the first module if the subscriber approves the new version of the first module.
Type: Application
Filed: Dec 3, 2010
Publication Date: Nov 24, 2011
Applicant: Advisys, Inc. (Newport Beach, CA)
Inventors: Ahyh (Lebanon, TN), Ken K. Kerr (San Clemente, CA), George R. Smith (Encinitas, CA), Richard L. Hanson, JR. (Diamond Bar, CA), Gregg S. Janes (Carlsbad, CA), Dane A. Parker (Carlsbad, CA)
Application Number: 12/960,290
International Classification: G06F 17/21 (20060101);