(57)【要約】      （修正有）【課題】クライアント・サーバベースのプロジェクトスケジュール管理システムによりプロジェクトスケジュールを効果的に管理する技術の提供。【解決手段】クライアント・サーバベースプロジェクトスケジュール管理システムは、プロジェクトの各メンバーによる各種スケジューリングタスクを実行するため、ウェブブラウザを介しアクセス可能な複数のエディタを有する。クライアントにより実行可能なコードがサーバにより生成され、スケジュールに関する情報と共にクライアントに転送される。クライアントは、このコードを実行し、各エディタを表示し、新規の又は更新された情報を管理及び維持する。タスクの各行は対応するオブジェクトにより表され、エディタ要素は各オブジェクトにより直接アクセス可能なオブジェクト属性である。データベースクエリが、使用される情報と置換されるプレースホルダーを含むコンスタント文字列に基づきサーバにより生成される。【選択図】図３２
2008234646.tif 000002
【特許請求の範囲】
【請求項１】
プロジェクトスケジュールシステムにおいてタスクを管理するためのコンピュータにより実現される方法であって、
表示テーブルの各行がプロジェクトスケジュールに係るタスクと前記プロジェクトスケジュールシステムに係るエディタの各要素に対応する表示値とに対応する前記表示テーブルの行に影響を与えるイベントに応答して、クラスオブジェクトが前記イベントに基づき前記エディタの要素に対応する値を操作するステップを有し、
前記エディタの１以上の要素は、前記クラスオブジェクトの属性であり、
前記エディタの要素に対応する値を操作するステップは、前記クラスオブジェクトの１以上のメンバーファンクションが、
前記要素に対応する前記クラスオブジェクトの１以上の属性に直接アクセスするステップと、
前記イベントに基づき前記クラスオブジェクトの１以上の属性のそれぞれの値を直接操作するステップと、
を実行することから構成される方法。
【請求項２】
前記値を操作するステップは、クライアントにより実行され、
当該方法はさらに、
前記クライアントが前記１以上の属性の少なくとも１つに対する値をサーバに送信するステップと、
前記サーバが前記１以上の属性の少なくとも１つに対する値をデータベースに格納するステップと、
を有する、請求項１記載の方法。
【請求項３】
前記１以上の属性のそれぞれの値を操作するステップは、前記クラスオブジェクトの１以上の属性の少なくとも１つに対する値を変更する、請求項１記載の方法。
【請求項４】
前記イベントは、前記エディタとのユーザのやりとりに基づく、請求項３記載の方法。
【請求項５】
前記１以上の属性のそれぞれの値を操作するステップは、前記クラスオブジェクトの１以上の属性の少なくとも１つの表示を変更する、請求項１記載の方法。
【請求項６】
前記イベントは、前記エディタとのユーザのやりとりに基づく、請求項５記載の方法。
【請求項７】
前記クラスオブジェクトがインスタンス化されるクラスは、クライアント上に前記エディタを表示及び管理するよう動作する前記エディタのＪａｖａＳｃｒｉｐｔプロセッサコンポーネントのコンポーネントから構成される、請求項１記載の方法。
【請求項８】
前記クラスオブジェクトは、前記表示テーブルに対応する、請求項１記載の方法。
【請求項９】
前記クラスオブジェクトは、前記表示テーブルの行に対応する、請求項１記載の方法。
【請求項１０】
前記クラスオブジェクトは、前記表示テーブルの行のセルに対応する、請求項１記載の方法。
【請求項１１】
前記クラスオブジェクトは、前記表示テーブルの行のセルに含まれる要素に対応する、請求項１記載の方法。
【請求項１２】
請求項１乃至１１何れか一項記載の方法を１以上のプロセッサに実行させる１以上の命令シーケンスを有するコンピュータ可読記憶媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、一般にプロジェクト管理に関し、より詳細には、クライアント・サーバネットワークアーキテクチャによりプロジェクトスケジュールを管理するためのタスク管理システムに関する。
【背景技術】
【０００２】
製品開発プロジェクトは、典型的には、監視及び管理のための労力をかなり要する。さらに、コンピュータソフトウェア開発プロジェクトは、本来的には管理することが困難である。この困難さは、ソフトウェアパッケージから構成される大量のタスク及び関連する提出物と、当該タスク及び提出物に係る大量の事務処理及びプロジェクトファイルとに部分的に起因する。他の原因となるファクタは、ソフトウェアパッケージの開発サイクルの期間中に各タスクと提出物との間に確立された複雑な相互依存性群に関するものである。さらなる他の原因となるファクタは、開発中のソフトウェアに関する設計仕様を生成及び維持する必要である。
【０００３】
開発プロジェクトの管理は、典型的には、プロジェクト文書へのアクセス、スケジュールなどを整理、維持及び制御することを含む。さらに、企業組織内では、しばしば同時に実行される開発プロジェクトが複数存在し、このため、文書管理作業が大きく拡大する。従来、マスタープロジェクトスケジュールの管理は、手作業によりデータをスケジューリングアプリケーションに入力し、手作業によりスケジュール間のリンクを生成し、手作業により各開発者のタスクスケジュールをマスタープロジェクトスケジュールに集約させることを伴ってきた。これは、監視及びクオリティの制御がほとんどないため、面倒で間違いやすいタスクである。
【０００４】
マスタープロジェクトスケジュールはしばしば流動的なものであり、このため管理には、タスク状態及び関連するスケジュール更新を開発者に求めることとなる。しばしば、開発者によって管理に対して提供されるフィードバックは、ほとんど監視されておらず、厳格なポリシー、手順又は検証プロセスに従うものでない。このため、プロジェクトスケジュールの実際の状態は、各タスクの進捗が主観により支配され、しばしばタスクを割り当てられた各個人による独立的な進捗レポートとなってしまうため、確定することが困難となる。
【０００５】
パブリック及びプライベートネットワークは、プロジェクトチームの各メンバーがプロジェクトに関するすべての情報を取得するための有用かつシンプルな通信機構を提供する。プロジェクト及びプロジェクトメンバーに関するウェブページを維持することは、プロジェクトチームの各メンバーが当該プロジェクトの状態を判断するためスケジュールに容易にアクセスすることを可能にする。しかしながら、プロジェクトチームの各メンバーのスケジュールを生成及び更新することに関するタスクと、各メンバーのすべてのスケジュールを１つのプロジェクトスケジュールに統合することに関するタスクは、簡単なものではない。
【０００６】
プロジェクトスケジュール管理の１つのアプローチは、ＨＴＭＬエディタを使用して、すべてのスケジュールを手作業により生成することに関するものである。プロジェクトマネージャは、主要なプロジェクトタスクを表示するプロジェクトスケジュール全体を生成することができる。プロジェクトタスクは、いくつかのサブタスクに分割可能であり、これらのサブタスクが非公式にプロジェクトチームの各メンバーに割当て可能である。その後、プロジェクトチームの各メンバーは、個別のメンバースケジュールの形式により統一されていないリスクはあるが、メンバースケジュールを生成することが可能である。すべてのメンバーのスケジュールから、プロジェクトマネージャは当該プロジェクトスケジュールに関するすべてのサブタスクスケジュールを集計し、全体的なプロジェクトスケジュールを更新することが可能となる。さらに、すべてのスケジュールは、各タスクのすべてのスケジュールの履歴を維持することが可能である。小さなグループでは、スケジューリングは退屈なものである。大きなグループでは、スケジューリングは、特にプロジェクトタスクスケジュールによるすべてのサブタスクスケジュールの集計は、複雑かつ退屈なものである。
【０００７】
プロジェクトスケジュール管理の他のアプローチは、ネットワークベースプロジェクトスケジュール管理システムを介し相互依存した各プロセスを自動化することに関する。例えば、手続き型のコンピュータプログラミング言語が、ネットワークベースプロジェクトスケジュール管理システムを開発するのに利用可能である。このような自動化されたシステムでは、グローバルファンクションがプロジェクトスケジュール管理システムのすべてのタスクを実行可能である。しかしながら、当該システムの各機能を変更又は訂正することは、プログラムにおいて変更が必要となる部分を特定するなど、困難な問題を生じさせる可能性がある。さらに、システムの一部の変更はシステムの他の部分に影響を与える可能性があり、正しく実装されない場合には、システムの機能を中断させる可能性がある。さらに、システムに対するグローバル変更の実装やシステムに対するコンポーネントの追加が各コードモジュールへの変更又は新たなコードの開発を必要とする可能性がある場合、複数のエディタページなど同様のシステムコンポーネント及び機能に対して、個別のコードが開発される必要が生ずるかもしれない。
【０００８】
本セクションで説明されたアプローチは、求めることが可能であるが、必ずしも以前に想到又は追求されてきたアプローチである必要はない。特段の記載がない場合、本セクションにおいて説明されるアプローチの何れも単に本セクションに含めることによって従来技術とみなされると考えられるべきでない。
【発明の開示】
【発明が解決しようとする課題】
【０００９】
本発明の課題は、クライアント・サーバベースのプロジェクトスケジュール管理システムによりプロジェクトスケジュールを効果的に管理するための技術を提供することである。
【００１０】
より詳細には、本発明は、エディタを構成するのに利用されるオブジェクトのためのシステム及び方法に関する。当該オブジェクトは、直接アクセス及び操作可能なエディタのラップされたＤＯＭ（Ｄｏｃｕｍｅｎｔ  Ｏｂｊｅｃｔ  Ｍｏｄｅｌ）要素を含む。
【課題を解決するための手段】
【００１１】
クライアント・サーバベースプロジェクトスケジュール管理システムにおけるプロジェクトスケジュールの管理は、クライアントとサーバのそれぞれにより実行される機能とそれらの間の通信に関する。実施例によると、スケジュール管理システムに係るエディタを閲覧するリクエストを受信することに応答して、サーバはデータベースからのスケジュールに関する情報にアクセスする。その後、サーバは当該情報をエディタに表示し、クライアントによりエディタを管理するためのクライアントにより実行可能なコードを生成し、クライアントに転送する。これにより、クライアントは、エディタに関連して抽出された情報を表示し、エディタを介しユーザから入力されるデータを管理及び維持するため、サーバにより生成されたコードを実行することが可能となる。
【００１２】
実施例によると、クライアントがエディタを介し入力データを受信すると、クライアントは、サーバにより生成されたクライアントにより実行可能なコードの一部を実行することによって、当該情報を管理及び維持する。ある時点において、クライアントはデータベースに格納するため、この新たな情報をサーバに転送する。以降においてクライアントがエディタに係るウェブページをリクエストすることに応答して、サーバはデータベースからの該当するエディタに固有の情報にアクセスし、抽出した情報をエディタに係るウェブページに表示するためのさらなるクライアントにより実行可能なコードを生成する。当該情報及びコードは、ウェブページに情報を表示するためクライアントに転送される。
【００１３】
実施例によると、サーバ動作は、サーバによるＰＨＰ（Ｈｙｅｒｔｅｘｔ  Ｐｒｅｐｒｏｃｅｓｓｏｒ）スクリプトコードの実行に基づき、クライアント動作は、サーバにより生成されたＪａｖａＳｃｒｉｐｔコードのクライアントによる実行に基づく。
【００１４】
実施例によると、ネットワークベースプロジェクトスケジュール管理システムにおけるデータベースクエリの自動生成は、リクエストに係る特定のエディタに関連した特定の“コンスタントクエリ”文字列をプロジェクトスケジュール管理システムから特定することに関する。コンスタントクエリ文字列は１以上のプレースホルダー文字列を有し、各プレースホルダー文字列は、データベースに送信するためのデータベースクエリを生成するため、プレースホルダー文字列が何れの変数値と置換されるか特定する。データベースクエリは、何れかのプレースホルダー文字列を対応する変数値と置換することによって自動生成され、これにより、生成されたクエリはデータベースに送信され、結果を返すことが可能となる。さらに、“プレースホルダー文字列のための定数”が、何れかの埋め込まれたプレースホルダー文字列をコンスタントクエリ文字列から検索し、当該プレースホルダー文字列を置換するための適切な値を特定するのに役立つよう利用されてもよい。プレースホルダー文字列を置換するのに使用される値は、ユーザエディタセッション及び／又はデータベースから取得されてもよい。実施例によると、コンスタントクエリ文字列は、プロジェクトスケジュール管理システムの各エディタコンポーネントの基本的特徴に係るクラスパッケージにおいて定義される。
【００１５】
実施例によると、プロジェクトスケジュールシステムにおけるスケジュールタスクの管理は、スケジュール情報が格納されているテーブルの行に影響を与えるイベントに応答することに関し、テーブルの各行はプロジェクトスケジュールに係るタスクに対応し、プロジェクトスケジュールシステムに係るエディタの各要素に対応する各値を格納する。このようなイベントに応答して、影響を受けた行に対応するクラスオブジェクトが、当該イベントに基づきエディタの各要素に対応する各値を操作する。エディタの各要素はクラスオブジェクトの属性として構成されているため、クラスオブジェクトは、これらの要素に対応し、イベントに基づきクラスの属性値を直接操作可能なオブジェクト属性に直接アクセス可能である。このような属性の操作は、属性の表示を変更しうる属性値の変更を含むかもしれない。
【発明の効果】
【００１６】
本発明によると、クライアント・サーバベースのプロジェクトスケジュール管理システムによりプロジェクトスケジュールを効果的に管理するための技術を提供することが可能となる。
【発明を実施するための最良の形態】
【００１７】
クライアント・サーバベースのプロジェクトスケジュール管理システムによりプロジェクトスケジュールを管理するための技術が記載される。これらの技術は、主としてソフトウェア開発プロジェクトを参照して説明されるが、当業者は、本発明の効果がまた、他の開発プロジェクトに当該技術を適用するときにも利用可能であると認識すべきである。以下では、説明のため多数の具体的詳細が、本発明の完全なる理解を提供するため与えられる。しかしながら、本発明はこれらの具体的詳細なしに実現可能であるということは明らかであろう。他の例では、本発明を不必要に不明りょうにすることを回避するため、周知の構成及び装置はブロック図により示される。
【００１８】
［タスク割当てエディタ］
図１Ａは、本発明の実施例によるタスク割当てエディタの画面図である。タスク割当てエディタ１０２は、ユーザがプロジェクトにおいて完了されるべきプロジェクトタスクを作成するのを支援する。いくつかの組織では、組織に関連して実行されるすべてのプロジェクトに共通したデフォルトプロジェクトタスクが存在する。これらのプロジェクトタスクには、プロジェクトメンバーに割り当てられるサブタスクが関連付けされる。典型的には、プロジェクトマネージャが、プロジェクトメンバーに各タスクを設定及び割り当てる。プロジェクトマネージャは、このタスク割当てエディタ１０２を利用して、プロジェクトのプロジェクトタスクを設定し、各プロジェクトタスクについてサブタスクを生成し、これらサブタスクをメンバーに割り当てることが可能である。プロジェクトマネージャがタスクの追加及び割当てをしている間、タスク割当てに関する情報は、タスク割当てエディタ１０２に格納及び維持される。マネージャがタスク割当てエディタ１０２を用いてセッションを完了すると、タスク割当て情報がデータベースにわたされ、格納され、維持される。
【００１９】
ユーザが図１Ａのタスク割当てエディタ１０２の“終了”ボタンを選択することに応答してなど、タスク割当てセッションが完了すると、タスク割当てウェブページ１０４が、各プロジェクトメンバーに割り当てられるタスクを表示するため、ウェブサーバにおいて自動生成される。図１Ｂは、本発明の実施例によるタスク割当てウェブページのサンプルの画面図である。タスク割当てエディタ１０２を介し入力及び編集されるタスク及びタスク割当て情報は、ウェブブラウザに表示される際、ウェブページにある形式により表示される。すべてのタスクとタスクの割当ては、好ましくは、各行がタスクに対応し、タスク割当てエディタ１０２とタスク割当てウェブページ１０４に表示される１以上のデータベーステーブル内に格納される。
【００２０】
一実施例によると、タスク割当てマネージャ１０２（図１Ａ）は、各種処理を実行するのに利用可能なボタン（“詳細追加”、“上への行の追加”、“下への行の追加”、“削除”及び“終了”など）を含む。“終了”ボタンは、エディタセッションを終了し、データベースに格納及び維持するタスク割当て情報を送信する。その他のボタンは、タスクに対応する行のチェックボックスを選択することによって選択される必要があるタスクに対して各処理を実行する。“詳細追加”ボタンは、マネージャがサブタスクを追加し、プロジェクトメンバーに割り当てることができるように、プロジェクトタスクの下方に行を追加する。“上への行の追加”及び“下への行の追加”ボタンは、マネージャがさらなるプロジェクトタスクを追加できるように、又はさらなるサブタスクを追加及び割り当てできるように、選択されたタスク（プロジェクトタスク又はサブタスク）に対応する行の上下に行を追加する。追加される行数は、“下への行の追加”ボタンの隣の“行数”メニュー選択によって設定される。“削除”ボタンは、選択されたタスクを削除し、プロジェクトからプロジェクトタスクを削除し、又はプロジェクトメンバーへのサブタスクの割当てを削除する。
【００２１】
［プロジェクトスケジュールエディタ］
図２Ａは、本発明の実施例によるプロジェクトスケジュールエディタの画面図である。プロジェクトスケジュールエディタ２０２は、タスク割当てエディタ１０２（図１Ａ）において作成されたプロジェクトタスクのスケジュールを設定するのに使用される。プロジェクトタスクは、プロジェクトスケジュールエディタ２０２において作成及びスケジューリングされてもよい。しかしながら、一実施例では、サブタスクはプロジェクトスケジュールエディタ２０２を使用してプロジェクトメンバーに割り当てるために、プロジェクトタスクに追加することはできない。おそらく、プロジェクトマネージャは、タスク割当てエディタ１０２の後にプロジェクトスケジュールエディタ２０２を使用するであろう。マネージャは、プロジェクトスケジュールエディタ２０２を使用して、タスク割当てエディタ１０２に追加された主要なプロジェクトタスクの初期的なプロジェクトスケジュールを設定することができる。プロジェクトマネージャがタスクを追加及びスケジューリングしながら、プロジェクトタスクのスケジューリングに関する情報がプロジェクトスケジュールエディタ２０２に格納及び維持される。マネージャがプロジェクトスケジュールエディタセッションを終了すると、プロジェクトタスクのスケジュール情報がデータベースにわたされ、格納され、維持される。
【００２２】
ユーザが図２Ａのプロジェクトスケジュールエディタ２０２の“終了”ボタンを選択することなどに応答して、プロジェクトスケジュールセッションが終了すると、プロジェクトスケジュールウェブページ２０４は、プロジェクトスケジュールのテーブルを表示するため、ウェブサーバにおいて自動生成される。各プロジェクトメンバーのスケジュールがプロジェクトサブタスクについて作成及び／又は更新される場合、プロジェクトスケジュールエディタ２０２は、すべてのサブタスクスケジュールと共に各プロジェクトタスクスケジュールを表示する。プロジェクトスケジュールエディタ２０２は、サブタスクをそれを割り当てられたプロジェクトメンバーと共に表示する。エディタセッションを終了することによって、又は図２Ａのプロジェクトスケジュールエディタ２０２の“併合”を選択することによって、各プロジェクトタスクのすべてのサブタスクスケジュールが、プロジェクトタスクのスケジュールを更新するため自動的に併合又は集計され、プロジェクトタスクスケジュールがデータベースにおいて更新される。
【００２３】
図２Ｂは、本発明の実施例によるプロジェクトスケジュールウェブページのサンプルの画面図である。プロジェクトスケジュールウェブページ２０４は、タスク又はサブタスクが割り当てられたメンバーと共に、プロジェクトタスク及びそれのサブタスクのスケジュールを表示するため生成される。プロジェクトスケジュールウェブページ２０４は、プロジェクトチームがタスクのスケジュールにおいて生じた変更を確認することができるように、各プロジェクトタスク及びサブタスクの以前のすべてのスケジュール（以前の日付の取消線などと共に）を表示する。プロジェクトスケジュールエディタ２０２を介し入力及び編集されたプロジェクトスケジュール情報は、ウェブブラウザに表示される際にウェブページの形式により表示される。すべてのプロジェクトタスクのスケジュール及びサブタスクのスケジュールは、好ましくは、各行がタスクに対応し、プロジェクトスケジュールエディタ２０２及びプロジェクトスケジュールウェブページ２０４に表示される１以上のデータベーステーブルに格納される。
【００２４】
一実施例によると、プロジェクトスケジュールエディタ２０２（図２Ａ）は、各種処理を実行する各ボタン（“上への行の追加”、“下への行の追加”、“削除”、“併合”及び“終了”）を含む。“終了”及び“併合”ボタンは、プロジェクトスケジュールエディタセッションを終了し、データベースに格納及び維持されるプロジェクトタスクスケジュール情報を送信する。“併合”ボタンは、プロジェクトスケジュールがデータベースにおいて更新されるように、各メンバースケジュールをプロジェクトスケジュールに併合する。“併合”ボタンは、プロジェクトスケジュールエディタを更新されたタスクスケジュールによるプロジェクトスケジュールウェブページに再表示する。その他のボタンは、タスクに対応する行のチェックボックスを選択することによって選択されるタスクに対する各処理を実行する。これらの処理は、プロジェクトタスクに対してのみ実行可能であり、メンバーに割り当てられたサブタスクに対しては実行できない。“上への行の追加”及び“下への行の追加”ボタンは、マネージャがさらなるプロジェクトタスクを追加し、タスクのスケジュールを設定することができるように、選択されたプロジェクトに対応する行の上下に行を追加する。追加される行数は、“下への行の追加”ボタンの隣の“行数”メニュー選択によって設定される。“削除”ボタンは、選択されたプロジェクトタスクを削除する。
【００２５】
［メンバースケジュールエディタ］
図３Ａは、本発明の実施例によるメンバースケジュールエディタの画面図である。メンバースケジュールエディタ３０２（“個人スケジュールエディタ”とも呼ばれる）は、各プロジェクトメンバーのスケジュールを作成するのに使用される。一実施例によると、メンバースケジュールエディタ３０２は、メンバースケジュールが以前に作成されていた場合、終了していないタスクのみを表示する。メンバーのタスクは、プロジェクトサブタスク及び／又はプロジェクトに関連しないタスクである可能性がある。メンバーは、メンバースケジュールエディタ３０２を介しスケジュールを設定し、スケジュールを変更し、タスクの結果を更新することが可能である。メンバーの各タスクは、タスクの詳細をスケジューリングするため、より低いレベルのタスクに分解可能である。より低いレベルのタスクの追加又は変更は、より上位のレベルのタスクのスケジュールに影響を与えるかもしれない。従って、より上位のレベルのタスクスケジュールは、“更新”ボタンが選択されると更新される。メンバーがタスクスケジュールを追加又は変更しながら、タスクのスケジューリングに関する情報がメンバースケジュールエディタ３０２に格納及び維持される。メンバーがメンバースケジュールエディタ３０２のセッションを終了すると、タスクスケジュール情報がデータベースにわたされ、格納及び維持される。図３Ａは、ドロップダウンリストにより割り当てられたタスクを示す。
【００２６】
ユーザが図３Ａのメンバースケジュールエディタ３０２の“終了”ボタンを選択などすることに応答して、メンバースケジュールセッションが終了すると、メンバースケジュールウェブページ３０４（図３Ｂの画面において“タスクスケジュール”とラベル付けされた）が、メンバースケジュールのテーブルを表示するため、ウェブサーバにおいて自動生成される。図３Ｂは、本発明の実施例によるメンバーのスケジュールウェブページのサンプルの画面図である。メンバースケジュールエディタ３０２を介し入力及び編集される個人スケジュール情報は、ウェブブラウザに表示される際にウェブページの形式により表示される。すべてのタスクのスケジュールは、各行がタスクに対応するテーブル内に表示される。メンバースケジュールウェブページ３０４は、プロジェクトチームがタスクのスケジュールに生じた変更を確認することができるように、各プロジェクトタスク及びサブタスクの以前のスケジュール（以前の日付の取消線などと共に）を表示する。
【００２７】
メンバースケジュールエディタ３０２では、各種処理を実行するのに使用されるボタン（“詳細追加”、“最も下への行の追加”、“上への行の追加”、“下への行の追加”、“削除”、“更新”及び“終了”）がテーブルの近傍に配置される。“終了”ボタンは、メンバースケジュールエディタセッションを終了し、データベースに格納及び維持されるタスクスケジュール情報を送信する。“更新”ボタン及び“最も下への行の追加”ボタンを除いて、その他のボタンは、タスクに対応する行のチェックボックスを選択することによって選択されるタスクに対する処理を実行する。“詳細追加”ボタンは、メンバーがタスクのさらなる詳細を与えるため、タスクにサブタスク（１レベル下位のタスク）を追加できるように、タスクの下方に行を追加する。“上への行の追加”及び“下への行の追加”ボタンは、メンバーが同一レベルにおいてスケジュールにさらなるタスクを追加できるように、選択されたタスクに対応する行の上下に行を追加する。追加される行数は、“下への行の追加”ボタンの隣の“行数”メニュー選択によって設定される。“削除”ボタンは、選択されたタスクを削除する。“削除”ボタンはまた、タスクを削除し、メンバーのスケジュールからタスクに係る下位レベルのすべてのタスクを削除する。“最も下への行の追加”ボタンは、追加される行数が“行数”メニュー選択において設定されるスケジュールの最も下に１以上の最も高いレベルの行を追加する。“更新”ボタンは、下位レベルのタスクスケジュールにより上位レベルのすべてのタスクスケジュールを更新し、新たな日付を表示するため、メンバースケジュールエディタ３０２の表示を更新する。
【００２８】
タスクのスケジュール情報は、プランの開始及び終了日と、実際の開始及び終了日とを有する。プランの日付と実際の日付は、メンバースケジュールエディタ３０２におけるタスクについて設定及び変更可能である。しかしながら、タスクが最初にスケジューリングされるときには、プランの日付のみがプロジェクトスケジュールエディタ２０２（図２Ａ）のプロジェクトタスクに対して設定可能でない。併合時に、プランの日付は自動更新され、実際の日付はプロジェクトサブタスクのプランの日付と実際の日付のメンバーのスケジュールの情報に基づき、自動設定される。図示しないが、プロジェクトスケジュールエディタ２０２は、プランされた日付が変更可能となるように、変更することができる。しかしながら、プロジェクトタスクのプランされた日付においてどのような変更がなされても、それはプロジェクトサブタスクのメンバーのスケジュールのプランされた日付を併合することによって上書きされる。データベースの情報は、プロジェクトマネージャがプロジェクトエディタセッションを終了したとき、又はプロジェクトスケジュールエディタ２０２の“併合”ボタンを介し、プロジェクトタスクの実際の日付を更新するのに使用される。
【００２９】
図４は、本発明の実施例による各エディタ（タスク割当て、プロジェクトスケジュール、メンバースケジュール）の１つにプロジェクトメンバーがログオンするためのログインウェブページの画面図である。メンバーはプロジェクト番号とメンバー名を入力し、適切なエディタを選択し、その後にエディタにアクセスするためこの情報を送信する。プロジェクトスケジュール管理システムは、この入力を確認し、当該メンバーがプロジェクトの有効なメンバーであるか判断し、選択されたエディタに対するアクセス権を有する。そうでない場合、メンバーはエディタへのアクセスを拒絶される。より強固なセキュリティのため、ログインウェブページ及びエディタは、セキュアＨＴＴＰ（ＨＴＴＰＳなど）を介し実行可能であり、ログインページはログイン前にパスワードを要求することができる。
【００３０】
［プロジェクトスケジュール管理システム］
図５は、本発明の実施例が実現可能な動作環境を示す図である。図示された動作環境は、ここに記載されるプロジェクトスケジュール管理システムの全体的なシステム構成を説明する。この一例となる動作環境は、複数のワークステーション、１以上のウェブサーバ及び１以上の付属するデータベースから構成され、これらすべては、通信のためソフトウェア開発ネットワークに直接的に又は間接的に接続される。
【００３１】
一般に、ウェブサーバ５０７及び５３０は、エディタの表示及び管理のためのリソースを有する。ウェブサーバ５０７及び５３０は、データ５０８、５３８などのタスク割当て及びタスクスケジュール情報を格納、維持及び管理するため、それぞれデータベース５０６及び５３６とやりとりする。２つのウェブサーバと２つのデータベースの図示は、単なる一例に過ぎない。すなわち、ここに記載されるようなプロジェクトスケジュール管理システムにおいて使用されるウェブサーバとデータベースの個数は、実現形態に応じて異なるかもしれない。コンピュータワークステーション５０１と５０２のウェブブラウザは、エディタを表示するため、ウェブサーバ５０７及び５３０のリソースにアクセスする。プロジェクトメンバー又はマネージャは、ネットワーク５００（ＬＡＮ又はＷＡＮ）を介しエディタにアクセス可能である。プロジェクト管理システムは、プロジェクト、部門、組織レベルなど、組織内の各レベルにおいてプロジェクトを管理するのに利用可能である。
【００３２】
ワークステーション５０１、５０２は、典型的には、１以上のブラウザを有する図３５のコンピュータシステム３５００により示されるように構成されたコンピュータシステムであり、例えば、技術者／開発者が製品開発プロジェクトに係るタスクを終了するため使用される。このようなタスクの関連する非限定的な具体例として、プロジェクトの開始、タスクスケジュールの準備及び維持、ソフトウェアアーキテクチャの設計、仕様書の作成、ソフトウェアコードの作成、ソフトウェアコードの実装及びテスト、各種タスクプロダクトの検査などがあげられる。さらに、プロジェクトマネージャは、プロジェクトの進捗状況を確認及び管理するための情報にアクセスするため、ワークステーション５０１、５０２を利用する。開発者及びマネージャは、アクセスポイント５２４を介しウェブサーバ５０７、５３０、データベース５０６、５３６、携帯装置２０及びラップトップ５２２など、その他の接続されたコンポーネントにネットワーク５００を介し通信を送信する。ウェブサーバ５０７及び５３０からウェブページにアクセス可能なワークステーション５０１、５０２、携帯装置５２０及びラップトップ５２２は、ブラウザのエディタを管理するためウェブページが有するＪａｖａＳｃｒｉｐｔを処理可能である。ブラウザは、ＪａｖａＳｃｒｉｐｔを処理することが可能である。
【００３３】
ウェブサーバ５０７、５３０は、適切なプロトコル（ＨＴＴＰ（Ｈｙｐｅｒｔｅｘｔ  Ｔｒａｎｓｆｅｒ  Ｐｒｏｔｏｃｏｌ）、ＴＣＰ／ＩＰ（Ｔｒａｎｓｍｉｓｓｉｏｎ  Ｃｏｎｔｒｏｌ  Ｐｒｏｔｏｃｏｌ／Ｉｎｔｅｒｎｅｔ  Ｐｒｏｔｏｃｏｌ）など）を利用して、ワークステーション５０１、５０２において開発者やマネージャなどのユーザにウェブページを構成するファイル（ＨＴＭＬ（Ｈｙｐｅｒｔｅｘｔ  Ｍａｒｋｕｐ  Ｌａｎｇｕａｇｅ）ファイル、ＸＭＬ（ｅＸｔｅｎｓｉｂｌｅ  Ｍａｒｋｕｐ  Ｌａｎｇｕａｇｅ）ファイルなど）を提供するコンピュータハードウェア及びソフトウェアの組み合わせである典型的なウェブサーバを示す。非限定的な具体例として、ＰＨＰスクリプトを実行するためのモジュールを有するＡｐａｃｈｅウェブサーバが、ウェブサーバ５０７及び５３０のウェブサーバアプリケーションとして利用可能である。一般に、開発プロジェクトのライフサイクル期間中に交換及び管理される情報の大部分は、ネットワーク５００を介しウェブサーバ５０７、５３０により提供される。さらに、ここに記載される技術の各特徴は、本発明の実現がこのような実現形態に限定されるものではないが、ウェブサーバ５０７、５３０上で実現及び実行されるかもしれない。これらの技術は、ワークステーション５０１、５０２などの他の何れかの処理システム、又は図３５に示されるような同様に構成されたコンピュータシステム上で実現可能である。
【００３４】
データベース５０６、５３６は、開発プロジェクトに関連するデータ５０８、５３８を格納し、ネットワーク５００を介し送信されるクエリを通じてワークステーション５０１、５０２における認証された個人による情報へのアクセスを提供する典型的なデータベースを示す。データベース５０１、５０２に格納されているデータのタイプは無限であり、非限定的な具体例として、プロジェクト開始フォーム、メンバー及びプロジェクトタスクスケジュール、仕様書、ソフトウェアコード、検査レポート、ウェブページファイル並びに文書ディレクトリ及びインデックスがあげられる。
【００３５】
ネットワーク５００は、ワークステーション５０１、５０２、ウェブサーバ５０７、５３０及びデータベース５０６、５３６などの各種接続されたコンポーネントの間の情報の交換を実現するため、パケット交換ネットワークなどの従来のネットワークを示す。ネットワーク５００は、企業内に実装される従来技術によるイーサネット（登録商標）、高速イーサネット（登録商標）、トークンリングなどのローカル・エリア・ネットワーク（ＬＡＮ）や８０２．１１ａ及び８０２．１１ｂ（ＩＥＥＥ（Ｉｎｓｔｉｔｕｔｅ  ｏｆ  Ｅｌｅｃｔｒｉｃａｌ  ａｎｄ  Ｅｌｅｃｔｒｏｎｉｃｓ  Ｅｎｇｉｎｅｅｒｓ）のワーキンググループにより開発された）などのワイヤレスＬＡＮであるかもしれない。さらに、ネットワーク５００はまた、ＶＰＮ（Ｖｉｒｔｕａｌ  Ｐｒｉｖａｔｅ  Ｎｅｔｗｏｒｋ）を介したリモートユーザとの通信を実現するため、インターネットなどのワイド・エリア・ネットワーク（ＷＡＮ）であってもよく、又はＬＡＮとＷＡＮの組み合わせを表すものであってもよい。さらに、ネットワーク５００は、以下に限定されるものではないが、電線若しくはケーブル又は光若しくは無線接続を含む各種媒体を利用して構成可能である。
【００３６】
図６は、本発明の実施例が実現可能な自動化されたスケジューリングシステムのソフトウェアコンポーネントを含む通信アーキテクチャを示す図である。クライアントプロセッサ６０２はウェブブラウザに対応し、サーバプロセッサ６０４はウェブサーバ５０７や５３０（図５）などのウェブサーバに対応する。プロジェクトメンバー又はマネージャは、ユーザインタフェース６０１を介しクライアントプロセッサ６０２とやりとりする。クライアントプロセッサ６０２は、ログインウェブページ（図４）及び各種エディタウェブページ（図１Ａ、２Ａ、３Ａ）を管理及び維持する。クライアントプロセッサ６０２は、これらのウェブページにおいて発生するすべてのイベントを処理する。一実施例によると、クライアントプロセッサ６０２は、ＨＴＴＰプロトコルを介しサーバプロセッサ６０４とやりとりする。一実施例によると、クライアントプロセッサ６０２は、セキュアなＨＴＴＰＳプロトコルを介しサーバプロセッサ６０４とやりとりする。
【００３７】
サーバプロセッサ６０４は、ログインウェブページ（図４）及びエディタウェブページ（図１Ａ、２Ａ、３Ａ）を表示するため、クライアントプロセッサ６０２に情報を提供する。サーバプロセッサ６０４はまた、クライアントプロセッサ６０２がこれらのページにより情報を送信すると、ログイン及びエディタウェブページの情報を処理する。データベース６０６は、プロジェクト及びタスクスケジューリング情報のレポジトリとなる。サーバプロセッサ６０４は、データベースにおける情報を取得、追加又は更新するため、データベース６０６とやりとりする。一実現形態によると、サーバプロセッサ６０４はデータベース６０６とやりとりする。しかしながら、他のデータベース及びプロトコルが利用可能である。
【００３８】
［クライアント・サーバインタフェース］
図７は、本発明の実施例によるシステムのクライアントプロセッサとサーバプロセッサとの間のインタフェースを示す図である。ＨＴＴＰ／ＨＴＴＰＳ  ＧＥＴリクエストは、クライアントプロセッサ６０２にホーム、ログイン（図４）、プロジェクトスケジュールエディタ（図２Ａ）、メンバースケジュールエディタ（図３Ａ）及びタスク割当てエディタ（図１Ａ）の各ウェブページをサーバプロセッサ６０４から取得させる。ＨＴＴＰ／ＨＴＴＰＳ  ＰＯＳＴリクエストは、クライアントプロセッサ６０２にログイン（図４）及びエディタウェブページ（図１Ａ、２Ａ、３Ａ）に入力された情報を処理のため、サーバプロセッサ６０４に送信させる。適用可能なＨＴＴＰ／ＨＴＴＰＳ  ＧＥＴリクエスト及びＨＴＴＰ／ＨＴＴＰＳ  ＰＯＳＴリクエストが、以降においてより詳細に説明される。
【００３９】
ＨＴＴＰ／ＨＴＴＰＳ  ＧＥＴ  Ｐｒｏｊｅｃｔ／Ｄｅｐｔ／Ｄｉｖｉｓｉｏｎ  Ｈｏｍｅ  Ｐａｇｅリクエストは、サーバプロセッサ６０４にそれぞれデパートメント又はディビジョンに係るプロジェクトホームページをクライアントプロセッサ６０２に対してリターンさせる。ホームページは、スケジュール、タスク割当て及びエディタへのログインのための各ウェブページにリンク及び閲覧するためのリンク（ハイパーリンクなど）を含む。
【００４０】
ＨＴＴＰ／ＨＴＴＰＳ  ＧＥＴ  ｃｕｒｒｅｎｔ  ｐｒｏｊｅｃｔ  ｄｉｒｅｃｔｏｒｙ／ｓｃｈｅｄｕｌｅ．ｈｔｍリクエストは、サーバプロセッサ６０４に図２Ｂに示されるような現在のプロジェクトのプロジェクトスケジュールを含むウェブページをクライアントプロセッサ６０２に対してリターンさせる。
【００４１】
ＨＴＴＰ／ＨＴＴＰＳ  ＧＥＴ  ｃｕｒｒｅｎｔ  ｐｒｏｊｅｃｔ  ｄｉｒｅｃｔｏｒｙ／ｔａｓｋＡｓｓｉｇｎｍｅｎｔ．ｈｔｍリクエストは、サーバプロセッサ６０４に図１Ｂに示されるような現在のプロジェクトのプロジェクトタスクのタスク割当てを含むウェブページをクライアントプロセッサ６０２に対してリターンさせる。
【００４２】
ＨＴＴＰ／ＨＴＴＰＳ  ＧＥＴ  ｐｒｏｊｅｃｔ  ｍｅｍｂｅｒ  ｄｉｒｅｃｔｏｒｙ／ｓｃｈｅｄｕｌｅ．ｈｔｍリクエストは、サーバプロセッサ６０４に図３Ｂに示されるような現在のプロジェクトのプロジェクトメンバーのスケジュールを含むウェブページをクライアントプロセッサ６０２に対してリターンさせる。
【００４３】
ＨＴＴＰ／ＨＴＴＰＳ  ＧＥＴ  ｌｏｇｉｎ．ｈｔｍリクエストは、サーバプロセッサ６０４にエディタ（プロジェクトスケジュール、メンバースケジュール、タスク割当て）の１つにプロジェクトメンバー又はマネージャがログオンすることを可能にするウェブページをクライアントプロセッサ６０２に対してリターンさせる。メンバー又はマネージャは、プロジェクト、メンバー名及びエディタセッションタイプに関する情報を入力する。図４は、エディタの１つにログインするためのウェブページを示す。
【００４４】
ＨＴＴＰ／ＨＴＴＰＳ  ＧＥＴ  ＴａｓｋＡｓｓｉｇｎＥｄｉｔｏｒ．ｈｔｍリクエストは、サーバプロセッサ６０４に現在のプロジェクトについてプロジェクトメンバーに各タスクを割り当てるのに利用されるタスク割当てエディタのウェブページをクライアントプロセッサ６０２に対してリターンさせる。プロジェクトマネージャは、サーバプロセッサ６０４がタスク割当てエディタウェブページをリターンする前に、プロジェクトメンバーに各タスクを割り当てるためのアクセス権限を要求する。この権限は、マネージャがログインウェブページ（図４）により情報を送信すると検証される。一実施例によると、ＴａｓｋＡｓｓｉｇｎＥｄｉｔｏｒ．ｈｔｍは、タスク割当てエディタにイベントを表示、管理及び処理するためのＪａｖａＳｃｒｉｐｔを有する。一実施例によると、ＴａｓｋＡｓｓｉｇｎＥｄｉｔｏｒ．ｈｔｍは、データベース５０６、５３６から情報を取得し、当該情報をＪａｖａＳｃｒｉｐｔにわたすためのＰＨＰスクリプトを有し、これにより、当該情報は図１Ａに示されるようなタスク割当てエディタにより表示される。
【００４５】
ＨＴＴＰ／ＨＴＴＰＳ  ＧＥＴ  ＰｒｏｊＳｃｈｅｄｕｌｅＥｄｉｔｏｒ．ｈｔｍリクエストは、サーバプロセッサ６０４に現在のプロジェクトのプロジェクトスケジュールを作成又は更新するのに利用されるプロジェクトスケジュールエディタのウェブページをクライアントプロセッサ６０２に対してリターンさせる。プロジェクトマネージャは、サーバプロセッサ６０４がプロジェクトスケジュールエディタをリターンする前に、プロジェクトスケジュールを作成するためアクセス権限を有する必要がある。この権限は、マネージャがログインウェブページ（図４）により情報を送信すると検証される。一実施例によると、ＰｒｏｊＳｃｈｅｄｕｌｅＥｄｉｔｏｒ．ｈｔｍは、プロジェクトスケジュールエディタのウェブページによりイベントを表示、管理及び処理するためのＪａｖａＳｃｒｉｐｔを含む。一実施例によると、ＰｒｏｊＳｃｈｅｄｕｌｅＥｄｉｔｏｒ．ｈｔｍは、データベース５０６、５３６から情報を取得し、当該情報をＪａｖａＳｃｒｉｐｔにわたすためのＰＨＰスクリプトを有し、これにより、当該情報は、図２Ａに示されるようなプロジェクトスケジュールエディタに表示される。
【００４６】
ＨＴＴＰ／ＨＴＴＰＳ  ＧＥＴ  ＭｅｍｂＳｃｈｅｄｕｌｅＥｄｉｔｏｒ．ｈｔｍリクエストは、サーバプロセッサ６０４に現在のプロジェクトのプロジェクトメンバーのスケジュールを作成又は更新するのに使用されるメンバースケジュールエディタのウェブページをクライアントプロセッサ６０２に対してリターンさせる。一実施例によると、スケジュールエディタは、プロジェクトメンバーのスケジュールが以前に作成されていた場合、終了していないタスクのみを表示する。プロジェクトメンバーは、サーバプロセッサ６０４がこのウェブページをリターンする前に、スケジュールを作成又は編集するための権限を有している必要がある。この権限は、メンバーがログインウェブページ（図４）に情報を送信すると検証される。一実施例によると、ＭｅｍｂＳｃｈｅｄｕｌｅＥｄｉｔｏｒ．ｈｔｍは、プロジェクトメンバーのスケジュールエディタにイベントを表示、管理及び処理するためのＪａｖａｓｃｒｉｐｔを有する。一実施例によると、ＭｅｍｂＳｃｈｅｄｕｌｅＥｄｉｔｏｒ．ｈｔｍは、データベース５０６、５３６から情報を取得し、当該情報をＪａｖａｓｃｒｉｐｔにわたすためのＰＨＰスクリプトを有し、これにより、情報は、図３Ａに示されるようなメンバースケジュールエディタに表示される。
【００４７】
ＨＴＴＰ／ＨＴＴＰＳ  ＰＯＳＴ  ｌｏｇｉｎ．ｈｔｍインタフェースは、クライアントプロセッサ６０２が各種エディタ（プロジェクトスケジュール、メンバースケジュール、タスク割当て）にアクセス及び表示することを可能にする。このインタフェースは、“送信”ボタンがｌｏｇｉｎ．ｈｔｍに対応するウェブページから選択されると呼び出される。ｌｏｇｉｎ．ｈｔｍに入力される情報は、サーバプロセッサ６０４のＰｏｓｔＬｏｇｉｎ．ｈｔｍにわたされる。ＰｏｓｔＬｏｇｉｎ．ｈｔｍは、当該情報を利用してプロジェクトのメンバーを検証し、当該メンバーがリクエストされたエディタへのアクセス権限を有しているか判断する。当該情報が有効でないか、又は当該メンバーがエディタへのアクセス権限を有していない場合、ＰｏｓｔＬｏｇｉｎ．ｈｔｍは、プロジェクトメンバーがリクエストされたエディタにアクセス不可であるというメッセージをクライアントプロセッサ６０９２にリターンする。そうでない場合、ＰｏｓｔＬｏｇｉｎ．ｈｔｍは、エディタの１つに対応するウェブページをリターンする。すなわち、ウェブブラウザは、リクエストされたエディタに対応するウェブページにリダイレクトされる。
【００４８】
ＨＴＴＰ／ＨＴＴＰＳ  ＰＯＳＴ  ＰｏｓｔＴａｓｋＡｓｓｉｇｎ．ｈｔｍは、クライアントプロセッサ６０２がタスク割当てエディタ（図１Ａ）に入力されたすべての情報をサーバプロセッサ６０４に送信することを可能にする。このインタフェースは、“終了”ボタンがＴａｓｋＡｓｓｉｇｎＥｄｉｔｏｒ．ｈｔｍに対応するウェブページから選択されると呼び出される。ＴａｓｋＡｓｓｉｇｎＥｄｉｔｏｒ．ｈｔｍのエディタに入力された情報は、サーバプロセッサ６０４のＰｏｓｔＴａｓｋＡｓｓｉｇｎ．ｈｔｍにわたされる。ＰｏｓｔＴａｓｋＡｓｓｉｇｎ．ｈｔｍは、適切なデータベース５０６、５３６のタスク割当て情報を追加及び更新する。入力された情報の何れかが有効でない場合、又は当該プロセスが適切なデータベースにアクセス又はクエリするのに失敗した場合、適切なメッセージが表示される。ＰｏｓｔＴａｓｋＡｓｓｉｇｎ．ｈｔｍはまた、図１Ｂに示されるようなタスク割当てウェブページを作成する。
【００４９】
ＨＴＴＰ／ＨＴＴＰＳ  ＰＯＳＴ  ＰｏｓｔＰｒｏｊＳｃｈｅｄｕｌｅ．ｈｔｍは、クライアントプロセッサ６０２がプロジェクトスケジュールエディタ（図２Ａ）に入力されたすべての情報をサーバプロセッサ６０４に送信することを可能にする。このインタフェースは、“終了”ボタンがＰｒｏｊＳｃｈｅｄｕｌｅＥｄｉｔｏｒ．ｈｔｍに対応するウェブページから選択されると呼び出される。ＰｏｓｔＰｒｏｊＳｃｈｅｄｕｌｅ．ｈｔｍのエディタに入力される情報は、サーバプロセッサ６０４のＰｏｓｔＰｒｏｊＳｃｈｄｕｌｅ．ｈｔｍにわたされる。ＰｏｓｔＰｒｏｊＳｃｈｅｄｕｌｅ．ｈｔｍは、適切なデータベース５０６、５３６のタスクスケジュール情報を追加及び更新する。入力された情報の何れかが有効でない場合、又は当該プロセスが適切なデータベースにアクセス又はクエリすることに失敗した場合、適切なメッセージが表示される。ＰｏｓｔＰｒｏｊＳｃｈｅｄｕｌｅ．ｈｔｍはまた、図２Ｂに示されるようなプロジェクトスケジュールウェブページを作成する。
【００５０】
ＨＴＴＰ／ＨＴＴＰＳ  ＰＯＳＴ  ＰｏｓｔＭｅｍｂＳｃｈｅｄｕｌｅ．ｈｔｍは、クライアントプロセッサ６０２がプロジェクトメンバーのスケジュールエディタ（図３Ａ）に入力されるすべての情報をサーバプロセッサ６０４に送信することを可能にする。このインタフェースは、“終了”ボタンがＭｅｍｂＳｃｈｅｄｕｌｅＥｄｉｔｏｒ．ｈｔｍに対応するウェブページから選択されると呼び出される。ＭｅｍｂＳｃｈｅｄｕｌｅＥｄｉｔｏｒ．ｈｔｍに入力された情報は、サーバプロセッサ６０４のＰｏｓｔＭｅｍｂＳｃｈｄｕｌｅ．ｈｔｍにわたされる。ＰｏｓｔＭｅｍｂＳｃｈｅｄｕｌｅ．ｈｔｍは、適切なデータベース５０６、５３６のタスクスケジュール情報を追加及び更新する。入力された情報の何れかが有効でない場合、又は当該プロセスがデータベースにアクセス又はクエリすることに失敗した場合、適切なメッセージが表示される。ＰｏｓｔＭｅｍｂＳｃｈｅｄｕｌｅ．ｈｔｍはまた、図３Ｂに示されるようなメンバーのウェブページを作成する。
【００５１】
各種エディタのウェブページ（ＴａｓｋＡｓｓｉｇｎＥｄｉｔｏｒ．ｈｔｍ、ＰｒｏｊＳｃｈｅｄｕｌｅＥｄｉｔｏｒ．ｈｔｍ及びＭｅｍｂＳｃｈｅｄｕｌｅＥｄｉｔｏｒ．ｈｔｍ）は、非限定的な一実施例によるＪａｖａｓｃｒｉｐｔ又はＰＨＰスクリプトを含むファイルを有する。ここに記載される各種機能を実行するのに使用されるスクリプト言語は、実現形態に応じて可変的なものであるかもしれない。ウェブブラウザ（クライアントプロセッサ６０２など）がエディタのウェブページをリクエストすると、エディタウェブページ及びＪａｖａｓｃｒｉｐｔに対応するすべてのファイルがウェブブラウザにわたされ、これにより、ウェブブラウザはＪａｖａｓｃｒｉｐｔを処理する。しかしながら、ＰＨＰスクリプトのファイルはウェブブラウザにはわたされない。ＰＨＰスクリプトは、図５のウェブサーバ５０７、５３０などのウェブサーバにおいて処理され、ＰＨＰスクリプトがウェブページに書き込んだもののみがウェブブラウザにわたされる。
【００５２】
図８は、本発明の実施例によるログインウェブページを利用してプロジェクトメンバー又はマネージャがエディタの１つにログオンするためのシーケンス図を示す。この図は、エディタがメンバー又はマネージャに表示される前に、システムの各コンポーネントの間でわたされる情報を示す。ログインウェブページ（図４）上で発生するすべてのイベントを処理するため、クライアントプロセッサ６０２の内部において処理が実行される。ログインページに入力された情報を検証し、エディタのメンバーのアクセス権限を検証するため、サーバプロセッサ６０４の内部において処理が実行される。サーバプロセッサ６０４は、アクセス権限を検証するため、適切なデータベース５０６又は５３６から情報を取得する。プロジェクトメンバー又はマネージャは、図９〜１１に示されるシーケンスを有するエディタの何れかに入る前に、このプロセスを実行する。
【００５３】
［各エディタのシーケンス図］
図９（タスク割当てエディタ）、図１０（プロジェクトスケジュールエディタ）及び図１１（メンバースケジュールエディタ）は、ウェブブラウザにおいて各エディタを表示し、セッションが終了するとエディタに情報を掲示するためのシーケンスを示す。すべてのエディタは、同様のシーケンスに従う。クライアントプロセッサのウェブブラウザのエディタの初期表示を取得するため、適切なタスク割当て／スケジュール情報は、サーバプロセッサのデータベースから取得される（ＰＨＰスクリプトを使用して）。サーバプロセッサは、サーバプロセッサが（ＰＨＰスクリプトを使用して）生成し、クライアントプロセッサの初期エディタを表示するコードと共に、クライアントプロセッサがエディタを管理及び維持するため実行可能なコード（ＪａｖａＳｃｒｉｐｔ）を含むウェブページをわたす。サーバプロセッサは、それがデータベースから取得したタスク割当て／スケジュール情報をクライアントプロセッサにわたすためのコードを生成する。
【００５４】
図９は、本発明の実施例によるタスク割当てエディタによるセッションにおけるプロジェクトマネージャのシーケンス図を示す。クライアントプロセッサ６０２がＴａｓｋＡｓｓｉｇｎＥｄｉｔｏｒ．ｈｔｍをリクエストすると、ＴａｓｋＡｓｓｉｇｎＥｄｉｔｏｒ．ｈｔｍファイルとＪａｖａｓｃｒｉｐｔを有する含まれるすべてのファイル（“．ｊｓ”の拡張子により示される）が、サーバプロセッサ６０４からクライアントプロセッサ６０２にわたされる。ＰＨＰスクリプトを有する含まれるファイル（“．ｐｈｐ”拡張子により示される）は、サーバプロセッサ６０４において処理される。ＰＨＰスクリプトは、適切なデータベース５０６又は５３６からタスク割当て情報を取得し、情報をクライアントプロセッサ６０２にわたすため、ＴａｓｋＡｓｓｉｇｎＥｄｉｔｏｒ．ｈｔｍのウェブページにＪａｖａｓｃｒｉｐｔを書き込む。クライアントプロセッサ６０２は、対応するタスク割当てエディタを表示するため、それが受信したすべてのファイルのＪａｖａｓｃｒｉｐｔを処理する。プロジェクトマネージャとタスク割当てエディタとの間のすべてのやりとりは、タスク割当てエディタを管理、維持及び更新するため、Ｊａｖａｓｃｒｉｐｔにより処理される。プロジェクトマネージャがセッションを終了すると（“終了”を選択するなど）、タスク割当てエディタのすべてのタスク割当て情報は、ＰｏｓｔＴａｓｋＡｓｓｉｇｎ．ｈｔｍを介しクライアントプロセッサ６０２からサーバプロセッサ６０４にわたされる。サーバプロセッサ６０４は、適切なデータベースの情報を追加又は更新することによって、情報を処理する。データベースのタスク割当て情報を利用して、サーバプロセッサ６０４は、図１Ｂに示されるようなプロジェクトタスク割当てのためのウェブページを自動生成する。
【００５５】
図１０は、本発明の実施例によるプロジェクトスケジュールエディタによるセッションにおけるプロジェクトマネージャのためのシーケンス図を示す。クライアントプロセッサ６０２がＰｒｏｊＳｃｈｅｄｕｌｅＥｄｉｔｏｒ．ｈｔｍをリクエストすると、ＰｒｏｊＳｃｈｅｄｕｌｅＥｄｉｔｏｒ．ｈｔｍファイルとＪａｖａｓｃｒｉｐｔを有する含まるすべてのファイルが、サーバプロセッサ６０４からクライアントプロセッサ６０２にわたされる。ＰＨＰスクリプトを有する含まれるファイルは、サーバプロセッサ６０４において処理される。ＰＨＰスクリプトは、適切なデータベースからプロジェクトタスクスケジュール情報を取得し、情報をクライアントプロセッサ６０２にわたすため、ＰｒｏｊＳｃｈｅｄｕｌｅＥｄｉｔｏｒ．ｈｔｍのウェブページにＪａｖａｓｃｒｉｐｔを書き込む。クライアントプロセッサ６０２は、プロジェクトスケジュールエディタを表示するため、それが受信したファイルのＪａｖａｓｃｒｉｐｔを処理する。プロジェクトマネージャとプロジェクトスケジュールエディタとの間のすべてのやりとりは、エディタを管理、維持及び更新するため、Ｊａｖａｓｃｒｉｐｔにより処理される。マネージャがセッションを終了すると（“終了”を選択などして）、プロジェクトスケジュールエディタのすべてのプロジェクトタスクスケジュール情報は、ＰｏｓｔＰｒｏｊＳｃｈｅｄｕｌｅ．ｈｔｍインタフェースを介しクライアントプロセッサ６０２からサーバプロセッサ６０４にわたされる。サーバプロセッサ６０４は、適切なデータベースの情報を追加又は更新することによって、情報を処理する。サーバプロセッサ６０４はまた、プロジェクトスケジュールによりプロジェクトメンバーのスケジュールを自動集計し、データベースのプロジェクトスケジュールを追加又は更新する。データベースのプロジェクトタスクスケジュール情報を利用して、サーバプロセッサ６０４は、図２Ｂに示されるようなプロジェクトスケジュールのウェブページを自動生成する。
【００５６】
“併合”ボタンの選択に応答したシステムの動作は、“終了”ボタンの選択に対するものと同一である。両方のボタンは、（ａ）プロジェクトスケジュールエディタからの情報による適切なデータベースの追加及び更新、（ｂ）プロジェクトスケジュールによるメンバーの各スケジュールの集計、（ｃ）データベースのプロジェクトスケジュールの追加及び更新、及び（ｄ）プロジェクトスケジュールのウェブページの作成を引き起こす。さらに、“併合”は、ＰｒｏｊＳｃｈｅｄｕｌｅＥｄｉｔｏｒ．ｈｔｍを再びリクエストすることによって、更新されたプロジェクトスケジュールによるプロジェクトスケジュールエディタを再表示する。
【００５７】
図１１は、本発明の実施例によるプロジェクトメンバースケジュールエディタ（すなわち、メンバースケジュールエディタ）によるセッションにおけるプロジェクトメンバーのためのシーケンス図を示す。クライアントプロセッサ６０２がＭｅｍｂＳｃｈｅｄｕｌｅＥｄｉｔｏｒ．ｈｔｍをリクエストすると、ＭｅｍｂＳｃｈｅｄｕｌｅＥｄｉｔｏｒ．ｈｔｍファイルとＪａｖａｓｃｒｉｐｔを有する含まれるすべてのファイルが、サーバプロセッサ６０４からクライアントプロセッサ６０２にわたされる。ＰＨＰスクリプトを有する含まれるファイルは、サーバプロセッサ６０４において処理される。ＰＨＰスクリプトは、適切なデータベースからメンバータスクスケジュール情報を取得し、情報をクライアントプロセッサ６０２にわたすため、ＭｅｍｂＳｃｈｅｄｕｌｅＥｄｉｔｏｒ．ｈｔｍのウェブページにＪａｖａｓｃｒｉｐｔを書き込む。クライアントプロセッサ６０２は、メンバースケジュールエディタを表示するため、それが受信したファイルのＪａｖａｓｃｒｉｐｔを処理する。プロジェクトメンバーとメンバースケジュールエディタとの間のやりとりは、メンバースケジュールエディタを管理、維持及び更新するため、Ｊａｖａｓｃｒｉｐｔにより処理される。メンバーがセッションを終了すると（“終了”を選択などして）、メンバースケジュールエディタのメンバータスクスケジュール情報は、ＰｏｓｔＭｅｍｂＳｃｈｅｄｕｌｅ．ｈｔｍインタフェースを介しクライアントプロセッサ６０２からサーバプロセッサ６０４にわたされる。サーバプロセッサ６０４は、適切なデータベースの情報を追加又は更新することによって、情報を処理する。データベースのメンバータスクスケジュール情報を利用して、サーバプロセッサ６０４は、図３Ｂに示されるようなメンバースケジュールのウェブページを自動生成する。
【００５８】
［データベーススキーマ］
図１２は、本発明の実施例によるプロジェクト及びプロジェクトメンバーのタスク割当て及びタスクスケジュール情報を格納及び管理するのに使用されるデータベーステーブルのスキーマを示す。当該テーブルは、タスク割当て、プロジェクトタスクのスケジュール、及び各プロジェクトメンバーのスケジュールに関する情報を維持する。これらのテーブルは、タスク割当て、プロジェクトスケジュール及びメンバーのスケジュールのすべてが関連するように、構成及びリンクされる。
【００５９】
ＴａｓｋＡｓｓｉｇｎｍｅｎｔテーブル１２０２は、プロジェクトのプロジェクトタスクと対応するサブタスクとを格納する。ＴｏｐＬｅｖｅｌＰｒｏｊｅｃｔＴａｓｋテーブル１２０４は、ＴａｓｋＡｓｓｉｇｎｍｅｎｔテーブル１２０２にあるプロジェクトタスクのスケジュールを格納する。Ｌｅｖｅｌ１ＭｅｍｂｅｒＴａｓｋテーブル１２０６は、ＴａｓｋＡｓｓｉｇｎｍｅｎｔテーブル１２０２に割り当てられているメンバータスクのスケジュールを格納し、ＴｏｐＬｅｖｅｌＰｒｏｊｅｃｔＴａｓｋテーブル１２０４の対応するプロジェクトタスクのスケジュールにリンクする。これらのテーブルの間のリンクは、プロジェクトスケジュールによるメンバースケジュールの自動集計を可能にする。Ｌｅｖｅｌ１ＭｅｍｂｅｒＴａｓｋテーブル１２０６はまた、何れのプロジェクトタスクにも関連しないメンバータスクのスケジュールを格納する。ＬｅｖｅｌＸＭｅｍｂｅｒＴａｓｋテーブル（ただし、Ｘ＝１，２，３，４）及びＭｅｍｂｅｒＴａｓｋｓテーブル１２０８は、メンバーの各種タスクレベルの間のリンクを格納及び管理する。下位レベルのタスクは、上位レベルのタスクのより詳細なタスクである。これらのテーブルの構成は、メンバーのスケジュールを維持する。ＰｒｏｊｅｃｔＴｅａｍテーブル１２１０は、プロジェクトメンバーに関する情報を含む。プロジェクトメンバーのプロジェクトメンバー情報は、（ａ）各種エディタへのアクセス権限を決定するための役割、（ｂ）メンバースケジュールウェブページが格納される場所を決定するためのディレクトリ、及び（ｃ）各種レベルにおけるメンバータスクの識別子を決定するのに使用されるＩＤを含む。
【００６０】
ログインプロセスは、ＰｒｏｊｅｃｔＴｅａｍテーブル１２１０の情報を利用して、エディタを表示する前にリクエストされたエディタへのアクセス権限を決定する。タスク割当てエディタは、ＤｅｆａｕｌｔＴａｓｋｓ１２１２、ＴａｓｋＡｓｓｉｇｎｍｅｎｔ１２０２、ＴａｓｋＡｓｓｉｇｎｍｅｎｔＨｉｓｔｏｒｙ１２１８、ＴｏｐＬｅｖｅｌＰｒｏｊｅｃｔＴａｓｋ１２０４及びＭｅｍｂｅｒＴａｓｋｓ１２０８の各テーブルの情報を利用及び／又は更新する。プロジェクトスケジュールエディタは、ＤｅｆａｕｌｔＴａｓｋｓ１２１２、ＴａｓｋＡｓｓｉｇｎｍｅｎｔ１２０２、ＴｏｐＬｅｖｅｌＰｒｏｊｅｃｔＴａｓｋ１２０４、ＭｅｍｂｅｒＴａｓｋｓ１２０８及びＬｅｖｅｌ１ＭｅｍｂｅｒＴａｓｋ１２０６の各テーブルの情報を利用及び／又は更新する。メンバースケジュールエディタは、ＰｒｏｊｅｃｔＴｅａｍ１２１０、ＴａｓｋＡｓｓｉｇｎｍｅｎｔ１２０２、ＴｏｐＬｅｖｅｌＰｒｏｊｅｃｔＴａｓｋ１２０４、ＭｅｍｂｅｒＴａｓｋｓ１２０８及びＬｅｖｅｌＸＭｅｍｂｅｒＴａｓｋの情報を利用及び／又は更新する。
【００６１】
図１２に示され、ここに記載されるプロジェクトスケジュール管理システムの実施例に使用される各種テーブルが以下に示される。しかしながら、図１２を参照して説明されたテーブルの個数及び構成は、実現形態に応じて可変的なものであるかもしれない。
【００６２】
ＤｅｆａｕｌｔＴａｓｋｓテーブル１２１２：このテーブルは、典型的にはすべてのプロジェクトのタスクであるタスクの名称を含む。ソフトウェア開発プロジェクトに関して、デフォルトタスクの一部の例として、Ｐｒｏｊｅｃｔ  Ｐｌａｎｓ、Ｒｅｑｕｉｒｅｍｅｎｔｓ及びＴｏｐ  Ｌｅｖｅｌ  Ｄｅｓｉｇｎがあげられる。
【００６３】
ＰｒｏｊｅｃｔＴｅａｍテーブル１２１０：このテーブルは、プロジェクトのプロジェクトメンバーに関する情報を含む。ｓＭｅｍｂｅｒＬａｂｅｌは、プロジェクトスケジュールを表示する際にプロジェクト番号を特定するのに使用される２〜４文字の文字列であり、図１Ａ及び１Ｂに示されるようなプロジェクトタスクと関連するメンバータスクを示す。一実施例では、プロジェクトメンバーのイニシャルが、ｓＭｅｍｂｅｒＬａｂｅｌに使用される。ｎＭｅｍｂｅｒＲｏｌｅは、プロジェクトメンバーの役割を示すのに使用される番号である。例えば、プロジェクトマネージャは１であり、プロジェクトリーダーは２であり、プロジェクトアドミニストレータは３であり、プロジェクトメンバーは４である。その役割は、誰がエディタにアクセスできるか示すことである。例えば、役割番号が１であるプロジェクトメンバーは、すべてのエディタにアクセス可能である。しかしながら、役割番号が４であるプロジェクトメンバーは、メンバーのスケジュールエディタにのみアクセス可能である。システムは、何れの役割番号が各エディタにアクセス可能であるか決定するよう構成可能である。ｓＭｅｍｂｅｒＤｉｒｅｃｔｏｒｙは、プロジェクトチームがメンバーのスケジュールを閲覧できるように、メンバースケジュールのＨＴＭＬファイルが格納される場所を決定するのに使用される。
【００６４】
ｎＭｅｍｂｅｒＴａｓｋＩＤは、当該メンバーのタスクのＩＤを決定するため使用されるプロジェクトメンバーに割り当てられた番号である。一実施例によると、ｎＭｅｍｂｅｒＴａｓｋＩＤは、タスクのスタートＩＤとして使用される。プロジェクトチームのサイズに応じて、ＩＤは小さなチームにはＭＯＤ１０（１，２，．．．，９）とされ、大きなチームにはＭＯＤ１００（１，２，．．．，９９）又はそれ以上とすることができる。タスクＩＤは、ＭＯＤのインクリメントである。例えば、プロジェクトメンバー“ｔｅｓｔ１”のｎＭｅｍｂｅｒＴａｓｋＩＤが１である場合、ｔｅｓｔ１のタスクのタスクＩＤは１１，２１，３１，．．．（大きなチームについては、１０１，２０１，３０１，．．．）となるであろう。タスクＩＤは、タスクの一部の名前が同じであったとしても、プロジェクトメンバーのタスクを一意的に特定する。タスクＩＤはまた、すべてのレベルにおいてタスクを一意的に特定する。ｎＬｅｖｅｌＸＭａｘＴａｓｋＩＤは、プロジェクトメンバーの異なるレベルのタスクについてこれまで使用されてきた最も高いタスクＩＤを維持するため使用される番号である。これらの番号は、メンバーのスケジュールエディタセッションにおいて追加されるタスクのタスクＩＤを決定するのに使用されるスタートＩＤを提供する。これらの値は、各エディタセッションの後に抽出及び更新される。ｎＬｅｖｅｌＸＭａｘＴａｓｋＩＤの値を除いて、他のエントリの値はプロジェクトの開始前に設定される必要がある。
【００６５】
ＴａｓｋＡｓｓｉｇｎｍｅｎｔテーブル１２０２：このテーブルは、プロジェクトのプロジェクトメンバーに割り当てられるプロジェクトタスクとそれのサブタスクに関する情報を含む。ｓＴａｓｋＮａｍｅは、タスクの名称について使用され、ｎＰｒｏｊｅｃｔＴａｓｋＩＤは、タスクに係るＩＤである。プロジェクトスタートタスクＩＤは０であり、このため、それのタスクのＩＤはＭＯＤ（小さなチームについては、１０，２０，３０，．．．）のインクリメントとなる。ｓＬｅｖｅｌＴａｓｋＮａｍｅは、プロジェクトタスクに係るサブタスク（メンバータスク）の名称に使用され、ｎＬｅｖｅｌ１ＴａｓｋＩＤは、サブタスクに係るＩＤについて使用される。ｓＭｅｍｂｅｒＬａｂｅｌは、サブタスクに割り当てられたプロジェクトメンバーを特定するのに使用される。ｂＩｓＯｂｓｏｌｅｔｅｄは、タスクがプロジェクトから取り除かれたか示すのに使用される。タスクがスケジュールから削除されても、当該タスクに関する情報はデータベースに維持される。ｓＴａｓｋＮａｍｅ、ｎＰｒｏｊｅｃｔＴａｓｋＩＤ、ｓＬｅｖｅｌ１ＴａｓｋＮａｍｅ及びｓＭｅｍｂｅｒＬａｂｅｌの各値が、タスク割当てエディタセッションを通じてＴａｓｋＡｓｓｉｇｎｍｅｎｔテーブル１２０２に追加可能である。プロジェクトスケジュールエディタセッションは、ｓＴａｓｋＮａｍｅ及びｎＰｒｏｊｅｃｔＴａｓｋＩＤの値を追加可能である。メンバースケジュールエディタセッションのみが、ｎＬｅｖｅｌ１ＴａｓｋＩＤの値を追加可能である。
【００６６】
ＴｏｐＬｅｖｅｌＰｒｏｊｅｃｔＴａｓｋテーブル１２０４：このテーブルは、プロジェクトタスクのスケジューリングに関する情報を有する。ｓＴａｓｋＮａｍｅは、タスクの名称について使用され、ｎＰｒｏｊｅｃｔＴａｓｋＩＤは、タスクに係るＩＤについて使用される。ｐｌａｎＳｔａｒｔ及びｐｌａｎＥｎｄは、タスクの予想される開始日及び終了日について使用される。ａｃｔｕａｌＳｔａｒｔ及びａｃｔｕａｌＥｎｄは、タスクが実際の開始及び終了した日について使用される。ｓｅｔＤａｔｅは、プランされた日付が設定又は変更された日付について使用される。ｎＳｃｈｅｄｕｌｅＲｅｖＮｕｍｂｅｒは、タスクスケジュールの修正回数について使用される。プロジェクトタスクの直近のスケジュールは、最も大きな修正回数に対応する。プロジェクトタスクのスケジュールの変更を追跡するため、プロジェクトタスクのすべての修正がＴｏｐＬｅｖｅｌＰｒｏｊｅｃｔＴａｓｋテーブル１２０４に維持される。プランされた日付が異なる日にプロジェクトスケジュールエディタにおいて変更されるときに限って、この修正はインクリメントされる。ｎＰｒｏｊｅｃｔＴａｓｋＩＤ、ｓＴａｓｋＮａｍｅ、日付及びｎＳｃｈｅｄｕｌｅＲｅｖＮｕｍｂｅｒのすべての値は、プロジェクトスケジュールエディタセッション又はタスク割当てエディタセッションを通じてＴｏｐＬｅｖｅｌＰｒｏｊｅｃｔＴａｓｋテーブル１２０４において追加又は更新される。
【００６７】
ＭｅｍｂｅｒＴａｓｋｓテーブル１２０８：このテーブルは、すべてのプロジェクトメンバーのすべてのタスク（すべてのレベルにおけるタスク）に関する情報を有する。プロジェクトの各メンバー（ｓＭｅｍｂｅｒＮａｍｅ）には、タスクＩＤとｎＬｅｖｅｌＸＴａｓｋＩＤが関連付けされ、すべてのタスクと互いの関係とを特定する。ＴａｓｋＡｓｓｉｇｎｍｅｎｔテーブルに関して、ｂＩｓＯｂｓｏｌｅｔｅｄは、タスクがプロジェクトメンバーのスケジュールから削除されているか示す。ｂＩｓＣｏｍｐｌｅｔｅｄは、タスクが終了したか示す。ｎＬｅｖｅｌＸＴａｓｋＩＤは、ＭｅｍｂｅｒＴａｓｋｓテーブル１２０８に追加され、新たなタスクがメンバーのスケジュールエディタセッションに追加されるとき、ＰｒｏｊｅｃｔＴｅａｍテーブル１２１０のｎＬｅｖｅｌＸＭａｘＴａｓｋＩＤから決定されるタスクについて使用される。このテーブルの各値は、３つのエディタセッション（メンバースケジュール、プロジェクトスケジュール、タスク割当て）の何れかの結果から更新又は変更（ｂＩｓＯｂｓｏｌｅｔｅｄ又はｂＩｓＣｏｍｐｌｅｔｅｄ）することが可能である。ＭｅｍｂｅｒＴａｓｋｓテーブル１２０８は、下位レベルのタスクスケジュールの間のリンクを上位レベルのタスクスケジュールに提供するため重要である。
【００６８】
ＬｅｖｅｌＸＭｅｍｂｅｒＴａｓｋテーブル（Ｌｅｖｅｌ１ＭｅｍｂｅｒＴａｓｋテーブル１２０６、Ｌｅｖｅｌ２ＭｅｍｂｅｒＴａｓｋテーブル１２１４、Ｌｅｖｅｌ３ＭｅｍｂｅｒＴａｓｋテーブル１２１６）：このテーブルは、メンバータスクのスケジューリングに関する情報を有する。ｓＬｅｖｅｌＸＴａｓｋＮａｍｅは、タスクの名称について使用され、ｎＬｅｖｅｌＸＴａｓｋＩＤは、タスクに係るＩＤについて使用される。テーブルに追加されるタスクのｎＬｅｖｅｌＸＴａｓｋＩＤは、新たなタスクがメンバーのスケジュールエディタセッションに追加されると、ＰｒｏｊｅｃｔＴｅａｍテーブル１２１０のｎＬｅｖｅｌＸＭａｘＴａｓｋＩＤから決定される。ｐｌａｎＳｔａｒｔ及びｐｌａｎＥｎｄは、タスクの予想される開始日及び終了日について使用される。ａｃｔｕａｌＳｔａｒｔ及びａｃｔｕａｌＥｎｄは、タスクの実際の開始日及び終了日について使用される。ｓｅｔＤａｔｅは、プランされた日付が設定又は変更された日付について使用される。メンバータスクの直近のスケジュールは、最も大きな修正番号に対応する。メンバータスクのすべての修正は、メンバータスクのスケジュールの変更を追跡するため、テーブルにおいて維持される。一実施例によると、プランされた日付がメンバースケジュールエディタにおいて変更されるときに限って、修正はインクリメントされる。各ＬｅｖｅｌＸＭｅｍｂｅｒＴａｓｋテーブルは、上位レベルタスクのタスクＩＤを含む（タスクがそれのペアレントとしてのプロジェクトタスクを有するか、又はペアレントタスクを有しないレベル１を除いて）。これは、タスクに対してそれのペアレントタスクとそれのチャイルドタスクへのリンクを提供する。ペアレントタスクＩＤ、ｓＬｅｖｅｌＸＴａｓｋＮａｍｅ、ｎＬｅｖｅｌＸＴａｓｋＩＤ、日付及びｎＳｃｈｅｄｕｌｅＲｅｖＮｕｍｂｅｒのすべての値は、メンバースケジュールエディタセッションを通じてテーブルにおいて追加又は更新される。Ｌｅｖｅｌ１ＭｅｍｂｅｒＴａｓｋテーブル１２０６のみが、ＴａｓｋＡｓｓｉｇｎｍｅｎｔテーブル１２０２とのリンクを提供するため、ｓＭｅｍｂｅｒＬａｂｅｌを有する。
【００６９】
データベースは、レベル４までの下位レベルしか表示しない。しかしながら、データベースは、タスクスケジュールのさらなる詳細のため、下位レベルを含むよう変更可能である。
【００７０】
ＴａｓｋＡｓｓｉｇｎｍｅｎｔＨｉｓｔｏｒｙテーブル１２１８：このテーブルは、プロジェクトタスクに係るタスクのプロジェクトメンバーに対する割当ての履歴に関する情報を有する。このテーブルは、タスクが他のプロジェクトメンバーに再割り当てされる前に、当該タスクに以前に割り当てられたプロジェクトメンバーに関する情報を維持する。ｎＰｒｏｊｅｃｔＴａｓｋＩＤは、タスクに係るＩＤである。ｓＬｅｖｅｌ１ＴａｓｋＮａｍｅは、プロジェクトに係るサブタスク（メンバータスク）の名称である。ｓＭｅｍｂｅｒＬａｂｅｌは、サブタスクに割り当てられるプロジェクトメンバーである。ｎＲｅｖＮｕｍｂｅｒは、タスクのプロジェクトメンバーへの割当ての修正回数である。ｎＲｅｖＮｕｍｂｅｒは、プロジェクトにおけるタスクの再割当を示す。タスク割当てエディタ１０２（図１Ａ）は、ＴａｓｋＡｓｓｉｇｎｍｅｎｔＨｉｓｔｏｒｙテーブル１２１８の情報を利用及び／又は更新する。
【００７１】
［サーバのためのプログラミングパッケージ図］
図１３は、本発明の実施例による図６のサーバプロセッサ６０４のプログラミングパッケージ図を示す。サーバプロセッサ１３００は４つのパッケージを有し、各パッケージは、クライアントプロセッサ６０２上でユーザに表示されるウェブページ／エディタに対応し、それを介して、ユーザにより入力された情報が、ユーザがログイン又はエディタセッションを終了すると処理される。
【００７２】
ＬｏｇｉｎＰｒｏｃｅｓｓｏｒ１３０２パッケージは、プロジェクトメンバーがエディタの１つにログインすることを可能にするフォームを表示するためのウェブページを提供する。メンバーが当該フォームを送信すると、ＬｏｇｉｎＰｒｏｃｅｓｓｏｒ１３０２パッケージは、当該情報を検証するため、メンバーにより入力された情報を処理する。情報が有効であり、メンバーが適切なアクセス権限を有する場合、ＬｏｇｉｎＰｒｏｃｅｓｓｏｒ１３０２パッケージは、システムをエディタに対応するパッケージの１つにリダイレクトする。
【００７３】
ＴａｓｋＡｓｓｉｇｎｍｅｎｔＰｒｏｃｅｓｓｏｒ１３０４パッケージは、プロジェクトメンバーへのプロジェクトタスクの割当てを追加又は変更するのに使用されるタスク割当てエディタ１０２（図１Ａ）を表示するため、ウェブページを提供する。タスク割当てエディタ１０２が送信されると、ＴａｓｋＡｓｓｉｇｎｍｅｎｔＰｒｏｃｅｓｓｏｒ１３０４パッケージは、タスク割当てエディタ１０２からの情報を処理及び格納し、直近のタスク割当てのウェブページを作成する。
【００７４】
ＰｒｏｊｅｃｔＳｃｈｅｄｕｌｅＰｒｏｃｅｓｓｏｒ１３０６パッケージは、プロジェクトタスクのスケジュールを追加又は変更するのに使用されるプロジェクトスケジュールエディタ２０２（図２Ａ）を表示するため、ウェブページを提供する。プロジェクトスケジュールエディタ２０２が送信されると、ＰｒｏｊｅｃｔＳｃｈｅｄｕｌｅＰｒｏｃｅｓｓｏｒ１３０６パッケージは、プロジェクトスケジュールエディタ２０２からの情報を処理及び格納し、直近のプロジェクトスケジュールのウェブページを作成する。
【００７５】
ＭｅｍｂｅｒＳｃｈｅｄｕｌｅＰｒｏｃｅｓｓｏｒ１３０８パッケージは、メンバータスクのスケジュールを追加又は変更するのに使用されるメンバースケジュールエディタ３０２（図３Ａ）を表示するため、ウェブページを提供する。メンバースケジュールエディタ３０２が送信されると、ＭｅｍｂｅｒＳｃｈｅｄｕｌｅＰｒｏｃｅｓｓｏｒ１３０８パッケージは、メンバースケジュールエディタ３０２からの情報を処理及び格納し、直近のメンバースケジュールのウェブページを作成する。
【００７６】
ＬｏｇｉｎＰｒｏｃｅｓｓｏｒ１３０２パッケージのエディタパッケージへのリダイレクトを除いて、プロセッサパッケージは互いに独立し、一般には、エディタパッケージの間のやりとりはない。各プロセッサパッケージ１３０２〜１３０８は、情報を取得、追加又は更新するため、データベースとやりとりする。ＬｏｇｉｎＰｒｏｃｅｓｓｏｒ１３０２パッケージは、メンバーがアクセス権限を有しているか判断するため、データベース１３１０にアクセスする。その他のプロセッサパッケージ１３０４〜１３０８のそれぞれは、対応するエディタ及びそれが生成する対応するウェブページに表示すべきタスク情報を取得し、対応するタスク情報を追加又は更新するため、データベース１３１０にアクセスする。非限定的な具体例として、データベース１３１０は、ＭｙＳＱＬを利用して実現されてもよいが、データベース１３１０はＭｙＳＱＬを利用した実現形態に限定されるものでない。
【００７７】
実施例によると、各エディタプロセッサ１３０４〜１３０８パッケージは、ＰＨＰスクリプトファイル、ＪａｖａＳｃｒｉｐｔファイル及びＨＴＭＬファイルから構成される。ＰＨＰスクリプトファイルは、データベース１３１０からプロジェクト及びタスク情報を取得し、クライアントプロセッサ６０２（図６）上にエディタを表示するＪａｖａＳｃｒｉｐｔを生成する。これは、ＰＨＰスクリプトがＪａｖａＳｃｒｉｐｔとやりとりすることを可能にする。ＪａｖａＳｃｒｉｐｔは、エディタを生成し、エディタとプロジェクトメンバーとの間のすべてのやりとりを管理する。エディタが送信されると、ＰＨＰスクリプトファイルは、エディタの情報を処理し、当該情報をデータベース１３１０において追加又は更新し、エディタに対応するウェブページを生成する。
【００７８】
図１４は、本発明の実施例によるエディタプロセッサ１３０４〜１３０８のプログラミングパッケージ図を示す。実施例によると、ＴａｓｋＡｓｓｉｇｎｍｅｎｔＰｒｏｃｅｓｓｏｒ１３０４、ＰｒｏｊｅｃｔＳｃｈｅｄｕｌｅＰｒｏｃｅｓｓｏｒ１３０６及びＭｅｍｂｅｒＳｃｈｅｄｕｌｅＰｒｏｃｅｓｓｏｒ１３０８パッケージのすべては、図１４に示されるパッケージ図を利用する。パッケージは主要な２つの部分に分割され、表示エディタ１４０２は、エディタ１４０４からの提示情報及びエディタの表示及び管理を行い、エディタ１４０４は、エディタに情報を提示し、ウェブページを生成する。
【００７９】
ＸＸＸ１４０６（ただし、“ＸＸＸ”は、ＴａｓｋＡｓｓｉｇｎｍｅｎｔ、ＰｒｏｊｅｃｔＳｃｈｅｄｕｌｅ又はＭｅｍｂｅｒＳｃｈｅｄｕｌｅを表す）は、エディタを表示するため、以下のパッケージを一体化する。ウェブページ１４０６は、エディタを表示及び管理するためのＸＸＸＸＰＨＰＰｒｏｃｅｓｓｏｒ１４０８パッケージのすべてのＰＨＰスクリプトファイルと、ＸＸＸＪａｖａＳｃｒｉｐｔＰｒｏｃｅｓｓｏｒ１４１０パッケージのすべてのＪａｖａＳｃｒｉｐｔファイルとを有する。データベースからタスク情報を所得し、ＸＸＸＪａｖａＳｃｒｉｐｔＰｒｏｃｅｓｓｏｒ１４１０パッケージとやりとりするＪａｖａＳｃｒｉｐｔを生成するため、ウェブサーバ（図５のウェブサーバ５０７、５３０など）上で処理される。エディタの初期表示を提供するため、すべてのＪａｖａＳｃｒｉｐｔがクライアントプロセッサ６０２（図６）のウェブブラウザにおいて実行される。すべてのＪａｖａＳｃｒｉｐｔファイルは、エディタを管理するため、すなわち、対応するすべての編集イベントを処理するため、クライアントプロセッサ６０２のウェブブラウザにわたされる。
【００８０】
ＰｏｓｔＸＸＸ１４１２のウェブページは、情報を提示し、提示ウェブページを生成する以下のパッケージを一体化する。ＰｏｓｔＸＸＸ１４１２のウェブページは、エディタからの情報を提示するためのＰｏｓｔＸＸＸＰＨＰＰｒｏｃｅｓｓｏｒ１４１４パッケージのすべてのＰＨＰスクリプトファイルと、ウェブページを生成するためのＸＸＸＷｅｂＰａｇｅＧｅｎｅｒａｔｏｒ１４１６パッケージのすべてのＰＨＰスクリプトファイルとを有する。ＰｏｓｔＸＸＸＰＨＰＰｒｏｃｅｓｓｏｒ１４１４パッケージは、エディタからすべてのタスク情報を取得し、データベースのタスク情報を追加又は更新する。ＸＸＸＷｅｂＰａｇｅＧｅｎｅｒａｔｏｒ１４１６パッケージは、適切なウェブページを生成するため、データベースからタスク情報を取得する。
【００８１】
図１４の各パッケージは、パッケージのインタフェースを提供し、パッケージ内部のクラスを管理するクラスを提供する。これは、パッケージ内のデザインがその他のパッケージに影響を与えることなく容易に変更されることを可能にする。
【００８２】
［メンバースケジュールプロセッサパッケージ］
図１５〜１８は、メンバースケジュールエディタ３０２（図３）に対応する図１３のＭｅｍｂｅｒＳｃｈｅｄｕｌｅＰｒｏｃｅｓｓｏｒ１３０８パッケージに対応する図１４のパッケージのクラス図を示す。これらの図は、表示エディタ１４０２の４つのパッケージとエディタ１４０４からの掲示情報に対応するクラス構成を示す。ＸＸＸＰＨＰＰｒｏｃｅｓｓｏｒ１４０８（図１４）パッケージは、データベースからタスク割当て／スケジュール情報を取得し、サーバプロセッサ６０４（図６）におけるエディタの初期表示のためのコードを生成する。ＸＸＸＪａｖａＳｃｒｉｐｔＰｒｏｃｅｓｓｏｒ１４１０（図１４）パッケージは、クライアントプロセッサ６０２（図６）のエディタを表示、管理及び維持する。ＰｏｓｔＸＸＸＰＨＰＰｒｏｃｅｓｓｏｒ１４１４（図１４）パッケージは、クライアントプロセッサ６０２のエディタセッションからのすべてのタスク割当て／スケジュール情報をサーバプロセッサ６０４のデータベースに提供する。ＸＸＸＷｅｂＰａｇｅＧｅｎｅｒａｔｏｒ１４１６（図１４）パッケージは、タスク情報を表示する適切なウェブページを生成するため、サーバプロセッサ６０４のデータベースからタスク割当て／スケジュール情報を取得する。これらの図は、３つのエディタの間の４つのパッケージのデザインの類似性を示している。これらのエディタは異なるタスクを実行するが、すべてのエディタが類似したデザインパターンに従っている。
【００８３】
図１５は、本発明の実施例によるＭｅｍｂｅｒＳｃｈｅｄｕｌｅＰＨＰＰｒｏｃｅｓｓｏｒパッケージ１５００（図１４のＸＸＸＰＨＰＰｒｏｃｅｓｓｏｒ１４０８など）のクラス図を示す。ＭｅｍｂｅｒＳｃｈｅｄｕｌｅＰＨＰＰｒｏｃｅｓｓｏｒパッケージ１５００は、クライアントプロセッサ６０２（図６）のウェブブラウザに初期メンバ０スケジュールエディタ３０２（図３Ａ）を表示するＪａｖａＳｃｒｉｐｔインタフェースを生成する。
【００８４】
ＣＭｅｍｂｅｒＳｃｈｅｄｕｌｅＭａｎａｇｅｒ１５０２クラスは、ＭｅｍｂｅｒＳｃｈｅｄｕｌｅＰＨＰＰｒｏｃｅｓｓｏｒパッケージ１５００のためのインタフェースを提供し、ＪａｖａＳｃｒｉｐｔを生成するため、ＭｅｍｂｅｒＳｃｈｅｄｕｌｅＰＨＰＰｒｏｃｅｓｓｏｒパッケージ１５００のクラスを管理する。ＣＭｅｍｂｅｒＳｃｈｅｄｕｌｅＩｎｉｔｉａｌＤａｔａ１５０４クラスは、エディタにおいて初期データを設定するためのＪａｖａＳｃｒｉｐｔを生成する。初期データは、スケジュールに追加可能なプロジェクトメンバーに割り当てられるメンバータスクである。ＣＭｅｍｂｅｒＳｃｈｅｄｕｌｅＴａｓｋＲｏｗＤａｔａ１５０６クラスは、以前のエディタセッションにおいてメンバーのスケジュールに追加されたメンバータスクの各行を表示するためのＪａｖａＳｃｒｉｐｔを生成する。ＣＪａｖａＳｃｒｉｐｔＩｎｔｅｒｆａｃｅ１５０８クラスは、ウェブブラウザに初期エディタを生成し、図１６のＭｅｍｂｅｒＳｃｈｅｄｕｌｅＪａｖａＳｃｒｉｐｔＰｒｏｃｅｓｓｏｒ１６００パッケージとインタフェースをとるＪａｖａＳｃｒｉｐｔのシーケンスを生成する。ＣＥｄｉｔｏｒＤＢＩｎｔｅｒｆａｃｅ１５１０クラスは、エディタに表示されるデータベースからの情報にアクセスする。ＣＥｄｉｔｏｒＤＢＩｎｔｅｒｆａｃｅ１５１０は、所望される表示用の情報を取得するため、適切なデータベースクエリを生成する。ＣＥｄｉｔｏｒＤＢＩｎｔｅｒｆａｃｅ１５１０は、データベースにアクセスするため、ＣＳｃｈｅｄｕｌｅＤＢ１５１２とインタフェースをとる。ＣＭｅｍｂｅｒＳｃｈｅｄｕｌｅＩｎｉｔｉａｌＤａｔａ１５０４及びＣＭｅｍｂｅｒＳｃｈｅｄｕｌｅＴａｓｋＲｏｗＤａｔａ１５０６は、ＣＥｄｉｔｏｒＤＢＩｎｔｅｒｆａｃｅ１５１０を介しデータベースからタスク情報を取得する。一実施例によると、ＭｅｍｂｅｒＳｃｈｅｄｕｌｅＰＨＰＰｒｏｃｅｓｓｏｒパッケージの上記クラスは、ＰＨＰスクリプトにより実現される。
【００８５】
図１６は、本発明の実施例によるＭｅｍｂｅｒＳｃｈｅｄｕｌｅＪａｖａＳｃｒｉｐｔＰｒｏｃｅｓｓｏｒパッケージ１６００（図４のＸＸＸＪａｖａＳｃｒｉｐｔＰｒｏｃｅｓｓｏｒ１４１０など）のクラス図を示す。ＭｅｍｂｅｒＳｃｈｅｄｕｌｅＪａｖａＳｃｒｉｐｔＰｒｏｃｅｓｓｏｒパッケージ１６００は、クライアントプロセッサ６０２（図６）のウェブブラウザにおいてメンバースケジュールエディタ３０２（図３Ａ）を管理する。
【００８６】
ＣＥｄｉｔｏｒＭａｎａｇｅｒ１６０２クラスは、当該パッケージのインタフェースを提供し、メンバースケジュールエディタ３０２のウェブページ及びフォームを生成する。ＣＴａｂｌｅＭａｎａｇｅｒ１６０４クラスは、メンバースケジュールエディタ３０２のテーブルを生成し、当該テーブルに影響を与えるすべてのイベントを管理する。ＣＭｅｍｂｅｒＳｃｈｅｄｕｌｅＴａｂｌｅ１６０６クラスは、メンバースケジュールエディタ３０２のテーブルを初期化及び管理し、テーブルの各行を生成及び管理する。ＣＭｅｍｂｅｒＳｃｈｅｄｕｌｅＲｏｗ１６０８クラスは、メンバースケジュールエディタ３０２のテーブルの行を初期化及び管理し、当該行に影響を与えるすべてのイベントを管理し、当該行のセルを生成及び管理する。ＣＴａｓｋＣｅｌｌ１６１０クラスじゃ、行のタスクセルを初期化及び管理し、タスクに関する情報を維持する。ＣＤａｔｅＣｅｌｌ１６１２クラスは、行の日付セルを初期化及び管理し、タスクのスケジュールに関する情報を維持する。ＳｍｅｍｂｅｒＴａｓｋＩｎｆｏ１６１４の構成は、エディタにおいてタスクを表示するため、メンバータスク情報がＭｅｍｂｅｒＳｃｈｅｄｕｌｅＰＨＰＰｒｏｃｅｓｓｏｒ１５００パッケージからＭｅｍｂｅｒＳｃｈｅｄｕｌｅＪａｖａＳｃｒｉｐｔＰｒｏｃｅｓｓｏｒ１６００パッケージにわたされることを可能にする。ＣＤｅｔａｉｌＴａｓｋＩｎｆｏ１６１６クラスは、タスクの詳細タスクに関する情報を格納及び維持し、それのサブタスクによりタスクのスケジュールを更新するのに使用される。ＣＤａｔｅＣｅｌｌ１６１２は、データセルにより月、日及び年メニュー選択を表示するため、ＣＤａｔｅＳｅｌｅｃｔｏｒ１６１８を有する。一実施例によると、ＭｅｍｂｅｒＳｃｈｅｄｕｌｅＪａｖａＳｃｒｉｐｔＰｒｏｃｅｓｓｏｒ１６００パッケージの上記クラス及び構成のすべてが、ＪａｖａＳｃｒｉｐｔにより実現される。
【００８７】
図１７は、本発明の実施例によるＰｏｓｔＭｅｍｂｅｒＳｃｈｅｄｕｌｅＰＨＰＰｒｏｃｅｓｓｏｒパッケージ１７００（図１４のＰｏｓｔＸＸＸＰＨＰＰｒｏｃｅｓｓｏｒ１４１４など）のクラス図を示す。ＣＭｅｍｂｅｒＴａｓｋＭａｎａｇｅｒ１７０２クラスは、当該パッケージのためのインタフェースを提供し、パッケージの他のすべてのクラスを管理する。ＣＭｅｍｂｅｒＴａｓｋＭａｎａｇｅｒ１７０２は、エディタからの各タスクに対して実行されるアクションを決定する。ＣＭｅｍｂｅｒＴａｓｋＵｐｄａｔｅｒ１７０４クラスは、データベースのタスクのスケジュールを更新する。この更新は、予定日の編集、実際の日付の更新、タスクの削除及び新たなタスクの追加を含む。ＣＰｏｓｔＤＢＩｎｔｅｒｆａｃｅ１７０６クラスは、情報を取得し、データベースの情報を更新するため、クラスに対するインタフェースを提供する。ＣＰｏｓｔＤＢＱｕｅｒｙＧｅｎｅｒａｔｏｒ１７０８クラスは、ＣＰｏｓｔＤＢＩｎｔｅｒｆａｃｅ１７０６についてＳＱＬデータベースクエリを生成する。ＣＰｏｓｔＤＢＩｎｔｅｒｆａｃｅ１７０６は、データベースにアクセスするため、ＣＳｃｈｅｄｕｌｅＤＢ１７１０とのインタフェースをとる。ＣＭｅｍｂｅｒＴａｓｋＵｐｄａｔｅｒ１７０４は、ＣＰｏｓｔＤＢＩｎｔｅｒｆａｃｅ１７０６を介しデータベースのタスク情報を更新する。実施例によると、ＰｏｓｔＭｅｍｂｅｒＳｃｈｅｄｕｌｅＰＨＰＰｒｏｃｅｓｓｏｒパッケージ１７００の上記クラスは、ＰＨＰスクリプトにより実現される。
【００８８】
図１８は、本発明の実施例によるＭｅｍｂｅｒＳｃｈｅｄｕｌｅＷｅｂＰａｇｅＧｅｎｅｒａｔｏｒパッケージ１８００（図１４のＸＸＸＷｅｂＰａｇｅＰｒｏｃｅｓｓｏｒ１４１６など）のクラス図を示す。ＣＭｅｍｂｅｒＳｃｈｅｄｕｌｅＷｅｂＰａｇｅＭａｎａｇｅｒ１８０２クラスは、当該パッケージがメンバースケジュールウェブページを生成するためのインタフェースを提供する。ＣＭｅｍｂｅｒＳｃｈｅｄｕｌｅＴａｂｌｅ１８０４は、メンバースケジュールウェブページのテーブルを生成する。ＣＰｒｏｊｅｃｔＴａｓｋＲｏｗ１８０６は、テーブル内にタスク行を生成する。ＣＷｅｂＰａｇｅＤＢＩｎｔｅｒｆａｃｅ１８０８クラスは、クラスがデータベースにおいて情報を取得するためのインタフェースを提供する。ＣＷｅｂＰａｇｅＤＢＱｕｅｒｙＧｅｎｅｒａｔｏｒ１８１０クラスは、ＣＷｅｂＰａｇｅＤＢＩｎｔｅｒｆａｃｅ１８０８についてＳＱＬデータベースクエリを生成する。ＣＷｅｂＰａｇｅＤＢＩｎｔｅｒｆａｃｅ１８０８は、データベースにアクセスするため、ＣＳｃｈｅｄｕｌｅＤＢ１８１２とインタフェースをとる。ＣＭｅｍｂｅｒＳｃｈｅｄｕｌｅＴａｂｌｅ１８０４及びＣＰｒｏｊｅｃｔＴａｓｋＲｏｗ１８０６は、ＣＷｅｂＰａｇｅＤＢＩｎｔｅｒｆａｃｅ１８０８を介しデータベースからタスク情報を取得する。実施例によると、ＭｅｍｂｅｒＳｃｈｅｄｕｌｅＷｅｂＰａｇｅＧｅｎｅｒａｔｏｒ１８００パッケージの上記クラスは、ＰＨＰスクリプトにより実現される。
【００８９】
テーブル１は、本発明の実施例によるメンバースケジュールエディタ３０２（図３）の文書オブジェクトモデル表現を示す。テーブル１は、メンバースケジュールエディタ３０２を構成する各要素と対応する要素名及びｉｄプロパティとを示す。これらの要素の一部は、テーブル要素、行要素、セル要素、チェックボックス入力要素、入力テキスト要素及び選択要素など、エディタに表示されるエディタの各部分に対応する。隠れた入力要素など、これらの要素の一部は、情報を表示するのでなく、格納するのに使用される。情報を格納し、又はユーザから情報を受け取る要素は、エディタセッションからのタスク情報を掲示するため、情報をサーバプロセッサにわたすのに重要である。ドキュメント・オブジェクト・モデル（ＤＯＭ）については、Ｏ‘Ｒｅｅｉｌｌｙ＆Ａｓｓｏｃｉａｔｅｓ，Ｉｎｃ．により刊行されているＤａｖｉｄ  Ｆｌａｎａｇａｎによる“ＪａｖａＳｃｒｉｐｔ：ｔｈｅ  Ｄｅｆｉｎｉｔｉｖｅ  Ｇｕｉｄｅ”（Ｆｏｕｒｔｈ  Ｅｄｉｔｉｏｎ）に記載されている。
【００９０】
エディタを構成する各要素は、それのｉｄを介しアクセス可能であり、これらの要素のプロパティは当該要素の値及び／又は表示を変更するよう設定可能である。実施例によると、メンバースケジュールエディタ３０２の各要素について、当該要素は図１６のＭｅｍｂｅｒＳｃｈｅｄｕｌｅＪａｖａＳｃｒｉｐｔＰｒｏｃｅｓｓｏｒ１６００パッケージのクラスの１つの内部にラップされる。これらの要素はクラスの属性である。このため、クラスのメンバーファンクションは、要素への直接的なアクセスを有し、必要に応じてそれらのプロパティを変更する。クラスが要素への直接的なアクセスを有することによって、それらのｉｄを使用して要素を取得する必要はない。
【表１】
2008234646.tif 000003
【００９１】
以下のテーブル２は、本発明の実施例による図１６に示されるＭｅｍｂｅｒＳｃｈｅｄｕｌｅＪａｖａＳｃｒｉｐｔＰｒｏｃｅｓｓｏｒ１６００パッケージのＣＴａｓｋＣｅｌｌ１６１０クラスの属性メンバーを示す。ＣＴａｓｋＣｅｌｌ１６１０は、それが有するすべての要素のプロパティの値を取得及び設定することが可能である。
【表２】
2008234646.tif 000004
【００９２】
［プロジェクトスケジュールプロセッサパッケージ］
図１９〜２２は、プロジェクトスケジュールエディタ２０２（図２Ａ）に対応する図１３のＰｒｏｊｅｃｔＳｃｈｅｄｕｌｅＰｒｏｃｅｓｓｏｒ１３１０パッケージに対応する図１４のパッケージのクラス図を示す。これらの図は、表示エディタ１４０２の４つのパッケージとエディタ１４０４からの掲示情報に対応するクラス構成を示す。ＸＸＸＰＨＰＰｒｏｃｅｓｓｏｒ１４０８（図１４）パッケージは、データベースからタスク情報／スケジュール情報を取得し、サーバプロセッサ６０４（図６）のエディタの初期表示のためのコードを生成する。ＸＸＸＪａｖａＳｃｒｉｐｔＰｒｏｃｅｓｓｏｒ１４１０（図１４）パッケージは、クライアントプロセッサ６０２（図６）のエディタを表示、管理及び維持する。ＰｏｓｔＸＸＸＰＨＰＰｒｏｃｅｓｓｏｒ１４１４（図１４）パッケージは、クライアントプロセッサ６０２のエディタセッションからのすべてのタスク情報／スケジュール情報をサーバプロセッサ６０４のデータベースに提供する。ＸＸＸＷｅｂＰａｇｅＧｅｎｅｒａｔｏｒ１４１６（図１４）パッケージは、タスク情報を表示する適切なウェブページを生成するため、サーバプロセッサ６０４のデータベースからタスク割当て／スケジュール情報を取得する。これらの図は、３つのエディタの間の４つのパッケージのデザインに関する類似性を示している。エディタは異なるタスクを実行するが、それらはすべて類似したデザインパターンに従う。
【００９３】
図１９は、本発明の実施例によるＰｒｏｊｅｃｔＳｃｈｅｄｕｌｅＰＨＰＰｒｏｃｅｓｓｏｒパッケージ１９００（図１４のＸＸＸＰＨＰＰｒｏｃｅｓｓｏｒ１４０８など）のクラス図を示す。ＰｒｏｊｅｃｔＳｃｈｅｄｕｌｅＰＨＰＰｒｏｃｅｓｓｏｒパッケージ１９００は、クライアントプロセッサ６０２（図６）のウェブブラウザにおいて初期的なプロジェクトスケジュールエディタ２０２（図２Ａ）を表示するＪａｖａＳｃｒｉｐｔパッケージを生成する。
【００９４】
ＣＰｒｏｊｅｃｔＳｃｈｅｄｕｌｅＭａｎａｇｅｒ１９０２クラスは、ＰｒｏｊｅｃｔＳｃｈｅｄｕｌｅＰＨＰＰｒｏｃｅｓｓｏｒパッケージ１９００のためのインタフェースを提供し、Ｊａｖａｓｃｒｉｐｔを生成するため、ＰｒｏｊｅｃｔＳｃｈｅｄｕｌｅＰＨＰＰｒｏｃｅｓｓｏｒパッケージ１９００のクラスを管理する。ＣＰｒｏｊｅｃｔＳｃｈｅｄｕｌｅＩｎｉｔｉａｌＤａｔａ１９０４クラスは、エディタの初期データを設定するためのＪａｖａｓｃｒｉｐｔを生成する。初期データは、プロジェクトスケジュールに追加可能なプロジェクトタスクである。ＣＰｒｏｊｅｃｔＳｃｈｅｄｕｌｅＴａｓｋＲｏｗＤａｔａ１９０６クラスは、以前のエディタセッションにおいてメンバーのスケジュールに追加された対応するメンバータスクと共に、プロジェクトタスクの各行を表示するためのＪａｖａｓｃｒｉｐｔを生成する。ＣＪａｖａＳｃｒｉｐｔＩｎｔｅｒｆａｃｅ１９１２クラスは、ウェブブラウザにおいて初期エディタを生成し、ＰｒｏｊｅｃｔＳｃｈｅｄｕｌｅＪａｖａＳｃｒｉｐｔＰｒｏｃｅｓｓｏｒ２０００パッケージとインタフェースをとるＪａｖａｓｃｒｉｐｔのシーケンスを生成する。ＣＰｒｏｊｅｃｔＥｄｉｔｏｒＤＢＩｎｔｅｒｆａｃｅ１９０８クラスは、エディタに表示されるデータベースからの情報にアクセスする。ＣＰｒｏｊｅｃｔＥｄｉｔｏｒＤＢＱｕｅｒｙＧｅｎｅｒａｔｏｒ１９１０クラスは、ＣＰｒｏｊｅｃｔＥｄｉｔｏｒＤＢＩｎｔｅｒｆａｃｅ１９０８についてＳＱＬデータベースクエリを生成する。ＣＰｒｏｊｅｃｔＥｄｉｔｏｒＤＢＩｎｔｅｒｆａｃｅ１９０８は、データベースにアクセスするためＣＳｃｈｅｄｕｌｅＤＢ１９１４とインタフェースをとる。ＣＰｒｏｊｅｃｔＳｃｈｅｄｕｌｅＩｎｉｔｉａｌＤａｔａ１９０４及びＣＰｒｏｊｅｃｔＳｃｈｅｄｕｌｅＴａｓｋＲｏｗＤａｔａ１９０６は、ＣＰｒｏｊｅｃｔＥｄｉｔｏｒＤＢＩｎｔｅｒｆａｃｅ１９０８を介しデータベースからタスク情報を取得する。実施例によると、ＰｒｏｊｅｃｔＳｃｈｅｄｕｌｅＰＨＰＰｒｏｃｅｓｓｏｒ１９００の上記クラスは、ＰＨＰスクリプトにより実現される。
【００９５】
図２０は、本発明の実施例によるＰｒｏｊｅｃｔＳｃｈｅｄｕｌｅＪａｖａＳｃｒｉｐｔＰｒｏｃｅｓｓｏｒパッケージ２０００（図１４のＰｏｓｔＸＸＸＪａｖａＳｃｒｉｐｔＰｒｏｃｅｓｓｏｒ１４１０など）のクラス図を示す。ＰｒｏｊｅｃｔＳｃｈｅｄｕｌｅＪａｖａＳｃｒｉｐｔＰｒｏｃｅｓｓｏｒパッケージ２０００は、ブラウザにおいてプロジェクトスケジュールエディタ２０２（図２Ａ）を管理する。ＣＰｒｏｊｅｃｔＥｄｉｔｏｒＭａｎａｇｅｒ２００２クラスは、当該パッケージのインタフェースを提供し、プロジェクトスケジュールエディタ２０２のウェブページ及びフォームを生成する。ＣＰｒｏｊｅｃｔＴａｂｌｅＭａｎａｇｅｒ２００４クラスは、プロジェクトスケジュールエディタ２０２のテーブルを生成、初期化及び管理し、当該テーブルに影響を与えるすべてのイベントを管理する。ＣＰｒｏｊｅｃｔＴａｂｌｅＭａｎａｇｅｒ２００４はまた、テーブルの各行を生成及び管理する。ＣＰｒｏｊｅｃｔＳｃｈｅｄｕｌｅＲｏｗ２００６クラスは、プロジェクトスケジュールエディタ２０２のテーブルの行を初期化及び管理し、当該行に影響を与えるすべてのイベントを管理し、当該行のセルを生成及び管理する。ＣＴａｓｋＣｅｌｌ２００８クラスは、行のタスクセルを初期化及び生成する。ＣＭｅｍｂｅｒＣｅｌｌ２０１０クラスは、行のメンバーセルを初期化及び管理する。ＳＰｒｏｊｅｃｔＴａｓｋＩｎｆｏ２０１４の構成は、プロジェクトスケジュールエディタ２０９２においてプロジェクトタスクとそれのメンバータスクスケジュールを表示するため、プロジェクト／メンバータスク情報をＰｒｏｊｅｃｔＳｃｈｅｄｕｌｅＰＨＰＰｒｏｃｅｓｓｏｒ１９００パッケージからＰｒｏｊｅｃｔＳｃｈｅｄｕｌｅＪａｖａＳｃｒｉｐｔＰｒｏｃｅｓｓｏｒ２０００パッケージにわたすことを可能にする。ＣＤａｔｅＣｅｌｌ２０１２は、予定／実際の日付セルの月、日及び年メニュー選択を表示するため、ＣＤａｔｅＳｅｌｅｃｔｏｒ２０１６を有する。実施例によると、ＰｒｏｊｅｃｔＳｃｈｅｄｕｌｅＪａｖａＳｃｒｉｐｔＰｒｏｃｅｓｓｏｒパッケージ２０００の上記クラス及び構成は、Ｊａｖａｓｃｒｉｐｔにより実現される。
【００９６】
図２１は、本発明の実施例によるＰｏｓｔＰｒｏｊｅｃｔＳｃｈｅｄｕｌｅＰＨＰＰｒｏｃｅｓｓｏｒ２１００パッケージ（図１４のＰｏｓｔＸＸＸＰＨＰＰｒｏｃｅｓｓｏｒ１４１４など）のクラス図を示す。ＣＰｒｏｊｅｃｔＴａｓｋＭａｎａｇｅｒ２１０２クラスは、当該パッケージのインタフェースを提供し、パッケージの他のすべてのクラスを管理する。ＣＰｒｏｊｅｃｔＴａｓｋＭａｎａｇｅｒ２１０２は、プロジェクトスケジュールエディタ２０２からの各プロジェクトタスクに対して実行されるアクションを決定する。ＣＰｒｏｊｅｃｔＴａｓｋＵｐｄａｔｅｒ２１０４クラスは、データベースのプロジェクトタスクのスケジュールを更新する。この更新は、プロジェクトタスクのスケジュールの追加又は更新を含む。ＣＰｒｏｊｅｃｔＴａｓｋＵｐｄａｔｅｒ２１０４クラスは、メンバーのタスクによりプロジェクトタスクを併合し、データベースにおいてプロジェクトタスクを更新する。ＣＰｏｓｔＰｒｏｊｅｃｔＤＢＩｎｔｅｒｆａｃｅ２１０６は、クラスがデータベースにおける情報を取得及び更新するためのインタフェースを提供する。ＣＰｏｓｔＰｒｏｊｅｃｔＤＢＱｕｅｒｙＧｅｎｅｒａｔｏｒ２１０８クラスは、ＣＰｏｓｔＰｒｏｊｅｃｔＤＢＩｎｔｅｒｆａｃｅ２１０６についてＳＱＬデータベースクエリを生成する。ＣＰｏｓｔＰｒｏｊｅｃｔＤＢＩｎｔｅｒｆａｃｅ２１０６は、データベースにアクセスするため、ＣＳｃｈｅｄｕｌｅＤＢ２１１０とインタフェースをとる。ＣＰｒｏｊｅｃｔＴａｓｋＵｐｄａｔｅｒ２１０４は、ＣＰｏｓｔＰｒｏｊｅｃｔＤＢＩｎｔｅｒｆａｃｅ２１０６を介しデータベースのタスク情報を更新する。実施例によると、ＰｏｓｔＰｒｏｊｅｃｔＳｃｈｅｄｕｌｅＰＨＰＰｒｏｃｅｓｓｏｒ２１００パッケージの上記クラスは、ＰＨＰスクリプトにより実現される。
【００９７】
図２２は、本発明の実施例によるＰｒｏｊｅｃｔＳｃｈｅｄｕｌｅＷｅｂＰａｇｅＧｅｎｅｒａｔｏｒ２２００パッケージ（図１４のＸＸＸＷｅｂＰａｇｅＰｒｏｃｅｓｓｏｒ１４１６など）のクラス図を示す。ＣＰｒｏｊｅｃｔＳｃｈｅｄｕｌｅＷｅｂＰａｇｅＭａｎａｇｅｒ２２０２クラスは、当該パッケージがプロジェクトスケジュールウェブページを生成するためのインタフェースを提供する。ＣＰｒｏｊｅｃｔＳｃｈｅｄｕｌｅＴａｂｌｅ２２０４は、プロジェクトスケジュールウェブページのテーブルを生成する。ＣＰｒｏｊｅｃｔＴａｓｋＲｏｗ２２０６クラスは、テーブル内にプロジェクト及びメンバータスク行を生成する。ＣＰｒｏｊｅｃｔＷｅｂＰａｇｅＤＢＩｎｔｅｒｆａｃｅ２２０８クラスは、クラスがデータベースから情報を取得するためのインタフェースを提供する。ＣＰｒｏｊｅｃｔＷｅｂＰａｇｅＤＢＱｕｅｒｙＧｅｎｅｒａｔｏｒ２２１０クラスは、ＣＰｒｏｊｅｃｔＷｅｂＰａｇｅＤＢＩｎｔｅｒｆａｃｅ２２０８についてＳＱＬデータベースクエリを生成する。ＣＰｒｏｊｅｃｔＷｅｂＰａｇｅＤＢＩｎｔｅｒｆａｃｅ２２０８は、データベースにアクセスするため、ＣＳｃｈｅｄｕｌｅＤＢ２２１２とインタフェースをとる。ＣＰｒｏｊｅｃｔＳｃｈｅｄｕｌｅＴａｂｌｅ２２０４及びＣＰｒｏｊｅｃｔＴａｓｋＲｏｗ２２０６は、ＣＰｒｏｊｅｃｔＷｅｂＰａｇｅＤＢＩｎｔｅｒｆａｃｅ２２０８を介しデータベースからタスク情報を取得する。実施例によると、ＰｒｏｊｅｃｔＳｃｈｅｄｕｌｅＷｅｂＰａｇｅＧｅｎｅｒａｔｏｒ２２００パッケージの上記クラスは、ＰＨＰスクリプトにより実現される。
【００９８】
テーブル３は、本発明の実施例によるプロジェクトスケジュールエディタ２０２（図２Ａ）のドキュメント・オブジェクト・モデル表現を示す。テーブル３は、プロジェクトスケジュールエディタ２０２を構成する各要素と、対応する要素名及びｉｄプロパティとについて記載する。各要素は、それのｉｄを介しアクセス可能であり、要素のプロパティは要素の値及び／又は表示を変更するよう設定可能である。実施例によると、プロジェクトスケジュールエディタ２０２の各要素について、当該要素は、図２０のＰｒｏｊｅｃｔＳｃｈｅｄｕｌｅＪａｖａＳｃｒｉｐｔＰｒｏｃｅｓｓｏｒ２０００パッケージのクラスの１つの内部にラップされる。これらの要素はクラスの属性である。このため、クラスのメンバーファンクションは、要素への直接的なアクセスを有し、必要に応じてそれらのプロパティを変更する。クラスが要素への直接的なアクセスを有することによって、それらのｉｄを利用して要素を取得する必要はない。
【表３】
2008234646.tif 000005
【００９９】
テーブル４は、本発明の実施例による図２０に示されるＰｒｏｊｅｃｔＳｃｈｅｄｕｌｅＪａｖａＳｃｒｉｐｔＰｒｏｃｅｓｓｏｒ２０００パッケージのＣＴａｓｋＣｅｌｌ２００８クラスの属性メンバーを示す。ＣＴａｓｋＣｅｌｌ２００８は、それが有するすべての要素のプロパティの値を取得及び設定可能である。
【表４】
2008234646.tif 000006
【０１００】
［タスク割当てプロセッサパッケージ］
図２３〜２６は、タスク割当てエディタ１０２（図１Ａ）に対応する図１３のＴａｓｋＡｓｓｉｇｎｍｅｎｔＰｒｏｃｅｓｓｏｒパッケージに対応する図１４のパッケージのクラス図を示す。これらの図は、表示エディタ１４０２の４つのパッケージとエディタ１４０４からの掲示情報に対応するクラス図を示す。ＸＸＸＰＨＰＰｒｏｃｅｓｓｏｒ１４０８（図１４）パッケージは、データベースからタスク割当て／スケジュール情報を取得し、サーバプロセッサ６０４（図６）においてエディタの初期表示のためのコードを生成する。ＸＸＸＪａｖａＳｃｒｉｐｔＰｒｏｃｅｓｓｏｒ１４１０（図１４）パッケージは、クライアントプロセッサ６０２（図６）においてエディタを表示、管理及び維持する。ＰｏｓｔＸＸＸＰＨＰＰｒｏｃｅｓｓｏｒ１４１４（図１４）パッケージは、クライアントプロセッサ６０２のエディタセッションからのすべてのタスク割当て／スケジュール情報をサーバプロセッサ６０４のデータベースに提供する。ＸＸＸＷｅｂＰａｇｅＧｅｎｅｒａｔｏｒ１４１６（図１４）パッケージは、タスク情報を表示する適切なウェブページを生成するため、サーバプロセッサ６０４のデータベースからタスク割当て／スケジュール情報を取得する。これらの図は、３つのエディタの間の４つのパッケージの構成の類似性を示している。エディタは異なるタスクを実行するが、それらはすべて同様のデザインパターンに従う。
【０１０１】
図２３は、本発明の実施例によるＴａｓｋＡｓｓｉｇｎｍｅｎｔＰＨＰＰｒｏｃｅｓｓｏｒ２３００パッケージ（図１４のＸＸＸＰＨＰＰｒｏｃｅｓｓｏｒ１４０８など）のクラス図を示す。ＴａｓｋＡｓｓｉｇｎｍｅｎｔＰＨＰＰｒｏｃｅｓｓｏｒ２３００パッケージは、クライアントプロセッサ６０２（図６）のウェブブラウザに初期的なタスク割当てエディタ１０２（図１Ａ）を表示するＪａｖａｓｃｒｉｐｔインタフェースを生成する。
【０１０２】
ＣＴａｓｋＡｓｓｉｇｎｍｅｎｔＭａｎａｇｅｒ２３０２クラスは、ＴａｓｋＡｓｓｉｇｎｍｅｎｔＰＨＰＰｒｏｃｅｓｓｏｒ２３００パッケージのためのインタフェースを提供し、Ｊａｖａｓｃｒｉｐｔを生成するため、パッケージのすべてのクラスを管理する。ＣＴａｓｋＡｓｓｉｇｎｍｅｎｔＩｎｉｔｉａｌＤａｔａ２３０４クラスは、タスク割当てエディタ１０２（図１Ａ）において初期データを設定するためのＪａｖａｓｃｒｉｐｔを生成する。この初期データは、プロジェクトスケジュールに追加され、メンバーに割当て可能なプロジェクトタスクである。ＣＴａｓｋＡｓｓｉｇｎｍｅｎｔＴａｓｋＲｏｗＤａｔａ２３０６クラスは、プロジェクトタスクの各行を、以前のエディタセッションにおいて割り当てられたタスクに割り当てられたメンバーとそれのメンバータスクと共に表示するためのＪａｖａｓｃｒｉｐｔを生成する。ＣＴａｓｋＡｓｓｉｇｎｍｅｎｔＪａｖａＳｃｒｉｐｔＩｎｔｅｒｆａｃｅ２３１０クラスは、ウェブブラウザにおいて初期的なタスク割当てエディタ１０２を生成し、ＴａｓｋＡｓｓｉｇｎｍｅｎｔＪａｖａＳｃｒｉｐｔＰｒｏｃｅｓｓｏｒ２４００パッケージとインタフェースをとるＪａｖａｓｃｒｉｐｔシーケンスを生成する。ＣＴａｓｋＡｓｓｉｇｎｍｅｎｔＥｄｉｔｏｒＤＢＩｎｔｅｒｆａｃｅ２３０８は、エディタに表示されるデータベースからの情報にアクセスする。ＣＴａｓｋＡｓｓｉｇｎｍｅｎｔＥｄｉｔｏｒＤＢＩｎｔｅｒｆａｃｅ２３０８は、所望される表示用の情報を取得するため、適切なクエリを生成する。ＣＴａｓｋＡｓｓｉｇｎｍｅｎｔＥｄｉｔｏｒＤＢＩｎｔｅｒｆａｃｅ２３０８は、データベースにアクセスするため、ＣＳｃｈｅｄｕｌｅＤＢ２３１４とインタフェースをとる。ＣＴａｓｋＡｓｓｉｇｎｍｅｎｔＩｎｉｔｉａｌＤａｔａ２３０４及びＣＴａｓｋＡｓｓｉｇｎｍｅｎｔＴａｓｋＲｏｗＤａｔａ２３０６は、ＣＴａｓｋＡｓｓｉｇｎｍｅｎｔＥｄｉｔｏｒＤＢＩｎｔｅｒｆａｃｅ２３０８を介しデータベースからタスク情報を取得する。実施例によると、ＴａｓｋＡｓｓｉｇｎｍｅｎｔＰＨＰＰｒｏｃｅｓｓｏｒ２３００パッケージの上記クラスは、ＰＨＰスクリプトにより実現される。
【０１０３】
図２４は、本発明の実施例によるＴａｓｋＡｓｓｉｇｎｍｅｎｔＪａｖａＳｃｒｉｐｔＰｒｏｃｅｓｓｏｒ２４００パッケージ（図１４のＰｏｓｔＸＸＸＪａｖａＳｃｒｉｐｔＰｒｏｃｅｓｓｏｒ１４１０など）のクラス図を示す。ＴａｓｋＡｓｓｉｇｎｍｅｎｔＪａｖａＳｃｒｉｐｔＰｒｏｃｅｓｓｏｒ２４００パッケージは、ブラウザにおけるタスク割当てエディタ１０２（図１Ａ）を管理する。ＣＴａｓｋＡｓｓｉｇｎｍｅｎｔＥｄｉｔｏｒＭａｎａｇｅｒ２４０２クラスは、当該パッケージのためのインタフェースを提供し、タスク割当てエディタ１０２についてウェブページ及びフォームを生成する。ＣＴａｓｋＡｓｓｉｇｎｍｅｎｔＴａｂｌｅ２４０４クラスは、タスク割当てエディタ１０２のテーブルを生成、初期化及び管理し、当該テーブルに影響を与えるすべてのイベントを管理する。ＣＴａｓｋＡｓｓｉｇｎｍｅｎｔＴａｂｌｅ２４０４はまた、テーブルの各行を生成及び管理する。ＣＴａｓｋＡｓｓｉｇｎｍｅｎｔＲｏｗ２４０６クラスは、タスク割当てエディタ１０２のテーブルの行を初期化及び管理し、当該行に影響を与えるすべてのイベントを管理し、当該行のセルを生成及び管理する。ＣＴａｓｋＣｅｌｌ２４０８クラスは、行のタスクセルを初期化及び管理する。ＣＡｓｓｉｇｎｍｅｎｔＣｅｌｌ２４１０クラスは、行の割当てセルを初期化及び管理する。実施例によると、ＴａｓｋＡｓｓｉｇｎｍｅｎｔＪａｖａＳｃｒｉｐｔＰｒｏｃｅｓｓｏｒ２４００パッケージの上記クラス及び構成は、Ｊａｖａｓｃｒｉｐｔにより実現される。
【０１０４】
図２５は、本発明の実施例によるＰｏｓｔＴａｓｋＡｓｓｉｇｎｍｅｎｔＰＨＰＰｒｏｃｅｓｓｏｒ２５００パッケージ（図１４のＰｏｓｔＸＸＸＰＨＰＰｒｏｃｅｓｓｏｒ１４１４など）のクラス図を示す。ＣＴａｓｋＡｓｓｉｇｎｍｅｎｔＭａｎａｇｅｒ２５０２クラスは、当該パッケージのためのインタフェースを提供し、パッケージの他のすべてのクラスを管理する。ＣＴａｓｋＡｓｓｉｇｎｍｅｎｔＭａｎａｇｅｒ２５０２は、タスク割当てエディタ１０２（図１Ａ）からの各プロジェクトタスクに対して実行されるアクションを決定する。ＣＴａｓｋＡｓｓｉｇｎｍｅｎｔＵｐｄａｔｅｒ２５０４クラスは、データベースにおけるプロジェクトタスクの割当てを更新する。この更新は、プロジェクトタスクの割当ての追加又は削除を含む。ＣＰｏｓｔＴａｓｋＡｓｓｉｇｎｍｅｎｔＤＢＩｎｔｅｒｆａｃｅ２５０８クラスは、クラスがデータベースにおいて情報を取得及び更新するためのインタフェースを提供する。ＣＰｏｓｔＴａｓｋＡｓｓｉｇｎｍｅｎｔＤＢＱｕｅｒｙＧｅｎｅｒａｔｏｒ２５０６クラスは、ＣＰｏｓｔＴａｓｋＡｓｓｉｇｎｍｅｎｔＤＢＩｎｔｅｒｆａｃｅ２５０８についてＳＱＬデータベースクエリを生成する。ＣＰｏｓｔＴａｓｋＡｓｓｉｇｎｍｅｎｔＤＢＩｎｔｅｒｆａｃｅ２５０８は、データベースにアクセスするため、ＣＳｃｈｅｄｕｌｅＤＢ２５１０とインタフェースをとる。ＣＴａｓｋＡｓｓｉｇｎｍｅｎｔＵｐｄａｔｅｒ２５０４は、ＣＰｏｓｔＴａｓｋＡｓｓｉｇｎｍｅｎｔＤＢＩｎｔｅｒｆａｃｅ２５０８を介しデータベースにおけるタスク情報を更新する。実施例によると、ＰｏｓｔＴａｓｋＡｓｓｉｇｎｍｅｎｔＰＨＰＰｒｏｃｅｓｓｏｒ２５００パッケージの上記クラスは、ＰＨＰスクリプトにより実現される。
【０１０５】
図２６は、本発明の実施例によるＴａｓｋＡｓｓｉｇｎｍｅｎｔＷｅｂＰａｇｅＧｅｎｅｒａｔｏｒ２６００パッケージ（図１４のＸＸＸＷｅｂＰａｇｅＰｒｏｃｅｓｓｏｒ１４１６など）のクラス図を示す。ＣＴａｓｋＡｓｓｉｇｎｍｅｎｔＷｅｂＰａｇｅＭａｎａｇｅｒ２６０２クラスは、当該パッケージがタスク割当てウェブページを生成するためのインタフェースを提供する。ＣＴａｓｋＡｓｓｉｇｎｍｅｎｔＴａｂｌｅ２６０４クラスは、タスク割当てウェブページについてテーブルを生成する。ＣＴａｓｋＡｓｓｉｇｎｍｅｎｔＷｅｂＰａｇｅＧｅｎｅｒａｔｏｒＤＢＩンｔｅｒｆａｃｅ２６０６クラスは、クラスがデータベースから情報を取得するためのインタフェースを提供する。ＣＴａｓｋＡｓｓｉｇｎｍｅｎｔＷｅｂＰａｇｅＧｅｎｅｒａｔｏｒＤＢＩｎｔｅｒｆａｃｅ２６０６は、所望の情報を取得するため、適切なクエリを生成する。ＣＴａｓｋＡｓｓｉｇｎｍｅｎｔＷｅｂＰａｇｅＧｅｎｅｒａｔｏｒＤＢＩｎｔｅｒｆａｃｅ２６０６は、データベースにアクセスするため、ＣＳｃｈｅｄｕｌｅＤＢ２６０８とインタフェースをとる。ＣＴａｓｋＡｓｓｉｇｎｍｅｎｔＴａｂｌｅ２６０４は、ＣＴａｓｋＡｓｓｉｇｎｍｅｎｔＷｅｂＰａｇｅＧｅｎｅｒａｔｏｒＤＢＩｎｔｅｒｆａｃｅ２６０６を介しデータベースからタスク情報を取得する。実施例によると、ＴａｓｋＡｓｓｉｇｎｍｅｎｔＷｅｂＰａｇｅＧｅｎｅｒａｔｏｒ２６００パッケージの上記クラスは、ＰＨＰスクリプトにより実現される。
【０１０６】
テーブル５は、タスク割当てエディタ１０２（図１Ａ）のドキュメント・オブジェクト・モデル表現を示す。テーブル５は、タスク割当てエディタ１０２を構成する各要素と、対応する要素名及びｉｄプロパティとを記述する。各要素はそれのｉｄを介しアクセス可能であり、要素のプロパティは、当該要素の値及び／又は表示を変更するよう設定可能である。実施例によると、タスク割当てエディタ１０２の各要素について、当該要素は図２４のＴａｓｋＡｓｓｉｇｎｍｅｎｔＪａｖａＳｃｒｉｐｔＰｒｏｃｅｓｓｏｒ２４００パッケージのクラスの１つの内部にラップされる。各要素はクラスの属性である。このため、クラスのメンバーファンクションは、要素への直接的なアクセスを有し、必要に応じてそれのプロパティを変更する。クラスが要素への直接的なアクセスを有することによって、それらのｉｄを使用して各要素を取得する必要がなくなる。
【表５】
2008234646.tif 000007
【０１０７】
以下のテーブル６は、本発明の実施例による図２４に示されるＴａｓｋＡｓｓｉｇｎｍｅｎｔＪａｖａＳｃｒｉｐｔＰｒｏｃｅｓｓｏｒパッケージのＣＴａｓｋＣｅｌｌ２４０８クラスの属性メンバーを示す。ＣＴａｓｋＣｅｌｌ２４０８は、それが有するすべての要素のプロパティの値を取得及び設定することが可能である。
【表６】
2008234646.tif 000008
【０１０８】
メンバースケジュールエディタ３０２（図３Ａ）、プロジェクトスケジュールエディタ２０２（図２Ａ）及びタスク割当てエディタ１０２（図１Ａ）のそれぞれについてＰＨＰＰｒｏｃｅｓｓｏｒ、ＪａｖａＳｃｒｉｐｔＰｒｏｃｅｓｓｏｒ、ＰｏｓｔＰＨＰＰｒｏｃｅｓｓｏｒ及びＷｅｂＰａｇｅＧｅｎｅｒａｔｏｒを記載した図１５〜２６から理解されるように、各エディタのデザインは同様のパターンに従っている。このため、システムに追加される新たなエディタは、同様のデザインパターンに従うことができる。
【０１０９】
テーブル７は、デザインの類似性を確認するため、ここに記載されるオブジェクト指向スケジューリングシステムのソフトウェア設計仕様のインデックス化を示す。テーブル７は、各パッケージとパッケージ内の各クラスを列記し、３つのエディタの構成の類似性を示す。
【表７】
2008234646.tif 000009
【０１１０】
［プレースホルダー文字列によるコンスタント文字列からのデータベースクエリの生成］
図２７は、本発明の実施例によるデータベースクエリを生成するのに使用される一例となるコンスタント文字列を示す。２つのタイプのコンスタント文字列が使用される。“コンスタントクエリ文字列”は、所与のクエリの値と置換されるプレースホルダー文字列を有するクエリ文字列全体を含む。コンスタントクエリ文字列はクエリ全体を示し、プレースホルダー文字列は、何れの値がクエリに入力される必要があるか示す。“プレースホルダー文字列に対するコンスタント”とは、コンスタントクエリ文字列のプレースホルダー文字列を検索し、実際の値と置換するのに使用される。クエリのプレースホルダー文字列は、クエリの結果を限定するための制限を適用する。図２７に示される例は、ＰＨＰスクリプトに対応しているが、任意の言語により利用可能である。
【０１１１】
プレースホルダー文字列を有するコンスタントクエリ文字列を使用することは、読解することが困難な文字列の連結の系列を介し文字列を構成することからの改良を提供する。データベースにアクセスするパッケージの各クラス図は、図１５、１７、１８、１９、２１、２２、２３、２５及び２６に示されるように、パッケージ内で使用されるパッケージコンスタントを含む。コンスタントクエリ文字列は、それらが容易に特定できるように、パッケージ内で定義される。コンスタントクエリ文字列の他の効果は、Ｎａｖｉｃａｔ  ＭｙＳＱＬなどのデータベースツールにおいてそれらをテストすることである。コンスタントクエリ文字列は、クエリ文字列が有効な文字列であるかテストするため、各値と置換されたプレースホルダー文字列を有するこのようなツールにコピーすることができる。
【０１１２】
図２８は、本発明の実施例による図２７のコンスタント文字列からデータベースクエリを生成するのに使用される一例となるスクリプトを示す。図２８に示される例は、ＰＨＰスクリプトに対応するが、当該シーケンスを実現するため任意の言語が利用可能である。上記例は、スクリプトの各ステートメントが実行された後のクエリ文字列の値を示す。第１ステートメントの実行では、コンスタント文字列は変数文字列＄ｌｏｃ＿ｓＱｕｅｒｙに割り当てられる。変数＄ｌｏｃ＿ｓＱｕｅｒｙは、データベースクエリに使用されるクエリを含む。第２、第３及び第４ステートメントの実行では、プレースホルダー文字列“％％ＰｒｏｊｅｃｔＮｕｍｂｅｒ％％”、“％％ＭｅｍｂｅｒＬａｂｅｌ％％”及び“％％ＰｒｏｊｅｃｔＴａｓｋＩＤ％％”はそれぞれ、“Ｊ１７”、“Ｔ１”及び“４０”と置換される。第４ステップの実行は、結果として得られるクエリ文字列を示す。この例は、プロジェクト番号、メンバーラベル及びプロジェクトタスクｉｄなどのシンプルな値によるプレースホルダーの置換を示す。エディタによるセッション中に変動しないプロジェクト番号やメンバーラベルなど、プレースホルダー文字列を置換するいくつかの値はスタティックなものとなる。例示されるクエリは、指定されたプロジェクト番号、メンバーラベル及びプロジェクトタスクｉｄによるデータベースのテーブルの記録に制限される。
【０１１３】
図２９は、本発明の実施例によるコンスタント文字列からクエリ文字列を生成するプロセスを示すフロー図である。ブロック２９０２において、コンスタントクエリ文字列が変数文字列に割り当てられる。変数文字列は、プレースホルダー文字列を各値に置換することを可能にするため必要とされ、コンスタント文字列の各値は変化しない。ブロック２９０４において、変数文字列は、それがプレースホルダー文字列を有するか確認するためチェックされる。変数文字列がさらなるプレースホルダー文字列を有しない場合、クエリ文字列はオリジナルのコンスタントクエリ文字列に対応し、本プロセスはブロック２９０６において終了する。変数文字列がさらなるプレースホルダー文字列を有する場合、ブロック２９０８において、変数文字列のプレースホルダー文字列はある値と置換される。ブロック２９０８の置換後、ブロック２９０４に移行し、変数文字列がさらなるプレースホルダー文字列を有しているか判断される。変数のすべてのプレースホルダー文字列が各値と置換されると、クエリ文字列が生成され、データベースへの送信準備が整う。クエリがデータベースに送信されると、データベースは、要求元に返され、他のプロセスにわたされ、又は必要に応じて処理することが可能な結果を生成する。
【０１１４】
ＣＸＸＸＤＢＩｎｔｅｒｆａｃｅクラス（図１７のＣＰｏｓｔＤＢＩｎｔｅｒｆａｃｅ１７０６クラス、図１８のＣＷｅｂＰａｇｅＤＢＩｎｔｅｒｆａｃｅ１８０８クラスなど）及びＣＹＹＹＤＢＱｕｅｒｙＧｅｎｅｒａｔｏｒクラス（図１７のＣＰＯｓｔＤＢＱｕｅｒｙＧｅｎｅｒａｔｏｒ１７０８クラス、図１８のＣＷｅｂＰａｇｅＤＢＱｕｅｒｙＧｅｎｅｒａｔｏｒ１８１０クラスなど）が、クエリを生成及び使用する。いくつかのケースでは、ＣＸＸＸＤＢＩｎｔｅｒｆａｃｅクラスは、ユーザから、エディタを介し及びデータベースから取得した定数及び値からクエリ文字列を生成するプライベートファンクションを有する。一例として、図１５のＣＥｄｉｔｏｒＤＢＩｎｔｅｒｆａｃｅ１５１０があげられる。ほとんどの場合、ＣＸＸＸＤＢＩｎｔｅｒｆａｃｅクラスは、クエリ文字列を生成するため、ＣＹＹＹＤＢＱｕｅｒｙＧｅｎｅｒａｔｏｒのパブリックファンクションを使用する。一例として、図１７のＣＰｏｓｔＤＢＩｎｔｅｒｆａｃｅ１７０６及びＣＰｏｓｔＤＢＱｕｅｒｙＧｅｎｅｒａｔｏｒ１７０８があげられる。
【０１１５】
［エディタウェブページコンポーネント］
図３０は、本発明の実施例によるエディタ（メンバースケジュールエディタ３０２、プロジェクトスケジュールエディタ２０２、タスク割当てエディタ１０２など）のウェブページの各コンポーネントを示す。ウェブページは、ウェブサーバなどのサーバプロセッサ６０４（図６）に格納されているファイルである。ウェブページは、ＪａｖａＳｃｒｉｐｔコンポーネントとＰＨＰコンポーネントとを有する。ＪａｖａＳｃｒｉｐｔコンポーネントは、エディタにおいて発生するイベントを処理するＪａｖａＳｃｒｉｐｔファンクションを含む。ＪａｖａＳｃｒｉｐｔコンポーネントは、エディタを表示、管理及び維持するためのクラス、ユーティリティ及びコンスタントに対応する他のＪａｖａＳｃｒｉｐｔファイルを含む。ウェブページのＰＨＰコンポーネントは、データベースから取得されるタスク割当て／スケジュール情報をエディタに表示するＪａｖａＳｃｒｉｐｔコードの生成を開始するためのＰＨＰスクリプトを含む。ＰＨＰコンポーネントは、データベースからタスク割当て／スケジュール情報を取得し、エディタに対するＪａｖａＳｃｒｉｐｔコードを生成するためのクラス、ユーティリティ及びコンスタントに対応するＰＨＰスクリプトを有するファイルを含む。
【０１１６】
ウェブページがエディタウェブページなどをリクエストするウェブブラウザなどのクライアントプロセッサ６０２（図６）によりリクエストされると、ウェブページのＰＨＰコンポーネントのみがサーバプロセッサ６０４により処理される。例えば、ＰＨＰスクリプトは、ウェブサーバ５０７及び５３０（図５）などのウェブサーバにおいて実行される。ＰＨＰスクリプトは、データベースからのタスク割当て／スケジュール情報にアクセス及び取得する。ＰＨＰスクリプトは、タスク情報を格納し、ＪａｖａＳｃｒｉｐｔに転送するため、ＪａｖａＳｃｒｉｐｔコードによる構成を生成する。ＰＨＰスクリプトは、エディタを生成、管理及び維持するＪａｖａＳｃｒｉｐｔクラスのオブジェクトを生成するＪａｖａＳｃｒｉｐｔコードを生成し、タスク情報を有するエディタの初期表示を生成するため、オブジェクトのメンバーファンクションを呼び出す。ＰＨＰスクリプトにより生成されるＪａｖａＳｃｒｉｐｔコードが、ウェブページがクライアントプロセッサ６０２にわたされると、エディタウェブページに追加される。ＰＨＰコードは、それがクライアントプロセッサ６０２にわたされるとき、ウェブページにはない。クライアントプロセッサは、初期的なエディタを表示し、ユーザがエディタとやりとりするとき、エディタを管理及び維持するため、ウェブページにおけるすべてのＪａｖａＳｃｒｉｐｔコードを実行する。ＰＨＰスクリプトは、クライアントプロセッサ６０２にはわたされないが、サーバ側コードである。
【０１１７】
図３１は、本発明の実施例によるエディタ（メンバースケジュールエディタ３０２、プロジェクトスケジュールエディタ２０２、タスク割当てエディタ１０２など）のウェブページの各コンポーネントを示す。ＰＨＰプロセッサはサーバ側で実行され、ＪａｖａＳｃｒｉｐｔプロセッサはクライアント側で実行される。サーバ上のＰＨＰプロセッサは、クライアント上でＪａｖａＳｃｒｉｐｔプロセッサにより実行されるＪａｖａＳｃｒｉｐｔコードを生成するため、ＰＨＰコンポーネントを実行する。
【０１１８】
［クライアント・サーバベースプロジェクトスケジュールシステムによるプロジェクトスケジュール管理方法］
図３２は、本発明の実施例によるクライアント・サーバベースプロジェクトスケジュール管理システムによるプロジェクトスケジュール管理方法を示すフロー図である。図３２に示される方法の実施例は、１以上のプロセッサが命令を実行することによってなど、コンピュータ又はマシーンが方法の各ステップを実行するコンピュータ及び／又はマシーンにより実現される方法として実現される。例えば、本方法は、図３５のコンピュータシステム３５００などのコンピュータシステムにより実行可能である。
【０１１９】
ブロック３２０２において、クライアント・サーバベースプロジェクトスケジュールシステムに係るエディタを閲覧するリクエストに応答して、サーバはデータベースの第１のスケジュールに関する情報にアクセスする。例えば、クライアントプロセッサ６０２（図６）のユーザは、タスク割当てエディタ１０２（図１Ａ）、メンバースケジュールエディタ３０２（図３Ａ）又はプロジェクトスケジュールエディタ２０２（図２Ａ）の１つをリクエストするため、ユーザインタフェースとやりとりする。当該リクエストに応答して、サーバプロセッサ６０４（図６）は、データベース５０６（図５）からのデータ５０８（図５）及び／又はデータベース５３８（図５）からのデータ５３６（図５）など、データベースからデータにアクセスする。例えば、サーバプロセッサ６０４は、要求元のユーザと対応するプロジェクトに対して要求されたエディタを提供するため、データベースから適切なデータを抽出するようＰＨＰスクリプトコードを実行する。データベースからサーバが抽出するデータは、ユーザがリクエストしたエディタに固有のものであり、またユーザｉｄやプロジェクトｉｄなど、当該リクエストに関連してユーザにより入力された各種情報に固有なものである。エディタに対するリクエストに応答してサーバがデータベースから抽出するデータは、必要に応じて、リクエストされたエディタに各フィールドを提供するための初期情報を含む。
【０１２０】
ブロック３２０４において、サーバは、要求元のクライアントによる実行のためのクライアントにより実行可能なコードを生成する。サーバにより生成されるこのクライアントにより実行可能なコードは、リクエストされたエディタをクライアントに表示し、エディタの適当なフィールドに抽出した情報を表示し、クライアントにおいてエディタを管理するためのものである。例えば、サーバプロセッサ６０４（図６）は、抽出したデータをクライアントプロセッサ６０２（図６）が利用可能なフォーマットに変換するため、ＰＨＰスクリプトコードを実行する。例えば、クライアントプロセッサ６０２は、サーバスクリプトコードを理解しないため、クライアントプロセッサ６０２により実行可能なＪａｖａＳｃｒｉｐｔコードに抽出した情報をラップするなど、サーバは抽出した情報をクライアントが理解及び利用可能なフォーマットに処理する必要がある。ブロック３２０６において、サーバはクライアントにより実行可能なコードと第１のスケジュールに関する情報を実行のためクライアントにわたす。
【０１２１】
付録Ａ、Ｃ及びＥは、各エディタのための一例となるコードリストを提供する。これらのコードリスト例は、＜ｓｃｒｉｐｔ＞タグにより示されるＪａｖａＳｃｒｉｐｔと、＜？ｐｈｐ  ａｎｄ？＞タグ内に囲まれたＰＨＰスクリプトを示す。エディタページは、ウェブサーバ５０７、５３０（図５）などのサーバプロセッサ６０４に格納される。ウェブブラウザなどのクライアントプロセッサ６０２がエディタページにアクセスすると、サーバプロセッサ６０４においてＰＨＰスクリプトが実行され、ＰＨＰスクリプト全体が、ＰＨＰスクリプトが生成するＪａｖａＳｃｒｉｐｔコードに置換される。ＰＨＰスクリプトにより生成されるものを含むすべてのＪａｖａＳｃｒｉｐｔコードが、実行のためクライアントプロセッサ６０２にわたされる。
【０１２２】
ブロック３２０８において、クライアントは、リクエストされたエディタに第１のスケジュールに関する情報を表示し、データ及びエディタを管理するため、一般にクライアントにより実行可能なコード又は当該コードの少なくとも一部を実行する。このため、リクエストされたエディタの初期表示は、クライアントプロセッサとサーバプロセッサのそれぞれに係る上記アクションに基づき完了する。
【０１２３】
エディタページがサーバにより生成されるクライアントにより実行可能なコード（ＪａｖａＳｃｒｉｐｔなど）を実行することによってクライアントにロードされると、ユーザは、エディタに係る情報を編集及び／又は追加することを開始できる。ブロック３２１０において、クライアントは第２スケジュールに関する情報をエディタを介しユーザから受信する。例えば、エディタに応じて、クライアントプロセッサ６０２（図６）は、エディタを介し入力されたユーザからのプロジェクトスケジュール情報、メンバースケジュール情報又はタスク割当て情報を受信する。
【０１２４】
ブロック３２１２において、クライアントは、クライアント側において第２スケジュールに関する情報をエディタにおいて管理及び／又は維持するため、クライアントにより実行可能なコードの少なくとも一部を実行する。例えば、コードの実行は、サーバへの送信前にクライアントにおいて新規の又は更新されたデータを管理するためのデータ構造及び関連付けを生成し、エディタページオブジェクト（ＨＴＭＬボタン、テキストエントリオブジェクトなど）に実現される各機能を提供する。
【０１２５】
ブロック３２１４において、クライアントは第２スケジュールに関する情報をエディタからサーバに転送する。ブロック３２１６において、サーバは第２スケジュールに関する情報をデータベースに格納し、そこからリクエストに応答してクライアントに返送するため、当該情報は以降においてアクセス可能となる。例えば、各エディタページ（図１Ａ、２Ａ、３Ａなど）に対するリクエスト又は各エディタに係るウェブページ（図１Ｂ、２Ｂ、３Ｂなど）に対するリクエストに応答して、スケジュール関連情報がサーバからクライアントにわたされるかもしれない。
【０１２６】
［ネットワークベースプロジェクトスケジュールシステムにおけるデータベースクエリの自動生成方法］
図３３は、本発明の実施例によるネットワークベースプロジェクトスケジュール管理システムにおけるデータベースクエリ自動生成方法を示すフロー図である。図３３に示される方法の実施例は、１以上のプロセッサが命令を実行などすることによって、コンピュータ又はマシーンが方法の各ステップを実行するコンピュータ及び／又はマシーンにより実現される方法として実現される。例えば、本方法は、図３５のコンピュータシステム３５００などのコンピュータシステムにより実行可能である。
【０１２７】
ブロック３３０２において、ネットワークベースプロジェクトスケジュールシステムのエディタに係るリクエストに応答して、当該エディタに係るクエリ文字列が特定される。“コンスタントクエリ文字列”（図２７〜２９など）としても記載されるクエリ文字列は、１以上のプレースホルダー文字列を有する。プレースホルダー文字列は、当該プレースホルダー文字列の置換としてわたされる各値について、コンスタントクエリ文字列内においてプレースホルダーとして機能する。このため、各プレースホルダー文字列は、データベース５０６及び／又はデータベース５３６などのデータベースに送信するためのクエリを生成するため、プレースホルダー文字列が置換される値のタイプを指定する。この“値のタイプ”は、データタイプを表すのでなく、対応するプレースホルダー文字列を置換するため値が使用される対応する変数名である。例えば、図２７及び２８を参照するに、これらの図に示されるように、プレースホルダー文字列“％％ＰｒｏｊｅｃｔＮｕｍｂｅｒ％％”はプロジェクト番号の値（“Ｊ１７”など）と置換され、プレースホルダー文字列“％％ＭｅｍｂｅｒＬａｂｅｌ％％”は、プロジェクトメンバーのラベルの値（“Ｔ１”など）と置換され、プレースホルダー文字列“％％ＰｒｏｊｅｃｔＴａｓｋＩＤ％％”は、プロジェクトタスクのｉｄの値（“４０”など）と置換される。Ｃ＿ＰｒｏｊｅｃｔＮｕｍｂｅｒＫｅｙ、Ｃ＿ＭｅｍｂｅｒＬａｂｌｅＫｅｙ及びＣ＿ＰｒｏｊｅｃｔＴａｓｋＩＤＫｅｙなどのプレースホルダー文字列の各定数は、プレースホルダー文字列を適切な値と置換するため、コンスタントクエリ文字列のプレースホルダー文字列を特定するのにストリングファンクション（ＰＨＰのｓｔｒ＿ｒｅｐｌｃｅ（）など）により使用される。
【０１２８】
ブロック３３０４において、クエリ文字列の１以上のプレースホルダー文字列を対応する値と自動的に置換することによって、データベースクエリが生成される。例えば、プレースホルダー文字列“％％ＰｒｏｊｅｃｔＮｕｍｂｅｒ％％”は“Ｊ１７”と置換され、プレースホルダー文字列“％％ＭｅｍｂｅｒＬａｂｅｌ％％”は“Ｔ１”と置換され、プレースホルダー文字列“％％ＰｒｏｊｅｃｔＴａｓｋＩＤ％％”は“４０”と置換される。
【０１２９】
図２７を参照して説明されたように、実施例によると、何れかのプレースホルダー文字列について“コンスタントクエリ文字列”を検索し、プレースホルダー文字列をある値と置換するため、“プレースホルダー文字列のための定数”が使用される。
【０１３０】
図２９を参照して説明されたように、実施例によると、サーバプロセッサ６０４（図６）に係るＣＸＸＸＤＢＩｎｔｅｒｆａｃｅクラスとＣＹＹＹＤＢＱｕｅｒｙＧｅｎｅｒａｔｏｒクラスは、ブロック３３０４においてデータベースクエリを生成するのに使用される。ここで、クエリ生成プロセスは、ＣＸＸＸＤＢＩｎｔｅｒｆａｃｅクラスのプライベートファンクションに基づくものであってもよいし、又はＣＹＹＹＤＢＱｕｅｒｙＧｅｎｅｒａｔｏｒクラスのパブリックファンクションに基づくものであってもよい。実施例によると、クエリ文字列は、データベースのデータにアクセスするための類似したデータベースクエリを自動生成するための再利用可能なクエリテンプレートとして機能する基礎となるコンスタントクエリ文字列を変更せずに、プレースホルダー文字列の置換を可能にするため変数文字列（図２８の“＄ｌｏｃ＿ｓＱｕｅｒｙ”など）に割り当てられる。
【０１３１】
ブロック３３０６において、自動生成されたデータベースクエリがデータベースに送信され、ブロック３３０８において、データベースクエリの結果が、リクエストに応答して返される。
【０１３２】
［プロジェクトスケジュールシステムにおけるタスク管理方法］
図３４は、本発明の実施例によるプロジェクトスケジュール管理システムにおけるタスク管理方法を示すフロー図である。図３４に示される方法の実施例は、１以上のプロセッサが命令を実行などすることによって、コンピュータ又はマシーンが方法の各ステップを実行するコンピュータ及び／又はマシーンにより実現される方法として実現される。例えば、本方法は、図３５のコンピュータシステム３５００などのコンピュータシステムにより実行可能である。
【０１３３】
ブロック３４０２において、エディタの表示テーブルの行に影響を与えるイベントに応答して、影響を受けた当該行に対応するクラスオブジェクトは、プロジェクトスケジュールシステムに係るエディタの要素に対応するクラスオブジェクトの１以上の属性に直接アクセスする。表示テーブルの各行は、エディタの各要素に対応する表示値とプロジェクトスケジュールに係るスケジュールタスクとに係るスケジュールタスクに対応する。エディタの各要素はクラスオブジェクトの属性として構成されるため、クラスオブジェクトはこれらの属性に直接的にアクセス可能であることが重要である。このため、クラスオブジェクトは、影響を受けた行の影響を受けた各要素の要素ｉｄを構成する必要はなく、またこのような要素を取得する必要もない。
【０１３４】
例えば、ユーザは、メンバースケジュールエディタ３０２（図３Ａ）を介しタスクのスケジュールデータを編集する。ユーザの編集は、メンバースケジュールエディタのテーブルの行に影響を与えるイベントを有する。メンバースケジュールエディタ３０２のＸＸＸＪａｖａＳｃｒｉｐｔＰｒｏｃｅｓｓｏｒ１４１０（図１４）のクラス（図１５のＣＭｅｍｂｅｒＳｃｈｅｄｕｌｅＴａｓｋＲｏｗＤａｔａ１５０６など）のメンバーファンクションは、必要に応じてイベントに基づき要素のプロパティを変更するため、クラスのオブジェクトの属性として各要素への直接的なアクセスを有する。各要素は、エディタセッションの終了時に、サーバプロセッサにわたすことが可能なタスクに関する情報を当該行に維持する。
【０１３５】
ブロック３４０４において、影響を受けた行に対応するクラスオブジェクトは、イベントに基づきクラスオブジェクトの１以上の属性のそれぞれについて値を直接操作する。この例から続けて、メンバースケジュールエディタ３０２のＸＸＸＪａｖａＳｃｒｉｐｔＰｒｏｃｅｓｓｏｒ１４１０のＣＭｅｍｂｅｒＳｃｈｅｄｕｌｅＴａｓｋＲｏｗＤａｔａ１５０６クラスのオブジェクトのメンバーファンクションは、オブジェクトの属性値を設定し、メンバースケジュールエディタ３０２の要素の各値を操作する。
【０１３６】
ブロック３４０６において、クライアントは、ブロック３４０４において操作された属性の各値を含む１以上の属性のそれぞれの値をサーバに送信する。例えば、メンバースケジュールエディタ３０２のＸＸＸＪａｖａＳｃｒｉｐｔＰｒｏｃｅｓｓｏｒ１４１０を有するクライアントプロセッサ６０２（図６）は、操作されたデータをサーバプロセッサ６０４（図６）に提供する。ブロック３４０８において、サーバは、各属性の値をデータベースに格納する。例えば、サーバプロセッサ６０４は、データベース５０６、５３６（図５）などのデータベースにデータを格納する。エディタセッションの終了時、テーブルの各行のイベントがタスクに関する情報を変更又は追加したタスクが、データベースにおいて更新又は追加される。
【０１３７】
［デザインパターン］
“デザインパターン”は、オブジェクト指向システムにおいて繰り返し発生するデザイン問題を解決する一般的なデザインを意味する。メンバースケジュールエディタの一般的なデザインは、タスク割当てエディタ及びプロジェクトスケジュールエディタに適用される。デザインパターンは、Ａｄｄｉｓｏｎ−Ｗｅｓｌｅｙにより刊行されているＥｒｉｃｈ  Ｇａｍｍａらによる“Ｄｅｓｉｇｎ  Ｐａｔｔｅｒｎｓ：Ｅｌｅｍｅｎｔｓ  ｏｆ  Ｒｅｕｓａｂｌｅ  Ｏｂｊｅｃｔ−Ｏｒｉｅｎｔｅｄ  Ｓｏｆｔｗａｒｅ”に記載されている。図１５〜１８は、メンバースケジュールエディタの各種パッケージのクラスのデザインを示している。当該デザインは、図１９〜２２に示されるようなプロジェクトスケジュールエディタと、図２３〜２６に示されるようなタスク割当てエディタに同様に使用される。これらのエディタの特性及び動作は異なっているが、デザインパターンはシステムのすべてのエディタにより利用可能である。さらなるエディタがプロジェクトスケジュール管理システムに追加される場合、新たなエディタの設計及び実装に関する労力及び作業は、既存のエディタのデザインパターンに従うことによって大きく低減することができる。
【０１３８】
図３６は、本発明の実施例によるエディタに対応するシステムの３つの主要なパッケージに着目したテーブル７のインデックス化部分を示す図である。各エディタは、図１４に記載されるような４つのサブパッケージを有する。各サブパッケージは、それらのプロセスを実行するための同様のクラス構成を有する。各パッケージからのクラスの記載は、エディタのデザインパターンを示すのに役立つ。
【０１３９】
ＣＴａｓｋＡｓｓｉｇｎｍｅｎｔＴａｓｋＲｏｗＤａｔａ３６０２、ＣＰｒｏｊｅｃｔＳｃｈｅｄｕｌｅＴａｓｋＲｏｗＤａｔａ３６１２及びＣＭｅｍｂｅｒＳｃｈｅｄｕｌｅＴａｓｋＲｏｗＤａｔａ３６２２の各クラスは、データベースからタスク情報を取得し、行のタスク情報をそれの対応するエディタに表示するためのクライアントコードを生成する各自のＸＸＸＰＨＰＰｒｏｃｅｓｓｏｒパッケージの一部である。ＣＴａｓｋＡｓｓｉｇｎｍｅｎｔＴａｓｋＲｏｗＤａｔａ３６０２は、プロジェクトタスク、対応するメンバータスク及びメンバータスクのメンバーへの割当てに関する情報を取得する。ＣＴａｓｋＡｓｓｉｇｎｍｅｎｔＴａｓｋＲｏｗＤａｔａ３６０２は、プロジェクトタスク行とメンバー割当てによるメンバータスク行とをタスク割当てエディタに表示するためのクライアントコードを生成する。ＣＰｒｏｊｅｃｔＳｃｈｅｄｕｌｅＴａｓｋＲｏｗＤａｔａ３６１２は、プロジェクトタスク、対応するメンバータスク及びタスクのスケジュールに関する情報を取得する。ＣＰｒｏｊｅｃｔＳｃｈｅｄｕｌｅＴａｓｋＲｏｗＤａｔａ３６１２は、プロジェクトタスクスケジュールと対応するメンバータスクスケジュールの行をプロジェクトスケジュールエディタに表示するためのクライアントコードを生成する。ＣＭｅｍｂｅｒＳｃｈｅｄｕｌｅＴａｓｋＲｏｗＤａｔａ３６２２は、メンバータスク、すべての詳細タスク（レベル４までのタスク）及びタスクのスケジュールに関する情報を取得する。ＣＭｅｍｂｅｒＳｃｈｅｄｕｌｅＴａｓｋＲｏｗＤａｔａ３６２２は、メンバータスクスケジュールと対応する詳細タスクスケジュールの行をメンバースケジュールエディタに表示するためのクライアントコードを生成する。各エディタのＸＸＸＰＨＰＰｒｏｃｅｓｓｏｒパッケージは、情報が異なるものであっても、タスク行をクライアントプロセッサのエディタに表示するためのコードを生成するためのクラスを利用する。
【０１４０】
ＣＴａｓｋＡｓｓｉｇｎｍｅｎｔＴａｂｌｅ３６０４及びＣＰｒｏｊｅｃｔＴａｂｌｅＭａｎａｇｅｒ３６１４の各クラス並びにＣＴａｂｌｅＭａｎａｇｅｒ及びＣＭｅｍｂｅｒＳｃｈｅｄｕｌｅＴａｂｌｅ３６２４の組み合わせは、対応するエディタのテーブル及び各行を生成、管理及び維持する各自のＸＸＸＪａｖａＳｃｒｉｐｔＰｒｏｃｅｓｓｏｒパッケージの一部である。メンバースケジュールエディタはタスク割当てエディタ及びプロジェクトスケジュールエディタより相対的に複雑であるため（すなわち、異なるレベルでのタスクの追加及び削除、実際の日付の設定、上位レベルのタスクスケジュールにより下位レベルタスクスケジュールの更新）、２つのクラスはテーブル及び行を管理するのに利用される。エディタのテーブルにおいて発生しうるイベントのタイプ及びテーブルの各コンポーネントは異なるが、それらはすべてパッケージのデザインにおいて１又は２のクラスにより表すことができる。ＸＸＸＪａｖａＳｃｒｉｐｔＰｒｏｃｅｓｓｏｒパッケージは、テーブル、行及びセルなどのエディタの各部分に対応するクラスを含む。
【０１４１】
ＣＴａｓｋＡｓｓｉｇｎｍｅｎｔＵｐｄａｔｅｒ３６０６、ＣＰｒｏｊｅｃｔＴａｓｋＵｐｄａｔｅｒ３６１６及びＣＭｅｍｂｅｒＴａｓｋＵｐｄａｔｅｒ３６２６の各クラスは、クライアントプロセッサ上の対応するエディタセッションから転送される情報によって、データベースのタスク情報を更新する各自のＰｏｓｔＸＸＸＰＨＰＰｒｏｃｅｓｓｏｒパッケージの一部である。エディタにおいてタスクに対して実行されるアクションに応じて、データベースのタスクに関する情報を更新するため、適切なアクションがとられる。アクションのタイプは各エディタ間で異なり、当該アクションの詳細はクラスのデザインの内部で処理され、クラスの全体ファンクションは、データベースのタスク情報を更新するためのものである。従って、すべてのエディタに対して情報をエディタセッションからデータベースに更新するため、デザインパターンが利用可能である。
【０１４２】
ＣＴａｓｋＡｓｓｉｇｎｍｅｎｔＷｅｂＰａｇｅＭａｎａｇｅｒ３６０８、ＣＰｒｏｊｅｃｔＳｃｈｅｄｕｌｅＷｅｂＰａｇｅＭａｎａｇｅｒ３６１８及びＣＭｅｍｂｅｒＳｃｈｅｄｕｌｅＷｅｂＰａｇｅＭａｎａｇｅｒ３６２８の各クラスはそれぞれ、タスク割当て、プロジェクトスケジュール及びメンバースケジュールのウェブページを生成するクラスを管理する各自のＸＸＸＷｅｂＰａｇｅＧｅｎｅｒａｔｏｒパッケージの一部である。ＣＴａｓｋＡｓｓｉｇｎｍｅｎｔＷｅｂＰａｇｅＭａｎａｇｅｒ３６０８は、各種クラスを利用してプロジェクトタスクとメンバータスクを示すテーブルによりウェブページを生成する。ここで、メンバータスクはタスクに割り当てられたメンバー及びタスクの履歴を表示する。
【０１４３】
ＣＰｒｏｊｅｃｔＳｃｈｅｄｕｌｅＷｅｂＰａｇｅＭａｎａｇｅｒ３６１８は、各種クラスを利用して、スケジュールの履歴と共にプロジェクトタスクスケジュール及びそれのメンバータスクスケジュールを示すテーブルによるウェブページを生成する。ＣＭｅｍｂｅｒＳｃｈｅｄｕｌｅＷｅｂＰａｇｅＭａｎａｇｅｒ３６２８は、各種クラスを利用して、スケジュールの履歴と共にタスクスケジュール及びそれの詳細タスクを示すテーブルによるウェブページを生成する。同一のデザインパターンが、異なる情報を有するウェブページを生成するすべてのエディタにより使用される。
【０１４４】
ＣＴａｓｋＡｓｓｉｇｎｍｅｎｔＷｅｂＰａｇｅＧｅｎｅｒａｔｏｒＤＢＩｎｔｅｒｆａｃｅ３６１０、ＣＰｒｏｊｅｃｔＷｅｂＰａｇｅＤＢＩｎｔｅｒｆａｃｅとＣＰｒｏｊｅｃｔＷｅｂＰａｇｅＤＢＱｕｅｒｙＧｅｎｅｒａｔｏｒ３６２０の組み合わせ、及びＣＷｅｂＰａｇｅＤＢＩｎｔｅｒｆａｃｅ及びＣＷｅｂＰａｇｅＤＢＱｕｅｒｙＧｅｎｅｒａｔｏｒ３６３０の組み合わせの各クラスはそれぞれ、タスク割当て、プロジェクトスケジュール及びメンバースケジュールの各ウェブページを生成するのに必要とされるタスク情報にアクセスするため、データベースとのインタフェースを処理する各自のＸＸＸＷｅｂＰａｇｅＧｅｎｅｒａｔｏｒパッケージの一部である。エディタの各クラス及びクラスの各組み合わせは、データベースクエリを生成し、クエリに応答して情報を取得するデータベースインタフェースを表す。
【０１４５】
図３６のパッケージの各クラスの記載では、メンバースケジュールエディタの各クラスは、その他のエディタに類似するクラスを有する。このため、メンバースケジュールに使用されるデザインパターンは、その他のエディタにおいて利用可能である。エディタの各パッケージは異なる動作をするが、同一のデザインパターンが依然として使用可能である。
【０１４６】
［付録］
付録Ａは、本発明の実施例によるプロジェクトスケジュールエディタのウェブページの一例となるコードリストを示す。このコードリスト例は、＜ｓｃｒｉｐｔ＞タグにより示されるＪａｖａＳｃｒｉｐｔと、＜？ｐｈｐ  ａｎｄ？＞タグ内に囲まれたＰＨＰスクリプトとを示す。ウェブページは、ウェブサーバ５０７、５３０（図５）などのサーバプロセッサ６０４（図６）に格納される。ウェブブラウザなどのクライアントプロセッサ６０２（図６）がウェブページにアクセスすると、サーバプロセッサ６０４においてＰＨＰスクリプトが実行され、ＰＨＰスクリプト全体がＰＨＰスクリプトが生成するＪａｖａＳｃｒｉｐｔコードと置換される。ＰＨＰスクリプトにより生成されたものを含むすべてのＪａｖａＳｃｒｉｐｔコードが、実行のためクライアントプロセッサ６０２にわたされる。
【表８】
2008234646.tif 000010
【表９】
2008234646.tif 000011
【表１０】
2008234646.tif 000012
【０１４７】
付録Ｂは、本発明の実施例による付録ＡのＰＨＰスクリプトによって生成される一例となるＪａｖａＳｃｒｉｐｔコードを示す。このＪａｖａＳｃｒｉｐｔコードは、ウェブページのＰＨＰコードを置換する。ＪａｖａＳｃｒｉｐｔコードは、データベースから取得されるタスクスケジューリング情報を含む。タスク情報は、情報を処理のためＪａｖａＳｃｒｉｐｔにわたすためのデータ構成に割り当てられる（例えば、ｖａｒ  ｇｌｏ＿ＰｒｏｊｅｃｔＴａｓｋＩｎｆｏ＝ｎｅｗ  ＳＰｒｏｊｅｃｔＴａｓｋＩｎｆｏ（）及びｇｌｏ＿ＰｒｏｊｅｃｔＴａｓｋＩｎｆｏ．ｘｘｘ＝“ｖａｌｕｅ”など）。また、オブジェクトを生成し、プロジェクトスケジュールエディタの初期表示を提供するためにオブジェクトのメンバーファンクションを呼び出すため、ＪａｖａＳｃｒｉｐｔコードが生成される（ｖａｒ  ｇｌｏ＿ＥｄｉｔｏｒＭａｎａｇｅｒ＝ｎｅｗ  ＣＰｒｏｊｅｃｔＥｄｉｔｏｒＭａｎａｇｅｒ（）、ｇｌｏ＿ＥｄｉｔｏｒＭａｎａｇｅｒ．ｓｅｔｕｐ＿ｃｒｅａｔｅＥｄｉｔｏｒ（“Ｊ９９”）及びｇｌｏ＿ＥｄｉｔｏｒＭａｎａｇｅｒ．ｓｅｔｕｐ＿ａｄｄＴａｓｋＴｏＥｄｉｔｏｒ（ｇｌｏ＿ＰｒｏｊｅｃｔＴａｓｋＩｎｆｏ）など）。
【表１１】
2008234646.tif 000013
【表１２】
2008234646.tif 000014
【０１４８】
タスク割当てエディタ（付録Ｃ及びＤ）とメンバースケジュールエディタ（付録Ｅ及びＦ）は、プロジェクトスケジュールエディタの付録Ａ及びＢに示されるように、それのウェブページがエディタを生成するための類似したフォーマットに従う。
【０１４９】
付録Ｃは、本発明の実施例によるタスク割当てエディタのウェブページの一例となるコードリストを示す。このコードリスト例は、＜ｓｃｒｉｐｔ＞タグにより示されるＪａｖａＳｃｒｉｐｔと、＜？ｐｈｐ  ａｎｄ？＞タグ内に囲まれたＰＨＰスクリプトとを示す。ウェブページは、ウェブサーバ５０７、５３０（図５）などのサーバプロセッサ６０４（図６）に格納される。ウェブブラウザなどのクライアントプロセッサ６０２（図６）がウェブページにアクセスすると、サーバプロセッサ６０４においてＰＨＰスクリプトが実行され、ＰＨＰスクリプト全体がＰＨＰスクリプトが生成するＪａｖａＳｃｒｉｐｔコードと置換される。ＰＨＰスクリプトにより生成されたものを含むすべてのＪａｖａＳｃｒｉｐｔコードが、実行のためクライアントプロセッサ６０２にわたされる。
【表１３】
2008234646.tif 000015
【表１４】
2008234646.tif 000016
【表１５】
2008234646.tif 000017
【０１５０】
付録Ｄは、本発明の実施例による付録ＣのＰＨＰスクリプトによって生成される一例となるＪａｖａＳｃｒｉｐｔコードを示す。このＪａｖａＳｃｒｉｐｔコードは、ウェブページのＰＨＰコードを置換する。ＪａｖａＳｃｒｉｐｔコードは、データベースから取得されるタスクスケジューリング情報を含む。タスク情報は、情報を処理のためＪａｖａＳｃｒｉｐｔにわたされる。また、オブジェクトを生成し、タスク割当てエディタの初期表示を提供するためにオブジェクトのメンバーファンクションを呼び出すため、ＪａｖａＳｃｒｉｐｔコードが生成される（ｖａｒ  ｇｌｏ＿ＥｄｉｔｏｒＭａｎａｇｅｒ＝ｎｅｗ  ＣＴａｓｋＡｓｓｉｇｎｍｅｎｔＭａｎａｇｅｒ（）、ｇｌｏ＿ＥｄｉｔｏｒＭａｎａｇｅｒ．ｓｅｔｕｐ＿ｃｒｅａｔｅＥｄｉｔｏｒ（“Ｊ９９”）及びｇｌｏ＿ＥｄｉｔｏｒＭａｎａｇｅｒ．ｓｅｔｕｐ＿ａｄｄＴｏｐＬｅｖｅｌＴａｓｋＴｏＥｄｉｔｏｒ（“１０”，“Ｐｒｏｊｅｃｔ  Ｐｒｅｐａｒａｔｉｏｎ”）など）。
【表１６】
2008234646.tif 000018
【０１５１】
付録Ｅは、本発明の実施例によるメンバースケジュールエディタのウェブページの一例となるコードリストを示す。このコードリスト例は、＜ｓｃｒｉｐｔ＞タグにより示されるＪａｖａＳｃｒｉｐｔと、＜？ｐｈｐ  ａｎｄ？＞タグ内に囲まれたＰＨＰスクリプトとを示す。ウェブページは、ウェブサーバ５０７、５３０（図５）などのサーバプロセッサ６０４（図６）に格納される。ウェブブラウザなどのクライアントプロセッサ６０２（図６）がウェブページにアクセスすると、サーバプロセッサ６０４においてＰＨＰスクリプトが実行され、ＰＨＰスクリプト全体がＰＨＰスクリプトが生成するＪａｖａＳｃｒｉｐｔコードと置換される。ＰＨＰスクリプトにより生成されたものを含むすべてのＪａｖａＳｃｒｉｐｔコードが、実行のためクライアントプロセッサ６０２にわたされる。
【表１７】
2008234646.tif 000019
【表１８】
2008234646.tif 000020
【表１９】
2008234646.tif 000021
【表２０】
2008234646.tif 000022
【０１５２】
付録Ｆは、本発明の実施例による付録ＥのＰＨＰスクリプトによって生成される一例となるＪａｖａＳｃｒｉｐｔコードを示す。このＪａｖａＳｃｒｉｐｔコードは、ウェブページのＰＨＰコードを置換する。ＪａｖａＳｃｒｉｐｔコードは、データベースから取得されるタスクスケジューリング情報を含む。タスク情報は、情報を処理のためＪａｖａＳｃｒｉｐｔにわたすためのデータ構成に割り当てられる。また、オブジェクトを生成し、メンバースケジュールエディタの初期表示を提供するためにオブジェクトのメンバーファンクションを呼び出すため、ＪａｖａＳｃｒｉｐｔコードが生成される（ｖａｒ  ｇｌｏ＿ＥｄｉｔｏｒＭａｎａｇｅｒ＝ｎｅｗ  ＣＥｄｉｔｏｒＭａｎａｇｅｒ（）、ｇｌｏ＿ＥｄｉｔｏｒＭａｎａｇｅｒ．ｓｅｔｕｐ＿ｃｒｅａｔｅＥｄｉｔｏｒ（“Ｊ９９”，“ｔｅｓｔ１”）及びｇｌｏ＿ＥｄｉｔｏｒＭａｎａｇｅｒ．ｓｅｔｕｐ＿ａｄｄＴａｓｋＴｏＥｄｉｔｏｒ（ｇｌｏ＿ＭｅｍｂｅｒＴａｓｋＩｎｆｏ）など）。
【表２１】
2008234646.tif 000023
【表２２】
2008234646.tif 000024
【０１５３】
［ハードウェア概略］
図３５は、本発明の実施例が実現可能なコンピュータシステム３５００を示すブロック図である。コンピュータシステム３５００はさらに、ワークステーション１０２（図１）及びウェブサーバ１０４（図１）のシステム構成の非限定的な具体例を示す。コンピュータシステム３５００は、情報を通信するためのバス３５０２又は他の通信機構と、情報を処理するためのバス３５０２に接続されたプロセッサ３５０４とを有する。コンピュータシステム３５００はまた、プロセッサ３５０４により実行される命令及び情報を格納するため、バス３５０２に接続されたＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）又は他のダイナミックストレージデバイスなどのメインメモリを有する。メインメモリ３５０６はまた、プロセッサ３５０４により実行される命令の実行中に一時的な変数又は他の中間情報を格納するため利用可能である。コンピュータシステム３５００はさらに、プロセッサ３５０４の静的情報及び命令を格納するため、バス３５０２に接続されるＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）３５０８又は他のスタティックストレージデバイスを有する。磁気ディスク、光ディスク又は光磁気ディスクなどの記憶装置３５１０が、情報及び命令を格納するため設けられ、バス３５０２に接続される。
【０１５４】
コンピュータシステム３５００が、情報をコンピュータユーザに表示するため、ＣＲＴ（Ｃａｔｈｏｄｅ  Ｒａｙ  Ｔｕｂｅ）又はＬＣＤ（Ｌｉｑｕｉｄ  Ｃｒｙｓｔａｌ  Ｄｉｓｐｌａｙ）などのディスプレイ３５１２にバス３５０２を介し接続されてもよい。英数字及び他のキーを含む入力装置３５１４が、情報及びコマンド選択をプロセッサ３５０４に通信するためバス３５０２に接続される。他のタイプのユーザ入力装置は、指示情報及びコマンド選択をプロセッサ３５０４に通信し、ディスプレイ３５１２上のカーソルの移動を制御するため、マウス、トラックボール又はカーソル指示キーなどのカーソルコントロール３５１６がある。この入力装置は、典型的には、当該装置が平面上でイチを指定することを可能にする第１軸（ｘなど）と第２軸（ｙなど）の２つの軸による２つの自由度を有する。
【０１５５】
本発明の実施例は、ここに記載された技術を実現するためのコンピュータシステム３５００の利用に関する。本発明の一実施例によると、これらの技術は、メインメモリ３５０６に含まれる１以上の命令の１以上のシーケンスをプロセッサ３５０４が実行することに応答して、コンピュータシステム３５００により実行される。このような命令は、記憶装置３５１０などの他のコンピュータ可読媒体からメインメモリ３５０６に読み込まれるかもしれない。メインメモリ３５０６に含まれる命令シーケンスの実行は、プロセッサ３５０４にここに記載されたプロセスステップを実行させる。他の実施例では、配線回路が本発明を実現するためのソフトウェア命令の代わりに又はそれと共に利用されるかもしれない。このため、本発明の実施例は、ハードウェア回路とソフトウェアの何れか特定の組み合わせに限定されるものでない。
【０１５６】
ここで使用される“コンピュータ可読媒体”という用語は、実行のためプロセッサ３５０４に命令を提供するのに関係する何れかの媒体を表す。このような媒体は、以下に限定されるものではないが、不揮発性媒体、揮発性媒体及び伝送媒体を含む多数の形態をとりうる。限定されることなく、不揮発性媒体の具体例として、記憶装置３５１０などの光ディスク、磁気ディスク又は光磁気ディスクがあげられる。揮発性媒体は、メインメモリ３５０６などの動的メモリを含む。伝送媒体は、バス３５０２を構成する配線を含む同軸ケーブル、銅線及び光ファイバを含む。電装媒体はまた、無線及び赤外線データ通信中に生成されるものなど、音響波又は光波の形態をとりうる。
【０１５７】
コンピュータ可読媒体の一般的な形態として、以下に限定されることなく、フロッピー（登録商標）ディスク、フレキシブルディスク、ハードディスク、磁気テープ、他の何れかの磁気媒体、ＣＤ−ＲＯＭ、ＤＶＤ、他の何れかの光若しくは光磁気媒体、パンチカード、紙テープ、ホールパターンを有する他の何れかの物理媒体、ＲＡＭ、ＰＲＯＭ、ＥＰＲＯＭ、ＦＬＡＳＨ−ＥＰＲＯＭ、他の何れかのメモリチップ若しくはカートリッジ、後述されるような搬送波又はコンピュータにより読み込み可能な他の何れかの媒体があげられる。
【０１５８】
各種形態のコンピュータ可読媒体は、実行のため１以上の命令の１以上のシーケンスをプロセッサ３５０４に搬送することに関するものであるかもしれない。例えば、命令は初期的にはリモートコンピュータの磁気ディスクに備えられるかもしれない。リモートコンピュータは、命令をそれの動的メモリにロードし、モデムを利用して電話線を介し送信することができる。コンピュータシステム３５００のローカルモデムは、電話線を介し当該データを受信し、赤外線送信機を利用して、データを赤外線信号に変換する。赤外線検出装置は、赤外線信号により搬送されたデータを受信し、適切な回路がバス３５０２上に当該データを配設することが可能である。バス３５０２は、データをメインメモリ３５０６に搬送し、そこからプロセッサ３５０４が命令を抽出及び実行する。メインメモリ３５０６により受信された命令は、任意的にプロセッサ３５０４による実行前後に記憶装置３５１０に格納されてもよい。
【０１５９】
コンピュータシステム３５００はまた、バス３５０２に接続される通信インタフェース３５１８を有する。通信インタフェース３５１８は、ローカルネットワーク３５２２に接続されるネットワークリンク３５２０に接続した双方向データ通信を提供する。例えば、通信インタフェース３５１８は、対応するタイプの電話線とのデータ通信接続を提供するＩＳＤＮ（Ｉｎｔｅｇｒａｔｅｄ  Ｓｅｒｖｉｃｅｓ  Ｄｉｇｉｔａｌ  Ｎｅｔｗｏｒｋ）カード又はモデムであってもよい。他の例として、通信インタフェース３５１８は、互換的なＬＡＮ（Ｌｏｃａｌ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）とのデータ通信接続を提供するＬＡＮカードであってもよい。ワイヤレスリンクがまた実装されてもよい。このような何れかの実現形態において、通信インタフェース３５１８は、各種タイプの情報を表すデジタルデータストリームを搬送する電気、電磁又は光信号を送受信する。
【０１６０】
ネットワークリンク３５２０は、典型的には、他のデータ装置との１以上のネットワークを介したデータ通信を提供する。例えば、ネットワークリンク３５２０は、インターネット・サービス・プロバイダ（ＩＳＰ）３５２６により操作されるデータ装置又はホストコンピュータ３５２４とのローカルネットワーク３５２２を介した接続を提供するかもしれない。さらに、ＩＳＰ３５２６は、現在では一般に“インターネット”３５２８と呼ばれるワールドワイドパケットデータ通信ネットワークを介したデータ通信サービスを提供する。ローカルネットワーク３５２２及びインターネット３５２８は共に、デジタルデータストリームを搬送する電気、電磁又は光信号を利用する。コンピュータシステム３５００との間でデジタルデータを搬送する各種ネットワークを介した信号及びネットワークリンク３５２０及び通信インタフェース３５１８を介した信号は、情報を伝送する搬送波の例示的な形態である。
【０１６１】
コンピュータシステム３５００は、ネットワーク、ネットワークリンク３５２０及び通信インタフェース３５１８を介しプログラムコードを含むデータ及びメッセージを送受信することができる。インターネットの例では、サーバ３５３０は、インターネット３５２８、ＩＳＰ３５２６、ローカルネットワーク３５２２及び通信インタフェース３５１８を介しアプリケーションプログラムのリクエストされたコードを送信するかもしれない。
【０１６２】
受信したコードは、実行のため記憶装置３５１０又は他の不揮発性ストレージに受信及び／又は格納されると、プロセッサ３５０４により実行されるかもしれない。このようにして、コンピュータシステム３５００は、搬送波の形態によりアプリケーションコードを取得してもよい。
【０１６３】
［拡張及び代替］
本発明の代替的な実施例が、上記記載を通じて記載され、また実施例の文脈の理解を最も容易にする場所に記載されている。さらに、本発明は、それの具体的な実施例を参照して説明された。しかしながら、本発明の実施例のより広範な範囲から逸脱することなく、各種改良及び変更が可能であることは明らかであろう。従って、本明細書及び図面は、限定的でなく例示的なものとしてみなされるべきである。
【０１６４】
さらに本記載では、特定のプロセスステップが特定の順序により与えられ、ステップを特定するため、英字及び英数字ラベルが利用可能である。本記載において特段の断りがない場合、本発明の実施例はこのようなステップを実行する何れか特定の順序に限定される必要はない。特に、これらのラベルは、便宜的なステップの識別のためだけに使用され、当該ステップを実行する特定の順序を指定又は要求することを意図するものでない。
【図面の簡単な説明】
【０１６５】
【図１Ａ】図１Ａは、本発明の実施例によるタスク割当てエディタの画面図である。
【図１Ｂ】図１Ｂは、本発明の実施例によるタスク割当てウェブページのサンプルの画面図である。
【図２Ａ】図２Ａは、本発明の実施例によるプロジェクトスケジュールエディタの画面図である。
【図２Ｂ】図２Ｂは、本発明の実施例によるプロジェクトスケジュールウェブページのサンプルの画面図である。
【図３Ａ】図３Ａは、本発明の実施例によるメンバースケジュールエディタの画面図である。
【図３Ｂ】図３Ｂは、本発明の実施例によるメンバースケジュールウェブページのサンプルの画面図である。
【図４】図４は、本発明の実施例によるプロジェクトメンバーがエディタの１つにログオンするためのログインウェブページの画面図である。
【図５】図５は、本発明の実施例が実現可能な動作環境を示す図である。
【図６】図６は、自動スケジューリングシステムのソフトウェアコンポーネントを含む本発明の実施例が実現可能な通信アーキテクチャを示す図である。
【図７】図７は、本発明の実施例によるシステムのクライアントプロセッサとサーバプロセッサとの間のインタフェースを示す図である。
【図８】図８は、本発明の実施例によるログインウェブページを使用してプロジェクトメンバー又はマネージャがエディタの１つにログオンするためのシーケンス図を示す。
【図９】図９は、本発明の実施例によるタスク割当てエディタによるセッションにおけるプロジェクトマネージャのシーケンス図を示す。
【図１０】図１０は、本発明の実施例によるプロジェクトスケジュールエディタによるセッションにおけるプロジェクトマネージャのシーケンス図を示す。
【図１１】図１１は、本発明の実施例によるプロジェクトメンバースケジュールエディタによるセッションにおけるプロジェクトメンバーのシーケンス図を示す。
【図１２】図１２は、本発明の実施例によるプロジェクト及びプロジェクトメンバーのタスク割当て及びタスクスケジュール情報を格納及び管理するのに使用されるデータベーステーブルのスキーマを示す。
【図１３】図１３は、本発明の実施例による図６のサーバプロセッサのプログラミングパッケージ図を説明する図である。
【図１４】図１４は、本発明の実施例によるエディタプロセッサパッケージのプログラミングパッケージ図を説明する図である。
【図１５】図１５は、本発明の実施例によるＭｅｍｂｅｒＳｃｈｅｄｕｌｅＰＨＰＰｒｏｃｅｓｓｏｒパッケージのクラス図を示す。
【図１６】図１６は、本発明の実施例によるＭｅｍｂｅｒＳｃｈｅｄｕｌｅＪａｖａＳｃｒｉｐｔＰｒｏｃｅｓｓｏｒパッケージのクラス図を示す。
【図１７】図１７は、本発明の実施例によるＰｏｓｔＭｅｍｂｅｒＳｃｈｅｄｕｌｅＰＨＰＰｒｏｃｅｓｓｏｒパッケージのクラス図を示す。
【図１８】図１８は、本発明の実施例によるＭｅｍｂｅｒＳｃｈｅｄｕｌｅＷｅｂＰａｇｅＧｅｎｅｒａｔｏｒパッケージのクラス図を示す。
【図１９】図１９は、本発明の実施例によるＰｒｏｊｅｃｔＳｃｈｅｄｕｌｅＰＨＰＰｒｏｃｅｓｓｏｒパッケージのクラス図を示す。
【図２０】図２０は、本発明の実施例によるＰｒｏｊｅｃｔＳｃｈｅｄｕｌｅＪａｖａＳｃｒｉｐｔＰｒｏｃｅｓｓｏｒパッケージのクラス図を示す。
【図２１】図２１は、本発明の実施例によるＰｏｓｔＰｒｏｊｅｃｔＳｃｈｅｄｕｌｅＰＨＰＰｒｏｃｅｓｓｏｒパッケージのクラス図を示す。
【図２２】図２２は、本発明の実施例によるＰｒｏｊｅｃｔＳｃｈｅｄｕｌｅＷｅｂＰａｇｅＧｅｎｅｒａｔｏｒパッケージのクラス図を示す。
【図２３】図２３は、本発明の実施例によるＴａｓｋＡｓｓｉｇｎｍｅｎｔＰＨＰＰｒｏｃｅｓｓｏｒパッケージのクラス図を示す。
【図２４】図２４は、本発明の実施例によるＴａｓｋＡｓｓｉｇｎｍｅｎｔＪａｖａＳｃｒｉｐｔＰｒｏｃｅｓｓｏｒパッケージのクラス図を示す。
【図２５】図２５は、本発明の実施例によるＰｏｓｔＴａｓｋＡｓｓｉｇｎｍｅｎｔＰＨＰＰｒｏｃｅｓｓｏｒパッケージのクラス図を示す。
【図２６】図２６は、本発明の実施例によるＴａｓｋＡｓｓｉｇｎｍｅｎｔＷｅｂＰａｇｅＧｅｎｅｒａｔｏｒパッケージのクラス図を示す。
【図２７】図２７は、本発明の実施例によるデータベースクエリを生成するのに使用される一例となるコンスタント文字列を示す。
【図２８】図２８は、本発明の実施例による図２７のコンスタント文字列からデータベースクエリを生成するのに使用される一例となるスクリプトを示す。
【図２９】図２９は、本発明の実施例によるコンスタント文字列からクエリ文字列を生成するプロセスを示すフロー図である。
【図３０】図３０は、本発明の実施例によるエディタのウェブページの各コンポーネントを示す。
【図３１】図３１は、本発明の実施例によるウェブページの各コンポーネントを処理するプロセッサと共にエディタのウェブページの各コンポーネントを示す。
【図３２】図３２は、本発明の実施例によるクライアント・サーバベースプロジェクトスケジュール管理システムによるプロジェクト管理方法を示すフロー図である。
【図３３】図３３は、本発明の実施例によるネットワークベースプロジェクトスケジュール管理システムにおけるデータベースクエリを自動生成する方法を示すフロー図である。
【図３４】図３４は、本発明の実施例によるプロジェクトスケジュール管理システムにおけるタスク管理方法を示すフロー図である。
【図３５】図３５は、本発明の実施例が実現可能なコンピュータシステム３５００を示すブロック図である。
【図３６】図３６は、本発明の実施例によるエディタに対応するシステムの３つの主要なパッケージに着目したテーブル７のインデックス化部分を示す図である。
【符号の説明】
【０１６６】
１０２  タスク割当てエディタ
２０２  プロジェクトスケジュールエディタ
３０２  メンバースケジュールエディタ
５００  ネットワーク
５０１、５０２  コンピュータワークステーション
５０６、５３６、６０６  データベース
５０７、５３０  ウェブサーバ
６０２  クライアントプロセッサ
６０４  サーバプロセッサ
３５００  コンピュータシステム
３５０２  バス
３５０４  プロセッサ
３５０６  メインメモリ
３５０８  ＲＯＭ
３５１０  記憶装置
３５１２  ディスプレイ
３５１４  入力装置
３５１６  カーソルコントロール
３５１８  通信インタフェース
３５２０  ネットワークリンク
３５２２  ローカルネットワーク
３５２４  ホストコンピュータ
３５２６  インターネット・サービス・プロバイダ（ＩＳＰ）
３５２８  インターネット
３５３０  サーバ
【図１Ａ】
2008234646.tif 000025
【図１Ｂ】
2008234646.tif 000026
【図２Ａ】
2008234646.tif 000027
【図２Ｂ】
2008234646.tif 000028
【図３Ａ】
2008234646.tif 000029
【図３Ｂ】
2008234646.tif 000030
【図４】
2008234646.tif 000031
【図５】
2008234646.tif 000032
【図６】
2008234646.tif 000033
【図７】
2008234646.tif 000034
【図８】
2008234646.tif 000035
【図９】
2008234646.tif 000036
【図１０】
2008234646.tif 000037
【図１１】
2008234646.tif 000038
【図１２】
2008234646.tif 000039
【図１３】
2008234646.tif 000040
【図１４】
2008234646.tif 000041
【図１５】
2008234646.tif 000042
【図１６】
2008234646.tif 000043
【図１７】
2008234646.tif 000044
【図１８】
2008234646.tif 000045
【図１９】
2008234646.tif 000046
【図２０】
2008234646.tif 000047
【図２１】
2008234646.tif 000048
【図２２】
2008234646.tif 000049
【図２３】
2008234646.tif 000050
【図２４】
2008234646.tif 000051
【図２５】
2008234646.tif 000052
【図２６】
2008234646.tif 000053
【図２７】
2008234646.tif 000054
【図２８】
2008234646.tif 000055
【図２９】
2008234646.tif 000056
【図３０】
2008234646.tif 000057
【図３１】
2008234646.tif 000058
【図３２】
2008234646.tif 000059
【図３３】
2008234646.tif 000060
【図３４】
2008234646.tif 000061
【図３５】
2008234646.tif 000062
【図３６】
2008234646.tif 000063