(57)【要約】      （修正有）【課題】プロジェクトメンバーに対する具体的なタスクの割り当てを自動化し、個人スケジュールとプロジェクトスケジュールを決めるのに必要なタスクを自動化する。【解決手段】各メンバーに対して、階層組織化されたタスク構造の各レベルにおいてメンバータスクを一意的に識別するメンバータスク識別子を生成するために使用するメンバー識別子を格納する段階を有する。また、新しいサブタスクがタスク構造階層の一レベルに追加されたメンバースケジュールエディタセッションの完了の一メンバーの要求に応じて、プロジェクトチームデータベーステーブルから、一メンバーのメンバー識別子に基づいて、一レベルの一メンバーの最高のタスク識別子を読み出し、一レベルの一メンバーの最高のタスク識別子を増加することにより、新しいサブタスクのタスク識別子を生成する段階と、新しいサブタスクに生成したタスク識別子を関連づける段階とを有する。【選択図】図６
2007328791.tif 000002
【特許請求の範囲】
【請求項１】
コンピュータにより実行される、データベースを用いたプロジェクトスケジュールの管理方法であって、
プロジェクトチームデータベーステーブルに、プロジェクトのタスクを実行するように割り当てられた各メンバーに対して、
階層組織化されたタスク構造の各レベルにおいてメンバータスクを一意的に識別するメンバータスク識別子を生成するために使用するメンバー識別子を格納する段階と、
新しいサブタスクが前記タスク構造階層の一レベルに追加されたメンバースケジュールエディタセッションの完了の一メンバーの要求に応じて、
前記プロジェクトチームデータベーステーブルから、前記一メンバーの前記メンバー識別子に基づいて、前記一レベルの前記一メンバーの最高のタスク識別子を読み出し、
前記一レベルの前記一メンバーの前記最高のタスク識別子を増加することにより、新しいサブタスクのタスク識別子を生成する段階と、
前記新しいサブタスクに前記新しいサブタスクのために生成した前記タスク識別子を関連づける段階とを有する方法。
【請求項２】
前記新しいサブタスクのタスク識別子を生成するステップは、前記一メンバーの前記メンバー識別子のモジュロに基づく、前記一レベルの前記一面バーの最高のタスク識別子の増加を含む、請求項１に記載の方法。
【請求項３】
前記一メンバーの前記メンバースケジュールエディタセッションの完了要求に応答して、
前記新しいサブタスクをメンバータスクデータベースに格納する段階と、
前記プロジェクトチームデータベーステーブルに、前記タスク階層の対応するレベルの前記一メンバーの最高タスク識別子を格納する段階とをさらに有する、請求項１に記載の方法。
【請求項４】
前記タスク階層の各レベルに対応するメンバータスクデータベーステーブルを格納する段階であって、前記タスク階層の隣接レベルにあるメンバータスクデータベーステーブルは階層組織化されたタスクとサブタスクと関連したスケジュールデータを集計するためにリンクされている段階をさらに有する、請求項１に記載の方法。
【請求項５】
メンバータスクデータベーステーブルに、一サブタスクのタスク識別子とともに、親タスクまたは前記一サブタスクの親サブタスクのタスク識別子を格納する段階をさらに有する、請求項４に記載の方法。
【請求項６】
前記プロジェクトチームデータベーステーブルに、前記プロジェクトのタスクを実行するように割り当てられた各メンバーに対して、
前記データベースとインターラクトするために使用されるタスク割り当てエディタ、プロジェクトスケジュールエディタ、またはメンバースケジュールエディタにアクセスするアクセス特権と関連づけられた役割識別子と、
対応するメンバースケジュールウェブページが格納されているディレクトリ位置であって、メンバーウェブページが前記データベースから１つ以上のテーブルに含まれたスケジュールデータを表示するディレクトリ位置とを格納する段階をさらに有する、請求項１に記載の方法。
【請求項７】
プロジェクトタスクデータベースに、対応するプロジェクトタスクのスケジュールのすべての対応する格納されたバージョンを特定するバージョンインジケータを格納する段階をさらに有する、請求項１に記載の方法。
【請求項８】
第１日に一タスクの第１の予定スケジュール日時を受け取る段階と、
前記第１日とは異なる第２日に、前記一タスクの第２の予定スケジュール日時を受け取る段階と、
前記第１日と異なる第２日に前記第２の予定スケジュール日時の受け取りに応答して、前記一タスクのスケジュールの新しいカレントバージョンを特定するために前記一タスクの前記バージョンインジケータを更新する段階をさらに有する、請求項７に記載の方法。
【請求項９】
メンバータスクデータベースに、対応するメンバーサブタスクのスケジュールのすべての対応する格納されたバージョンを特定するバージョン識別子を格納する段階をさらに有する、請求項１に記載の方法。
【請求項１０】
前記タスク構造階層の一レベルの第１のメンバーサブタスクの第１の予定スケジュール日時を受け取る段階と、
前記第１のメンバーサブタスクのサブタスクである第２のメンバーサブタスクの第２の予定スケジュール日時を受け取る段階であって、前記第２の予定スケジュール日時により前記第１の予定スケジュール日時が変化する段階と、
前記第１の予定スケジュール日時を変化させる前記第２の予定スケジュール日時の受け取りに応答して、前記第１のメンバーサブタスクの前記スケジュールの新しいカレントバージョンを特定するために、前記第１のメンバーサブタスクのバージョンインディケータを更新する段階とをさらに有する、請求項９に記載の方法。
【請求項１１】
前記第２のメンバーサブタスクのサブタスクである第３のメンバーサブタスクの第３の予定スケジュール日時を受け取る段階であって、前記第３の予定スケジュール日時により、前記第１の予定スケジュール日時を変化させる前記第２の予定スケジュール日時が変化する段階と、
前記第３の予定スケジュール日時の受け取りに応答して、前記第２のメンバーサブタスクのスケジュールの新しいカレントバージョンを特定するために前記第２のメンバーサブタスクのバージョンインディケータを更新し、前記第１のメンバーサブタスクのスケジュールの新しいカレントバージョンを特定するために前記第１のメンバーサブタスクのバージョンインディケータを更新する段階をさらに有する、請求項１０に記載の方法。
【請求項１２】
前記予定スケジュール日時は、前記第１の予定スケジュール日時が受け取られた前記第１日より遅い第２日に受け取られ、前記方法はさらに
メンバースケジュールに前記第２日に対応する第２の設定日時を表示する段階と、
前記メンバースケジュールに、前記第１日に対応する第１の設定日時を取消線で取り消して表示する段階とを有する、請求項１０に記載の方法。
【請求項１３】
コンピュータに、データベースを用いたプロジェクトスケジュールを管理させるコンピュータプログラムであって、１つ以上のプロセッサにより実行された時、前記１つ以上のプロセッサに請求項１乃至１２いずれか１項に記載の方法を実行させるコンピュータプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明はプロジェクトマネージメントに関し、特にネットワークベースの開発スケジュールマネージメントシステムにおけるデータベースの使用に関する。
【背景技術】
【０００２】
本願は、次の米国特許出願の関連出願である：
第１１／４４９，１１６号（２００６年６月７日出願、発明の名称「ネットワークベースプロジェクトスケジュールマネージメントシステムにおけるスケジュールエディタの使用」）；第１１／４４９，１３３号（２００６年６月７日出願、発明の名称「ネットワークベースプロジェクトスケジュールマネージメントシステムにおけるデータベースの使用」）；第０９／８８１，２５０号（２００１年６月１３日出願、発明の名称「ネットワークを介した開発プロジェクトファイルの自動マネージメント」）；及び第１０／０５９，６９４号（２００２年１月２８日出願、発明の名称「自動的にタスクスケジュールが更新されるネットワークを介したプロジェクトマネージメント」）。これらの文献の内容はすべて、その全体を参照援用する。
【０００３】
製品開発プロジェクトは、一般的に、監視と管理に大きな手間がかかる。さらに、コンピュータソフトウェア開発プロジェクトは、管理が本来的に困難である。この困難性は、一部には、ソフトウェアパッケージを構成する多数のタスクとそれに付随する成果物と、これらのタスクと成果物に付随する大量のペーパーワークとプロジェクトファイルによる。他の貢献要因としては、ソフトウェアパッケージの開発サイクルにおける個々のタスクと成果物との間にできる複雑な相互依存がある。さらに別の貢献要因は、ソフトウェア開発に関連する設計仕様を作成・維持する必要である。
【０００４】
開発プロジェクトの管理には、一般的に、プロジェクト文書、スケジュール等へのアクセスの組織化、維持管理、制御が含まれる。さらにまた、会社組織には同時に進行する複数の開発プロジェクトがあることが多く、文書管理の手間が非常に大きくなる。歴史的には、マスタープロジェクトスケジュールの管理には、他のタスクもあるが、スケジューリングアプリケーションへのデータのマニュアル入力、スケジュール間のリンクのマニュアル生成、及びマスタープロジェクトスケジュールへの個々の開発者のタスクスケジュールのマニュアル集積が含まれる。これらは面倒で間違いが起こりやすいタスクであり、ほとんどまたはまったく監視や品質管理がされていない。
【０００５】
マスタープロジェクトスケジュールは変動することが多く、マネージメントは開発者にタスクの状況と関係するスケジュールを更新するように依頼しなければならない。しばしば、開発者からマネージメントへのフィードバックはほとんど管理されず、一定のポリシー、手続、検証プロセスに従って処理されない。このように、プロジェクトスケジュールの実際のステータスを確認することは困難であることが多い。個々のタスクの進捗がそのタスクを割り当てられた個人による主観的で自己弁護的な進捗レポートにより知らされるからである。
【０００６】
パブリックなネットワークやプライベートなネットワークは、プロジェクトチームのメンバーがプロジェクトに関する情報を取得する有用かつ簡単なコミュニケーションメカニズムである。プロジェクトとそのメンバーのスケジュールに関連するウェブページを作ることにより、プロジェクトチームのメンバーは容易かつすばやくにスケジュールにアクセスしてプロジェクトのステータスを判断することができる。また、スケジュール履歴は今のプロジェクトに使用することができる。しかし、プロジェクトチームの個々のメンバーのスケジュールを決めて更新するのに必要なタスクと、個々のメンバーのスケジュールをすべてまとめるのに必要なタスクはそれほど簡単なものではない。
【０００７】
従来、スケジュールはすべてＨＴＭＬエディタを用いて、手作業で作成していた。最初に、プロジェクトマネージャが主なプロジェクトのタスクを示した全体的プロジェクトスケジュールを決める。プロジェクトタスクをサブタスクに分割し、そのサブタスクをプロジェクトチームのメンバーに非公式に割り当てる。次に、プロジェクトチームの各メンバーはメンバースケジュールを決めるが、個々のメンバースケジュールのフォーマットには統一性がなかった。すべてのメンバーのスケジュールに基づき、プロジェクトマネージャはプロジェクトスケジュールに関連するサブタスクスケジュールをすべて集計し、全体的プロジェクトスケジュールを更新する。さらにまた、すべてのスケジュールはタスクのスケジュールのすべての履歴を保持している。グループが小さいとスケジューリングはつまらない。グループが大きいと、スケジューリング、特にすべてのサブタスクスケジュールをプロジェクトタスクスケジュールに集計することは、つまらないだけでなく複雑でもある。マイクロソフトプロジェクト等の市販のソフトウェアは、いろいろなプロジェクトのための資源管理その他の有用な機能を有している。しかし、かかる汎用プロジェクトマネージメントソフトウェアは、ソフトウェア開発チームのスケジュール管理には大きすぎる。
【発明の開示】
【発明が解決しようとする課題】
【０００８】
上記を考慮して、プロジェクトメンバーに対する具体的なタスクの割り当てを自動化し、個人スケジュールとプロジェクトスケジュールを決めるのに必要なタスクを自動化する必要がある。
【課題を解決するための手段】
【０００９】
ここに説明するシステムは、全体的ソフトウェア開発プロジェクトスケジュール、個別のプロジェクトメンバースケジュール、及びソフトウェアプロジェクトタスク割り当てのネットワークを介した生成・維持・管理のために使用し得る。本発明の一態様によると、ブラウザを使用してプロジェクトスケジュールとプロジェクトメンバースケジュールのテーブルを生成して更新する。スケジュールは、プロジェクトタスク（及びプロジェクトタスクの詳細タスクまたはサブタスク）と期待開始日時・終了日時（予定日時）及び本当の開始日時・終了日時（実際日時）のリストを含む。スケジュールの価値はプロジェクトが完了した時に無くなるのではない。スケジュールは、将来のプロジェクトのタスクのスケジュールを予測するために使用する重要な情報を含んでいる。
【００１０】
本システムは、ウェブブラウザを介してアクセスする、プロジェクトのメンバーが様々なタスクを実行する３つのエディタを有する。情報はウェブサーバとウェブブラウザ間でやりとりされ、データベースを使用してすべての情報を維持する。プロジェクトマネージャはタスク割り当てエディタを使用して、個々のプロジェクトメンバーにタスクを割り当てられる。プロジェクトマネージャは、プロジェクトスケジュールエディタを使用して、プロジェクトスケジュールを最初に生成し、全体的プロジェクトスケジュールを示すことができる。プロジェクトスケジュールを生成した後、各プロジェクトメンバーは、プロジェクトスケジュールに関係するタスクを含む自分のメンバースケジュールをメンバースケジュールエディタを用いて生成することができる。プロジェクトメンバーはタスクを完了すると、メンバースケジュールエディタを介して自分のスケジュールを更新する。プロジェクトタスクのすべてのサブタスクが完了すると、プロジェクトマネージャはプロジェクトスケジュールを更新するために、すべてのメンバーのスケジュールをプロジェクトスケジュールと集約する必要がある。プロジェクトスケジュールは、メンバーのスケジュールの新しい予定日時と実際日時で更新される。メンバーのスケジュールはスケジュールの変更履歴を含んでいる。
【００１１】
プロジェクトスケジュールの管理と維持には、すべてのメンバーのスケジュールの集約すなわち集計が必要である。メンバーのスケジュールは全体的なプロジェクトスケジュールで生じた変更の履歴を含む。スケジュールの管理と維持は一般的には面倒なプロセスである。そこで、上記のシステムは、データベースを用いたメンバースケジュールとプロジェクトスケジュールの管理、維持、及び追跡を提供する。データベースは、システムのエディタとウェブページに情報を提供し、プロジェクトタスク、メンバータスク、対応するスケジュール、及びスケジュール履歴の間の関係を維持するために使用される。
【発明を実施するための最良の形態】
【００１２】
ネットワークベースのプロジェクトスケジュールマネージメントシステムにおいて個々のメンバーのスケジュールをプロジェクトスケジュールと集約する方法を説明する。この方法を主にソフトウェア開発プロジェクトを参照して説明する。しかし、この方法を他の開発プロジェクトに適用しても本発明の利益を享受できることは当業者には明らかである。以下の詳細な説明では、説明を目的として、本発明を完全に理解してもらうために、具体的な詳細事項を開示した実施形態例を記載する。しかし、言うまでもなく、本発明はこれらの詳細がなくても実施することができる。他の場合では、ブロック図に周知の構造とデバイスを示すが、これは本発発明が不明瞭になることを避けるためである。
【００１３】
また、以下の説明では、この方法を主にソフトウェア開発プロジェクトの日程（年月日）のマネージメントに関して説明する。しかし、この方法を日時、すなわち年月日に加えてさらに１日のうちにおける時刻（時分秒）にも適用しても本発明の利益を享受できることは当業者には明らかである。
【００１４】
タスク割り当てエディタ
図１Ａは、本発明の一実施形態による、タスク割り当てエディタの画面である。タスク割り当てエディタ１０２は、ユーザがプロジェクトにおいて完了すべきプロジェクトタスクを決めるのを支援する。組織によっては、その組織と関連して実行されるすべてのプロジェクトに共通なデフォルトプロジェクトタスクがある。プロジェクトタスクにはサブタスクが付随し、プロジェクトメンバーに割り当てられる。一般的に、プロジェクトマネージャがタスクを設定してプロジェクトメンバーに割り当てる。プロジェクトマネージャはこのタスク割り当てエディタ１０２を使用して、プロジェクトのプロジェクトタスクを設定し、各プロジェクトタスクのサブタスクを決め（create）、そのサブタスクをメンバーに割り当てる。タスクの割り当てに関する情報は、プロジェクトマネージャがタスクを追加して割り当てる際に、タスク割り当てエディタ１０２に記憶され、維持される。マネージャがタスク割り当てエディタ１０２とのセッションを完了すると、タスク割り当て情報はデータベースに送られ、格納され、維持される。
【００１５】
タスク割り当てセッションが完了して、例えばユーザが図１Ａのタスク割り当てエディタ１０２の「終了」（Finish）ボタンを選択すると、ウェブサーバにおいて、様々なプロジェクトメンバーに割り当てられたタスクを表示するタスク割り当てウェブページ１０４が自動的に生成される。図１Ｂは、本発明の一実施形態による、タスク割り当てウェブページの一例の画面である。タスク割り当てエディタ１０２により入力され編集されたタスクとタスク割り当て情報は、ウェブブラウザで表示するとウェブページの形式で表示される。タスクとタスク割り当てはすべて１つ以上の（好ましくは各行が１つのタスクに対応する）データベーステーブルに格納され、タスク割り当てエディタ１０２とタスク割り当てウェブページ１０４に表示される。
【００１６】
一実施形態では、タスク割り当てエディタ１０２（図１Ａ）は様々な動作を実行するために使用されるボタン（例えば、詳細追加（Add  Details）、行を上に追加（Add  Rows  Above）、行を下に追加（Add  Rows  Below）、削除（Delete）、終了（Finish）など）を含む。「終了」ボタンによりエディタセッションは完了し、タスク割り当て情報が送信され、データベースに格納・維持される。他のボタンにより、タスクに対応する行のチェックボックスを選択することにより選択されたタスクに対してそれぞれの操作が実行される。「詳細追加」ボタンによりプロジェクトタスクの下に行が追加されるので、マネージャはサブタスクをプロジェクトメンバーに割り当てられる。「上に行を追加」ボタンと「下に行を追加」ボタンにより、選択したタスク（プロジェクトタスクまたはサブタスク）に対応する行の上か下に行が追加され、マネージャはプロジェクトタスクを追加し、またはサブタスクを追加して割り当てることができる。追加される行の数は、「下に行を追加」ボタンの隣にある「行数」メニューを選択することにより設定される。「削除」ボタンにより選択したタスクが削除され、プロジェクトからプロジェクトタスクが削除されるか、またはプロジェクトメンバーへのサブタスクの割り当てが削除される。タスク割り当てエディタ１０２とタスク割り当てウェブページ１０４については別途さらに説明する。
【００１７】
プロジェクトスケジュールエディタ
図２Ａは、本発明の一実施形態による、プロジェクトスケジュールエディタの画面である。プロジェクトスケジュールエディタ２０２を使用してタスク割り当てエディタ１０２（図１Ａ）において作成されたプロジェクトタスクのスケジュールを設定する。プロジェクトタスクはプロジェクトスケジュールエディタ２０２において作成されスケジュールされる。しかし、一実施形態では、プロジェクトスケジュールエディタ２０２を用いてサブタスクをプロジェクトタスクに追加してプロジェクトメンバーに割り当てることはできない。大抵、プロジェクトマネージャは、タスク割り当てエディタ１０２の後にプロジェクトスケジュールエディタ２０２を使用する。マネージャはプロジェクトスケジュールエディタ２０２を使用して、タスク割り当てエディタ１０２で追加された主要なプロジェクトタスクの初期プロジェクトスケジュールを設定できる。プロジェクトマネージャがタスクを追加してスケジューリングをしている間に、プロジェクトタスクのスケジューリングに関する情報はプロジェクトスケジュールエディタ２０２に記憶され、維持される。マネージャがプロジェクトスケジュールエディタセッションを完了すると、プロジェクトタスクはデータベースに送られ、格納され、維持される。
【００１８】
プロジェクトスケジュールセッションが完了して、例えばユーザが図２Ａのプロジェクトスケジュールエディタ２０２の「終了」（Finish）ボタンを選択すると、ウェブサーバにおいて、プロジェクトスケジュールのテーブルを表示するプロジェクトスケジュールウェブページ２０４が自動的に生成される。プロジェクトサブタスクに対する個々のプロジェクトメンバーのスケジュールが作成され、及び／または更新されると、プロジェクトスケジュールエディタ２０２は各プロジェクトタスクスケジュールをすべてのサブタスクスケジュールとともに表示する。プロジェクトスケジュールエディタ２０２は、サブタスクとそれが割り当てられたプロジェクトメンバーとを表示する。エディタセッションを完了するか、図２Ａのプロジェクトスケジュールエディタ２０２の「集約」（Consolidate）を選択することにより、各プロジェクトタスクのすべてのサブタスクスケジュールが自動的に集約または集計され、プロジェクトタスクのスケジュールが更新され、データベースのプロジェクトタスクスケジュールが更新される。
【００１９】
図２Ｂは、本発明の一実施形態によるプロジェクトスケジュールウェブページの一例の画面である。プロジェクトスケジュールウェブページ２０４が生成される。これは、プロジェクトタスクとそのサブタスクのスケジュールを、そのタスクまたはサブタスクが割り当てられたメンバーとともに表示するためである。プロジェクトスケジュールウェブページ２０４は、各プロジェクトタスクとサブタスクの前の（すなわち古くなった）スケジュールをすべて表示し、プロジェクトチームがタスクのスケジュールに生じた変更を見ることができる。プロジェクトスケジュールエディタ２０２により入力され編集されたプロジェクトスケジュール情報は、ウェブブラウザで表示するとウェブページの形式で表示される。プロジェクトタスクのスケジュールとサブタスクのスケジュールはすべて１つ以上の（好ましくは各行が１つのタスクに対応する）データベーステーブルに格納され、プロジェクトスケジュールエディタ２０２とプロジェクトスケジュールウェブページ２０４に表示される。
【００２０】
一実施形態では、プロジェクトスケジュールエディタ２０２（図２Ａ）は様々な動作を実行するボタン（例えば、行を上に追加（Add  Rows  Above）、行を下に追加（Add  Rows  Below）、削除（Delete）、集約（Consolidate）、終了（Finish）など）を含む。「終了」ボタンと「集約」ボタンによりプログラムスケジュールエディタセッションは完了し、プロジェクトタスクスケジュール情報が送信され、データベースに格納・維持される。「集約」ボタンによりメンバーのスケジュールがプロジェクトスケジュールと集約され、データベースのプロジェクトスケジュールが更新される。「集約」ボタンにより、プロジェクトスケジュールエディタがプロジェクトスケジュールウェブページに再表示されるが、タスクスケジュールは更新されている。他のボタンにより、タスクに対応する行のチェックボックスを選択することにより選択されたタスクに対してそれぞれの操作が実行される。その操作はプロジェクトタスクに対してのみ実行でき、メンバーに割り当てられたサブタスクに対しては実行できない。「上に行を追加」ボタンと「下に行を追加」ボタンにより、選択したタスクに対応する行の上か下に行が追加され、マネージャはプロジェクトタスクを追加し、そのタスクのスケジュールを設定することができる。追加される行の数は、「下に行を追加」ボタンの隣にある「行数」メニューを選択することにより設定される。「削除」ボタンにより選択されたプロジェクトタスクが削除される。プロジェクトスケジュールエディタ２０２とプロジェクトスケジュールウェブページ２０４については別途さらに説明する。
【００２１】
メンバースケジュールエディタ
図３Ａは、本発明の一実施形態による、メンバースケジュールエディタの画面である。メンバースケジュールエディタ３０２（個別スケジュールエディタとも呼ぶ）を使用して、個々のプロジェクトメンバーのスケジュールを作成する。一実施形態では、メンバースケジュールエディタ３０２は、メンバースケジュールが前に作成されている場合は、完了していないタスクのみを表示する。メンバーのタスクは、プロジェクトサブタスク及び／またはそのプロジェクトとは関係のないタスクであり得る。メンバーは、メンバースケジュールエディタ３０２を用いてスケジュールを設定し、変更し、タスクの結果を更新できる。メンバーの各タスクは、下のレベルのタスクにブレークダウンしてそのタスクの詳細をスケジュールすることができる。下のレベルのタスクの追加または修正は、上のレベルのタスクのスケジュールに影響を与え得る。それゆえ、「更新」ボタンが選択されると、上のレベルのタスクスケジュールが更新される。メンバーがタスクスケジュールを追加または修正している間に、タスクのスケジューリングに関する情報はメンバースケジュールエディタ３０２に記憶され、維持される。メンバーがメンバースケジュールエディタ３０２セッションを終了すると、タスクスケジュール情報がデータベースに送られ、格納され、維持される。図３Ａは、ドロップダウンリスト（drop  down  list）中の割り当てられたタスクを示している。
【００２２】
プロジェクトスケジュールセッションが完了して、例えばユーザが図３Ａのメンバースケジュールエディタ３０２の「終了」（Finish）ボタンを選択すると、ウェブサーバにおいて、メンバースケジュールのテーブルを表示するメンバースケジュールウェブページ３０４が自動的に生成される。図３Ｂは、本発明の一実施形態による、メンバーのスケジュールウェブページの一例の画面である。メンバースケジュールエディタ３０２により入力され編集された個別スケジュール情報は、ウェブブラウザで表示されるウェブページの形式で表示される。すべてのタスクのスケジュールがテーブル内に表示される。各行は１つのタスクに対応している。メンバースケジュールウェブページ３０４は、各プロジェクトタスクとサブタスクの前の（前の日付が取り消し線で取り消された）スケジュールを表示し、プロジェクトチームがタスクのスケジュールに生じた変更を見ることができるようになっている。
【００２３】
メンバースケジュールエディタ３０２において、ボタン（詳細追加、最後に行を追加、上に行を追加、下に行を追加、削除、更新、終了）はテーブルの近くに配置されている。これらのボタンは様々な操作を実行するために使用される。「終了」ボタンによりメンバースケジュールエディタセッションは完了し、タスクスケジュール情報が送信され、データベースに格納・維持される。「更新」ボタンと「最後に行を追加」ボタンを除き、他のボタンはタスクに対応する行のチェックボックスを選択することにより選択されたタスクに対して操作を実行する。「詳細追加」ボタンによりタスクの下に行が追加され、メンバーはそのタスクの詳細を与えるサブタスク（１レベル下のタスク）をそのタスクに追加できる。「上に行を追加」ボタンと「下に行を追加」ボタンにより、選択したタスクに対応する行の上か下に行が追加され、メンバーは同一レベルのスケジュールにタスクを追加できる。追加される行の数は、「下に行を追加」ボタンの隣にある「行数」メニューを選択することにより設定される。「削除」ボタンにより選択されたタスクが削除される。「削除」ボタンによりタスクと、そのタスクに関連する下のレベルのすべてのタスクもそのメンバーのスケジュールから削除される。「最後に行を追加」ボタンにより、スケジュールの最後に１つ以上の最高レベルの行が追加される。追加される行数は「行数」メニュー選択で設定される。「更新」ボタンにより、上のレベルのすべてのタスクスケジュールが下のレベルのタスクスケジュールで更新され、メンバースケジュールエディタ３０２の表示が更新されて新しいデータが表示される。メンバースケジュールエディタ３０２とメンバースケジュールウェブページ３０４については別途さらに説明する。
【００２４】
タスクのスケジュール情報は予定の開始日と終了日、及び実際の開始日と終了日を含んでいる。タスクの予定日と実際日は、メンバースケジュールエディタ３０２において設定と修正ができる。しかし、タスクが最初にスケジュールされた時は、プロジェクトスケジュールエディタ２０２（図２Ａ）においてプロジェクトタスクの予定日だけが設定可能である。集約される時に、メンバーのプロジェクトサブタスクの予定日と実際日のメンバーのスケジュール情報に基づき、予定日が自動的に更新され、実際日は自動的に設定される。プロジェクトマネージャがプロジェクトエディタセッションを完了するか、プロジェクトスケジュールエディタ２０２の「集約」ボタンにより、データベース中の情報を使用してプロジェクトタスクの実際日を更新する。
【００２５】
図４は、本発明の一実施形態による、プロジェクトメンバーがエディタ（タスク割り当て、プロジェクトスケジュール、メンバースケジュール）にログインするログインウェブページの画面である。メンバーはプロジェクト番号、メンバー名を入力し、適当なエディタを選択し、そのエディタにアクセスするための情報を送信する。プロジェクトスケジュールマネージメントシステムは、その入力を確認し、そのメンバーがそのプロジェクトの正当なメンバーであり選択されたエディタに対するアクセス権を有するか判断する。判断の結果が否定的であれば、そのメンバーはエディタへのアクセスを拒絶される。セキュリティを一層たかめるため、ログインウェブページとエディタをセキュアＨＴＴＰ（例えばＨＴＴＰＳ）とし、ログイン前にログインページでパスワードを要求してもよい。
【００２６】
プロジェクトスケジュールマネージメントシステム
図５は、本発明の一実施形態を実施する動作環境を示す図である。図示した動作環境はここで説明するプロジェクトスケジュールマネージメントシステムの全体的なシステム構成の例である。動作環境例は、複数のワークステーション、１つ以上のウェブサーバ、１つ以上の関連データベースを有する。これらはすべてソフトウェア開発ネットワークに直接的または間接的に通信のために接続されている。
【００２７】
一般的に、ウェブサーバ５０７と５３０は、エディタの表示とマネージメントの資源を有する。ウェブサーバ５０７、５３０は、それぞれデータベース５０６、５３６とインターラクトし、タスク割り当て及びタスクスケジュール情報（例えばデータ５０８、５３８）を格納、維持、管理する。２つのウェブサーバと２つのデータベースは、一例として示したものである。ここで説明しているプロジェクトスケジュールマネージメントシステムで使用されるウェブサーバとデータベースの数は、実施形態毎に変わり得る。コンピュータワークステーション５０１、５０２上のウェブブラウザは、ウェブサーバ５０７、５３０上の資源にアクセスしてエディタを表示する。プロジェクトメンバーまたはマネージャは、ネットワーク５００（ＬＡＮまたはＷＡＮ）を介してエディタにアクセスできる。プロジェクトマネージメントシステムを使用して組織内の異なるレベル（例えば、プロジェクトレベル、部課レベル、部門レベル、組織レベル）におけるプロジェクトを管理できる。
【００２８】
ワークステーション５０１、５０２は、図５８のコンピュータシステム５８００により例示されるような構成の一般的なコンピュータシステムであり、１つ以上のブラウザを有し、例えば製品開発プロジェクトに関連するタスクを完了するためにエンジニア／開発者により利用される。かかるタスクの例としては、プロジェクトの開始、タスクスケジュールの準備と維持、ソフトウェアアーキテクチャの設計、仕様の決定、ソフトウェアコードの作成、ソフトウェアコードの実装とテスト、様々なタスク製品の検査等が含まれるが、これらに限定はされない。また、プロジェクトマネージャは、プロジェクトの進捗をレビューして管理するための情報にアクセスするためにワークステーション５０１、５０２を利用する。開発者とマネージャは、ネットワーク５００を介して、接続された他の構成要素（例えば、ウェブサーバ５０７、５３０、データベース５０６、５３６）と通信し、さらにアクセスポイント５２４を介して、ハンドヘルド装置５２０及びラップトップ５２２と通信する。
【００２９】
ウェブサーバ５０７、５３０は、一般的なウェブサーバであり、コンピュータハードウェアとコンピュータソフトウェアの組み合わせである。適当なプロトコル（ＨＴＴＰ（Hypertext  Transfer  Protocol）やＴＣＰ／ＩＰ（Transmission  Control  Protocol  /  Internet  Protocol）等）を用いて、ウェブページを形成するファイル（ＨＴＭＬ（Hypertext  Markup  Language）ファイルやＸＭＬ（Extensible  Markup  Language）ファイル等）をユーザ（ワークステーション５０１、５０２の開発者やマネージャ等）に提供する。一般的に、開発プロジェクトライフサイクル中に交換され管理される情報のほとんどは、ネットワーク５００を介してウェブサーバ５０７、５３０により提供される。さらにまた、ここに説明した方法の態様は、ウェブサーバ５０７、５３０に実装され実行され得るが、本発明の実施はかかる実施形態に限定はされない。この方法は、ワークステーション５０１、５０２や図５８に示した同様の構成のコンピュータシステム等の処理システムでも実施することができる。
【００３０】
データベース５０８、５３８は、開発プロジェクトに関するデータ５０８、５３８を格納する一般的なデータベースを示し、ワークステーション５０１、５０２にいる権限を有する個人に、ネットワーク５００を介して送信されたクエリーによる情報へのアクセスをさせる。データベース５０７、５３０に記憶されたデータのタイプには事実上制限はない。例としては、プロジェクト開始フォーム、メンバー及びプロジェクトタスクスケジュール、仕様書、ソフトウェアコード、検査レポート、ウェブページファイル、文書ディレクトリとインデックス等があるが、これに限定はされない。
【００３１】
ネットワーク５００は、ワークステーション５０１、５０２、ウェブサーバ５０７、５３０、及びデータベース５０８、５３８等の接続された様々な構成要素間の情報の交換を容易にする、パケット交換ネットワーク等の従来のネットワークである。ネットワーク５００は、従来のイーサネット（登録商標）、ファーストイーサネット（登録商標）、トークンリング、ワイヤレスＬＡＮ（米国電気電子技術者協会ＩＥＥＥのワーキンググループにより開発され制定された８０２．１１ａと８０２．１１ｂ等）等のローカルエリアネットワークであり、企業内で実施することもできる。また、ネットワーク５００はバーチャルプライベートネットワーク（ＶＰＮ）を介して遠隔のユーザとの通信を容易にするインターネット等のワイドエリアネットワーク（ＷＡＮ）であってもよいし、ネットワーク５００はＬＡＮとＷＡＮの組み合わせであってもよい。また、ネットワーク５００は、電線、ケーブル、光、またはワイヤレス接続等いろいろな異なる媒体を用いて形成できる。
【００３２】
図６は、本発明の一実施形態を実施する、システムのソフトウェア構成要素も含む通信アーキテクチャを示す図である。クライアントプロセッサ６０２はウェブブラウザに対応し、サーバプロセッサ６０４はウェブサーバ５０７や５３０（図５）等のウェブサーバに対応する。プロジェクトメンバーやマネージャはユーザインターフェイス６０１によりクライアントプロセッサ６０２とインターラクトする。クライアントプロセッサ６０２は、ログインウェブページ（図４）と様々なエディタウェブページ（図１Ａ、２Ａ、３Ａ）を管理・維持する。クライアントプロセッサ６０２は、これらのウェブページで生じるすべてのイベントを処理する。一実施形態では、クライアントプロセッサ６０２はＨＴＴＰプロトコルによりサーバプロセッサ６０４とインターラクトする。
【００３３】
サーバプロセッサ６０４は、クライアントプロセッサ６０２に情報を供給して、ログインウェブページ（図４）とエディタウェブページ（図１Ａ、２Ａ、３Ａ）を表示する。サーバプロセッサ６０４は、クライアントプロセッサ６０２がログインウェブページとエディタウェブページの情報を送信すると、その情報を処理する。データベース６０６は、プロジェクトスケジューリング情報とタスクスケジューリング情報のリポジトリである。サーバプロセッサ６０４は、データベース６０６とインターラクトして、そのデータベース中の情報を取得、追加、または更新する。一実施形態では、サーバプロセッサ６０４はデータベース６０６とインターラクトする。しかし、他のデータベースとプロトコルを使用することもできる。
【００３４】
クライアントプロセッサ・サーバプロセッサ・インターフェイス
図７は、本発明の一実施形態によるシステムのクライアントプロセッサとサーバプロセッサ間のインターフェイスを示す図である。ＨＴＴＰ  ＧＥＴリクエストにより、クライアントプロセッサ６０２は、ホームウェブページ、ログインウェブページ（図４）、プロジェクトスケジュールエディタウェブページ（図２Ａ）、メンバースケジュールウェブページ（図３Ａ）、及び割り当てウェブページ（図１Ａ）を取得する。ＨＴＴＰ  ＰＯＳＴリクエストにより、クライアントプロセッサ６０２は、ログインウェブページ（図４）とエディタウェブページ（図１Ａ、２Ａ、３Ａ）に入力された情報をサーバプロセッサ６０４に処理のため送信する。適用できるＨＴＴＰ  ＧＥＴリクエストとＨＴＴＰ  ＰＯＳＴリクエストは、後で詳細に説明する。
【００３５】
ＨＴＴＰ  ＧＥＴプロジェクト／部課／部門ホームページリクエストにより、サーバプロセッサ６０４は、部課または部門に関連するプロジェクトホームページをクライアントプロセッサ６０２に返す。ホームページは、スケジュール、タスク割り当て、及びエディタへのログインのためのウェブページにリンクし、見るためのリンク（ハイパーリンク等）を含む。
【００３６】
ＨＴＴＰ  ＧＥＴ  current  project  directory/schedule.htmリクエストにより、サーバプロセッサ６０４はクライアントプロセッサ６０２にカレントプロジェクトのプロジェクトスケジュールを含むウェブページを返す。そのウェブページの例は図２Ｂに示したものである。
【００３７】
ＨＴＴＰ  ＧＥＴ  current  project  directory/assignment.htmリクエストにより、サーバプロセッサ６０４はクライアントプロセッサ６０２にカレントプロジェクトのプロジェクトタスクのタスク割り当てを含むウェブページを返す。そのウェブページの例は図１Ｂに示したものである。
【００３８】
ＨＴＴＰ  ＧＥＴ  project  menber  directry/schedule.htmリクエストにより、サーバプロセッサ６０４はクライアントプロセッサ６０２にカレントプロジェクトのプロジェクトメンバーのスケジュールを含むウェブページを返す。そのウェブページの例は図３Ｂに示したものである。
【００３９】
ＨＴＴＰ  ＧＥＴ  login.htmリクエストにより、サーバプロセッサ６０４はクライアントプロセッサ６０２に、プロジェクトメンバーやマネージャにエディタ（プロジェクトスケジュール、メンバースケジュール、タスク割り当て）の１つにログインさせるウェブページを返す。メンバーまたはマネージャは、プロジェクトに関する情報、メンバー名、及びエディタのセッションタイプを入力する。図４はエディタの１つにログインするためのウェブページを示している。
【００４０】
ＨＴＴＰ  ＧＥＴ  TaskAssignEditor.htmにより、サーバプロセッサ６０４はクライアントプロセッサ６０２に、タスク割り当てエディタのウェブページを返す。このウェブページは、カレントプロジェクトのプロジェクトメンバーにタスクを割り当てるために使用される。プロジェクトマネージャは、サーバプロセッサ６０４がタスク割り当てウェブページを返す前に、タスクをプロジェクトメンバーに割り当てるためのアクセス特権を必要とする。この特権は、マネージャがログインウェブページ（図４）で情報を送信した時に確認される。一実施形態では、TaskAssigneEditor.htmは、タスク割り当てエディタにおいてイベントを表示、管理、処理するためのＪａｖａ（登録商標）スクリプトを含んでいる。一実施形態では、「TaskAssignEditor.htm」はＰＨＰスクリプトを含み、データベース５０６、５３６から情報を取得し、それをＪａｖａ（登録商標）スクリプトに送る。その情報はタスク割り当てエディタに表示される。その例は図１Ａに示したものである。
【００４１】
「ＨＴＴＰ  ＧＥＴ  PorjScheduleEditor.htm」により、サーバプロセッサ６０４はクライアントプロセッサ６０２に、プロジェクトスケジュールエディタのウェブページを返す。このウェブページは、カレントプロジェクトのプロジェクトメンバーの生成または更新に使用される。プロジェクトマネージャは、サーバプロセッサ６０４がプロジェクトスケジュールエディタを返す前に、プロジェクトスケジュールを生成するアクセス特権を有する必要がある。この特権は、マネージャがログインウェブページ（図４）で情報を送信した時に確認される。一実施形態では、「ProjScheduleEditor.htm」は、プロジェクトスケジュールエディタのイベントを表示、管理、処理するためのＪａｖａ（登録商標）スクリプトを含んでいる。一実施形態では、「ProjScheduleEditor.htm」はＰＨＰスクリプトを含み、データベース５０６、５３６から情報を取得し、それをＪａｖａ（登録商標）スクリプトに送る。その情報はプロジェクトスケジュールエディタに表示される。その例は図２Ａに示したものである。
【００４２】
「ＨＴＴＰ  ＧＥＴ  IndivScheduleEditor.htm」リクエストにより、サーバプロセッサ６０４はクライアントプロセッサ６０２に、メンバースケジュールエディタのウェブページを返す。このウェブページは、カレントプロジェクトのプロジェクトメンバーのスケジュールの生成または更新に使用される。一実施形態では、ケジュールエディタは、プロジェクトメンバーのスケジュールが事前に作成されている場合は、完了していないタスクのみを表示する。プロジェクトメンバーは、サーバプロセッサ６０４がこのウェブページを返す前に、スケジュールを生成または編集する特権を有している必要がある。この特権は、メンバーがログインウェブページ（図４）で情報を送信した時に確認される。一実施形態では、「IndivScheduleEditor.htm」は、プロジェクトメンバースケジュールエディタのイベントを表示、管理、処理するためのＪａｖａ（登録商標）スクリプトを含んでいる。一実施形態では、「IndivScheduleEditor.htm」はＰＨＰスクリプトを含み、データベース５０６、５３６から情報を取得し、それをＪａｖａ（登録商標）スクリプトに送る。その情報はメンバースケジュールエディタに表示される。その例は図３Ａに示したものである。
【００４３】
「ＨＴＴＰ  ＰＯＳＴ  login.php」インターフェイスにより、クライアントプロセッサ６０２はエディタ（プロジェクトスケジュール、メンバースケジュール、タスク割り当て）にアクセスし表示することができる。このインターフェイスは、login.htmに対応するウェブページで「送信」ボタンが選択されるとコールされる。login.htmで入力された情報は、サーバプロセッサ６０４のlogin.phpに送られる。login.phpはその情報を使用して、プロジェクトのメンバーを認証し、そのメンバーが要求したエディタに対するアクセス特権を有するか判断する。その情報が無効であり、そのメンバーがエディタに対するアクセス特権を有さない場合、login.phpはプロジェクトメンバーがその要求したエディタにアクセスできないとのメッセージをクライアントプロセッサ６０２に返す。そうでなければ、login.phpはエディタの１つに対応するウェブページを返す。すなわち、ウェブブラウザは要求されたエディタに対応するウェブページにリダイレクト（redirect）される。
【００４４】
HTTP  POST  PostTaskAssign.phpにより、クライアントプロセッサ６０２はタスク割り当てエディタ（図１Ａ）に入力されたすべての情報をサーバプロセッサ６０４に送信する。このインターフェイスは、TaskAssignEditor.htmに対応するウェブページで「終了」ボタンが選択されるとコールされる。TaskAssignEditor.htmのエディタで入力された情報は、サーバプロセッサ６０４のPostTaskAssign.phpに送られる。PostTaskAssign.phpは、適当なデータベース５０６、５３６のタスクにタスク割り当て情報を追加し、更新する。入力された情報が無効であったり、プロセスが適当なデータベースにアクセスしたり問い合わせたりできなければ、適当なメッセージが表示される。PostTaskAssign.phpはタスク割り当てウェブページを生成する。その例は図１Ｂに示したものである。
【００４５】
HTTP  POST  PostProjSchedule.phpにより、クライアントプロセッサ６０２はプロジェクトスケジュールエディタ（図２Ａ）に入力されたすべての情報をサーバプロセッサ６０４に送信する。このインターフェイスは、ProjScheduleEditor.htmに対応するウェブページで「終了」ボタンが選択されるとコールされる。ProjScheduleEditor.htmのエディタで入力された情報は、サーバプロセッサ６０４のPostProjSchedule.phpに送られる。PostProjeSchedule.phpは、適当なデータベース５０６、５３６にタスクスケジュール情報を追加し、更新する。入力された情報が無効であったり、プロセスが適当なデータベースにアクセスしたり問い合わせたりできなければ、適当なメッセージが表示される。PostProjSchedule.phpはプロジェクトスケジュールウェブページを生成する。その例は図２Ｂに示したものである。
【００４６】
HTTP  POST  PostIndivSchedule.phpにより、クライアントプロセッサ６０２はプロジェクトメンバーズスケジュールエディタ（図３Ａ）に入力されたすべての情報をサーバプロセッサ６０４に送信する。このインターフェイスは、IndivScheduleEditor.htmに対応するウェブページで「終了」ボタンが選択されるとコールされる。IndivScheduleEditor.htmのエディタで入力された情報は、サーバプロセッサ６０４のPostIndivSchedule.phpに送られる。PostIndivSchedule.phpは、適当なデータベース５０６、５３６にタスクスケジュール情報を追加し、更新する。入力された情報が無効であったり、プロセスがデータベースにアクセスしたり問い合わせたりできなければ、適当なメッセージが表示される。PostIndivSchedule.phpはメンバーズスケジュール（member’s  schedule）ウェブページを生成する。その例は図３Ｂに示したものである。
【００４７】
一実施形態では、様々なエディタ（TaskAssignEditor.htm、ProjScheduleEditor.htm、及びIndivScheduleEditor.htm）のウェブページには、Ｊａｖａ（登録商標）スクリプトまたはＰＨＰスクリプトを含むファイルが含まれる。ここで説明した様々な機能を実行するスクリプト言語は、実施形態毎に変わり得る。ウェブブラウザ（例えばクライアントプロセッサ６０２）がエディタのウェブページをリクエストすると、エディタウェブページとＪａｖａ（登録商標）スクリプトに対応するすべてのファイルがそのウェブブラウザに送られる。ウェブブラウザがそのＪａｖａ（登録商標）スクリプトを処理する。しかし、ＰＨＰスクリプトのファイルはウェブブラウザには送られない。ＰＨＰスクリプトは図５のウェブサーバ５０７、５３０等のウェブサーバで処理され、ＰＨＰスクリプトがウェブページに書いたもののみがウェブブラウザに送られる。
【００４８】
図８は、本発明の一実施形態によるログインウェブページを用いてプロジェクトメンバーまたはプロジェクトマネージャがエディタにログインするシーケンス図である。この図は、エディタがメンバーまたはマネージャに表示される前にシステムの構成要素間で送受される情報を示している。ログインウェブページ（図４）上で生じるすべてのイベントの処理は、クライアントプロセッサ６０２で行われる。ログインページに入力された情報の確認とメンバーのエディタに対するアクセス特権の確認は、サーバプロセッサ６０４で行われる。サーバプロセッサ６０４は、アクセス特権の確認をするために適当なデータベース５０６または５３６から情報を取得する。プロジェクトメンバーまたはマネージャは、エディタに入る前にこのプロセスを実行する。そのシーケンスは図９乃至図１１に示す。
【００４９】
図９は、本発明の一実施形態による、プロジェクトマネージャとタスク割り当てエディタとのセッションを示すシーケンス図である。クライアントプロセッサ６０２がTaskAssignEditor.htmをリクエストすると、ファイルTaskAssignEditor.htmとそれに含まれるＪａｖａ（登録商標）スクリプトを含むファイル（.js拡張子で示した）がサーバプロセッサ６０４からクライアントプロセッサ６０２に送られる。それに含まれるＰＨＰスクリプト（拡張子.phpで示した）を含むファイルは、サーバプロセッサ６０４で処理される。ＰＨＰスクリプトは、適当なデータベース５０６または５３６からタスク割り当て情報を取得し、その情報をクライアントプロセッサ６０２に送るため、TaskAssignEditor.htmのウェブページにＪａｖａ（登録商標）スクリプトを書き込む。クライアントプロセッサ６０２は、対応するタスク割り当てエディタを表示するために、受信するすべてのファイルのＪａｖａ（登録商標）スクリプトを処理する。プロジェクトマネージャとタスク割り当てエディタ間のすべてのインターラクションは、タスク割り当てエディタを表示、維持、更新するＪａｖａ（登録商標）スクリプトにより処理される。プロジェクトマネージャがセッションを終了（例えば「終了」を選択）すると、タスク割り当てエディタ中のタスク割り当て情報はすべてクライアントプロセッサ６０２からサーバプロセッサ６０４にインターフェイスPostTaskAssign.phpを介して送られる。サーバプロセッサ６０４は、適当なデータベースに情報を追加または更新することにより、その情報を処理する。データベース中のタスク割り当て情報を用いて、サーバプロセッサ６０４はプロジェクトタスク割り当てのウェブページを自動的に生成する。このウェブページの例は図１Ｂに示したものである。
【００５０】
図１０は、本発明の一実施形態による、プロジェクトマネージャとプロジェクトスケジュールエディタとのセッションを示すシーケンス図である。クライアントプロセッサ６０２がProjScheduleEditor.htmを要求すると、ファイルProjScheduleEditor.htmとそれに含まれるＪａｖａ（登録商標）スクリプトを含むファイルがサーバプロセッサ６０４からクライアントプロセッサ６０２に送られる。それに含まれるＰＨＰスクリプトを含むファイルは、サーバプロセッサ６０４で処理される。ＰＨＰスクリプトは、適当なデータベースからプロジェクトタスクスケジュール情報を取得し、その情報をクライアントプロセッサ６０２に送るため、ProjScheduleEditor.htmのウェブページにＪａｖａ（登録商標）スクリプトを書き込む。クライアントプロセッサ６０２は、プロジェクトスケジュールエディタを表示するために、受信するすべてのファイルのＪａｖａ（登録商標）スクリプトを処理する。プロジェクトマネージャとプロジェクトスケジュールエディタ間のすべてのインターラクションは、エディタを管理、維持、更新するために、Ｊａｖａ（登録商標）スクリプトにより処理される。マネージャがセッションを終了（例えば「終了」を選択）すると、プロジェクトスケジュールエディタ中のプロジェクトタスクスケジュール情報はすべてクライアントプロセッサ６０２からサーバプロセッサ６０４にインターフェイスPostProjSchedule.phpを介して送られる。サーバプロセッサ６０４は、適当なデータベースに情報を追加または更新することにより、その情報を処理する。サーバプロセッサ６０４はプロジェクトメンバーのスケジュールをプロジェクトスケジュールと自動的集計して、データベースにプロジェクトスケジュールを追加または更新する。データベース中のプロジェクトタスクスケジュール情報を用いて、サーバプロセッサ６０４はプロジェクトスケジュールのウェブページを自動的に生成する。このウェブページの例は図２Ｂに示したものである。
【００５１】
「集約（Consolidate）」ボタンの選択に等々したシステムの振る舞いは、「終了（Finish）」ボタンの選択によるものと同じである。両ボタンにより、（ａ）プロジェクトスケジュールエディタからの情報を用いた適当なデータベースの追加・更新、（ｂ）プロジェクトスケジュールを用いたメンバーの個別スケジュールの集計、（ｃ）データベース中のプロジェクトスケジュールの追加・更新、及び（ｄ）プロジェクトスケジュールウェブページの生成が行われる。さらに、「集約」により、ProjScheduleEditor.htmを再度要求することにより、プロジェクトスケジュールエディタが再表示されるが、プロジェクトスケジュールが更新されている。
【００５２】
図１１は、本発明の一実施形態による、プロジェクトマネージャとプロジェクトメンバースケジュールエディタ（すなわち、メンバースケジュールエディタ）とのセッションを示すシーケンス図である。クライアントプロセッサ６０２がIndivScheduleEditor.htmを要求すると、ファイルIndivScheduleEditor.htmとそれに含まれるＪａｖａ（登録商標）スクリプトを含むファイルがサーバプロセッサ６０４からクライアントプロセッサ６０２に送られる。それに含まれるＰＨＰスクリプトを含むファイルは、サーバプロセッサ６０４で処理される。ＰＨＰスクリプトは、適当なデータベースから個別タスクスケジュール情報を取得し、その情報をクライアントプロセッサ６０２に送るため、IndivScheduleEditor.htmのウェブページにＪａｖａ（登録商標）スクリプトを書き込む。クライアントプロセッサ６０２は、メンバースケジュールエディタを表示するために、受信するすべてのファイルのＪａｖａ（登録商標）スクリプトを処理する。プロジェクトメンバーとメンバースケジュールエディタ間のインターラクションは、メンバースケジュールエディタを管理、維持、更新するために、Ｊａｖａ（登録商標）スクリプトにより処理される。メンバーがセッションを終了（例えば「終了」を選択）すると、メンバースケジュールエディタ中のメンバータスクスケジュール情報はクライアントプロセッサ６０２からサーバプロセッサ６０４にインターフェイスPostIndivSchedule.phpを介して送られる。サーバプロセッサ６０４は、適当なデータベースに情報を追加または更新することにより、その情報を処理する。データベース中のメンバータスクスケジュール情報を用いて、サーバプロセッサ６０４はメンバースケジュールのウェブページを自動的に生成する。このウェブページの例は図３Ｂに示したものである。
【００５３】
データベーススキーマ
図１２は、本発明の一実施形態による、プロジェクトとプロジェクトメンバーのタスク割り当てとタスクスケジュール情報とを記憶し管理するために使用するデータベーステーブルのスキーマを示す図である。これらのテーブルはタスク割り当て、プロジェクトタスクのスケジュール、及び各プロジェクトメンバーのスケジュールに関する情報を有している。これらのテーブルは、タスク割り当て、プロジェクトスケジュール、及びメンバーのスケジュールがすべて関係づけられるように組織化されている。
【００５４】
TaskAssignmentテーブル１２０２は、プロジェクトタスクと、プロジェクトの対応するサブタスクとを格納している。TopLevelProjectTaskテーブル１２０４は、TaskAssignmentテーブル１２０２中のプロジェクトタスクのスケジュールを格納している。Level1MenberTaskテーブル１２０６は、メンバータスクのスケジュールを格納している。そのメンバータスクはTaskAssignmentテーブル１２０２で割り当てられ、TopLevelProjectTaskテーブル１２０４中の対応するプロジェクトタスクのスケジュールにリンクされている。テーブル間のこれらのリンクにより、メンバースケジュールのプロジェクトスケジュールとの自動集計が可能となる。Level1MenberTaskテーブル１２０６は、いずれのプロジェクトタスクとも関係付けられていないメンバータスクのスケジュールも格納している。LevelXMenberTaskテーブル（Xは１、２、３、または４）とMemberTaskテーブル１２０８は、メンバーの様々なレベルのタスク間のリンクを格納・管理する。下のレベルのタスクは、上のレベルのタスクのより詳細なタスクである。これらのテーブルの組織によりメンバーのスケジュールを維持する。ProjectTeamテーブル１２１０はプロジェクトメンバーに関する情報を含む。プロジェクトメンバーのプロジェクトメンバー情報は、（ａ）様々なエディタへのアクセス特権を決定する役割（role）、（ｂ）メンバースケジュールウェブページが格納される記憶場所を決定するディレクトリ、（ｃ）いろいろなレベルにおけるメンバータスクの識別子を決定するために使用されるＩＤが含まれる。
【００５５】
ログインプロセスでは、ProjectTeamテーブル１２１０中の情報を使用して、エディタを表示する前に要求されたエディタへのアクセス特権があるか判断する。タスク割り当てエディタは、DefaultTasksテーブル１２１２、TaskAssignmentテーブル１２０２、及びMemberTasksテーブル１２０８中の情報を使用及び／または更新する。プロジェクトスケジュールエディタは、DefaultTasksテーブル１２１２、TaskAssignmentテーブル１２０２、TopLevelProjectTaskテーブル１２０４、MemberTasksテーブル１２０８、Level1MenberTaskテーブル１２０６中の情報を使用及び／または更新する。メンバースケジュールエディタは、ProjectTeamテーブル１２１０、TaskAssignmentテーブル１２０２、MemberTasksテーブル１２０８、及びLevelXMenberTaskテーブル中の情報を使用及び／または更新する。
【００５６】
図１２に示し、ここで説明するプロジェクトスケジュールマネージメントシステムの一実施形態で使用される様々なテーブルの説明は、以下の通りである。しかし、図１２を参照して説明したテーブルの数と構造は、実施形態毎に変わり得る。
【００５７】
DefaultTasksテーブル１２１２−このテーブルは、すべてのプロジェクトのタスクのタスク名を含んでいる。ソフトウェア開発プロジェクトの場合には、デフォルトタスクの例としては、プロジェクトプラン、要件、トップレベル設計等がある。
【００５８】
ProjectTeamテーブル１２１０−このテーブルは、プロジェクトのプロジェクトメンバーに関する情報を含んでいる。sMemberLabelは、プロジェクトスケジュールを表示するときにプロジェクトメンバーを識別するために使用される２乃至４文字のストリングである。プロジェクトスケジュールは、図１Ａと図１Ｂに示したように、プロジェクトタスクとそれに関連するメンバータスクを示している。一実施形態では、プロジェクトメンバーのイニシャルがsMemberLabelに使用される。nMemberRoleはプロジェクトメンバーの役割を示すために使用される番号である。例えば、プロジェクトマネージャ＝１、プロジェクトリーダ＝２、プロジェクトアドミニストレータ＝３、プロジェクトメンバー＝４である。役割は誰がエディタにアクセスするかを示している。例えば、役割番号が１であるプロジェクトメンバーはすべてのエディタにアクセスできる。しかし、役割番号が４であるプロジェクトメンバーは、そのメンバーのスケジュールにのみアクセスできる。本システムは、どの役割番号がそれぞれのエディタにアクセスできるか判断するように構成し得る。sMemberDirectoryは、メンバースケジュールのＨＴＭＬファイルがどこに格納されるか判断し、プロジェクトチームがそのメンバーのスケジュールを見ることができるようにするために使用される。
【００５９】
nMemberTaskIDは、プロジェクトメンバーに割り当てられた番号であり、そのメンバーのタスクのＩＤを決定するために使用される。一実施形態では、nMemberTaskIDをタスクの開始ＩＤとして使用する。プロジェクトチームの大きさによって、ＩＤは、チームが小さい場合にはモジュロ１０（１、２、．．．、９）とし、チームが大きい場合にはモジュロ１００（１、２、．．．、９９）としてもよい。タスクＩＤはモジュロの増分である。例えば、プロジェクトメンバー「test１」のnMemberTaskIDが１である場合、test１のタスクのタスクＩＤは１１、２１、３１等（大きなチームの場合、１０１、２０１、３０１）である。タスクＩＤは、タスク名が同一であっても、プロジェクトメンバーのタスクを一意的に特定する。タスクＩＤもすべてのレベルのタスクを一意的に特定する。nLevelXMaxTaskIDは、プロジェクトメンバーのレベルが異なるタスクに対して、今まで使用されている最高のタスクＩＤを維持するために使用される番号である。これらの数字は、そのメンバーのスケジュールエディタセッションに追加されるタスクのタスクＩＤを決定するために使用される開始ＩＤになる。これらの値は各エディタセッション後、読み出され更新される。nLevelXMaxTaskIDの値を除いて、他のエントリーの値はプロジェクトを始める前に設定しなければならない。
【００６０】
TaskAssignmentテーブル１２０２−このテーブルは、プロジェクトのプロジェクトメンバーに割り当てられたプロジェクトタスクとそのサブタスクに関する情報を含む。sTaskNameはタスク名に使用され、ProjectTaskIDはタスクに関連するＩＤである。プロジェクト開始タスクＩＤは０であり、そのタスクのＩＤはモジュロ（小さいチームの場合、１０、２０、３０、．．．）を加えたものである。sLevel1TaskNameはプロジェクトタスクと関連するサブタスク（メンバータスク）の名前に使用され、nLevel1TaskIDはサブタスクと関連するＩＤに使用される。sMemberLabelは、サブタスクを割り当てたプロジェクトメンバーを特定するために使用される。bIsObsoletedを使用して、タスクがプロジェクトから削除されたかどうか示す。タスクがスケジュールから削除されても、そのタスクに関する情報はデータベース内に残される。sTaskName、nProjectTaskID、sLevel1TaskName、及びsMemberLabelの値は、タスク割り当てエディタセッションによりTaskAssignmentテーブル１２０２に追加できる。プロジェクトスケジュールエディタセッションは、sTaskNameとnProjectTaskIDの値を加える。メンバースケジュールエディタセッションのみがnLevel1TaskIDの値を加え得る。
【００６１】
TopLevelProjectTaskテーブル１２０４−このテーブルはプロジェクトタスクのスケジューリングに関する情報を含む。sTaskNameはタスク名に使用され、nProjectTaskIDはそのタスクに関連するＩＤに使用される。planStartとplanEndはタスクの開始及び完了の予定日に使用される。actualStartとactualEndは、タスクが開始及び完了した実際の日に使用される。setDateは、予定日が設定または修正された日に使用される。nScheduleRevNumberは、タスクスケジュールの改訂番号に使用される。プロジェクトタスクの最終スケジュールは、最高の改訂番号に対応する。プロジェクトタスクのすべての改訂は、プロジェクトタスクのスケジュールの変更を追跡するために、TopLevelProjectTaskテーブル１２０４に保存されている。改訂番号は、異なる日にプロジェクトスケジュールエディタで予定日が変更された時にのみ、インクリメントされる。TopLevelProjectTaskテーブル１２０４のnProjectTaskID、sTaskName、dates、nScheduleRevNumberのすべての値は、プロジェクトスケジュールエディタセッションにより、追加または更新される。
【００６２】
MemberTasksテーブル１２０８−このテーブルはすべてのプロジェクトメンバーのすべてのタスク（すべてのレベルのタスク）に関する情報を含んでいる。タスクＩＤとnLevelXTaskIDは、プロジェクトの各メンバー（sMemberName）と関連している。これらは、すべてのタスクと他のタスクとの関係を特定する。TaskAssignmentテーブルについて、bIsObsoletedは、タスクがプロジェクトメンバーのスケジュールから削除されたかどうかを示す。bIsCompletedはタスクが完了したかどうか示す。nLevelXTaskIDは、MemberTasksテーブル１２０８に追加されるタスクについて使用され、新しいタスクがメンバーのスケジュールエディタセッションに追加された時に、ProjectTeamテーブル１２１０のnLevelXMaxTaskIDから決定される。テーブル中の値は、３つのエディタセッションのいずれの結果によっても更新または修正（bIsObsoletedまたはbIsCompleted）できる。MemberTasksテーブル１２０８は、下のレベルのタスクスケジュールと上のレベルのタスクスケジュールとの間のリンクを提供する点で重要である。
【００６３】
LevelXMemberTaskテーブル（例えば、Level1MenberTaskテーブル１２０６、Level2MenberTaskテーブル１２１４、Level3MemberTaskテーブル１２１６）−このテーブルはメンバータスクのスケジューリングに関する情報を含む。sLevelXTaskNameはタスク名に使用され、nLevelXTaskIDはそのタスクに関連するＩＤに使用される。テーブルに追加されるタスクのnLevelXTaskIDは、新しいタスクがメンバーのスケジュールエディタセッションに追加された時に、ProjectTeamテーブル１２１０のnLevelXMaxTaskIDから決定される。planStartとplanEndはタスクの開始及び完了の予定日に使用される。actualStartとactualEndは、タスクが開始及び完了した実際の日に使用される。setDateは、予定日が設定または修正された日に使用される。nScheduleRevNumberは、タスクスケジュールの改訂番号に使用される。メンバータスクの最終スケジュールは、最高の改訂番号に対応する。メンバータスクのすべての改訂は、メンバータスクのスケジュールの変更を追跡するために、テーブルに保存されている。一実施形態では、メンバースケジュールエディタにおいて予定日が変更されたときにのみ改訂番号が増加する。各LevelXMemberTaskテーブルは、上のレベルのタスクのタスクＩＤを含んでいる（親タスクがプロジェクトタスクであるタスクか、親タスクがないタスクであるレベル１を除く）。これはタスクに親タスク及び子タスクへのリンクを提供する。親タスクＩＤ、sLevelXTaskName、nLevelXTaskID、dates、nScheduleRevNumberのすべての値は、メンバースケジュールエディタセッションによりテーブルに追加されるか、更新される。Level1MenberTaskテーブル１２０６のみがTaskAssignmentテーブル１２０２へのリンクを提供するsMemberLabelを含む。
【００６４】
データベースはレベル４までのレベルのみを示した。しかし、本データベースを、タスクスケジュールをより詳細に低いレベルを含むように修正することはできる。
【００６５】
プロジェクトスケジュールの設定
図１３は、本発明の一実施形態による、プロジェクトスケジュールが最初に設定される時のシステムの使用を示すフローチャートである。最初に、プロジェクトマネージャはタスク割り当てエディタにログインする（ブロック１３０２）。タスク割り当てエディタにおいて、マネージャは、プロジェクトに、プロジェクトタスクを追加し（ブロック１３０４）、関連するサブタスクを追加する（ブロック１３０６）。マネージャはプロジェクトメンバーにサブタスクを割りあてる（ブロック１３０６）。タスク割り当てエディタセッションが終了すると、システムはプロジェクトタスクとそのサブタスクに関する情報でデータベース（TaskAssignmentテーブル１２０２）を更新する。図２０乃至図２２は、タスク割り当てエディタセッションと付随する結果の例を示している。
【００６６】
次に、プロジェクトマネージャはプロジェクトスケジュールエディタにログインする（ブロック１３０８）。プロジェクトスケジュールエディタにおいて、マネージャは、タスク割り当てエディタで追加されたプロジェクトタスクの予定開始日と予定終了日を設定する（ブロック１３１０）。マネージャはプロジェクトに新しいプロジェクトタスクを追加し、そのプロジェクトタスクのスケジュールを設定できる。しかし、マネージャは、プロジェクトスケジュールエディタにおいて、プロジェクトタスクのサブタスクのスケジュールを設定したり、プロジェクトタスクにサブタスクを追加したりはできない。エディタセッションが終了すると（ブロック１３１４）、システムはプロジェクトタスクのスケジュールに関する情報（TopLevelProjectTaskテーブル１２０４）でデータベースを更新する。図２３乃至図２６は、プロジェクトスケジュールエディタセッションと付随する結果の例を示している。
【００６７】
最後に、各プロジェクトメンバーは自分のスケジュールエディタにログインし（ブロック１３１６）、タスク割り当てエディタで彼らに割り当てたタスクを選択する（ブロック１３１８）。上記の通り、一実施形態では、ケジュールエディタは、スケジュールが事前に作成されている場合は、完了していないタスクのみを表示する。メンバースケジュールエディタにおいて、メンバーは、自分たちに割り当てられたプロジェクトタスクとそのサブタスクの予定開始日と予定終了日を設定する（ブロック１３２０）。メンバーはサブタスクに詳細タスク（下のレベルのタスク）を追加して、そのスケジュールを設定できる。メンバーはプロジェクトに関係していない新しいタスクを追加し、そのタスクのスケジュールを設定できる（ブロック１３２２）。エディタセッションが終わると（ブロック１３２４）、システムは、そのメンバーのプロジェクトタスクのサブタスク（及び関係していないプロジェクトタスク）のスケジュールに関する情報（TaskAssignmentテーブル１２０２、ProjectTeamテーブル１２１０、MemberTasksテーブル１２０８、及びLevel1MenberTaskテーブル１２０６）でデータベースを更新する。図２７乃至図４１は、二人のメンバーのスケジュールエディタセッションと付随する結果の例を示している。エディタの使用プロセスの順序には変形例もあるが、変形の仕方によっては正しくスケジュールが生成されない場合もある。例えば、プロジェクトメンバーは、プロジェクトマネージャがタスク割り当てエディタでプロジェクトメンバーにサブタスクを割り当てるまで、メンバースケジュールエディタにおいてプロジェクトタスクのサブタスクに対してスケジュールを設定することはできない。
【００６８】
メンバースケジュールエディタの使用
図１４は、本発明の一実施形態による、プロジェクトメンバーが既存のスケジュールを修正するメンバースケジュールエディアタの使用例を示すフローチャートである。一実施形態では、ケジュールエディタは、スケジュールが事前に作成されている場合は、完了していないタスクのみを表示する。時には、メンバーは、プロジェクトが進行するにつれて、タスクの追加、タスクのスケジュールの変更、タスクの結果（実際の開始日と終了日）の設定、タスクの詳細の追加等をすることがある。プロジェクトメンバーはメンバースケジュールエディタにログインする（ブロック１４０２）。
【００６９】
そのエディタにおいて、各行はタスクに関するスケジュール情報を含んでいる。メンバーは、タスクのスケジュールを修正する場合、そのタスクに対応する行の予定日及び／または実際日を選択する（それぞれブロック１４０４及び１４０６）。メンバーは、タスクを削除する場合、「削除」ボタンを選択してそのタスクの削除を確認する（ブロック１４１０）。タスクを追加する場合、メンバーは、他のタスクを選択して（ブロック１４１２）、（ａ）プルダウンメニューフィールドにより追加する行数を選択し、（ｂ）「上に行を追加」ボタンを選択し、（ｃ）新しいタスクを入力し、（ｄ）その新しいタスクのスケジュールを入力する（ブロック１４１４）。メンバーは、上のレベルのタスクに関連する詳細なサブタスクを追加する場合、他のタスクを選択し（ブロック１４１６）、次に（ａ）「詳細追加」ボタンを選択し、（ｂ）上のレベルのタスクに対する詳細タスクを入力し、（ｃ）その詳細タスクに対する新しい実際開始日及び／または実際終了日を入力する（ブロック１４１８）。
【００７０】
タスクのスケジュールの修正は、（上のレベルから下のレベルまで）どのレベルでもできる。しかし、最低レベルのタスクには詳細タスクは追加できない。下のレベルのタスクのスケジュールを修正すると、関連する上のレベルの全タスクのスケジュールに影響し得る。エディタにおけるタスクのスケジュールを修正するイベントはすべて、そのタスクに対応する行にのみ影響する。下のレベルのタスクにおける変更によるすべてのレベルのタスクのスケジュールの変化を反映させるために、「更新」ボタンによる。タスクの行は適宜修正されて再表示される。タスクの一部では、そのタスクの前のスケジュールが新しいスケジュールとともに表示される。メンバースケジュールエディタは、生じた変更（タスクの追加・削除、予定日の変更、実際日の更新等）を含むすべてのタスクに関するスケジュール情報を管理・維持する。例えば「終了」ボタンを選択することにより（ブロック１４２２）、メンバースケジュールエディタセッションが完了すると、各タスクに関する情報が処理され、データベース（TaskAssignmentテーブル１２０２、ProjectTeamテーブル１２１０、MemberTasksテーブル１２０８、及びLevelXMemberTaskテーブル１２０６、１２１４、１２１６、１２１８）で更新される。メンバーがメンバースケジュールエディタセッションを送信せずに、ウェブブラウザを閉じてメンバースケジュールエディタを出ると、スケジュールの修正はデータベースには反映されず、失われる。
【００７１】
図１５Ａは、本発明の一実施形態による、タスクのスケジュールの一部を修正するメンバースケジュールエディタの画面を示す図である。タスクは、プロジェクトプラン（Project  Plan）のドラフト（Draft）タスクを削除し、パテントケース（Patent  Case）のレビュー（review）の詳細タスクを追加して修正されている。この追加によりレビューとパテントケースのスケジュールに影響がある。  図１５Ｂは、本発明の一実施形態による、図１５Ａの修正後に更新（Update）を選択した場合のメンバースケジュールエディタの画面を示す図である。上のレベルの各タスクスケジュールは、図１５Ｂに示したように、パテントケースのレビューに詳細タスクを追加することにより、下のレベルのタスクにおける変化により影響を受けている。図４２乃至図４６は、編集とそれに付随する結果を含む、メンバースケジュールエディタセッションの例を示している。
【００７２】
クライアントプロセッサ（図６）のウェブブラウザに表示されるエディタの場合、各タスクに関する情報はそのエディタにより維持される。例えば、メンバースケジュールエディタは、タスクに対応する各行について次のものを維持する：タスク名、タスクＩＤ、設定日、予定日、実際日、改訂番号、レベル、親タスクＩＤ。また、エディタにおけるタスクに対する修正のタイプも維持され、そのタスクに関する情報がサーバプロセッサ６０４（図６）に送られた時、データベース６０６（図６）中のそのタスクに関する情報を更新する適当なプロセスが実行されるようになっている。例えば、メンバースケジュールエディタにおけるタスクの修正のタイプは、変更無し、追加、削除、編集（予定日変更）、及び更新（実際日設定）等である。
上のレベルのタスクを下のレベルのタスクで更新
メンバーのタスクの場合、下のレベルのタスクによる上のレベルのタスクの更新は、クライアントプロセッサ６０２（図６）内で行われる（例えば、Ｊａｖａ（登録商標）スクリプトがウェブブラウザ中のすべてのタスクのスケジュールを管理・維持する）。更新の結果は、サーバプロセッサ６０４（図６）に送られ、データベース６０６（図６）において更新される。どのレベルのタスクであっても、その（１レベル下の）サブタスクのスケジュールを使用して、最早予定開始日と最早実際開始日と最遅予定終了日を決定する。最遅実際終了日も決定されるが、すべてのサブタスクが実際終了日を有しそのタスクが完了したことを示している場合にのみ使用される。サブタスクの最早予定開始日及び／または最遅予定終了日がタスクのそれと異なる場合、そのタスクの予定日をエディタで編集することができる。セッションが終了すると、データベース６０６において予定タスクスケジュールが更新される。このタスクスケジュールのデータベースにおいて、新しいレコードが追加される、タスクスケジュールの最新板を示すために改訂番号が１だけ増加される。サブタスクの最早実際開始日がタスクのそれと異なる場合、そのタスクの実際日をエディタで更新することができる。セッションが終了すると、データベースにおいて実際タスクスケジュールも更新される。改訂番号が最高の既存のレコードが実際日で更新される。上のレベルのタスクを下のレベルのタスクで更新するプロセスにおいて、クライアントプロセッサ６０２は、最低レベルのタスクから始めて、上のレベルに向けて更新していく。
【００７３】
図１６は、本発明の一実施形態による、上のレベルのタスクを下のレベルのタスクで更新するプロセスを示すフローチャートである。このフローチャートは、最低レベルがレベル４であるとして示したが、本プロセスはタスクのレベルが４つの場合に限定されない。上のレベルから最低レベルまでのタスクの非限定的な例としては、ソフトウェアシステムのシステム設計、コンポーネント設計、パッケージ設計、及びクラス設計がある。
【００７４】
レベル１タスクがメンバースケジュールエディタから取得される（ブロック１６０２）。ブロック１６０４において、レベル１タスクが他にあるか判断し、もうなければ本プロセスは終了する。レベル１タスクがあれば、ブロック１６０２で選択されたレベル１タスクに関係するレベル２タスクが取得される（ブロック１６０６）。決定ブロック１６０８において、ブロック１６０２で選択されたレベル１タスクと関連するレベル２タスクがあるか判断する。無ければ、対応するレベル２タスクがありレベル１タスクと異なれば、対応するレベル１タスクがレベル２の最早開始日と最遅終了日で更新される（ブロック１６１０）。そして、ブロック１６０２に戻り、エディタから他のレベル１タスクが（もしあれば）取得される。ブロック１６０２で選択されたレベル１タスクに関連するレベル２タスクがあれば、ブロック１６０６で選択されたレベル２タスクと関係するレベル３タスクが取得される（ブロック１６１２）。決定ブロック１６１４において、ブロック１６０６で選択されたレベル２タスクと関連するレベル３タスクがあるか判断する。無ければ、対応するレベル３タスクがありレベル２タスクと異なれば、その対応するレベル２タスクがレベル３タスクの最早開始日と最遅終了日で更新される（ブロック１６１６）。ブロック１６１８において、レベル２タスクの最早開始日と最遅終了日（予定及び実際）が追跡（track）され、ブロック１６０６に戻って、ブロック１６０２で選択されたレベル１タスクに対応する他のレベル２タスクが取得される。
【００７５】
ブロック１６１４においてレベル３タスクがあると判断されると、ブロック１６１２で選択されたレベル３タスクに対応するレベル４タスクが取得される（ブロック１６１８）。決定ブロック１６２０において、ブロック１６１２で選択されたレベル３タスクと関連するレベル４タスクがあるか判断する。無ければ、対応するレベル４タスクがありレベル３タスクと異なれば、その対応するレベル３タスクがレベル４タスクの最早開始日と最遅終了日で更新される（ブロック１６２２）。ブロック１６２４において、レベル３タスクの最早開始日と最遅終了日（予定及び実際）が追跡（track）され、ブロック１６１２に戻って、ブロック１６０６で選択されたレベル２タスクに対応する他のレベル３タスクが取得される。ブロック１６２０においてレベル４タスクがあると判断されると、レベル４タスクの最早開始日と最遅終了日（予定及び実際）が追跡（track）され（ブロック１６２６）、ブロック１６１８に戻って、ブロック１６１２で選択されたレベル３タスクに対応する他のレベル４タスクが取得される。
【００７６】
プロジェクトスケジュールの割り当てられたサブタスクとの集計
プロジェクトスケジュールの場合、メンバースケジュールと異なり、プロジェクトメンバーに割り当てられたプロジェクトタスクのサブタスクとのプロジェクトタスクの集計はサーバプロセッサ６０４（図６）で行われる。この集計は、プロジェクトマネージャがプロジェクトスケジュールエディタ（例えば図２Ａ）で「集約（Consolidate）」または「終了（Finish）」を選択したときに行われる。図１７は、本発明の一実施形態による、様々なプロジェクトメンバーに割り当てたサブタスクを用いてプロジェクトタスクスケジュールを集計するプロセスを示すフローチャートである。
【００７７】
TopLevelProjectTaskテーブル１２０４、TaskAssignmentテーブル１２０２、及びLevel1MenberTaskテーブル１２０６からの情報を使用してプロジェクトタスクスケジュールを更新する。最新の更新（改訂番号が最高のもの）のサブタスクのスケジュールであって、スケジュールから削除されていないもののみが考慮される。サブタスクのスケジュールを使用して、すべてのサブタスクの最早開始日と最遅終了日を取得する。サブタスクの最早開始日と最遅終了日がプロジェクトタスクのそれと異なれば、そのサブタスクの最早開始日と最遅終了日を使用してプロジェクトタスクのスケジュールを更新する。データベース中の予定プロジェクトタスクスケジュールが更新され、新しいレコードがこのプロジェクトタスクのTopLevelProjectTaskテーブル１２０４に追加され、プロジェクトタスクスケジュールの最新改訂であることを示すために改訂番号が１だけ増加される。データベースの実際のタスクスケジュールも更新され、改訂番号が最高である既存のレコードが実際日により更新される。図４７乃至図５０はサブタスクのプロジェクトタスク及びそれに関連する結果との集計を含むプロジェクトスケジュールエディタセッションの一例を示している。
【００７８】
プロジェクトタスクはTopLevelProjectTaskテーブル１２０４から取得される（ブロック１７０２）。ブロック１７０４において、プロジェクトタスクが他にあるか判断し、もうなければ本プロセスは終了する。プロジェクトタスクがあれば、各プロジェクトタスクに対してサブタスクをTaskAssignmentテーブル１２０２から取得する（ブロック１７０６）。判断ブロック１７０８において、サブタスクが他にあるか判断する。サブタスクが他にない場合、サブタスクの最早開始日と最遅終了日があってプロジェクトタスクのそれと異なれば、プロジェクトタスクが更新され（ブロック１７１０）、ブロック１７０２に戻ってプロジェクトタスクを取得する。ブロック１７０８において他のサブタスクがあると判断すると、Level1MenberTaskテーブル１２０６から最新改訂に対応する（すなわち改訂番号が最高である）サブタスクのスケジュール情報が取得される（ブロック１７１２）。ブロック１７１４において、最早開始日と最遅終了日（予定及び実際）がそれまでのサブタスクに関して追跡（track）され、ブロック１７０６に戻り、TaskAssignmentテーブル１２０２から、ブロック１７０２で取得されたプロジェクトタスク（がもしあれば）に関係する他のサブタスクを取得する。
【００７９】
プロジェクトスケジュールマネージメントシステムの画面例
図１８は、本発明の一実施形態によるデフォルトタスクテーブル１２１２（図１２）のエントリー例を示す画面である。これらのタスクは、プロジェクトタスクの追加またはプロジェクトメンバーへの関連サブタスクの割り当てのためのタスク割り当てエディタのプロジェクトタスクメニューセレクションに表示されるか、またはプロジェクトタスクの追加とタスクの予定スケジュールの設定のためのプロジェクトスケジュールエディタに表示される。DefaultTasksテーブル１２１２からの図１８と同様の表示ページに示したタスクは、多数のプロジェクトに共通のプロジェクトタスクである。
【００８０】
図１９は、本発明の一実施形態によるProjectTeamテーブル１２１０はプロジェクトメンバー（図１２）のエントリー例を示す画面である。この表示ページはＪ１７プロジェクトのプロジェクトメンバーを示している。nLevelXMaxTaskIDsはすべてのレベルのメンバーのすべてのタスクを一意的に特定するために使用される。メンバーによりスケジュールされたタスクはないから、すべてのnLevelXMaxTaskIDは空欄（null）である。各メンバーには、（ａ）すべてのレベルにおけるそのメンバーのタスクにＩＤを割り当てるために使用されるタスクＩＤと、（ｂ）プロジェクトスケジュールと、タスクに関連するメンバーを示すタスク割り当てとの表示に使用されるメンバーラベルと、（ｃ）エディタのアクセス特権を判断するために使用されるメンバー役割番号と、（ｄ）メンバーのスケジュールが生成され格納されるウェブページのディレクトリを示すメンバーディレクトリとが割り当てられている。
【００８１】
タスク割り当てエディタセッション
図２０は、本発明の一実施形態によるタスク割り当てエディタセッション例を示す画面である。５つのプロジェクトタスクがプロジェクトに加えられている：すなわち、計画、要件、ガイドライン文書、トップレベル設計、及びパッケージ設計である。サブタスクがプロジェクトタスクに加えられている：すなわち、計画に２つのサブタスク、要件に２つのサブタスク、ガイドライン文書に５つのサブタスク、及びトップレベル設計に３つのサブタスクである。各サブタスクはProjectTeamテーブル１２１０（図１２）で特定されたプロジェクトメンバーの１人に割り当てられる。メンバーは図１９に示したように、それぞれのメンバーラベルで識別される。タスクとその割り当てに関する情報はすべてテーブルで管理される。「終了」ボタンが選択されると、この情報でデータベースが更新される。エディタに入力された情報はすべてクライアントプロセッサ（ウェブブラウザ）からサーバプロセッサ（ウェブサーバ）に送られる。
【００８２】
図２１は、本発明の一実施形態による、メンバーがタスク割り当てエディタ（図２０）の「終了」（Finish）ボタンを選択した時に、タスク割り当てテーブル１２０２（図１２）に記憶される情報を示す画面である。このテーブルはプロジェクトタスクに関連するすべてのサブタスクを示している。サーバプロセッサが各プロジェクトタスクにタスクＩＤを割り当てる。しかし、各サブタスクのタスクＩＤは、タスク割り当てエディタセッションが完了すると割り当てられない。タスク割り当てエディタはデータベースの他のテーブルには影響しない。図２２は、本発明の一実施形態による、図２１に示したタスク割り当てエディタセッション後に生成されるウェブページを示す画面である。
【００８３】
プロジェクトスケジュールエディタセッション
図２３は、本発明の一実施形態によるプロジェクトスケジュールエディタセッション例を示す画面である。５つのプロジェクトタスクが選択されスケジュールされている。プロジェクトタスクメニューセレクションは、タスク割り当てエディタセッションで追加されたプロジェクトタスクと、データベースのDefaultTasksテーブル１２１２（図１２）のプロジェクトタスクの両方を含む（タスク割り当てエディタに追加されたプロジェクトタスクもこの実施例ではDefaultTasksテーブルのものである）。予定日は年月日のメニューセレクションを選択することにより設定される。「終了」ボタンが選択されると、この情報でデータベースが更新される。プロジェクトスケジュールエディタに入力された情報はすべてクライアントプロセッサ（ウェブブラウザ）からサーバプロセッサ（ウェブサーバ）に送られる。
【００８４】
図２４は、本発明の一実施形態による、メンバーがプロジェクトスケジュールエディタ（図２３）の「終了」（Finish）ボタンを選択した時に、TopLevelProjectTaskテーブル１２０４（図１２）に記憶される情報を示す画面である。プロジェクトスケジュールエディタで入力されたタスク名と予定日は、TopLevelProjectTaskテーブル１２０４に追加される。スケジュールが設定されたエディタセッションの日付はテーブルのsetDateフィールドに割り当てられる。この実施例ではこれがすべてのタスクに対してスケジュールが設定されるのは初めてだから、改訂番号（nScheduleRevNumber）として１がテーブルに追加される。
【００８５】
図２５は、本発明の一実施形態による、メンバーがプロジェクトスケジュールエディタ（図２３）の「終了」（Finish）ボタンを選択した時に、TaskAssignmentテーブル１２０２（図１２）に記憶される情報を示す画面である。この実施例に基づくテーブルには変更はないが、「Ｔ２」に割り当てられたデータベース設計は図２１と比較して古くなる。プロジェクトスケジュールエディタにタスクが追加されると、そのタスクはこのテーブルに追加され、適当なタスクＩＤが付される。図２６は、本発明の一実施形態による、図２３に示したプロジェクトスケジュールエディタセッション後に生成されるウェブページを示す画面である。
【００８６】
メンバースケジュールエディタセッション
最初のメンバースケジュールセッション
図２７は、本発明の一実施形態による、プロジェクトメンバー（「ｔｅｓｔ１」と呼ぶ）のメンバースケジュールエディタセッション例を示す画面である。メンバースケジュールエディタディスプレイのタスクメニューセレクションは、メンバー「ｔｅｓｔ１」に割り当てられたプロジェクトタスクのサブタスクのみを表示する。メンバーに割り当てられたサブタスクは、TaskAssignmentテーブル１２０２（図１２）から取得される。メンバーは「新規（New）」を選択して、そのプロジェクトタスクのいずれとも関係していないそのメンバー自身のタスクを入力することができる。これはそのメンバーの最初のセッションなので、そのメンバーは４つのタスクを追加する。すなわち、プロジェクトプラン、コード仕様（Code  Convention）、デザイン文書ガイドライン、及びコンポーネントインターフェイスである。メンバーは４つのうちの３つのタスク、すなわちプロジェクトプラン、コード仕様、及びデザイン文書ガイドラインに詳細タスク（レベル２タスク）を追加する。メンバーは詳細タスクの各々のタスク名を入力し、年月日メニューセレクションで詳細タスクの予定日を選択して設定する。メンバーはレベル１タスク（コンポーネントインターフェイス）の予定日を設定するメンバースケジュールエディタにおいてレベル２タスクの予定日ですべてのレベル１タスクを更新するには、メンバーは「更新（Update）」ボタンを選択する。
【００８７】
図２８は、本発明の一実施形態による、図２７のメンバースケジュールセッション例の場合において「更新」（Update）ボタンを選択した結果を示す画面である。レベル２タスクの最早予定開始日と最遅予定終了日は、日付メニューセレクションの対応するレベル１タスクに関連して表示される。更新方法は図１６のフローチャートに示したプロセスに従う。「終了」ボタンが選択されると、メンバータスクスケジュール情報でデータベースが更新される。メンバースケジュールエディタに入力された情報はすべてクライアントプロセッサ（ウェブブラウザ）からサーバプロセッサ（ウェブサーバ）に送られる。図２８においては、メンバーが選択できるタスクセレクションにも留意されたい。
【００８８】
図２９は、本発明の一実施形態による、メンバーがメンバースケジュールエディタ（図２８）の「終了」（Finish）ボタンを選択した時に、TaskAssignmentテーブル１２０２（図１２）で更新される情報を示す画面である。テーブルには新しいレコードは追加されない。しかし、図２５と比較して、メンバースケジュールエディタにおいてメンバーにより追加されたタスクのnLevel1TaskIDの値は、ここに説明した方法により割り当てられている（プロジェクトプランは１３、コード仕様は２３、デザイン文書ガイドラインは３３、コンポーネントインターフェイスは４３）。
【００８９】
図３０は、本発明の一実施形態による、メンバーがメンバースケジュールエディタ（図２８）の「終了」（Finish）ボタンを選択した時に、MemberTasksテーブル１２０８（図１２）に追加される情報を示す画面である。レベル１タスクとそれに対応するレベル２タスクのＩＤがテーブルに追加されている。テーブルにはタスクＩＤによるタスク間の関係が示されている。タスクＩＤは、ProjectTeamテーブル１２１０（図１２）のプロジェクトメンバーのnMemberTaskIDとnLevelXMaxTaskIDにより決定されている。
【００９０】
図３１は、本発明の一実施形態による、メンバーがメンバースケジュールエディタ（図２８）の「終了」（Finish）ボタンを選択した時に、Level1MenberTaskテーブル１２０６（図１２）に追加される情報を示す画面である。エディタで入力されたタスク名と予定日は、Level1MenberTaskテーブル１２０６に追加される。タスクＩＤは、ProjectTeamテーブル１２１０（図１２）のタスクＩＤ情報を用いてタスクに割り当てられたものである。nProjectTaskID（親タスクのＩＤ）の値は、タスク割り当てエディタセッションによりプロジェクトタスクに割り当てられたものである。スケジュールが設定されたエディタセッションの日付は、Level1MenberTaskテーブル１２０６のsetDateフィールドに割り当てられる。これがすべてのメンバータスクに対してスケジュールが設定されるのは初めてだから、改訂番号（nScheduleRevNumber）として１がLevel1MenberTaskテーブル１２０６に追加される。
【００９１】
図３２は、本発明の一実施形態による、メンバーがメンバースケジュールエディタ（図２８）の「終了」（Finish）ボタンを選択した時に、Level2MemberTaskテーブル（図１２）に追加される情報を示す画面である。エディタで入力されたタスク名と予定日は、Level2MemberTaskテーブル１２１４に追加される。タスクＩＤは、ProjectTeamテーブル１２１０（図１２）のタスクＩＤ情報を用いてタスクに割り当てられたものである。nLevel1TaskID（レベル１タスクのＩＤ）の値は、元々、レベル１タスクがLevel1MenberTaskテーブルに追加された時に割り当てられている。レベル２タスクのタスク名は同一であっても、nLevel2TaskIDはそのタスクを一意的に識別し、nLevel1TaskIDはそのタスクの親タスクを識別する。スケジュールが設定されたエディタセッションの日付はテーブルのsetDateフィールドに割り当てられる。これがすべてのメンバーのレベル２タスクに対してスケジュールが設定されるのは初めてだから、改訂番号（nScheduleRevNumber）として１がテーブルに追加される。
【００９２】
図３３は、本発明の一実施形態によるメンバースケジュールエディタセッション（図２８）後に生成されるウェブページを示す画面である。
【００９３】
第２のメンバースケジュールセッション
図３４は、本発明の一実施形態による、プロジェクトメンバーとマネージャのメンバースケジュールエディタセッション例を示す画面である。このメンバースケジュール例は、複数レベルのタスクの追加を含む。メンバースケジュールエディタディスプレイのタスクメニューセレクションは、メンバー（マネージャ）に割り当てられたプロジェクトタスクのサブタスクのみを表示する。メンバーに割り当てられたサブタスクは、データベースのTaskAssignmentテーブル１２０２（図１２）から取得される。メンバーはタスクプロジェクト開始（Project  Initiation）を追加し、そのプロジェクト開始タスクに詳細タスク（レベル２タスク−ドラフトとファイナル）を追加する。メンバーはレベル２タスクの各々のタスク名を入力し、年月日メニューセレクションでレベル２タスクの予定日を選択して設定する。メンバーは「新規（New）」を選択して、そのプロジェクトタスクのいずれとも関係していないそのメンバー自身のタスク、パテントケース（Patent  Cases）を入力することができる。メンバーはパテントケースに１つの詳細タスク（レベル２タスク−プロジェクトの新しい開示（New  Disclosure  for  Project））を追加する。次に、メンバーは「プロジェクトの新しい開示」に３つの詳細タスク（レベル３タスク−図面、明細書、及び請求項）を追加する。メンバーはレベル３タスクの各々のタスク名を入力し、年月日メニューセレクションでレベル３タスクの予定日を選択して設定する。メンバーは「更新」ボタンを選択して、上のレベルのタスクすべての予定日を更新する。
【００９４】
図３５は、本発明の一実施形態による、「更新」（Update）ボタンを選択した結果を示す画面である。更新方法は図１６のフローチャートに示したプロセスに従う。「終了」ボタンが選択されると、メンバータスクスケジュール情報でデータベースが更新される。エディタに入力された情報はすべてクライアントプロセッサ（ウェブブラウザ）からサーバプロセッサ（ウェブサーバ）に送られる。
【００９５】
図３６は、本発明の一実施形態による、メンバーがメンバースケジュールエディタ（図３５）の「終了」（Finish）ボタンを選択した時に、TaskAssignmentテーブル１２０２（図１２）で更新される情報を示す画面である。テーブルには新しいレコードは追加されない。しかし、図２９と比較して、メンバースケジュールエディタでメンバーにより追加されたタスクのnLevel1TaskIDの値が割り当てられている（プロジェクト開始に対して１１）。追加された新しいタスク「パテントケース」は、プロジェクトに関係するタスクではないので、このテーブルには追加されない。
【００９６】
図３７は、本発明の一実施形態による、メンバーがメンバースケジュールエディタ（図３５）の「終了」（Finish）ボタンを選択した時に、MemberTasksテーブル１２０８（図１２）に追加される情報を示す画面である。図３５と比較して、レベル１、レベル２、レベル３のＩＤがテーブルに追加されている。nLevel1TaskIDの値２１は、パテントケースと呼ばれる新しいタスクに対応する。テーブルにはタスクＩＤによるタスク間の関係が示されている。タスクＩＤは、ProjectTeamテーブル１２１０（図１２）のプロジェクトメンバーのnMemberTaskIDとnLevelXMaxTaskIDにより決定されている。
【００９７】
図３８は、本発明の一実施形態による、メンバーがメンバースケジュールエディタ（図３５）の「終了」（Finish）ボタンを選択した時に、Level1MenberTaskテーブル１２０６（図１２）に追加される情報を示す画面である。図３１と比較して、メンバースケジュールエディタで入力されたタスク名と予定日は、そのテーブルに追加される。タスクＩＤは、ProjectTeamテーブル１２１０（図１２）のタスクＩＤ情報を用いてタスクに割り当てられたものである。nProjectTaskID（親タスクのＩＤ）の値は、タスク割り当てエディタセッションによりプロジェクトタスクに割り当てられたものである。追加されたタスクがプロジェクトタスクと関係しないとき、nProjectTaskIDの値は０となる。スケジュールが設定されたエディタセッションの日付は、Level1MenberTaskテーブル１２０６のsetDateフィールドに割り当てられる。これがすべてのメンバータスクに対してスケジュールが設定されるのは初めてだから、改訂番号として１がLevel1MenberTaskテーブル１２０６に追加される。
【００９８】
図３９は、本発明の一実施形態による、メンバーがメンバースケジュールエディタ（図３５）の「終了」（Finish）ボタンを選択した時に、Level2MemberTaskテーブル１２１４（図１２）に追加される情報を示す画面である。図３２と比較して、メンバースケジュールエディタで入力されたタスク名と予定日は、そのLevel2MemberTaskテーブル１２１４に追加される。タスクＩＤは、ProjectTeamテーブル１２１０（図１２）のタスクＩＤ情報を用いてタスクに割り当てられたものである。nLevel1TaskID（レベル１タスクのＩＤ）の値は、元々、レベル１タスクがLevel1MenberTaskテーブル１２０６（図１２）に追加された時に割り当てられている。スケジュールが設定されたメンバースケジュールエディタセッションの日付は、Level2MenberTaskテーブル１２１４のsetDateフィールドに割り当てられる。これがすべてのメンバーのレベル２タスクに対してスケジュールが設定されるのは初めてだから、改訂番号として１がテーブルに追加される。
【００９９】
図４０は、本発明の一実施形態による、メンバーがメンバースケジュールエディタ（図３５）の「終了」（Finish）ボタンを選択した時に、Level3MenberTaskテーブル１２１６（図１２）に追加される情報を示す画面である。メンバースケジュールエディタで入力されたタスク名と予定日は、Level3MemberTaskテーブル１２１６に追加される。タスクＩＤは、ProjectTeamテーブル１２１０（図１２）のタスクＩＤ情報を用いてタスクに割り当てられたものである。nLevel2TaskID（レベル２タスクのＩＤ）の値は、元々、レベル２タスクがLevel2MenberTaskテーブル１２１４（図１２）に追加された時に割り当てられている。スケジュールが設定されたメンバースケジュールエディタセッションの日付は、Level3MenberTaskテーブル１２１６のsetDateフィールドに割り当てられる。これがすべてのメンバーのレベル３タスクに対してスケジュールが設定されるのは初めてだから、改訂番号として１がLevel3MemberTaskテーブル１２１６に追加される。
【０１００】
図４１は、本発明の一実施形態による、マネージャのメンバースケジュールエディタ（図３５））セッション後に生成されるウェブページを示す画面である。非プロジェクトタスク（パテントケース）の行の色は、分かりやすくするために、プロジェクトタスクの行の色と異ならせていることに留意せよ。
【０１０１】
図４２は、本発明の一実施形態による、２つのメンバースケジュールエディタセッション（図２７と図３４を参照して説明したもの）後のProjectTeamテーブル１２１０のエントリーを示す画面である。図１９と比較して、nLevelXMaxTaskIDは、カレントメンバーに対して今まで使用している最高のタスクＩＤで更新されている。１デジットのエントリ（１と３）は、そのレベルのタスクにはタスクスケジュールがまだ割り当てられていないことを示す。
【０１０２】
第３のメンバースケジュールセッション
図４３は、本発明の一実施形態による、プロジェクトメンバーマネージャとのメンバースケジュールエディタセッション例を示す画面である。メンバーのスケジュールは、前のセッションで作成されており、メンバースケジュールエディタは既存のタスクを予定日と示している。メンバースケジュールエディタは、タスクのスケジュールが事前に設定（または修正）されている日付も示している。このメンバースケジュールエディタセッションでは、メンバーは「プロジェクト開始（Project  Initiation）のレベル２タスク−ドラフト（Draft）とファイナル（Final）の予定日を変更する。メンバーは、プロジェクト開始のレベル２タスク−ドラフトの実際開始日を更新する。メンバーは、プロジェクトタスク「トップレベルデザイン」と関連している新しいタスク「アーキテクチャ」（Architecture）を追加して、アーキテクチャタスクの予定日を設定する。メンバーは、「更新」ボタンを選択して、下のレベルのタスクにおける変更で上のレベルのタスクを更新する（「プロジェクト開始」のレベル１と２のタスクのみが影響を受ける）。メンバースケジュールエディタは更新されて再表示される。タスクの予定日に何らかの変更があれば、前に設定された日付は取消線で取り消されて表示され、その下に新しく設定された日付として現在の日付が表示される。予定日は取消線で取り消されて表示され、その下に新しい予定日が年月日メニューセレクションで表示される。新しい実際日は、年月日メニューセレクションに表示されている。「終了」ボタンが選択されると、メンバータスクスケジュール情報でデータベースが更新される。メンバースケジュールエディタに入力された情報はすべてクライアントプロセッサ（ウェブブラウザ）からサーバプロセッサ（ウェブサーバ）に送られる。
【０１０３】
図４４は、本発明の一実施形態による、メンバーがメンバースケジュールエディタ（図４３）の「終了」（Finish）ボタンを選択した時に、Level1MenberTaskテーブル１２０６（図１２）に追加される情報を示す画面である。図３８と比較すると変化が分かる。タスク「プロジェクト開始」の予定日には変更があったので、メンバースケジュールエディタのタスク名と新しい予定日がLevel1MenberTaskテーブル１２０６に追加され、改訂番号が２とされて、これがそのタスクの２つめのスケジューリングであることを示している。このタスクには同じタスクＩＤと親ＩＤが使用され、メンバースケジュールエディタセッションの日付がLevel1MenberTaskテーブル１２０６のsetDateフィールドの新しい値となる。メンバースケジュールエディタセッションの日付が、そのタスクの改訂番号が最も高いスケジュールのsetDateの値と同じである場合、そのタスクの新しいレコードにはより高い改訂番号は付加されない。むしろ、そのタスクのレコードは予定日の変更で修正される。実際日は、このLevel1MenberTaskテーブル１２０６中の最も高い改訂番号を有するタスクについて、メンバースケジュールエディタの実際日で修正される。このLevel1MenberTaskテーブル１２０６に追加されるのは、図３６に示したようにTaskAssignmentテーブル１２０２（図１２）に最初に設定されたプロジェクトタスクＩＤと、図４２に示したようにProjectTeamテーブル１２１０（図１２）のタスクＩＤ情報により決定されたタスクＩＤとを有する追加タスク「アーキテクチャ」である。
【０１０４】
図４５は、本発明の一実施形態による、メンバーがメンバースケジュールエディタ（図４３）の「終了」（Finish）ボタンを選択した時に、Level2MemberTaskテーブル１２１４（図１２）に追加される情報を示す画面である。図３９と比較すると変化が分かる。レベル１タスク「プロジェクト開始」のレベル２タスク「ドラフト（Draft）」及び「ファイナル（Final）」の予定日には変更があったので、メンバースケジュールエディタのタスク名と新しい予定日がLevel2MenberTaskテーブル１２１４に追加され、改訂番号が２とされて、これがそのタスクの２つめのスケジューリングであることを示している。これらのタスクには同じタスクＩＤと親ＩＤが使用され、メンバースケジュールエディタセッションの日付がLevel2MenberTaskテーブル１２１４のsetDateフィールドの新しい値となる。実際日は、このLevel2MenberTaskテーブル１２１４中の最も高い改訂番号を有するタスクについて、メンバースケジュールエディタの実際日で修正される。
【０１０５】
図示していないが、ProjectTeamテーブル１２１０、TaskAssignmentテーブル１２０２、及びMemberTasksテーブル１２０８（図１２）はメンバースケジュールエディタセッションにより影響を受けている。ProjectTeamテーブル１２１０の場合、マネージャのnLevel1TaskIDは更新されタスクＩＤがタスク「アーキテクチャ」に割り当てられる。TaskAssignmentテーブル１２０２の場合、「アーキテクチャ」のsLevel1TaskNameのnLevel1TaskIDは、それに割り当てられた新しいタスクＩＤで設定されている。MemberTasksテーブル１２０８の場合、タスク「アーキテクチャ」には新しいレコードが追加されnLevel1TaskIDが設定される。
【０１０６】
図４６は、本発明の一実施形態による、マネージャのメンバースケジュールエディタセッション後に生成されるウェブページを示す画面である。タスクスケジュールは、そのタスクのスケジューリングの変更履歴を示している。タスクの前のスケジュールは取消線で取り消されて表示されている。
【０１０７】
プロジェクトスケジュールエディタセッション
図４７は、本発明の一実施形態による、プロジェクトスケジュールとの他のセッション例を示す画面である。プロジェクトスケジュールエディタは、タスク割り当てエディタとプロジェクトスケジュールエディタにより追加されて事前にスケジュールされた５つのタスクを示している。プロジェクトタスクのサブタスクのスケジュールが、プロジェクトスケジュールエディタにも示されている。サブタスクスケジュールは、対応するプロジェクトタスクスケジュールの下に表示されている。プロジェクトスケジュールエディタは、サブタスクに割り当てられたメンバー（メンバーラベル）を示している。プロジェクトスケジュールエディタは、プロジェクトタスクのスケジュールとサブタスクが事前に設定または修正された日付を示している。サブタスクの日付は、プロジェクトタスクの日付とまだ集計されていない。サブタスクの最早予定開始日と最遅予定終了日は、プロジェクトタスクの予定日とは一致しない。
【０１０８】
サブタスクのスケジュールをプロジェクトタスクと集計するために、メンバーはプロジェクトスケジュールエディタの「集約（Consolidate）」ボタンまたは「終了（Finish）」ボタンのいずれかを選択する。両方とも、サーバプロセッサ６０４（図６）におけるサブタスクスケジュールのプロジェクトスケジュールとの集計を行う。集計方法は図１７のフローチャートに示したプロセスに従う。「集約（Consolidate）」ボタンにより、プロジェクトスケジュールエディタは集計されたスケジュールで再表示される。図４８は、本発明の一実施形態による、メンバーが「集約」（Consolidate）ボタンを選択した後に再度表示されるプロジェクトスケジュールエディタを示す画面である。プロジェクトタスク日程はすべてサブタスク日程と一致している。プロジェクトタスクは追加または修正されていないが、かかる変更は「集約」ボタンまたは「終了」ボタンが選択された時に、データベースに追加または更新されている。
【０１０９】
図４９は、本発明の一実施形態による、メンバーがプロジェクトスケジュールエディタ（図４７と図４８）の「集約」（Consolidate）ボタンまたは「終了」（Finish）ボタンを選択した時に、TopLevelProjectTaskテーブル１２０４（図１２）に記憶される情報を示す画面である。図１７のフローチャートで説明したプロセスを用いてサブタスクのプロジェクトタスクとの集計をした後、プロジェクトタスクの予定日は変更され得る。予定日が変わり、プロジェクトタスクの最新改訂版の設定日がプロジェクトスケジュールエディタセッションの日付と同じであれば、タスクのレコードはその最新バージョンの予定日で更新される。設定日が同一でない場合、改訂番号がインクリメントされ（この例では、プランニング及びトップレベルデザインの場合、２である）、予定日が新しくなったTopLevelProjectTaskテーブル１２０４にタスクの新しいレコードが追加される。プロジェクトタスクのTopLevelProjectTaskテーブル１２０４中の実際日が更新され、改訂番号が最高とされる。プロジェクトスケジュールエディタセッションが追加またはスケジュールした新しいタスクは無いから、データベースの他のテーブルは影響を受けない。
【０１１０】
図５０は、本発明の一実施形態によるプロジェクトスケジュールエディタセッション後に生成されるウェブページを示す画面である。プロジェクトスケジュールは、そのプロジェクトタスクとサブタスクのスケジューリングの変更履歴を示している。タスクの前のスケジュールは取消線で取り消されて表示されている。
【０１１１】
プロジェクトマネージャによるプロジェクトタスクに対するスケジュールの割り当てと設定
図５１は、本発明の一実施形態による、プロジェクトマネージャがプロジェクトメンバーにタスクを割り当ててプロジェクトタスクのスケジュールを設定する時のシステムの振る舞いを示すフローチャートである。マネージャはウェブブラウザのタスク割り当てエディタにログインする。ウェブサーバは、ログイン情報を確認・認証した後、タスク割り当てエディタのウェブページをディスプレイのブラウザに送る（ブロック５１０２）。マネージャはタスク割り当てエディタで様々な操作を実行し、タスクを追加・割り当てする（ブロック５１０４）。マネージャは、「終了」ボタンを選択して、タスク割り当てに関するすべての情報をウェブサーバに送信する（ブロック５１０６）。ウェブサーバは、タスク割り当てエディタからプロジェクトタスクの追加とサブタスクの割り当てに関するすべての情報を取得し、その情報をデータベースにポストする（ブロック５１０８）。ウェブサーバはプロジェクトメンバーのタスク割り当てエディタのウェブページを生成する（ブロック５１１０）。このウェブページはウェブブラウザで見ることができる。タスク割り当てエディタセッション、データベースの情報のポスティング、生成されるウェブページの例は、図２０乃至図２２に示されている。
【０１１２】
マネージャはウェブブラウザのプロジェクトスケジュールエディタにログインする。ウェブサーバは、ログイン情報を確認・認証した後、プロジェクトスケジュールエディタのウェブページをディスプレイのブラウザに送る（ブロック５１１２）。マネージャはそのエディタで様々な操作を実行し、プロジェクトタスクを追加・スケジュールする（ブロック５１１４）。マネージャは、「終了」ボタンを選択して、タスクスケジュールに関するすべての情報をウェブサーバに送信する（ブロック５１１６）。ウェブサーバは、プロジェクトスケジュールエディタからプロジェクトタスクの追加と関連スケジュールに関するすべての情報を取得し、その情報をデータベースにポストする（ブロック５１１８）。ウェブサーバはプロジェクトスケジュールのウェブページを生成する（ブロック５１２０）。このウェブページはウェブブラウザで見ることができる。プロジェクトスケジュールエディタセッション、データベースの情報のポスティング、生成されるウェブページの例は、図２３乃至図２６に示されている。
【０１１３】
プロジェクトメンバーによるプロジェクトタスクのスケジュール設定
図５２は、本発明の一実施形態による、プロジェクトスケジュールが自分のタスクとサブタスクのスケジュールを設定する時のシステムの振る舞いを示すフローチャートである。メンバーはウェブブラウザからメンバースケジュールエディタにログインする（ブロック５２０２）。ウェブサーバは、ログイン情報を確認・認証すると、メンバースケジュールエディタのウェブページを表示のためにブラウザに送る。メンバーはメンバースケジュールエディタで様々な操作を実行し、任意のレベルのタスクを追加・スケジュールする（ブロック５２０４）。メンバーは、「終了」ボタンを選択して、タスクスケジュールに関するすべての情報をウェブサーバに送信する（ブロック５２０６）。ウェブサーバは、メンバースケジュールエディタからタスクの追加と関連スケジュールに関するすべての情報を取得し、その情報をデータベースにポストする（ブロック５２０８）。ウェブサーバはメンバーのスケジュールのウェブページを生成する（ブロック５２１０）。このウェブページはウェブブラウザで見ることができる。プロジェクトスケジュールエディタセッション、データベースの情報のポスティング、生成されるウェブページの例は、図２７乃至図４１に示されている。
【０１１４】
メンバーのスケジュールは、ウェブブラウザでメンバースケジュールエディタに再度ログインすることにより、修正または更新できる。メンバーは、任意のレベルのタスクをスケジュールし、既存タスクの予定日を編集し、既存タスクの結果を更新することができる（ブロック５２１４）。メンバーは、「終了」ボタンを選択して、タスクスケジュールに関するすべての情報をウェブサーバに送信する（ブロック５２１６）。ウェブサーバは、メンバースケジュールエディタからタスクと関連スケジュールの追加、編集、または更新に関するすべての情報を取得し、その情報をデータベースにポストする（ブロック５２１８）。ウェブサーバはメンバーのスケジュールの更新されたウェブページを生成する（ブロック５２２０）。このウェブページは後でウェブブラウザで見ることができる。プロジェクトスケジュールエディタセッション、データベースの情報のポスティング、生成されるウェブページの例は、図４３乃至図４６に示されている。
【０１１５】
メンバースケジュールのプロジェクトスケジュールとの集約
図５３は、本発明の一実施形態による、プロジェクトマネージャがメンバーのスケジュールをプロジェクトスケジュールと集約する時のシステムの振る舞いを示すフローチャートである。マネージャはウェブブラウザのプロジェクトスケジュールエディタにログインする。ウェブサーバは、ログイン情報を確認・認証した後、エディタのウェブページをディスプレイのブラウザに送る（ブロック５３０２）。マネージャはそのエディタで様々な操作を実行し、プロジェクトタスクを追加・スケジュールする（ブロック５３０４）。マネージャは、「集約（Consolidate）」ボタンを選択して、タスクスケジュールに関するすべての情報をウェブサーバに送信する（ブロック５３０６）。ウェブサーバは、プロジェクトスケジュールエディタからプロジェクトタスクの追加と関連スケジュールに関するすべての情報を取得し、その情報をデータベースにポストする（ブロック５３０８）。
【０１１６】
ブロック５３１０において、ウェブサーバは、図１７に示したプロセスを用いてすべてのメンバーのスケジュールをプロジェクトスケジュールと集計する。ウェブサーバはサブタスクスケジュールを含むプロジェクトスケジュールのウェブページを生成する（ブロック５３１２）。このウェブページは後でウェブブラウザで見ることができる。ウェブサーバは、情報更新して表示するために、プロジェクトスケジュールエディタのためのウェブページをブラウザに返す。プロジェクトスケジュールエディタセッション、データベースの情報のポスティング、ウェブブラウザにおけるエディタの再表示、生成されたウェブページの例は、図４７乃至図４９に示されている。
【０１１７】
タスク識別子のタスクへの割り当て
図５４は、本発明の一実施形態による、タスクＩＤを様々なレベルのプロジェクトメンバーに割り当てるプロセスを示すフローチャートである。ProjectTeamテーブル１２１０（図１２）は、プロジェクトの各プロジェクトメンバーのタスクに割り当てられたタスクＩＤに関する情報を含む。図１９乃至図４２は、ProjectTeamテーブル１２１０の例を示している。図５４に示したタスクＩＤ割り当てプロセスでは、ProjectTeamテーブル１２１０のnMemberTaskIDの値により、２つ以上のメンバースケジュールエディタセッションが同時に発生している時には、タスクＩＤは１つのレベルの２つ以上のタスクに割り当てられない。テーブルとプロセスにより、任意レベルのタスクがタスクＩＤにより一意的に識別されることが保証される。
【０１１８】
図５４のフローチャートのプロセスは、プロジェクトメンバーがメンバースケジュールエディタセッションを完了した後、サーバプロセッサ（ウェブサーバ）により実行される。サーバプロセッサは、ProjectTeamテーブル１２１０から、そのプロジェクト番号のプロジェクトメンバーの影響があった各タスクレベルの既存の最高のタスクＩＤを取得する（ブロック５４０２）。レベルタスクＩＤのどれかがゼロ（またはnull）である場合、そのレベルの最高既存タスクＩＤがnMemberTaskIDの値に設定される（ブロック５４０４）。あるプロジェクト番号の各プロジェクトメンバーは、スケジュールが作成される前に、そのプロジェクトの初めに一意的なメンバータスクＩＤを割り当てられる。プロジェクトチームの大きさに応じて、その番号は、チームが小さければモジュロ１０、チームが大きければモジュロ１００またはモジュロ１０００とすることができる。タスクＩＤはそのモジュロ（小さいチームは１０、大きいチームは１００または１０００）の増分である。エディタが新しく追加されたタスクを含む場合、タスクＩＤがそのタスクに割り当てられる（ブロック５４０６）。タスクのレベルに応じて、そのレベルの最高のタスクＩＤはモジュロ数だけ増加され、そのタスクに割り当てられる。新しいタスクが追加されるので、すべてのレベルの最高タスクＩＤが維持される。
【０１１９】
すべてのタスクがデータベースにポストされると、各レベルの最高タスクＩＤは、もし変更されていれば、そのプロジェクト番号のプロジェクトメンバーのProjectTeamテーブル１２１０において更新される（ブロック５４０８）。一例として、図４２のProjectTeamテーブル１２１０の値を、新しいタスクをメンバー「test１」に追加するために使用する。新しいタスクが「test１」のメンバースケジュールエディタセッションのレベル２とレベル３に追加される。新しいレベル２タスクの場合、最高タスクＩＤの６３を使用し、１０を加えて最高タスクＩＤを７３とし、その最高タスクＩＤの７３をレベル２タスクに割り当てる。新しいレベル３タスクの場合、最高タスクＩＤの３を使用し、１０を加えて最高タスクＩＤを１３とし、その最高タスクＩＤの１３をレベル３タスクに割り当てる。エディタセッションからすべてのタスク情報がポストされると、データベースのProjectTeamテーブルを更新して、test１のnLevel2MaxTaskIDの値を７３とし、nLevel3MaxTaskIDの値を１３とする。
【０１２０】
タスク情報の組織化及びインデックス付け
図５５は、本発明の一実施形態による、メンバースケジュールエディタにおけるタスク情報の組織化を示す画面である。この画面は、ウェブページに表示されるメンバースケジュールエディタの文書オブジェクトモデル（ＤＯＭ、Document  Object  Model）を示している。この情報はウェブブラウザに維持されている。一実施形態では、エディタのウェブページはテーブルを含むＨＴＭＬ形式であり、各行はスケジュールされたタスクに対応する。このフォームにより、情報をウェブページに入力し、ウェブサーバに処理のために送ることができる。このフォームはＪａｖａ（登録商標）スクリプトにより生成・維持・管理され得る。Ｊａｖａ（登録商標）スクリプトは、このフォーム中で生じるイベント（メニューからのアイテムの洗濯、チェックボックスの選択、ボタンの選択等）を処理する。メンバースケジュールエディタのテーブル中の各行には、（「ｘｘｘ」とラベルされた）インデックスを含むＩＤ値が与えられる。そのインデックスは各行で一意的である。行のすべての要素は、この一意的インデックスを使用してタスクに関する情報を格納・管理する。Ｊａｖａ（登録商標）スクリプトは、その一意的インデックスを含むＩＤ値を使用して、タスクに関する情報へのアクセスまたは設定をし、エディタのその行に表示されるものを制御する。
【０１２１】
このフォームは、タスクに関する情報を格納するがメンバースケジュールエディタにはその情報を表示しない隠れ要素を含んでいる。その隠れ要素は、タスクに関する情報を取得して設定するのに有用である。その情報とは、例えば、タスクＩＤ、タスクレベル、タスクに対して実行された操作（すなわち、予定日付の追加、削除、編集）、親タスクＩＤ、詳細タスク数等である。そのフォーム中の情報はすべて、表示されていても隠されていても、各タスクに関する情報の処理のためにウェブサーバに送られる。メンバースケジュールエディタのＤＯＭ表現により、Ｊａｖａ（登録商標）スクリプトによるエディタの表示のアクセスと制御が可能となる。図５７は、エディタの様々な要素のＩＤで使用されるインデックスがどのように作られるかを示している。タスク割り当てエディタとプロジェクトスケジュールエディタは、メンバースケジュールエディタとしての同様のＤＯＭ表現に従う。要素のＩＤはその行では一意的なインデックスを使用する。エディタは、図５５に示したより多くの情報を含み得る。
【０１２２】
図５６は、本発明の一実施形態による、様々な構成要素と各行に割り当てられたインデックスを示すメンバースケジュールエディタ例を示す画面である。インデックスは各行で一意的である。そのインデックスはアンダーライン「＿」により分けられた数字列を含む。タスクレベルが低いほど、インデックスはより大きい数字を含む。
【０１２３】
図５７は、本発明の一実施形態による、タスクの各行に対してインデックスをいかに生成するか、エディタの表示は初めてか、またはいずれかのレベルの新しいタスクがエディタに追加されるか示すフローチャートである。インデックスは文字、記号、または数字のシーケンスで始まる。図５６では、最初のシーケンスは「Ｒ＿１」である。このシーケンスはいかなるものでもよく、すべての行のインデックスで使用される。図５７のプロセスでは、（ａ）最初のシーケンスが設定され、（ｂ）シーケンス分離子（separator）が設定され、（ｃ）メンバーのスケジュールにすでにあるタスクを処理するためレベル１シーケンス番号が最初に１に設定され、そして（ｄ）エディタセッションのメンバーのスケジュールに追加されるタスクを処理するため他のレベル１シーケンス番号が１００００に設定される（ブロック５７０２）。１００００の替わりに他の大きな数でもよい。レベル１シーケンス番号は既存のスケジュールされたタスクを新しく追加されたタスクから区別するインデックスを与える。タスクが、ブロック５７０４においてレベル１タスクであり、ブロック５７０６において既存のタスクである場合、インデックスは、最初のシーケンス、シーケンス分離子、既存タスクのレベル１シーケンス番号を用いて生成され、レベル１シーケンス番号が１だけ増加される（ブロック５７０８）。タスクが、ブロック５７０４においてレベル１タスクであり、ブロック５７０６において新しく追加されたタスクである場合、インデックスは、追加タスク最初のシーケンス、シーケンス分離子、追加タスクのレベル１シーケンス番号を用いて生成され、レベル１シーケンス番号が１だけ増加される（ブロック５７１０）。
【０１２４】
生成されるインデックスは、図５５に示したように、そのタスクに関する情報を含む行のすべての要素のＩＤに使用される。タスクがブロック５７０４において下のレベルのタスクである場合、その親タスクのインデックスを決定し、その親タスクが有する詳細タスクの数を決定する（ブロック５７１２）。この情報は、親タスクに対応する行の要素から取得できる。親タスクが有する詳細タスク数を１だけ増加し、その親タスクのインデックス、シーケンス分離子、及び親タスクの詳細タスク数を用いてインデックスを生成する（ブロック５７１４）。生成されるインデックスは、下のレベルのタスクに対応する行のすべての要素に対するＩＤで使用される。エディタに表示するタスクがまだあれば（ブロック５７１８）、ブロック５７０４に戻り、エディタに表示すべき各タスク行に対してプロセス（最初のシーケンスを設定するステップを除く）を繰り返す。
【０１２５】
タスクに対応する行のインデックス付けは、Ｊａｖａ（登録商標）スクリプトがタスク情報を管理・維持できるようにするものである。インデックス付けはフォームの様々な要素のＩＤと名称で使用され、ＰＯＳＴ後にＪａｖａ（登録商標）スクリプトとＰＨＰがそれらのアトリビュートと値にアクセスして操作できるようにしている。Ｊａｖａ（登録商標）スクリプトはその要素を使用してタスクに関する情報を維持し、エディタにおける要素の表示を制御する。ウェブブラウザ（クライアントプロセッサ）はタスク情報とエディタを維持・管理するためにインデックス付けを使用するが、ウエブサーバ（サーバプロセッサ）はウェブブラウザからウェブサーバに送られる情報にアクセスするためにインデックス付けを使用する。一実施形態では、エディタのすべてのフォーム要素は名称−値ペア（name-value  pairs）としてウェブサーバに送られる。名称は、値が表している情報を示すストリングを有するインデックスよりなる。例として、レベル３タスク「クレーム（Claims）」の図５６に示したフォームの隠れた要素の名称は「R_１_２_１_３_TaskName」であり、これはタスクの名称「クレーム」に対応する値を有する。R_１に続くシーケンスは、このタスクが２つめのレベル１タスクの最初のレベル２タスクの３つめのレベル３タスクであることを示している。ウェブサーバはストリングとともにインデックスを含む名称を使用し、そのタスクに関する情報を含む値にアクセスする。ウェブサーバは図５７のフローチャートに示したのと同様のシーケンスに従って、インデックスを作り、次に名称を作り、フォーム要素から任意レベルの各タスクに関する情報を取得する。
【０１２６】
ハードウェアの概要
図５８は、本発明の実施形態を実施できるコンピュータシステム５８００を示すブロック図である。コンピュータシステム５８００は、ワークステーション１０２（図１）とウェブサーバ１０４（図１）の非限定的なシステム構成例を示している。コンピュータシステム５８００は、情報をやりとりする通信メカニズムすなわちバス５８０２と、バス５８０２に結合した情報を処理するプロセッサ５８０４とを有する。コンピュータシステム５８００は、さらに、情報とプロセッサ５８０４により実行される命令とを格納する、バス５８０２に結合したランダムアクセスメモリ（ＲＡＭ）またはその他のダイナミック記憶装置等のメインメモリ５８０６を含む。メインメモリ５８０６は、プロセッサ５８０４による命令の実行中に、一時的変数やその他の中間情報を記憶するために使用されてもよい。コンピュータシステム５８００は、さらに、プロセッサ５８０４のために静的な情報と命令とを記憶する、バス５８０２に結合された読み出し専用メモリ（ＲＯＭ）５８０８その他の静的記憶デバイスを含む。磁気ディスク、光ディスク、または光磁気ディスク等である記憶装置５８１０は、情報と命令を格納するために設けられ、バス５８０２に結合される。
【０１２７】
コンピュータユーザに情報を表示するため、コンピュータシステム５８００は、バス５８０２を介して、陰極線管（ＣＲＴ）や液晶ディスプレイ（ＬＣＤ）等のディスプレイ５８１２に結合されてもよい。プロセッサ５８０４に情報とコマンド選択を送るために、英数字その他のキーを含む入力装置５８１４がバス５８０２に結合される。他のタイプのユーザ入力装置として、マウス、トラックボール、またはカーソル方向キー等であるカーソル制御部５８１６がある。これらは、プロセッサ５８０４に方向情報とコマンド選択を送り、ディスプレイ５８１２上のカーソルの動きを制御する。この入力装置は、典型的には２つの軸、すなわち第１の軸（例えばｘ軸）と第２の軸（例えばｙ軸）で２自由度を有し、これにより平面内の点を特定することができる。
【０１２８】
本発明は、個々に説明した方法を実装するためのコンピュータシステム５８００の使用にも関する。本発明の一実施形態によると、これらの方法のコンピュータシステム５８００による実行は、メインメモリ５８０６に含まれる１つ以上の命令の１つ以上のシーケンス（を含むコンピュータプログラム）をプロセッサ５８０４が実行することにより行われる。かかる命令（を含むコンピュータプログラム）は、他のコンピュータ読み取り可能媒体である記憶デバイス５８０６等から、メインメモリ５８１０に読み込まれてもよい。メインメモリ５８０６に含まれる命令シーケンス（を含むコンピュータプログラム）の実行により、プロセッサ５８０４はここに説明したプロセスステップを実行する。他の実施形態では、本発明の実装には、ソフトウェア命令に替えて、またはこれと組み合わせて、ソフトウェアがハードウェアに組み込まれた回路を使用してもよい。このように、本発明の実施形態は、ハードウェア回路とソフトウェアの特定の組み合わせに限定はされない。
【０１２９】
ここで、「コンピュータ読み取り可能媒体」とは、プロセッサ５８０４が実行する命令を提供する任意の媒体をいう。かかる媒体は、不揮発性媒体、揮発性媒体、伝送媒体等の多数の形式をとることができるが、これらに限定はされない。不揮発性媒体の例としては、記憶装置５８１０等の光ディスク、磁気ディスク、光磁気ディスク等があるが、これらに限定はされない。揮発性媒体には、ダイナミックメモリであるメインメモリ５８０６等が含まれる。伝送媒体には、同軸ケーブル、銅ワイヤ、光ファイバが含まれ、バス５８０２を含むワイヤも含まれる。伝送媒体は、音波や光波であって、無線通信や赤外線データ通信中に生成されるものの形態を取ることもできる。
【０１３０】
コンピュータ読み取り可能媒体の一般的な形態には次のものが含まれるが、これに限定はされない。例えば、フロッピー（登録商標）ディスク、フレキシブルディスク、ハードディスク、磁気テープ、その他の磁気媒体、ＣＤ−ＲＯＭ、ＤＶＤその他の光媒体または光磁気媒体、パンチカード、紙テープ、その他の穴のパターンを有する物理媒体、ＲＡＭ、ＰＲＯＭ、ＥＰＲＯＭ、フラッシュＥＰＲＯＭ、その他のメモリチップまたはカートリッジ、以下に説明する搬送波、コンピュータが読み取れるその他の任意の媒体。
【０１３１】
プロセッサ５８０４が実行する１つ以上の命令の１つ以上のシーケンスの搬送には、コンピュータ読み取り可能媒体の様々な形態が使用される。例えば、命令は最初にリモートのコンピュータの磁気ディスク上に担われていてもよい。リモートコンピュータは、その命令をそのダイナミックメモリにロードして、モデムを用いて電話回線を介してその命令を送信することができる。コンピュータシステム５８００にあるモデムが、電話回線上のデータを受信し、赤外トランスミッタを用いてそのデータを赤外信号に変換することができる。赤外検出器が赤外信号で搬送されたそのデータを受信して、適当な回路がそのデータをバス５８０２に載せることができる。バス５８０２はそのデータをメインメモリ５８０６に送り、プロセッサ５８０４はそのメインメモリ５８０６から命令を読み出して実行する。メインメモリ５８０６が受け取った命令は、プロセッサ５８０４が実行する前か後に、任意的に、記憶装置５８１０に記憶されてもよい。
【０１３２】
コンピュータシステム５８００は、バス５８０２に結合した通信インターフェイス５８１８も含む。通信インターフェイス５８１８は、ローカルネットワーク５８２２に接続されたネットワークリンク５８２０に結合した双方向データ通信を提供する。例えば、通信インターフェイス５８１８は、統合デジタルサービスネットワーク（ＩＳＤＮ）カードまたはモデムであって、対応するタイプの電話回線へのデータ通信接続を提供してもよい。他の例として、通信インターフェイス５８１８は、ローカルエリアネットワーク（ＬＡＮ）カードであって、互換性のあるＬＡＮへのデータ通信接続を提供してもよい。無線リンクで実装してもよい。かかる実装では、通信インターフェイス５８１８は、いろいろなタイプの情報を表すデジタルデータストリームを搬送する電気的、電磁気的、または光学的信号を送受信する。
【０１３３】
ネットワークリンク５８２０は、一般的には、１つ以上のネットワークを介して他のデータデバイスへのデータ通信を提供する。例えば、ネットワークリンク５８２０は、ホストコンピュータ５８２４またはインターネットサービスプロバイダ（ＩＳＰ）５８２６により運営されているデータ機器へのローカルネットワーク５８２２を介した通信を提供する。ＩＳＰ５８２６は、これに対して、現在は一般的に「インターネット」５８２８と呼ばれている、世界規模のパケットデータ通信ネットワークを介してデータ通信サービスを提供する。ローカルネットワーク５８２２とインターネット５８２８は、両方とも、デジタルデータストリームを担う電気的、電磁気的、または光学的信号を使用する。様々なネットワーク中の信号やネットワークリンク５８２０と通信インターフェイス５８１８上の信号は、コンピュータシステム５８００との間でデジタルデータを搬送し、情報を伝送する搬送波の形態例である。
【０１３４】
コンピュータシステム５８００は、ネットワーク、ネットワークリンク５８２０、及び通信インターフェイス５８１８を介して、メッセージを送信しプログラムコードを含むデータを受信することができる。インターネットの例では、サーバ５８３０は、インターネット５８２８、ＩＳＰ５８２６、ローカルネットワーク５８２２、及び通信インターフェイス５８１８を介して、要求されたアプリケーションプログラムのコードを送信してもよい。
【０１３５】
受信したコードは、受信しつつプロセッサ５８０４により実行されてもよいし、後で実行するために記憶装置５８１０またはその他の不揮発性記憶装置に記憶されてもよい。このように、コンピュータシステム５８００は、搬送波の形態でアプリケーションコードを取得してもよい。
【０１３６】
拡張及び代替
本発明の別の実施形態は上記の説明にわたって、実施形態の理解を容易にする場所で説明した。さらにまた、本発明を具体的な実施形態を参照して説明した。しかし、本発明の実施形態の広い範囲から逸脱することなく、様々な修正や変更を加えることができることは明らかである。それゆえ、明細書と図面は例示であって限定ではないと考えるべきである。
【０１３７】
また、本明細書では、ステップを特定の順序で記載し、ステップを識別するために英文字または英数字のラベルを使用した。説明中でとくに言及しない限り、本発明の実施形態はかかるステップを実行するいかなる順序にも必ずしも限定されない。特に、ラベルはステップを識別しやすいように使用したものであり、かかるステップを実行する順序を指定し、または要求するためのものではない。
【図面の簡単な説明】
【０１３８】
本発明は、添付した図面において実施例によって示すが、本発明を限定するものではない。同じ参照数字は同じ要素を示す。
【図１Ａ】本発明の一実施形態による、タスク割り当てエディタの画面である。
【図１Ｂ】本発明の一実施形態による、タスク割り当てウェブページの一例の画面である。
【図２Ａ】本発明の一実施形態による、プロジェクトスケジュールエディタの画面である。
【図２Ｂ】本発明の一実施形態によるプロジェクトスケジュールウェブページの一例の画面である。
【図３Ａ】本発明の一実施形態による、個人スケジュールエディタの画面である。
【図３Ｂ】本発明の一実施形態による、メンバーのスケジュールウェブページの一例の画面である。
【図４】本発明の一実施形態による、プロジェクトメンバーがエディタにログインするログインウェブページの画面である。
【図５】本発明の一実施形態を実施する動作環境を示す図である。
【図６】本発明の一実施形態を実施する通信アーキテクチャを示す図である。
【図７】本発明の一実施形態によるシステムのクライアントプロセッサとサーバプロセッサ間のインターフェイスを示す図である。
【図８】本発明の一実施形態によるログインウェブページを用いてプロジェクトメンバーまたはプロジェクトマネージャがエディタにログインするシーケンス図である。
【図９】本発明の一実施形態による、プロジェクトマネージャとタスク割り当てエディタとのセッションを示すシーケンス図である。
【図１０】本発明の一実施形態による、プロジェクトマネージャとプロジェクトスケジュールエディタとのセッションを示すシーケンス図である。
【図１１】本発明の一実施形態による、プロジェクトマネージャとプロジェクトメンバースケジュールエディタとのセッションを示すシーケンス図である。
【図１２】本発明の一実施形態による、プロジェクトとプロジェクトメンバーのタスク割り当てとタスクスケジュール情報とを記憶し管理するために使用するデータベーステーブルのスキーマを示す図である。
【図１３】本発明の一実施形態による、プロジェクトスケジュールが最初に設定される時のシステムの使用を示すフローチャートである。
【図１４】本発明の一実施形態による、プロジェクトメンバーが既存のスケジュールを修正するメンバースケジュールエディアタの使用例を示すフローチャートである。
【図１５Ａ】本発明の一実施形態による、タスクのスケジュールの一部を修正するメンバースケジュールエディタの画面を示す図である。
【図１５Ｂ】本発明の一実施形態による、図１５Ａの修正後に更新（Update）を選択した場合のメンバースケジュールエディタの画面を示す図である。
【図１６】本発明の一実施形態による、上のレベルのタスクを下のレベルのタスクで更新するプロセスを示すフローチャートである。
【図１７】本発明の一実施形態による、様々なプロジェクトメンバーに割り当てたサブタスクを用いてプロジェクトタスクスケジュールを集計するプロセスを示すフローチャートである。
【図１８】本発明の一実施形態によるDefaultTasksテーブルのエントリー例の画面を示す図である。
【図１９】本発明の一実施形態によるProjectTeamテーブルのエントリー例を示す画面である。
【図２０】本発明の一実施形態によるタスク割り当てエディタセッション例を示す画面である。
【図２１】本発明の一実施形態による、メンバーがタスク割り当てエディタの「終了」（Finish）ボタンを選択した時に、TaskAssignmentテーブルに記憶される情報を示す画面である。
【図２２】本発明の一実施形態によるタスク割り当てエディタセッション後に生成されるウェブページを示す画面である。
【図２３】本発明の一実施形態によるプロジェクトスケジュールエディタセッション例を示す画面である。
【図２４】本発明の一実施形態による、メンバーがプロジェクトスケジュールエディタの「終了」（Finish）ボタンを選択した時に、TopLevelProjectTaskテーブルに記憶される情報を示す画面である。
【図２５】本発明の一実施形態による、メンバーがプロジェクトスケジュールエディタの「終了」（Finish）ボタンを選択した時に、TaskAssignmentテーブルに記憶される情報を示す画面である。
【図２６】本発明の一実施形態によるプロジェクトスケジュールエディタセッション後に生成されるウェブページを示す画面である。
【図２７】本発明の一実施形態によるメンバースケジュールエディタセッション例を示す画面である。
【図２８】本発明の一実施形態による、「更新」（Update）ボタンを選択した結果を示す画面である。
【図２９】本発明の一実施形態による、メンバーがメンバースケジュールエディタの「終了」（Finish）ボタンを選択した時に、TaskAssignmentテーブルで更新される情報を示す画面である。
【図３０】本発明の一実施形態による、メンバーがメンバースケジュールエディタの「終了」（Finish）ボタンを選択した時に、MemberTasksテーブルに追加される情報を示す画面である。
【図３１】本発明の一実施形態による、メンバーがメンバースケジュールエディタの「終了」（Finish）ボタンを選択した時に、Level1MemberTaskテーブルに追加される情報を示す画面である。
【図３２】本発明の一実施形態による、メンバーがメンバースケジュールエディタの「終了」（Finish）ボタンを選択した時に、Level2MemberTaskテーブルに追加される情報を示す画面である。
【図３３】本発明の一実施形態によるメンバースケジュールエディタセッション後に生成されるウェブページを示す画面である。
【図３４】本発明の一実施形態による、プロジェクトメンバーとマネージャのメンバースケジュールエディタセッション例を示す画面である。
【図３５】本発明の一実施形態による、「更新」（Update）ボタンを選択した結果を示す画面である。
【図３６】本発明の一実施形態による、メンバーがメンバースケジュールエディタの「終了」（Finish）ボタンを選択した時に、TaskAssignmentテーブルで更新される情報を示す画面である。
【図３７】本発明の一実施形態による、メンバーがメンバースケジュールエディタの「終了」（Finish）ボタンを選択した時に、MemberTasksテーブルに追加される情報を示す画面である。
【図３８】本発明の一実施形態による、メンバーがメンバースケジュールエディタの「終了」（Finish）ボタンを選択した時に、Level1MemberTaskテーブルに追加される情報を示す画面である。
【図３９】本発明の一実施形態による、メンバーがメンバースケジュールエディタの「終了」（Finish）ボタンを選択した時に、Level2MemberTaskテーブルに追加される情報を示す画面である。
【図４０】本発明の一実施形態による、メンバーがメンバースケジュールエディタの「終了」（Finish）ボタンを選択した時に、Level3MemberTaskテーブルに追加される情報を示す画面である。
【図４１】本発明の一実施形態による、マネージャのメンバースケジュールエディタセッション後に生成されるウェブページを示す画面である。
【図４２】本発明の一実施形態による、２つのメンバースケジュールエディタセッション後のProjectTeamテーブル中のエントリーを示す画面である。
【図４３】本発明の一実施形態による、プロジェクトメンバーマネージャとのメンバースケジュールエディタセッション例を示す画面である。
【図４４】本発明の一実施形態による、メンバーがメンバースケジュールエディタの「終了」（Finish）ボタンを選択した時に、Level1MemberTaskテーブルに追加される情報を示す画面である。
【図４５】本発明の一実施形態による、メンバーがメンバースケジュールエディタの「終了」（Finish）ボタンを選択した時に、Level2MemberTaskテーブルに追加される情報を示す画面である。
【図４６】本発明の一実施形態による、マネージャのメンバースケジュールエディタセッション後に生成されるウェブページを示す画面である。
【図４７】本発明の一実施形態による、プロジェクトスケジュールとのセッション例を示す画面である。
【図４８】本発明の一実施形態による、メンバーが「集約」（Consolidate）ボタンを選択した後に再度表示されるプロジェクトスケジュールエディタを示す画面である。
【図４９】本発明の一実施形態による、メンバーがプロジェクトスケジュールエディタの「集約」（Consolidate）ボタンと「終了」（Finish）ボタンを選択した時に、TopLevelProjectTaskテーブルに記憶される情報を示す画面である。
【図５０】本発明の一実施形態によるプロジェクトスケジュールエディタセッション後に生成されるウェブページを示す画面である。
【図５１】本発明の一実施形態による、プロジェクトマネージャがプロジェクトメンバーにタスクを割り当ててプロジェクトタスクのスケジュールを設定する時のシステムの振る舞いを示すフローチャートである。
【図５２】本発明の一実施形態による、プロジェクトメンバーが自分のタスクのスケジュールを設定する時のシステムの振る舞いを示すフローチャートである。
【図５３】本発明の一実施形態による、プロジェクトマネージャがメンバーのスケジュールをプロジェクトスケジュールと集約する時のシステムの振る舞いを示すフローチャートである。
【図５４】本発明の一実施形態による、タスクＩＤを様々なレベルのプロジェクトメンバーに割り当てるプロセスを示すフローチャートである。
【図５５】本発明の一実施形態による、メンバースケジュールエディタにおけるタスク情報の組織化を示す画面である。
【図５６】本発明の一実施形態による、様々な構成要素と各行に割り当てられたインデックスを示すメンバースケジュールエディタ例を示す画面である。
【図５７】本発明の一実施形態による、タスクの各行に対してインデックスをいかに生成するか、エディタの表示は初めてか、またはいずれかのレベルの新しいタスクがエディタに追加されるか示すフローチャートである。
【図５８】本発明の実施形態を実施できるコンピュータシステムを示すブロック図である。
【符号の説明】
【０１３９】
５００  ネットワーク
５０１、５０２  ワークステーション
５０６、５３６  データベース
５０７  部課ウェブサーバ
５０８、５３８  ワーク／プロジェクトデータ
５２４  アクセスポイント
５３０  部門ウェブサーバ
６０１  ユーザインターフェイス
６０２  クライアントプロセッサ
６０４  サーバプロセッサ
６０６  データベース
５８０２  バス
５８０４  プロセッサ
５８０６  メインメモリ
５８０８  ＲＯＭ
５８１０  記憶装置
５８１２  ディスプレイ
５８１４  入力装置
５８１６  カーソル制御装置
５８２０  ネットワークリンク
５８２２  ローカルネットワーク
５８２４  ホスト
５８２６  インターネットサービスプロバイダ
５８２８  インターネット
５８３０  サーバ
【図１Ａ】
2007328791.tif 000003
【図１Ｂ】
2007328791.tif 000004
【図２Ａ】
2007328791.tif 000005
【図２Ｂ】
2007328791.tif 000006
【図３Ａ】
2007328791.tif 000007
【図３Ｂ】
2007328791.tif 000008
【図４】
2007328791.tif 000009
【図５】
2007328791.tif 000010
【図６】
2007328791.tif 000011
【図７】
2007328791.tif 000012
【図８】
2007328791.tif 000013
【図９】
2007328791.tif 000014
【図１０】
2007328791.tif 000015
【図１１】
2007328791.tif 000016
【図１２】
2007328791.tif 000017
【図１３】
2007328791.tif 000018
【図１４】
2007328791.tif 000019
【図１５Ａ】
2007328791.tif 000020
【図１５Ｂ】
2007328791.tif 000021
【図１６】
2007328791.tif 000022
【図１７】
2007328791.tif 000023
【図１８】
2007328791.tif 000024
【図１９】
2007328791.tif 000025
【図２０】
2007328791.tif 000026
【図２１】
2007328791.tif 000027
【図２２】
2007328791.tif 000028
【図２３】
2007328791.tif 000029
【図２４】
2007328791.tif 000030
【図２５】
2007328791.tif 000031
【図２６】
2007328791.tif 000032
【図２７】
2007328791.tif 000033
【図２８】
2007328791.tif 000034
【図２９】
2007328791.tif 000035
【図３０】
2007328791.tif 000036
【図３１】
2007328791.tif 000037
【図３２】
2007328791.tif 000038
【図３３】
2007328791.tif 000039
【図３４】
2007328791.tif 000040
【図３５】
2007328791.tif 000041
【図３６】
2007328791.tif 000042
【図３７】
2007328791.tif 000043
【図３８】
2007328791.tif 000044
【図３９】
2007328791.tif 000045
【図４０】
2007328791.tif 000046
【図４１】
2007328791.tif 000047
【図４２】
2007328791.tif 000048
【図４３】
2007328791.tif 000049
【図４４】
2007328791.tif 000050
【図４５】
2007328791.tif 000051
【図４６】
2007328791.tif 000052
【図４７】
2007328791.tif 000053
【図４８】
2007328791.tif 000054
【図４９】
2007328791.tif 000055
【図５０】
2007328791.tif 000056
【図５１】
2007328791.tif 000057
【図５２】
2007328791.tif 000058
【図５３】
2007328791.tif 000059
【図５４】
2007328791.tif 000060
【図５５】
2007328791.tif 000061
【図５６】
2007328791.tif 000062
【図５７】
2007328791.tif 000063
【図５８】
2007328791.tif 000064