This application is related to co-pending U.S. patent application Ser. No. 12/122,392, filed May 16, 2008, entitled “Managing Project Schedule Data Using Separate Current And Historical Task Schedule Data”; U.S. patent application Ser. No. 12/122,442, filed May 16, 2008, entitled “Managing Project Schedule Data Using Separate Current And Historical Task Schedule Data And Revision Numbers”; co-pending U.S. patent application Ser. No. 12/122,497 filed May 16, 2008, entitled “To-Do List Representation In The Database Of A Project Management System”; co-pending U.S. patent application Ser. No. 12/122,514 filed May 16, 2008, entitled “Managing To-Do Lists In Task Schedules In A Project Management System”; co-pending U.S. patent application Ser. No. 12/122,533 filed May 16, 2008, entitled “Managing To-Do Lists In A Schedule Editor In A Project Management System”; U.S. patent application Ser. No. 12/211,286, filed Sep. 16, 2008, entitled “Managing Project Schedule Data Using Project Task State Data”, the contents of all of which are hereby incorporated by reference for all purposes as if fully set forth herein.
A portion of the disclosure of this patent document contains material which is subject to copyright protection. The copyright owner has no objection to the facsimile reproduction by anyone of the patent document or the patent disclosure, as it appears in the Patent and Trademark Office patent file or records, but otherwise reserves all copyright rights whatsoever.
The present application relates generally to project management. The application relates more specifically to managing project schedule data using task state data and also includes various inspection functionality.
Computer-implemented project management tools have evolved into sophisticated systems that allow very large projects with many tasks to be managed effectively. Some tools allow designation of a so called “critical path” that identifies a task or set of tasks that must be completed before other tasks can be started. Knowing which tasks must be completed before other tasks can be started helps business organizations allocate resources on a project. When dates are changed in the project, the schedules are automatically updated based upon dependencies between tasks. For example, suppose that task A is on the critical path and tasks B and C cannot be started until task A is completed. If the projected end date of task A is changed, then the projected start dates of tasks B and C are automatically updated by the project management tool to reflect the change made to the projected end date of task A. One of the problems with conventional project management systems is that they tend to accumulate a large amount of historical data. For example, in some situations, changing a single date on a task can cause changes in a large number of dates for other tasks. This is particularly true in situations where, because of dependencies, changes in dates cause a large number of other dates to change because of cascade effects. Conventional project management systems store both current and historical date information. One consequence of this is that as the amount of historical data grows, queries against the schedule data become more complex and computationally expensive to process. Another issue with conventional project management systems is that the user interfaces are often focused on project tasks that have been scheduled and little attention is given to tasks that have not yet been scheduled.
A project management system manages project schedule data using project task state data. The project task state data indicates the current state of project tasks and is used to determine which project tasks are to be included in a member schedule editor, member schedule reports and inspection reports. The project management system also provides support for various inspection functionality. This includes, for example, identifying and naming inspection material for use in inspection meeting forms and inspection meeting documents. The inspection functionality also includes generating an inspection index and an inspection statistics report.
According to one aspect of the invention, an approach is provided for managing project schedule data. According to the approach, schedule data is generated and stored in a project schedule database for a plurality of project tasks in a project. State data is generated and stored in association with the schedule data in the project schedule database. The state data is separate from the schedule data and indicates a current state of each of the plurality of project tasks. A current state of a project task may include one of the project task is completed, the project task has been started but is not completed, the project task is planned but not started, only a start date is specified for the project task and the project task is unscheduled. The state data may be used, for example, to retrieve particular schedule data from the database, i.e., schedule data for project tasks having a particular state. The state data may also be used to arrange schedule data in editors, forms and reports to improve the user experience.
According to another aspect of the invention, another approach is provided for managing project schedule data. According to this approach, schedule data is generated and stored in a project schedule database for a plurality of project tasks in a project. State data is generated and stored in association with the schedule data in the project schedule database. The state data is separate from the schedule data and indicates a current state of each of the plurality of project tasks. A current state of a project task may include one of the project task is completed, the project task has been started but is not completed, the project task is planned but not started, only a start date is specified for the project task and the project task is unscheduled. In response to a request to perform an inspection, inspection material is retrieved from the project schedule database. The inspection material includes schedule data for one or more project tasks that both, based upon the corresponding state data, have a state of started but not completed, planned but not started or have only a start date specified and do not have any child project tasks. According to another aspect of the invention, the inspection material further includes schedule data for a particular project task that, based upon the corresponding state data, has a state of started but not completed, planned but not started or has only a start date specified and has at least one child project task that is a review, test or inspection project task. Identification data may also be generated and included in the inspection material in association with the schedule data for the particular project task. The identification data identifies the particular project task and the child project task for the particular project task.
According to another aspect of the invention, an approach is provided for managing inspections in a project management system. According to this approach, schedule data is generated and stored in a project schedule database for a plurality of project tasks in a project. State data is generated and stored in association with the schedule data in the project schedule database. The state data is separate from the schedule data and indicates a current state of each of the plurality of project tasks. A current state of a project task may include one of the project task is completed, the project task has been started but is not completed, the project task is planned but not started, only a start date is specified for the project task and the project task is unscheduled. In response to a request to perform an inspection, one or more project tasks are identified that qualify for inspection based upon the state data associated with the one or more project tasks indicating that each of the one or more projects tasks has been scheduled but not yet completed. A plurality of inspection materials associated with the one or more project tasks are identified and an inspection meeting form is generated. The inspection meeting form identifies the plurality of inspection materials and allows a user to enter information about defects in the plurality of inspection materials. The approach may also include generating inspection meeting documents, an inspection index and an inspection statistics Web page.
In the drawings:
A project management system manages project schedule data using project task state data. The project task state data indicates the current state of project tasks and is used to determine which project tasks are to be included in a member schedule editor and member schedule reports. The project management system also provides support for various inspection functionality. This includes, for example, identifying and naming inspection material for use in inspection meeting forms and inspection meeting documents. The inspection functionality also includes generating an inspection index and an inspection statistics report. Example embodiments of the invention are depicted in the figures and described herein in the context of a client-server based project management system. However, the approaches described herein are applicable to other types of systems and arrangements.
Task Assignment Editor
In response to completion of a task assignment session, such as in response to a user selecting the “Finish” button on the task assignment editor 102 of
According to one embodiment, the task assignment editor 102 (
Project Schedule Editor
In response to completion of a project schedule session, such as in response to a user selecting the “Finish” button on the project schedule editor 202 of
According to one embodiment, the project schedule editor 202 (
Member Schedule Editor
In response to completion of a member schedule session, such as in response to a user selecting the “Finish” button on the member schedule editor 302 of
In member schedule editor 302, buttons (Add Details, Add Rows At Bottom, Add Rows Above, Add Rows Below, Delete, Update, and Finish) are positioned near the table, which are used to perform various respective operations. The “Finish” button completes the member schedule editor session and submits the task schedule information to be stored and maintained in the database. Except for the “Update” button and the “Add Rows At Bottom” button, the other buttons perform an operation on a task that is selected by selecting the checkbox in the row corresponding to the task. The “Add Details” button adds rows beneath a task so the member can add subtasks (a task one level lower) to a task to give more details of the task. “Add Rows Above” and “Add Rows Below” buttons add rows above and below the row corresponding to the selected task so the member can add more tasks to the schedule at the same level. The number of rows added is set by the “number of rows” menu selection that is next to the “Add Rows Below” button. The “Delete” button deletes the selected task. The “Delete” button also removes a task, and all lower level tasks associated with the task, from the member's schedule. The “Add Rows At Bottom” button adds one or more highest level rows to the bottom of the schedule where the number of rows added is set in the “number of rows” menu selection. The “Update” button updates all the upper level task schedules with the lower level task schedules and updates the display of the member schedule editor 302 to depict the new dates.
The schedule information for a task includes the plan start and end dates and the actual start and end dates. The plan and actual dates can be set and modified for tasks in the member schedule editor 302. However, only the plan dates can be set for the project tasks in the project schedule editor 202 (
Project Schedule Management System
Generally, Web servers 507 and 530 comprise the resources for the display and management of the editors and meeting forms. The Web servers 507, 530 interact with databases 506, 536, respectively, to store, maintain, and manage task assignment, task schedule information, inspection meeting information, e.g., data 508, 538. The depiction of two Web servers and two databases is for purposes of example. Thus, the number of Web servers and databases used in a project management system as described herein may vary from implementation to implementation. Web browsers on computer workstations 501, 502 access the resources on the Web servers 507, 530 to display the editors. Project members or managers can access the editors over the network 500 (LAN or WAN). The project management system can be used to manage projects at different levels within an organization, e.g., at project, department, division, and organization levels.
Workstations 501, 502 are typically computer systems configured as illustrated by the computer system 1800 of
Web servers 507, 530 depict a typical Web server, which is a combination of computer hardware and software that, using the appropriate protocols (e.g., Hypertext Transfer Protocol [HTTP] and Transmission Control Protocol/Internet Protocol [TCP/IP]), serves the files that form Web pages (e.g., Hypertext Markup Language [HTML] or Extensible Markup Language [XML] files), to users, such as developers or managers at a workstation 501, 502. For a non-limiting example, an Apache Web server, which contains modules for the execution of PHP scripts, may be used as the Web server application for the Web server 507 and 530. In general, the majority of information exchanged and managed during the development project life cycle is served by the Web servers 507, 530 over the network 500. Furthermore, aspects of the techniques described herein may be implemented and executed on the Web servers 507, 530, although practice of the invention is not limited to such an implementation. The techniques could also be implemented on any other processing system, such as workstations 501, 502 or a similarly configured computer system as illustrated in
Databases 506, 536 depict typical databases for storing data 508, 538 related to the development project, thus providing access to the information by authorized individuals at workstations 501, 502, through queries transmitted over the network 500. The type of data stored on databases 506, 536 is effectively limitless, wherein non-limiting examples include project initiation forms, member and project task schedules, specifications, software code, inspection reports, Web page files, and document directories and indexes.
Network 500 depicts a conventional network, e.g., a packet-switched network, for facilitating the exchange of information between and among various connected components, such as workstations 501, 502, Web servers 507, 530, and databases 506, 536. The network 500 may be a Local Area Network (LAN), such as a conventional Ethernet, Fast Ethernet, a token ring, or a wireless LAN such as specified in 802.11a and 802.11b (developed by a working group of the Institute of Electrical and Electronics Engineers [IEEE]), which may be implemented within an enterprise. In addition, network 500 may also be a Wide Area Network (WAN), such as the Internet, for facilitating communication with remote users through a Virtual Private Network (VPN), or the network 500 may represent a combination of a LAN and a WAN. In addition, network 500 can be formed using a variety of different mediums, including but not limited electrical wire or cable, optical, or wireless connections.
The server processor 604 provides information to the client processor 602 to display the login Web pages (
Client-Server Interfaces
HTTP/HTTPS GET TaskLogin.htm requests cause the server processor 604 to return to the client processor 602 a Web page that allows a project member or manager to log on to one of the editors (project schedule, member schedule, task assignment). The member or manager enters information about the project, member name, and editor session type.
HTTP/HTTPS GET ProjScheduleEditor.htm requests cause the server processor 604 to return to the client processor 602 a Web page for the project schedule editor, which is used to create or update the project schedule for the current project. A project manager must have access privileges to create the project schedule before the server processor 604 returns the project schedule editor. This privilege is verified when the manager submits the information in the login Web page (
HTTP/HTTPS GET TaskAssignEditor.htm requests cause the server processor 604 to return to the client processor 602 a Web page for the task assignment editor, which is used to assign tasks to the project members for the current project. A project manager requires access privileges to assign tasks to the project members before the server processor 604 returns the task assignment editor Web page. This privilege is verified when the manager submits the information in the login Web page (
HTTP/HTTPS GET MembScheduleEditor.htm requests cause the server processor 604 to return to the client processor 602 a Web page for the member schedule editor, which is used to create or update a project member's schedule for the current project. According to one embodiment, the schedule editor displays only uncompleted tasks if the project member's schedule has been previously created. A project member must have privileges to create or edit the schedule before the server processor 604 returns this Web page. This privilege is verified when the member submits the information in the login Web page (
HTTP/HTTPS GET MeetingLogin.htm requests cause the server processor 604 to return to the client processor 602 a Web page for logging into a meeting, for example, an inspection meeting, a discussion meeting or a general meeting. The user enters information about the project, member name, and meeting type.
HTTP/HTTPS GET InspectionMeeting.htm requests cause the server processor 604 to return to the client processor 602 a Web page for entering information pertaining to an inspection meeting.
HTTP/HTTPS GET ProjectSetup.htm requests cause the server processor 604 to return to the client processor 602 a Web page for entering information pertaining to a project. The Web page allows a user to enter the information to start a new project.
HTTP/HTTPS POST PostTaskLogin.htm interface allow the client processor 602 to access and display the various editors (project schedule, member schedule, task assignment). This interface is called when the “Submit” button is selected from the Web page corresponding to TaskLogin.htm. The information entered in TaskLogin.htm is passed to PostTaskLogin.htm in the server processor 604. The PostTaskLogin.htm uses the information to validate the member for the project, and to determine if the member has access privileges to the requested editor. If the information is invalid or the member does not have access privilege to the editor, then PostTaskLogin.htm returns a message to the client processor 602 that the project member cannot access the requested editor. Otherwise, PostTaskLogin.htm returns the Web page corresponding to one of the editors, i.e., the Web browser is redirected to the Web page corresponding to the requested editor.
HTTP/HTTPS POST PostTaskAssign.htm allows the client processor 602 to submit to the server processor 604 all the information entered in the task assignment editor (
HTTP/HTTPS POST PostProjSchedule.htm allows the client processor 602 to submit to the server processor 604 all the information entered in the project schedule editor (
HTTP/HTTPS POST PostMembSchedule.htm allows the client processor 602 to submit to the server processor 604 all the information entered in the project member's schedule editor (
HTTP/HTTPS POST PostMeetingLogin.htm allows the client processor 602 to submit to the server processor 604 all the information entered in the Meeting Login Webpage (
HTTP/HTTPS POST PostInspectionMeeting.htm allows the client processor 602 to submit to the server processor 604 all the information entered in the Inspection Meeting Form (
HTTP/HTTPS POST PostProjectSetup.htm allows the client processor 602 to submit to the server processor 604 all the information entered in the New Project Setup Form (
The Web pages for the various editors (TaskAssignEditor.htm, ProjScheduleEditor.htm, MembScheduleEditor.htm and InspectionMeeting.htm) include files that contain Javascript or PHP script, according to one non-limiting embodiment. The scripting languages used to perform the various functions described herein may vary from implementation to implementation. When a Web browser (e.g., client processor 602) requests the Web page of an editor or meeting form, the editor or meeting form Web page and all the files corresponding to Javascript are passed to the Web browser, whereby the Web browser processes the Javascript. However, the files for the PHP script are not passed to the Web browser. The PHP script are processed in the Web server, such as Web servers 507, 530 of
Sequence Diagrams for Editors
Database Schema
The TaskAssignment table 902 stores the project tasks and corresponding subtasks of a project along with the assignment of the subtasks to project members. The TaskAssignmentHistory table 919 stores the history of the assignment of the subtasks to project members. The TopLevelProjectTask table 904 stores the schedule of the project tasks that are in the TaskAssignment table 902. The TopLevelProjectTaskHistory table 920 stores the history of the schedule of the project tasks. The Level1MemberTask table 906 stores the schedule of the member tasks which are assigned in the TaskAssignment table 902 and links to the schedule of its corresponding project task in the TopLevelProjectTask table 904. These links between the tables enable the automatic aggregation of the member schedules with the project schedule. The Level1MemberTask table 906 also stores the schedule of the member tasks that are not related to any project task. The Level1MemberTaskHistory table 924 stores the history of the schedule of the member tasks. The LevelXMemberTask tables (where X is 1, 2, 3, and 4) and the MemberTasks table 908 store and manage links between the various levels of tasks of a member. The lower level tasks are more detailed tasks of the upper level tasks. The organization of these tables maintains the schedule of a member. The LevelXMemberTaskHistory table (926, 928, 930) store the history of the schedule of the lower level tasks. The ProjectTeam table 910 contains information about the project members. The project member information for a project member includes the IDs used for determining the identifier of the member tasks at various levels.
The task assignment editor uses and/or updates information in the tables DefaultTasks 912, TaskAssignment 902, TaskAssignmentHistory 919, TopLevelProjectTask 904, and MemberTasks 908. The project schedule editor uses and/or updates information in the tables DefaultTasks 912, TaskAssignment 902, TopLevelProjectTask 904, TopLevelProjectTaskHistory 920, MemberTasks 908, and Level1MemberTask 906. The member schedule editor uses and/or updates information in the tables ProjectTeam 910, TaskAssignment 902, TopLevelProjectTask 904, MemberTasks 908, LevelXMemberTask, and LevelXMemberTaskHistory. The inspection meeting form uses and/or updates information in the tables ProjectTeam 910, MemberTasks 908, LevelXMemberTask, and LevelXMemberTaskHistory.
Descriptions of the various tables depicted in
DefaultTasks table 912 contains the names of tasks that are typically tasks for all projects. In the context of software development projects, some examples of default tasks are Project Plans, Requirements, and Top Level Design.
ProjectTeam table 910 contains information about project members for a project. sMemberLabel is a 2 to 4 character string used to identify a project member when displaying the project schedule, which depicts the project tasks and associated member tasks as depicted in
nMemberTaskID is a number assigned to a project member that is used to determine the ID of a task for that member. According to one embodiment, the nMemberTaskIDs are used as the start ID for a task. Depending upon the size of the project team, the ID can be MOD 10 (1, 2, . . . , 9) for a small team or MOD 100 (1, 2, . . . , 99) or higher for a large team. The task IDs are increments of the MOD. For example, if the nMemberTaskID of project member ‘T1’ is 1, then the task IDs of T1's task will be 11, 21, 31, and so forth (or 101, 201, 301, and so forth for a large team). The task ID uniquely identifies a task for a project member even if the names of some of the tasks are the same. The task ID also uniquely identifies a task at all levels. nLevelXMaxTaskID is a number used to maintain the highest task IDs that have been used so far for the different level tasks of a project member. These numbers provide the starting IDs used to determine the task IDs of tasks that are added in the member's schedule editor session. These values are retrieved and updated after each editor session. Except for the values for nLevelXMaxTaskID, the values for the other entries must be set prior to the beginning of a project.
TaskAssignment table 902 contains information about the project tasks and its subtasks that are assigned to project members for a project. sTaskName is used for the names of the tasks and nProjectTaskID are the IDs associated with the tasks. The project start task ID is 0 so that the ID for its tasks will be increments of the MOD (10, 20, 30, . . . for small team). sLevel1TaskName is used for the names of the subtasks (member tasks) associated with the project tasks and nLevel1TaskID is used for the IDs associated with the subtasks. sMemberLabel is used to identify the project members that are assigned the subtasks. bIsObsoleted is used to indicate whether the task has been removed from the project. Even though a task is deleted from the schedule, information about the task is maintained in the database. Values for sTaskName, nProjectTaskID, sLevel1TaskName, and sMemberLabel can be added to the TaskAssignment table 902 through a task assignment editor session. The project schedule editor session can add values for sTaskName and nProjectTaskID. Only the member schedule editor session can add values for nLevel1TaskID. nRevNumber is the revision number of the current assignment of the task. If no members are assigned to the task, nRevNumber is 0.
TopLevelProjectTask table 904 contains information about the most current scheduling of project tasks. sTaskName is used for the names of the tasks and nProjectTaskID is used for the IDs associated with the tasks. planStart and planEnd are used for the expected dates for starting and completing the task. actualStart and actualEnd are used for the actual dates in which the task was started and completed. setDate is used for the date in which the task was added, planned dates were set, or planned dates were modified. If no planned dates are set for the task, then the revision number is 0. nScheduleRevNumber is used for the revision number of the task schedule. The most current revision number of a project task is maintained in the TopLevelProjectTask table 904. The revision is incremented only when the planned dates are changed in the project schedule editor on different days. All values for nProjectTaskID, sTaskName, dates, and nScheduleRevNumber are added or updated in the TopLevelProjectTask table 904 through a project schedule editor session or a task assignment editor session. nDateState indicates the current state of a task. A variety of values may be used to represent the state of a task, depending upon a particular implementation. One set of example values for nDateState are as follows:
4 indicates that the task was completed. All the dates have been set.
3 indicates that the task was started. All the dates except the actualEnd have been set.
2 indicates that the task was planned. Only the planStart and planEnd have been set.
1 indicates that the task was planned start-only. Only the planStart has been set.
0 indicates that the task was not scheduled. This task is a to-do list task. This task was added to the member schedule but not actually scheduled. The setDate is set to the date that the task was added to the schedule. When the member logs back into the member schedule editor or views his/her member schedule web page, the task is listed to remind the member to schedule the task.
The nDateState field simplifies and reduces the number of queries needed to obtain information in the desired order from the database. To obtain tasks listed in order of completed tasks with ascending actual end dates, started tasks with ascending actual start dates, planned tasks with ascending plan end dates, planned start-only tasks with ascending plan start dates, and unscheduled tasks with ascending set dates, five separate queries are needed to obtain the tasks in this order (one query for each type of task) in the previous system. For example, to obtain task information for started tasks from project “J20” is “SELECT*FROM Level1MemberTask WHERE sProjectNumber=‘J20’ AND actualEnd IS NULL AND actualStart IS NOT NULL ORDER BY actualStart”. Similar queries are needed for other groups of tasks. With the new field, one query will obtain the tasks in the listed order of completed, started, planned, planned start-only, and unscheduled. For example, the query to obtain task information in the desired order for project “J20” is “SELECT*FROM Level1MemberTasks WHERE sProjectNumber=‘J20’ ORDER BY nDateState DESC, actualEnd, actualStart, planEnd, planStart, setDate”. The purpose of nDateState is to provide a simple query to obtain the task in a desired order so that it may be displayed in a form or a web page in that order. At the same time, nDateState indicates the status of a task.
MemberTasks table 908 contains information about all the tasks (tasks at all levels) for all the project members. Associated with each member of a project are the task Ids, nLevelXTaskID, which identify all the tasks and their relationship with one another. As with the TaskAssignment table, bIsObsoleted indicates if the task has been removed from the project member's schedule. bIsCompleted indicates if the tasks is completed. nLevelXTaskID is used for the tasks which are added to the MemberTasks table 908 and are determined from the nLevelXMaxTaskID of the ProjectTeam table 910 when new tasks are added in the member's schedule editor session. Values in the table can be updated or modified (bIsObsoleted or bIsCompleted) from the results of any of the three editor sessions (member schedule, project schedule, task assignment). The MemberTasks table 908 is important to provide a link between the lower level task schedules with the upper level task schedules.
LevelXMemberTask table (e.g., Level1MemberTask table 906, Level2MemberTask table 914, Level3MemberTask table 916, Level4MemberTask table 918) contains information about the most current scheduling of member tasks. sLevelXTaskName is used for the name of the tasks and nLevelXTaskID is used for the IDs associated with the tasks. nLevelXTaskID for the tasks which are added to the table are determined from the nLevelXMaxTaskID of the ProjectTeam table 910 when new tasks are added in the member's schedule editor session. planStart and planEnd are used for the expected dates for starting and completing the task. actualStart and actualEnd are used for the actual dates in which the task was started and completed. setDate is used for the date in which the task was added, planned dates were set, or planned dates were modified. If no planned dates are set for the task, then the revision number is 0. nScheduleRevNumber is used for the revision number of the task schedule. The most current revision number of a member task is maintained in the LevelXMemberTask table. According to one embodiment, the revision is incremented only when the planned dates are changed in the member schedule editor on different days. Each LevelXMemberTask table contains a task ID for upper level tasks (except for level 1, where a task either has a project task as its parent or no parent task). This provides for a task a link to its parent task and its child tasks. All values for parent task ID, sLevelXTaskName, nLevelXTaskID, dates, and nScheduleRevNumber are added or updated in the table through the member schedule editor session. Only Level1MemberTask table 906 contains the sMemberLabel to provide a link to the TaskAssignment table 902.
TaskAssignmentHistory table 919 contains information about the history of the assignment to project members of tasks associated with project tasks. This table maintains information about the project members that were previously assigned the tasks before the tasks were reassigned to other project members. nProjectTaskID are the IDs associated with the tasks. sLevel1TaskName are the names of the subtasks (member tasks) associated with the project. sMemberLabel are the project members that are assigned the subtasks. nRevNumber is the revision numbers of the assignment of tasks to project members. The nRevNumber depicts the reassignment of the tasks in the project. The task assignment editor 102 (
The TopLevelProjectTaskHistory table 922 contains information about the history of the schedule of project tasks. This table maintains all prior planned schedules of the project tasks. nProjectTaskID is used for the IDs associated with the tasks. planStart and planEnd are used for the expected dates for starting and completing the task. actualStart and actualEnd are used for the actual dates in which the task was started and completed. setDate is used for the date in which the task was added, planned dates were set, or planned dates were modified. If no planned dates are set for the task, then the revision number is 0. nScheduleRevNumber is used for the revision number of the task schedule. The more recent scheduling for a project task corresponds to the higher revision numbers. All previous scheduling of a project task are maintained in the TopLevelProjectTaskHistory table 922 to track the changes in the project task's schedule. The TopLevelProjectTask table 904 contains the current schedule of all the tasks in the TopLevelProjectTaskHistory table 904.
LevelXMemberTaskHistory tables (e.g., Level1MemberTaskHistory table 924, Level2MemberTaskHistory table 926, Level3MemberTaskHistory table 928, Level4MemberTaskHistory table 930) contain information about the history of the schedule of member tasks. These tables maintain all prior planned schedules of the member tasks. nLevelXTaskID is used for the IDs associated with the tasks. planStart and planEnd are used for the expected dates for starting and completing the task. actualStart and actualEnd are used for the actual dates in which the task was started and completed. setDate is used for the date in which the task was added, planned dates were set, or planned dates were modified. If no planned dates are set for the task, then the revision number is 0. nScheduleRevNumber is used for the revision number of the task schedule. The more recent scheduling for a member task corresponds to the higher revision numbers. All previous scheduling of a member task are maintained in the LevelXMemberTaskHistory tables to track the changes in the member task's schedule. The LevelXMemberTask tables contain the current schedule of all the tasks in the LevelXMemberTaskHistory tables.
Various values may be used for the nProjectStatus field to indicate the status of a project. Example values are as follows:
0 indicates the project has not started
1 indicates that the project has started
10 indicates that the project is completed.
New numbers can be added to indicate other possible status of the project such as abandoned or reassigned.
Various values may also be used for the nMemberRole field to indicate the role of a member. Example values are as follows:
1 for manager
2 for member
3 for manager-member.
These roles are example roles provided for explanation purposes and the invention is not limited to these particular roles. Additional roles may be added, for example, project leader, developer, or tester.
In
sInspectionDocContId is also used for the filename of the HTML document for the meeting. inspectDate is the date of the inspection and startTime and endTime is the time in which the inspection starts and ends. sOriginator is the member label of the member who is the author of the inspection material. sModerator is the member label of the member who presides over the inspection meeting and enters information in the inspection form. nAvePrepTime is the average time of all the time spent by the inspectors in preparing for the inspection. sMeetingType is the inspection meeting type which can be inspection, re-inspection, or maintenance. More meeting types may be added. sInspectionType is the type of inspection material which can be document, code, or others. More inspection types may be added. nMeetingDuration is the length of the inspection meeting. nNumOfMajorDefect and nNumOfMinorDefect is the total number of major and minor defects discovered for all the inspection material. sResultOfInspection is the sum of the results of the inspection of all the inspection material which can be either Accepted, Conditional, or Re-Inspect. If the result of any inspection material is Re-Inspect, then sResultOfInspection is Re-Inspect. If the result of any inspection material is Conditional and none are Re-Inspect, then sResultOfInspection is Conditional. If the results of all inspection material are Accepted, then sResultOfInspection is Accepted. More results can be added.
The InspectorList table 1104 contains all the inspector information for all the inspections. sInspector is the member label of the member who inspected the inspection material. nPrepTime is the time spent by the inspector in inspecting the material.
The DocumentList table 1106 contains all the inspection material for all the inspections. sDocument is the name of the inspection material. nNumOfMajorDefect and nNumOfMinorDefect is the total number of major and minor defects discovered in the inspection material. sResultOfInspection is the results of the inspection of the inspection material which can be either Accepted, Conditional, or Re-Inspect. Usually if there are one or more major defects for inspection material, then sResultOfInspection for the inspection material is Re-Inspect. If there are one or more minor defects without any major defects for inspection material, then sResultOfInspection for the inspection material is Conditional. If there are no defects for inspection material, then sResultOfInspection for the inspection material is Accepted. More results can be added. defectFixApprovalDate is the date that the correction of the defects discovered in the inspection meeting for the inspection material was approved.
The DefectList table 1108 contains all the defect lists for all the inspection material for all the inspections. nDefectID is assigned to the defect discovered for inspection material of an inspection meeting which uniquely identifies the defect for the inspection material. sLocation is a description of where the defect was discovered in the inspection material. sDescription is a description of the defect discovered. sType is the type of defect that includes Data, Documentation, Functionality, Interface, Logic, Input/Output, Human Factors, Maintainability, Performance, syntax, Standards, and Other. More types can be added. sClass is the class of defect that includes Missing, Wrong, Extra, or Unclear. More classes can be added. sSeverity is the severity of the defect that includes Minor or Major. More severity types can be added.
Programming Package Diagrams for the Server
The TaskLoginProcessor 1202 package provides the Web page to display the form that allows a project member to log in to one of the editors. When the member submits the form, the LoginProcessor 1202 package processes the information entered by the member to validate the information. If the information is valid and if the member has the appropriate access privilege, the LoginProcessor 1202 package redirects the system to one of the packages corresponding to the editors.
The TaskAssignmentProcessor 1204 package provides the Web page to display the task assignment editor 102 (
The ProjectScheduleProcessor 1206 package provides the Web page to display the project schedule editor 202 (
The MemberScheduleProcessor 1208 package provides the Web page to display the member schedule editor 302 (
The MeetingLoginProcessor 1212 package provides the Web page to display the form (
The InspectionMeetingProcessor 1214 package provides the Web page to display the inspection meeting form (
The ProjectSetupProcessor 1216 package provides the Web page to display the new project setup form (
Except for the redirection of the TaskLoginProcessor 1202 package to the editor packages and the redirection of the MeetingLoginProcessor 1212 package to the InspectionMeetingProcessor 1214 package or other meeting type packages, the processor packages are independent of each other and, generally, there is no interaction between the editor packages or meeting packages. Each of the processor packages 1202-1216 interacts with a database 1210 (e.g., databases 506, 536 of
According to an embodiment, each of the processor 1204-1216 packages comprises PHP script files, JavaScript files, and HTML files. The PHP script files obtain project, task, and inspection information from the database 1210 and generate the JavaScript that displays the editor, meeting form, or project setup form on the client processor 602 (
The Web Page for XXX 1306 (where “XXX” refers to either TaskAssignment, ProjectSchedule, MemberSchedule, or InspectionMeeting) integrates two packages to display the editor/form. The Web page 1306 includes all the PHP script files of a XXXPHPPreZZZ 1308 package and all the javascript files of a XXXJavaScript 1310 package to display and manage the editor/form. Note that if ZZZ is Edit (for editor), then XXX is either TaskAssignment, ProjectSchedule or MemberSchedule and if ZZZ is Form, then XXX is InspectionMeeting. All the PHP script files are processed on the Web server (e.g., Web server 507, 530 of
The Web Page for PostXXX 1312 integrates two packages that post the information and generate the Web page. The Web Page for PostXXX 1312 includes all the PHP script files of XXXPHPPostZZZ 1314 package to post the information from the editor/form and all the PHP script files of XXXWebPageGenerator 1316 package to create the Web page. The XXXPHPPostZZZ 1314 package obtains all the task or inspection information from the editor/form and adds or updates the task or inspection information in the database. The XXXWebPageGenerator 1316 package obtains task or inspection information from the database to generate the appropriate Web page.
Each of the packages of
Editor Web Page Components
When the Web page is requested by the client processor 602 (
A Method for Managing A Project Schedule or Meeting With A Client-Server Based Project Schedule System
At block 1602, in response to a request to view an editor or a meeting form associated with a client-server based project management system, a server accesses first schedule-related or meeting-related (i.e. inspection information) information from a database. For example, a user at client processor 602 (
At block 1604, the server generates client-executable code for execution by the requesting client. This client-executable code generated by the server is for displaying the requested editor or meeting form at the client, displaying the retrieved information in the appropriate fields of the editor or meeting form, and for managing the editor or meeting form at the client. For example, server processor 604 (
The editor/form pages are stored in the server processor 604, such as Web servers 507, 530 (
At block 1608, the client executes the client-executable code, or at least some of such code, in order to display the first schedule-related or meeting-related information in the requested editor or meeting form and to manage the data, editor and meeting form, generally. Thus, initial display of the requested editor/form is now complete, based on the foregoing actions associated with each of the client and server processors.
Once the editor or meeting form page is loaded at the client by executing the client-executable code (e.g., JavaScript) generated by the server, the user can begin to edit and/or add information associated with the editor or meeting. Thus, at block 1610, the client receives second schedule-related or meeting-related information from a user via the editor/form. For example, depending on the particular editor or meeting, the client processor 602 (
At block 1612, the client executes at least some of the client-executable code to manage and/or maintain the second schedule-related or meeting-related information in the editor or meeting form at the client side. For example, execution of the code creates data structures and associations for managing the new or updated data at the client prior to submission of such data to the server, and provides the functionalities embodied in the editor or form page objects (e.g., HTML buttons, text entry objects, etc.).
At block 1614, the client passes the second schedule-related or meeting-related information from the editor/form to the server. Thus, at block 1616, the server stores the second schedule-related or meeting-related information in the database, from which it can be subsequently accessed for passing back to clients in response to requests. For example, schedule-related or meeting-related information may be passed from the server to a client in response to a request for a respective editor/form page (e.g.,
A Method for Managing Tasks in A Project Schedule System
At block 1702, in response to an event that affects a row of a display table of an editor, a class object corresponding to the affected row directly accesses one or more attributes, of the class object, which correspond to elements of an editor associated with a project schedule system. Each row of the display table corresponds to a schedule task associated with a project schedule and displays values corresponding to elements of the editor. Significantly, the class object can directly access the attributes because the elements of the editor are configured as attributes of the class object. Thus, the class object does not have to construct the element id for the affected elements of the affected row and does not have to obtain such elements.
For example, a user edits schedule data for a particular task via the member schedule editor 302 (
At block 1704, the class object corresponding to the affected row directly manipulates a value for each of the one or more attributes of the class object based on the event. Continuing with the example, a member function of an object of class for the member schedule editor 302 sets the values of attributes of the object and thereby manipulates the values of elements of the member schedule editor 302.
At block 1706, a client transmits to a server the value for each of the one or more attributes, including the values for the attributes that were manipulated at block 1704. For example, the client processor 602 (
Computer system 1800 may be coupled via bus 1802 to a display 1812, such as a cathode ray tube (CRT), for displaying information to a computer user. An input device 1814, including alphanumeric and other keys, is coupled to bus 1802 for communicating information and command selections to processor 1804. Another type of user input device is cursor control 1816, such as a mouse, a trackball, or cursor direction keys for communicating direction information and command selections to processor 1804 and for controlling cursor movement on display 1812. This input device typically has two degrees of freedom in two axes, a first axis (e.g., x) and a second axis (e.g., y), that allows the device to specify positions in a plane.
The invention is related to the use of computer system 1800 for implementing the techniques described herein. According to one embodiment of the invention, those techniques are performed by computer system 1800 in response to processor 1804 executing one or more sequences of one or more instructions contained in main memory 1806. Such instructions may be read into main memory 1806 from another computer-readable medium, such as storage device 1810. Execution of the sequences of instructions contained in main memory 1806 causes processor 1804 to perform the process steps described herein. In alternative embodiments, hard-wired circuitry may be used in place of or in combination with software instructions to implement the invention. Thus, embodiments of the invention are not limited to any specific combination of hardware circuitry and software.
The term “computer-readable medium” as used herein refers to any medium that participates in providing data that causes a computer to operation in a specific manner. In an embodiment implemented using computer system 1800, various computer-readable media are involved, for example, in providing instructions to processor 1804 for execution. Such a medium may take many forms, including but not limited to, non-volatile media and volatile media. Non-volatile media includes, for example, optical or magnetic disks, such as storage device 1810. Volatile media includes dynamic memory, such as main memory 1806. Common forms of computer-readable media include, for example, a floppy disk, a flexible disk, hard disk, magnetic tape, or any other magnetic medium, a CD-ROM, any other optical medium, a RAM, a PROM, and EPROM, a FLASH-EPROM, any other memory chip or memory cartridge, or any other medium from which a computer can read.
Various forms of computer-readable media may be involved in carrying one or more sequences of one or more instructions to processor 1804 for execution. For example, the instructions may initially be carried on a magnetic disk of a remote computer. The remote computer can load the instructions into its dynamic memory and send the instructions over a telephone line using a modem. A modem local to computer system 1800 can receive the data on the telephone line and use an infra-red transmitter to convert the data to an infra-red signal. An infra-red detector can receive the data carried in the infra-red signal and appropriate circuitry can place the data on bus 1802. Bus 1802 carries the data to main memory 1806, from which processor 1804 retrieves and executes the instructions. The instructions received by main memory 1806 may optionally be stored on storage device 1810 either before or after execution by processor 1804.
Computer system 1800 also includes a communication interface 1818 coupled to bus 1802. Communication interface 1818 provides a two-way data communication coupling to a network link 1820 that is connected to a local network 1822. For example, communication interface 1818 may be an integrated services digital network (ISDN) card or a modem to provide a data communication connection to a corresponding type of telephone line. As another example, communication interface 1818 may be a local area network (LAN) card to provide a data communication connection to a compatible LAN. Wireless links may also be implemented. In any such implementation, communication interface 1818 sends and receives electrical, electromagnetic or optical signals that carry digital data streams representing various types of information.
Network link 1820 typically provides data communication through one or more networks to other data devices. For example, network link 1820 may provide a connection through local network 1822 to a host computer 1824 or to data equipment operated by an Internet Service Provider (ISP) 1826. ISP 1826 in turn provides data communication services through the world wide packet data communication network now commonly referred to as the “Internet” 1828. Local network 1822 and Internet 1828 both use electrical, electromagnetic or optical signals that carry digital data streams.
Computer system 1800 can send messages and receive data, including program code, through the network(s), network link 1820 and communication interface 1818. In the Internet example, a server 1830 might transmit a requested code for an application program through Internet 1828, ISP 1826, local network 1822 and communication interface 1818. The received code may be executed by processor 1804 as it is received, and/or stored in storage device 1810, or other non-volatile storage for later execution.
In step 2202, the database is queried to obtain the uncompleted level 1 member tasks. A SELECT query to obtain the uncompleted level 1 tasks may use an ORDER BY clause to organize the tasks in the order described using nDateState of Level1MemberTask. An example query to obtain the uncompleted level 1 tasks for project “J20” and project member “TM” is “SELECT*FROM Level1MemberTask WHERE sProjectNumber=‘J20’ AND sMemberLabel=‘TM’ AND nDateState<4 ORDER BY nDateState DESC, actualStart, planEnd, planStart, setDate ASC”. The condition that nDateState<4 prevents the completed tasks from being obtained. Ordering in descending order of nDateState obtains all tasks with an nDateState value of 3 first, followed by values of 2, 1, and 0.
After querying the database for the level 1 tasks, in step 2204 the database records for the level 1 tasks that satisfy the query are received. In step 2206, a determination is made whether there are any remaining level 1 member tasks to be processed. If so, then in step 2208 the next level 1 task is displayed in the editor. After the level 1 task is displayed, in step 2210 the subtasks of the level 1 task are displayed in the editor. The process to display the subtasks in the editor is depicted in the flow diagram of
In step 2302, the database is queried to obtain the lower level member tasks. A SELECT query to obtain the lower level tasks may use an ORDER BY clause to organize the tasks in the order described using nDateState of LevelXXXMemberTask (where the value of XXX is 2, 3, or 4). An example query to obtain the lower level tasks for project “J20”, level 3 tasks, and parent task id “101” is “SELECT*FROM Level3MemberTask WHERE sProjectNumber=‘J20’ AND nLevel2TaskID=101 ORDER BY nDateState DESC, actualEnd, actualStart, planEnd, planStart, setDate ASC”.
After querying the database for the lower level tasks, in step 2304, the database records for the lower level tasks that satisfy the query are received. In step 2306, a determination is made whether there are any remaining lower level member tasks to be processed. If so, then in step 2308, the next lower level member task is displayed in the editor. After the lower level task is displayed, in step 2310, a determination is made whether the task level is the lowest task level (meaning there are no subtasks for task at the lowest level). If the task level is at its lowest level, then control returns to step 2306 and a determination is again made whether there are any remaining lower level member tasks to be processed. If so, then steps 2308 to 2312 are performed for the next lower level task. If the task level is not at its lowest level, then in step 2312, the subtasks of the lower level task are displayed in the member schedule editor. The process to display the subtasks in the member schedule editor for the lower level task repeats the entire process of flow diagram 2300. After displaying the subtasks in the member schedule editor, the next lower level task is obtained for displaying in the member schedule editor.
If, in step 2306, there are no remaining lower level tasks to be processed, then the process is complete in step 2314. Although embodiments of the invention are depicted in the figures and described herein in the context of lower level tasks up to level 4, the invention is not limited to any particular number of lower level tasks and any number of lower level tasks may be used.
In step 2502, the database is queried to obtain the level 1 member tasks. A SELECT query to obtain the level 1 tasks may use the ORDER BY clause to organize the tasks in the order described using nDateState of Level1MemberTask. A sample query to obtain the level 1 tasks for project “J20” and project member “TM” is “SELECT*FROM Level1MemberTask WHERE sProjectNumber=‘J20’ AND sMemberLabel=‘TM’ ORDER BY nDateState DESC, actualStart, planEnd, planStart, setDate ASC”.
After querying the database for the level 1 tasks, in step 2504, the database records for the level 1 tasks that satisfy the query are received. In step 2506, a determination is made whether there are any remaining level 1 member tasks to be processed. If so, then in step 2508, the next level 1 task is added to the Web page. After the next level 1 task is added, in step 2510, the subtasks of the level 1 task are added to the Web page. The process to add the subtasks in the web page is depicted in the flow diagram of
In step 2602, the database is queried to obtain the lower level member tasks. A SELECT query to obtain the lower level tasks will use the ORDER BY clause to organize the tasks in the order described using nDateState of LevelXXXMemberTask (where XXX is 2, 3, or 4). An example query to obtain the lower level tasks for project “J20”, level 2 tasks, and parent task id “121” is “SELECT*FROM Level2MemberTask WHERE sProjectNumber=‘J20’ AND nLevel1TaskID=121 ORDER BY nDateState DESC, actualEnd, actualStart, planEnd, planStart, setDate ASC”.
After querying the database for the lower level tasks, in step 2604, the database records for the lower level tasks that satisfy the query are received. In step 2606, a determination is made whether there are any remaining lower level member tasks to be processed. If so, then in step 2608, the next lower level task is added to the Web page. After the next lower level task is added to the Web page, in step 2610, a determination is made whether the task level is the lowest task level (meaning there are no subtasks for task at the lowest level). If the task level is at its lowest level, then control returns to step 2606 and a determination is again made whether there are any remaining lower level member tasks to be processed. If so, then steps 2608 to 2612 are performed for the next lower level task. If the task level is not at its lowest level, then in step 2612, the subtasks of the lower level task are added to the Web page. The process to add the subtasks to the Web page for the lower level task repeats the entire process of flow diagram 2600. If, in step 2606, there are no remaining lower level tasks to be processed, then the process is complete in step 2614. Although embodiments of the invention are depicted in the figures and described herein in the context of lower level tasks up to level 4, the invention is not limited to any particular number of lower level tasks and any number of lower level tasks may be used.
An example of a level 1 task that qualifies as inspection material from the Level1MemberTask table of
In step 3702, the database is queried to obtain uncompleted but scheduled level 1 member tasks in order of descending nDateState and ascending actualStart, planEnd, planStart and setDate. To retrieve all the level 1 tasks that are considered inspection material, a SELECT query may use the WHERE clause to obtain only project tasks that are not completed but scheduled using nDateState of Level1Member task. The query may also use the ORDER BY clause to organize the tasks in the order of started tasks, planned tasks, and planned start-only tasks using nDateState of Level1MemberTask. An example query to obtain the level 1 tasks for potential inspection material for project “J20” and project member “TM” is “SELECT*FROM Level1MemberTask WHERE sProjectNumber=‘J20’ AND sMemberLabel=‘TM’ AND nDateState>0 AND nDateState<4 ORDER BY nDateState DESC, actualStart, planEnd, planStart, setDate ASC”.
After querying the database for the level 1 tasks, in step 3704, the records for the level 1 tasks that satisfy the query are received. In step 3706, a determination is made whether there are any remaining level 1 member tasks to be processed. If so, then in step 3708 a determination is made whether the next level 1 task qualifies as inspection material. If the level 1 task qualifies as inspection material, then in step 3710, the task is added to the list of inspection material and the next level 1 task is obtained. If the task is not inspection material, then in step 3712, a determination is made whether any of its subtasks qualify as inspection material. The process for obtaining inspection material from subtasks is depicted in
In step 3802, the database is queried to obtain uncompleted but scheduled lower level member tasks in order of descending nDateState and ascending actualStart, planEnd, planStart and setDate. To obtain all the lower level tasks that are considered inspection material, a SELECT query may use the WHERE clause to obtain only tasks that are not completed but scheduled using nDateState of LevelXXXMember where XXX is 2, 3, or 4. The query may also use the ORDER BY clause to organize the tasks in the order of started tasks, planned tasks, and planned start-only tasks using nDateState of LevelXXXMemberTask. An example query to obtain the level 3 tasks for potential inspection material for project “J20” and parent task nLevel2TaskID of “91” is “SELECT*FROM Level3MemberTask WHERE sProjectNumber=‘J20’ AND nLevel2TaskID=91 AND nDateState>0 AND nDateState<4 ORDER BY nDateState DESC, actualStart, planEnd, planStart, setDate ASC”.
After querying the database for the lower level tasks, in step 3804, the database records for the lower level tasks that satisfy the query are received. In step 3806, a determination is made whether there are any remaining lower level member tasks to be processed. If so, then in step 3808, a determination is made whether the next lower level task qualifies as inspection material. If the next lower level task qualifies as inspection material, then in step 3810, the task is added to the list of inspection material with the parent task name and a separator string prepended to the name of the lower level task and the next lower level task is obtained. The separator may be any string that will clearly distinguish the names of the parent task and lower level task such as “::” or “@@@@@”. If the task does not qualify as an inspection material, then in step 3812, a determination is made if inspection material can be obtained from the subtasks of the current lower level task. The process for obtaining inspection material from subtasks repeats the process of
The purpose of prepending the parent task name and separator to the lower level task name is to avoid having the same name in the inspection material list. It is possible to have more than one task having the same name so that adding the parent task name and separator reduces the chance of the same name in the list. As an example from the Level3MemberTask table of
Extensions and Alternatives
Alternative embodiments are described throughout the foregoing description, and in locations that best facilitate understanding the context of the embodiments. Furthermore, the embodiments have been described with reference to specific embodiments thereof. It will, however, be evident that various modifications and changes may be made thereto without departing from any broader concepts. Therefore, the specification and drawings are, accordingly, to be regarded in an illustrative rather than a restrictive sense.
In addition, in this description certain process steps are set forth in a particular order, and alphabetic and alphanumeric labels may be used to identify certain steps. Unless specifically stated in the description, embodiments are not necessarily limited to any particular order of carrying out such steps. In particular, the labels are used merely for convenient identification of steps, and are not intended to specify or require a particular order of carrying out such steps.
Functional implementation of the various inventive embodiments described herein may be implemented equivalently in hardware, software, firmware, and/or other available functional components or building blocks. No specific limitation is intended to a particular device or programmatic sequence. Other variations and embodiments are possible in light of above teachings.
Number | Name | Date | Kind |
---|---|---|---|
5682473 | Carson et al. | Oct 1997 | A |
5826252 | Wolters et al. | Oct 1998 | A |
6049776 | Donnelly et al. | Apr 2000 | A |
6101481 | Miller | Aug 2000 | A |
6222530 | Sequeria | Apr 2001 | B1 |
6308164 | Nummelin et al. | Oct 2001 | B1 |
6334097 | Yoshitake et al. | Dec 2001 | B1 |
6415259 | Wolfinger et al. | Jul 2002 | B1 |
6487469 | Formenti | Nov 2002 | B1 |
6954737 | Kalantar et al. | Oct 2005 | B2 |
7051036 | Rosnow et al. | May 2006 | B2 |
7073175 | Rehg et al. | Jul 2006 | B2 |
7167893 | Malone et al. | Jan 2007 | B1 |
7219107 | Beringer | May 2007 | B2 |
7251693 | Stull et al. | Jul 2007 | B2 |
7269798 | Nonaka et al. | Sep 2007 | B2 |
7283975 | Broughton | Oct 2007 | B2 |
7406432 | Motoyama | Jul 2008 | B1 |
7496886 | Puttaswany et al. | Feb 2009 | B2 |
7546228 | Cullick et al. | Jun 2009 | B2 |
7668800 | Motoyama et al. | Feb 2010 | B2 |
7721290 | Horikawa | May 2010 | B2 |
20020004734 | Nishizawa | Jan 2002 | A1 |
20020077879 | Uchida et al. | Jun 2002 | A1 |
20020078007 | Herrero | Jun 2002 | A1 |
20020082889 | Oliver | Jun 2002 | A1 |
20020143601 | Sinex | Oct 2002 | A1 |
20020169739 | Carr et al. | Nov 2002 | A1 |
20020178019 | Anderson et al. | Nov 2002 | A1 |
20020194048 | Levinson | Dec 2002 | A1 |
20030014409 | Shukoor | Jan 2003 | A1 |
20030046134 | Frolick et al. | Mar 2003 | A1 |
20030046345 | Wada et al. | Mar 2003 | A1 |
20030135481 | Helmes et al. | Jul 2003 | A1 |
20030191681 | Gallion et al. | Oct 2003 | A1 |
20030225611 | Wilson et al. | Dec 2003 | A1 |
20040017400 | Ly et al. | Jan 2004 | A1 |
20040039723 | Lee et al. | Feb 2004 | A1 |
20040078257 | Schweitzer et al. | Apr 2004 | A1 |
20040111705 | Motoyama et al. | Jun 2004 | A1 |
20040117046 | Colle et al. | Jun 2004 | A1 |
20040162750 | Motoyama | Aug 2004 | A1 |
20040260782 | Affleck et al. | Dec 2004 | A1 |
20040267595 | Woodings et al. | Dec 2004 | A1 |
20050022198 | Olapurath et al. | Jan 2005 | A1 |
20050027386 | Weigand et al. | Feb 2005 | A1 |
20050028158 | Ferguson et al. | Feb 2005 | A1 |
20050033669 | Stremler et al. | Feb 2005 | A1 |
20050080714 | McHale et al. | Apr 2005 | A1 |
20050137920 | O'Connor et al. | Jun 2005 | A1 |
20050138031 | Wefers | Jun 2005 | A1 |
20050160084 | Barrett | Jul 2005 | A1 |
20050216328 | Clark | Sep 2005 | A1 |
20060053043 | Clarke | Mar 2006 | A1 |
20060053125 | Scott | Mar 2006 | A1 |
20060070019 | Vishnumurty et al. | Mar 2006 | A1 |
20060074844 | Frankel et al. | Apr 2006 | A1 |
20060090071 | Sinzig et al. | Apr 2006 | A1 |
20060111953 | Setya | May 2006 | A1 |
20060136461 | Lee et al. | Jun 2006 | A1 |
20060173879 | MacFarlane et al. | Aug 2006 | A1 |
20060212327 | Norman | Sep 2006 | A1 |
20060223509 | Fukazawa et al. | Oct 2006 | A1 |
20060248166 | Milosevic et al. | Nov 2006 | A1 |
20060265690 | Motoyama et al. | Nov 2006 | A1 |
20070067196 | Usui | Mar 2007 | A1 |
20070073695 | Conlan et al. | Mar 2007 | A1 |
20070143827 | Nicodemus et al. | Jun 2007 | A1 |
20070146791 | Murase | Jun 2007 | A1 |
20070150327 | Dromgold | Jun 2007 | A1 |
20070192156 | Gauger | Aug 2007 | A1 |
20070203660 | North et al. | Aug 2007 | A1 |
20070214450 | Motoyama et al. | Sep 2007 | A1 |
20070282658 | Brintle | Dec 2007 | A1 |
20070288283 | Fitzpatrick | Dec 2007 | A1 |
20070288288 | Motoyama et al. | Dec 2007 | A1 |
20070288289 | Motoyama et al. | Dec 2007 | A1 |
20070288290 | Motoyama et al. | Dec 2007 | A1 |
20070288334 | Creedle et al. | Dec 2007 | A1 |
20070294617 | Kroeger | Dec 2007 | A1 |
20080027779 | Kirwan | Jan 2008 | A1 |
20080103871 | Ruehl et al. | May 2008 | A1 |
20080201713 | Chaffee et al. | Aug 2008 | A1 |
20080209416 | De Souza et al. | Aug 2008 | A1 |
20080221952 | Mohri | Sep 2008 | A1 |
20080255907 | Motoyama et al. | Oct 2008 | A1 |
20080313024 | Kunichika et al. | Dec 2008 | A1 |
20090217240 | Motoyama et al. | Aug 2009 | A1 |
20090217241 | Motoyama et al. | Aug 2009 | A1 |
20090222299 | Clemenson et al. | Sep 2009 | A1 |
20090263769 | Sweeney | Oct 2009 | A1 |
20090276260 | Douglas et al. | Nov 2009 | A1 |
20090287521 | Motoyama et al. | Nov 2009 | A1 |
20090287522 | Motoyama et al. | Nov 2009 | A1 |
20090287718 | Motoyama et al. | Nov 2009 | A1 |
20090287730 | Motoyama et al. | Nov 2009 | A1 |
20090287731 | Motoyama et al. | Nov 2009 | A1 |
20100070328 | Motoyama | Mar 2010 | A1 |
Number | Date | Country |
---|---|---|
2001202405 | Jul 2001 | JP |
2002024495 | Jan 2002 | JP |
2006244342 | Sep 2006 | JP |
Entry |
---|
Chin et al., Elsevier, Automation in Construction, vol. 13, Issue 2, Mar. 2004, pp. 241-259. |
Number | Date | Country | |
---|---|---|---|
20100070321 A1 | Mar 2010 | US |