1. Field of the Invention
The present invention is in the field of task and workflow management, and relates more particularly to web-based system for managing tasks with a web browser using task sheets.
2. Discussion of the State of the Art
A problem exists in the art of workflow management regarding management of projected-related tasks, wherein multiple users need to access a project plan, provide updates to given tasks, and correlate all information in a common format with easy accessibility.
Project management systems are well-known in the art. Microsoft Project™ is notably one among many that allow a user to create a project plan, associate tasks and sub-tasks with that project plan and assign resources to perform a given task. Microsoft Project™ and similar products are known in the art as “installed application solutions”, wherein the application is installed on a client device, or perhaps more typically on a number of different client devices).
Existing systems in the art are typically limited in ease of accessibility and ease of use. For example, when using installed application solutions a first user (the “originator”) creates a project file. To receive input on this file from other persons, the originator must e-mail or otherwise provide this electronic file to the recipients so that the recipients can load the file in their local application. This method assumes that each recipient has the installed application on their machine to properly load, edit and save the file. Additionally, this model is limited in that when more than one person edits the same project separately, concurrency problems are created. Reconciling multiple updates creates a time consuming version management issue that must be resolved each time changes are made by multiple users.
Moving a task management application from the desktop as an installed application to a centralized location as a Web application provides many advantages relating to concurrency between multiple users. However, many Web applications lack a rich user interface of installed applications, making them impractical applications for demanding users. In particular, the multiple form-based model of many web applications is too time consuming for applications that involve extensive data operations, requires the user to navigate through one or more interfaces, and makes an application particularly sensitive to network connectivity problems.
Further to the above, existing systems do not provide for a sufficiently flexible system of associating or grouping tasks. For example, although tasks may be grouped (e.g., assigning a task to a task group), it may not be possible to assign a single task to multiple groups.
Also in addition to the above, existing systems often require users to format data per application limitations. For example, a user may add or delete fields to present data, but often cannot reassign the underlying representation on that data within one or more given fields.
These and other drawbacks exist with current systems and methods for managing tasks. Accordingly, there exists a need for a system and method for managing tasks that is efficient, flexible, and robust that can address the aforementioned issues of task and project management systems.
The present inventors have recognized a need for an efficient and reliable method for a plurality of persons to interact with a task-management activity, and as a result have provided a web-based task management system and method.
In an embodiment of the invention a computer system for coordinating information between a client and a server using a client side in-memory database is provided, comprising a server having a server processing unit, a server memory device, a server data storage device, a server program stored in the server data storage device for providing instructions to the server processing unit, a server database in the server data storage device for managing relational data. The server processing unit is responsive to the instructions of the server program for transmitting database structure instructions to the client, transmitting initial data to the client, and receiving data updates from the client. The client comprises a client processing unit, a client memory device, a client data storage device, a web browser program stored in the client data storage device for providing instructions to the client processing unit. The client processing is unit responsive to the instructions of the web browser program for creating the client side in-memory database operating within the context of the web process based on the transmitted database structure instructions, the client side in-memory database configured to manage relational data, populating the client side in-memory database based on the transmitted initial data, generating a user interface configured to receive user input, updating data in the client side in-memory database based on input received by the user interface, and transmitting updated data to the server database.
In another aspect of the invention a computer-implemented method for coordinating information between a client and a server using a client side in-memory database is provided, comprising steps of transmitting database structure instructions from the server to the client, transmitting initial data from the server to the client, creating a client side in-memory database operating within the context of the web process based on the transmitted database structure instructions, the in-memory database configured to manage relational data, populating the client side in-memory database based on the transmitted initial data, generating, by the web browser, a user interface configured to receive user input, updating data in the client side in-memory database based on input received by the user interface, transmitting updated data from the client side in-memory database to the server database, and selectively updating the data in the server database based on received updated data.
For purposes of clarity and brevity, like elements and components will bear the same designations and numbering throughout the Figures.
Embodiments of this invention provide a column and row web-based interface to describe tasks, sub-tasks and associated values for these tasks. For the purpose of this description, this interface is referred to as a “task sheet”. A task sheet in embodiments of the invention functions as a primary user interface within a task management system. Exemplary embodiments enable a user to edit and share data securely and efficiently within one or more of task sheets. A user also has the ability to request and authorize collaboration with other users.
For purposes of this description, the term “task management system” refers to an application that provides an environment wherein a plurality of users can access, edit and otherwise manipulate data related to tasks within a project. Exemplary embodiments provided in this description refer to a web-based application wherein client side software is loaded within the context of a web browser when a particular web page is accessed. The client side, web-based software interacts with server side software and a database stored on a web server. The broad aspects and features of the invention, however, are not limited to a web-based application.
A user of this system accesses the web site stored on the web server 14 via a standard web browser 16. When the client accesses the task management system a local database 17 (explained in greater detail with respect to
Once the user is authenticated and authorized to view a selected task sheet the web server transmits at step 24 database schema 25 and user information 26 corresponding to the selected task sheet to be loaded by the web browser. In a preferred embodiment Dynamic HyperText Markup Language (DHTML) is used, which is a combination of HTML and JavaScript. This is the implementation methodology used to display the task sheets and control the overall project management web site in exemplary embodiments.
The user performs operations on a task sheet at step 28. When these operations result in changes of data values within the task sheet, the changes are stored in the client-side, in-memory database, as described in greater detail with respect to
If, for example, a user performs an action which causes a fundamental change in task sheet layout (
For purposes of illustration only two users are shown in
The user that creates an initial task sheet can select the permission levels for other users as it relates to a given task sheet. These permissions allow authorized users read/write, full access, or read-only ability on a given task sheet.
The system allows shared-row mode, by allowing the sharing of one or more rows within a task sheet. In this mode, only the authorized rows are shared to the authorized users. Full access, read/write and read-only permissions may be implemented in the shared-row mode, and other types of permissions may also be used based on the needs of the system.
In a preferred embodiment, graphical modification to a non-active task sheet based on changes made to an active task sheet preferably occurs without communication with the server. For example, if a user changes the date value of a task in task sheet A 44, the location of this task may be changed in task sheet B 46 without transmitting information to the server. In this example, and throughout this description, a task sheet is a user interface running within a web browser. In a preferred embodiment, the task sheet is generated using DHTML and does not rely on Active-X components or other installed components/modules.
The server then generates at step 65 an email to the recipient inserting both an HTML form at step 66 and a link to a web page at step 67. The server inserts both the HTML form and a web page URL. This provides users that cannot display HTML forms from within their email client the ability to use the URL to access the server and provide the requested update information. Once the email has been generated and populated with the information provided by the requestor, the email is sent at step 68 to the recipient.
The HTML form embedded in the e-mail provides a simple interface whereby the user can update progress, task due date and provide general comments about a task. Although the examples are described primarily with one update request and one recipient, one skilled in the art will recognize that an update request is not limited to one task, or to only one recipient.
Once update information is received by the server, the access key then expires. Future attempts (if any) by the recipient to enter information in the HTML email form or attempts to log in to the task sheet system will be denied at step 84, and the user will be notified at step 85 that they have already performed this task.
In a preferred embodiment the instructions may be referred to as a client-side in-memory application, or client application. The client application may be operable for presenting a task sheet to the initiating client at step 9.3, the task sheet having at least one task and a set of associated cells (e.g., the task sheet depicted in
When “Request Email Update” is selected by a user, the client application may receive the email update request command from the initiating client at step 9.4 (e.g., at the web browser interface), and present at step 9.5 a new user interface configured to enable selection of a subset of the associated cells.
In a preferred embodiment, the request email update user interface enables a user to enter comments that will accompany the generated email that will be sent to a designated recipient. Additionally, this interface may enable the user to select which cells or fields to include in the generated email. For example, a task may have six different columns (e.g., Name and Status, as shown in
Once a user has selected a subset of fields (and provided comments, if any), the information may be transmitted to the server at step 9.7 and received by the server at step 9.8. The server may then generate the email request based on the selected subset of the associated cells at step 9.9. Extending the example provided above, the generated email would, in this example, include the Name, Status, and Percentage Complete fields (e.g., the field name and the value of the cell on the task sheet), while the budget available and budget used fields would not be included. The generated email may then be transmitted to an intended recipient at step 9.10. Although the process of generating and transmitting the email may be conducted by the same machine as the web server(s), it is likely that in many embodiments a separate machine (or machines) will be used to handle the email functionality and such machines will work in a coordinated manner to perform the described functionality of the server.
There is a task-to-task sheet data store 1015 (e.g., a junction table) that associates records (or entries) in the task data store 1010 to the task sheet data store 1020 in a many-to-many manner. Each record in the task-to-task sheet data store 1015 includes data identifying a task unique identifier and a task sheet unique identifier. In this way, a single task may be associated with one or more task sheets and a single task sheet may have one or more associated tasks. Additionally, the task-to-task sheet data store 1015 may store data that identifies a parent/child relationship between tasks for a given task sheet. Accordingly, a parent/child relationship may exist between two tasks on a first task sheet, while no parent/child relationship exists between these two tasks on a second task sheet.
In one embodiment permissions may be applied at the task level, at the task sheet level, a combination thereof, and using different authorization schemes. In a preferred embodiment, permissions associated to that task are applied to every sheet that task is shared on. For example if a task is designated as Read-Only, any sheet that task is shared to will only be able to access that task as Read-Only. Although
The method begins at step 11.1. The server receives information for creating a first task sheet at step 11.2, such as a task sheet name. In a preferred embodiment, and as described in greater detail below with respect to
The server receives information for creating a second task sheet at step 11.7. The server then creates the second task sheet and assigns a second unique identifier at step 11.8. The first task is then associated with the second task sheet at step 11.9. In a preferred embodiment, and as depicted in step 11.9, a single task may be associated with multiple task sheets.
The process of creating a second task is similar. The server receives information for creating a second task relating to the created task sheet at step 11.10. A second task is created based on the received information, and a unique identifier (different than the unique identifier assigned to the first task) is assigned to the second task at step 11.11. A relationship between the second task and the first task sheet is then created at step 11.12. In addition to the differences caused by different information received (e.g., different task names), the tasks will have different unique identifiers, and these unique identifiers will be used to establish relationships between tasks and task sheets in the task to task sheet data store.
In addition to relating tasks and task sheets, tasks may be related to each other in a parent/child (task/sub-task) relationship, which may be implemented as a self-referential relationship (as depicted in
In addition to the server side functionality described above, client-side functionality may be utilized that enables task sheets and tasks to be managed without communication with the server system. This functionality may be implemented by assigning client-side unique identifiers to items created on the client. These client-side unique identifiers may have a pattern that is different than server side unique identifiers (e.g., client side unique identifiers may always be negative, while server side unique identifiers may always be positive, for example). When synchronizations between the server and the client take place, the server may detect the presence of client-side unique identifiers, and perform insert commands to create the new records/relationships. The new server-side unique identifiers may then be transmitted to the client, such that eventually the client-side unique identifiers are eventually refreshed with the permanent server -side counterpart.
The above description relates to a Task Management method from the server perspective. In a preferred embodiment, the Task Management method may be implemented using a client side in-memory database, the technical aspects of which are described in greater detail below. When a task management system is used that involves a web server and a client side in-memory database, the following particular methodology may be implemented:
A column definition data store 1210 is configured to store schema information about a plurality of system-defined column types. System defined column types may be provided by a service provider, and have general applicability for a user base (e.g., % complete, approver, budget, comments, company, etc.). Additionally, if a user has requirement for a column type not provided, the user may add it using a web browser. For example, if a company refers to an “approver” as a “supervisor”, the user may change the column definition of an “approver” column so that it is labeled as “supervisor.” Additionally, a user may create a new column definition, assign this column definition a label (or name), and select a column type, such as free text (which will cause a text box to be rendered on a task sheet), pick list (in which the user can further specify available options for the pick list, and these options will be available in a drop-down list created when a task sheet is displayed), date (which will cause a date validation to be applied to a cell and enable a calendar look-up functionality on the task sheet when displayed), user lookup (which will cause a drop-down list with user information to be created when the task sheet is displayed), and number (including decimal places and ranges). Other settings and types may be used.
Which column definitions appear on a particular task sheet is determined a task sheet to column definition data store 1215, which serves as a junction table enabling a many-to-many relationship to exist between column definition data store 1210 and task sheet data store 1220. In addition to associating columns with a template, a preferred embodiment of the present invention enables users to associate rows with a template as well. A row may, for example, correspond to a task. Accordingly, when a user generates a new task sheet based on a template, the system may associate both columns and rows with the task sheet. For example, when a user creates a new task sheet based on a “New Hire Checklist” template, the task sheet may be created with a number of columns (e.g., Task Name, Status, Due Date, Comments, etc.), and a number of rows or tasks already present (e.g., Assemble Personnel File, Collect Direct Deposit Form, Collect 1-9, etc.). The tasks may have only a task name default value (e.g., status, due date, comments, and other fields are blank) or have additional values pre-populated (e.g., provide a due date of the present date plus one week as a default value for collecting direct deposit forms, provide a comment that describes a task in greater detail, etc.).
In a preferred embodiment the system provides a user interface to an online data store, wherein a user can view, search, compare, download and upload task sheet templates. The interface provides an ability for a user to view all templates within the data store or allows the user to navigate through one or more labeled categories for a given type for task sheet template. Within the template data store interface, a user can select and download to their local task sheet environment any of the task sheets that are provided in the online data store. The user interface also provides the user with an ability to preview the task sheet template, prior to downloading.
In a preferred embodiment the data store interface allows a user to upload templates for others to use. When uploading a template the user provides additional information about the task sheet template they are uploading, such as ‘Created by’, ‘General Purpose’, ‘Detailed Description’, and the like.
In addition to the individual template, description data may also accompany the task sheet template. For example some of the data that may accompany the template identifies the creator, date uploaded, last updated date, market or project sector task sheet relates to, reviews from other users of the task sheet, and ratings of the task sheet based on the ranking provided by other users based on their experience with a given template. The description data can be viewed within the data store interface, on one or more selected task sheet templates.
In a preferred embodiment, when a template category has more than one task sheet that directly relates to management of a given task type, for example project management, the system provides a compare utility, wherein the utility displays the principle differences between the task sheets such as number of fields, columns types, type or project relating to, etc. In addition the compare utility can also display data from other users as described above as it relates to the task sheets.
Although the task management system described above provides benefits to a user, including rich collaborative functionality without the need to install a local application, providing such functionality within a web browser presents a number of programming challenges. First, because much of the functionality occurs on the client without communication with the server, it is necessary to manipulate data on the client in a manner similar to the way data is managed on the server. Accordingly, it is advantageous to have a client-side “abstracted data store” capable of managing data in a manner similar to the way data is managed on the server. Second, this client-side database should provide seamless integration into the server-side database. One way of facilitating seamless integration is to ensure that the client-side and server-side databases are laid out exactly the same (e.g., have the same schema). Third, the client side in-memory database may be bound to a user interface, such that when the data changes the user interface is updated accordingly. Fourth, the client side in-memory database enables querying in a manner similar to conventional server side queries, but these queries are conducted by a web browser without communication with a web server (e.g., the web page may query the client side in-memory database to ask “what tasks are associated with this task sheet). The client side in-memory database may also provide data modification awareness, such that only the latest changes are saved back to the server. This feature is important because it enables advanced functionality, including the highlighting of changed data elements described below.
Additional functionality enabled by the client side in-memory database include foreign key management (e.g., managing relationships between task sheets and tasks), and grid management. Furthermore, the client side in-memory database may manage permissions on the client side to prevent users from making data modifications for which they are not authorized.
Turning from the functionality of the client side in-memory database to an exemplary implementation,
Client 1320 includes a processor 1321, a memory device 1322, and a data storage device 1323. The data storage device includes a web browser program 1324 (e.g., FireFox, Internet Explorer, etc.). A database program is not depicted in the client data storage device 1323 because the present invention does not rely on a client-side, installed database program, but instead creates an in-memory client side database as described in greater detail below. It is understood that a client may have a database program installed without departing from the scope of the present invention.
The web browser program 1324 stored in the client data storage device provides predetermined instructions to the client processing unit (e.g., the manner in which HTML is rendered, the manner in which JavaScript functions are evaluated, the manner in which third party components are activated, etc.). In a preferred embodiment, the web browser receives instructions from the server 1310 via a network connection (e.g., the Internet 1330). These instructions may be in the form of a DHTML web page, which includes JavaScript functionality that, when rendered on a client web browser, causes the specified functionality to be implemented. These instructions create a client-side in-memory database operating within the context of the web process based on the transmitted database structure instructions, the client-side in-memory database configured to manage relational data. Additionally, these received instructions cause the populating of the client-side in-memory database based on transmitted initial data. In addition to receiving instructions for creating the in-memory database, the web browser program receives instructions for generating a user interface configured to receive user input, updating data in the client side in-memory database based on input received by the user interface, and transmitting updated data to the server database.
Once the database structure is created, it is then populated with data based on the transmitted initial data in step 14.5. A web browser then generates a user interface configured to receive user input at step 14.6, such as a task sheet as described above. When a user interacts with the user interface (e.g., changing the value of a cell, adding a column to the task sheet, etc.), data in the client side in-memory database is updated.
Data in the client side in-memory database and the server side database may be synchronized using a variety of methods. In one embodiment, data may be transmitted from the client to the server 14.8 periodically, upon a predetermined event or set of events (e.g., a user selects “Save” or selects a function that forces a server side save to be initiated), or based on other criteria. When the server receives the data, it may perform validation and authentication/authorization checks prior to updating the database and, if the checks are passed, commit the updates. In a preferred embodiment, the client side in-memory database may also receive updates from the server, such that if two users are working on the same task sheet, the users may be able to see modifications made by the other user.
Changed elements are identified by highlighting the visual cell within the task sheet. In a preferred embodiment this is accomplished by changing the background color of the element's cell within the task row from white to another unique identifying color, such as yellow, as per the highlighted areas of
In addition to the above, users are able to provide their own time granularity for which they want the system to provide change history as illustrated in
In a preferred embodiment reports can be generated based on the history data as illustrated in
Other embodiments of the invention will be apparent to those skilled in the art from consideration of the specification and practice of the invention disclosed herein. The specification and examples should be considered exemplary only. In particular, one skilled in the art will recognize this system is not limited to being implemented in a Java-based environment, and any suitable web development environment may be used involving different operating systems (Unix, Linux, Windows, etc.), web servers (Apache, IIS), programming languages/frameworks (Java, ASP.net/Visual Basic/C#, Ruby on Rails, etc.) and databases (MySQL, SQL Server, Oracle, etc.). The scope of the invention is only limited by the claims appended hereto.
The present invention is a divisional of copending application U.S. Ser. No. 12/058,605, filed Mar. 28, 2008, which claims priority to U.S. provisional patent application Ser. No. 60/909,417, filed Mar. 31, 2007, disclosures of which are incorporated in their entirety at least by reference.
Number | Date | Country | |
---|---|---|---|
60909417 | Mar 2007 | US |
Number | Date | Country | |
---|---|---|---|
Parent | 12058605 | Mar 2008 | US |
Child | 13485229 | US |