(57)【要約】【課題】工場制御システムにおいて詳細なスケジューリングや実行制御を提供する。【解決手段】コンピュータを含んで形成されるカレンダリングシステムであって、各々が、製造プロセスにおける複数の製造ドメインエンティティのうちの１つに対応し、前記複数の製造ドメインエンティティのアポイントメントのスケジューリング又はアポイントメントの実行を行うための複数の自立したソフトウエアエージェント（２６５）と、前記各ドメインエンティティのアポイントメントをスケジューリングする際に前記ソフトウエアエージェント（２６５）のうちの１つによって各々が保守され、かつ、１つ以上のコンピュータ装置の記憶装置内に記憶された複数のカレンダーを有するカレンダリングシステムである。【選択図】図１
2010165378.tif 000002
【特許請求の範囲】
【請求項１】
コンピュータを含んで形成されるカレンダリングシステムであって
各々が、製造プロセスにおける複数の製造ドメインエンティティのうちの１つに対応し、前記複数の製造ドメインエンティティのアポイントメントのスケジューリング又はアポイントメントの実行を行うための複数の自立したソフトウエアエージェント（２６５）と、
前記各ドメインエンティティのアポイントメントをスケジューリングする際に前記ソフトウエアエージェント（２６５）のうちの１つによって各々が保守され、かつ、１つ以上のコンピュータ装置の記憶装置内に記憶された複数のカレンダーと、
前記各アポイントメントは、カレンダーの一部を構成するとともに、前記各アポイントメントのステータスは、複数のアポイントメントステータスのうち１つのステータスとなっており、かつ、各アポイントメントは、前記エージェントによって前記製造ドメインエンティティの前記各カレンダー上に前記製造ドメインエンティティに対応してスケジューリングされている、カレンダリングシステム。
【請求項２】
前記複数のエージェント（２６５）は、ロットエージェント（３０５）、装置エージェント（３１０）、ＰＭエージェント（３１８）、及び資源エージェント（３１５）の中の１つ以上を含む請求項１記載のカレンダリングシステム。
【請求項３】
前記複数のカレンダーは、ロットカレンダー（３８５）、装置カレンダー（３７０）、ＰＭカレンダー（３１８）、及び資源カレンダー（３４５）を含む請求項１記載のカレンダリングシステム。
【請求項４】
前記複数のアポイントメントは、ロットカレンダーアポイントメント、装置カレンダーアポイントメント、ＰＭカレンダーアポイントメント、及び資源カレンダーアポイントメントの中の１つ以上を含む請求項１記載のカレンダリングシステム。
【請求項５】
前記複数のステータスは、仮の（９０５）、準備未完了（９１０）、準備完了（９１５）、使用可能（９２０）、処理中（９２５）、完了間近（９３０）、完了（９３５）、ＰＭ／Ｑｕａｌ使用可能（９４５）、ＰＭ／Ｑｕａｌ処理中（９５０）、キャンセル、及び中止（９４０）の中の１つ以上を含む請求項１記載のカレンダリングシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
アメリカ合衆国政府は、同国商務省国立標準規格技術研究所（“ＮＩＳＴ”）の高度技術プログラム（“ＡＴＰ”）により認められた協力協定第７０ＮＡＮＢ７Ｈ３０４１号の条項によって規定されるような、本発明におけるペイドアップライセンス、及び特許所有者に対して妥当な条件で他者へ使用許諾することを要請する限られた環境下での権利を有する。
【０００２】
本発明は自動生産環境に関し、詳細には、エージェントによるスケジューリング及び工場の制御を用いた自動生産環境における、カレンダーやアポイントメントに対するスケジューリングの利用に関する。
【背景技術】
【０００３】
技術的な要求が高まり、高度な電子デバイスが世界中に受け入れられてきているので、その結果生まれた大規模で複雑な集積回路に対する要望が今までなかったようなものになってきている。半導体産業における競争により、可能な限り最も効率的な手法で製品が設計、製造、及び販売されることが必要となる。従って、電子産業における急速な向上についていけるように製作技術を向上させることが必要になってくる。これらの要求を満たすことにより、マテリアルやプロセス装置に多くの技術的進歩が生み出され、また集積回路設計の数も著しく増大することになる。また、このような向上は、コンピューティング資源や他の非常に高度な装置を効果的に使用することが必要で、それによって、設計や製作だけでなく、製造プロセスのスケジューリング、制御、及び自動化の実行も支援する。
【０００４】
まず、製造について見てみると、集積回路、もしくはマイクロチップは、通常数マイクロメートルの大きさの構造や形状を多数含む最新の半導体デバイスから製造されている。その製造プロセスには、一般的に、一連の製造ツールによって数多くのウェハを処理することが含まれている。製造中に、複数の材料からなる複数層を半導体基板に追加、除去、及び／または処理することにより、集積回路が形成されている。この製造は本質的には以下の４つの基本的な工程からなっている。
・様々な材料の薄膜層を半導体が形成されているウェハに積層もしくは追加する
・追加した層のうち、選択した部分をパターニングまたは除去する
・特定の量の不純物を、追加した層の開口からウェハの選択した部分にドープまたは配置する
・材料の熱処理または加熱や冷却を行い、処理ウェハに所望の効果をもたらす
ここには４つの基本工程しか述べられていないが、これらは特定の製造プロセスに依拠して何百もの違った方法で組み合わせることが可能である。参照として、E.G.,Peter Van Zant, Microchip Fabrication A Practical Guide to Semiconductor Processing（第３版  １９９７年マグロウヒル社）（ＩＳＢＮ  ０−０７−０６７２５０−４）がある。各製造ツールは４つの基本工程のうち１つ以上を行う。この４つの基本工程は全体的なプロセスに応じて行われ、最終的に半導体デバイスの完成品が形成される。
【発明の概要】
【発明が解決しようとする課題】
【０００５】
しかしながら、このような集積回路を製造する半導体工場を制御することは、困難な課題である。半導体工場（「ファブ」）は、通常４０，０００枚以上のウェハといった多数のパーツと、通常１００種以上といった多数種のパーツが同時に生産されている複雑な環境である。各ウェハが半導体工場（もしくは「ファブ」）を移動しているうちに、３００を超えるプロセス工程が施される場合があり、その多くは同一の装置を用いて行われる。大きな工場は、コンピュータ制御の装置を約５００台備えてこのウェハのプロセスを行う場合もある。ファブ内でのマテリアルのルーティング、スケジューリング及びトラッキングは、コンピュータ化された工場制御システムの支援を受けても困難で複雑な課題である。
【０００６】
半導体チップ等の製品を製造する設備を効率よく管理するには、製造中の製品の様々な様子を監視することが必要である。例えば、保有する原料の量、仕掛品の状況、及び装置やツールの状況や稼働率を、プロセスの全ての工程ごとに追跡することが通常は望ましい。最も重要な判断の一つは、任意の時間に各装置でどのロットが処理されるべきかである。また、製造プロセスで使用される装置のほとんどは、定期的に行われる予防的措置のメンテナンス（Preventive Mentenance:“ＰＭ”）や機器の適格性確認（epuipment quality:“ＱＵＡＬ”）をスケジューリングすることが、定期的に実施すべき他の診断及び再調整作業と同様に必要である。これらの作業は製造プロセスそのものを妨害しないように行わなければならない。
【０００７】
この問題への取り組みとして、自動化された「製造実行システム」（Manufacturing Execution System:“ＭＥＳ”）の実施が挙げられる。自動化されたＭＥＳによって、ユーザが限られた範囲で製造環境における装置やツール、または「エンティティ」の状況を閲覧及び操作することが可能になる。さらに、ＭＥＳにより、製造プロセスを通じてロットもしくは仕掛品の発送や追跡を行い、資源を最も効率的な方法で監視することができる。特に、ＭＥＳプロンプトを受けて、ユーザは要求された仕掛品に関する情報やエンティティの状況を入力する。例えば、ユーザが特定のエンティティに対してＰＭを行うと、オペレータがＰＭの実行（「イベント」）をＭＥＳの画面へ記録し、ＭＥＳデータベースに格納されている当該エンティティの状況に関する情報をアップデートする。また、エンティティが補修またはメンテナンスに登録されるべきものである場合、オペレータはこの情報をＭＥＳデータベースへ記録し、これによりそのエンティティの使用をその後生産可能状態へと記録しなおされるまで阻止するであろう。
【０００８】
ＭＥＳシステムはロットや装置の追跡には十分であるが、このような装置には欠陥があり、そのうち最も明らかなものは、その性質が受動的であること、事前スケジューリングが欠けていること、及び高度に自動化された工場での作業をサポートできないことである。今日のＭＥＳシステムは、工場の状態を監視し、正しい時間に作業を開始するために、製造作業員に大きく依存している。例えば、ロットは、ウェハファブテクニシャン（Wafer Fab Tchnican:“ＷＦＴ”）が適切なＭＥＳコマンドを発行するまで処理が始まらない。そして、処理の前には、ＷＦＴがＭＥＳコマンドを発行して、装置が稼動状態になった時にそのロットが装置にて処理可能であるという十分な事前のプラニングを行って、そのロットを自動マテリアル搬送システム（Automatical Material Handling System:“ＡＭＨＳ”）から抽出しなければならない。ＷＦＴがロットをすぐには抽出しない場合、または、可能な限り最速な時間で処理を開始することを怠った場合には、その装置はアイドル状態となり、生産に悪影響を及ぼす。
【０００９】
従来の自動化されたＭＥＳにはこのような類の欠陥があるので、製造プロセスの効率的な操業におけるＷＦＴの重要性が強調されている。ＷＦＴは極めて重要な任務を数多く行っている。例えば、ＷＦＴは、自分たちの注意力や時間が許すときに、発送、搬送、及び処理を開始する。ＷＦＴは、別の仕掛予定ロットを待つことやロット処理の代わりにＰＭや適格性確認処置を行うこととは対照的に、未完了のバッチを稼動させるかどうかといったスケジューリングの決定を行う。ＷＦＴは、付加価値をもたらさないＭＥＳトランザクションを行い、従来の受動的な工場制御システムを利用している。この文脈において、「受動的」とは、自動作動することや自動開始することとは反対に、制御システムにおける各作業をＷＦＴが開始しなければことを意味する。
【００１０】
しかし、ＷＦＴの存在は、必然的に非能率をも招いてしまう。最も仕事ができるＷＦＴが行う作業と最も仕事ができないＷＦＴが行う作業との間には大きな隔たりがある。ＷＦＴは通常、複数のツールの処理を同時に監視するので、個々のロットやツールに集中することは難しくなる。さらに、現在の製造プロセスフローの規模や複雑さのせいで、ＷＦＴが前工程での作業により生じる後工程での障害や不足を見通して予防することは極めて難しい。ＷＦＴに対するシフトの交替、休憩時間、及び休暇もまた、製造プロセスフローに悪影響を及ぼす非能率や装置のアイドル時間を生み出してしまう。自動化されたＭＥＳの欠陥によりＷＦＴの重要性が増すのと同じように、ＷＦＴの重要性によりＷＦＴの非能率も増してしまう。
【００１１】
このように、今日のウェハファブで用いられている工場制御システムは受動的であり、高度の自動化を可能にしてはいない。このようなシステムはＷＦＴや他の工場のスタッフに非常に依存することにより、工場の状態の監視、変化に対する絶え間ない反応、迅速な論理的決定、及びタイムリーで工場制御作業の開始や調整を行う。これらを行うＷＦＴはエージェントであり、工場制御システムに欠けている使用可能の要素を供給する。その結果、極めて競争の激しい半導体産業における工場の効率は、稼働率、生産性、技術レベル及びこれらヒューマンエージェントの統一性にかなり依存する。ＷＦＴは、ファブ内の様々なベイに位置する数多くのツールを監視及び操作しなければならない。ＷＦＴは、ツール、ベイ、マテリアル搬送システム、及び様々な工場制御システム間を多重化せざるを得ない。ファブの生産ランプやより複雑なプロセスを導入しているので、スタッフやシステムの製造能力を増やさずに複雑さや容量の増加に併せるのはより困難になっている。前工程や後工程での各操作、ツールの状態、仕掛品や資源の可用度に対するＷＦＴの視認性には限界がある。
【００１２】
しかしながら、鍵となる論理的決定はこの限られた旧式の情報に基づくことが多く、この情報は工場制御システムによって部分的にしか供給されていない。ＷＦＴは大幅な時間をシステムとのやり取り、工場のイベントや状況変化を監視、及びＭＥＳへのログインのような他の付加価値をもたらさない業務を行うことに費やしている。シフト交替によって、テクニシャンが必要な監視や調整を行うことが一時的にできなくなるので、ファブの作業が中断される。テクニシャンが最高の努力をしても、ツールの使用によって不具合を招き、サイクル時間、在庫水準、工場のアウトプット及び構成を含む他の鍵となる要素の計量に悪影響を及ぼしてしまう。ベイ内でのマテリアルの取り扱いにおいて、新規３００ｍｍウェハファブ内での１２インチウェハの搬送が必要になるのに伴い、さらなる複雑さが大規模に導入される。従来の工場制御システムにとって、このようなレベルの詳細なスケジューリングや実行制御を提供する能力はない。
【００１３】
本発明は上述の課題のうちの１つもしくは全てを解決する、または少なくとも軽減させるためのものである。
【課題を解決するための手段】
【００１４】
製造プロセスフローにおいてアポイントメントをスケジューリングする方法及び装置を説明する。本方法及び装置は、処理ウィンドウは確約枠の範囲内でフロート状態にあるアポイントメント、処理ウィンドウは消費区間及び処理区間を含み処理ウィンドウは他のアポイントメントの処理区間と重複するアポイントメント、様々なステータスにおいて保守される異なるタイプのアポイントメントを含む異なるタイプのカレンダーの使用、予約されたアポイントメントで表される暗黙的な制約と予約されたアポイントメントで表される明示的な制限によってアポイントメントを制約するカレンダリングシステム即ち工程管理システム、カレンダーの管理に用いられるカレンダー操作手法、及び、複数のカレンダーにわたって同期するように保守が行われる相当するアポイントメント等、数多くの態様を含む。
【００１５】
本発明は、以下の説明を、図面と共に参照することにより理解できるであろう。各図面において、同様の参照番号は同様の要素を示している。
【００１６】
本発明は様々な変形や代替の余地があるが、図面において例として本発明の特定の実施形態を示しており、ここに詳細に説明する。しかしながら、ここにある特定の実施形態の説明は、本発明を開示された特別な形に限定することを意図するのもではなく、反対に、本発明は、添付の請求項の範囲内にある全ての変形、均等物、及び代替物を網羅するものである。
【図面の簡単な説明】
【００１７】
【図１】本発明に従って構築され操作されるプロセスフローのある実施形態の一部分を概念的に示した説明図。
【図２】図１のコンピュータデバイスのハードウェアアーキテクチャ及びソフトウェアアーキテクチャのうち、選択された部分をブロック図で概念的に示した説明図。
【図３】図１の装置のある実施例、つまり、半導体製造設備からのプロセスフローの一部分及び資源の消費のためにアポイントメントをスケジューリングする方法を概念的に示し
【図４Ａ】本発明に従って保守、使用される予約されたアポイントメントのカレンダーを概念的に示した説明図。
【図４Ｂ】一実施形態で用いられるカレンダー特化の階層を示した説明図。
【図４Ｃ】数個のアポイントメントの幾つかの部分が重複できるある実施形態を概念的に示した説明図。
【図５】カレンダー及びスケジューリングエージェントの相互作用や特徴の選択された部分を説明する予約されたアポイントメントの多数のカレンダーを概念的に示した説明図。
【図６】新しいアポイントメントのスケジューリングに対応するために予約されたアポイントメントをどのようにシフトさせるかを概念的に示した説明図。
【図７】新しいアポイントメントのスケジューリングに対応するための予約されたアポイントメントの「カスケードな左シフト」を概念的に示した説明図。
【図８Ａ】より速い開始時間を利用するための予約されたアポイントメントの変更を概念的に示した説明図。
【図８Ｂ】より速い開始時間を利用するための予約されたアポイントメントの変更を概念的に示した説明図。
【図９Ａ】オブジェクト指向プログラミング手法を用いる本発明の実施例におけるアポイントメントクラスの階層を示した説明図。
【図９Ｂ】一実施例におけるアポイントメントのステータスの変更の図である。
【図１０Ａ】先行する予約されたアポイントメントの予期せぬ長い継続時間に対応するために予約されたアポイントメントを変更する２つの状況を概念的に示した説明図。
【図１０Ｂ】先行する予約されたアポイントメントの予期せぬ長い継続時間に対応するために予約されたアポイントメントを変更する２つの状況を概念的に示した説明図。
【図１１】異なるカレンダー上の相当するアポイントメントを同期させておくための、ある実施形態に用いた通知メカニズムを示した説明図。
【発明を実施するための形態】
【００１８】
本発明の例示的な実施形態を以下に述べる。簡明化のため、本明細書において、実際の実施例の特徴の全ては記述していない。このようないかなる実際の実施形態の開発において、システムまたは業務に関連する制約の遵守等の実施例ごとに異なる開発者固有の目標を達成するために、実施例特有の決定を数多くしなければならないことは当然理解されるであろう。さらに、このような開発の努力は、複雑で時間のかかるものであっても、本開示の利益を有する当業者が請け負う日常業務であろうことは理解されるであろう。
図１は、本発明に従って構築され操作されるプロセスフロー１００のある実施形態の一部分を概念的に示したものである。このプロセスフロー１００によって半導体デバイスが製造される。しかし、本発明を別のタイプの製造プロセスに適用してもよい。このように、上記のプロセスフロー１００において、ウェハ１３５からなるロット１３０は一般に「製造工程中の製品」と称するものであってもよい。プロセスツール１１５及び製品に施されるいかなるプロセス作業も、全実施形態における半導体デバイスの製造に必ずしも関連するものである必要はない。しかし、理解しやすいように、また本発明の更なる理解のために、各実施形態の文脈において本発明を開示するにあたり、半導体製造に関する専門用語はそのまま使用されている。
【００１９】
プロセスフロー１００のうちの図示された部分は、２つのステーション１０５を備え、各ステーション１０５はプロセスツール１１５と通信するコンピュータデバイス１１０を含んでいる。ステーション１０５は通信リンク１２０を介して互いに通信する。本実施形態において、コンピュータデバイス１１０及び通信リンク１２０はより大きなコンピュータシステムの一部、例えばネットワーク１２５を含む。図１に図示したプロセスツール１１５は、最終的には集積回路デバイスになるウェハ１３５からなるロット１３０を処理している。
【００２０】
図２は、本発明に従ってプログラミングされ操作されるコンピュータデバイス１１０のハードウェアアーキテクチャ及びソフトウェアアーキテクチャのうち、選択された部分を示したものである。ハードウェア及びソフトウェアアーキテクチャのうちのある部分（例えば、個人カード、基本入出力システム（“ＢＩＯＳ”）、入出力ドライバ等）は図示していない。これらの部分は理解しやすいように省略されており、このことで本発明が分かりにくくなることはない。しかし、本開示の利益を有する当業者には理解されるように、コンピュータデバイス１１０のソフトウェア及びハードウェアアーキテクチャは図２では省略されたこのような定型的な特徴を多く含んでいるであろう。
【００２１】
本実施形態において、コンピュータデバイス１１０はワークステーションであり、ＵＮＩＸ（登録商標）対応のオペレーティングシステム２００を用いているが、本発明はそのような形態には限定されない。コンピュータデバイス１１０は、ノート型コンピュータ、ミニコンピュータ、メインフレームコンピュータ、もしくはスーパーコンピュータ等実質的にどのようなタイプの電子コンピュータデバイスにおいて実施されてもよい。また、コンピュータデバイス１１０は、他の実施形態においては、プロセスツール１１５に組み込まれたプロセッサまたはコントローラであってもよい。本発明はまた、ＵＮＩＸ（登録商標）対応のオペレーティングシステムに限定されない。他のオペレーティングシステム（例えば、ＷＩＮＤＯＷＳ（登録商標）対応またはディスクオペレーティングシステム（“ＤＯＳ”）対応）もまた使用してもよい。本発明は、コンピュータデバイス１１０の任意の実施例に関するこれらの態様によって限定されない。
【００２２】
コンピュータデバイス１１０はまた、バスシステム２１５を介して記憶装置２１０と通信するプロセッサ２０５を含む。記憶装置２１０は通常少なくともハードディスク（図示せず）とランダムアクセスメモリ（“ＲＡＭ”）（これも図示せず）を含む。コンピュータデバイス１１０は、ある実施形態では、光ディスク２３０やフロッピー（登録商標）電磁ディスク２３５、もしくは磁気テープ（図示せず）やジップディスク（図示せず）等の他の形態のものといった取り外し可能な記憶装置を含んでいてもよい。コンピュータデバイス１１０はモニタ２４０、キーボード２４５、及びマウス２５０を含み、これら全てが付属のユーザインターフェースソフトウェア２５５と共にユーザインターフェース２６０を構成する。本発明を実施するのに必要なものではないが、本実施形態におけるユーザインターフェース２６０はグラフィカルユーザインターフェース（“ＧＵＩ”）である。
【００２３】
プロセッサ２０５は、従来技術で知られている適当なプロセッサのいずれであってもよい。例えば、プロセッサ汎用のマイクロプロセッサやデジタルシグナルプロセッサ（“ＤＳＰ”）であってもよい。本実施形態において、プロセッサ２０５はアドバンスト・マイクロ・デバイセズ社（“ＡＭＤ”）から市販されているＡｔｈｌｏｎ（登録商標）６４ビットプロセッサであるが、本発明はそのような形態に限定されない。代わりに、サンマイクロシステムズ社製の６４ビットＵｌｔｒａＳＰＡＲＣ（登録商標）または３２ビットｍｉｃｒｏＳＰＡＲＣ（登録商標）、インテル社製のＩｔａｎｉｕｍ（登録商標）またはＰｅｎｔｉｕｍ（登録商標）クラスのプロセッサのいずれか、及びコンパック社製のＡｌｐｈａ（登録商標）プロセッサを用いてもよい。
【００２４】
各コンピュータデバイス１１０は、本実施形態において、記憶装置２１０内にあるソフトウェアエージェント２６５を含む。なお、ソフトウェアエージェント２６５はコンピュータデバイス１１０以外の場所にあるプロセスフロー１００内にあってもよい。ソフトウェアエージェント２６５の位置は本発明を実施するための資料とはならない。また、ソフトウェアエージェント２６５の位置は資料とはならないので、あるコンピュータデバイス１１０はデバイス上にソフトウェアエージェント２６５を複数有しており、他のコンピュータデバイス１１０は全く有していなくてもよい。ＷＯＲＫＳＴＲＥＡＭ（登録商標）等の自動化されたＭＥＳ２７０の少なくとも一部分が少なくとも１つのコンピュータデバイス１１０上にある。
【００２５】
図１に戻ると、上述したように、コンピュータデバイス１１０はまた、通信リンク１２０を介して接続されることにより、より大きなコンピュータシステム１２５の一部となってもよい。このような実施例におけるコンピュータシステムの一例には、ローカルエリア・ネットワーク（“ＬＡＮ”）、ワイドエリア・ネットワーク（“ＷＡＮ”）、システムエリア・ネットワーク（“ＳＡＮ”）、イントラネット、またはインターネットでさえも含まれるであろう。コンピュータシステム１２５は、ネットワーク接続されたクライアント／サーバーアーキテクチャを用いるが、他の実施形態ではピアツーピアアーキテクチャを用いてもよい。このように、他の実施形態の中には、コンピュータデバイス１１０が直接互いに通信するものもあってもよい。通信リンク１２０は、例えば、無線式、同軸ケーブル、光ファイバー、もしくはツイストペア線のリンクであってもよい。上述の中のあるものを用いる実施形態において、コンピュータシステム１２５及び通信リンク１２０は実施例特有のものであるだろうし、従来技術で知られている適当な方法で実施されてもよい。コンピュータシステム１２５は、従来技術で知られている任意の適当な通信プロトコル、例えば、伝送制御プロトコル／インターネット・プロトコル（“ＴＣＰ／ＩＰ”）を用いてもよい。
【００２６】
図１及び図２において、ソフトウェアエージェント２６５は、集合的に見て、製造プロセスを通してウェハ１３５からなるロット１３０の効率的なスケジューリング及び制御をつかさどっている。ソフトウェアエージェント２６５は各々、ある「製造ドメインエンティティ」、例えば、ロット１３０、プロセスツール１１５を表している。これらの製造ドメインエンティティ、例えばロット１３０の中には「消費者」、つまりプロセス資源を消費するものもある。これらの製造ドメインエンティティの中には「供給者」、つまり消費されるプロセス資源を供給するものもある。例えば、プロセスツール１１５は、プロセスフロー１００において消費してもよい資源、例えばプロセス時間を表している。プロセスツール１１５は、ウェハ１３５のある部分を形成する、つまり、ウェハ１３５に積層、パターニング、ドープ、もしくは熱処理を行うのに用いられる製造ツールであってもよい。または、プロセスツール１１５はプロセスフロー１００の様々な部分の性能を評価するのに用いられる測定ツールであってもよい。なお、時には、製造ドメインエンティティの中には、ある時間でのプロセスフロー１００における各自の役割に依存して、ある状況では供給者として、別の状況では消費者として分類されるものもある。
【００２７】
このように、ソフトウェアエージェント２６５の中には、プロセスフロー１００を通してロット１３０をタイムリーで効率的な方法で進めていく際に、消費者としての対象、例えばロット１３０やＰＭ工程（図示せず）を表すものもある。また、ソフトウェアエージェント２６５の中には、プロセスフロー１００を通してロット１３０をタイムリーで効率的な方法で進めていく際に資源を処理する消費者の要望に合うように、供給者としての対象、例えばプロセスツール１１５等の装置を表すものもある。各製造ドメインエンティティは少なくとも１つの対応するソフトウェアエージェント２６５を有するので、ソフトウェアエージェント２６５は、ウェハ１３５からなるロット１３０の次に行う処理用の複数の資源を評価することができる。プロセスフロー１００を通してロット１３０をスケジューリングし制御する役割の一部として、ソフトウェアエージェント２６５は互いに調整をとって、ウェハ１３５からなるロット１３０の次に行う処理用のプロセス資源を割り当てる。そして、ソフトウェアエージェント２６５はこれらの資源を割り当て、ロット１３０がプロセスフロー１００内を進行する間に最終的に消費される。
【００２８】
本実施形態では、ソフトウェアエージェント２６５は情報処理機能を持ち、状況を認識でき、かつ、ある特定の目標が設定されており、それに向けてソフトウェアエージェント２６５は自発的に行動を開始する。ソフトウェアエージェント２６５は、オブジェクト指向プログラミング（Object Oriented Programming:“ＯＯＰ”）環境におけるオブジェクトとして実行されるが、本発明はオブジェクト指向ではない技術を用いて実行してもよい。ソフトウェアエージェント２６５の動作は比較的単純で、スクリプト、規則、及び外的特性の影響を受ける。この動作は、割り当てられたロット期日の達成、再定義された品質レベルの達成、装置使用の最大化、及び適切なタイミングによる予防的措置のメンテナンスのスケジューリング等の選択された目標を達成するように設計されている。これらの目的の推進において、ソフトウェアエージェント２６５はＭＥＳ２７０とインターフェース接続し、かつ他の存在する工場制御システム（図示せず）と共に一体化する。本開示の利益を有する当業者には理解されるように、このインターフェース接続及び一体化が生じる方法は実施例ごとに特有のものであり、ＭＥＳ２７０や工場制御システムの構造や構成に依存するものである。
【００２９】
集合的に見て、ソフトウェアエージェント２６５は、各ロット１３０に対して、特定の品質が確保されたプロセスツール１１５における、後に述べる搬送や調達等の１つ以上の操作を先にスケジューリングする。本実施形態では、例えば、ソフトウェアエージェントは、プロセスツール１１５でのＰＭやＱｕａｌと同様に、プロセスツール１１５で処理用のロット１３０をスケジューリングする。このスケジューリングには、仕掛予定ロット１３０を待つのとは反対に、未完了のバッチを稼動させること及び機会を見計らった予防的措置のメンテナンス（“ＰＭ”）措置、及び仕様を満たすための機器の適格性確認テスト（“Ｑｕａｌ”）のスケジューリングの実施等の最適化決定を行うことが含まれる。ソフトウェアエージェント２６５は、ロット搬送やロット処理等の作業をスケジューリングし、ＭＥＳトランザクションを行い、処理や搬送を監視し、そしてスケジューリングされた作業またはスケジューリングされていない作業からのずれに対処する。
【００３０】
本実施形態におけるスケジューリングの決定は、「コントラクトネットネゴシエーションプロトコル：contact net negotiation protocol」に基づくソフトウェアエージェント２６５によって行われる。しかしながら、他のスケジューリング手法を本発明とともに実施してもよい。資源を割り当てるためにコントラクトネットネゴシエーションプロトコルをさらに実行するためには、アポイントメント確約枠というコンセプト及び強力なカレンダー操作ルーチンを用いて変動アポイントメントモデル手法を実施する。各スケジューリングエージェント２６５は「カレンダー」、あるいはアポイントメントの工程管理の保守あるいは調整を行ない、そのカレンダー上でそれぞれのエンティティ、例えばプロセスツール１１５、ロット１３０、ＰＭ、Ｑｕａｌ、または資源に対するアポイントメントを行う。ソフトウェアエージェント２６５のスケジューリング決定によってスケジューリングされるアポイントメントは、消費者と供給者のカレンダーの両方に「予約」されている。アポイントメントはスケジューリングされたタスクが達成されると予想される継続時間の間予約されている。
【００３１】
図３は、最初に図１に示した半導体製造プロセスフロー１００のある実施例３００における、アポイントメントを処理するネゴシエーション及びスケジューリングを示したものである。プロセスフロー３００は、スケジューリングが目的のコントラクトネットネゴシエーションプロトコルを実施する。より詳細には、プロセスフロー３００は、
・消費者であるロット１３０を表すロットスケジューリングエージェント（“ＬＳＡ”）３０５
・行われている状況に依存して消費者にも供給者にもなるプロセスツール１１５を表す装置スケジューリングエージェント（“ＭＳＡ”）３１０
・供給者であるレチクル３２０を表す資源スケジューリングエージェント（“ＲＳＡ”）３１５
・消費者であるＰＭやＱｕａｌ（図示せず）を表すＰＭスケジューリングエージェント（“ＰＭＳＡ”）３１８
を含む。ロット１３０、プロセスツール１１５、レチクル３２０、及びＰＭやＱｕａｌはまた、スケジューリングされた作業を実行する時間になるとスケジューリングエージェントが制御を渡す「処理」エージェント（図示せず）を有する。しかし、ＬＳＡ３０５、ＭＳＡ３１０、ＲＳＡ３１５、ＰＭＳＡ３１８、及び処理エージェントは図２のソフトウェアエージェント２６５のある特別な実施例である。
【００３２】
スケジューリングエージェント３０５、３１０、３１５、３１８の各々は、各自のカレンダー３８５、３７０、３４５、３８７を保守し使用する。より詳細には、
・ＬＳＡ３０５はロットカレンダー３８５を管理する
・ＭＳＡ３１０は装置カレンダー３７０を管理する
・ＲＳＡ３１５は資源カレンダー３４５を管理する
・ＰＭＳＡ３１８はＰＭカレンダー３８７を管理する。
カレンダーに予約されたアポイントメントの種類はスケジューリングエージェント２６５によって表されるエンティティの性質に依存するであろう。本実施形態では、例えば、スケジューリングエージェント３０５、３１０、３１５、３１８はそれぞれ、表１に示すタイプのアポイントメントをカレンダー３８５、３７０、３４５、３８７上に予約する。これらのタイプのアポイントメントの各々は、以下の表１で詳細に述べる。
【００３３】
本開示の利益を有する当業者には理解されるように、ＰＭの中には、プロセスツール１１５をプロセスフロー１００に再導入される前にフォローアップＱｕａｌの実行を呼び出すものもある。このフォローアップＱｕａｌは、ＰＭが例えばプロセスツール１１５の較正を狂わせなかったかどうか等を確認するためのものである。しかし、他のＱｕａｌは「独立型の」Ｑｕａｌであり、つまり、ＰＭが起こっても呼び出せない。フォローアップＱｕａｌは、独立型のＱｕａｌとは対照的に、ＰＭの実行によって決められた時間に行われなければならない。より詳細には、フォローアップＱｕａｌは、他のあらゆる種類のアポイントメントの前に呼び出されるＰＭの後に行わなければならない。
【００３４】
このことが確実に起こるように、本実施形態はフォローアップＱｕａｌを、当該フォローアップＱｕａｌを呼び出すＰＭの一部として取り扱う。これにより、ＰＭがスケジューリングされると、ＰＭが完了するとすぐにフォローアップＱｕａｌが自動的にスケジューリングされることになる。フォローアップＱｕａｌは、当該フォローアップＱｕａｌを呼び出すＰＭの一部とみなされているので、装置及びＰＭカレンダー３７０、３８７上の別々のアポイントメントによって表されることはない。スケジューリングされたＰＭアポイントメントの継続時間は、ＰＭ自身だけでなく、呼び出されるあらゆるフォローアップＱｕａｌに対しても十分なものである。このように、Ｑｕａｌアポイントメントは独立型のＱｕａｌに対してのみ装置及びＰＭカレンダー上でスケジューリングされる。
【００３５】
│スケジ │カレンダ│アポイント│アポイントメントの記述          │
│ューリ │ー      │メント    │                                │
│ングエ │        │          │                                │
│ージェ │        │          │                                │
│ント   │        │          │                                │
│ＬＳＡ │ロットカ│移動アポイ│ベイとベイの間（「ベイ間」）または│
│       │レンダー│ントメント│ベイの中（「ベイ内））でロットをプ│
│       │        │          │ロセスツールに搬送する。        │
│       │        │ロットアポ│ロットをプロセスツールで処理す  │
│       │        │イントメン│る。                            │
│       │        │ト        │                                │
│       │        │ロードアポ│ロットをプロセスツールにロードす│
│       │        │イントメン│る。                            │
│       │        │ト        │                                │
│       │        │アンロード│ロットをプロセスツールからアンロ│
│       │        │アポイント│ードする。                      │
│       │        │メント    │                                │
│       │        │フィーダー│数個の操作を前もってスケジューリ│
│       │        │アポイント│ングする際、ロットが前工程の非制│
│       │        │メント    │御作業のサイクルタイムの原因とな│
│       │        │          │る。                            │
│       │        │最大移動ア│ある特定のプロセスツールからの正│
│       │        │ポイントメ│確な移動をスケジューリングするこ│
│       │        │ント      │とができるまで、ロットがフィーダ│
│       │        │          │ーアポイントメントからの搬送時間│
│       │        │          │の原因となる。                  │
│ＭＳＡ │装置カレ│ロット処理│ロットをプロセスツールで処理する│
│       │ンダー  │アポイント│ロットカレンダー上の「ロットアポ│
│       │        │メント    │イントメント」に相当する。      │
│       │        │          │                                │
│       │        │セットアッ│現在行っている処理とは異なる種類│
│       │        │プアポイン│の処理のためにプロセスツールを準│
│       │        │トメント  │備、つまり「セットアップ」する時│
│       │        │          │間。                            │
│       │        │ＰＭアポイ│各プロセスツールでＰＭを実行する│
│       │        │ントメント│期間                            │
│       │        │          │ＰＭカレンダー上のＰＭアポイント│
│       │        │          │メントに相当する。              │
│       │        │Ｑｕａｌア│各プロセスツールで独立型のＱｕａ│
│       │        │ポイントメ│ｌを行う期間                    │
│       │        │ント      │ＰＭカレンダーのＱｕａｌアポイン│
│       │        │          │トメントに相当する。            │
│       │        │          │                                │
│       │        │装置バッチ│複数ロットを組み合わせてバッチ内│
│       │        │アポイント│に入れ、同時に処理する。        │
│       │        │メント    │                                │
│       │        │スケジュー│予定外に停止したプロセスツールの│
│       │        │リングされ│ダウン予想時間。「予想時間」とは │
│       │        │ていないダ│プロセスフロー内のプロセスツール│
│       │        │ウン時間ア│に対する修理（“ＭＴＴＲ”）にかか│
│       │        │ポイントメ│る平均時間であるが、他の任意の適│
│       │        │ント      │当な時間であることもできる。    │
│       │        │          │                                │
│ＰＭ   │ＰＭカレ│ＰＭアポイ│ＰＭ及びＰＭが必要とするあらゆる│
│ＳＡ   │ンダー  │ントメント│フォローアップＱｕａｌをプロセス│
│       │        │          │ツールに対して実行する時間。    │
│       │        │Ｑｕａｌア│独立型のＱｕａｌをプロセスツール│
│       │        │ポイントメ│に対して実行する時間。          │
│       │        │ント      │                                │
│ＲＳＡ │資源カレ│ロードロッ│資源によってロットをプロセスツー│
│       │ンダー  │トアポイン│ル内にロードする                │
│       │        │トメント  │ロットカレンダー上のロードアポイ│
│       │        │          │ントメントに相当する。          │
│       │        │          │                                │
│       │        │アンロード│ロットをプロセスツールからアンロ│
│       │        │ロットアポ│ードする                        │
│       │        │イントメン│ロットカレンダー上のアンロードア│
│       │        │ト        │ポイントメントに相当する。      │
│       │        │          │                                │
│       │        │投入ロット│例えば、ロードされたロットを炉の│
│       │        │アポイント│ローダーによって炉のチューブ内に│
│       │        │メント    │配置するプロセスツール及び資源の│
│       │        │          │特定のアポイントメント。        │
│       │        │          │                                │
│       │        │排出ロット│例えば、ロードされたロットを炉の│
│       │        │アポイント│ローダーによって炉のチューブから│
│       │        │メント    │取り出すプロセスツール及び資源の│
│       │        │          │特定のアポイントメント。        │
│       │        │          │                                │
│       │        │資源ロード│関連する資源がバッチを対応するプ│
│       │        │バッチアポ│ロセスツールにロードするアポイン│
│       │        │イントメン│トメント。                      │
│       │        │ト        │                                │
│       │        │資源アンロ│関連する資源がバッチを対応するプ│
│       │        │ードバッチ│ロセスツールからアンロードするア│
│       │        │アポイント│ポイントメント。                │
│       │        │メント    │                                │
│       │        │資源投入バ│関連する資源がバッチを対応するプ│
│       │        │ッチアポイ│ロセスツールの部分へ投入するアポ│
│       │        │ントメント│イントメント。                  │
│       │        │資源排出バ│関連する資源がバッチを対応するプ│
│       │        │ッチアポイ│ロセスツールの部分から排出するア│
│       │        │ントメント│ポイントメント。                │
│       │        │ＰＭアポイ│対応するプロセスツールにＰＭを実│
│       │        │ントメント│行する期間                      │
│       │        │          │ＰＭカレンダー上のＰＭアポイント│
│       │        │          │メントに相当する。              │
│       │        │Ｑｕａｌア│対応するプロセスツールにＱｕａｌ│
│       │        │ポイントメ│を実行する期間                  │
│       │        │ント      │ＰＭカレンダー上のＱｕａｌアポイ│
│       │        │          │ントメントに相当する。          │
│       │        │ダウン時間│予期しない問題のために対応する資│
│       │        │アポイント│源がダウンしていると予想される期│
│       │        │メント    │間。その継続時間は、プロセスフロ│
│       │        │          │ー３００内のプロセスツール１１５│
│       │        │          │に対する修理にかかる平均時間に設│
│       │        │          │定されるが、他の任意の適当な時間│
│       │        │          │であってもよい。                │
【００３６】
ＬＳＡ３０５は、自身がスケジュールどおりであると示しているロット１３０を維持しようとする。ＭＳＡ３１０は、自身が示すプロセスツール１１５の利用を最大にしようとする。同様に、ＲＳＡ３１５はレチクル３２０の利用を最大にしようとする。なお、他の実施例では、ＲＳＡ３１５は別のタイプの資源、例えば、装置がロードする資源、ダミーウェハ、カセット、ウェハファブテクニシャン等を表すこともできる。ＰＭＳＡ３１８は、とりわけプロセスツール１１５において、ＰＭやＱｕａｌを適切なタイミングでスケジューリングしようとしている。様々なエージェント３０５、３１０、３１５、３１８はこのことを、あわせることが必要な、もしくは守ってほしいスケジュールに応じて提供される価格やサービスに対して支払われる予算を調整することにより、処理用資源の消費のための各アポイントメントを調整する。
【００３７】
より詳細には、ロット１３０は、通常、例えば、プロセスツール１１５等の多数の装置について調整を行う。ＬＳＡ３０５は、ロット１３０が期日に合うようにしたり、適時に次の障害となる装置ステーションをフィードしたりするプロセスツールが提供するタイムスロットを見つけようとしている。同時に、ＭＳＡ３１０は、プロセスツール１１５の利用を最適化するような方法で処理するために、ロット１３０を獲得しようとしている。全体的に見て、ＭＳＡ３１０の目標は、ＭＳＡ３１０のプロセスツール１１５全体の利用を最大にし、ロット１３０の相対的な優先度を尊重し、セットアップやレシピの変更を減らし、かつバッチサイズを最適化することである。このようなエージェントの相互作用の協働は、結果として、ある特定のプロセスツール１１５において規定されたタイムウィンドウ内でロット１３０のスケジューリングを行うことになる。
【００３８】
大まかに言えば、ＬＳＡ３０５は、所望の製造操作を行うことが可能なプロセスツール１１５を表すＭＳＡ３１０の全てに「入札を要求する」メッセージ３２５を発行することにより、調整を行う。この時点で、プロセスツール１１５が資源、つまり時間を供給しているので、ＭＳＡ３１０は供給者の役目を果たしている。可能なプロセスツール１１５の各々に対するＭＳＡ３１０は、入札を要求するメッセージ３２５を受け取ると、可能性のある入札を識別し、適格なレチクル３２０を必要としていることを認識してジョブを行い、それ自身の入札を要求するメッセージ３３０を使用可能な資源、すなわち適格なレチクル３２０の全てのＲＳＡ３１５に対して発行する。プロセスツール１１５は現在プロセス資源を消費しているので、ＭＳＡ３１０は供給者からこの時点で消費者へと代わったことになる。適格なレチクル３２０を表す各ＲＳＡ３１５は、１つ以上の入札３３５を発信し、その１つをＭＳＡ３１０が選択して自身の入札３６０に含める。ＭＳＡ３１０は、このとき必要な資源を識別して、その役割を処理資源の供給者へと戻す。他の可能性のある入札がＭＳＡ３１０によって識別される場合、もう一度入札を適当なＲＳＡ３１５から要求する。
【００３９】
使用可能なプロセスツール１１５を表す各ＭＳＡ３１０は、１つ以上の入札３６０を入札を要求するメッセージ３２５を発行するＬＳＡ３０５に発信する。ＬＳＡ３０５は全ＭＳＡ３１０の全ての入札３６０の中から１つの入札３６０を選択する。そして、ＬＳＡ３０５は選択した入札３６０を発信するＭＳＡ３１０に契約３６５を与える。ＭＳＡ３１０は自身の装置カレンダー３７０をチェックして、その入札がまた利用可能かどうかを判断し、もしそうなら、契約３４０を選択した入札３３５を発信したレチクル３２０に与える。ＲＳＡ３１５は自身の資源カレンダー３４５をチェックして、その入札がまた利用可能であることを確認し、資源カレンダー３４５にアポイントメント３７５ａをスケジューリングする。次に、ＲＳＡ３１５は「入札を確認する」メッセージ３５５を有する契約を確認し、「資源」入札３３５を供給したＲＳＡ３１５を参照に、ＭＳＡ３１０は装置カレンダー３７０にアポイントメント３７５ｂをスケジューリングする。その後、ＭＳＡ３１０は、「入札を確認する」メッセージ３８０をＬＳＡ３０５に送信する。次に、ＬＳＡ３０５は対応するアポイントメント３７５ｃを自身の持つロットカレンダー３８５にスケジューリングする。アポイントメント３７５ａ、３７５ｂ、３７５ｃを実行する時間がやってくると、スケジューリングエージェント３０５、３１０、３１５は各々の処理エージェント（図示せず）に制御を渡す。
【００４０】
なお、作業は１つ以上の資源（リソース）を必要としてもよい。したがって、ＭＳＡ３１０は異なる数種類のＲＳＡ３１５について折り合いを付けてもよい。例えば、ロット処理はレチクル３２０だけでなく空のキャリア（図示せず）及びＷＦＴ（これも図示せず）を必要としてもよい。これにより、ＭＳＡ３１０はＲＳＡ３１５及びレチクル３２０に関して何度か説明した折り合いを付けることを繰り返してもよい。
【００４１】
さらに図３を参照して、簡単に上述した「コントラクトネットネゴシエーションプロトコル」手法をより詳細に説明する。説明したように、入札プロセスは、ＬＳＡ３０５が使用可能なプロセスツール１１５からの入札３６０を要求すると開始する。本開示の利益を有する当業者には理解されるように、使用できるかどうかは主に、プロセスツール１１５がロット１３０が開始を要求するプロセス操作を実行できるかどうかを前提としている。ＬＳＡ３０５が使用可能なプロセスツール１１５からの入札３６０を要求すると、入札要求３２５には以下の情報が含まれている。
・搬送開始時間（“ＴＳＴ”）、つまり、最後の（以前の）装置または現在の位置から搬送を開始する最も早い時間
・スケジューリングされるプロセス操作（“ＰＯ”）及びプロセスステップ（“ＰＳ”）
・消費者が最後に納入した時間（“ＬＤＴｃ”）、または、ロット１３０に受け入れられる最終の完了時間
・最後の位置または「資源の」位置のアイデンティティ、つまり、消費者がプロセスツール１１５へと搬送される前に位置する位置
・入札を要求するロット１３０のアイデンティティ
実施形態によっては、消費者エージェントが供給者エージェントに予算計算手段を供給するものもある。この予算計算手段によって、供給者エージェントが供給者のカレンダーに既に予約されている他のアポイントメントに対する消費者の優先度を判定することが可能となる。
【００４２】
ある実施例では、ＬＳＡ３０５は、ＬＤＴｃの初期値をロットが予定より遅れる時間として計算する。対応するＬＤＴｃは以下の式を用いて決定される。
LDTc = DueDate - (CRA*DFLTLD+CRB)-TargetCR*(RPT*β)
ここで、
DueDate ≡ロット１３０がプロセスフロー３００を完了することになっている時間
RPT ≡ 残りの全プロセス操作のサイクル時間の合計
β ≡ ロットの優先度に基づくサイクル時間圧縮要素
CRA ≡ 予想サイクル時間に比例するＣＲ調整に対する構築可能制御Ａ
CRB ≡ プロセスフロー３００の終わり近くの乱れを吸収するＣＲ調整に対する構築可能制御Ｂ
DFLTLD ≡ ロット１３０に対する予想リード時間、つまり、予想全サイクル時間
TargetCR ≡ ＬＤＴｃに対するターゲットの臨界比、初期値がロット優先度によって設定され、デフォルトが１．０である構築可能な変数
しかし、このＬＤＴｃに対する初期値は、必ずしも入札のための要求を用いてパスする値ではない。
【００４３】
使用可能なプロセスツール１１５に対するＭＳＡ３１０は入札３６０を作り出す。上述のように、ＭＳＡ３１０は装置カレンダー３７０を保守してそのアポイントメントを追跡する。入札を要求するメッセージ３２５を受け取ると、ＭＳＡ３１０は、ロット１３０をアポイントメントのためにスケジューリングする機会を探して装置カレンダー３７０をサーチする。「アポイントメント」は「処理ウィンドウ」（processing window:“ＰＷ”）を有する。処理ウィンドウは、アポイントメント開始時間（Appointment start time:“ＴＳ”）及びアポイントメント終了時間（Appointment end time:“ＴＥ”）によって区画された、サービスを提供するための見積の継続時間の時間間隔である。変動アポイントメント手法では、ほとんどのアポイントメントは、プロセスウィンドウＰＷが変動してもよい範囲である「確約枠」（commitment window:“ＣＷ”）を有する。「確約枠」は、サービスが供給されることになっている時間間隔である。確約枠ＣＷの開始時間は、消費者においてサービスが利用可能になる最速開始時間（Earliest start time:“ＥＳＴ”）で定義される。確約枠の終了時間は、そのサービスに対して供給者が最終に納入した時間（Latest delivery time:“ＬＤＴｐ”）によって定義される。なお、ＬＤＴｐは、ロット１３０に対するＬＳＡ３０５からの入札を要求するメッセージ３２５において、ＬＤＴｃとは異なるものであってもよい。本実施形態では、有効な入札３６０の位置を特定するために、必要であれば、ＭＳＡ３０５がロット１３０により規定されるＬＤＴｃを超えてサーチすることが可能である。このようなことが生じた場合、ＭＳＡ３１０は入札のＬＤＴｐを結果として生じるアポイントメントのＴＥに設定する。各アポイントメントは処理ウィンドウＰＷ［ＴＳ，ＴＥ］及び確約枠ＣＷ［ＥＳＴ，ＬＤＴｐ］の両方の情報を格納する。本実施形態では、この情報は後に入札３６０を作り出す際に用いられる。
【００４４】
より詳細には、図４Ａは、本実施形態における、ウェハ１３５からなるロット１３０である多数の消費者のためのプロセスツール１１５に対するアポイントメントに関する情報を格納するカレンダー４００を概念的に示したものである。図４Ａにおいて、プロセスツール１１５に対するＭＳＡ３１０は、それぞれロットＬＯＴ１〜ＬＯＴ４に対するアポイントメントＡＰＰ１〜ＡＰＰ４を予約してある。これにより、Ｌｏｔ１〜Ｌｏｔ４に対するアポイントメント情報は以下の通りである。
Lot1 : APP1[t10, t12], CW1[t8, t14]
Lot2 : APP2[t13, t15], CW2[T9, T16]
Lot3 : APP3[t5, t7],  CW3[t2, t11]
Lot4 : APP4[t3, t4],  CW4[t1, t6]
アポイントメントＡＰＰ１〜ＡＰＰ４は確約枠ＣＷ１〜ＣＷ４内の処理ウィンドウを表す。なお、本実施形態において、確約枠のうちのいくつかは一部重複しているが、アポイントメントの中で一部重複するものはない。しかし、別の実施例では、かなり後に説明するように、このことは常にそうであるとは限らない場合もある。
【００４５】
図３に戻って、次に、使用可能なプロセスツール１１５に対するＭＳＡ３１０は、入札３６０をＬＳＡ３０５に発信する。入札３６０は、実施例により変わる「入札情報」を含む。この入札情報は、例えば、入札３６０を発信するプロセスツール１１５の識別表示及び処理時間間隔しか含まない場合もある。本実施形態では、入札情報は少なくとも
TS ≡ 上記で定義したようなアポイントメント開始時間
TE ≡上記で定義したようなアポイントメント終了時間
EST ≡ 処理に対する最速開始時間、つまり、ロット１３０がプロセスツール１１５での処理を行う準備ができていると確約する最速の時間
LDTp ≡ ロットにより要求されたＬＤＴより遅い、さもなければ当該ＬＤＴとは異なる場合もある上記で定義したような最終納入時間
を含む。しかし、入札コストなどの追加の情報をも含んでいてもよい。本実施形態では、ロット１３０により要求されたＬＤＴｃの前に終了するアポイントメントの位置を特定することができないのであれば、プロセスツール１１５がＬＤＴｐを調整してもよい。このことは、ＴＳが遅い、セットアップを追加する、もしくはその両方により起こることもあり得る。
【００４６】
ＥＳＴの決定はアポイントメントの種類に依存する。ほとんどの種類のアポイントメントは静的なＥＳＴ（“ＥＳＴｓｔａｔｉｃ”）を有する。この場合、静的ＥＳＴは、時間ベースのＰＭが開始可能な最速時間のような、作業が開始され得る一定の時間である。しかし、アポイントメントの種類の中には、ＥＳＴを動的に計算するものもある。これらの種類のアポイントメントには、ロットアポイントメント、ロット処理アポイントメント、ロットロードアポイントメント、資源ロードロットアポイントメント、及びバッチアポイントメントが含まれる。動的ＥＳＴの基本的な計算式は
EST = max (T + RTT, ESTstatic)
である。ここで、
T ≡ max(Tnow, TST)
Tnow ≡ 現在の時刻
TST ≡ 搬送開始時間
RTT ≡ 残りの搬送時間（ＴＳＴとロットアポイントメント間の全搬送時間の合計）
ESTstatic ≡ 静的ＥＳＴ
である。しかし、この基本的な計算式は、本実施形態においては、ある状況での用途が変化する。特に、ロードに対する制約を適用することにより、処理が開始する前にロット１３０がプロセスツール１１５にロードされることになっている場合に、より正確な決定を行うことができる。このような制約には、
・LST ≡ ロード開始時間
・RLT ≡ 残りのロード時間
・ELT ≡ 実質的に上記の基本的決定である最速ロード時間（つまりＥＳＴ）
がある。これらのロードに対する制約は、ロットアポイントメント、ロット処理アポイントメント及び資源投入ロットアポイントメントの各属性である。以下のアンロードに関する制約は、装置及び資源カレンダー３７０、３４５上にあるＰＭ、Ｑｕａｌ、ダウン時間、装置バッチ及び資源バッチの各アポイントメントの各属性である。
・UST ≡ アンロード開始時間
・RUT ≡ 残りのアンロード時間
これらのアンロードに関する制約が設定された場合、それぞれのアポイントメントは、そのシフト能力（後でもっと完全に説明する）を非常に必要としているので、直前の処理に関わったロット１３０をアンロードできるようにそれ自体と先のバッチ処理アポイントメントの間で必要な時間間隔を保持するように制約を受ける。これは厳しい制約ではないので、動的ＥＳＴを介しては実施されない。装置カレンダー３７０によってＵＳＴ及びＲＵＴを用いてシフトが有効であるかどうかを判定する。アンロードに関する制約のあるアポイントメントは、先のアポイントメントにおけるロット１３０がアンロードを完了するまでは処理が開始できない。
【００４７】
動的ＥＳＴの計算に戻って、ロットアポイントメントに対して、
・ロードを行う必要がない場合、EST = ELT
・ロードを行う必要があるがまだ開始がしない場合、EST = ELT + RLT
・ロードを既に開始しているがまだ完了していない場合、EST = max(ELT, EST)
・一旦ロードが完了すると、EST = Tnow
ロット処理アポイントメント、または資源投入アポイントメントに対しては、
・ロードを行う必要がない場合、EST = ELT + Dsetup
・ロードを行う必要があるがまだ開始がしない場合、EST = ELT + Dsetup + RLT
・ロードを既に開始しているがまだ完了していない場合、EST = max(ELT, LST)
・一旦ロードが完了すると、EST = Tnow
この決定において、Ｄsetupはセットアップの継続時間である。なお、動的ＥＳＴの継続時間は、ロードを行う前にセットアップが発生するかどうか、もしくはセットアップ及びロードを並行して行うかどうかを考慮に入れなければならない。また、この実施例は、セットアップはロードを行う前に発生すると想定している。そして、バッチアポイントメントに対しては、デフォルトの決定は
ESTbatch = max（バッチを構成するロットのＥＳＴ）
である。しかし、バッチを構成するロットがロードを必要とし、かつ最大ロードの大きさが最大バッチの大きさより小さい場合には、この式では問題を生じるときもある。バッチにある各ロットのＥＳＴは、個々のロットがロード時間を必要とすることを考慮に入れているが、ロードの大きさがバッチの大きさよりも小さいので、ロット１３０の全てを並行してロードすることはできないからである。このような難題は、バッチを構成するロットをロードする順番を考慮することにより解決できる。この終わりまで、ロット処理アポイントメント及び資源投入ロットアポイントメントは、ロードを行う順番において、各ロット１３０が例えば、１番目、２番目、３番目を示す１、２、３のどこに納まるかを識別する、属性の「transferSequence」を含む。「０」の値はロードを行う必要がないことを示している。よって、以下の擬似コードアルゴリズムが用いられる。
Found = false
ESTbatch = max (バッチを構成するロットのＥＳＴ)
IF (transferSequence=1であるバッチを構成するロット) then
ESTbatch = max (transferSequence=1であるバッチを構成するロットのＥＳＴ)
Found = true
I=2
While (Found == true)
If (transferSequence= Iであるバッチを構成するロット) then
ELTbatch = max (transferSequence=Iであるバッチを構成するロットのＥＬＴ)
ELTbatch = max (ESTbatch, ELTbatch)
RLTbatch = max (transferSequence=Iであるバッチを構成するロットのＲＬＴ)
LSTbatch = max (transferSequence=Iであるバッチを構成するロットのＬＳＴ)
If RLTbatch! = 0, then ESTbatch = ELTbatch + RLTbatch
IF RLTbatch = 0 and LSTbatch= null then ESTbatch = ELTbatch
If RLTbatch = 0 and LSTbatch! = null then ESTbatch = max (ELTbatch, LSTbatch)
else Found = false
EndWhile
しかし、別の実施形態では、他の適当なアルゴリズムを用いてもよい。
【００４８】
なお、この決定は動的であるので、用いられる量の中には、特定のイベントが発生するとアップデートされるものもある。例えば、ＬＳＡ３０５は、ロット１３０のＴＳＴやＲＩＴがアップデートの原因になる。例えば、ＲＴＴやＴＳＴの値は、以下の場合にアップデートされる。
・まずアポイントメント３７５を予約する。これは、このアポイントメントが、初期値が以下のように設定される新たな属性ＲＴＴ及びＴＳＴを有するからである。
TST = 先行ロットのアポイントメントのＴＥ（先行するアポイントメントが予約されていなかった場合、現在の時刻Ｔｎｏｗを用いる）
RTT = ＴＳＴと処理アポイントメントの間の全搬送アポイントメントの搬送時間の合計
・ＴＳＴの値を先行するアポイントメントの実際の終了時間ＴＥに設定すると、先行するアポイントメントが完了する。
・先行するアポイントメントの終了時間ＴＥが変更される。このことは、例えば先行するアポイントメントが拡大したり（例えば、進行が遅れる、または、製造工程中の製品数が増える）、縮小したり（早く完了する、または、仕掛品数が減る）、左または右にシフトしたりすることにより起こり得る。この場合、ＴＳＴの値は先行ロットのアポイントメントの修正終了時間（新たなＴＥ）に設定される。
・ＴＳＴの値を開始された搬送アポイントメントのスケジューリングされた終了時間ＴＥに設定するとともに、開始された搬送アポイントメントのスケジューリングされた継続時間によってＲＴＴの値をデクリメントすると、搬送アポイントメントが開始される。
・搬送アポイントメントの実際の終了時間（つまり、実際のＴＥ）でＴＳＴをアップデートすると、搬送アポイントメントが完了する。
・搬送が開始される前に搬送アポイントメントが左、または右にシフトする。次のロットアポイントメントのＴＳＴまたはＲＴＴは、先のロットのアポイントメントまたは搬送アポイントメントに基づくものなので、これらに変化はない。本実施形態では、搬送アポイントメント開始後の当該搬送アポイントメントのシフトは可能ではない。
・搬送が開始される前に搬送アポイントメントが拡大／縮小する。このことは、ロット位置の想定外の変化により搬送アポイントメントを修正した場合に発生し得る。次のロットのアポイントメントは以下のようにアップデートされる。
RTT = (現在のＲＴＴ) - (古い搬送継続時間) + (新たな搬送継続時間)
・次のロットのアポイントメントが以下のようにアップデートされると、搬送が開始された後に搬送アポイントメントが拡大／縮小する。
TST =搬送アポイントメントの修正終了時間(新たなＴＥ)
・先のロットのアポイントメントの完了後にロット位置が変更される。ロット位置が想定外に変更して現在の搬送アポイントメントを修正及び／またはキャンセルしなければならないことをＬＳＡに通知する。まだ開始していない搬送アポイントメントの修正、キャンセル及び／または再予約後、次のロットのアポイントメントを以下のようにアップデートする。
RTT = ＴＳＴと次のロット処理アポイントメントの間の全搬送アポイントメントの搬送時間の合計
・先のロットのアポイントメントの再予約、すなわち、先のロットのアポイントメントをキャンセルまたは再予約する。交換ロットのアポイントメントを再予約するまではＴＳＴ及びＲＴＴを変更してはならない。このことはまた、次に続く搬送アポイントメントの修正、キャンセル、及び／または再予約を必要とする。次のロットのアポイントメントを以下のようにアップデートする。
TST = 先のロットのアポイントメント(再予約されたもの)の新たなＴＥ
RTT = ＴＳＴと次のロット処理アポイントメント間の全搬送アポイントメントの搬送時間の合計
実施例に依存して、さらに別のイベントが、上述の各場合に加えて、または上述の各場合の代わりに、アップデートを指示する場合もある。ロードする資源に対するＲＳＡ３１５は、同様の手法でＬＳＴ及びＲＬＴをアップデートする。例えば、ＬＳＴ及びＲＬＴは、以下の場合にアップデートされる。
・まずアポイントメント３７５が最初に予約される時。これは、このアポイントメントが、ロードする必要がある場合、初期値が以下のものである新たな属性ＬＳＴ及びＲＬＴを有するからである。
LST = ロットアポイントメントのＥＳＴｓｔａｔｉｃ
RLT = ロード継続時間
ロードする必要がない場合、初期値を以下のように設定する。
LST = null
RLT = 0
・以下の場合にロードアポイントメントが開始されるとき。
LST = ロードアポイントメントの終了時間
RLT = 0
・LST = Tnowの場合にすぐロードアポイントメントが終了する。
・RLT = 新たなロード継続時間
の場合、ロードが開始する前にロードアポイントメントが縮小または拡大する。
・LST = ロードアポイントメントの新たな終了時間
の場合に、ロードが開始した後にロードアポイントメントが縮小または拡大する。
実施例に依存して、さらに別のイベントが、上述の各場合に加えて、または上述の各場合の代わりに、アップデートを指示する場合もある。
【００４９】
図３に戻り、ある実施例では、使用可能なプロセスツール１１５に対する各ＭＳＡ３１０は、異なるアポイントメント開始時間を前提とする複数の入札３６０を実際に準備している。各入札３６０は、異なる「コスト」を含む。本実施形態では、スケジューリングエージェント３０５、３１８の各々が「最終」消費者を表しており、そのコストと予算計算ツール（図示せず）を対応付けることにより、迅速な予算決定を行いやすくしている。各供給者スケジューリングエージェント３１０、３１５は、消費者の対応する予算計算ツールを呼び出して、準備されている複数の入札３６０を作り出す際に消費者の相対的な優先度を決定する。供給者を表すスケジューリングエージェント３１０、３１５はそれぞれ、入札を作り出す際に、対応する「コスト計算手段」をも用いて、入手可能なタイムスロットのコストを決定する。このコスト決定は、ＭＳＡ３１０またはＲＳＡ３１５のプロセスツール１１５または資源３２０に対する目標を達成したいという要求を反映している。例えば、プロセスツール１１５が相対的にアイドル状態である場合、装置のアイドル時間を減らそうとして、そのコストは比較的低い場合もある。反対に、プロセスツール１１５が相対的にビジー状態である場合には、そのコストは比較的高く、よって、このことは装置利用を増加させる必要性はあまり高くないことを反映している。ＭＳＡ３１０は「中間」消費者を表しており、供給者エージェント（例えば、ＬＳＡ３０５、ＰＭＳＡ３１８）の予算計算ツールを渡している。この予算計算ツールを用いて、ＭＳＡ３１０は、折り合いを付けようとしている供給者エージェント（例えばＲＳＡ３１５）と折り合いを付けようとしている。従って、供給者は、最終消費者が利用可能な予算及び自分の処理用資源を最終消費者に提供するコストを容易に決定することができる。
【００５０】
ＭＳＡ３１０は、入札情報を一括し、１つの入札（複数の入札）３６０をＬＳＡ３０５に発信する。本実施形態では、ＭＳＡ３１０は実際には各々が異なる開始時間を有する代替の入札３６０を入札リストの形式で戻す。これらの入札３６０は、本実施形態では、装置カレンダー３７０上で行う既存のセットアップを使用するオープンなタイムスロットのサーチを用いることにより生成される。ここで、オープンなタイムスロットは新しいセットアップを必要とし、ロット１３０が既存のバッチに合流することが可能な場合のタイムスロットであり、別のロット１３０をはじき出すことによりロット１３０が既存のバッチに合流することが可能な場合のタイムスロットであり、かつ、タイムスロットは他のロット１３０に対して予約されたアポイントメントをはじき出す（「キャンセルする」）ことを必要とする。これらのサーチのうちのいくつかは、同じタイムスロットを返してもよいが、タイムスロットはロット１３０に返される入札リストの中に一度しか登場してはならない。この実施形態では、少なくとも１つの入札３６０は常に返され、返された入札の最少数は構築可能なプロパティ値によって決定される。
【００５１】
カレンダー３８５、３７０、３４５、３８７の保守によってスケジューリングプロセスがいかに行いやすくなるかを示す。カレンダー３８５、３７０、３４５、３８７は、プロセスフロー３００に対して予約されたアポイントメントに、スケジューリングエージェント３０５、３１０、３１５、３１８が予約されたアポイントメントのサーチ、適したタイムスロットの発見、入札及び入札適合プロセスを迅速かつ容易に行うことができる構造を課す。この構造はまた、同様にスケジューリングプロセスを行いやすくするとともにプロセスフロー３００がより効率よく動作するのに役立つアポイントメント管理ルーチンを適応することもでき、このルーチンのうちのいくつかは、以下に説明する。
【００５２】
使用可能なプロセスツール１１５に対する全ＭＳＡ３１０から入札３６０を全て受け取った後、ＬＳＡ３０５は入札３６０を評価して、発信された入札３６０から１つを選択する。入札３６０は、入札３６０の終了時間（「入札終了時間」）やコスト（「入札コスト」）等の他の情報を踏まえて目的関数Ｆによって評価される。ロット１３０に対するＬＳＡ３０５は、このようにして全てのプロセスツール１１５からの全ての入札３６０を評価する。目的関数Ｆは以下のものを用いる。
F = COL(入札終了時間) * 予算 * COLF + 入札コスト
ここで、遅れることへのコストを示すCOLは入札終了時間の関数であり、COLFは構築可能な重みである。目的関数値が最小の入札３６０を選択する。
【００５３】
さらに図３を参照すると、一旦ＬＳＡ３０５が入札３６０を選択すると、承認された入札３６０を発信したＭＳＡ３１０に契約３６５を与える。より技術的に説明すると、ＬＳＡ３０５が「入札を確定する」メッセージをＭＳＡ３１０に送信する。ＭＳＡ３１０が契約３６５を承認した場合、及び、プロセス操作がどの資源にも関わっていない場合、ＭＳＡ３１０は「入札を確定した」メッセージ３８０をＬＳＡ３０５に返すことにより入札３６０を確定し、アポイントメント３７５ｂをプロセスツール１１５の装置カレンダー３７０に、アポイントメント３７５ｃをロットカレンダー３８５に予約する。このプロセス操作には資源が必要な場合、ＭＳＡ３１０はまず「入札を確定する」メッセージ３４０もしくは契約を、入札を送信したＲＳＡ３１５に送信する。ＲＳＡは自分のカレンダー３４５にアポイントメント３７５ａを予約し、「入札を確定した」メッセージ３５５をＭＳＡ３１０に送信する。ＲＳＡ３１５から入札を確定したメッセージ３５５を受け取ると、ＭＳＡ３１０は自分の装置カレンダー３７０にアポイントメント３７５ｂを予約し、「入札を確定した」メッセージ３８０をＬＳＡ３０５に送信する。ＬＳＡ３０５はロットカレンダー３８５にアポイントメント３７５ｃを予約する。
【００５４】
しかし、ＬＳＡ３０５が入札３６０の確定を要求する時間まで、プロセスツール１１５の装置カレンダー３７０は変更がある場合があり、タイムスロットが利用可能ではないか、または入札コストが既に変化していた場合もある。ＭＳＡ３１０は、タイムスロットが利用可能で入札コストが元々の入札コストの構築可能な割合を超えて増加していない場合にのみ、入札３６０を確定する。そうでない場合、ＭＳＡ３１５はＬＳＡ３０５に入札３６０を確定しないことを示す返答を返す。
【００５５】
プロセスツール１１５が選択された入札３６０を確定しない場合、ＬＳＡ３０５は入札をやり直すか次に最適な入札を選択するかを判定する。ＬＳＡ３０５は残りの入札３６０の数を構築可能な「再入札閾値」と比較する。残りの入札３６０の数がよりも大きければ、ロット１３０は上記の入札選択プロセスを返して次に最適な入札３６０を選択する。次に最適な入札３６０を選択した後、ＬＳＡ３０５はその新たな入札３６０に対する目的関数Ｆ（上述）を計算する。Ｆの値が最適な入札３６０に対する目的関数Ｆの構築可能な割合より大きな値の分だけ大きくなってはいなかった場合、ＬＳＡ３０５は選択された次に最適な入札３６０の確定を試みる。さもなければ、残りの入札が再入札閾値よりも小さい場合、もしくは、選択された次に最適な入札３６０の目的関数Ｆが大きくなりすぎていた場合、ＬＳＡ３０５は使用可能なプロセスツール１１５全てからの入札を要求することにより全てのプロセスをもう一度やり直す。
【００５６】
ある実施形態では、ＭＳＡ３１０がバッチのプロセスツール１１５とシーケンシャル（「カスケード」）なプロセスツール１１５のいずれを表しているかをＭＳＡ３１０は区別している。例えば、数多くのタイプのプロセスツール１１５があり、各種プロセスツール１１５は様々な対応するソフトウェアエージェント２６５を有利に特化する特徴を持っている。本実施形態における装置エージェント（スケジューリングと処理の両方）の特化に適している特徴の例として、以下のことがあげられる。
・プロセスツール１１５がウェハ単位、ロット単位、バッチ単位のいずれで処理を行うのか
・プロセスツール１１５がウェハ、ロット、またはバッチをシリアル処理するのかシーケンシャル処理するのか
・プロセスツール１１５のポート数
・プロセスツール１１５の各ポートは入力、出力、入出力のいずれなのか
・プロセスツール１１５のチャンバーを直列に使用するのか並列に使用するのか
・プロセスツール１１５はＰＭを束縛できるのか
・プロセスツール１１５内のチャンバー数
・プロセスツール１１５が内部記憶装置を含むのか
・プロセスツール１１５は、ロットまたはバッチの処理が完了すると、別のロットまたはバッチの処理を始めることができるのか
・プロセスツール１１５はロード及び／またはアンロードを行うことを必要とするのか
・プロセスツール１１５は資源が必要なのか、もしそうなら、その資材は専用資源なのか共用資源なのか
なお、しかしながら、ＭＳＡ３１０または任意のソフトウェアエージェント２６５を特化する因子は実施例に固有のものである。
【００５７】
例えば、装置エージェントをウェハ単位、ロット単位、バッチ単位等のいずれで処理するかによって特化する実施例を考える。ある実施形態では、以下の装置エージェントが用いられる。
・ベースライン処理エージェント
・ウェハベースの処理エージェント
・ウェハベースでシーケンシャルな処理エージェント
・ウェハベースでバッチシーケンシャルな処理エージェント
・ウェハベースでバッチ処理エージェント
・ロットベースの処理エージェント
・ロットベースでシーケンシャルな処理エージェント
・ロットベースでバッチ処理エージェント
・ロットベースでバッチシーケンシャルな処理エージェント
・ベースラインスケジューリングエージェント
・ウェハベーススケジューリングエージェント
・ウェハベースでシーケンシャルなスケジューリングエージェント
・ウェハベースでバッチシーケンシャルなスケジューリングエージェント
・ウェハベースでバッチスケジューリングエージェント
・ロットベーススケジューリングエージェント
・ロットベースでシーケンシャルなスケジューリングエージェント
・ロットベースでバッチスケジューリングエージェント
・ロットベースでバッチシーケンシャルなスケジューリングエージェント
【００５８】
この実施形態は、オブジェクト指向プログラミング手法を用いるエージェントを実施し、クラス定義等を提供するベースラインエージェントはそのクラスのサブクラスである。
【００５９】
また、他のエージェント特化を用いてもよい。ＰＭエージェントが行う保守手順が、時間、処理されるウェハ、処理されるロット、処理されるバッチ、処理時間、イベント発生等のいずれに基づくものなのかによって、ＰＭエージェントを特化してもよい。ある実施形態では、以下のＰＭエージェント用いている。
・ウェハベースＰＭＳＡ
・時間ベースＰＭＳＡ
・処理ユニットベース（例えば、処理されるロット数、処理されるバッチ数）ＰＭＳＡ
・イベントベースＰＭＳＡ
・処理時間ベース（例えば、累積処理時間）ＰＭＳＡ
同様に、資源エージェントが専用の資源（例えば、１つの装置でしか使用されていないロード用資源）と複数のプロセスツール１１５の間で共用されている共用の資源（例えば、ウェハファブテクニシャン、レチクル、または空のキャリア）のいずれを表しているかによって、資源エージェントを特化してもよい。ロットエージェントもまた、各々の優先度、製品、製品群、または行為の区別が緩和される他の属性に従って特化してもよい。他の実施形態ではさらに別の形態で特化してもよい。
【００６０】
また、カレンダー、例えば、図３のカレンダー３２７を、関連する装置、ロット、またはＰＭであるように特化してもよい。なお、しかしながら、このことは本発明を実施するのに必要なことではない。図４Ｂは、ＯＯＰ環境におけるオブジェクトとして実施されているある実施形態で用いられるカレンダー特化の階層を示している。
【００６１】
このように、これらのタイプのエージェント特化を用いた場合、カレンダー３７０、３８５、３４５、３８７をも特化してもよい。ある特化されたカレンダー、例えばシーケンシャルカレンダー上では、アポイントメントの一部を他のアポイントメントに重複させることができる。本開示の利益を有する当業者には理解されるように、「シーケンシャル」とは、一度に２つ以上のマテリアル（例えば、ウェハ１３５、ロット１３０、またはバッチ）を処理する性能があることをいう。つまり、プロセスツール１１５は第１のマテリアルの処理が完了する前に第２のマテリアルの処理を開始できる。例えば、「シンク」と呼ばれるプロセスツール１１５を考える。シンクはウェハ１３５からなるロット１３０をシーケンスで様々な薬浴に晒すことが可能な数個のタブを有する。あるロット１３０をあるバスの中で晒している間、第２のロット１３０を第２のバスに晒すことが可能であり、両者は同じプロセスツール１１５によりシーケンスで処理されている。
【００６２】
プロセスツール１１５がシーケンシャル装置でＭＳＡ３１０と装置カレンダー３７０が特化されている場合には、いくつかのアポイントメントの数箇所が重複する場合もある。図４Ｃに示すとおり、これらのカレンダー内のアポイントメント４０４の処理ウィンドウＰＷ４０２には２個の区間、消費区間４０６及び処理区間４０８がある。（なお、説明をわかりやすくするため、図４Ｃでは付随する確約枠は省略している）消費区間４０６では、ロット１３０は処理のためにプロセスツール１１５に入っている（つまり「消費されている」）。次に、処理区間４０８は、消費区間４０６の後のＰＷ４０２における他の全てとなるように規定されている。あるアポイントメントの処理区間は同じセットアップ必要条件を有する別のアポイントメントの消費区間に一部重複してもよいが、消費区間のうち重複しているものはない。図４Ｃにおいて、ロットＬＯＴ１、ＬＯＴ２はプロセスツールＴＯＯＬ１上にスケジューリングされたアポイントメント４０４を持つ。ここでロットＬＯＴ２のアポイントメント４０４の消費区間４０６はロットＬＯＴ１のアポイントメント４０４の処理区間４０８と一部重複するなお、しかしながら、この種の特化された装置カレンダー３７０上であっても、異なるセットアップを必要とするロット処理アポイントメントを重複することはできない。
【００６３】
したがって、上記に述べたように、任意のカレンダー上に予約されたアポイントメントの種類は、カレンダーを管理するソフトウェアエージェント２６５が示すエンティティの本質やエージェント及びカレンダー特化の度合いにほとんど依存する。本実施形態では、図１に示したような４種類のスケジューリングエージェント、すなわちＭＳＡ、ＬＳＡ、ＲＳＡ、ＰＭＳＡがある。スケジューリングエージェントは各々、各自の予約されたアポイントメントを格納するスケジューリングカレンダー、すなわち装置カレンダー、ロットカレンダー、資源カレンダー、及びＰＭカレンダーを有する。
【００６４】
図５は、本実施形態において様々なカレンダーが管理するいろいろなタイプのアポイントメントの説明に役立つように、種々のカレンダーを概念的に示したものである。図５はまた、いくつかのカレンダー上のあるアポイントメントの種類が、どのようにして他の種類のカレンダー上の「対応する」アポイントメントと共に予約されているのかを説明するのにも役立つ。具体的には、図５は以下のことを図示している。
・ＭＳＡ５０６により保守されているプロセスツールＴ１の装置カレンダー５０１
・ＬＳＡ５０７により保守されているロットＬ１のロットカレンダー５０２
・ＲＳＡ５０８により保守されている装置資源ＲＬの資源カレンダー５０３
・ＰＭＳＡ５０９により保守されている予防的措置のメンテナンスのＰＭカレンダー５０４
また、図５は以下のことも図示している。
・ＭＳＡ５２０により管理されているプロセスツールＴ２の装置カレンダー５１１
・各々がＬＳＡ５２１〜５２６により管理されているロットＬ５〜Ｌ１Ｏに対する複数のカレンダー５１２〜５１７
・ＲＳＡ５２７により管理されている装置ロード資源Ｒ２の資源カレンダー５１８
図５に示す実施例において、図４Ａの説明とは対照的に、あるカレンダーの全アポイントメントは折り畳まれて１つの時系列になる。この折り畳みを容易にし、かつ図示を過度に乱雑なものにしないために、各アポイントメントに対する確約枠は省略されている。表１にまとめてあり図５に示されているこの実施形態に対する各種アポイントメントの説明を直後に示す。
【００６５】
ＭＳＡ（例えば、ＭＳＡ５０６、５２０）は、数多くのタイプのアポイントメントをスケジューリングし予約する。図５において、ツールＴ１に対するＭＳＡ５０６は装置カレンダー５１０上に数種のアポイントメントを予約する。これらには、セットアップアポイントメント５２９〜５３０、ロット処理アポイントメント５３２〜５３４、ＰＭ５３７、及び独立型のＱｕａｌ５３８が含まれる。ツールＴ２の装置カレンダー５１５上に示すように、ＭＳＡ５２０は装置バッチアポイントメント５５７及びダウン時間アポイントメント５５５を予約する。なお、本実施形態では、アポイントメントの中には、例えば、セットアップアポイントメント５２９〜５３０、ロット処理アポイントメント５３２〜５３４、ＰＭアポイントメント５３７、及びＱｕａｌアポイントメント５３８のように、任意のプロセスツール１１５に対してスケジューリングされるものがあってもよい。しかし、そのようにはできないものもある。例えば、バッチアポイントメント５５７をバッチ操作を行わないプロセスツール１１５上にスケジューリングすることはできない（なお、バッチカレンダー上では、ロット処理アポイントメントを直接装置カレンダー３７０上にスケジューリングすることはない。むしろ、バッチアポイントメントの中身として予約される。）。実施形態の中には、別のタイプのアポイントメントを用いるものがあってもよい。
【００６６】
ロット処理アポイントメント５３２〜５３４は、ツールＴ１をスケジューリングして実際にロットＬ１、Ｌ２、Ｌ３に対して処理を行うアポイントメントである。本開示の利益を有する当業者には理解されるように、ツールＴ１、Ｔ２は、あるロットを処理する準備として、場合によっては「セットアップ」を施さなければならない時もある。他のもの全てが同条件ならば、一般に同じセットアップを必要とするロットを連続してスケジューリングすることにより、セットアップの回数を減らすことが好ましい。このようなことは、ツールＴ１上のロットＬ１、Ｌ２の場合に当てはまり、このとき、ツールＴ１のロット処理アポイントメント５３２〜５３３は、共通のセットアップＳ１が必要なので、セットアップアポイントメント５２９の後に一緒にスケジューリングされている。こういった類の優先は、上記の入札を構築する際のスケジューリングプロセスにおいて実現する。具体的には、入札プロセスにおいてコスト因子を分配し、共通のセットアップを有するロット処理アポイントメントが一緒にスケジューリングされるように促す。しかし、図５において、ロットＬ３には新しいセットアップＳ２が必要であり、ＭＳＡ５０６はロット処理アポイントメント５３４の前に別のセットアップアポイントメント５３０を既に予約している。図示しないが、セットアップアポイントメントは、バッチ操作が行われるツール（例えば、ツールＴ２）と同じ方法でスケジューリングされる。
【００６７】
バッチアポイントメント５５７は、その名が示すように、ロット１３０からなるバッチを処理するためのプロセスツール１１５（例えば、Ｔ２）上のアポイントメントである。各ロット１３０（例えば、Ｌ５〜Ｌ１Ｏ）をバッチの「参加者」とみなし、バッチアポイントメントは実際には複数の「参加者」アポイントメントからなる。参加者アポイントメントは、実際には、バッチの構成を説明するロット処理アポイントメントにすぎない。本実施形態では、ロットアポイントメント５７４〜５７９はバッチアポイントメント５７４に相当するものとなる「参加者アポイントメント」である。個々の参加者アポイントメントを加えたり、取り除いたり、キャンセルしたり、かつ／またははじきだしたりすることによって、ロット１３０をバッチに追加したり取り出したりしてもよい。バッチをプロセスツール１１５へロードする行う必要がある場合、ＲＳＡ５２７は以下に十分に述べる方法でロードアポイントメント５６７〜５６９及びアンロードアポイントメント５９３〜５９４をスケジューリングする。
【００６８】
表１にまとめたように、ロットＬ１、Ｌ５〜Ｌ１Ｏに対するＬＳＡ５０７、５２１〜５２６は、通例６種類のアポイントメント、つまり、移動アポイントメント５４０〜５４２、ロットアポイントメント５４６〜５４８、５７４〜５７９、最大移動アポイントメント５５３、フィーダーアポイントメント５５２、ロードアポイントメント５６０〜５６５（例えば、ＬＤ１、ＬＤ２、ＬＤ３）、及びアンロードアポイントメント５８３〜５８８（例えば、ＵＬ１、ＵＬ２、ＵＬ３）をロットカレンダー５０２、５１２〜５１７に予約する。移動アポイントメント５４０〜５４２及びロットアポイントメント５４６〜５４８、５７４〜５７９は、確実にスケジューリングを行うために用いられるパラメータ全てが既知の場合にスケジューリングされる。最大移動アポイントメント５５３及びフィーダーアポイントメント５５２は、十分な確実性が確保されるまで、つまり、発信元及び発信先のプロセスツール１１５が既知であり、移動継続時間の決定が可能であり、移動アポイントメント５４０〜５４２及びロットアポイントメント５４６〜５４８、５７４〜５７９等の移動及びロットの両アポイントメントによって置換が可能になるまで、「場所を保持するもの」としてカレンダー上にスケジューリングされる。具体的には、この置換は、ロット１３０（例えば、ロットＬ１）が最終のフィーダー操作を移動し、かつ装置が選択されるのをＬＳＡ（例えば、ＬＳＡ５０７）が検出すると起こる。よって、フィーダーアポイントメント５５２及び最大移動アポイントメント５５３は、特定のプロセスツール１１５に対する早期介入操作のうちのいくつかをスケジューリングする前に、あらかじめ制御操作やいくつかの操作をスケジューリングする状況において有用である。
【００６９】
具体的には、ロットアポイントメント５４６〜５４８、５７４〜５７９は各々のロットＬ１、Ｌ５〜Ｌ１Ｏを特定のプロセスツールＴ１、Ｔ２、Ｔ３、Ｔ４、Ｔ５で処理するためのアポイントメントである。本開示の利益を有する当業者には理解されるように、ロットプロセスにおいて定義される連続操作で処理されるためには、ロット１３０を通常プロセスツール１１５からプロセスツール１１５へと移動させる。例えば、図１は、左側にある第１のプロセスツール１１５または発信元の位置から、右側にある第２のプロセスツールまたは発信先の位置へと移動させるロット１３０を図示している。このような移動は一般にロットアポイントメントをスケジューリングしたときにスケジューリングされる。通常は、２種類の移動、ベイ間の移動とベイ内の移動がある。ベイ間の移動は、ロット１３０を製造設備のベイ（図示せず）間で搬送する。ベイ内の移動は、ロット１３０を同一ベイ内の様々な位置へ搬送する。だから、ロット１３０のあるプロセスツール１１５から違うベイにある別のプロセスツール１１５への移動の典型的なものには、３つの移動が含まれている。３つの移動とは、第１のプロセスツール１１５のポートから当該ツールのあるベイのストッカー（図示せず）へのベイ内の移動、そのストッカーから第２のプロセスツール１１５と同一ベイにある別のストッカー（これも図示せず）へのベイ間の移動、そして、そのストッカーから第２のプロセスツール１１５のポートへの最終的なベイ内の移動である。
【００７０】
しかし、部分的にしか自動化されていないファブでは、ソフトウェアエージェント２６５によってプロセス操作の一部分しかスケジューリング及び制御されていないこともある。これにより、ファブ内のプロセスツール１１５のあるサブセットしかソフトウェアエージェント２６５の制御下にはなく、ファブが完全にシステムの支配下にあるわけではない。ソフトウェアエージェント２６５により制御されたプロセス操作は「制御プロセス操作」と呼ばれている。各制御プロセス操作の直前には、制御されているプロセス操作のプロセス時間の構築可能な倍数から、「フィーダー」操作のシーケンスが生成されている。フィーダーアポイントメント５５２等のフィーダーアポイントメントは、アポイントメント、例えば、先にスケジューリングされているロットアポイントメント５４８のＴＳＴを決定する際に用いられる。より詳細には、フィーダーアポイントメントは、ＬＳＡが先にスケジューリング中で実際のプロセスツール１１５を用いたフィーダー操作をスケジューリングする時間にはなっていない時に用いられる。フィーダーアポイントメントは、継続時間が各フィーダー操作のサイクル時間に等しい、フィーダー操作に対する処理作業を表すのに用いられる。
【００７１】
しかしながら、フィーダー操作にとって、最終的なフィーダー操作を行う特定のプロセスツール１１５は、ロット１３０が最終的なフィーダー操作の処理を開始するまではわからない。最大移動アポイントメント５５３などの「最大移動」アポイントメントは、最後のフィーダープロセスツール１１５から制御されているプロセスツール１１５への搬送作業を表す。本実施形態では、最大移動アポイントメントの継続時間は、最後のフィーダープロセスツールステーション１０５と制御されたプロセスツールステーション１０５との間の最悪の場合の搬送時間により生成される。最後のフィーダー操作を実際に行うプロセスツール１１５がわかると、フィーダープロセスツールと制御されたプロセスツールとの間の最大移動アポイントメントは移動アポイントメントもしくは移動アポイントメントのシーケンスによって置換される。
【００７２】
ただし、フィーダーアポイントメント及び最大移動アポイントメントは、スケジューリングプロセスに関する暗黙的あるいは内在的（implicit）ではなく明示的あるいは外在的（explicit）な制約を表している。明示的な制約は、他のアポイントメントのスケジューリング及び予約に直接影響するカレンダー上にアポイントメントとして表される。明示的な制約の例としては、移動、ロード、アンロード、最大移動、及びフィーダーアポイントメントがあるが、これらに限定されるわけではない。これらのアポイントメントはロットカレンダー上におけるロットアポイントメントのスケジューリングを明示的に制限する。暗黙的制限はカレンダー上のアポイントメントとしてではなく、むしろ影響を受けるアポイントメントの属性として表される。例えば、装置カレンダー上のロット処理アポイントメントは、ロード、搬送、及びアンロードの制限を表す属性を有する。なぜなら、これらの制限は装置カレンダーのアポイントメントによっては表されていないからである。同様に、上述したＵＳＴやＲＵＴのような排出継続時間もまた暗黙的制限である。ＵＳＴやＲＵＴのように、排出継続時間は厳格な制限ではないので、動的ＥＳＴには影響しないが、シフトを行うことを制限する。なぜなら、次のバッチアポイントメントに関連するロードやアンロードは排出と重複することはできないからである。
【００７３】
いくつかのプロセス操作にとっては、プロセスツール１１５（例えば、ツールＴ２）にはロット１３０をロード及びアンロードすることが必要である場合がある。これらの操作に対し、ＬＳＡ（例えば、ＬＳＡ５２１〜５２６）はロットロードアポイントメント及びロットアンロードアポイントメント（例えば、ロードアポイントメント５６０〜５６５及びアンロードアポイントメント５８３〜５８８）を自身のカレンダー（例えば、ロットカレンダー５１２〜５１７）に予約する。これらのロード及びアンロードアポイントメントは、ＲＳＡ（例えば、ＲＳＡ５２７）によって自身のカレンダー（例えば、資源カレンダー５１８）上にスケジューリングされたロードアポイントメント及びアンロードアポイントメント（例えば、ロードアポイントメント５６７〜５６９及びアンロードアポイントメント５９２−５９４）に適合する。図５では、ツールＴ２はロードを行う必要があり、資源Ｒ２がツールＴ２上のロットＬ５〜Ｌ１０を後に十分に説明する方法でロードする。したがって、資源Ｒ２の資源カレンダー５１８に対するＲＳＡ５２７は、ツールＴ２上のロットＬ５〜Ｌ１０をロードするように資源Ｒ２をスケジューリングするロードアポイントメント５６７〜５６９及びアンロードアポイントメント５９２〜５９４を含む。なお、ロットカレンダー５１２〜５１７の各々は、資源カレンダー５１８上のロードアポイントメント５６７〜５６９及びアンロードアポイントメント５９２〜５９４に相当するロードアポイントメント５６０〜５６５及びアンロードアポイントメント５８３〜５８８を含む。さらに、ツールＴ２に対する装置カレンダー５１１はロードアポイントメント及びアンロードアポイントメントを全く含まないが、ロット処理アポイントメントはこれらの暗黙的制約を表す属性を有する。
【００７４】
ＰＭＳＡ５０９は、カレンダー５３０上に２種類のアポイントメント、すなわち、ＰＭアポイントメント５５２等のＰＭアポイントメントとＱｕａｌアポイントメント５５３等の独立型のＱｕａｌを予約する。ＰＭＳＡ５０９はＰＭ及びＱｕａｌを、便宜的に、しかしスケジューリングの際に課される既知の制約に従って行う。カレンダー５３０はツールＴ１に対してスケジューリングされる１つのＰＭアポイントメント５５２及び１つのＱｕａｌアポイントメント５５３しか示さない。ただし、装置カレンダーは、自身に予約された相当するＰＭ及びＱｕａｌアポイントメント５３７〜５３８を含む。本開示の利益を有する当業者には理解されるように、複数のＰＭ及びＱｕａｌをツールで行ってもよく、よって、実際の実施形態における装置カレンダー５０１及びＰＭカレンダー５９３は、１つのツールに対して複数のＰＭ及びＱｕａｌアポイントメントを含んでいてもよい。プロセスツール１１５をプロセスフロー３００に再導入する前に、１つ以上のフォローアップＱｕａｌが後に続く数個のＰＭが必要される。このような状況では、フォローアップＱｕａｌはＰＭアポイントメント内に自動的にスケジューリングされる。
【００７５】
ＲＳＡ（例えば、ＲＳＡ５０８、５２７）は、本実施形態では、ＲＳＡが表す資源の種類によって特化されている。２種類の資源、すなわち共用資源と専用資源が存在する。共用資源は、図３に示すレチクル３２０のような複数のプロセスツール１１５によって共用されてもよい資源である。装置ローダー（図示せず）のような専用資源は、１つのプロセスツール１１５と共に動作する。しかし、この種の資源カレンダーの特化は、上述の特化されたエージェントが使用することができる、１つの有益な変形である。
【００７６】
あるＲＳＡにより予約されるアポイントメントの種類は、ＲＳＡが表す資源の種類に依存する。図５に示す資源Ｒ１に対する共用ＲＳＡ５０８は、少なくとも２種類のアポイントメント、すなわち、資源消費アポイントメント５５０等の資源消費アポイントメント及び移動アポイントメント５４３、５４４等の移動アポイントメントを自身の資源カレンダー５０３に予約する。資源Ｒ１は数個のプロセスツール１１５（例えば、Ｔ１）によって共用されるので、各プロセスツール１１５の間で移動される必要がある。したがって、移動アポイントメント５４３、５４４が必要になる。なお、この移動そのものはさらに別の資源（図示せず）によって行われてもよく、また、プロセスツールで使用しない時には、レチクル等の共用資源をレチクルストッカーのような格納位置に移動してもよい。専用ＲＳＡ５２７は、その専用プロセスツール１１５（例えば、Ｔ２）のみに関連するアポイントメントをスケジューリングする。本実施形態では、専用ＲＳＡ５２７は炉（図示せず）用の装置ロード資源（これも図示せず）を表す。専用ＲＳＡ５２７は、カレンダー５４０上に４種類のアポイントメント、すなわち、ロードアポイントメント５６７〜５７２、投入アポイントメント５７２、排出アポイントメント５８１、及びアンロードアポイントメント５９２〜５９４を予約する。ロードアポイントメント５６７〜５７２、投入アポイントメント５７２、排出アポイントメント５８１、及びアンロードアポイントメント５９２〜５９４は実施例固有のものであり、詳細はすぐ後に説明する。
【００７７】
本開示の利益を有する当業者には理解されるように、プロセスツール１１（例えば、Ｔ２）の中には、複数のロット１３０をバッチで同時に処理するロットバッチプロセス操作を行うものもある。これらのプロセスツール１１５の中には、ロード、投入、排出、及びアンロードの各ステップを用いるものもある。図５に示す本実施形態では、ツールＴ２はまず、バッチの構成要素、つまりロット１３０の全てを、ツールのＩ／Ｏポート（図示せず）からツール内部のストッカー（これも図示せず）へロードする。通常では、この種のプロセスツール１１５は複数のＩ／Ｏポートを有するので、ロード／アンロードの操作はバッチで行われる。例えば、ツールＴ２には２個のＩ／０ポートがあり、バッチプロセス操作によって最大で６個のロットを１つのバッチにすることができる場合、６個のロット１３０をツールＴ２の内部ストッカーにロードするためには３回のロード操作が必要になる。バッチを構成するロットを全てロードした後、ツールＴ２はバッチ投入操作を行って、処理が実際に開始される前にバッチを構成するロットを内部ストッカーから炉のチューブ（図示せず）へと移動させる。ツールＴ２は、バッチプロセス操作を完了させると、バッチを構成するロットをチューブから排出して内部ストッカーに戻す。最後に、ロット１３０をツールのＩ／Ｏポートへ移動する準備が整うと、バッチアンロード操作のシーケンスを行う。
【００７８】
ツール内部の搬送メカニズムの制約のために、アポイントメントはこの種の資源スケジューリングカレンダー上で重複することができない。このようなロード、投入、排出、及びアンロード作業は互いに独立した方法で行われている。つまり、これらが同時に発生することは、同一の資源を使用しているので不可能である。よって、ロードによって、ロット１３０が装置ポートから装置の内部ストッカーへ移動する。投入によって、ウェハ135が内部ストッカーから加熱（処理）用の炉のチューブへ移動する。排出によって、ウェハ135が(冷却後の)炉のチューブから取り出され、内部ストッカーに戻される。アンロードによって、ロット１３０が内部ストッカーから装置のポートへ移動する。
【００７９】
なお、ＲＳＡ５２７は実際の処理、つまりバッチアポイントメント５５７により装置カレンダー５１１上に表される実際の処理とは関係していない。しかし、資源カレンダー５１８上の投入アポイントメント５７２及び排出アポイントメント５８１と装置カレンダー５１１上のバッチアポイントメント５５７には関係がある。具体的には、処理がはじまると投入が開始され、処理が終わると排出が完了する。投入や排出は通常約１５分かかるが、一方処理には通常４、５時間かかる。装置カレンダー５１１上では、バッチを、（投入開始前に）開始コマンドが発行された時間から炉が排出を完了するまでの「処理」とみなす。なお、ロード、投入、排出、もしくはアンロードは全てＲＳＡ５２７により資源カレンダー５１８上で追跡されているので、ＭＳＡ５２０はこれらの動作には関係していない。装置カレンダー５１１は、「処理中」を表すバッチアポイントメント５５７を含み、これはツールＴ２で「処理中」が可能な他のバッチがない時間である。
【００８０】
既に説明したように、装置カレンダー５１１上では、バッチアポイントメントは実際にはそれぞれロット処理アポイントメントであるアポイントメント構成要素をバッチ内の各ロット１３０に対して１つ含む。とりわけ、ロード及びアンロードの各作業は、互いに、または投入や排出と競合しない限り、「処理」と並行して実施可能である。他のバッチが「処理中」にロットのロードあるいはアンロードを行うのは、炉のスループットを上げるためのテクニシャンである。
【００８１】
このような特別なタイプの炉において、ロットＬ５〜Ｌ１０を一度に２つロードするのは、それがロット１３０をロードまたはアンロードできる装置のＩ／Ｏポートの数だからである。しかし、炉はロット１３０を６つまで処理可能なので、バッチ内のロット１３０の数が３つ以上の場合には、ロット１３０を２つのロット１３０からなるサブバッチにロードする。これにより、ロットＬ５、Ｌ６は資源カレンダー５１８上のロードアポイントメント５６７中に、ロットＬ７、Ｌ８はロードアポイントメント５６８中に、ロットＬ９、Ｌ１０はロードアポイントメント５６９中にロードされる。なお、資源カレンダー５１８上のロードアポイントメント５６７〜５６９はロットカレンダー５１２〜５１７上に相当するアポイントメントを有する。より詳細には、各ロードアポイントメント５６７〜５６９は２つのロットを含むので、ロードアポイントメントはそれぞれ相当するアポイントメントを２つ有する。よって、ロードアポイントメント５６７はロットカレンダー５１２、５１３上に相当するアポイントメント５６０、５６１を、ロードアポイントメント５６８はロットカレンダー５１４、５１５上に相当するアポイントメント５６２、５６３を、そしてロードアポイントメント５６９はロットカレンダー５１６、５１７上に相当するアポイントメント５６４、５６５を有する。だから、ロット１３０が６つあるバッチ（例えば、ロットＬ５〜Ｌ１０）は、資源カレンダー（例えば、資源カレンダー５１８）上に３つのサブバッチロードアポイントメント（例えば、ロードアポイントメント５６７〜５６９）を有することが可能である。また、本実施形態では、各ロードアポイントメント５６７〜５６９は、実際には、ロードされるバッチ構成ロットごとに資源ロットロードアポイントメントを含むバッチロードアポイントメントである。
【００８２】
この特別な炉に対しては、全ロット１３０（最大６つ）同時に投入が行われる。投入アポイントメント５７２は投入するバッチを表し、これは実際にはバッチ内の構成ロット（例えば、ロットＬ５〜Ｌ１０）に対する構成ロット投入アポイントメント（図示せず）からなる。よって、各炉の処理の実行に対して、構成ロット投入アポイントメントを６つまで有する１つの投入アポイントメント５７２が存在することになる。全ロット１３０同時に排出も行われる。排出アポイントメント５８１は排出するバッチを表し、実際にはバッチ内の構成ロット（例えば、ロットＬ５〜Ｌ１０）に対する構成ロット排出アポイントメント（図示せず）からなる。各炉の処理の実行に対して、構成ロット排出アポイントメントを６つまで有する１つの排出アポイントメント５８１が存在することになる。しかし、既に説明したように、個々のロット１３０（例えば、ロットＬ５〜Ｌ１０）は投入及び排出には関係しない。これらのステップはプロセスツール（例えば、ツールＴ２）内部のものだからである。よって、投入アポイントメント５７２及び排出アポイントメント５８１にはロットカレンダー５１２〜５１７上に相当するアポイントメントはない。代わりに、ロットＬ５〜Ｌ１０はロットアポイントメント５７４〜５７９に投入及び排出する時間を含んでいる。
【００８３】
アンロードはロードを逆に行う。ロード同様、一度に多くても２つのロット１３０からなるサブバッチでアンロードを行う。だから、ロット１３０を６つ有するバッチ（例えば、ロットＬ５〜Ｌ１０）は、資源カレンダー（例えば、資源カレンダー５１８）上に３つのサブバッチアンロードアポイントメント（例えば、アンロードアポイントメント５９２〜５９４）を有することが可能である。また、アンロードアポイントメント５９２〜５９４はそれぞれ、ロットスケジューリングカレンダー５１２〜５１７上に、相当するアポイントメントを２つ、サブバッチのアンロードを構成するロットごとに１つずつ有する。アンロードアポイントメント５９２はロットカレンダー５１６、５１７上に相当するアンロードアポイントメント５８８、５８７を、アンロードアポイントメント５９３はロットカレンダー５１４、５１５上に相当するアンロードアポイントメント５８５、５８６を、アンロードアポイントメント５９４はロットカレンダー５１２、５１３上に相当するアンロードアポイントメント５８３、５８４を有する。なお、アンロードのシーケンスはロードのシーケンスとは無関係である。ロードシーケンスは主にロット１３０の到着時間（ＥＳＴ）に依存し、一方アンロードシーケンスはロット１３０の優先度もしくは次のアポイントメントの時間に依存している場合がある。これにより、本実施例ではアンロードをロードの逆の順序で行っているが、これは必要なことではない。また、本実施形態では、各アンロードアポイントメント５９２〜５９４は、実際には、アンロードされている各構成ロットに対する資源ロットアンロードアポイントメントを含むバッチアンロードアポイントメントである。
【００８４】
図５において、ＭＳＡ５０６、５２０、ＬＳＡ５０７、５２１〜５２６、ＲＳＡ５０８、５２７、及びＰＭＳＡ５０９の相互作用の結果は、種々のカレンダーを比較することによってわかる。ロット処理アポイントメントＬ１は、装置カレンダー５０１上に［Ｔ１，Ｔ２］の期間、レチクルカレンダー５４０上、及びロットカレンダー５２０上に同期間のＴ１としてスケジューリングされている。しかし、このアポイントメントをスケジューリングする際に、ＭＳＡ５０６はセットアップＳ１を、ＬＳＡ５０７は移動Ｍ１を考慮する。同様に、ＰＭは装置カレンダー５０１上にツールＴ１に対して、予防的措置のメンテナンスカレンダー５０４上に期間［ｔ４，ｔ６］でスケジューリングされており、Ｑｕａｌは装置カレンダー５０１及びＰＭカレンダー５０４上に期間［ｔ６，ｔ８］でスケジューリングされている。ロード、投入、排出、及びアンロード工程が必要なバッチプロセス操作に対しては、ロットロードアポイントメント及びロットアンロードアポイントメントは、ロットカレンダー５１２〜５１７上にスケジューリングされており、ロットカレンダー上のものと同じ時間間隔を持つバッチロードアポイントメント及びバッチアンロードアポイントメントは、ロード資源カレンダー５１８上にスケジューリングされている。バッチロット処理アポイントメントは装置カレンダー５１１上に［ｔ６，ｔ８］の期間スケジューリングされており、期間［ｔ６，ｔ６１］に対するバッチ投入アポイントメント及び期間［ｔ７，ｔ８］に対するバッチ排出アポイントメントはロード資源カレンダー５１８上にスケジューリングされている。
【００８５】
このように、図３に関して説明したようにスケジューリングされたアポイントメントが、各スケジューリングエージェント、例えば、スケジューリングエージェント３０５、３１０、３１５によって保守されたカレンダー３４５、３７０、３８５等のカレンダーに予約される。しかし、上記のスケジューリングの説明から明らかなように、予約されたアポイントメントは新たなアポイントメントのスケジューリングに対応する変更によって変わってしまう。予約されたアポイントメントのシフト、はじき出し、縮小、拡大、中止、キャンセル、及び再スケジューリングを行ってもよい。これらの変更を、状況によって、消費者、供給者、もしくは二次資源によって起動してもよい。
【００８６】
例えば、予約されたアポイントメントをシフトしてもよい。上述のように、ほとんどのアポイントメントは確約枠を有する。アポイントメントは「ひも上のビーズ」として見られる。既存のアポイントメントは、必要な分だけそれぞれの確約枠内で後方または前方へスライドすることが可能で、それにより、スケジューリングエージェントがより効率的なスケジュールを作成して予期せぬイベントに対処する自由度のあるカレンダーを得ることができる。本実施形態では、ロジックを簡単にするため、アポイントメントが次のアポイントメントをいずれの方向においても過去にシフトさせることはできない。
【００８７】
例えば、図６に概念的に示すカレンダーを考える。このカレンダーは、３つのロットＬＯＴ１〜ＬＯＴ３に対して予約された３つのアポイントメントＡＰＰ１〜ＡＰＰ３を有する。ただし、各アポイントメントＡＰＰ１〜ＡＰＰ３はそれぞれ、対応する確約枠ＣＷ１〜ＣＷ３内で予約されている。このスケジュールを保守する対象となる供給者がＬＯＴ４に対してＡＰＰ４のスケジューリングを希望していると仮定する。提案されたアポイントメントタイムスロット［ＴＳ４，ＴＥ４］は、予約されたアポイントメントＡＰＰ２に対してスケジューリングされたアポイントメント時間［ＴＳ２，ＴＥ２］と競合する。しかし、アポイントメントＡＰＰ２には、確約枠ＣＷ２内に、アポイントメントＡＰＰ４をさらにスケジューリングできるようにシフトするため十分な余裕がある。この例では、アポイントメントＡＰＰ４のスケジューリング及び予約が可能なように、アポイントメントＡＰＰ２を確約枠ＣＷ２内で右に、つまり時間を遅らせてシフトさせる。
【００８８】
実施例に依拠して、この種のシフトに対する種々の手法が採られてもよい。例えば、
・予約されたアポイントメントがスケジュールギャップや左にシフトが可能な他のアポイントメントに先行されており、そのアポイントメントをより早い開始時間ＴＳにシフトすることにより候補となっているアポイントメントがシフトで出来たオープンなタイムスロットにスケジューリングできるようになる場合、予約されたアポイントメントはより早い開始時間ＴＳにシフトするとみなされてもよい。
・予約されたアポイントメントをより遅い開始時間ＴＳにシフトした後予約されたアポイントメントや候補となっているアポイントメントによってギャップが削除される直前に、スケジュールにギャップがないか使用不可の（つまり、候補となっているアポイントメントが適合しないであろう）ギャップがある場合、予約されたアポイントメントはより遅い開始時間ＴＳにシフトするとみなされてもよい。
・スケジュールギャップがセットアップに先行する場合、セットアップをより早い開始時間にシフトして、同じセットアップを用いる予約されたアポイントメントの直前に（同じセットアップと共に）新たなアポイントメントを追加できるようにしてもよい。
・セットアップを同じセットアップが必要な予約されたアポイントメントのすぐ後に続くより早い開始時間にシフトする場合、セットアップを削除することができる。
・セットアップを同種のセットアップの隣にシフトする場合、セットアップを削除することができる。
【００８９】
このシフトもまた、１つの予約されたアポイントメントを単にシフトするよりも複雑である可能性がある。このような状況の一例を図７に示す。ここでは、いくつかの予約されたアポイントメントを「カスケード」な手法でシフトすることにより、新たなアポイントメントＡＰＰ５のスケジューリングに対応する。図７において、新たなアポイントメントＡＰＰ５は、アポイントメントＡＰＰ１が既に予約されている時間へのスケジューリングを希望している。この場合、予約された全アポイントメントＡＰＰ１〜ＡＰＰ４の確約枠は、「カスケード」な手法で左（より早い時間）へシフトして新たなアポイントメントＡＰＰ５のタイムスロットに割り当てるための十分な余裕がある。「カスケーディングな左シフト」のシーケンスと「カスケーディングな右シフト」の移動を組み合わせて構成するより複雑で強力なシフトルーチンを用いて、新たなアポイントメントに対するタイムスロットをカレンダー上で開くことができる。
【００９０】
プロセスウィンドウ及び確約枠に加えて、各アポイントメントはアポイントメントの本質に依存する他の属性を有していてもよい。例えば、移動アポイントメントは、移動の発信元と発信先を表すソース位置とターゲット位置という属性を有している。ロット処理アポイントメントは、アポイントメント動的なより早い開始時間を計算するのに使用される搬送開始時間と残り搬送時間という属性を有している。ロード操作がプロセス操作に含まれている場合、対応するロット処理アポイントメントは、ロード開始時間と残りロード時間の２つの追加属性を有する。したがって、このロット処理アポイントメントの動的ＥＳＴは、現在の時刻と静的ＥＳＴと共にこれら４つの属性から生成される。
【００９１】
アポイントメントの中にはいくつかのプロパティを共有するものもあるであろう。例えば、全アポイントメントには処理ウィンドウ及びアポイントメントＩＤがあり、全ロットアポイントメントにはロットのリファレンスがあり、全バッチアポイントメントにはバッチを構成するもの全てが記されたリストがある。本実施形態では、アポイントメントクラスを、コード保守のタスクをより早くより効率的にする階層構造で組織化している。この階層を図９Ａに示す。
【００９２】
図９Ｂは、本実施形態においてアポイントメントが存在しうるステータスのブロック図９００である。任意の時間に、各アポイントメントは、仮のステータス（９０５）、準備未完了ステータス（９１０）、準備完了ステータス（９１５）、使用可能ステータス（９２０）、処理中ステータス（９２５）、完了間近ステータス（９３０）、完了ステータス（９３５）、もしくは中止ステータス（９４０）を有するであろう。ただし、本実施形態では、ＰＭ及びＱｕａｌもまた、ＰＭ／Ｑｕａｌ使用可能ステータス（９４５）またはＰＭ／Ｑｕａｌ処理中ステータス（９５０）状態であってもよい。カレンダーを保守するスケジューリングエージェントは、特定のイベントが発生した時のアポイントメントを変更する担当となっている。
【００９３】
例えば、ロット処理アポイントメントを初めに生成すると、「仮の」ステータスが割り当てられる。アポイントメントがプロセスツールカレンダー上に予約された時には、ＭＳＡがそのアポイントメントステータスを「仮の」（９０５）から「準備未完了」（９１０）に変更する。ロット１３０がプロセスツール１１５のＩ／Ｏポート（図示せず）に到着すると、ＭＳＡはそのアポイントメントステータスを「準備完了」（９１５）に変更する。アポイントメントの開始時間になると、ＭＳＡはアポイントメントステータスを「使用可能」（９２０）に変更する。プロセスツール１１５でロット１３０の処理が実際に開始されたことを示すメッセージをプロセスツール１１５の装置インターフェースから受け取った後、ＭＳＡはアポイントメントステータスを「処理中」（９２５）に変更する。プロセスツール１１５の種類に依存して、ＭＳＡはアポイントメントステータスを「処理中」（９２５）から「完了間近」（９３０）に変更してもよい。通常、この変更は、ＭＳＡがプロセスツール１１５が規定された処理段階に達したことを示す他のメッセージを装置インターフェースから受け取った場合になされる。例えば、処理時間の８０％が過ぎると、アポイントメントが「完了間近」であることを示してもよい。ロット１３０がプロセスツール１１５での処理を完了または中止すると、ＭＳＡアポイントメントステータスをそれぞれ「完了」（９３５）もしくは「中止」（９４０）に変更する。
【００９４】
アポイントメントステータスを用いることにより、スケジューリングエージェントが特定のイベントに対してどの種類の返答を行うべきかを判定するのに役立つ。例えば、ＭＳＡがプロセスツール１１５が現在ダウンしていることを示す装置ダウンイベント（図示せず）を受け取り、かつ「使用可能」（９２０）もしくは「処理中」（９２５）ステータスの現在のアポイントメントがある場合、ＭＳＡはあるアクションを採らなければならない。本実施形態において、ＭＳＡはまずそのアポイントメントを、アポイントメントの終了時間を装置ダウンイベントを受け取る時間に設定するようにして縮小する。次に、ＭＳＡはアポイントメントステータスを「中止」（９４０）に変更し、中止されたアポイントメント以降のダウンしたプロセスツール１１５に対するアポイントメントを全てキャンセルするので、ダウン時間アポイントメントを予約することができる。しかしながら、ＭＳＡが装置ダウンイベントを受け取ったときに現在のアポイントメントのうち「使用可能」（９２０）または「処理中」（９２５）ステータスのものがない場合には、ＭＳＡはカレンダー上にある今後のアポイントメントを全てキャンセルしてダウン時間アポイントメントを予約する。
【００９５】
アポイントメントの望ましくないシフトを防ぐために、本実施形態はロッキングメカニズムを採用する。一般に、ロット１３０がソース位置からプロセスツール１１５の装置ポートへの最終の移動を開始する際に、新たなアポイントメントをキャンセルするか右に、すなわち時間的に後にシフトすることによりそのアポイントメントを自身より前にジャンプさせることは望ましくない。このようなことが発生するのを防止するために、ＬＳＡ３０５がＭＳＡ３１０に装置ポートを確保しておくように要請すると、ＭＳＡ３１０はロット１３０が最終の移動を開始したときにロット処理アポイントメントを「ロック」する。しかし、時には、ロックされたアポイントメントであってもシフトする必要がある。例えば、あるプロセスツール１１５に対して２つのアポイントメントがカレンダー上に予約されており、１番目のものは２番目のもののために対してロット１３０がプロセスツール１１５のポートに移動しているときに処理中であると仮定する。２番目のアポイントメントは、プロセスツール１１５への「最終の」移動中であるためにロックされている。１番目のアポイントメントが長時間実行されて拡大することになる場合、２番目のアポイントメントをまずシフトして１番目が拡大できるようにする。これにより、ロックされた２番目のアポイントメントは一般には望ましくなくてもシフトされる。これらの場合には、特にロックされたアポイントメントを扱うために設計された特別カレンダーシフトルーチンが用いられる。ロックされたアポイントメントのシフトは状況に依存したエージェントの判断次第で行われる。上記に示した状況では、ロックされた２番目のアポイントメントは、より早い開始時間を有するいずれの場所へも再スケジューリングはほぼ不可能である。
【００９６】
これまでの説明から明らかなように、アポイントメントの中には、他のカレンダー上の「相当する」アポイントメントと共にスケジューリングされるものもある。「相当する」アポイントメントとは、同一の作業を促進させるために異なるカレンダーに予約されたアポイントメントである。例えば、図３におけるアポイントメント３７５ａ、３７５ｂ、３７５ｃはプロセスツール１１５においてロット１３０を処理するための「相当する」アポイントメントである。例えば、
・ロットスケジューリングカレンダーと装置スケジューリングカレンダー上にはそれぞれ、ロットアポイントメント及び相当するロット処理アポイントメントが現れる。
・スケジューリングカレンダー及び装置スケジューリングカレンダー上にはそれぞれ、ＰＭアポイントメント及び相当する装置ＰＭアポイントメントが現れる。
・プロセス操作用のプロセスツールにロード操作が必要な場合、ロットスケジューリングカレンダー及びロード資源スケジューリングカレンダー上にはそれぞれ、ロットロードアポイントメント及び相当する資源ロードアポイントメントが現れる。
これらの相当するアポイントメントは「同期している」、つまり、あるアポイントメントの変更は、他のアポイントメントが同じ特徴（例えば、開始時間、終了時間等）を有するように、他のアポイントメントの変更を引き起こす。本実施形態では、アポイントメントの変更は、アポイントメントステータスの変更、アポイントメントの処理ウィンドウの変更、アポイントメントの確約枠の変更、搬送に関連する変更、ロードに関連する変更、アンロードに関連する変更、搬送位置の変更、及びバッチアポイントメントに関連する変更を含む。より詳細には、アポイントメントのステータスの変更は（図９Ｂに示すように）以下のことを含んでいてもよい。
・アポイントメントのステータスを「準備未完了」に変更すること
・アポイントメントのステータスを「準備完了」に変更すること
・アポイントメントのステータスを「使用可能」に変更すること
・アポイントメントのステータスを「ＰＭ／Ｑｕａｌ使用可能」に変更すること
・アポイントメントのステータスを「処理中」に変更すること
・アポイントメントのステータスを「ＰＭ／ＱＵＡＬ処理中」に変更すること
・アポイントメントのステータスを「完了間近」に変更すること
・アポイントメントのステータスを「完了」に変更すること
・アポイントメントのステータスを「中止」に変更すること
処理ウィンドウの変更は以下のことを含んでいてもよい。
・処理ウィンドウの開始時間をシフトすること
・処理ウィンドウの終了時間をシフトすること
・処理ウィンドウを確約枠内の左、すなわち時間が早い方へシフトすること
・処理ウィンドウを確約枠内の右、すなわち時間が遅い方へシフトすること
・処理ウィンドウの継続時間を設定すること
・処理ウィンドウの消費区間を縮小すること
・処理ウィンドウの処理区間を縮小すること
・処理ウィンドウの消費区間を拡大すること
・処理ウィンドウの処理区間を拡大すること
確約枠の変更は以下のことを含んでいてもよい。
・確約枠の継続時間をアップデートすること
・確約枠の開始時間をアップデートすること
・確約枠の終了時間をアップデートすること
搬送に関連する変更は以下のことを含んでいてもよい。
・残りの搬送時間を設定すること
・搬送開始時間を設定すること
・搬送開始時間及び残りの搬送時間の両方を設定すること
ロードに関連する変更は以下のことを含んでいてもよい。
・残りのロード時間を設定すること
・ロード開始時間を設定すること
・残りのロード時間及びロード開始時間の両方を設定すること
アンロードに関連する変更は以下のことを含んでいてもよい。
・残りのアンロード時間を設定すること
・アンロード開始時間を設定すること
・残りのアンロード時間及びアンロード開始時間の両方を設定すること
搬送位置に関連する変更は以下のことを含んでいてもよい。
・ソース位置を設定すること
・ターゲット位置を設定すること
バッチアポイントメントに関連する変更は以下のことを含んでいてもよい。
・バッチを構成するものをバッチからキャンセルすること
・バッチを構成するものをバッチに加えること
・バッチを構成するものをバッチから取り出すこと
・バッチアポイントメントに対する確約枠を変更すること
・バッチの識別表示番号を設定すること
・バッチ必要条件を設定すること
・バッチを構成するもののアポイントメントをシフトしてバッチに加えること
ただし、全ての種類の変更がアポイントメント全種類に適用可能なわけではない。
【００９７】
相当するアポイントメントを同期させ続けるために、本実施形態では、図１１においてより十分に説明するアポイントメント変更通知メカニズムが用いられている。図１１はこのメカニズムを、図３のＬＳＡ３０５、ロットカレンダー３８５、ＭＳＡ３１０及び装置カレンダー３７０を参照に示す。なお、しかしながら、図１１に示すメカニズムは、プロセスフロー１００内のいかなるカレンダーのセットや相当するアポイントメントにも適用することができる。
【００９８】
各カレンダー３８５、３７０はそれぞれ、変更をカレンダーのアポイントメントに発行する変更通知者１１０５、１１１０を有する。相当するアポイントメントの各々は、供給者側と消費者のどちらにおいても、アポイントメントが予約されているそれぞれのカレンダー３８５、３７０に対する変更通知者１１０５、１１１０へのリファレンスと共に作成される。この相当するアポイントメントを保守するスケジューリングエージェント３０５、３１０は各々、「変更聴取者」１１１５、１１２０を有する。この変更聴取者１１１５、１１２０は、変更通知者１１０５、１１１０は発行し、相手側の相当するアポイントメントに属するアポイントメントの変更を受信している。図１１において、アポイントメントの変更聴取者１１１５、１１２０はそれぞれ、ロットアポイントメントＴＯＯＬ１とロット処理アポイントメントＬＯＴ１に（それぞれ１１２２、１１２４で）受信聴取者として登録している。
【００９９】
変更聴取者１１１５、１１２０が相手側から相当するアポイントメントについての変更イベントを受け取ると、それをきっかけに対応するスケジューリングエージェント３０５、３１０が相当するアポイントメントを探しだし、可能であれば供給者側と消費者側のアポイントメントが常に同期が取れているように、適切な調整をアポイントメントに行う。しかし、アポイントメントの変更を受け取るスケジューリングエージェント３０５、３１０は、別々の対処が必要であってもよい。そのような場合、エージェントは異なる変更をアポイントメントに行い、その変更を聴取者１１１５、１１２０に発行する。
【０１００】
具体的には、供給者（例えば、図３のプロセスツール１１５）が自分のスケジューリングエージェント（例えば、ＭＳＡ３１０）を介して予約されたアポイントメント（例えば、装置カレンダー３７０上のアポイントメントＬＯＴ１）を変更すると、対応するアポイントメント変更通知者（例えば、変更通知者１１１０）に（図１１の１１３２で）通知する。供給者の変更通知者は、「アポイントメント変更イベント」を（図１１の１１３５で）それを受信する聴取者（消費者からの聴取者も含まれている）に発行する。消費者の変更聴取者（例えば、変更聴取者１１１５）がアポイントメント変更イベントを受け取ると、それをきっかけに消費者スケジューリングエージェント（例えば、ＬＳＡ３０５）が同じ変更を対応するカレンダー（例えば、ロットカレンダー３８５）上の相当するアポイントメント（例えば、ロットアポイントメントＴＯＯＬ１）に行う。本実施形態におけるアポイントメント変更イベントは、変更されたアポイントメント（例えば、アポイントメントのコピー）、アポイントメント変更前の開始時間、及びアポイントメントの変更の種類に関連した特定の方法の名前についての情報を含む。消費者の変更聴取者はスケジューリングエージェント内の適合方法の名前を呼び出し、このエージェントはこの情報を使用して相当するアポイントメントを探し出し、適切な変更を消費者側に行う。
【０１０１】
わずかに異なる変更通知メカニズムは、カレンダー記録装置やカレンダー「グラフィックユーザインターフェース」（“ＧＵＩ”）表示ツールによって用いられている。本実施形態では、各カレンダー（例えば、装置カレンダー３７０）はそれぞれ、カレンダー上のアポイントメントに発生した変更を全て記録するカレンダー記録装置（例えば、カレンダー記録装置１１４０）を有する。各カレンダー記録装置は、対応するカレンダー上の全アポイントメント（１つではなく）に対する変更を受信するアポイントメント変更聴取者（例えば、変更聴取者１１４５）を有する。カレンダー記録装置及びカレンダーＧＵＩ（例えば、カレンダーＧＵＩ１１５０）は、個々のアポイントメントに直接受信するのではなく、受信しているカレンダーの変更通知者に（例えば、１１５２で）自身の聴取者を直接登録している。これにより、カレンダー記録装置とカレンダーＧＵＩが、新たなアポイントメントの予約を含むカレンダー上の全てのアポイントメントへの変更を聴取することが可能になる。
【０１０２】
カレンダー上の１つのアポイントメントまたは１組のアポイントメントを変更すると、変更聴取者は上述のように通知される。そして、変更聴取者によって、カレンダー記録装置が相当する変更イベントを記録し、カレンダーをダンプすることが促される。カレンダー全体の履歴はこのようにしてカレンダー記録ファイルに記憶される。ＷＦＴは１組のＧＵＩ表示ツールを用いてカレンダーを閲覧する。この場合、コンピュータ画面上に表示される全てのカレンダーは独自のアポイントメント変更聴取者を有する。カレンダー記録装置の場合と同様に、この変更聴取者も表示されたカレンダー上の全アポイントメントの変更を受信する。カレンダー上で何かが変更されると、この変更聴取者はアポイントメントの変更通知者によって通知され、これにより、今度は自動的に表示されたカレンダーのリフレッシュが促される。
【０１０３】
アポイントメントを変更する共通の理由の１つは、「早期の開始」を利用することである。例えば、図３のＭＳＡ３１０がスケジュールを実行中にアイドル時間になった場合、ＭＳＡ３１０は次のアポイントメントをより早い開始時間へシフトしてすぐに開始させることを試みるであろう。この例を図８Ａに示す。ここで、現在の時刻ｔｃは次のアポイントメントＡＰＰ１の確約枠ＣＷ１の範囲内にある。そこで、次のアポイントメントＡＰＰ１を左、つまりより早い時間にシフトさせ、これによってその処理がすぐに、または恐らく、現在の開始時間よりも早く開始できる。このことはプロセスツール１１５のアイドル時間防止に役立つ。
【０１０４】
次に予約されたアポイントメントをシフトして現在の時刻に開始できない場合には、ＭＳＡ３１０は、他の実施形態の中の１つでは、現在の時刻かそれよりも早く開始する確約枠を持つ可能性のある別の任意の予約されたアポイントメントを探すであろう。これらの予約されたアポイントメントのうちの１つを移動することにより、他のどの予約されたアポイントメントもキャンセルせずにすぐに開始できる場合、その予約されたアポイントメントを「飛び越える」ようにして移動し、必要ならば他の予約されたアポイントメントをシフトする。このシナリオを図８Ｂに示す。ここで、供給者がアイドル状態である現在の時刻ｔｃは次の予約されたアポイントメントＡＰＰ１の確約枠ＣＷ１の外にあるが、３番目に予約されたアポイントメントＡＰＰ３の確約枠ＣＷ３の範囲内である。したがって、３番目のアポイントメントＡＰＰ３は左、つまりより早い時間のほうへ飛び越えて、アポイントメントＡＰＰ１、ＡＰＰ２を「カスケーディング」な方法で右、つまりより遅い時間へシフトする。
【０１０５】
なお、次に予約されたアポイントメント以外のアポイントメントは開始位置へ移動すると考えられる場合には、セットアップが考えられる。開始位置へ移動させられる予約されたアポイントメントの前及び後にセットアップを追加する必要がある場合がある。この種の移動は、追加セットアップ時間の合計が、次のアポイントメントの最速の開始時間まで続くアイドル時間より少ないかどうかを考慮するだけでよい。
【０１０６】
また、アポイントメントの継続時間、またはそれに先行するアポイントメントの継続時間が予想よりも短いか長いと、アポイントメントは頻繁に変更される。図１０Ａ及び図１０Ｂは、このような状況を２つ示している。図１０Ａにおいて、ロットスケジューリングカレンダー上の移動Ｍ３は、搬送が予定よりも長くかかったので拡大され、だから移動Ｍ４、Ｍ５及びアポイントメントＡＰＰ２を右にシフトしてこの長くなった継続時間に対応した。ただし、処理アポイントメントＡＰＰ２をシフトすることによって、対応できない場合を除いて、装置カレンダー上の対応するアポイントメント（図示せず）も全く同じようにシフトされる。この場合に、ＭＳＡ３１０はアポイントメントをシフトするのではなくキャンセルしてもよい。図１０Ｂにおいて、アポイントメントＡＰＰ３は予定より長くかかり、よって拡大してしまったので、アポイントメントＡＰＰ４、ＡＰＰ５を右にシフトする。アポイントメントＡＰＰ４、ＡＰＰ５のシフトによって、各自のロットカレンダー上の相当するアポイントメントは全く同じようにシフトされる。なお、図１０Ａ及び図１０Ｂの両方において、図示した変更は必然的に、どちらの状況でも、変更されたアポイントメントの変更に対応するには十分確約枠は広かったことを示している。そうではない場合には、アポイントメントの中にはキャンセルされなければならないものもあったであろう。
【０１０７】
直前で言及したように、予約されたアポイントメントはキャンセルされる場合もある。例えば、プロセスツール１１５がもはや予約されたアポイントメントを自身の確約枠内に保持することが出来ない場合には、ロット１３０に対するアポイントメント変更聴取者は、「キャンセル」アポイントメント変更イベントをプロセスツール１１５の変更通知者から受け取ってもよい。ＬＳＡ３０５がアポイントメントキャンセルイベントを変更聴取者を介して受け取ると、相当するロットアポイントメントを自身のロットカレンダー３８５から取り除き、プロセス操作に対して再スケジューリングする。
【０１０８】
スケジューリングされたアポイントメントをキャンセルする共通の理由の１つは「バンピング」である。プロセスツール１１５が優先度の高いロットまたは既にスケジュールから遅れているロットの新しい入札３６５を確定するのは有用である場合がある。このことは、既存のアポイントメントを必要な時間間隔をクリアするのに十分なほどシフトできない場合には、装置カレンダー３７０上の１つ以上の既存のアポイントメントのキャンセルを引き起こす場合がある。バッチプロセスツールでは、予約されたバッチアポイントメントを構成するものを、同じ理由によって、バッチの外に「バンプ」する。時には、バッチアポイントメントを強制的に右、つまり時間か遅い方へシフトして、既存のバッチを構成するもののバンピングも用いてより緊急なロットに対処してもよいこともある。
【０１０９】
プロセスツール１１５またはロット１３０がアポイントメントをキャンセルすることを要求している場合は、通常、そのアポイントメントを１つだけキャンセルする。アポイントメント変更通知メカニズムのために、プロセスツール１１５とロット１３０の両方がそのアポイントメントをそれぞれのカレンダー３７０、３８５から除去する。しかし、実施形態の中には、あるアポイントメントをキャンセルすると、結果としてそれに続く以前に予約されたアポイントメントを全てキャンセルしてしまうものもある。例えば、ＬＳＡには複数のロットアポイントメントが前もって予約されている場合、そして、中間にあるロットアポイントメントを１つキャンセルする場合、それに続くアポイントメント（移動、ロットアポイントメント、ロード、及びアンロード）を全てキャンセルしてもよい。最後のロットアポイントメントをキャンセルした場合、プロセスツール１１５へと導く全ての移動アポイントメント及びそのロットアポイントメントに続く可能なロットロードアポイントメント、ロットアンロードアポイントメント、移動アポイントメントをキャンセルしてもよい。それにより、ＬＳＡはキャンセルされたプロセス操作に対して再スケジューリングを開始する。一方、装置スケジューリングカレンダー上では、バンピングによる予約されたアポイントメントのキャンセルは、バンプされたアポイントメントの後に続く全アポイントメントのキャンセルを必ずしも引き起こすわけではない。それに続くアポイントメントに必要なセットアップが除去あるいは変更される場合、バンピングの入札によって、新たに予約されたアポイントメントに続くセットアップアポイントメントをスケジューリングする必要がある場合もある。
【０１１０】
なお、予約されたアポイントメントをシフト、縮小、拡大、キャンセル、及び再スケジューリングすると、このような変更によってプロセスフロー、特に、カレンダーに影響が及ぶ可能性がある。変更は１つのソフトウェアエージェントによって開始されるが、変更されたアポイントメントの各々は複数のカレンダー上に予約された相当するアポイントメントを持つ場合もある。この変更は結果的に他のソフトウェアエージェントに伝達され、それによって直前で説明したように各自のカレンダーをアップデートすることができる。しかし、他のカレンダー上の相当するアポイントメントが変更されると、その通知は変更を起動したエージェントには通知しないようにして抑制される。そうでないと、２つのスケジューリングエージェントの間には変化通知の無限ループが形成されてしまう。
【０１１１】
この種の望ましくない変更通知伝達を防ぐために、本実施形態では、変更イベント登録方法が用いられる。より詳細には、ＭＳＡがロットアポイントメント上の変更を受け取ると、この変更イベントを装置スケジューリングカレンダーのリスト（図示せず）に登録する。後に、ＭＳＡがそのカレンダー上の相当するロット処理アポイントメントについての変更通知を送信する準備が整うと、ＭＳＡはまず登録された変更イベントを全て記載したリストをチェックする。この場合、適合したイベントがみつかり、ＭＳＡはこのイベントをＬＳＡから来る反動的な変更イベントとして解釈する。これにより、装置側にはさらなるアクションは必要なくなり、ＭＳＡはただ適合した変更イベントをリストから除去する。しかし、カレンダー記録装置やカレンダーＧＵＩのようなノンエージェントであるアポイントメント聴取者は、関係のあるアポイントメントの変更を常に通知されている。これは、変更が起動されたものか反動的なものかの関係なく発生している。なぜなら、この種のアプリケーションは通常１つのカレンダーしか受信していないからである。
【０１１２】
上述のようにアポイントメントを変更する能力は、より高度なやり方でカレンダーを管理してプロセスフロー、例えば、図１のプロセスフロー１００の効率や効果を向上させる能力に付随することでしかない。本発明のカレンダリング手法により様々なアポイントメントに課せられた構造の能力は、関連するカレンダーが比較的過密な時に最も明白になる。カレンダーが比較的過密ではない場合、またはカレンダリング手法が比較的原始的である場合、スケジューリングは簡単である。例えば、「最初に来たものは最初に行う」ことを基本としてアポイントメントをスケジューリングすることができる。過密ではないカレンダー上では、十分な時間と十分な資源があるのでロットの優先度のような考慮はたいして重要なことではないので、このことはたいした懸念ではない。十分な処理資源があるので問題は比較的少ない。過密なカレンダー上では、このことはもはや真実ではない。
【０１１３】
本発明の高度なカレンダリング手法は、プロセスフロー１００内の様々なロット１３０の優先度もしくは重要度を尊重し、ＰＭ及びＱｕａｌの機会を見計らったスケジューリングを可能にし、そして他の数多くの強力なカレンダー管理機能を容易に行う。これらの機能の中には、あるカレンダー上に予約されたアポイントメントを管理して新しいアポイントメントの予約に適したスロットを作成するかどうかを決定するのに有用なものもある。これらの機能の中には、予約されたアポイントメントのシフト、バンプ、もしくはキャンセルを行ってタイムスロットを作成することにより、予約されたアポイントメントを実際に管理するものもある。ここに開示するカレンダリング手法の能力を説明するために、以下においてこれらの機能のいくつかをさらに詳細に述べる。
【０１１４】
先に説明したように、様々なソフトウェアエージェント２６５は、本実施形態においては、オブジェクト指向プログラミング環境における「オブジェクト」として実施される。管理機能は、ソフトウェアエージェント２６５であるオブジェクトによって呼び出される「メソッド」によって実施される。これらのメソッドは、今度は別のメソッドを呼び出す。これらのメソッドの中には、提案されたアクションの実現性を決定するものもある。これらのメソッドの中には、提案されたアクションを実際に実施するものもある。しかし、これらの詳細は実施例特有のもので、実施形態によって変化する。例えば、いくつかの実施形態は、同じメソッド内において、実現性を決定することとアクションを実施することの両方にために選択を行ってもよい。実際、実施形態の中には、同じ機能を行う代替の方法を用いてもよいようなＯＯＰ手法を用いないものさえある。このことを鑑みて、本説明はこれよりカレンダー管理機能の実施例の説明になる。
【０１１５】
本実施形態は、より強力な手法のいくつかに関して、「根本的」あるいは「基本的」とみなされる管理手法を数多く用いている。このような根本的手法は、カレンダーアクセス機構、カレンダーアップデート、アポイントメントカレンダーアップデート、及びアポイントメントアクセス機構の各メソッドとして分類される。ある実施例では、カレンダーアクセス機構メソッドは以下のことを含む。
・複数のあらかじめ識別されたアポイントメントを得ること
・アクティブなアポイントメントを得ること
・最初のアポイントメントを得ること
・最後のアポイントメントを得ること
・先のアポイントメントを得ること
・次のアポイントメントを得ること
・特別なあらかじめ識別されたアポイントメントを得ること
・ある時間の後に終わる最初のアポイントメントを得ること
・ある時間の後に始まる最初のアポイントメントを得ること
・ある時間の前に終わる最後のアポイントメントを得ること
・ある時間の前または後に始まる最後のアポイントメントを得ること
・重複するアポイントメントを得ること
基本的なカレンダーアップデートメソッドは以下のことを含む。
・ある時間の後の全てのアポイントメントをキャンセルすること
・必要ならばセットアップを挿入すること
基本的なアポイントメントアップデートメソッドは以下のことを含む。
・新しいアポイントメントを予約すること
・予約されたアポイントメントをキャンセルすること
・予約されたアポイントメントを拡大すること
・予約されたアポイントメントを縮小すること
・予約されたアポイントメントを左、つまり時間が早い方へシフトすること
・予約されたアポイントメントを右、つまり時間が遅い方へシフトすること
・予約されたアポイントメントの開始時間をシフトすること
・予約されたアポイントメントの終了時間をシフトすること
・予約されたアポイントメントの消費区間を縮小すること
・予約されたアポイントメントの消費区間を拡大すること
・予約されたアポイントメントの処理区間を縮小すること
・予約されたアポイントメントの消費区間を拡大すること
・予約されロックされたアポイントメントを左、つまり時間が早い方へシフトすること
・アポイントメントが新しいセットアップを必要としない場合は、予約されロックされたアポイントメントを左、つまり時間が早い方へシフトすること
・アポイントメントが新しいセットアップを必要とする場合は、予約されロックされたアポイントメントを左、つまり時間が早い方へシフトすること
・変更聴取者を加えること
・バッチアポイントメントの識別ナンバーを設定すること
・識別ナンバーを設定すること
・アポイントメントをロックすること
基本的なアポイントメントアクセス機構メソッドは以下のことを含む。
・アポイントメントの継続時間を得ること
・アポイントメントの開始時間を得ること
・アポイントメントの終了時間を得ること
・アポイントメントの処理ウィンドウの継続時間を得ること
・アポイントメントの静的ＥＳＴを得ること
・アポイントメントの最速ロード時間を得ること
・アポイントメントのＥＳＴを得ること
・アポイントメントの最も遅い終了時間を得ること
・アポイントメントの搬送開始時間を得ること
・アポイントメントの残りの搬送時間を得ること
・アポイントメントのロード開始時間を得ること
・アポイントメントの残りのロード時間を得ること
・アポイントメントのアンロード開始時間を得ること
・アポイントメントの残りのアンロード時間を得ること
・アポイントメントの処理継続時間を得ること
・アポイントメントの処理開始時間を得ること
・アポイントメントの処理終了時間を得ること
・アポイントメントの確約枠の継続時間を得ること
・アポイントメントの確約枠の開始時間を得ること
・アポイントメントの確約枠の終了時間を得ること
・アポイントメントの消費区間の継続時間を得ること
・アポイントメントの消費区間の開始時間を得ること
・アポイントメントの消費区間の終了時間を得ること
・変更聴取者を得ること
・アポイントメントの識別ナンバーを得ること
・バッチアポイントメントの識別ナンバーを得ること
・アポイントメントをロックするかどうかを識別すること
・アポイントメントに対してどのセットアップが必要かを識別すること
・アポイントメントに対してセットアップが必要かどうかを判定すること
・アポイントメントに対して先のセットアップがセットアップ必要条件と互換性があるかどうかを判定すること
・アポイントメントの資源に関する構成アポイントメントを識別すること
・左へのシフトの実現性を判定すること
・セットアップを必要としないロックされたアポイントメントを左へシフトできるかどうかを判定すること
・セットアップを必要とするロックされたアポイントメントを左へシフトできるかどうかを判定すること
・右へのシフトの実現性を判定すること
・ロックされたアポイントメントを右へシフトできるかどうかを判定すること
・開始時間をシフトできるかどうかを判定すること
・セットアップを必要としないロックされたアポイントメント開始時間をシフトできるかどうかを判定すること
・セットアップを必要とするロックされたアポイントメントの開始時間をシフトできるかどうかを判定すること
・アポイントメントの終了時間をシフトできるかどうかを判定すること
・ロックされたアポイントメントの終了時間をシフトできるかどうかを判定すること
なお、メソッドの全てが、全てのアポイントメント、またはある種のアポイントメントであっても全てに等しく適用可能ではない。しかし、これらのメソッドは、本実施形態では、直後で説明するより強力なメソッドを実施するのに必要な基本的機能を一括して提供する。
【０１１６】
過密なカレンダー上のスケジューリングアポイントメントにおける重要なタスクの１つは、カレンダー上のスロットを「オープン」または「クリア」にする能力である。カレンダーにとって過密状態が増すことは、新しいアポイントメント予約するための十分余裕のある確約されていない時間を見つけることがますます困難になることにつながる。任意の予約されたアポイントメントに対してカレンダー上で確約された時間は確約枠により区画されているので、また処理ウィンドウは確約枠の範囲内でスライドが可能なので、新しいアポイントメントが予約可能なスロットをオープンまたはクリアにするために予約されたアポイントメントを操作する際にはいくらかの自由度がある。本実施形態は、スロットをオープンにすることやクリアにすることを含むいくつかの手法を用いている。
【０１１７】
スロットをオープンにするために、スロットオープン実現性メソッドを呼び出すことによりスケジューリングエージェントが開始する。このメソッドは、各予約されたアポイントメントの十分な時間がない間にあるスロットをオープンにすることを試みることにより、スロットをオープンにする入札を装置カレンダー上で探すために入札生成中に広範囲にわたって使用されている。このメソッドはまた、既にカレンダー上にあるアポイントメントをキャンセルするのではなく、あるスロットをオープンにすることによりアポイントメントが予約可能かどうかを判定するために、入札確定中にも使用されている。このメソッドは、規定された開始時間に開始するカレンダー上に規定された継続時間を有するスロットをオープンにする実現性を判定する。プリセットアップポイントメントまたはポストセットアップアポイントメントが必要な場合には、このメソッドは、要求された継続時間に加えてセットアップアポイントメントに対応するのに十分なほど大きいスロットをオープンする実現性を判定する。このスロットオープン実現性メソッドは入力として以下のものを受け取る。
・セットアップを除く、スロットに対して要求された開始時間
・セットアップ時間を含まない、スロットの所望の継続時間
・スロットに必要な任意のセットアップ
スロットオープン実現性メソッドは出力として以下のものを返す
・スロットをオープンにすることが実現できるかどうかのブール標識
・必要ならばセットアップの開始時間であってもよい、実現可能なスロットの実際のスロット開始時間
・実現可能なスロットの実際のスロット終了時間
・セットアップが必要な場合、スロット開始時間よりも遅くてもよいプロセス開始時間
・セットアップ時間の正味の変更
・実現可能なスロットをオープンするために必要なアポイントメントアクションのリスト
スロットオープン実現性メソッドは、スロットをオープンする実現性を判定するために、別の２つのメソッド、すなわち、以下にさらに説明するカスケードな左シフト実現性及びカスケードな右シフト実現性を呼び出す。
【０１１８】
具体的には、スロットオープン実現性メソッドは、要求された開始時間の前（「アポイントメント前」）に開始する最後のアポイントメント及び要求された開始時間の後（「アポイントメント後」）に開始する最初のアポイントメントを決定し、かつ、両アポイントメント間にある要求されたスロットをオープンすることが可能かどうかを判定する。まず、スロットオープン実現性メソッドは、要求された開始時間の前にセットアップに時間が割り当てられるべきかどうかを判定する。スロットがセットアップを必要とし、「アポイントメント前」には互換性のあるセットアップがないか、「アポイントメント前」がない場合、スロットオープン実現性メソッドは要求された開始時間からセットアップ継続時間を差し引き、これにより、「拡大したスロット」の開始時間を計算する。「拡大したスロット」の開始時間を現在の時刻と比較し、もし現在の時刻よりも小さければ、現在の時刻にリセットする。「拡大したスロット」の開始時間が「アポイントメント前」の終了時間よりも早い場合、このメソッドは、「アポイントメント前」の終了時間と「拡大したスロット」の開始時間の間の差を計算することにより「アポイントメント前」が左にシフトする所望の左シフトの継続時間を計算する。
【０１１９】
次に、スロットオープン実現性メソッドは、カスケードな左シフト実現性メソッドを呼び出して、所望の左シフト継続時間中に「アポイントメント前」を左へ（早い時間のほうへ）シフト可能かどうかを判定する。所望のシフトが実現可能ならば、「実現可能なスロット開始時間」を拡大したスロットの開始時間に設定する。所望のシフトが実現不可能ならば、カスケードな左シフト実現性からの返答は「アポイントメント前」がシフト可能な実際の時間量を示し、「実現可能なスロット開始時間」を、左にシフトした場合に「アポイントメント前」の終了時間が使用可能な実際の時間量となるものに設定する。「アポイントメント前」がない場合や「アポイントメント前」の終了時間が現在の時刻の前である場合には、「アポイントメント前」を左へ（早い時間のほうへ）シフト可能かどうかを判定することを試みる必要はない。
【０１２０】
次に、スロットオープン実現性メソッドは、スロット入力継続時間と、適用可能ならば、「拡大したスロット」の開始時間に対するセットアップ継続時間とを加えることにより、「実現可能なスロット終了時間」を計算する。スロットオープン実現性メソッドは、このスロットの後にポストセットアップが必要かどうかを判定する。スロットセットアップとは異なるセットアップが必要な「アポイントメント後」がある場合、スロットオープン実現性メソッドはポストセットアップ継続時間を「実現可能なスロット終了時間」に加えることにより、修正された「実現可能なスロット終了時間」を計算する。次に、スロットオープン実現性メソッドは修正された「実現可能なスロット終了時間」を「アポイントメント後」の開始時間と比較して、「アポイントメント後」を右へ（遅い時間の方へ）シフトさせるべきかどうかを判定する。シフトさせるべき「アポイントメント後」がある場合、スロットオープン実現性メソッドは所望の右シフト継続時間を「実現可能なスロット終了時間」と「アポイントメント後」の開始時間との差として計算する。次に、このメソッドはカスケードな右シフト実現性を呼び出して、「アポイントメント後」を所望の右シフト継続時間中に右にシフト可能かどうかを判定する。「アポイントメント後」が所望の右シフト継続時間中に右にシフト可能な場合、このメソッドは、セットアップ時間の正味の変更を含む、実現可能な結果を返す。そうでない場合には、「アポイントメント後」が所望の右シフト継続時間中に右にシフトできない場合、スロットオープン実現性メソッドは終了して実現可能ではないという結果を返す。
【０１２１】
スロットをオープンすることが実現可能であり、かつそうすることがその後も望ましい場合、そのスロットをオープンする。スケジューリングエージェントは２つのメソッドのうちの１つを呼び出す。これらのメソッドのうちの１番目のものはスロットオープンメソッドである。このスロットオープンメソッドは、規定された開始時間に開始するカレンダー上に規定された継続時間を持つスロットをオープンする。プリセットアップアポイントメントまたはポストセットアップアポイントメントが必要な場合、このメソッドは、要求された継続時間に加えてセットアップアポイントメントに対応するのに十分なほど大きなスロットをオープンする。これらのメソッドのうちの２番目のものはスロットオープン及びアポイントメント予約メソッドである。このスロットオープン及びアポイントメント予約メソッドは、カレンダー上に規定された継続時間を持ち規定された開始時間で開始するスロットをオープンしてから、アポイントメントを予約する。プリセットアップアポイントメントまたはポストセットアップアポイントメントが必要な場合、この方法は、セットアップアポイントメントに対応するのに十分なほど大きなスロットをオープンし、また必要なセットアップアポイントメントを予約する。スロットオープンメソッドもスロットオープン及びアポイントメント予約メソッドも、以下にさらに説明するカスケードな左シフトメソッド及びカスケードな右シフトメソッドを使用することにより、カレンダー上の所望の開始時間及び継続時間を有するスロットをオープンする。
【０１２２】
スロットオープンメソッドに戻って、このメソッドは入力として以下のものを受け取る。
・セットアップを除く、スロットの要求された開始時間
・セットアップ時間を含まないスロットの所望の継続時間
・スロットに必要なセットアップ
また、このメソッドは、スロットのオープンに成功したかどうかを示すブール標識を出力する。スロットオープンメソッドはスロットオープン実現性メソッドと同じロジックを使用するが、ただし、カスケードな左シフト実現性メソッドのかわりにカスケードな左シフトメソッドを呼び出し、カスケードな右シフト実現性メソッドのかわりにカスケードな右シフトメソッドを呼び出す。カスケードな左シフトとカスケードな右シフトの両方の実行に成功した場合、スロットオープンメソッドは、カレンダー上でスロットのオープンに成功したことを示すブール値ｔｒｕｅを返す。そうでない場合には、カスケードな左シフトとカスケードな右シフトのうちのどちらかをうまく実行できなかった場合、スロットオープンメソッドは、スロットをオープンできないことを示すブール値ｆａｌｓｅを返す。なお、スロットオープンメソッドの実行中にカレンダーをアップデートする他のメソッドは実行できない。
【０１２３】
今度はスロットオープン及びアポイントメント予約に戻って、このメソッドは入力として予約されるアポイントメントを受け取り、出力は返さない。スロットオープン及びアポイントメント予約メソッドはまず、カレンダー上で最後のアポイントメントを探す。最後のアポイントメントが存在する場合、かつ最後のアポイントメントはロット処理アポイントメントであり、予約されるアポイントメントは残りの搬送時間がゼロのロット処理アポイントメントである場合、スロットオープン及びアポイントメント予約メソッドは最後のアポイントメントの本来の終了時間をセーブし、最後のアポイントメントをキャンセルしてもよいことを示すフラッグを設定する。次に、スロットオープン及びアポイントメント予約メソッドはスロットオープンメソッドを呼び出して、カレンダー上で、アポイントメント開始時間に開始し、アポイントメントの継続時間と、もしあれば、アポイントメントのセットアップ必要条件に適合するセットアップとの継続時間を持つスロットをオープンする。
【０１２４】
スロットオープンメソッドを実行した後、スロットオープン及びアポイントメント予約メソッドは、新しいアポイントメントと任意の必要なプリセットアップアポイントメントまたはポストセットアップアポイントメントをカレンダー上に予約する。次に、スロットオープン及びアポイントメント予約メソッドは、もしあれば、最後のアポイントメントの本来の終了時間と最後のアポイントメントの新しい終了時間を照合する。最後のアポイントメントがより遅い時間のほうにシフトしていた場合、メソッドはアポイントメント継続時間に対するシフト継続時間の割合を計算し、その割合を構築可能なプロパティと比較する。計算された割合がプロパティ値よりも大きい場合、最後のアポイントメントをキャンセルしなければならないので、スロットオープン及びアポイントメント予約メソッドは最後のアポイントメントがペナルティとしての返金を受けるべきかどうかを判定する。最後のアポイントメントが通常は払い戻し可能ではないバンピング料を払った場合、スロットオープン及びアポイントメント予約メソッドは、最後のアポイントメントのペナルティとしての返金を支払われたバンピング料と等しい額に設定し、そうでない場合は、最後のアポイントメントのペナルティとしての返金をゼロに設定する。
【０１２５】
最後のアポイントメントをキャンセルすべき場合、スロットオープン及びアポイントメント予約メソッドは最後のアポイントメントをキャンセルする。最後のアポイントメントをキャンセルした後、必要ならば、スロットオープン及びアポイントメント予約メソッドは終了する。最後のアポイントメントをキャンセルする理由は、閾値を超えてシフトすると、他の装置のよりよいアポイントメントを発見してしまうかもしれないからである。なお、スロットオープン及びアポイントメント予約メソッドの実行中にカレンダーをアップデートする他のメソッドは実行できない。
【０１２６】
スロットオープンとスロットオープン及びアポイントメント予約メソッドは両者ともカレンダー上のスロットをオープンするが、両者の使用方法は異なる。入札を確定する際、ＭＳＡは「入札確定者」と呼ばれるヘルパークラスのオブジェクトを呼び出す。入札確定者は、スロットオープン実現性を呼び出すことにより既に実現可能なことが分かっていたオープンなスロットにおけるアポイントメントを予約する準備ができると、スロットオープンメソッドを呼び出す。一方、ＭＳＡは直接スロットオープン及びアポイントメント予約メソッドを呼び出して、１つのカレンダー操作においてスロットをオープンしてアポイントメントを予約してもよい。また、スロットオープン及びアポイントメント予約メソッドは、スロットオープンメソッドを呼び出し、実際にスロットをオープンする。
【０１２７】
カレンダー上のスロットをクリアにする際は、何らかの方法で、カレンダー上のスロットをオープンするロジックと同様のロジックを使用する。スロットをクリアにするために、スロットクリア実現性と呼ばれる方法が呼び出される。このスロットクリア実現性メソッドは、そのアポイントメントの時間間隔に重複する全アポイントメントを見つけ出し、重複しているアポイントメントを要求された時間間隔の前、付近、または後に再帰的にシフトさせることにより要求されたスロットをクリアにできるかどうかをチェックすることにより、あるアポイントメントに対するスロットをクリアにする実現性を判定する。プリセットアップアポイントメントまたはポストセットアップアポイントメントが必要ならば、この方法は、要求された継続時間に加えてセットアップアポイントメントに対応するのに十分なほど大きなスロットをクリアにする実現性を判定する。この方法は入力としてスロットクリア実現性を判定することになる可能性のあるアポイントメントを受け取り、出力としては以下のものを返す。
・スロットをクリアにすることが実現可能かどうかを示すブール標識
・セットアップ時間の正味の変更
・スロットをクリアにするためにキャンセルすべき重複するアポイントメントを記すリスト
・スロットをクリアにするために必要なアポイントメントアクションを記すリスト
【０１２８】
具体的には、スロットクリア実現性メソッドは最初に、スロット開始時間を「可能性のあるアポイントメント」の開始時間に設定し、スロット終了時間を「可能性のあるアポイントメント」の終了時間に設定する。次に、スロットクリア実現性メソッドは、「可能性のあるアポイントメント」を予約するためにプリセットアップアポイントメント及び／またはポストセットアップアポイントメントを加えるべきかどうかを判定する。「可能性のあるアポイントメント」がセットアップを必要とする場合、このメソッドはアポイントメント開始時間の前に終了する最後のアポイントメント（「プレアポイントメント」）を探し出し、「プレアポイントメント」セットアップが「可能性のあるアポイントメントの」セットアップ必要条件に適合するかを判定する。プリセットアップが「可能性のあるアポイントメントの」必要なセットアップと適合しない場合、必要なセットアップ継続時間を「可能性のあるアポイントメントの」開始時間から差し引くことにより、スロット開始時間を再計算する。
【０１２９】
次に、スロットクリア実現性メソッドは「可能性のあるアポイントメントの」終了時間（「ポストアポイントメント」）後に開始する最初のアポイントメントを探し出す。「ポストアポイントメント」がセットアップアポイントメントではなく、「ポストアポイントメント」には「可能性のあるアポイントメント」のセットアップとは異なるポストセットアップが必要な場合には、スロットクリア実現性メソッドは、ポストセットアップ継続時間を「可能性のあるアポイントメントの」終了時間に加えることにより、スロット終了時間を再計算する。続いて、スロットクリア実現性メソッドはスロット開始時間及びスロット終了時間によって区画される時間間隔と重複する全アポイントメントを検索する。重複するアポイントメントがない場合は、この方法は終了し、その結果は実現可能であり計算は必要ないことを示した返答を返す。そうでない場合は、スロットクリア実現性メソッドは「アポイントメント前」を最後の重複するアポイントメント、すなわち、開始時間が最も遅い重複するアポイントメントに設定し、「可能性のあるアポイントメント」、重複するアポイントメントの集合、及び「アポイントメント前」において渡される再帰的スロットクリア（直後にさらに説明する）と呼ばれるメソッドを呼び出す。
【０１３０】
再帰的スロットクリアメソッドはまず、「アポイントメント前」が十分に遠い左（早い時間の方へ）へシフトできるかどうかを判定し、それによって、「可能性のあるアポイントメント」がその後に予約される。「可能性のあるアポイントメント」がセットアップ必要条件を有する場合、再帰的スロットクリアは「アポイントメント前」のセットアップ必要条件を「可能性のあるアポイントメント」のセットアップ必要条件に対して比較する。「アポイントメント前」がセットアップアポイントメントである場合、再帰的スロットクリアは「アポイントメント前」の前にあるアポイントメント（「先のアポイントメント」）を探し出し、そのセットアップ必要条件を「可能性のあるアポイントメント」のセットアップ必要条件に対して比較する。「可能性のあるアポイントメント」がセットアップ必要条件を有し、かつそのセットアップが適合しない場合、再帰的スロットクリアはセットアップ継続時間を「可能性のあるアポイントメント」の開始時間から差し引くことにより、「アポイントメント前」の必要な終了時間を再計算する。「アポイントメント前」の必要な終了時間が実際の終了時間よりも小さい場合、再帰的スロットクリアメソッドはカスケードな左シフト実現性メソッドを呼び出して、「アポイントメント前」を十分左へシフトできるかどうかを判定し、それによって、「可能性のあるアポイントメント」はその後に予約できる。再帰的スロットクリアメソッドは、「アポイントメント前」及び「アポイントメント前の」終了時間と必要な終了時間との差である必要な左シフト継続時間を有するカスケードな左シフト実現性メソッドを呼び出す。「アポイントメント前の」終了時間がその必要な終了時間よりも小さい場合、「アポイントメント前」を左へシフトする必要はなく、再帰的スロットクリアメソッドは「アポイントメント前」の後にある任意のアポイントメントを右へシフトすべきかどうかに注目する。「アポイントメント前」がセットアップアポイントメントであり、かつ「先のアポイントメント」がない場合、セットアップアポイントメントを除去して、再帰的スロットクリアはあたかもカスケードな左シフト実現性が実現可能であるかのように同じ事を継続する。
【０１３１】
カスケードな左シフト実現性メソッドが左シフトは実現可能であると示している場合、再帰的スロットクリアメソッドは「アポイントメント前」の後にある次のアポイントメント（「アポイントメント後」）を検索する。「アポイントメント後」が「可能性のあるアポイントメント」とは異なるセットアップ必要条件（ポストセットアップ）を有する場合、再帰的スロットクリアメソッドはポストセットアップ継続時間に「可能性のあるアポイントメント」の終了時間を加えることにより、「アポイントメント後」の必要な開始時間を計算する。「アポイントメント後」の必要な開始時間が「アポイントメント後」の開始時間より小さい場合、再帰的スロットクリアメソッドはカスケードな右シフト実現性メソッドを呼び出して「アポイントメント後」を十分右にシフトできるかどうかを判定し、それによって、「可能性のあるアポイントメント」はその前に予約することができる。再帰的スロットクリアメソッドは、「アポイントメント後」及び「アポイントメント後」の必要な開始時間と「アポイントメント後の」実際の開始時間との差である必要な右シフト継続時間とを有するカスケードな右シフト実現性メソッドを呼び出す。カスケードな右シフト実現性メソッドが右シフトは実現可能であると示した場合、再帰的スロットクリアメソッドは終了し、実現可能な結果を加えられた正味のセットアップとともに返す。
【０１３２】
そうでない場合は、カスケードな左シフト実現性メソッドが「アポイントメント前」が必要な量だけ左にシフトできないと示している場合、再帰的スロットクリアメソッドは「アポイントメント前」の前に重複するアポイントメントが存在するかどうかを確認しているかチェックする。「アポイントメント前」に重複するアポイントメントがない場合は、再帰的スロットクリアメソッドは、「可能性のあるアポイントメント」がその前に予約されるためにはどれだけ「アポイントメント前」を右へシフトすべきかを判定する。「アポイントメント前」の必要な開始時間は「可能性のあるアポイントメント」の終了時間であり、「アポイントメント前」には「可能性のあるアポイントメント」のセットアップとは異なるセットアップが必要でなければ、「アポイントメント前」の必要な開始時間は「可能性のあるアポイントメント」の終了時間と「アポイントメント前」のセットアップ継続時間の合計である。次に、再帰的スロットクリアメソッドは、「アポイントメント前」及び「アポイントメント前」の必要な開始時間と「アポイントメント前」の実際の開始時間との差である必要なシフト継続時間を有するカスケードな右シフト実現性メソッドを呼び出す。カスケードな右シフト実現性メソッドが右シフトは実現可能であると示している場合、再帰的スロットクリアメソッドは終了し、実現可能な結果を加えられた正味のセットアップと共に返す。
【０１３３】
カスケードな右シフト実現性メソッドを起動する上記の２例のいずれかにおいて、カスケードな右シフト実現性メソッドが右シフトは実現可能ではないと示している場合、「可能性のあるアポイントメント」の前にこの「アポイントメント前」を使用するクリアなスロットは実現可能ではなく、だから再帰的スロットクリアメソッドは「アポイントメント前」に重複するアポイントメントがあるかどうかを判定する。「アポイントメント前」の前に重複するアポイントメント（「先のアポイントメント」）が存在する場合、再帰的スロットクリアメソッドは自分自身を呼び出し、「先のアポイントメント」を新しい「アポイントメント前」として再帰的に渡して、他の入力（重複するアポイントメントの集合及び「可能性のあるアポイントメント」）は変更しない。「アポイントメント前」の前に重複するアポイントメントがない場合、再帰的スロットクリアメソッドは「アポイントメント前」の必要な開始時間を計算し、それによって、「可能性のあるアポイントメント」はその前に予約できるようになる。この場合における「アポイントメント前」の必要な開始時間は「可能性のあるアポイントメント」の終了時間であり、「アポイントメント前」の終了時間には「可能性のあるアポイントメント」のセットアップとは異なるセットアップが必要ではない限り、「アポイントメント前」の必要な開始時間は「可能性のあるアポイントメント」の終了時間と「アポイントメント」のセットアップ継続時間との合計である。
【０１３４】
次に、再帰的スロットクリアメソッドは、「アポイントメント前」の必要な開始時間と「アポイントメント前」の実際の開始時間との差である必要なシフト継続時間を使用する「アポイントメント前」に対して、カスケードな右シフト実現性を試みる。カスケードな右シフト実現性メソッドが右シフトは実現可能であると示している場合、再帰的スロットクリアメソッドは終了し、実現可能な結果を加えられた正味のセットアップと共に返す。カスケードな右シフト実現性メソッドが右シフトは実現不可能であると示している場合、再帰的スロットクリアメソッドは終了し、実現不可能であるという結果を返す。
【０１３５】
この再帰は、実現可能な結果が見つかるか、「アポイントメント前」の前に先に重複するアポイントメントがなく、「アポイントメント前」をシフトして「可能性のあるアポイントメント」と「可能性のあるアポイントメント」の直後に必要な任意のポストセットアップの後に開始することができなくなるまで継続する。再帰的スロットクリアメソッドがスロットをクリアにすることが実現可能であると示している場合、スロットクリア実現性メソッドは正味のセットアップの変更とスロットをクリアするのに必要なアポイントメントアクションを記すリストを返し、クリアなスロットは実現可能であることを示す。再帰的スロットクリアメソッドがスロットをクリアにすることが実現不可能であると示している場合、スロットクリア実現性メソッドは、キャンセルすべき重複するアポイントメントを記すリストを返し、スロットのクリアは実現不可能であることを示す。
【０１３６】
スロットクリア実現性メソッドは大いなる実用性に恵まれている。以前に説明した入札確定者と、入札生成者として知られているＭＳＡのヘルパークラスのオブジェクトのうちの別のものが、このメソッドを使用する。入札生成者はこのメソッドを用いて、可能性のある入札に対するスロットをクリアすることができるかどうかを判定する。入札確定者はこのメソッドを用いて、スロットをクリアにして新しいアポイントメントを予約することができるかどうかを判定する。
【０１３７】
スロットをクリアにすることが実現可能であり、かつそうすることがその後も望ましい場合、そのスロットをクリアにする。本発明は、状況に応じて３つのメソッドのうちの１つを使用する。これらの３つのメソッドは、スロットクリア、スロットクリア及びアポイントメント予約、及び強制スロットクリア及びアポイントメント予約と呼ばれる。これらのメソッドの各々は、規定されたアポイントメントと重複する可能性のあるアポイントメントを全部探し出し、そしてこれらのアポイントメントのどれもキャンセルすることなく規定されたアポイントメントの前、付近、または後に再帰的に試みるクリア措置を実行することにより、規定されたアポイントメントに対するスロットをクリアにする。このスロットをシフトによってクリアにすることが出来ない場合、重複するアポイントメントを一度に１つずつキャンセルし、キャンセル処理が終わるごとに再帰的クリア措置を再度呼び出す。プリセットアップアポイントメントまたはポストセットアップアポイントメントが必要な場合、このメソッドは、規定されたアポイントメントの継続時間に加えて、セットアップアポイントメントに対応するのに十分なほど大きなスロットをクリアにする。このスロットをクリアに出来る場合、スロットクリア及びアポイントメント予約メソッドは次に進み、アポイントメントを予約する。強制スロットクリア及びアポイントメント予約メソッドは、スロットを決してクリアにしないということを検討しない。このメソッドは、この実施形態では、常にスロットをクリアにして、アポイントメントを予約する。
【０１３８】
スロットクリアメソッドに戻り、このメソッドはまず、重複するエリアの中からブロックしているアポイントメントをシフトすることにより必要なスロットをクリアできるかどうかを判定するために、スロットクリア実現性メソッドで説明したものと同じロジックを実行する。アポイントメントをキャンセルせずにそのスロットをクリアにすることが実現可能な場合、再帰的スロットクリアメソッドは、そのスロットをクリアにするために必要なアポイントメントアクションを記したリストも返す。このアポイントメントアクションリストは、影響を受けるアポイントメントの各々をシフトどれだけシフトするか及び消去可能なセットアップアポイントメントを消去するかどうかに対する命令を含んでいる。アポイントメントアクションも命令を受けるので、これらのアクションは、各々をシーケンシャルに実行するので、どんなアポイントメントもカレンダー上で重複させずに実行できる。なお、スロットクリアメソッドを呼び出すクライアントはアポイントメントやいかなるプリセットアッアポイントメントまたはポストセットアップアポイントメントの予約に対して責務があるので、これらのアポイントメントアクションはリストには含まれない。
【０１３９】
再帰的スロットクリアメソッドがスロットのクリアは実現可能であると示している場合、スロットクリアメソッドはアポイントメントアクションの集合の中のアクションを実行し、必要なアポイントメントを実際にシフトして不必要なセットアップアポイントメントを消去した後、スロットクリアの実行に成功したことを示すブール値ｔｒｕｅを返す。再帰的スロットクリアメソッドがアポイントメントをキャンセルしないままでのスロットのクリアは実現不可能であると示している場合、再帰的スロットクリアメソッドは重複するアポイントメントを記すリストを返す。次に、スロットクリアメソッドはセットアップアポイントメントではない最初の重複するアポイントメント（「重複アポイントメント」）を獲得して、重複アポイントメントキャンセルと称する「重複アポイントメント」、「可能性のあるアポイントメント」、及び重複するアポイントメントの集合を渡すメソッドを呼び出す。
【０１４０】
重複アポイントメントキャンセルメソッドは「重複アポイントメント」をキャンセルし、もしあれば、重複しているエリアの中から新しいブロックしているアポイントメントをシフトすることにより必要なスロットをクリアできるかどうかを判定するために、再びスロットクリア実現性メソッドで説明したものと同じロジックを実行する。アポイントメントをキャンセルせずにそのスロットをクリアすることが実行可能な場合、再帰的スロットクリアメソッドは、そのスロットをクリアにするために必要なアポイントメントアクションを記したリストも返す。このアポイントメントアクションリストは、影響を受けるアポイントメントの各々をどれだけシフトするか及び消去可能なセットアップアポイントメントを消去するかどうかに対する命令を含んでいる。アポイントメントアクションも命令を受けるので、これらのアクションは、各々をシーケンシャルに実行するので、どんなアポイントメントもカレンダー上で重複させずに実行できる。
【０１４１】
再帰的スロットクリアメソッドがスロットのクリアは実現可能であると示している場合、またはもはや重複するアポイントメントがない場合、重複アポイントメントキャンセルメソッドは終了し、アポイントメントアクションリストをスロットクリアメソッドに返す。再帰的スロットクリアメソッドがアポイントメントをキャンセルしないままでのスロットのクリアは実現不可能であると示している場合、再帰的スロットクリアメソッドは重複するアポイントメントの新しいリストを重複アポイントメントキャンセルメソッドに返し、その重複アポイントメントキャンセルメソッドはその後最初の重複するアポイントメント（「重複アポイントメント」）を重複するアポイントメントの新しいリストから獲得して、自分自身を再び再帰的に呼び出す。この再帰は、再帰的スロットクリアメソッドがスロットのクリアは実現可能であると示すか、もはや重複するアポイントメントがなくなるまで繰り返す。重複アポイントメントキャンセルメソッドがスロットクリアメソッドに戻ると、スロットクリアメソッドは、もしあれば、アポイントメントアクションの集合の中のアクションを実行し、必要なアポイントメントを実際にシフトして不必要なセットアップアポイントメントを消去した後、スロットのクリアの実行に成功したことを示すブール値ｔｒｕｅを返す。なお、スロットクリアメソッドの実行中にカレンダーをアップデートする他のメソッドを行うことはできない。
【０１４２】
スロットクリア及びアポイントメント予約メソッドは、追加の入力、すなわち、キャンセル予定のアポイントメントの集合を１つ有する。スロットクリア及びアポイントメント予約メソッドは、アポイントメントキャンセル実行を扱うやり方を除いて、スロットクリアメソッドと同じロジックを実行する。クライアントは入力アポイントメントの集合の中の各アポイントメントにペナルティとしての返金を設定する責務がある。いかなるアポイントメントをキャンセルする前にも、このメソッドは重複するアポイントメントの入力リストと、重複するアポイントメントの実際のリストを照合する。実際の重複するアポイントメントの集合が入力アポイントメントの集合には含まれていないあらゆるアポイントメントを含む場合、スロットクリア及びアポイントメント予約メソッドは、重複するアポイントメントの入力リスト内の各アポイントメントに対してペナルティとしての返金をゼロに設定して、ｆａｌｓｅを返して終了する。スロットをクリアする際にスロットクリア及びアポイントメント予約メソッドがうまく言っている場合、可能性のあるアポイントメントと任意のプリセットアップアップアポイントメントまたはポストセットアップアポイントメントをカレンダー上に予約して、重複するアポイントメントの入力リスト内のキャンセルさせていない各アポイントメントにおいてペナルティとしての返金をゼロにリセットする。
【０１４３】
強制スロットクリア及びアポイントメント予約メソッドは、スロットクリア及びアポイントメント予約のロジックとキャンセルされたアポイントメントの取り扱いを除いて同じロジックと、カレンダー上の最後のアポイントメントに関連する追加のロジックを実行する。強制スロットクリア及びアポイントメント予約メソッドは、スロットをクリアするために必要なあらゆるアポイントメントを、たとえそのアポイントメントが入力アポイントメントの集合には含まれていなくてもキャンセルするであろう。クライアントは入力アポイントメントの集合の中の各アポイントメントにペナルティとしての返金を設定する責務がある。このメソッドが入力アポイントメントの集合の中に含まれていないアポイントメントをキャンセルする場合、ペナルティとしての返金を計算するものを呼び出して、ペナルティとしての返金を計算した後、その返金をキャンセル前にアポイントメントにセットする。このメソッドが入力アポイントメントの集合の中に含まれていないアポイントメントをキャンセルしない場合には、そのアポイントメントのペナルティとしての返金をゼロにリセットする。
【０１４４】
強制スロットクリア及びアポイントメント予約メソッドとスロットクリア及びアポイントメント予約メソッドとの他の相違点は、強制スロットクリア及びアポイントメント予約メソッドがスロットオープン及びアポイントメント予約メソッドと同じやり方でカレンダー上の最後のアポイントメントを取り扱うことである。最後のアポイントメントが存在し、かつ最後のアポイントメントがロット処理アポイントメントであり予約されるアポイントメントが残りの搬送時間がゼロのロット処理アポイントメントである場合、強制スロットクリア及びアポイントメント予約メソッドは最後のアポイントメントの本来の終了時間をセーブして、最後のアポイントメントをキャンセルしてもよいフラッグを設定する。スロットをキャンセルして新しいアポイントメントと任意のプリセットアップアポイントメントまたはポストセットアップアポイントメントを予約した後、強制スロットクリア及びアポイントメント予約メソッドは、もしあれば、最後のアポイントメントの新しい終了時間を最後のアポイントメントの本来の終了時間と照合する。
【０１４５】
最後のアポイントメントが時間の遅い方へシフトしてしまっていた場合、メソッドはアポイントメント継続時間に対するシフト継続時間を計算することにより、この比と構築可能なプロパティとを比較する。計算された比がプロパティ値より大きい場合、最後のアポイントメントをキャンセルしなければならず、だから強制スロットクリア及びアポイントメント予約メソッドは最後のアポイントメントがペナルティとしての返金を獲得すべきかどうか判定する。最後のアポイントメントが通常は払い戻し可能ではないバンピング料を支払った場合、強制スロットクリア及びアポイントメント予約メソッドは最後のアポイントメントのペナルティとしての返金を支払われたバンピング料と等しい額に設定し、そうでない場合は、最後のアポイントメントのペナルティとしての返金をゼロに設定する。最後のアポイントメントをキャンセルすべき場合、強制スロットクリア及びアポイントメント予約メソッドはその後最後のアポイントメントをキャンセルする。最後のアポイントメントをキャンセルする理由は、閾値を超えてシフトすると、他の装置のよりよいアポイントメントを発見してしまうかもしれないからである。
【０１４６】
上述のように、エージェントがスロットクリアメソッド、スロットクリア及びアポイントメント予約メソッド、もしくは強制スロットクリア及びアポイントメント予約メソッドを使用するかどうかは状況しだいである。ＭＳＡスロットクリアメソッドを直接呼出して、新しいアポイントメントを予約するためにスロットをクリアにしてもよい。しかし、ＭＳＡのヘルパークラスの入札確定者は、スロットクリア及びアポイントメント予約メソッドを使用してスロットをクリアにすると共に新しいアポイントメントを１つのカレンダー操作で予約する。スロットクリア及びアポイントメント予約メソッドは、通常は、既にカレンダー上に予約されているアポイントメントをバンプする、つまりキャンセルする予定の時に使用される。ＭＳＡのヘルパークラスの入札確定者は、強制スロットクリア及びアポイントメント予約メソッドを使用して、スロットをクリアにすると共に「オーバーライド」入札確定に対する新しいアポイントメントを１つのカレンダー操作で予約する。この状況では、このアポイントメントは、対応する作業（ポートへのキャリア到着、ＰＭ開始、Ｑｕａｌ開始、装置ダウン時間開始など）が既に開始されていることを示すイベントが既に消去されているので、予約される。
【０１４７】
カレンダー上のスロットをオープンまたはクリアにする上記のメソッドは、説明から明らかなように、アポイントメント実際に移動、つまりシフトさせる他のメソッドを呼び出す。これらのメソッドの中には、アポイントメントを「引く」ものもあれば、「カスケードなシフト」をするものもあり、また「飛び越す」ものもある。これらの手法は、アポイントメントを左（つまり早い時間のほうへ）と右（つまり早い時間のほうへ）の両方へシフトするために適用されるものもあれば、一方、一方向にしか操作できない手法もある。ある手法は回帰的であるが、他の手法はそうではない。以下に、これらの手法のうちのいくつかを説明する。
【０１４８】
まず、カレンダー上に予約された複数のアポイントメントを同時にカスケードなやり方でシフトする「カスケードなシフト」として知られる強力な手法を考える。これにより、望まれておりかつ可能ならば、第１のアポイントメントをカレンダー上で左または右（つまり時間の早いほう、または遅い方）へシフトする。次に、第２のアポイントメントをシフトし、第１のアポイントメントがこのシフトを利用してシフトの量を増やす。この第２のアポイントメントが第１のアポイントメントの前であるか後であるかは、シフトが左か右か次第である。その後、連続しているが立て続けにくるものである必要はない一連のアポイントメントを連続してこのようにシフト、つまり「カスケード」させて、カレンダー上のスペースをクリアにする。
【０１４９】
例えば、本実施形態において左へカスケードなシフトをするために、このカレンダーに対するスケジューリングエージェントはまず、規定されたアポイントメントに開始すると共に規定された時間量だけシフトするアポイントメントをカスケードなやり方で左（早い時間の方）へシフトすることの実現性を判定する。ロックされたアポイントメントはシフトできないものとみなされる。このとき、シフトされるアポイントメントはない。このようなシフトが実現可能と判定された場合、カスケードな左シフト実現性を実行する状況に依存して、規定されたアポイントメントに開始すると共に規定された時間量だけシフトするアポイントメントをカスケードなやり方で左へ（早い時間の方へ）シフトしてもよい。
【０１５０】
具体的には、スケジューリングエージェントは、カレンダー上にあるカスケードの一部としてシフトを望まれる第１のアポイントメントと、その第１のアポイントメントのシフトを望む時間量を選択する。より技術的には、本実施形態では、スケジューリングエージェントはカスケードな左シフト実現性と呼ばれるメソッドを呼び出す。このメソッドは上記で説明したスロットオープン実現性メソッドによって呼び出されて、カレンダー上に別のアポイントメントに対応するのに十分なほど大きなスロットをオープンするために左シフトをカスケードする実現性を判定する。カスケードな左シフト実現性メソッドへの入力は、シフトされる第１のアポイントメント及びシフト継続時間である。カスケードな左シフト実現性メソッドは、そのシフトが実現可能かどうか、アポイントメントが実際に使用可能であるシフトの継続時間、そのシフトが必要なセットアップ時間の正味の変更、最初のブロックしているアポイントメント（つまり、シフトできないアポイントメント）、及び左シフトのカスケードを行うために必要なアポイントメントアクションを記したリストを示すブール値を備えた返答を作り出す。
【０１５１】
この返答を展開するために、カスケードな左シフト実現性メソッドは、今度は、本来の所望シフト継続時間に等しい所望シフト継続時間を有する第１のアポイントメントに、再帰的左シフトと称するメソッドを呼び出す。次に、この再帰的左シフトメソッドは、左シフト可能メソッドを第１のアポイントメントに呼び出して、その動的な開始時間（“ＥＳＴ”）の制約を考慮した所望の量だけ左へ（早い時間の方へ）シフトできるかどうかを判定する。第１のアポイントメントが所望の量だけ全部シフトすることができない場合、「ブロックしている」アポイントメントと指定されて、その実際の左シフト継続時間が記される。
【０１５２】
次に、再帰的左シフトメソッドは先のアポイントメントをカレンダー上で探し出し、先のアポイントメントの終了と第１のアポイントメントの開始の間の時間ギャップ（つまり、アイドルまたはオープン状態）の量を決定する。そして、再帰的左シフトメソッドはそのギャップ量を先のアポイントメントがシフト可能な実際の継続時間から差し引いて、もしあれば修正量を計算し、第１のアポイントメントはその実際の左シフト時間を達成するために先のアポイントメントをシフトしなければならない。同じセットアップを使用する２つのアポイントメントの間に結局連続してはさまれてしまったために消去できるセットアップアポイントメントに遭遇したら、このメソッドはセットアップ継続時間をギャップ量として処理し、先のアポイントメントがシフトすべき修正量を計算する際にセットアップ継続時間を差し引く。
【０１５３】
先のアポイントメントが存在しない場合、または先のアポイントメントが完了したステータスである場合、もしくはこのアポイントメントの実際のシフト量がゼロである場合、あるいは、所望のシフト量が達成されていた場合、再帰的左シフトメソッドは終了し、可能な実際の左シフト継続時間を返す。そうでない場合には、再帰的左シフトメソッドは、自分自身、先のアポイントメントを有する時間、及び先のアポイントメントに対して計算された修正左シフト継続時間を再帰的に呼び出す。再帰的左シフトメソッドが戻ると、可能な実際のシフト量が所望のシフト継続時間に等しい場合のみシフトは実現可能であることを示す。
【０１５４】
カスケードな左シフトが可能でその後も望まれる場合、カスケードな左シフトと称するメソッドが呼び出される。このメソッドは、ＭＳＡがカレンダー上でアポイントメントを左にシフトすることに応答した時にＬＳＡやＰＭＳＡによって呼び出される。カスケードな左シフトメソッドは入力として左にシフトすべき第１のアポイントメント及び所望のシフト継続時間を受け取り、カスケードな左シフトの実行に成功したかどうかを示すブール標識を出力する。
【０１５５】
より詳細には、カスケードな左シフトメソッドは、カスケードな左シフト実現性メソッドにより以前に呼び出された再帰的左シフトメソッドを呼び出す。再帰的左シフトメソッドは、カスケードな左シフト実現性メソッドにより呼び出されたときにちょうど上に説明したように左シフトをカスケードする実現性をチェックする。再帰的左シフトメソッドは、左シフトをカスケードするために必要なアポイントメントアクションを記したリストも返す。このアポイントメントアクションのリストは、影響を受けるアポイントメントの各々をどれだけシフトするか及び消去可能なセットアップアポイントメントを消去するかどうかに対する命令を含んでいる。最も早いアポイントメントが影響を受けている状態で開始するアポイントメントアクションも命令を受ける。だから、これらのアクションは、各々をシーケンシャルに実行するので、どんなアポイントメントもカレンダー上で重複させずに実行できる。再帰的左シフトメソッドが左シフトのカスケードは実現可能であると示している場合、カスケードな左シフトメソッドはアポイントメントアクションの集合の中のアクションを実行し、必要なアポイントメントを実際にシフトして不必要なセットアップアポイントメントを消去した後、シフトの実行に成功したことを示すブール値ｔｒｕｅを返す。再帰的左シフトメソッドが左シフトのカスケードは実現不可能であると示している場合、この方法はシフトを実行できないことを示すブール値ｆａｌｓｅを返す。
【０１５６】
同様に、カスケードなシフトは右へも実行できる。カスケードな右シフト実現性と称する方法は、他のアポイントメントに対応するのに十分なほど大きいスロットをカレンダー上でオープンするために右シフトをカスケードする実現性を判定するスロットオープン実現性メソッドによって呼び出される。カスケードな右シフト実現性メソッドもＭＳＡのヘルパークラスのオブジェクトによって呼び出され、ロットが行うそのアポイントメントを遅い時間のほうへシフトしたいという要求に装置カレンダーが対応できるかどうかを判定する。カスケードな右シフト実現性メソッドは、規定されたアポイントメントで開始するとともに規定された時間量だけシフトするアポイントメントを、カスケードなやり方で右へ（遅い時間の方へ）シフトすることの実現性を判定する。ロックされたアポイントメントはシフトできないものとみなされる。カスケードな右シフト実現性メソッドは、入力として、右へシフトすべき第１のアポイントメント、所望のシフト継続時間、及び第１のアポイントメントに先行するアポイントメントのセットアップを受け取る。このメソッドは、シフトが実現可能かどうか、アポイントメントが実際に使用可能であるシフトの継続時間、セットアップ時間の正味の変更、最初のブロックしているアポイントメント、及び右シフトのカスケードを実行するために必要なアポイントメントアクションを記したリストを示したブール標識からなるシフト実現性の返答を出力する。
【０１５７】
より詳細には、カスケードな右シフト実現性メソッドは、本来の所望シフト継続時間に等しい所望シフト継続時間を有する第１のアポイントメントに、再帰的右シフトと称するメソッドを呼び出す。再帰的右シフトメソッドは、右シフト可能と称する別のメソッドをそのアポイントメントに呼び出して、その最も最近の納入時間の制約を考慮した所望の量だけ右へ（遅い時間の方へ）シフトできるかどうかを判定する。そのアポイントメントが所望の量だけ全部シフトすることができない場合、ブロックしているアポイントメントと指定されて、その実際の右シフト継続時間が記される。次に、再帰的右シフトメソッドは次のアポイントメントカレンダー上で探し出し、このアポイントメントの終了と次のアポイントメントの開始の間の時間ギャップの量を決定する。そして、このメソッドはそのギャップ量をこのアポイントメントがシフト可能な実際の継続時間から差し引いて、もしあれば修正量を計算し、次のアポイントメントはその実際の右シフト時間を達成するためにこのアポイントメントをシフトしなければならない。
【０１５８】
再帰的右シフトメソッドが同じセットアップを使用する２つのアポイントメントの間に結局連続してはさまれてしまったために消去できるセットアップアポイントメントに遭遇したら、セットアップ継続時間をギャップ量として処理し、次のアポイントメントがシフトすべき修正量を計算する際にセットアップ継続時間を差し引く。次のアポイントメント存在しない場合、もしくはこのアポイントメントの実際のシフト量がゼロである場合、あるいは、所望のシフト量が達成されていた場合、このメソッドは終了し、可能な実際の右シフト継続時間を返す。そうでない場合には、再帰的右シフトは、自分自身、次のアポイントメントを有する時間、及び次のアポイントメントに対して計算された修正右シフト継続時間を再帰的に呼び出す。再帰的右シフトメソッドが戻ると、可能な実際のシフト量が所望のシフト継続時間に等しい場合のみシフトは実現可能であることを示す。
【０１５９】
カスケードな右シフトが実現可能でその後も望まれる場合、状況に応じて、カスケードな右シフトを実行するために３つのメソッドのうちの１つを使用する。カスケードな右シフトと称する方法は、規定されたアポイントメントに開始するとともに規定された時間量だけシフトするアポイントメントを右へ（遅い時間の方へ）カスケードなやり方でシフトする。ロックされたアポイントメントは、カスケードな右シフトメソッドによりシフトできるものとみなされる。ロック状態のカスケードな右シフトと称する方法は、規定されたアポイントメントに開始するとともに規定された時間量だけシフトするアポイントメントを右へ（遅い時間の方へ）カスケードなやり方でシフトする。ロックされたアポイントメントは、このメソッドにより、そのＬＤＴの制約内でシフト可能であるとみなされる。強制的なカスケードな右シフトと称する方法は、規定されたアポイントメントに開始するとともに規定された時間量だけシフトするアポイントメントを右へ（遅い時間の方へ）カスケードなやり方でシフトする。このメソッドは、アポイントメントがロックされていても、そのアポイントメントをシフトする。アポイントメントのＬＤＴによりそのアポイントメントが必要な継続時間だけ右シフトするのを阻止されている場合、このメソッドがＬＤＴを所望のシフトを達成するために必要な時間量だけ増加させた後、そのアポイントメントをシフトさせる。
【０１６０】
カスケードな右シフトメソッドは、入力として、右へシフトすべき第１のアポイントメント、所望のシフト継続時間、及び第１のアポイントメントに先行するアポイントメントのセットアップを受け取る。カスケードな右シフトメソッドは、このシフトの実行が成功したかどうかを示したブール標識を出力する。カスケードな右シフトメソッドは再帰的右シフトメソッドを呼び出して、カスケードな右シフト実現性メソッドに対してちょうど上に説明したように右シフトをカスケードすることの実現性をチェックする。再帰的右シフトメソッドは、右シフトをカスケードするために必要なアポイントメントアクションを記したリストも返す。このアポイントメントアクションのリストは、影響を受けるアポイントメントの各々をどれだけシフトするか及び消去可能なセットアップアポイントメントを消去するかどうかに対する命令を含んでいる。最も早いアポイントメントが影響を受けている状態で開始するアポイントメントアクションも命令を受ける。だから、これらのアクションは、各々をシーケンシャルに実行するので、どんなアポイントメントもカレンダー上で重複させずに実行できる。
【０１６１】
再帰的右シフトメソッドが右シフトのカスケードは実現可能であると示している場合、カスケードな右シフトメソッドはアポイントメントアクションの集合の中のアクションを実行し、必要なアポイントメントを実際にシフトして不必要なセットアップアポイントメントを消去した後、シフトの実行に成功したことを示すブール値ｔｒｕｅを返す。再帰的右シフトメソッドが右シフトのカスケードは実現不可能であると示している場合、カスケードな右シフトメソッドシフトを実行できないことを示すブール値ｆａｌｓｅを返す。
【０１６２】
ロック状態のカスケードな右シフトメソッドは入力として右にシフトすべき第１のアポイントメント、所望のシフト継続時間、及び第１のアポイントメントに先行するアポイントメントのセットアップを受け取り、シフトの実行に成功したことを示すブール標識を出力する。ロック状態のカスケードな右シフトメソッドは、ロック状態のカスケードな右シフトメソッドがアポイントメントをロックするかどうかを無視してそのアポイントメントをそのＬＤＴの制約の範囲内でシフト可能とみなすことを除いて、カスケードな右シフトメソッドと同じである。
【０１６３】
強制的なカスケードな右シフトメソッドは入力として右にシフトすべき第１のアポイントメント及び所望のシフト継続時間を受け取り、シフトの実行に成功したことを示すブール標識を出力する。強制的なカスケードな右シフトメソッドは、アポイントメントのＬＤＴによりそのアポイントメントが必要な継続時間だけ右へシフトすることを阻止されている場合、このメソッドがＬＤＴを所望のシフトを達成するために必要な時間量だけ増加させた後、そのアポイントメントをシフトさせることを除いて、ロック状態のカスケードな右シフトメソッドと同じである。
【０１６４】
説明されているように、カスケードな右シフトメソッド、ロック状態のカスケードな右シフトメソッド、及び強制的なカスケードな右シフトメソッドの中のどの１つが呼び出されるかは状況しだいである。カスケードな右シフトメソッドとロック状態のカスケードな右シフトメソッドは、ＭＳＡがカレンダー上でロックされていないアポイントメント及びロックされているアポイントメントをそれぞれ右にシフトすることに応答した時に、ロットとＰＭＳＡによって呼び出される。このＭＳＡはまた、ブロックしているアポイントメントがロックされている時、またはロックされていない時に、消費者の要求に対応してアポイントメントを右にシフトできるかどうかを判定するために、そのヘルパークラスのオブジェクトの中の１つにおいて、これらのメソッドを呼び出す。強制的なカスケードな右シフトメソッドは、カレンダー上のアポイントメントがスケジューリングされた終了時間までにまだ完了しておらず、後に続くアポイントメントをキャンセルする意味がないので、アポイントメントを拡大させるために後に続くアポイントメントをカスケードする方法で強制的に右シフトする状況において、ＬＳＡによって用いられる。
【０１６５】
また、本実施形態は、再帰的なカスケードな右シフトと称するメソッドも含む。ロードＲＳＡとＭＳＡは、連鎖アポイントメントを必要とするイベントに応答して右にシフトするときにこのメソッドを呼び出す。再帰的なカスケードな右シフトメソッドは、規定されたアポイントメントに開始するとともに規定された時間量だけ右へ（遅い時間のほうへ）シフトするアポイントメントをカスケードなやり方でシフトする方法を決定するまで再帰的に動作する。シフトが実現不可能な場合、アポイントメントがロックされていないのなら、ブロックしているアポイントメント、またはバッチアポイントメントのブロックしているバッチ構成要素をキャンセルし、また、ロックされているのなら、その確約枠の終了時間（ＬＤＴ）を増加させる。その後、再帰的なカスケードな右シフトメソッドは必要なシフト継続時間が達成できるまで自分自身を再帰的に呼び出す。
【０１６６】
再帰的なカスケードな右シフトメソッドは、入力として、右へシフトすべき第１のアポイントメント、所望のシフト継続時間、及び、アポイントメントキャンセル操作を除く、右シフトのカスケードを実現するために実行すべきアポイントメントアクションを記したリストを受け取り、出力は返さない。しかし、アポイントメントアクションの入力リストは最初は空であるが、アポイントメントをキャンセルしたりアポイントメントのＬＤＴを増加させたりするもの以外のあらゆるアクションが必要ならば、その後の再帰的呼び出しでアップデートされてもよい。したがって、アポイントメントアクションのリストは入力と出力の両方である。
【０１６７】
再帰的なカスケードな右シフトメソッドはカスケードな右シフト実現性を実行して、右シフトのカスケードの実行が実現可能かどうかを判定する。シフトが実現可能な場合、再帰的なカスケードな右シフトメソッドは終了し、カスケードな右シフト実現性によって供給されたアポイントメントアクションのリストを返す。シフトが実現不可能な場合、再帰的なカスケードな右シフトメソッドはカスケードな右シフト実現性によって供給されたブロックしているアポイントメントを獲得し、そのアポイントメントがバッチアポイントメントなのかどうかを判定する。ブロックしているアポイントメントがバッチアポイントメントである場合、この方法はバッチを構成しているもののうちのどれがバッチアポイントメントが必要な量だけシフトすることをブロックしているのかを判定する。ブロックしているバッチ構成要素がロックされていない場合、そのブロックしているバッチ構成要素をキャンセルする。ブロックしているバッチ構成要素がロックされている場合、このメソッドがそのブロックしているバッチ構成要素のＬＤＴを増加させる。だから、バッチアポイントメントが必要な量だけシフトできるのである。同様に、ブロックしているアポイントメントがバッチアポイントメントではない場合、このメソッドは、そのアポイントメントがロックされていないならばブロックしているアポイントメントをキャンセルし、そのアポイントメントがロックされているならばブロックしているアポイントメントのＬＤＴを増加させる。
【０１６８】
ブロックしているアポイントメントがバッチアポイントメントであるかどうかに関係なく、再帰的なカスケードな右シフトメソッドはブロックしているアポイントメントを消去した後に、再び自分自身を最初に呼び出されたときと同じパラメータを持って再帰的に呼び出す。これにより、２つ以上のアポイントメントが存在する場合には、引き続き生じる再帰的呼び出しで次のブロックしているアポイントメントを見つけて消去する（キャンセルするかＬＤＴを増加して必要なシフトを可能にする）。この再帰は、ブロックしているアポイントメント全てが消去し終わるまで継続し、そしてこのメソッドは、カスケードな右シフト実現性の最後の呼び出しにより供給されたアポイントメントアクションのリストを戻すことにより終了する。このメソッドはアポイントメントをキャンセルするかそのＬＤＴを増加させることによりブロックしているアポイントメントを全て消去するが、クライアントには、右シフトをカスケードすることを実現するために、クライアントの元へ戻される他のアポイントメントアクションを全て実行する責務がある。
【０１６９】
カスケードされたシフトのかわりとなる別の管理手法は、アポイントメントもしくは連鎖アポイントメントを所定の量だけ左または右に引くことである。「連鎖」アポイントメントとは、連続したアポイントメントのことであり、各々は同じセットアップを有する。連鎖アポイントメントを引くと、その中の全アポイントメントが同一の所定の量だけ同一方向に引かれる。この文脈では、「引く」は、１つ以上の予約されたアポイントメントを単一の所定の時間量だけ、またはアポイントメントが１つの場合は、所定の時間だけシフトすることを意味する。
【０１７０】
１つのアポイントメントを所望の開始時間に対して左へ引くために、まず、このような引きが実現可能かどうかを判定する。開始時間が所望の開始時間より後にある最初のアポイントメント（「第１のアポイントメント」）を識別する。所望の開始時間より後にある時間的に最も早いアポイントメントがセットアップアポイントメントである場合にそれを抜かすようにして、セットアップアポイントメントを排除する。それで、セットアップアポイントメントの後にある次のアポイントメントが「第１のアポイントメント」になる。このメソッドが「第１のアポイントメント」を見つけられなかった場合、検索は終了し、結果は「ｎｕｌｌ」となる。「第１のアポイントメント」には互換性のないセットアップが必要な場合、セットアップ継続時間を本来の所望の開始時間に加えることにより、所望の開始時間を再計算する。次に、「第１のアポイントメント」の動的な最速の開始時間（“ＥＳＴ”）をセットアップ時間を除いて計算し、所望の開始時間と比較する。所望の開始時間と動的ＥＳＴの遅い方を選択する。選択された時間と所望の開始時間から、提案された引きが実現可能かどうかを判定する。アポイントメントがロックされているかどうかはこの判定には重要でない、つまり、この引きが実現可能かどうかの判定において、アポイントメントがロックされているかどうかは無視される。
【０１７１】
より技術的には、この判定を行うために、左引き実現性メソッドが呼び出される。この左引き実現性メソッドは、入力として、第１のアポイントメントの所望の開始時間及び所望の開始時間に先行するセットアップを受け取る。この判定は、所望の開始時間と動的ＥＳＴとの間で、上記で説明したように行われる。所望の開始時間と動的ＥＳＴの遅い方を、「第１のアポイントメント」が開始できる最速時間として返す。ＭＳＡはヘルパークラスのオブジェクトの１つにおいて左引き実現性メソッドを呼び出して、現在使用可能な状態のアポイントメントの直後のアイドル時間をなくす、または減らすことが可能かどうかを判定する。
【０１７２】
アポイントメントを左へ引くことが実現可能でありかつ望ましい場合、左引きと称する方法が呼び出される。ＭＳＡはヘルパークラスのオブジェクトの１つからこの左引きメソッドを呼び出して、連鎖アポイントメントを、完了したアポイントメントの終了時間または完了間近のアポイントメント予想の終了時間に対して左に引く。左引きメソッドは入力として、第１のアポイントメントの所望の開始時間及び所望の開始時間に先行するセットアップを受け取る。左引きメソッドは、セットアップ必要条件を考慮して連鎖アポイントメントを左（早い時間）へ引く。このメソッドは、１つ以上のアポイントメントを左へシフトしてあらゆる不必要なセットアップアポイントメントを削除することによって、カレンダーをアップデートする。先のアポイントメントの直後に開始できるように後に続くアポイントメントをより左にシフトすることができないのであれば、連鎖アポイントメント中の全アポイントメントを、その連鎖中の第１のアポイントメントと同じ量だけ左へシフトする。このメソッドは、ロックされたアポイントメントを動的ＥＳＴの制約の範囲内で左へシフトすることを除いて、以下に説明する連鎖左引きと同じ機能を果たす。
【０１７３】
より詳細には、左引きメソッドは左引き実現性メソッドにより返された実際の開始時間とともに呼び出される。左引きメソッドは、アポイントメントを左へシフトする際に、アポイントメントがロックされているかどうかは無視する。左引きメソッドは、第１のアポイントメントを所望の開始時間に対して左へシフトしてあらゆる不必要なセットアップを除去した後、別のアポイントメントを第１のアポイントメントよりは少なく左へシフトしようと試みることにより継続する。このプロセスは、異なるセットアップまたは左にシフトした第１のアポイントメントと少なくとも同じ量左にはシフトできないアポイントメントに遭遇するまで続く。
【０１７４】
左引きメソッドは所望の開始時間（「次のアポイントメント」）後に開始する第１のアポイントメントを探し出すことにより開始する。「次のアポイントメント」がない場合、左引きメソッドは終了する。「次のアポイントメント」が互換性のあるセットアップを有するセットアップアポイントメントの場合、このメソッドはそのセットアップアポイントメントを消去して「次のアポイントメント」をセットアップアポイントメントの後の次のアポイントメントにリセットする。左引きメソッドは、「次のアポイントメント」の開始時間と所望の開始時間の間の差である、「次のアポイントメント」が左にシフトすべき継続時間（「基本となる継続時間」）を計算し、そしてそのアポイントメントを「基本となる継続時間」の量だけ左へシフトする。
【０１７５】
次に、左引きメソッドは、「次のアポイントメント」の後にある次のアポイントメントを獲得する繰り返しループを開始して、当該次のアポイントメントを、左にシフトした最後のアポイントメント（「最後のアポイントメント」）の直後に開始するのに十分なほど左にシフトできるかどうかを判定する。「次のアポイントメント」がないか、「次のアポイントメント」がセットアップアポイントメントである場合、このメソッドは終了する。そうでない場合は、左引きメソッドは、「最後のアポイントメント」の直後に開始するために「次のアポイントメント」が左にシフトすべき時間量（「隣接継続時間」）を計算した後、「次のアポイントメント」が「次のアポイントメント」の開始時間と「最後のアポイントメント」の新たな終了時間との差である「隣接継続時間」だけ左にシフトできるかどうかを判定する。「次のアポイントメント」が「隣接継続時間」だけ左にシフトできない場合、このメソッドは「次のアポイントメント」が「基本となる継続時間」だけ左にシフトできるかどうかを判定する。「次のアポイントメント」が「隣接継続時間」か「基本となる継続時間」のいずれかだけ左へシフトできる場合、次のアポイントメントを実現可能な両継続時間のうちの大きい方の分だけ左に実際にシフトして、「次のアポイントメント」を左にシフトした最後のアポイントメントの後の次のアポイントメントにリセットする。この最後のアポイントメントはその後新たな「最後のアポイントメント」となり、このプロセスは再度繰り返される。
【０１７６】
「次のアポイントメント」がない場合、もしくは「次のアポイントメント」がセットアップアポイントメントである場合、あるいは「次のアポイントメント」が「隣接継続時間」または「基本となる継続時間」だけ左にシフトできない場合、左引きメソッドは終了する準備をする。最後のステップは、実際に左にシフトした「最後のアポイントメント」の後にセットアップを挿入すべきかどうかをチェックすることである。（実際にシフトした「最後のアポイントメント」の後の）「次のアポイントメント」にはセットアップが必要で、そのセットアップは「最後のアポイントメント」のセットアップとは互換性がない場合、または「最後のアポイントメント」終了と「次のアポイントメント」の間の時間量が「次のアポイントメント」のセットアップ継続時間よりも大きい場合、「次のアポイントメント」に直前で先行するセットアップアポイントメントをカレンダー上に予約する。あらゆる必要なセットアップを予約した後、左引きメソッドは終了する。
【０１７７】
また、アポイントメントは連鎖状に「引いて」もよい。例えば、連鎖左引きメソッドを用いて、セットアップが広く行われていて時間がかかる装置カレンダーのスケジュールを最適化する。この種のカレンダーの中の隙間を埋めるために、ＭＳＡは連鎖アポイントメントを壊すことを防ごうとする。しかし、ＭＳＡはまず、連鎖左引き実現性メソッドを呼び出して、セットアップが広く行われていて時間がかかる装置カレンダーのスケジュールを最適化できるかどうかを判定する。
【０１７８】
連鎖左引き実現性メソッドは、同じセットアップを共有する連鎖アポイントメントが連鎖を壊さずに左へ（早い時間の方へ）引くことが可能な時間量を計算する。連鎖左引き実現性メソッドは、ロックされたアポイントメントはシフトできないと考えている。このメソッドは連鎖の中の第１のアポイントメントを入力として受け取り、連鎖がその連鎖を壊すことなく左に引くことが可能な継続時間を出力する。連鎖左引き実現性メソッドは、特定のセットアップ必要条件に依存するアポイントメントが全くなくなるまで、第１のアポイントメントとともに開始し、第１のアポイントメントの後の全アポイントメントを含む連鎖アポイントメントと共に機能する。このメソッドは連鎖中の全アポイントメントを左へシフトできる最大時間量を返す。
【０１７９】
連鎖左引き実現性メソッドはまず「第１のアポイントメント」がセットアップアポイントメントであるかどうかを判定し、もしそうならその後に次のアポイントメントを獲得する。このアポイントメントがその後に「第１のアポイントメント」となる。「第１のアポイントメント」がない場合は、連鎖左引き実現性メソッドが終了し、継続時間はゼロに等しいと言うことを返す。そうでない場合は、「第１のアポイントメント」が存在するならば、連鎖左引き実現性メソッドは「第１のアポイントメント」がシフトできる最大時間量を決定し、この継続時間が「最小」シフト継続時間になる。
【０１８０】
次に、連鎖左引き実現性メソッドは、「第１のアポイントメント」の後にある次のアポイントメント（「次のアポイントメント」）を獲得する繰り返しループを開始して、「次のアポイントメント」を「最小」シフト継続時間だけ左にシフトできるかどうかを判定する。連鎖左引き実現性メソッドは、「次のアポイントメント」が左へシフトできる最大時間量（「最大」シフト継続時間）を決定し、この「最大」シフト継続時間を「最小」シフト継続時間の現在値と比較する。「最大」シフト継続時間が「最小」シフト継続時間の現在値よりも小さければ、「最小」シフト継続時間を「最大」シフト継続時間に等しい値に設定し、「次のアポイントメント」の後のアポイントメントを見つけることにより、このメソッドは再度繰り返される。見つかったアポイントメントはその後「次のアポイントメント」になる。繰り返しループ内のどんな時点においても「次のアポイントメント」がない場合、もしくは「次のアポイントメント」がセットアップアポイントメントである場合、あるいは「次のアポイントメント」がセットアップ必要条件を持っていない場合、連鎖左引き実現性メソッドは終了し、「最小」シフト継続時間の現在値に等しい継続時間を返す。
【０１８１】
連鎖左引きが実現可能でその後も望ましい場合、連鎖左引きメソッドが呼び出される。連鎖左引きメソッドは、入力として、このメソッドの結果として連鎖アポイントメントが開始すべき時間及び開始時間の前のセットアップを受け取る。連鎖左引きメソッドは出力を戻さない。連鎖左引きメソッドは、セットアップ必要条件を考慮して連鎖アポイントメントを左に（早い時間のほうに）引く。このメソッドは１つ以上のアポイントメントを左へシフトしてあらゆる不必要なセットアップアポイントメントも除去することによりカレンダーをアップデートする。先のアポイントメントの直後に開始できるようにアポイントメントをより左にシフトすることができないのであれば、連鎖内の全アポイントメントを連鎖内の第１のアポイントメントと同じ量だけ左へシフトする。このメソッドは、ロックされたアポイントメントはシフトできないと考えることを除いて、左引きメソッドに非常によく似ている。連鎖アポイントメントを左に引くために、状況に応じて、連鎖左引き実現性メソッドにより戻された実際の開始時間、つまりより遅い開始時間と共に、連鎖左引きメソッドが呼び出される。ロックされたアポイントメントをシフトしないことを除いて、連鎖左引きメソッドは左引きメソッドと同じ機能を果たす。アポイントメントがロックされている場合、このメソッドはアポイントメントをシフトできないと考える。
【０１８２】
連鎖アポイントメントを右にも引いてもよい。連鎖右引きと称するメソッドを用いて、セットアップが広く行われていて時間がかかる装置カレンダーのスケジュールを上述の連鎖左引きメソッドと同様の方法で最適化する。再び、この種のカレンダーの中の隙間を埋めるために、ＭＳＡは連鎖アポイントメントを壊すことを防ごうとする。しかし、連鎖右引き実現性と称するメソッドがまず呼び出され、セットアップが広く行われていて時間がかかる装置カレンダーのスケジュールを最適化できるかどうかを判定する。
【０１８３】
具体的には、連鎖右引き実現性メソッドは入力として、右に引かれる連鎖アポイントメントのうち最も右のアポイントメントを受け取り、この連鎖アポイントメントを連鎖を壊さずに右に引くことが可能な時間量を出力する。連鎖右引き実現性メソッドは、規定されたアポイントメントで開始する連鎖アポイントメントが同じセットアップを使用する連鎖アポイントメントを壊さずに右に引くことが可能な継続時間（時間量）を計算する。このメソッドはロックされたアポイントメントをシフトできないと考える。
【０１８４】
連鎖右引き実現性メソッドはまず、規定されたアポイントメントが右にシフト可能な時間量を決定し、この継続時間が「最小継続時間」、つまりその連鎖アポイントメントが左に引くことが可能な時間量の初期値になる。このメソッドはまた、あるならば、規定されたアポイントメントに対するセットアップ必要条件を決定する。次に、このメソッドは先のアポイントメントを獲得する繰り返しループに入り、連鎖が終了したかどうか、もしくは「先のアポイントメント」がシフトできるかどうかを判定する。「先のアポイントメント」がない場合、または「先のアポイントメント」にはセットアップが必要ない場合、もしくは「先のアポイントメントの」セットアップ必要条件が入力アポイントメントのセットアップと互換性がない場合、あるいは「先のアポイントメント」がセットアップアポイントメントである場合、その連鎖は壊れてしまい、このメソッドは「最小継続時間」を返すことにより終了する。そうでない場合は、連鎖右引き実現性メソッドは「先のアポイントメント」が右にシフト可能な時間量を決定し、「最小継続時間」とこの新たな継続時間を比較する。新たな継続時間が「最小の継続時間」よりも小さい場合は、「最小の継続時間」の値を新たな継続時間に設定する。必要ならば「最小の継続時間」の調整後、古い「先のアポイントメント」の直前のアポイントメントである新しい「先のアポイントメント」を獲得することによって繰り返しループが再び開始される。
【０１８５】
実現可能かつその後も望まれる場合、連鎖右引きメソッドを呼び出すことにより連鎖を右に引く。連鎖右引きメソッドは、入力として、右に引かれる連鎖アポイントメントの最も右側のアポイントメント及びこのメソッドの結果連鎖アポイントメントが終了する時間を受け取る。連鎖右引きメソッドは出力を返さない。連鎖右引きメソッドは、実際にアポイントメントを右にシフトすることを除いて、連鎖右引き実現性メソッドに非常に似ている。
【０１８６】
連鎖右引きメソッドは、連鎖右引き実現性メソッドにより戻された継続時間より小さいか等しい継続時間で呼び出される。連鎖右引きメソッドはまず、規定されたアポイントメントが右にシフト可能かどうかをチェックして、規定された時間に終了し、アポイントメントは規定された時間より小さいか等しい支援可能な最大終了時間（「新たな終了時間」）を返す。次に、連鎖右引きメソッドはアポイントメントをシフトして、「新たな終了時間」に終了する。そして、もしあれば、規定されたアポイントメントに対するセットアップ必要条件を決定し、アポイントメントの「新たな開始時間」も決定する。
【０１８７】
次に、連鎖右引きメソッドは先のアポイントメントを獲得する繰り返しループに入り、その連鎖が既に終了したかどうか、または「先のアポイントメント」がシフトできるかどうかを判定する。「先のアポイントメント」が存在し、かつ「先のアポイントメント」にはセットアップが必要であり、「先のアポイントメントの」セットアップ必要条件が入力アポイントメントのセットアップと互換性がある場合、このメソッドは「先のアポイントメント」がシフト可能かどうかをチェックして「新たな開始時間」に終了する。「先のアポイントメント」は「新たな開始時間」より小さいか等しい支援可能な最大終了時間（「新たな終了時間」）を戻した後、このメソッドは「先のアポイントメント」をシフトして、「新たな終了時間」に終了する。「先のアポイントメント」がセットアップアポイントメントである場合、このメソッドは終了し、そうでない場合は、「新たな開始時間」を「先のアポイントメント」の新たな開始時間に設定してから、古い「先のアポイントメント」の直前にあるアポイントメントである新たな「先のアポイントメント」を獲得することにより、再度繰り返しループを開始する。
【０１８８】
繰り返しループを停止させることができる別の条件が１つ存在する。「先のアポイントメント」がない場合、もしくは「先のアポイントメント」にはセットアップが必要ない場合、あるいは、「先のアポイントメントの」セットアップ必要条件が入力アポイントメントのセットアップと互換性がない場合、連鎖が壊れ、このメソッドは終了する準備を始める。「先のアポイントメント」が入力アポイントメントのセットアップと互換性があるセットアップアポイントメントである場合、セットアップアポイントメントをシフトして「新たな開始時間」に終了する。そうでない場合は、連鎖右引きメソッドが終了する。
【０１８９】
これらとは別の管理手法は、カレンダー上のスロットのオープンやクリアに関するものではなく、「飛び越し」を行うものである。この飛び越しの手法を図８Ｂに示す。この手法について関連する事柄は上記にて説明してある。本実施形態では、飛び越し実現性と称するメソッドが呼び出されて、飛び越しが実現可能かどうかを判定し、飛び越しと称するメソッドが呼び出されることにより実際に飛び越しを行う。この飛び越し手法の利用法の１つとして、アイドル時間の直後のアポイントメントがアイドル時間をなくすために十分なほど左、つまり早い時間の方へシフトできない時に装置カレンダー上でそのアイドル時間を埋めることが挙げられる。装置スケジューリングエージェントは、この状況において、次に続くアポイントメントが間に入るアポイントメントを飛び越して早い時間に開始することにより、アイドル時間を埋めることを考える。これらのメソッドの各々を以下に詳細に述べる。
【０１９０】
飛び越し実現性メソッドは、カットオフ時間及び現在のセットアップを用いて、最速開始時間がカットオフ時間の前にあるカレンダー上のアポイントメントを全て探し出す。次に、飛び越し実現性メソッドは、可能性のある「飛び越しを行う」アポイントメントをその本来の位置から一時的に除去して、可能性のある開始時間を所望の開始時間とＥＳＴの最大値として計算する。次に、飛び越し実現性メソッドはその可能性のある開始時間を用いて、現在カレンダー上にあり所望の開始時間後に開始する第１のアポイントメントの新たな開始時間を決定する。飛び越し実現性メソッドは、最速開始時間がカットオフ時間の前にある各アポイントメントの飛び越しを評価する。
【０１９１】
飛び越し実現性メソッドはカスケードな右シフト実現性メソッドを呼び出して、この第１のアポイントメントをこの新たな開始時間へシフトできるかどうかをチェックする。実現可能な場合、飛び越し実現性メソッドは、この「飛び越し」アクションにより生じる正味のセットアップの変更を計算して飛び越し実現性応答を生成し、この応答を飛び越し実現性応答集合に加える。飛び越し実現性応答は、１つの「飛び越しを行う」アポイントメントに関する情報の集合であり、飛び越し実現性応答集合は様々な「飛び越しを行う」アポイントメントに対する飛び越し実現性応答の集合である。カスケードな右シフトが実現不可能な場合、可能性のある「飛び越しを行う」アポイントメントを「飛び越しを行う」アポイントメントの候補者として選択することはない。カスケードな右シフト実現性メソッドが戻った後、飛び越し実現性メソッドは一時的に除去したアポイントメントを再びカレンダーの中に復活させる。
【０１９２】
実現可能であり、かつその後も望まれる場合、飛び越しメソッドが呼び出されて、実際に飛び越しアクションを行う。飛び越しメソッドは入力として、数ある中でもとりわけ、「飛び越しを行う」アポイントメントの新たな開始時間もしくはプリセットアップが必要ならば「飛び越しを行う」アポイントメントのプリセットアップアポイントメントである開始時間、及び現在のセットアップを受け取る。飛び越しメソッドは開始時間、現在のセットアップ、及び飛び越しを行うアポイントメントのセットアップを用いて「飛び越しを行う」アポイントメントの本当の開始時間を探し出し、「飛び越しを行う」アポイントメントをカレンダーから一時的に除去することも行う。
【０１９３】
次に、飛び越しメソッドはカスケードな右シフトメソッドを呼び出して、「飛び越しを行う」アポイントメント及び可能性のあるポストセットアップアポイントメントのスロットをクリアにする。カスケードな右シフトの呼び出しに成功した場合、このメソッドは、シミュレートされた左シフトを用いてカレンダー内の新たな開始時間に飛び越しを行うアポイントメントを戻す前方飛び越しと称するメソッドを呼び出す。そうでない場合は、カスケードな右シフトの呼び出しに成功しなかった場合、飛び越しメソッドがカスケードな右シフトの呼び出しから得た例外を投げて、一時的に除去したアポイントメントをカレンダーに戻す。カスケードな右シフトの呼び出しが例外を全く投げなかったがｆａｌｓｅ値を返した場合、飛び越しメソッドは重複例外も投げる。最適の飛び越しアポイントメントは、全ての可能性のある飛び越しアポイントメントの中で合計アイドル時間が最も小さいものである。合計アイドル時間とは、現在の時間と第１のアポイントメント（「飛び越しを行うアポイントメント」）の開始時間との間の継続時間と正味のセットアップ継続時間の合計である。
【０１９４】
これらのカレンダー管理手法の中には、プロセスフロー内の装置の能力や性能に関係するものもある、例えば、ＭＳＡは、多くの場合、ダウン状態だったチャンバーが現在利用可能になったことにより装置のスループットが増加したことを検出すると、スループット増加と称するメソッドを呼び出す。スループット増加メソッドはまだ開始されていないカレンダー上の処理アポイントメントを全て縮小することにより、装置のスループットの割合の増加に対応する。アポイントメントを縮小するごとに、このメソッドは次に続くアポイントメントを左（早い時間のほう）へ引くことを試みた後、縮小した最後のアポイントメントの後に処理アポイントメントがもっと存在するならば、自分自身を再帰的に呼び出す。
【０１９５】
より詳細には、スループット増加メソッドは、入力として、装置のスループットが増加した時の開始する時間及び、例えば、開始する時間に利用可能なチャンバー数を受け取り、出力は返さない。スループット増加メソッドは、規定された時間後に開始するが処理は始まっていない最初の処理アポイントメントを獲得するこのような処理アポイントメントがない場合、スループット増加メソッドが終了する。そうではない場合、スループット増加メソッドはロットのウェハカウント及びプロセス操作を検索して、与えられた装置の処理時間及び利用可能なチャンバーの数を得る。スループット増加メソッドは、処理時間を開始時間に加えることにより、アポイントメントの新たな終了時間を計算した後、そのアポイントメントを縮小して新たな終了時間に終了する。
【０１９６】
次に、スループット増加メソッドは、縮小したアポイントメントの後に次のアポイントメント（「次のアポイントメント」）を獲得し、「次のアポイントメント」がない場合はこのメソッドを終了する。「次のアポイントメント」が存在する場合は、このメソッドは連鎖左引き実現性メソッドを「次のアポイントメント」に対して呼び出す。連鎖左引き実現性メソッドは、「次のアポイントメント」の実現可能なシフト継続時間を返す。この実現可能なシフト継続時間は、スループット増加メソッドが、「次のアポイントメント」の最速の開始時間を計算するために、後に「次のアポイントメント」の開始時間から差し引くものである。「次のアポイントメント」の最速開始時間が縮小されたアポイントメントの新たな終了時間より早い場合、「次のアポイントメント」の所望の開始時間を縮小されたアポイントメント新たな終了時間に設定する。そうでない場合には、所望の開始時間を「次のアポイントメント」に対して計算された最速開始時間に設定する。「次のアポイントメント」の所望の開始時間が実際の開始時間よりも早い場合、スループット増加メソッドは、所望の開始時間と縮小されたアポイントメントのセットアップを有する連鎖左引きメソッドを呼び出す。その後、スループット増加メソッドは、縮小されたアポイントメントの新たな終了時間を有する自分自身を、利用可能なチャンバー数と同じ回数再帰的に呼び出す。スループット増加メソッドは、カレンダー上に処理アポイントメントが全くなくなると終了する。
【０１９７】
上記説明から明らかなように、本発明のカレンダリング手法は、予約されたアポイントメントを表す情報を記憶する以上のものをもたらしている。カレンダリング手法によって、スケジューリングプロセス全体にわたって、アポイントメント実行や応答のよいスケジューリングに加えて、入札生成、入札確定、入札要求を含む機能性が得られる。例えば、スロットオープン実現性、スロットオープン、スロットオープン及びアポイントメント予約、スロットクリア実現性、強制スロットクリア及びアポイントメント予約の各メソッドは、入札確定時に呼び出される。また、スロットオープン実現性及びスロットクリア実現性の各メソッドは、入札生成時に呼び出される。カスケードな右シフト実現性、ロック状態のカスケードな右シフト実現性、左引き実現性、連鎖左引き実現性、カスケードな右シフト、ロック状態のカスケードな右シフト、左引き、連鎖左引き、連鎖右引きの各メソッドは、既に予約された予約されたアポイントメントを変更するために呼び出される。カスケードな左シフト、ロック状態のカスケードな右シフト、再帰的なカスケードな右シフトの各メソッドは、応答のよいスケジューリングにおいて呼び出される。
【０１９８】
なお、ここにある詳細な説明のいくつかの箇所は、コンピュータシステムまたはコンピュータデバイスのメモリ内にあるデータビットに対するオペレーションの記号表現を含むソフトウェアが実施するプロセスの観点で示されている。これらの記述及び表現は、当業者が使用する手段であり、自分たちの業務の趣旨を他の技術者に最も効果的に伝えることができる。このプロセスやオペレーションは物理的な操作や物理的な量を必要とする。必要であるわけではないが、通常、これらの量は、蓄積、伝達、結合、比較、さもなければ操作可能な電気的、磁気的、光学的信号の形を採る。主に一般的に使用すると言う理由から、このような信号をビット、値、要素、記号、文字、用語、数等として言及すると便利であると折に触れて証明されている。
【０１９９】
しかしながら、こういった用語や類似物は適した物理量に関連することになっており、これらの定量化に適用される便利な標識でしかないことを心に留めておくべきである。特に記されない限り、あるいは明らかなように、本開示全体にわたって、これらの記述は、電子デバイスの記憶機構内の物理（電子、磁気、または光学的）量として表されるデータを、記憶機構内、もしくは伝動装置や表示デバイスの物理量として同様に表される他のデータに操作、変換する電子デバイスのアクション及びプロセスを言及している。このような記述を示す用語の例としては、制限はないが、たとえば、「処理」、「コンピュータ」、「計算」「判定」「表示」等がある。
【０２００】
また、本発明のソフトウェアが実施する態様は、通常、プログラム記憶媒体の形で符号化されており、また伝達媒体上で実施されている。プログラム記憶媒体は、磁気（例えば、フロッピー（登録商標）ディスクやハードディスクドライブ）もしくは光学式（例えば、読み出し専用コンパクトディスクつまり「ＣＤ‐ＲＯＭ」）であってもよく、読み出し専用でもランダムアクセス可能でもよい。同様に、伝達媒体は、ツイストペア線、同軸ケーブル、光ファイバー、または同業者には既知の適当な伝達媒体であってもよい。本発明は、いずれの実施例の態様にも限定されない。
【０２０１】
したがって、本発明は、様々な態様、実施形態、及び実施例において、以下のことを含んでいるが、これらに限定されるものではない。
・自立したエージェント、カレンダー、及びアポイントメントを備えており、エージェントはスケジューリングと処理のうちの少なくとも１つに対する複数の製造ドメインエンティティのうちの１つのエンティティを表し、各カレンダーは各ドメインエンティティのスケジューリングを行う際にエージェントの１つによって保守されており、各アポイントメントは複数のアポイントメントステータスの１つに存在すると共に、エージェントによって製造ドメインエンティティの各カレンダー上に製造ドメインエンティティのかわりにスケジューリングされているカレンダリングシステム
・最速開始時間と最終納品時間によって区画された確約枠内に、確約枠内の開始時間と終了時間内でフロート状態にあって流動的に変更し得る処理ウィンドウを備えたアポイントメントを有するカレンダーの使用
・確約枠に、少なくとも１つのロットを処理して消費する第１の区間（つまり「消費区間」）と消費されたロットを処理する第２の区間（つまり「処理区間」）を含む流動的に変更し得る処理ウィンドウを備えたアポイントメントを有するカレンダーの使用
・仮のアポイントメントを予約するか、または予約されたアポイントメントを変更するかのどちらかにより、
・カレンダー上の仮のアポイントメントのスロットをオープンし、実現可能なスロットをオープンし、そしてオープンされたスロットにおいて仮のアポイントメントをカレンダー上に予約することの実現性を判定する
・カレンダー上の仮のアポイントメントのスロットをクリアにし、実現可能なスロットをクリアにし、そしてクリアになったスロットにおいて仮のアポイントメンをカレンダー上に予約することの実現性を判定する
・予約されたアポイントメントをより早い時間に予約されたアポイントメントの終了時間まで左へ引く
・予約された連鎖アポイントメントをより早い時間に予約されたアポイントメントの終了時間まで左へ引く
・予約された連鎖アポイントメントを右へ引く
・複数の予約されたアポイントメントカスケードに左へシフトする
・複数の予約されたアポイントメントカスケードに右へシフトする
等の強力なカレンダー操作手法のうちのいずれも用いて行うプロセスフローにおけるカレンダー上のアポイントメントの操作
・プロセスフローにおける同じ作業において、異なる製造ドメインエンティティに対する異なるエージェントによって管理されている異なるカレンダー上の相当するアポイントメントの同期
・既に予約されたアポイントメントが存在する新しいアポイントメントの予約の明示的な制限、及び既に予約されたアポイントメントの属性を少なくとも１つ有する新しいアポイントメントの予約の暗黙的な制限
本発明のさらに他の態様、実施形態、及び実施例は、本開示の利益を有する当業者には明らかであろう。
【０２０２】
これにより、詳細な説明の結論とする。上述の特定の実施形態は例示的なものでしかなく、だから、本発明は、異なるがここにある技術の利益を有する当業者には明らかな同等のやり方での変更や実施が行われてもよい。なお、説明されていないさらなる変形を他の実施形態において採用してもよい。例えば、装置が販売用のアイドル時間を有する場合、宣伝してもよく、また、個々の装置に、利用に見合った目標としての販売ノルマを割り当ててもよい。さらに、以下の請求項に述べられていることを除いて、ここに示した制限もしくは設計の詳細に限定することを意図してはいない。したがって、上述の特定の実施形態は変更や変形を行ってもよく、このような変形例は全て添付の請求項により定義されたような本発明の範囲内にあるとみなされることは明らかであろう。よって、ここの望まれる保護は以下の請求項に従う。
【符号の説明】
【０２０３】
１００      プロセスフロー
１１０      コンピュータデバイス
１１５      プロセスツール
１２０      通信リンク
１２５      コンピュータシステム
１３０      ロット
１３５      ウェハ
２００      オペレーティングシステム
２０５      プロセッサ
２１０      記憶装置
２１５      バスシステム
２３０      光ディスク
２３５      電磁ディスク
２４０      モニタ
２４５      キーボード
２５０      マウス
２５５      ユーザインターフェースソフトウェア
２６０      ユーザインターフェース
２６５      ソフトウェアエージェント
３００      プロセスフロー
３０５      スケジューリングエージェント
３２０      レチクル
３２５      メッセージ
３２７      カレンダー
３４０      メッセージ
３４５      資源カレンダー
【図１】
2010165378.tif 000003
【図２】
2010165378.tif 000004
【図３】
2010165378.tif 000005
【図４Ａ】
2010165378.tif 000006
【図４Ｂ】
2010165378.tif 000007
【図４Ｃ】
2010165378.tif 000008
【図５】
2010165378.tif 000009
【図６】
2010165378.tif 000010
【図７】
2010165378.tif 000011
【図８Ａ】
2010165378.tif 000012
【図８Ｂ】
2010165378.tif 000013
【図９Ａ】
2010165378.tif 000014
【図９Ｂ】
2010165378.tif 000015
【図１０Ａ】
2010165378.tif 000016
【図１０Ｂ】
2010165378.tif 000017
【図１１】
2010165378.tif 000018