(57)【特許請求の範囲】
【請求項１】
プロセスプラント内の１つ以上のデータ源に記録されたプロセスコントロールデータへアクセスするための処理をコンピュータに実行させるためのプログラムであって、
前記処理は、
ユーザインタフェースリクエストに応答して複数のアプリケーションのうちの１つと関連付けられた通信装置に第１のクライアントオブジェクトおよび第２のクライアントオブジェクトをロードするステップであって、前記第１のクライアントオブジェクトおよび前記第２のクライアントオブジェクトは、前記１つ以上のデータ源の少なくとも１つに記録されたデータを示すために使用される第１の特定のデータ配列を定義するクライアントオブジェクト階層を有するクライアントスキーマ組織に基づいて組織化されたプロセスコントロールデータへのアクセスと関連しているステップと、
前記第１のクライアントオブジェクトおよび前記第２のクライアントオブジェクトと関連し、前記プロセスプラント内の前記１つ以上のデータ源の１つに関連付けられ通信可能に結合されたサーバーからプロセスコントロールデータを取得するように構成されたリアルオブジェクトをロードするステップであって、前記サーバーは、前記クライアントオブジェクト階層と異なる、前記１つ以上のデータ源のうちの１つに記録された前記データを示すために使用される第２の特定のデータ配列を定義するサーバーオブジェクト階層を有する、サーバースキーマ組織に基づいて組織化されており、前記サーバースキーマ組織を使用して１つの前記データ源の前記データへアクセスし、
プロセスコントロールデータを前記サーバースキーマ組織から前記クライアントスキーマ組織にマッピングして、前記プロセスコントロールデータを前記第１のクライアントオブジェクトおよび前記第２のクライアントオブジェクトに通信するステップと、
前記第１のクライアントオブジェクトと関連した第１のユーザインタフェースおよび前記第２のクライアントオブジェクトと関連した第２のユーザインタフェースを介して前記プロセスコントロールデータを取得するステップと、
前記プロセスプラント内におけるプロセスコントロール機能を実施するために、前記第１のユーザインタフェースおよび前記第２のユーザインタフェース内の前記複数のアプリケーションによって、前記第１のクライアントオブジェクトおよび前記第２のクライアントオブジェクトによって取得した前記プロセスコントロールデータを使用するステップと、
を含むプログラム。
【請求項２】
前記プロセスコントロールデータが、少なくとも１つのマスクに基づいて前記サーバースキーマ組織から前記クライアントスキーマ組織にマッピングされる、請求項１に記載のプログラム。
【請求項３】
前記第１のユーザインタフェースが前記第１のクライアントオブジェクトの使用を終了した後、前記第１のクライアントオブジェクトが非アクティブであると特定するステップをさらに含む、請求項１に記載のプログラム。
【請求項４】
前記第１のクライアントオブジェクトをアンロードするステップをさらに含む、請求項３に記載のプログラム。
【請求項５】
更新通知に応答して前記第１のユーザインタフェースまたは前記第２のユーザインタフェースと関連したプロセスコントロールデータを更新するステップをさらに含む、請求項１に記載のプログラム。
【請求項６】
プロセスプラント内の１つ以上のデータ源に記録されたプロセスコントロールデータにアクセスすることを要求する１つ以上のアプリケーション用いてプロセスプラント内でプロセスコントロール動作を実施するためのプロセスコントロールシステムであって、
前記プロセスコントロールシステムは、
前記プロセスプラントの動作に関連する前記プロセスコントロールデータを取得、又は記録する、１つ以上のプロセスコントロールデータベースと、
前記１つ以上のプロセスコントロールデータベースの少なくとも１つと通信可能に結合されたサーバーであって、前記サーバーは、前記プロセスコントロールデータベースの１つに記録されたデータを示すために使用される第１の特定のデータ配列を定義する第１のオブジェクト階層を有するサーバースキーマ組織に関連付けられた第１のデータレイアウトを用いて１つの前記プロセスコントロールデータベースのデータにアクセスし、
１つ以上のアプリケーションを実行する１つ以上の処理装置と、
プロセッサシステムと、前記プロセッサシステムに通信可能に接続されたメモリと、を有する、前記１つ以上のアプリケーションと通信可能に結合された通信装置と、
を有する、前記プロセスコントロールシステムであって、
前記プロセッサシステムが、
ユーザインタフェースリクエストに応答して第１のクライアントオブジェクトおよび第２のクライアントオブジェクトをロードすることであって、前記第１のクライアントオブジェクトおよび前記第２のクライアントオブジェクトはクライアントスキーマ組織に基づいて組織化されたプロセスコントロールデータへのアクセスと関連し、前記クライアントスキーマ組織は、前記第１のオブジェクト階層と異なる、前記１つ以上のプロセスコントロールデータベースの内の１つに記録されたデータを示すために使用される第２の特定のデータ配列を定義する第２のオブジェクト階層を有し、
前記第１のクライアントオブジェクトおよび前記第２のクライアントオブジェクトと関連し、かつサーバースキーマ組織に基づいて組織化されたプロセスコントロールデータを取得するように構成されたリアルオブジェクトをロードすることと、
プロセスコントロールデータを前記サーバースキーマ組織から前記クライアントスキーマ組織にマッピングして、前記プロセスコントロールデータを前記第１のクライアントオブジェクトおよび前記第２のクライアントオブジェクトに通信することと、
前記プロセスプラント内でプロセスコントロール機能を実行するために前記第２のオブジェクト階層内において前記１つ以上のアプリケーションで使用するために、前記第１のクライアントオブジェクトと関連した第１のユーザインタフェースおよび前記第２のクライアントオブジェクトと関連した第２のユーザインタフェースを介して前記プロセスコントロールデータを取得すること、
を可能にする記憶された命令を含む前記メモリと、
を含む、プロセスコントロールシステム。
【請求項７】
前記命令は前記プロセッサシステムが、少なくとも１つのマスクに基づいて前記プロセスコントロールデータを前記サーバースキーマ組織から前記クライアントスキーマ組織にマッピングできるようにする、請求項６に記載のプロセスコントロールシステム。
【請求項８】
前記命令は前記プロセッサシステムが、前記第１のユーザインタフェースが前記第１のクライアントオブジェクトの使用を終了した後、前記第１のクライアントオブジェクトが非アクティブであると特定できるようにする、請求項６に記載のプロセスコントロールシステム。
【請求項９】
前記命令は前記プロセッサシステムが、前記第１のクライアントオブジェクトをアンロードできるようにする、請求項８に記載のプロセスコントロールシステム。
【請求項１０】
前記命令は前記プロセッサシステムが、更新通知に応答して、前記第１のユーザインタフェースまたは前記第２のユーザインタフェースと関連したプロセスコントロールデータを更新できるようにする、請求項６に記載のプロセスコントロールシステム。
【請求項１１】
プロセスプラント内の１つ以上のデータ源に記録されたプロセスコントロールデータへアクセスするための処理をコンピュータに実行させるためのプログラムを記録したコンピュータ読み取り可能な記録媒体であって、
前記処理は、
ユーザインタフェースリクエストに応答して複数のアプリケーションのうちの１つと関連付けられた通信装置に第１のクライアントオブジェクトおよび第２のクライアントオブジェクトをロードすることであって、前記第１のクライアントオブジェクトおよび前記第２のクライアントオブジェクトは、前記１つ以上のデータ源の少なくとも１つに記録されたデータを示すために使用される第１の特定のデータ配列を定義するクライアントオブジェクト階層を有するクライアントスキーマ組織に基づいて組織化されたプロセスコントロールデータへのアクセスと関連していることと、
前記第１のクライアントオブジェクトおよび前記第２のクライアントオブジェクトと関連し、前記プロセスプラント内の前記１つ以上のデータ源の１つと関連付けられ通信可能に結合されたサーバーからプロセスコントロールデータを取得するように構成されたリアルオブジェクトをロードすることであって、前記サーバーは、前記クライアントオブジェクト階層と異なる、前記１つ以上のデータ源のうちの１つに記録された前記データを示すために使用される第２の特定のデータ配列を定義するサーバーオブジェクト階層を有する、サーバースキーマ組織に基づいて組織化されており、前記サーバースキーマ組織を使用して前記１つのデータ源のデータへアクセスし、
プロセスコントロールデータを前記サーバースキーマ組織から前記クライアントスキーマ組織にマッピングし、前記プロセスコントロールデータを前記第１のクライアントオブジェクトおよび前記第２のクライアントオブジェクトに通信することと、
前記第１のクライアントオブジェクトと関連した第１のユーザインタフェースおよび前記第２のクライアントオブジェクトと関連した第２のユーザインタフェースを介して前記プロセスコントロールデータを取得することと、
前記プロセスプラント内におけるプロセスコントロール機能を実施するために、前記第１のユーザインタフェースおよび前記第２のユーザインタフェース内の前記複数のアプリケーションによって、前記第１のクライアントオブジェクトおよび前記第２のクライアントオブジェクトによって取得した前記プロセスコントロールデータを使用することと、
を含む、コンピュータ読み取り可能な記録媒体。
【請求項１２】
前記処理は、
少なくとも１つのマスクに基づいて前記プロセスコントロールデータを前記サーバースキーマ組織から前記クライアントスキーマ組織にマッピングさせる、ことを更に含む、請求項１１に記載のコンピュータ読み取り可能な記録媒体。
【請求項１３】
前記処理は、
前記第１のユーザインタフェースが前記第１のクライアントオブジェクトの使用を終了した後、前記第１のクライアントオブジェクトが非アクティブであると特定させる、ことを更に含む、請求項１１に記載のコンピュータ読み取り可能な記録媒体。
【請求項１４】
前記処理は、
前記第１のクライアントオブジェクトをアンロードさせる、ことを更に含む、請求項１３に記載のコンピュータ読み取り可能な記録媒体。
【請求項１５】
前記処理は、
更新通知に応答して前記第１のユーザインタフェースまたは前記第２のユーザインタフェースと関連したプロセスコントロールデータを更新させる、ことを更に含む、請求項１１に記載のコンピュータ読み取り可能な記録媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
（関連出願）
本出願は、２００４年５月４日に出願され、かつ本出願が全体を参照してここに組み込んでいる、「プロセス制御システムを表現し、監視し、対話するためのグラフィックユーザインタフェース（Ｇｒａｐｈｉｃａｌ  Ｕｓｅｒ  Ｉｎｔｅｒｆａｃｅ  ｆｏｒ  Ｒｅｐｒｅｓｅｎｔｉｎｇ，Ｍｏｎｉｔｏｒｉｎｇ，ａｎｄ  Ｉｎｔｅｒａｃｔｉｎｇ  ｗｉｔｈ  Ｐｒｏｃｅｓｓ  Ｃｏｎｔｒｏｌ  Ｓｙｓｔｅｍｓ）」と題された米国仮特許出願第６０，５６７，９８０号の利点の一般的な分野の出願であり、また優先権のためにこれを特許請求する。本出願はまた、２００３年７月２１日に出願され、かつ２００４年８月５日に米国公開第２００４／０１５３８０４号として公開された、「グラフィックディスプレイ要素、プロセスモジュールおよび制御モジュールのプロセスプラントにおける統合（Ｉｎｔｅｇｒａｔｉｏｎ  ｏｆ  Ｇｒａｐｈｉｃ  Ｄｉｓｐｌａｙ  Ｅｌｅｍｅｎｔｓ，Ｐｒｏｃｅｓｓ  Ｍｏｄｕｌｅｓ  ａｎｄ  Ｃｏｎｔｒｏｌ  Ｍｏｄｕｌｅｓ  ｉｎ  Ｐｒｏｃｅｓｓ  Ｐｌａｎｔｓ）」と題された米国特許出願第１０／６２５，４８１号に関連しており、これはまた２００２年１０月２２日に出願され、かつ２００４年４月２２日に米国公開第２００４／００７５６８９号として公開された、「プロセスプラントにおけるスマートプロセスモジュールおよびオブジェクト（Ｓｍａｒｔ  Ｐｒｏｃｅｓｓ  Ｍｏｄｕｌｅｓ  ａｎｄ  Ｏｂｊｅｃｔｓ  ｉｎ  Ｐｒｏｃｅｓｓ  Ｐｌａｎｔｓ）」と題された米国特許出願第１０／２７８，４６９号の一部継続出願であり、これらの開示全体は全体を参照してここに組み込まれている。本出願はまた、２００３年２月１８日に出願され、かつ２００４年１０月７日に米国公開第２００４／０１９９９２５号として公開された、「プロセスプラント構成システムにおけるモジュールクラスオブジェクト（Ｍｏｄｕｌｅ  Ｃｌａｓｓ  Ｏｂｊｅｃｔｓ  ｉｎ  ａ  Ｐｒｏｃｅｓｓ  Ｐｌａｎｔ  Ｃｏｎｆｉｇｕｒａｔｉｏｎ  Ｓｙｓｔｅｍ）」と題された米国特許出願第１０／３６８，１５１号に関連しており、この開示全体は全体を参照してここに組み込まれている。本出願はまた以下の特許出願に関連しており、これらは本出願と同日に国際（ＰＣＴ）出願として出願されており、また本出願はこれらを、全体を参照してここに組み込んでいる：「プロセス環境における関連グラフィックディスプレイ（Ａｓｓｏｃｉａｔｅｄ  Ｇｒａｐｈｉｃ  Ｄｉｓｐｌａｙｓ  ｉｎ  ａ  Ｐｒｏｃｅｓｓ  Ｅｎｖｉｒｏｎｍｅｎｔ）」（弁理士整理番号  Ｎｏ．０６００５／４１１１）；「プロセス制御システムのためのユーザにより構成可能なアラームおよびアラームトレンド分析（Ｕｓｅｒ  Ｃｏｎｆｉｇｕｒａｂｌｅ  Ａｌａｒｍｓ  ａｎｄ  Ａｌａｒｍ  Ｔｒｅｎｄｉｎｇ  ｆｏｒ  Ｐｒｏｃｅｓｓ
Ｃｏｎｔｒｏｌ  Ｓｙｓｔｅｍｓ）」（弁理士整理番号  Ｎｏ．０６００５／４１１１２）；「プロセスプラントにおけるプロセスモジュール及びエキスパートシステムの統合（Ｉｎｔｅｇｒａｔｉｏｎ  ｏｆ  Ｐｒｏｃｅｓｓ  Ｍｏｄｕｌｅｓ  ａｎｄ  Ｅｘｐｅｒｔ  Ｓｙｓｔｅｍｓ  ｉｎ  Ｐｒｏｃｅｓｓ  Ｐｌａｎｔｓ）」（弁理士整理番号  Ｎｏ．０６００５／４１１１３）；「統合された環境におけるカスタマイズされたプロセスグラフィックディスプレイ層を有するプロセスプラントユーザインタフェースシステム（Ａ  Ｐｒｏｃｅｓｓ  Ｐｌａｎｔ  Ｕｓｅｒ  Ｉｎｔｅｒｆａｃｅ  Ｓｙｓｔｅｍ  Ｈａｖｉｎｇ  Ｃｕｓｔｏｍｉｚｅｄ  Ｐｒｏｃｅｓｓ  Ｇｒａｐｈｉｃ  Ｄｉｓｐｌａｙ  Ｌａｙｅｒｓ  ｉｎ  ａｎ  Ｉｎｔｅｇｒａｔｅｄ  Ｅｎｖｉｒｏｎｍｅｎｔ）」（弁理士整理番号  Ｎｏ．０６００５／４１１１４）；「プロセス環境におけるスクリプト化されたグラフィック（Ｓｃｒｉｐｔｅｄ  Ｇｒａｐｈｉｃｓ  ｉｎ  ａ  Ｐｒｏｃｅｓｓ  Ｅｎｖｉｒｏｎｍｅｎｔ）」（弁理士整理番号  Ｎｏ．０６００５／４１１１５）；「プロセス構成および制御環境へのグラフィック統合（Ｇｒａｐｈｉｃｓ  Ｉｎｔｅｇｒａｔｉｏｎ  ｉｎｔｏ  ａ  Ｐｒｏｃｅｓｓ  Ｃｏｎｆｉｇｕｒａｔｉｏｎ  ａｎｄ  Ｃｏｎｔｒｏｌ  Ｅｎｖｉｒｏｎｍｅｎｔ）」（弁理士整理番号  Ｎｏ．０６００５／４１１１６）；「プロセス環境における複数の視覚化のあるグラフィック要素（Ｇｒａｐｈｉｃ  Ｅｌｅｍｅｎｔ  ｗｉｔｈ  Ｍｕｌｔｉｐｌｅ  Ｖｉｓｕａｌｉｚａｔｉｏｎｓ  ｉｎ  ａ  Ｐｒｏｃｅｓｓ  Ｅｎｖｉｒｏｎｍｅｎｔ）」（弁理士整理番号  Ｎｏ．０６００５／４１１１７）；「プロセスプラントにおいてグラフィックディスプレイ要素およびプロセスモジュールを構成するためのシステム（Ｓｙｓｔｅｍ  ｆｏｒ  Ｃｏｎｆｉｇｕｒｉｎｇ  Ｇｒａｐｈｉｃ  Ｄｉｓｐｌａｙ  Ｅｌｅｍｅｎｔｓ  ａｎｄ  Ｐｒｏｃｅｓｓ  Ｍｏｄｕｌｅｓ  ｉｎ  Ｐｒｏｃｅｓｓ  Ｐｌａｎｔｓ）」（弁理士整理番号  Ｎｏ．０６００５／４１１１８）；「統合プロセス制御システムイシステムインタフェースのためのグラフィックディスプレイ構成フレームワーク（Ｇｒａｐｈｉｃ  Ｄｉｓｐｌａｙ  Ｃｏｎｆｉｇｕｒａｔｉｏｎ  Ｆｒａｍｅｗｏｒｋ  ｆｏｒ  Ｕｎｉｆｉｅｄ  Ｐｒｏｃｅｓｓ  Ｃｏｎｔｒｏｌ  Ｓｙｓｔｅｍ  Ｉｎｔｅｒｆａｃｅ）」（弁理士整理番号  Ｎｏ．０６００５／４１１２４）；「プロセスプラントユーザインタフェースにおけるマークアップ言語をベースにした動的プロセスグラフィックス（Ｍａｒｋｕｐ  Ｌａｎｇｕａｇｅ−Ｂａｓｅｄ，Ｄｙｎａｍｉｃ  Ｐｒｏｃｅｓｓ  Ｇｒａｐｈｉｃｓ  ｉｎ  ａ  Ｐｒｏｃｅｓｓ  Ｐｌａｎｔ  Ｕｓｅｒ  Ｉｎｔｅｒｆａｃｅ）」（弁理士整理番号  Ｎｏ．０６００５／４１１２７）；「プロセス制御データを修正するための方法および装置（Ｍｅｔｈｏｄｓ  ａｎｄ  Ａｐｐａｒａｔｕｓ  ｆｏｒ  Ｍｏｄｉｆｙｉｎｇ  Ｐｒｏｃｅｓｓ  Ｃｏｎｔｒｏｌ  Ｄａｔａ）」（弁理士整理番号  Ｎｏｓ．０６００５／５９１６２２および２００４０／５９−１１６２２）；「プロセス制御システムのための統合グラフィックユーザインタフェース（Ｉｎｔｅｇｒａｔｅｄ  Ｇｒａｐｈｉｃａｌ  Ｒ���ｎｔｉｍｅ  Ｉｎｔｅｒｆａｃｅ  ｆｏｒ  Ｐｒｏｃｅｓｓ  Ｃｏｎｔｒｏｌ  Ｓｙｓｔｅｍｓ）」（弁理士整理番号  Ｎｏｓ．０６００５／５９１６２８および２００４０／５９−１１６２８）；および「プロセス制御システムのためのサービス指向型アーキテクチャ（Ｓｅｒｖｉｃｅ−Ｈｙｐｈｅｎ  Ｏｒｉｅｎｔｅｄ  Ａｒｃｈｉｔｅｃｔｕｒｅ  ｆｏｒ
Ｐｒｏｃｅｓｓ  Ｃｏｎｔｒｏｌ  Ｓｙｓｔｅｍｓ）」（弁理士整理番号  Ｎｏｓ．０６００５／５９１６２９および２００４０／５９−１１６２９）。
【０００２】
本開示は概してプロセッサコントロールシステムに、より具体的には、プロセスコントロールデータにアクセスするためのプロセスコントロール装置および方法に関する。
【背景技術】
【０００３】
化学薬品、石油および他のプロセスで使用されるようなプロセスコントロールシステムは一般的に、アナログ、デジタルあるいは結合アナログ／デジタルバスを介して少なくとも１つのホストつまりオペレータワークステーションおよび１つ以上のフィールドデバイスに通信可能に接続された１つ以上の中央プロセスコントローラを含んでいる。フィールドデバイスとは、例えばバルブ、バルブポジショナー、スイッチおよび送信機（例えば、温度、圧力および流量センサー）であり、バルブの開閉およびプロセスパラメータの測定などのプロセス内の機能を実行する。プロセスコントローラは、フィールドデバイスによってなされたプロセス測定および／またはフィールドデバイスに関する情報を示す信号を受信し、この情報を使用してコントロールルーチンを実施し、そして、プロセスの動作をコントロールするためにバスや通信回線でフィールドデバイスに送られるコントロール信号を生成する。フィールドデバイスおよびコントローラからの情報は、プロセスの現在の状態を閲覧したり、プロセスの動作を修正したりするなどのプロセスに対してオペレータが所望の機能を実行できるように、オペレータワークステーションによって実行される１つ以上のアプリケーションに対して使用可能とすることができる。
【発明の概要】
【発明が解決しようとする課題】
【０００４】
設計段階およびシステム動作時に、システムエンジニアはしばしば、プロセスコントロールデータを閲覧、監視、追加、更新、修正などをするためにプロセスコントロールデータにアクセスしなければならない。例えば、プロセスコントロールシステムは通常、システムエンジニアや、オペレータやユーザなどが、特定のプロセス（例えば、特定の化学薬品生産プロセス）に対してプロセスコントロールシステム内の各フィールドデバイスが機能する様子を定義できる構成アプリケーションを使用して構成される。フィールドデバイスが特定のプロセスに追加される場合や、プロセスが変更される度に、エンジニアは新たなコントロールプログラムや新たな構成データを生成したり、既存のコントロールプログラムを更新または修正したりすることがある。各プロセスは多数のフィールドデバイス、コントローラおよび／またはコントロールデバイスを使用することがあるため、コントロールプログラムは多量のプロセスコントロールデータを含んでいることがある。ユーザが、動作中にプロセスを監視できたり、かつ／またはコントロールプログラムを閲覧、作成および／または更新できたりするようなエディタやプロセスコントロールデータビューアーを提供する既知のプロセスコントロールシステムもある。既知のプロセスコントロールデータエディタおよびビューアーは通常、プロセスコントロールソフトウェア開発者によって提供された機能にユーザを制約する。例えば、プロセスコントロールソフトウェア開発者は、所望のタイプのユーザインタフェースコントロールおよびデータアクセス機能性を判断するために、その顧客を調査することがある。プロセスコントロールソフトウェアがリリースされる時点で顧客に使用可能なユーザインタフェースおよびデータアクセス機能は、これらの機能を内蔵するという、顧客による一般的な要求を受ける。
【０００５】
顧客ごとにプロセスコントロールソフトウェアをカスタマイズすることはしばしば、比較的高価かつ複雑なプロジェクトである。具体的には、顧客が特定またはカスタムユーザインタフェースやデータアクセス機能を要する場合、顧客は、オリジナルのプロセスコントロールソフトウェアソースコードを理解および修正する必要がある。この場合、プロセスコントロールソフトウェア販売者は、そのソフトウェアのカスタマイズを望む各顧客に多数のリソース（例えば、ソフトウェア開発者、システムエンジニア、ソースコードなど）を提供しなければならない。加えて、ソフトウェア販売者は顧客に、ソースコードを顧客に配信する前に、ソースコードライセンスや開発ライセンスを購入させる必要がある場合がある。リソースおよび／またはライセンスはしばしば、ソフトウェア販売者および／または顧客にとってかなり高価である。また、特定のソースコードをリリースすることによって、そのソースコードが企業秘密、機密あるいは同業他社にとって好都合なコード化技術を含んでいる場合には、販売者はリスクを被ることがある。
【課題を解決するための手段】
【０００６】
プロセスコントロールシステムデータにアクセスするための例示的方法およびシステムがここに開示されている。一例によると、プロセスコントロールデータアクセス方法は、クライアントオブジェクトをロードするステップと、データアクセスリクエストを前記クライアントオブジェクトから、サーバーと通信するように構成されているリアルオブジェクトに通信するステップとを伴う。そして前記リアルオブジェクトは前記データアクセスリクエストに基づいて前記サーバーに問い合わせを通信して、前記問い合わせに応答して前記サーバーからプロセスコントロールデータを取得する。そして前記プロセスコントロールデータは、サーバースキーマと関連した第１のデータレイアウトから、クライアントスキーマと関連した第２のデータレイアウトにマッピングされる。前記マッピング済みプロセスコントロールデータは次いで、アプリケーションに通信される。
【０００７】
別の例によると、別のプロセスコントロールデータアクセス方法は、ユーザインタフェースリクエストに応答して第１および第２のクライアントオブジェクトをロードするステップを伴う。前記第１および第２のクライアントオブジェクトは、クライアントスキーマに基づいて組織化されたプロセスコントロールデータへのアクセスと関連している。次いで、前記第１および第２のクライアントオブジェクトと関連したリアルオブジェクトがロードされる。前記第１および第２のリアルオブジェクトは、サーバースキーマに基づいて組織化されたプロセスコントロールデータを取得するように構成されている。そして前記プロセスコントロールデータは、前記サーバースキーマ組織から前記クライアントスキーマ組織にマッピングされて、前記第１および第２のクライアントオブジェクトに通信される。そして前記プロセスコントロールデータは、前記第１のクライアントオブジェクトと関連した第１のユーザインタフェースと、前記第２のクライアントオブジェクトと関連した第２のユーザインタフェースとによって取得される。
【０００８】
別の例によると、プロセスコントロールデータアクセスシステムは、事前生成パーシャル（部分）クラスおよびユーザ生成パーシャルクラスを含んでいる。前記事前生成パーシャルクラスは、プロセスコントロールデータへのアクセスと関連した事前生成クラス要素を含んでいる。前記ユーザ生成パーシャルクラスは前記事前生成パーシャルクラスと関連しており、また、前記事前生成クラス要素を介してプロセスコントロールデータにアクセス可能なユーザ定義のクラス要素を含んでいる。前記システムはまた、前記事前生成パーシャルクラスおよび前記ユーザ生成パーシャルクラスに基づいてクライアントオブジェクトのインスタンスを作成するように構成されたユーザインタフェースを含んでいる。前記ユーザインタフェースはまた、前記事前生成およびユーザ定義クラス要素に基づいてプロセスコントロールデータにアクセスするように構成されている。前記システムはまた、オブジェクトハンドルと、前記クライアントオブジェクトと関連したリアルオブジェクトとをロードし、前記オブジェクトハンドルおよび前記リアルオブジェクトを介して前記クライアントオブジェクトとサーバー間でプロセスコントロールデータを通信するように構成されたクライアントモデルを含んでいる。
【図面の簡単な説明】
【０００９】
【図１】プロセスコントロールシステムマシーンに通信可能に接続されたクライアントマシーンを含む例示的クライアント／サーバーアーキテクチャを示すブロック図である。
【図２】図１のクライアントモデルおよびユーザインタフェースの詳細な機能ブロック図である。
【図３】継承によってユーザ生成パーシャルクラスと事前生成パーシャルクラス間でコードを共有するために使用可能な例示的コード構成を示している。
【図４】継承によってユーザ生成パーシャルクラスと事前生成パーシャルクラス間でコードを共有するために使用可能な例示的コード構成を示している。
【図５】集約によってユーザ生成パーシャルクラスと事前生成パーシャルクラス間でコードを共有するために使用可能な別の例示的コード構成を示している。
【図６】事前生成パーシャルクラスと、２つのクライアントスキーマを有するクライアントアプリケーションのリアルオブジェクトとの関係を示している。
【図７】ランタイム段階で図１および２のユーザインタフェースとクライアントモデル間で形成されるデータ経路を示している。
【図８】ランタイム段階で図１および２のユーザインタフェースとクライアントモデル間で形成されるデータ経路を示している。
【図９】図１および２のユーザインタフェースとクライアントオブジェクトとのデータ結合を示すブロック図である。
【図１０】例示的サーバースキーマを定義する例示的サーバースキーマＸＭＬソースコードを示している。
【図１１】クライアントモデルによって提出された問い合わせに応答して、プロセスコントロールシステムデータベースサーバーによってクライアントモデルに返送された例示的ＸＭＬソースコードである。
【図１２】プロセスコントロールデータをサーバースキーマからクライアントスキーマにマッピングするために使用可能な例示的クライアントスキーマＸＭＬソースコードを示している。
【図１３】オブジェクトと、これに含まれたロールとを表す例示的ユーザインタフェースを示している。
【図１４】図１３の例示的ユーザインタフェースを生成するための、クライアントスキーマとサーバースキーマ間のマッピング構成を示す詳細なブロック図である。
【図１５】図１４のサーバースキーマ階層からクライアントスキーマ階層へのマッピングを生成するために使用可能な例示的ＸＭＬソースコードを示している。
【図１６】１つの機能ブロックおよび２つの属性を含む複合機能ブロック‘ＰＴ＿ＣＯＭＰ’を表す例示的ユーザインタフェースを示している。
【図１７】図１６の例示的ユーザインタフェースを生成するために単一のクライアントロールを複数のサーバーロールにマッピングする、サーバースキーマ階層とクライアントスキーマ階層間のマッピング構成を示す詳細なブロック図である。
【図１８】図１７のサーバースキーマ階層からクライアントスキーマ階層へのマッピングを生成するために使用可能な例示的ＸＭＬソースコードを示している。
【図１９】特定のプラントエリア内の複数の異なるコントロールデバイスを表す例示的ユーザインタフェースを示している。
【図２０】図１９の例示的ユーザインタフェースを生成するために複数のクライアントロールを単一のサーバーロールにマッピングする、サーバースキーマ階層とクライアントスキーマ階層間のマッピング構成を示す詳細なブロック図である。
【図２１】図２０のサーバースキーマ階層からクライアントスキーマ階層へのロールマッピングを生成するために使用可能な例示的ＸＭＬソースコードを示している。
【図２２】コントロールデバイスと関連したアイテムを選択的に表示するために使用可能な例示的ユーザインタフェースを示している。
【図２３】図２２の例示的ユーザインタフェースを生成するためにクライアントオブジェクトを１サブセットのサーバーオブジェクトにマッピングする、サーバースキーマ階層とクライアントスキーマ階層間のマッピング構成を示す詳細なブロック図である。
【図２４】図２３のサーバースキーマ階層からクライアントスキーマ階層へのオブジェクトマッピングを生成するために使用可能な例示的ＸＭＬソースコードを示している。
【図２５】追加アイテムがそのコントロールデバイスのサーバースキーマの一部でなくても追加アイテムをコントロールデバイスビューに挿入するために使用可能な例示的ユーザインタフェースを示している。
【図２６】クライアントオブジェクトをクライアントスキーマ階層に挿入する、サーバースキーマ階層とクライアントスキーマ階層間のマッピング構成を示す詳細なブロック図である。
【図２７】クライアントオブジェクトを図２６のクライアントスキーマ階層に挿入するための例示的ＸＭＬソースコードを示している。
【図２８】リアルタイムプロセスコントロールデータがコマンドを介して取得可能なアイテムを表示するために使用可能な例示的ユーザインタフェースを示している。
【図２９】クライアントロールをコマンドとして実施可能なマッピング構成を示す詳細なブロック図である。
【図３０】図２９のクライアントスキーマ階層においてクライアントロールをコマンドとして実施するために使用可能な例示的ＸＭＬソースコードを示している。
【図３１Ａ】ランタイム段階でクライアントオブジェクトを介するリアルオブジェクトへのクライアントアプリケーションアクセスを提供するために使用可能な例示的方法のフロー図を示している。
【図３１Ｂ】ランタイム段階でクライアントオブジェクトを介するリアルオブジェクトへのクライアントアプリケーションアクセスを提供するために使用可能な例示的方法のフロー図を示している。
【図３２】クライアントオブジェクトにおいて修正済みプロセスコントロールデータを更新するために使用可能な例示的方法である。
【図３３】ここに説明された例示的装置、方法および製品を実施するために使用可能な例示的プロセッサシステムのブロック図である。
【発明を実施するための形態】
【００１０】
以下の開示は、とりわけハードウェアで実行されるコンポーネント、ソフトウェアおよび／またはファームウェアを含むシステムを例証するが、このようなシステムは例示に過ぎず、制限的であるとみなされるべきではない点に注目すべきである。例えば、これらのハードウェア、ソフトウェアおよびファームウェアコンポーネントのいずれかまたは全部は、ハードウェアのみ、ソフトウェアのみ、あるいはハードウェアおよびソフトウェアの組み合わせで具現化可能であることが想定されている。従って、以下の開示は例示的システムについて説明しているが、当業者は、提供されている実施例がこのようなシステムを実施するための唯一の方法ではないことを容易に理解するであろう。
【００１１】
プロセスコントロールデータにアクセスし、かつこれと相互作用するための所定の特徴および機能にエンドユーザを制限する機知のシステムとは反対に、ここに説明された例示的装置、方法および製品は、クライアントアプリケーションがプロセスコントロールデータにアクセスし、これを表し、かつこれを表示する方法をエンドユーザがカスタマイズできるようにするカスタマイズ可能なデータアクセスツールを使用して、プロセスコントロールシステムサーバーにおけるプロセスコントロールデータにアクセスするために使用可能である。プロセスコントロールデータは通常、コントロールシステム、プロセス、材料フローおよび組成、コントロールシステム機器、フィールドデバイス、およびシステム全体を操作、維持および診断するために使用される動作ディスプレイに関連するデータや情報を含んでいる。プロセスコントロールシステムサーバーは通常プロセスプラントに配置され、プロセスコントロールデータを記憶するために使用される。プロセスコントロールシステムを自動化、管理および構成するために、企業は通常、プロセスコントロールシステムサーバー上で実行し、かつユーザ定義プロセスコントロールデータに基づいてプロセスコントロールシステムと関連した各動作を管理するプロセスコントロールシステムソフトウェア（つまり、プロセスコントロールシステムアプリケーション）を使用する。ユーザ（例えば、システムエンジニア）は、コマンド、リクエストおよびプロセスコントロールデータをプロセスコントロールシステムアプリケーションと送受信するクライアントアプリケーションを使用してプロセスコントロールデータと相互作用する（例えば、管理する、閲覧する、修正する、構成するなど）場合がある。クライアントアプリケーションは通常、プロセスコントロールシステムサーバーも接続されているネットワークに接続された任意のワークステーション（つまり、任意のコンピュータ端末）にインストールされ、またここで実行することが可能である。
【００１２】
エンドユーザ、またはプロセスコンピュータソフトウェアをエンドユーザに提供するソフトウェア販売者のいずれによって開発されても、従来のクライアントアプリケーションはしばしば、プロセスコンピュータシステムアプリケーションと同時またはこれと関連して開発される。従来のクライアントアプリケーションは通常、ユーザがプロセスコンピュータデータへのアクセス、この表示および閲覧を制限される固定セットのデータアクセスおよびデータ取扱い機能を提供する。データアクセスおよびデータ取扱い機能のカスタマイズは、プロセスコントロールシステムアプリケーションソフトウェアの修正、クライアントアプリケーションソフトウェアの修正、ソフトウェアのすべての再コンパイル、およびソフトウェアのすべての再テストを必要とするため、しばしば複雑かつ高価である。
【００１３】
ここに説明された例示的方法、装置および製品は、クライアントアプリケーション（例えば、図１のクライアントアプリケーション１０８）がプロセスコントロールシステムサーバー（例えば、プロセスコントロールシステムデータベースサーバー１１２）とデータを送受信できるカスタマイズ可能なクライアント／サーバーデータインタフェースを提供するクライアントモデルデータインタフェース層（例えば、図１のクライアントモデル１１６）を提供する。クライアントモデル１１６によってクライアントアプリケーションは、プロセスコントロールシステムサーバー１１２から抜粋されて、異なるプロセスコントロールシステムサーバー間で携帯可能になる。クライアントモデル１１６は、クライアントアプリケーション１０８がプロセスコントロールシステムデータベースサーバー１１２と通信し、かつこれと相互作用し、またプロセスコントロールデータをこれと送受信できるようにするコアデータアクセスまたはデータ送受信機能性と、１ベースセットのデータアクセスおよびデータ取扱い機能とを含んでいる。クライアントモデル１１６は、複数のオブジェクトコードファイル、ヘッダーファイル、ソースコードファイルなどのソフトウェア開発キット（ＳＤＫ）においてエンドユーザ（例えば、顧客、システムエンジニアなど）に提供されることがある。そしてエンドユーザは、プロセスコントロールシステムサーバーと相互作用してプロセスコントロールデータを閲覧、管理および構成するために、クライアントアプリケーションＳＤＫに基づいてクライアントアプリケーションを開発してもよい。エンドユーザは常時データアクセス機能を修正または追加し、プロセスコントロールシステムアプリケーションソフトウェアを修正する必要なく、その度にクライアントアプリケーションソフトウェアのみを再コンパイルしてもよい。
【００１４】
より詳細に後述されるように、クライアントモデル１１６はオブジェクト指向プログラミング言語と関連したパーシャル（部分）クラスを使用して実施される。パーシャルクラスは、クラスタイプを、２つ以上のファイルに存在可能な２つ以上のセクションに分割（ｓｐｌｉｔ）、分離（ｄｉｖｉｄｅ）またはパーティショニングするために使用される。このように、プログラマーは機能性、使用頻度あるいは他の基準に基づいて長いコードをより小さなセクションやパーティションコードに分割（ｓｐｌｉｔ）または分散（ｂｒｅａｋ  ｕｐ）してもよい。後述されるように、パーシャルクラスは、ユーザ生成コードから事前生成コードを分離するために使用可能である。対応するパーシャルクラスはオブジェクトコードとソースコードの組み合わせで存在することもある。事前生成コードは、プロセスコントロールシステムアプリケーションソフトウェアの初期開発時に開発され、かつ上記のように例えばクライアントアプリケーションＳＤＫを介してエンドユーザに配信されるクライアントモデルオブジェクトコードを生成するようにコンパイルされるクライアントモデル１１６に対する事前生成パーシャルクラスを備えている。ユーザ生成コードは、事前生成パーシャルクラスに対応し、かつ後に開発された（例えば、アフターマーケット）クライアントアプリケーションのカスタム機能性を定義するために使用されるユーザ生成パーシャルクラスを含んでいる。
【００１５】
エンドユーザは、クライアントモデルオブジェクトコードに提供された機能のみを使用することによってクライアントアプリケーションソフトウェアを開発する場合があり、またはエンドユーザは後に、追加のユーザ定義データアクセス機能を定義して、エンドユーザが所望するプロセスコントロールデータにアクセスし、これを表すかつ／またはこれを表示するためにソースコードを開発することもある。ユーザ定義データアクセス機能は、クライアントモデルオブジェクトコードの対応する事前生成パーシャルクラスで定義された任意のリソース、要素または機能を使用してもよいユーザ生成パーシャルクラスで開発される。コンパイル中、コンパイラはソフトウェアプロジェクトの各ファイル（例えば、各オブジェクトファイルおよびソースファイル）をスキャンし、対応するパーシャルクラスを架橋して、そのクラスの各要素、機能または態様を定義する完成（コンプリート）クラスを形成する。実行中、クライアントアプリケーション１０８は結合された対応するパーシャルクラスを完成クラスとして認識することによって、ユーザ定義データアクセス機能が元々クライアントモデルオブジェクトコードの一部であるように、ユーザ定義データアクセス機能をクライアントモデル１１６と共働させることができる。
【００１６】
クライアントモデル１１６によってユーザはまた、プロセスコントロールデータレイアウトや、プロセスコントロールデータがプロセスコントロールシステムデータベース（例えば、図１のプロセスコントロールシステムデータベース１１０）から検索される場合にこれが呈示される様子を定義することができる。プロセスコントロールシステムデータベース１１０は、テーブル、コラム、レコード、エントリ、フィールドなどを使用してプロセスコントロールデータを組織化する。プロセスコントロールシステムデータベースサーバー１１２がプロセスコントロールデータをプロセスコントロールシステムデータベースから検索する場合、サーバーはサーバースキーマに従ってプロセスコントロールデータを組織化する。しかしながら、クライアントアプリケーションはしばしばプロセスコントロールデータが組織化され、呈示され、あるいは別個にレイアウトされることを要するため、クライアントアプリケーションはユーザに定義されたようにプロセスコントロールデータを表示することができる。クライアントアプリケーションを介するデータへのアクセスおよびこの表示を容易にするために、エンドユーザは、そのクライアントアプリケーションの設計段階でクライアントアプリケーションごとにクライアントスキーマを定義してもよい。動作時に、クライアントモデル１１６はサーバースキーマ組織や配列においてプロセスコントロールシステムデータベースサーバー１１０からプロセスコントロールデータを取得し、また図１３乃至３０と関連して後述されるようなユーザ定義クライアントスキーマに従って、プロセスコントロールデータをサーバースキーマ組織からクライアントスキーマ組織または配列に再配列することがある。
【００１７】
次に図１を詳細に参照すると、クライアント／サーバーアーキテクチャ１００はクライアントマシーン１０２とプロセスコントロールシステムマシーン１０４とを含む。クライアントマシーン１０２は概して、プロセスコントロールシステムと関連したプロセスコントロールデータを閲覧、修正および管理するために使用される。クライアントマシーン１０２は、コンピュータ、ワークステーション端末、ポータブルコンピュータ、ラップトップコンピュータ、携帯情報端末（ＰＤＡ）あるいは任意の適切なプロセッサシステムを使用して実施可能である。プロセスコントロールシステムマシーン１０４はプロセスコントロールデータを記憶し、プロセスコントロールデータに基づいてプロセスコントロールシステムを自動化および管理する。プロセスコントロールシステムマシーン１０４は、プロセスコントロールシステムにおけるコントロールデバイスに通信可能に接続されたワークステーション、メインフレーム、サーバーあるいは任意の適切なプロセッサシステム（例えば、図３３の例示的プロセッサシステム３３１０）であってもよい。プロセスコントロールシステムマシーン１０４はプロセスコントロールデータをクライアントマシーン１０２（あるいはプロセスコントロールシステムマシーン１０４と通信するように構成された他のクライアントマシーン）に提供するように構成されており、また、クライアントマシーン１０２および／または対応するプロセスコントロールシステムにおけるコントロールデバイスによってリクエストされたようにプロセスコントロールデータを修正、追加または更新するように構成されている。
【００１８】
クライアントマシーン１０２は、通信ネットワーク１０６を介してプロセスコントロールシステムマシーン１０４に通信可能に接続されてもよい。通信ネットワーク１０６は例えば、ローカルエリアネットワーク（ＬＡＮ）やワイドエリアネットワーク（ＷＡＮ）であってもよく、また、適切な通信技術や、例えばイーサネット（登録商標）、ＩＥＥＥ８０２．１１、Ｂｌｕｅｔｏｏｔｈ（登録商標）、任意のデジタルまたはアナログモバイル通信システム（つまり、セルラー通信システム）、デジタル加入者回線（ＤＳＬ）、任意のブロードバンド通信システムなどの技術の組み合わせを使用して実施されてもよい。
【００１９】
クライアントマシーン１０２は、ユーザがプロセスコントロールデータを検索、閲覧、管理および記憶することができるようにするクライアントアプリケーション１０８を含んでいる。ユーザは、クライアントアプリケーション１０８を実施し、かつクライアントアプリケーション１０８を後に使用して格納プロセスコントロールデータおよび／またはリアルタイムコントロールデータにアクセスするクライアントマシーン１０２に、マシーンアクセス可能な命令をインストールしてもよい。格納プロセスコントロールデータは、コントロールデバイス構成パラメータ、定期的に測定されたプロセスコントロールデータ値、履歴測定値、あるいは後に検索するために記憶されることがある他の値と関連した情報を含むことがある。一般的に、リアルタイムプロセスコントロールデータは、記憶されていないが、リクエスト時に生成または引き出されるプロセスコントロールデータを含んでいる。例えば、リアルタイムプロセスコントロールデータは、クライアントアプリケーション１０８からのデータリクエストに応答して測定、取得、生成または算出されるプロセスコントロールデータ値を含むことがある。
【００２０】
格納プロセスコントロールデータはプロセスコントロールシステムマシーン１０４から取得されることがある。プロセスコントロールシステムマシーン１０４は、プロセスコントロールデータ（例えば、格納プロセスコントロールデータ）を記憶するように構成されたプロセスコントロールシステムデータベース１１０と、プロセスコントロールシステムデータベース１１０に通信可能に接続されたプロセスコントロールシステムデータベースサーバー１１２とを含んでいる。プロセスコントロールシステムデータベースサーバー１１２は、プロセスコントロールシステムデータベース１１０とクライアントアプリケーション１０８間で格納プロセスコントロールデータを通信するように構成されている。
【００２１】
クライアントマシーン１０２は、リアルタイムプロセスコントロールデータを提供するためのランタイムサーバー１１４を含んでいる。ランタイムサーバー１１４はネットワーク１０６に通信可能に接続され、かつデータサーバー１１２からおよび／またはプロセスコントロールシステムにおけるコントロールデバイスから間接的にプロセスコントロールデータを取得するように構成されてもよい。例えば、ランタイムサーバー１１４は、プロセスコントロールデータをデータベースサーバー１１２からリクエストし、かつ、例えば数学操作や他の操作を検索されたプロセスコントロールデータに実行することによって、１つ以上の格納プロセスコントロールデータに基づいてリアルタイムプロセスコントロールデータを引き出す場合がある。クライアントアプリケーション１０８がコントロールデバイスと関連したリアルタイム測定プロセスコントロールデータ値（例えば、温度値、圧力値、流量値など）をリクエストする場合、ランタイムサーバー１１４は、リアルタイム測定プロセスコントロールデータ値を検索するために、プロセスコントロールシステムマシーン１０４および／またはネットワーク１０６を介してコントロールデバイスと通信してもよい。
【００２２】
クライアントアプリケーション１０８はクライアントモデル１１６とユーザインタフェース１１８とを含んでいる。クライアントモデル１１６はプロセスコントロールシステムマシーン１０４およびランタイムサーバー１１０に通信可能に接続され、これによってクライアントアプリケーション１０８は、プロセスコントロールシステムマシーン１０４およびランタイムサーバー１１０と通信して、格納プロセスコントロールデータおよびリアルタイムプロセスコントロールデータにアクセスすることができる。具体的には、クライアントモデル１１６は、格納およびリアルタイムプロセスコントロールデータにアクセスし、かつこれを送受信するためにクライアントアプリケーション１０８によって使用可能なデータベースアクセス機能を提供する。データアクセス機能は１ベースセットのデータベースアクセス機能を含んでおり、またユーザ定義データベースアクセス機能を含むこともある。図２と関連してより詳細に後述されるように、この１ベースセットのデータアクセス機能は事前生成パーシャルクラスを介して提供され、ユーザ定義データベースアクセス機能は、事前生成パーシャルクラスに対応するユーザ生成パーシャルクラスを介して提供される。
【００２３】
ユーザインタフェース１１８は、プロセスコントロールデータにアクセス、閲覧、管理、修正、更新などをするために使用可能な複数のグラフィックベースおよび／またはテキストベースのユーザインタフェーススクリーンを生成するように構成されている。ユーザは設計段階および／またはランタイム時に、プロセスコントロールデータを表示するためにユーザインタフェース１１８によって使用されるディスプレイレイアウトやディスプレイ配列を指定してもよい。例証として、ユーザインタフェース１１８は、ツリービューインタフェース１２０およびコンテンツビューインタフェース１２２を含むものとして示されている。ツリービューインタフェース１２０は、展開および折りたたみ部分を有する階層ツリー構造においてプロセスコントロールデータを表示して、選択されたコントロールデバイスの詳細を閲覧するために使用可能である。コンテンツビューインタフェース１２２は、プロセスコントロールシステム図にオーバーレイされたプロセスコントロールデータを表示するために使用可能である。例えば、コンテンツビューインタフェース１２２は、プロセスコントロールシステム図において相互に通信可能に接続されている複数のコントロールデバイスを表示し、また対応するコントロールデバイスに隣接するか、この上にあるプロセスコントロールデータを表示してもよい。このように、ユーザは、プロセスコントロールシステム全体に関するプロセスコントロールデータを閲覧可能である。
【００２４】
クライアントモデル１１６はスキーマ、問い合わせおよびコマンドに基づいて、プロセスコントロールデータをユーザインタフェース１１８と、ランタイムサーバー１１４と、プロセスコントロールシステムデータベースサーバー１１４との間で通信する。スキーマは、プロセスコントロールデータが呈示される様子に関する特定のデータ組織、配列またはデータレイアウトを定義する。例えば、クライアントスキーマは、ユーザインタフェース１１８に対してプロセスコントロールデータを呈示するために使用される特定のデータ配列やデータレイアウトを定義する。ユーザインタフェース１１８は複数のクライアントスキーマと関連している場合があり、これらの各々は、異なるプロセスコントロールデータを配列、組織化または呈示するために使用される。例えば、あるクライアントスキーマはポンプコントロールデバイスデータを呈示するために使用可能であるのに対して、別のクライアントスキーマは複数のコントロールデバイスに共通のプロパティ値を呈示するために使用可能であり、さらに別のクライアントスキーマは、特定のプラントエリアにおけるコントロールデバイスと関連したプロセスコントロールデータを呈示するために使用可能である。
【００２５】
サーバースキームは、プロセスコントロールシステムデータベースサーバー１１２およびランタイムサーバー１１４に対してプロセスコントロールデータを呈示または配列するために使用される特定のデータ配列やデータレイアウトを定義する。プロセスコントロールシステムデータベースサーバー１１２のサーバースキーマはランタイムサーバー１１４のサーバースキーマとは異なってもよい。しかしながら、一般的に、サーバースキーマは通常、クライアントスキーマとは異なってデータを呈示、組織化または配列するために使用される。例えば、サーバースキーマはプロセスコントロールシステムと関連したプロセスコントロールデータの全てを呈示するために使用可能であるのに対して、クライアントスキーマはそのプロセスコントロールデータの指定の部分やセグメントのみを呈示するために使用可能である。
【００２６】
クライアントモデル１１６は、図１３乃至３０と関連して詳細に後述されるように、サーバースキーマとクライアントスキーマ間でプロセスコントロールデータを変換またはマッピングするように構成されている。例えば、ユーザインタフェース１１８からのデータリクエスト問い合わせに応答して、クライアントモデル１１６はプロセスコントロールデータをサーバースキーマからクライアントスキーマに変換またはマッピングして、ユーザインタフェース１１８によって提供されたクライアントスキーマに基づいてプロセスコントロールデータを配列する。クライアントモデル１１６はまた、ユーザインタフェース１１８からの更新問い合わせに応答して修正済みまたは更新済みプロセスコントロールデータをクライアントスキーマからサーバースキーマに変換またはマッピングしてもよい。
【００２７】
ユーザインタフェース１１８および／またはクライアントモデル１１６によって生成された問い合わせはデータリクエスト問い合わせおよび更新問い合わせを含むことがある。データリクエスト問い合わせは特定のプロセスコントロールデータを検索するために使用され、更新問い合わせは、例えばプロセスコントロールシステムデータベース１１０におけるプロセスコントロールデータを修正または更新するために使用される。ユーザインタフェース１１８からの問い合わせの受信に応答して、クライアントモデル１１０は、問い合わせが格納またはリアルタイムのプロセスコントロールデータと関連しているか否かを判断して、それに応じて問い合わせをプロセスコントロールシステムデータベースサーバー１１２またはランタイムサーバー１１４に通信する。問い合わせが格納およびリアルタイムプロセスコントロールデータの両方と関連した部分を含んでいる場合、クライアントモデル１１６はリアルタイムデータ問い合わせおよび格納データ問い合わせに問い合わせを解析または分割し、問い合わせをサーバー１１２および１１４にそれぞれ通信する。
【００２８】
コマンドは、サーバー１１２および１１４にプロセスコントロールデータを検索、修正および／または作成させるマシーンアクセス可能な命令を含むことがある。例えば、問い合わせおよび更新問い合わせに基づいた、プロセスコントロールシステムデータベース１１０におけるプロセスコントロールデータへのアクセス（例えば、検索、修正または作成）と関連した命令を含むコマンドもある。加えて、ランタイムサーバー１１４にコントロールデバイスからプロセスコントロールデータを測定または取得する、格納プロセスコントロールデータに基づいてランタイムサーバー１１４にプロセスコントロールデータ値（例えば、平均値、フィルタリング値など）を引き出す等の命令を含むコマンドもある。
【００２９】
図２は、図１のクライアントモデル１１６およびユーザインタフェース１１８の詳細な機能ブロック図である。具体的には、図２は、ユーザインタフェース１１８と、クライアントモデル１１６とサーバー１１２および１１４との間でプロセスコントロールデータを送受信するランタイム段階でパーシャルクラスが使用される様子を示している。ユーザインタフェース１１８は異なるプロセスコントロールデータに対処するために複数のクライアントスキーマ（例えば、図１４、１７、２０、２３、２６および２９の複数のクライアントスキーマ階層）を使用する。例証として、ユーザインタフェース１１８は、第１のクライアントスキーマオブジェクトモデル２０２ａと、第２のクライアントスキーマオブジェクトモデル２０２ｂと、第３のクライアントスキーマオブジェクトモデル２０２ｃとを含むものとして示されており、これらの各々は第１、第２および第３のクライアントスキーマのそれぞれ１つと関連している。ユーザインタフェース１１８はまた、ユーザインタフェース（ＵＩ）ビュー（例えば、図１のツリービュー１２０およびコンテンツビュー１２２）にプロセスコントロールデータを表示し、かつプロセスコントロールデータの検索、表示および／または修正と関連したユーザ入力を取得するように構成されているユーザＩ／Ｏコントロール２０４を含んでいる。ユーザＩ／Ｏコントロール２０４は例えば、テキストボックス、ボタン、リスト、データフィールドなどを含んでいてもよく、また、例えばＭｉｃｒｏｓｏｆｔ（登録商標）Ａｖａｌｏｎコントロールフレームワークを含む適切なコントロールフレームワークを使用して実施されてもよい。
【００３０】
クライアントスキーマオブジェクトモデル２０２ａ乃至ｃの各々は、第１、第２および第３のクライアントスキーマのそれぞれ１つ関連しているプロセスコントロールデータへのアクセスおよびこの取扱いを可能にする１つ以上の事前生成パーシャルクラス２０６および１つ以上のユーザ生成パーシャルクラス２０８を含んでいる。具体的には、事前生成パーシャルクラス２０６は事前定義クラス要素を含んでいるのに対して、ユーザ生成パーシャルクラス１０８はユーザ定義クラス要素を含んでいる。クラス要素は当業界で既知のデータメンバー、アクセス機構、メソッドまたは機能、実施および／または他のクラス要素を含んでもよく、これらの各々はプライベート、被保護またはパブリックと指定されることがある。事前生成パーシャルクラス２０６のクラス要素は、図６と関連して詳細に後述されるように、リアルオブジェクト（例えば、後述されるリアルオブジェクト２１６）を介してプロセスコントロールシステムデータベースサーバー１１２（図１および２）と通信するために使用可能である。ユーザ生成パーシャルクラス２０８のクラス要素は、事前生成パーシャルクラス２０６のうちの対応するパーシャルクラスのクラス要素と関連したデータにアクセスするように構成可能であり、また事前生成パーシャルクラス２０６におけるクラス要素を介してプロセスコントロールシステムデータベースサーバー１１２と通信するように構成可能である。図２に示されるように、ユーザ生成パーシャルクラス１０８はユーザ定義機能２１０を含んでいる。パーシャルクラス２０６および２０８の対応するものによって形成された各完成クラスは異なるタイプのプロセスコントロールデータと関連していることがある。例えば、例示的クラスは特定のタイプのコントロールデバイスと関連したデータアクセスおよび取扱い機能を含む場合があるのに対して、別の例示的クラスは特定のプロセスプラントエリアや特定のプロセスコントロールサブシステムと関連したデータアクセスおよび取扱い機能を含む場合がある。さらに別の例示的クラスは、プロセスコントロールデータの数学的および／または統計的処理（例えば、平均化、フィルタリングなど）と関連した機能を含む場合がある。
【００３１】
開発段階で、クライアントスキーマごとに、エンドユーザが、事前生成パーシャルクラス２０６の各々を作成するために１つ以上の事前生成パーシャルクラスを選択してもよい。また開発段階で、エンドユーザはユーザ定義機能２１０を開発し、またユーザ定義機能２１０と関連した１つ以上のユーザ生成パーシャルクラスを選択することによってクライアントスキーマオブジェクトモデル２０２ａ乃至ｃの各々のユーザ生成パーシャルクラス２０８を作成してもよい。
【００３２】
第１のクライアントスキーマオブジェクトモデル２０２ａに対して選択されたパーシャルクラス２０６および２０８は、第２のクライアントスキーマオブジェクトモデル２０２ｂに対して選択されたパーシャルクラス２０６および２０８と異なってもよい。例えば、第１のクライアントスキーマオブジェクトモデル２０２ａに対するパーシャルクラス２０６および２０８は第１のプロセスプラントエリアのコントロールデバイスと関連したプロセスコントロールデータにアクセスするために使用可能であるのに対して、第２のクライアントオブジェクトモデル２０２ｂに対するパーシャルクラス２０６および２０８は、第２のプロセスプラントエリアのコントロールデバイスと関連したプロセスコントロールデータにアクセスするために使用可能である。
【００３３】
実行段階で、パーシャルクラス２０６および２０８は、クライアントスキーマオブジェクトモデル２０２ａ乃至ｃの各々に対して複数のクライアントオブジェクト２１２を生成するために使用可能である。クライアントオブジェクト２１２はクライアントアプリケーション（例えば、図１のクライアントアプリケーション１０８）のクライアントスキーマのデータ配列やデータレイアウトに従うか、これに対応している。クライアントオブジェクト２１２の各々はパーシャルクラス２０６および２０８のうちの１つによって定義されたクラスタイプである。例えばクラスタイプポンプの２つのオブジェクトなど、同一クラスタイプのクライアントオブジェクト２１２のうちの２つ以上が生成されてもよく、各々はプロセスコントロールシステムにおける異なる物理的ポンプコントロールデバイスに対するものである。加えて、クライアントオブジェクト２１２のうちの２つ以上が、同一の物理的コントロールデバイスと関連したプロセスコントロールデータにアクセスするために生成可能である。クライアントオブジェクト２１２のうちの２つ以上による、同一の物理的コントロールデバイスのプロセスコントロールデータへのアクセスは、下記のようにリアルオブジェクト（例えば、リアルオブジェクト２１６）を介してクライアントモデル１１６において仲裁または取り扱われる。クライアントオブジェクト２１２は、図９と関連して詳細に後述されるように、リアルタイムおよび格納プロセスコントロールデータにユーザＩ／Ｏコントロール２０４をデータ結合させるために使用可能である。ユーザＩ／Ｏコントロール２０４をプロセスコントロールデータにデータ結合させることによって、クライアントオブジェクト２１２は、ユーザＩ／Ｏコントロールを介して提供されるユーザ入力に応答してデータリクエスト問い合わせおよび／またはデータ更新問い合わせを生成することができる。上記のように、問い合わせは、格納またはリアルタイムのプロセスコントロールデータを検索または修正するために使用される。クライアントオブジェクト２１２はまた、例えばプロセスコントロールシステムデータベース２１０における少なくとも一部のプロセスコントロールデータ値が変化したか修正されているかを示すデータ更新イベントに応答して、ユーザＩ／Ｏコントロール２０４を介して表示されるプロセスコントロールデータ値を更新することができる。
【００３４】
クライアントモデル１１６は第１の複数のオブジェクトハンドル２１４ａと、第２の複数のオブジェクトハンドル２１４ｂと、第３の複数のオブジェクトハンドル２１４ｃとを含んでいる。図２に示されるように、複数のオブジェクトハンドル２１４ａ乃至ｃの各々はクライアントスキーマオブジェクトモデル２０２ａ乃至ｃのそれぞれ１つと関連している。クライアントモデル１１６はまた複数のリアルオブジェクト２１６を含んでいる。リアルオブジェクト２１６は、図１のプロセスコントロールシステムデータベースサーバー１１２および／またはランタイムサーバー１１４と関連したサーバースキーマのデータ配列やデータレイアウトに従うか対応している。オブジェクトハンドル２１４ａ乃至ｃは、メモリにおいてリアルオブジェクト２１６のロケーションに対応するアドレス参照またはベース参照である。ランタイム時に、リアルオブジェクト２１６のうちの１つが作成されメモリヒープに記憶される場合、ハンドル２１４ａ乃至ｃのうちの１つにおける対応するハンドルもまた作成されて、メモリスタックに記憶される。クライアントオブジェクト２１２の各々はリアルオブジェクト２１６のうちの１つと関連しており、データアクセスリクエスト、問い合わせ、更新問い合わせおよび／またはプロセスコントロールデータをそのリアルオブジェクトにリアルオブジェクトのオブジェクトハンドル（例えば、オブジェクトハンドル２１４ａ乃至ｃのうちの１つ）を介して通信することによって、リアルオブジェクト２１６のうちの１つを介してプロセスコントロールデータにアクセスする。リアルオブジェクト２１６は、クライアントオブジェクト２１２から受信された問い合わせや更新問い合わせに応答して、問い合わせおよび／または更新問い合わせをプロセスコントロールシステムデータベースサーバー１１２に通信する。リアルオブジェクト２１６はプロセスコントロールシステムデータベースサーバー１１２から、サーバースキーマ（例えば、図１４、１７、２０、２３、２６および２９のサーバースキーマ階層のうちの１つ）に基づいて組織化または配列されたプロセスコントロールデータを取得する。そしてクライアントモデル１１６は、図１３乃至２９と関連して後述されるように、プロセスコントロールデータをサーバースキーマ組織からクライアントスキーマ組織にマッピング、再配列または変換する。
【００３５】
クライアントオブジェクト２１２のうちの２つ以上がリアルオブジェクト２１６のうちの特定の１つに対応している場合もある。例えば、クライアントオブジェクト２１２のうちの２つ以上が、同一のプロセスコントロールデータにアクセスするために同一のクラスタイプから構築される場合、リアルオブジェクト２１６のうちの１つがクライアントオブジェクト２１２のうちの２つ以上に対して作成される。このように、リアルオブジェクト２１６のうちの１つは、同一のプロセスコントロールデータに対してなされるデータアクセスリクエストをクライアントオブジェクト２１２のうちの２つ以上によって仲裁可能である。
【００３６】
図３および４は、継承によってユーザ生成および事前生成パーシャルクラス間でコードを共有するために使用可能な例示的コード構成を示している。図３は、「ＭＯＤＵＬＥ＿ＧＥＮ．ＣＳ」と称される事前生成ファイル３０２と、「ＭＯＤＵＬＥ＿ＭＡＮＵＡＬ．ＣＳ」と称される第１のユーザ生成ファイル３０４と、「ＭＯＤＵＬＥ＿ＢＡＳＥ．ＣＳ」と称される第２のユーザ生成ファイル３０６とを示している。事前生成ファイル３０２は、名前空間（ネームスペース）「ＤＥＬＴＡＶ（登録商標）．ＣＯＮＦＩＧ．ＥＸＰＬＯＲＥＲ．ＨＩＥＲＡＲＣＨＹ」３０８においてパーシャルクラスを定義し、これはタイプ「ＭＯＤＵＬＥ」３１０の事前生成パブリックパーシャルクラス（つまり、事前生成パブリックパーシャルクラス「ＭＯＤＵＬＥ」３１０）を含む。パブリックパーシャルクラス「ＭＯＤＵＬＥ」３１０は、図１および２のプロセスコントロールシステムデータベースサーバー１１２と通信するように構成されたクラス要素を含むことがある。パブリックパーシャルクラス「ＭＯＤＵＬＥ」３１０は図２の事前生成パーシャルクラス２０６の一部であってもよい。
【００３７】
第１のユーザ生成ファイル３０４は名前空間「ＤＥＬＴＡＶ（登録商標）．ＣＯＮＦＩＧ．ＥＸＰＬＯＲＥＲ」３１２と、名前空間「ＤＥＬＴＡＶ（登録商標）．ＣＯＮＦＩＧ．ＥＸＰＬＯＲＥＲ．ＨＩＥＲＡＲＣＨＹ」３１０におけるパーシャルクラス定義とを使用する。名前空間「ＤＥＬＴＡＶ（登録商標）．ＣＯＮＦＩＧ．ＥＸＰＬＯＲＥＲ．ＨＩＥＲＡＲＣＨＹ」３１０において、事前生成パブリックパーシャルクラス「ＭＯＤＵＬＥ」３１０はユーザ生成クラス「ＭＯＤＵＬＥ＿ＢＡＳＥ」３１４のクラス要素を継承している。このように、クラス「ＭＯＤＵＬＥ」３１０および「ＭＯＤＵＬＥ＿ＢＡＳＥ」３１４は相互のクラス要素を共有したり、これにアクセスしたりすることが可能である。例えば、クラス「ＭＯＤＵＬＥ＿ＢＡＳＥ」３１４に定義されているクラス要素は、クラス「ＭＯＤＵＬＥ」３１０に定義されているクラス要素を介してプロセスコントロールシステムデータベースサーバー１１２と通信可能である。クラス「ＭＯＤＵＬＥ＿ＢＡＳＥ」３１４は下記の第２のユーザ生成ファイル３０６に定義されており、また図２のユーザ生成パーシャルクラス２０８の一部であってもよい。
【００３８】
第２のユーザ生成ファイル３０６は、クライアントアプリケーション（例えば、図１のクライアントアプリケーション１０８）を構成して、事前生成パーシャルクラス「ＭＯＤＵＬＥ」３１０とユーザ生成パーシャルクラス「ＭＯＤＵＬＥ＿ＢＡＳＥ」３１４間でソースコードを共有するために使用可能なソースコードを含んでいる。第２のユーザ生成ファイル３０６において、名前空間「ＤＥＬＴＡＶ（登録商標）．ＣＯＮＦＩＧ．ＥＸＰＬＯＲＥＲ」３１２はユーザ生成パーシャルクラス「ＭＯＤＵＬＥ＿ＢＡＳＥ」３１４のアプリケーション固有のメソッドの実施を含んでいる。ユーザ生成「ＭＯＤＵＬＥ＿ＢＡＳＥ」３１４のアプリケーション固有のメソッドは、第１のユーザ生成ファイル３０４におけるユーザ生成パーシャルクラス「ＭＯＤＵＬＥ」３１０によって継承される。
【００３９】
図４は、実行段階で２つの異なる名前空間の間で図３のソースコードを共有するために使用される例示的ランタイム構成を示している。図４は、名前空間「ＤＥＬＴＡＶ（登録商標）．ＣＯＮＦＩＧ．ＥＸＰＬＯＲＥＲ」３１２のインスタンスと、名前空間「ＤＥＬＴＡＶ（登録商標）．ＣＯＮＦＩＧ．ＥＸＰＬＯＲＥＲ．ＨＩＥＲＡＲＣＨＹ」３０８のインスタンスと、名前空間「ＤＥＬＴＡＶ（登録商標）．ＣＯＮＦＩＧ．ＥＸＰＬＯＲＥＲ．ＣＯＮＴＥＮＴ」４０２のインスタンスとを示している。名前空間３０８または４０２のいずれかにロードまたはインスタンス化されたパーシャルクラスタイプ「ＭＯＤＵＬＥ」３１０のクライアントオブジェクトは、事前生成ファイル３０２またはユーザ生成ファイル３０６のいずれかに定義されたソースコードやクラス要素を使用可能である。
【００４０】
名前空間「ＤＥＬＴＡＶ（登録商標）．ＣＯＮＦＩＧ．ＥＸＰＬＯＲＥＲ」３１２のインスタンスは、ユーザ生成パーシャルクラス「ＭＯＤＵＬＥ＿ＢＡＳＥ」３１４に対して第２のユーザ生成ファイル３０６（図３）で定義されたクラス要素を含んでいる。名前空間「ＤＥＬＴＡＶ（登録商標）．ＣＯＮＦＩＧ．ＥＸＰＬＯＲＥＲ．ＨＩＥＲＡＲＣＨＹ」３０８のインスタンスは、クラスタイプ「ＭＯＤＵＬＥ」（例えば、パーシャルクラスタイプ「ＭＯＤＵＬＥ」３１０）の第１の「ＭＯＤＵＬＥ」クライアントオブジェクト４０４を含んでいる。名前空間「ＤＥＬＴＡＶ（登録商標）．ＣＯＮＦＩＧ．ＥＸＰＬＯＲＥＲ．ＣＯＮＴＥＮＴ」４０２のインスタンスは第２の「ＭＯＤＵＬＥ」クライアントオブジェクト４０６を含んでおり、これもまたクラスタイプ「ＭＯＤＵＬＥ」（例えば、パーシャルクラスタイプ「ＭＯＤＵＬＥ」３１０）である。クライアントオブジェクト４０４および４０６の各々はユーザ生成部分４１０（例えば、ユーザ生成クラス要素）と事前生成部分４１２（例えば、事前生成クラス要素）とを含んでいる。ユーザ生成部分４１０は第２のユーザ生成ファイル３０４のユーザ生成クラス「ＭＯＤＵＬＥ＿ＢＡＳＥ」３１０で定義されたクラス要素を含んでいる。事前生成部分４１２は、事前生成ファイル３０２のユーザ生成パーシャルタイプクラス「ＭＯＤＵＬＥ」３１０で定義されたクラス要素を含んでいる。
【００４１】
図５は、集約によってユーザ生成パーシャルクラスおよび事前生成パーシャルクラス間でコードを共有するために使用可能な別の例示的コード構成を示している。事前生成パーシャルクラスコード５０２は、事前生成パーシャルクラス「ＭＯＤＵＬＥ」３１０を含有する名前空間「ＤＥＬＴＡＶ（登録商標）．ＣＯＮＦＩＧ．ＥＸＰＬＯＲＥＲ．ＨＩＥＲＡＲＣＨＹ」３０８を含んでいる。ユーザ生成パーシャルクラスコード５０４は、ユーザ生成クラス「ＥＸＰＬＯＲＥＲ＿ＭＯＤＵＬＥ」５０６を含有する名前空間「ＤＥＬＴＡＶ（登録商標）．ＣＯＮＦＩＧ．ＥＸＰＬＯＥＲＥ．ＨＩＥＲＡＲＣＨＹ」３１２を含んでいる。事前生成パーシャルクラス「ＭＯＤＵＬＥ」３１０とユーザ生成クラス「ＥＸＰＬＯＲＥＲ＿ＭＯＤＵＬＥ」５０６間でソースコードやクラス要素を共有するために、ユーザ生成クラス「ＥＸＰＬＯＲＥＲ＿ＭＯＤＵＬＥ」５０６は、事前生成パーシャルクラスコード５０２で定義された事前生成パーシャルクラス「ＭＯＤＵＬＥ」３１０のクラス要素の全てによって使用可能なタイプ「ＭＯＤＵＬＥ」５０８（例えば、パーシャルクラスタイプ「ＭＯＤＵＬＥ」３１０）のクライアントオブジェクトを定義する。
【００４２】
図６は、２つのクライアントスキーマを有するクライアントアプリケーション（例えば、図１のクライアントアプリケーション１０８）の事前生成パーシャルクラスとリアルオブジェクトの関係を示している。第１のクライアントスキーマ６０２は第１の複数の事前生成パーシャルクラス６０４を使用し、第２のクライアントスキーマ６０６は第２の複数の事前生成パーシャルクラス６０８を使用する。事前生成パーシャルクラス６０４および６０８は図２の事前生成パーシャルクラス２０６と実質的に類似または同一である。クライアントアプリケーション１０８は２つのクライアントスキーマ６０２および６０６を使用して、異なるニーズや異なるプロセスコントロールデータに対処する。例えば、第１のクライアントスキーマ６０２は特定のプラントエリアでのモジュールと関連しており、第２のクライアントスキーマ６０６は特定のサブシステムのアラームと関連している。
【００４３】
クライアントモデル１１６は第１のクライアントスキーマ６０２と関連した第１の複数のオブジェクトハンドル６１０と、第２のクライアントスキーマ６０６と関連した第２の複数のオブジェクトハンドル６１２とを含んでいる。オブジェクトハンドル６１０および６１２は図２のオブジェクトハンドル２１４ａ乃至ｃと実質的に類似または同一である。クライアントモデル１１６はクライアントスキーマ６０２および６０６の各々について個別グループまたはツリーのオブジェクトハンドルを構築または生成する。事前生成パーシャルクラス６０４および６０８の各々における事前生成パーシャルクラスの階層関係は対応するオブジェクトハンドル６１０および６１２の階層関係と同一である。
【００４４】
クライアントモデル１１６はまた、図２のリアルオブジェクト２１６と実質的に類似または同一の複数のリアルオブジェクト６１４を含んでいる。クライアントアプリケーション１０８は、事前生成パーシャルクラス６０４および６０８と関連したクライアントオブジェクト（例えば、図２のクライアントオブジェクト２１２および図７の７１０ａ乃至ｄ）を介してリアルオブジェクト６１４と通信する。具体的には、パーシャルクラス６０４および６０８と関連したクライアントオブジェクトはオブジェクトハンドル６１０および６１２を介してリアルオブジェクト６１４にアクセスする。
【００４５】
クライアントアプリケーション１０８がデータアクセスリクエスト（例えば、問い合わせ）を第１のクライアントスキーマ６０２からクライアントモデル１１６に通信する場合、クライアントモデル１１６は、データアクセスリクエストが関連している特定のプロセスコントロールデータ（例えば、特定のプラントエリア）と関連したリアルオブジェクト（例えば、リアルオブジェクト６１４の一部）をロードする。クライアントアプリケーション１０８がデータアクセスリクエスト（例えば問い合わせ）を第２のクライアントスキーマ６０６から通信する場合、クライアントモデル１１６は、図６に示されるようにデータアクセスリクエストが関連している特定のサブシステムのアラーム（ＡＬＡＲＭ）と関連するリアルオブジェクト６１４の全アラーム属性またはプロパティをロードする。
【００４６】
クライアントアプリケーション１０８は、リアルオブジェクト６１４の寿命や、リアルオブジェクト６１４がロードされる期間をコントロールする。例えば、クライアントアプリケーション１０８が、リアルオブジェクト６１４の一部がロードされたままであることを示す場合、これらのオブジェクトはアンロード不可能である。通常、リアルオブジェクト６１４などのオブジェクトは、クライアントアプリケーションがガーベジコレクション可能またはアンロード可能と指定されているリアルオブジェクトを定期的に検出するガーベジコレクションルーチンによってアンロードされる。例えば、クライアントアプリケーション１１８が，リアルオブジェクト６１４の一部がアンロードされるべきであると判断すると、これらのオブジェクトはガーベジコレクション可能と指定される。この場合、後続のガーベジコレクションスキャンは、ガーベジコレクション可能とフラグされるか、現在使用中とフラグされないリアルオブジェクト６１４のアンロードをもたらす。
【００４７】
図７および８は、ランタイム段階で図１および２のユーザインタフェース１０８とクライアントモデル１１６間に形成されたデータ経路を示している。とりわけ、図７は、第１のユーザインタフェース（ＵＩ）ビュー７０２および第２のＵＩビュー７０４に対するクライアントオブジェクト２１２とリアルオブジェクト２１６間のデータ経路を示している。図７において、ＵＩビュー７０２および７０４は共通クライアントスキーマを共有する。図８は、クライアントオブジェクト２１２とリアルオブジェクト２１６間のデータ経路を示しており、ここで第１のＵＩビュー７０２および第２のＵＩビュー７０４は各々独自のクライアントスキーマを有している。ＵＩビュー７０２および７０４は図１のツリービュー１２０および／またはコンテンツビュー１２２と実質的に類似または同一であってもよい。
【００４８】
図７および８に示されるように、第１および第２のＵＩビュー７０２および７０４はクライアントアプリケーションオブジェクト７０６に属しているか、これと関連している。ＵＩビュー７０２および７０４の各々はリアルオブジェクト２１６のうちの１つ以上を介してプロセスコントロールデータにアクセスする。リアルオブジェクト２１６は、「ＭｏｄｕｌｅＬｉｂｒａｒｙ」リアルロール（ＲＯＬＥ）７０８ｂをロードする親リアルオブジェクト「Ｒ」７０８ａを有するものとして示されている。例えば「ＭｏｄｕｌｅＬｉｂｒａｒｙ」リアルロール７０８ｂなどのロールは、そのロールと関連した複数のプロセスコントロールデータへのアクセスを明示または提供する。例えば、ロールは、特定のプラントエリアや特定のタイプのコントロールデバイスと関連したプロセスコントロールデータへのアクセスを提供することがある。「ＭｏｄｕｌｅＬｉｂｒａｒｙ」リアルロール７０８ｂは、ＵＩビュー７０２および７０４からのプロセスコントロールデータリクエストに応答して第１のリアルオブジェクト「Ｒ１」７０８ｃおよび第２のリアルオブジェクト「Ｒ２」７０８ｄをロードする。例えば、第１のリアルオブジェクト７０８ｃは第１のコントロールデバイスと関連することがあるのに対して、第２のリアルオブジェクト７０８ｄは第２のコントロールデバイスと関連することがある。
【００４９】
リアルオブジェクト２１６を介してプロセスコントロールデータにアクセスするために、ＵＩビュー７０２および７０４はクライアントオブジェクト２１２をロードしてリアルオブジェクト２１６と通信する。例えば、図７に示されるように、「ＭｏｄｕｌｅＬｉｂｒａｒｙ」リアルロール７０８ｂと関連したプロセスコントロールデータにアクセスするために、第１のＵＩビュー７０２は親クライアントオブジェクト「Ｏ」７１０ａをロードする。親クライアントオブジェクト「Ｏ」７１０ａは、親クライアントオブジェクト７１０ａがゼロ番目のマスク（ＭＡＳＫ）「Ｍ」７１４ａを介して親リアルオブジェクト「Ｒ」７０８ａにアクセスするために使用する親オブジェクトハンドル「Ｈ」７１２ａを参照する。例えばゼロ番目のマスク「Ｍ」７１４ａなどのマスクは、プロセスコントロールデータをサーバースキーマのデータレイアウトまたは配列からクライアントスキーマのデータレイアウトまたは配列に変換またはマッピングするように構成される。例えば、親リアルオブジェクト７０８ａは、複数のプロセスコントロールデータライブラリーへのアクセスを提供するライブラリーオブジェクトであってもよい。親クライアントオブジェクト７１０ａが、親リアルオブジェクト７０８ａと関連した１サブセットの複数のライブラリーオブジェクト（例えば、「ＭｏｄｕｌｅＬｉｂｒａｒｙ」リアルロール７０８ｂ）のみにアクセスするように構成されている場合、マスク７１４ａはライブラリーアクセスリクエストを親クライアントオブジェクト７１０ａから、親リアルオブジェクト７０８ａにおける対応するライブラリーに変換またはマッピングする。例えば、マスクは、クライアントスキーマに対応し、かつリアルオブジェクトにおけるプロセスコントロールデータを指示または参照するレイアウトで配列された複数のポインターを含むことがある。
【００５０】
データ経路は複数のアクティブおよび非アクティブデータ経路として示されている。実線は、アクティブであるか、特定のオブジェクト、ハンドルまたはマスクにアクセスするためにＵＩビュー７０２および７０４のうちの一方によって使用中であるデータ経路を表している。点線は、非アクティブであるか、ＵＩビュー７０２および７０４のいずれによってももはや使用されていないデータ経路を表している。例えば、まず第１のＵＩビュー７０２は親クライアントオブジェクト「Ｏ」７１０ａに、第１の子クライアントオブジェクト「Ｏ１」７１０ｂのインスタンス作成またはロードをさせる。第１のＵＩビュー７０２は第１の子クライアントオブジェクト７１０ｂを使用して、第１のリアルオブジェクト７０８ｃを介してプロセスコントロールデータにアクセスすることができる。第１のＵＩビュー７０２は第１のデータ経路を介して第１の子クライアントオブジェクト７１０ｂにアクセスし、データ経路は最初、アクティブつまり「使用中」のデータ経路を示す実線（図示せず）である。第１の子クライアントオブジェクト７１０ｂは第１のハンドル「Ｈ１」７１２ｂを参照して、第１のマスク「Ｍ１」７１４ｂを介して第１のリアルオブジェクト７０８ｃにアクセスする。
【００５１】
加えて、第１および第２のＵＩビュー７０２および７０４は共通のクライアントスキーマを共有しているため、第２のＵＩビュー７０４はまた第１の子クライアントオブジェクト７１０ｂを介して第１のリアルオブジェクト７０８ｃにアクセス可能である。図７に示されるように、第２のＵＩビュー７０４は第２のデータ経路７１８を介して第１の子クライアントオブジェクト７１０ｂにアクセスする。第１のＵＩビュー７０２が第１の子クライアントオブジェクト７１０ｂの使用を終了すると、第１のデータ経路７１６は図７に点線で示されるように非アクティブになる。クライアントアプリケーション７０６の他のＵＩビューが第１の子クライアントオブジェクト７１０ｂへのアクセスを必要としない場合、クライアントオブジェクト７１０ｂはガーベジコレクション可能（例えば、アンロード可能）となる。しかしながら、第２のＵＩビュー７０４は第１の子クライアントオブジェクト７１０ｂへのアクセスを継続するため、データ経路７１８は図７に実線で示されるようにアクティブのままであり、クライアントオブジェクト７１０ｂはガーベジコレクション可能とはならない。第１の子クライアントオブジェクト７１０ｂから第１のリアルオブジェクト７０８ｃまでのデータ経路７２０、７２２および７２４もまた実線で示されるようにアクティブのままである。
【００５２】
クライアントオブジェクトがクライアントアプリケーションのユーザインタフェースによってもはや使用されない場合、そのクライアントオブジェクトと関連したデータ経路の全ては非アクティブとなり、クライアントオブジェクトと対応するハンドルおよびマスクとはガーベジコレクションの準備ができているとフラグされ、クライアントモデル１１６によって後にアンロードされる。加えて、クライアントオブジェクトによってアクセスされていたリアルオブジェクトがもはや他のクライアントオブジェクトによってアクセスされない場合、リアルオブジェクトもまたガーベジコレクションの準備ができているとフラグされ、後にクライアントモデル１１６によってアンロードされる。例えば、第２のリアルオブジェクト７０８ｄにアクセスするために第１のＵＩビュー７０２に対して最初にインスタンスを作成またはロードされる第２の子クライアントオブジェクト「Ｏ２」７１０ｃは後に非アクティブとなり、これがＵＩビュー７０２および７０４のいずれによってももはや使用されない場合にガーベジコレクションの準備ができたとフラグされる。第２のオブジェクトハンドル７１２ｃおよび第２のマスク７１４ｃもまたガーベジコレクションの準備ができたとフラグされる。この場合、第２の子クライアントオブジェクト７１０ｃと関連したデータ経路の全てが図７に点線で示されるように非アクティブになる。クライアントモデル１１６は第２の子クライアントオブジェクト７１０ｃをアンロードするが、第２のオブジェクトハンドル７１２ｃ、第２のマスク７１４ｃおよびクライアントモデル１１６は、別の子クライアントオブジェクトが第２のリアルオブジェクト７０８ｄを依然として使用していたり、これへのアクセスを必要としたりする場合には、第２のリアルオブジェクト７０８ｄをアンロードしなくてもよい。
【００５３】
特定のクライアントオブジェクトのインスタンスがアンロードされた後、そのクライアントオブジェクトの別のインスタンスが、そのクライアントオブジェクトと関連したプロセスコントロールデータに後にアクセスするためにロードされてもよい。例えば、図７に示されるように、第２の子クライアントオブジェクト７１０ｃがアンロードされた（例えば、ガーベジコレクション時にアンロードされた）後に、第１のＵＩビュー７０２は親オブジェクト７１０ａに、第２のリアルオブジェクト７０８ｄにアクセスするために第２の子クライアントオブジェクト「Ｏ２'」７１０ｄの第２のインスタンスをロードするか、
このインスタンス作成をさせてもよい。
【００５４】
図８において、ＵＩビュー７０２および７０４の各々はそれぞれの個別クライアントスキーマを有しており、それぞれの子クライアントオブジェクトを使用してリアルオブジェクト２１６にアクセスする。例えば、第２のＵＩビュー７０４は、第１のＵＩインタフェース７０２によって使用されるクライアントオブジェクトの全てとは別個のクライアントオブジェクト「Ｏ１」８０２のインスタンスを作成するか、これをロードする。図３１Ａおよび３１Ｂと関連して後述される例示的方法は、図７および８に示されるＵＩビュー７０２および７０４とリアルオブジェクト２１６間の通信経路を形成するために使用可能である。
【００５５】
図９は、図１および２のユーザインタフェース１１８と、図２のクライアントオブジェクト２１２のうちの１つと実質的に類似または同一のクライアントオブジェクト９０２とのデータ結合を示すブロック図である。図９のユーザインタフェース１１８は例証として、図２のユーザＩ／Ｏコントロール２０４と実質的に類似または同一の第１、第２および第３のユーザＩ／Ｏコントロール９０４ａ、９０４ｂおよび９０４ｃを有するものとして示されている。例えば、ユーザＩ／Ｏコントロール９０４ａ乃至ｃはテキストボックス、リストボックス、データフィールド、チェックボックスなどであってもよい。クライアントオブジェクト９０２はユーザ生成クラス要素部分９０６と事前生成クラス要素部分９０８とを含んでいる。ユーザ生成クラス要素部分９０６のクラス要素はユーザ生成パーシャルクラス（例えば、図２のユーザ生成パーシャルクラス２０８のうちの１つ）で定義され、事前生成クラス要素部分９０８のクラス要素は事前生成パーシャルクラス（例えば、図２の事前生成パーシャルクラス２０６のうちの１つ）で定義される。下記の複数のプロパティ（Ｐｒｏｐｅｒｔｙ）９１０ａ乃至９１０ｅはユーザ生成および事前生成部分９０６および９０８のクラス要素に基づいて作成される。
【００５６】
ユーザ生成部分９０６はＰＲＯＰＥＲＴＹ＿Ａ要素９１０ａおよびＰＲＯＰＥＲＴＹ＿Ｂ要素９１０ｂを含んでいる。事前生成部分９０８はＰＲＯＰＥＲＴＹ＿Ｃ要素９１０ｃと、ＰＲＯＰＥＲＴＹ＿Ｄ要素９１０ｄとＰＲＯＰＥＲＴＹ＿Ｅ要素９１０ｅとを含んでいる。プロパティ要素９１０ｃ乃至ｅは格納プロセスコントロールデータをプロセスコントロールシステムデータベース１１０から検索するために使用される。ＰＲＯＰＥＲＴＹ＿Ａ要素９１０ａはＰＲＯＰＥＲＴＹ＿Ｃ要素９１０ｃと関連しており、ＰＲＯＰＥＲＴＹ＿Ｃ要素９１０ｃに基づいて値を導き出す。クライアントオブジェクト９０２は、ユーザ生成要素（例えば、プロパティ要素９１０ａおよび９１０ｂ）と事前生成要素（例えば、プロパティ要素９１０ｃ乃至ｅ）間のマッピングまたは関連付けを含む、図９に示されたプライベートハッシュテーブル９１２を含んでいる。プライベートハッシュテーブル９１２は、オブジェクト９１２に対してプライベートであるタイプ「ＨａｓｈＴａｂｌｅ」の変数またはポインターを介して参照またはアクセスされてもよい。ＰＲＯＰＥＲＴＹ＿Ａ要素９１０ａとＰＲＯＰＥＲＴＹ＿Ｃ要素９１０ｃの関連は、プライベートハッシュテーブル９１２の行９１４に示されている。
【００５７】
ユーザＩ／Ｏコントロール９０４ａ乃至ｃはＰＲＯＰＥＲＴＹ＿Ａ要素９１０ａ、ＰＲＯＰＥＲＴＹ＿Ｄ要素９１０ｄおよびＰＲＯＰＥＲＴＹ＿Ｅ要素９１０ｅにそれぞれデータ結合される。このようなユーザＩ／Ｏコントロール９０４ａ乃至ｃのデータ結合によってクライアントアプリケーション１０８は、ユーザＩ／Ｏコントロール９０４ａ乃至ｃ間のデータ値と要素９１０ａ、９１０ｄおよび９１０ｅのそれぞれのデータ値とを、これらのデータ値のいずれかが更新される度に通信する。例えば、図３２と関連してより詳細に後述されるように、プロセスコントロールシステムデータベースサーバー１１２およびクライアントモデル１１６は、プロセスコントロールシステムデータベースサーバー１１０で修正されたプロセスコントロールデータに関する更新情報（例えば、不確かまたは不正オブジェクトの「ＵｐｄａｔｅＮｏｔｉｆｉｃａｔｉｏｎ」イベントおよびリスト）を送受信可能である。このように、クライアントオブジェクト９０２は修正済みプロセスコントロールデータのいずれかが、格納プロセスコントロールデータにアクセスするために使用されるそのプロパティ要素９１０ｃ乃至ｄのいずれかと関連しているかを判断し、もしそうならば、プロセスコントロールデータ値が修正されたプロパティ要素９１０ｃ乃至ｄの各々の値を更新する。そしてクライアントオブジェクト９０２は、プロセスコントロールデータが修正されたプロパティ要素９１０ｃ乃至ｄのいずれかと関連するか、またはこれを使用するユーザ生成プロパティ（例えば、プロパティ９１０ａおよび９１０ｂ）のいずれかの値を更新するためにプライベートハッシュテーブル９１２を使用してもよい。
【００５８】
データ結合されたユーザＩ／Ｏコントロール９０４ａ乃至ｃの値を更新するために、クライアントモデル１１６は更新通知イベントを介して受信された更新情報を解析して、プロセスコントロールデータが修正されたユーザ生成または事前生成プロパティの「ＰｒｏｐｅｒｔｙＣｈａｎｇｅｄ」イベントを生成する。そして「ＰｒｏｐｅｒｔｙＣｈａｎｇｅｄ」イベントによってデータ結合されたユーザＩ／Ｏコントロール９０４ａ乃至ｃは、プロパティ９１０ａ乃至ｅのそれぞれ１つから修正済みプロセスコントロールデータを取得して、Ｉ／Ｏコントロール９０４ａ乃至ｃの値を更新する。
【００５９】
クライアントオブジェクト９０２はまた、不正ハッシュテーブル９１６にデータ投入するために更新情報を使用可能である。不正ハッシュテーブル９１６はタイプ「ＨａｓｈＴａｂｌｅ」の変数またはポインターを介して参照され、オブジェクト９０２に対してはプライベートである。不正ハッシュテーブル９１６が、クライアントアプリケーション（例えば、図１のクライアントアプリケーション１０８）に対する不正または不確かなオブジェクトハンドルを記憶するために使用される。不正オブジェクトハンドルは更新情報において提供されて、一部のクライアントオブジェクトのプロセスコントロールデータがプロセスコントロールシステムデータベース１１０にあったことを示す。クライアントアプリケーション１０８は、不正オブジェクトハンドルによって不正ハッシュテーブル９１６にデータ投入するために「ＰｏｐｕｌａｔｅＤｉｒｔｙＨａｓｈＴａｂｌｅ」機能を使用してもよい。例えば、「ＰｏｐｕｌａｔｅＤｉｒｔｙＨａｓｈＴａｂｌｅ」機能はまず更新通知イベントから更新情報を受信し、次いで更新情報を解析して、不正ハンドルによって不正ハッシュテーブル９１６にデータ投入する。
【００６０】
図１０は、例示的サーバースキーマを定義する例示的サーバースキーマＸＭＬソースコード１０００を示している。サーバースキーマＸＭＬソースコード１０００はプロセスコントロールシステムデータベースサーバー１１２に記憶されており、プロセスコントロールシステムデータベースサーバー１１２によってプロセスコントロールデータを呈示するために使用される配列やレイアウトを定義する。サーバースキーマＸＭＬソースコード１０００はクラスタイプ定義および列挙定義を含有する。各クラスタイプは名前を有しており、多数のプロパティ、ロールおよびコマンドを含有する。各プロパティは名前およびデータタイプを有している。
【００６１】
ロールはこれが含有している名前と（複数の）クラスタイプを有している。ロールのアイテムに対して含有されているベースタイプはロール要素において公表される。具体的なクラスサブタイプはロール要素内にネストされる。各含有クラスタイプは、コマンドを介してクライアントアプリケーション（例えば、図１のクライアントアプリケーション１０８）によって作成可能であるか否かにかかわらずマークされる。クラスタイプ定義はまた、例えばクライアントアプリケーション１０８から取得されたコマンドスクリプトを介して実行可能なコマンドを含有している。各コマンドは名前を有しており、そのパラメータおよびリターンタイプを定義する。
【００６２】
図１０に示されるように、サーバースキーマＸＭＬソースコード１０００は「ＣｏｎｔｒｏｌＭｏｄｕｌｅ」（ライン１００２）と称されるタイプを指定する。タイプ名「ＣｏｎｔｒｏｌＭｏｄｕｌｅ」（ライン１００２）はデータタイプストリング（ライン１００４）の「ｄｅｔａｉｌＤｉｓｐｌａｙＮａｍｅ」と称されるプロパティと、宛先タイプ「ＢｌｏｃｋＢａｓｅ」（ライン１００６）の「Ｂｌｏｃｋｓ」と称されるロールとを含有する。ロール名「Ｂｌｏｃｋｓ」（ライン１００６）は、クライアントアプリケーション１０８（ライン１００８）によって作成可能な「ＭｏｄｅｌＵｓａｇｅ」と称されるタイプを含有する。タイプ名「ＭｏｄｅｌＵｓａｇｅ」（ライン１００８）は、クライアントアプリケーション１０８がタイプ「ＭｏｄｅｌＵｓａｇｅ」のオブジェクトをロードまたはインスタンス作成をする場合に作成される複数の作成パラメータ（ライン１０１０および１０１２）を含有している。タイプ名「ＣｏｎｔｒｏｌＭｏｄｕｌｅ」（ライン１０００２）はまたリターンタイプ無効（ｖｏｉｄ）（ライン１０１４）の「ｒｅｎａｍｅＴｏ」と称されるコマンドを含有している。コマンド名「ｒｅｎａｍｅＴｏ」（ライン１０１４）はデータタイプストリング（ライン１０１６）の「ｎｅｗＮａｍｅ」と称されるパラメータを含有している。
【００６３】
サーバースキーマＸＭＬソースコード１０００はまた列挙定義を指定する。具体的には、サーバースキーマＸＭＬソースコード１０００は「ＤｂｅＡｔｔｒｉｂｕｔｅＴｙｐｅ」（ライン１０１８）と称されるイーナム（ｅｎｕｍ）を含んでいる。イーナム名「ＤｂｅＡｔｔｒｉｂｕｔｅＴｙｐｅ」（ライン１０１８）は、「Ｆｌｏａｔ」（ライン１０２０）と称されるエントリと、「ＦｌｏａｔＷｉｔｈＳｔａｔｕｓ」（ライン１０２２）と称されるエントリとを含む複数のアイテムを含有している。
【００６４】
列挙はプロパティのデータタイプフィールドにおいて参照可能である。例えば、「Ａｔｔｒｉｂｕｔｅ」（ライン１０２４）と称されるタイプはデータタイプ「ＤｂｅＡｔｔｒｉｂｕｔｅＴｙｐｅ」（ライン１０２６）の「ａｔｒｒｉｂｕｔｅＴｙｐｅ」と称されるプロパティを含有しており、これはイーナム名「ＤｂｅＡｔｔｒｉｂｕｔｅＴｙｐｅ」（ライン１０１８）に対応している。
【００６５】
図１１は、クライアントモデル１１６によって提出された問い合わせに応答してプロセスコントロールシステムデータベースサーバー１１２によってクライアントモデル１１６に返送される例示的ＸＭＬソースコード１１００である。具体的には、例示的ＸＭＬソースコード１１００は問い合わせＳｉｔｅ．ＰｌａｎｔＡｒｅａｓ［ｎａｍｅ＝‘ＡＲＥＡ＿Ａ’］（ｉｎｄｅｘ）．Ｍｏｄｕｌｅｓ（ｎａｍｅ）に応答して返送される。図１１に示されるように、ＸＭＬソースコード１１００の結果は「ＰｌａｎｔＡｒｅａｓ」（ライン１１０２）と称されるＭｏｄｅｌＲｏｌｅを含んでいる。ＭｏｄｅｌＲｏｌｅ名「ＰｌａｎｔＡｒｅａｓ」（ライン１１０２）は「ＡＲＥＡ＿Ａ」（ライン１１０４）と称されるＰｌａｎｔＡｒｅａを含有している。ＰｌａｎｔＡｒｅａ名「ＡＲＥＡ＿Ａ」（ライン１１０４）は、ゼロに等しく設定され、かつ「Ｍｏｄｅｌｓ」（ライン１００８）と称されるＭｏｄｅｌＲｏｌｅであるプロパティインデックス（ライン１１０６）を含有している。ＭｏｄｅｌＲｏｌｅ名「Ｍｏｄｕｌｅｓ」（ライン１１０８）は複数のモジュールと、各々の対応するプロパティとを含有している。例えば、ＭｏｄｅｌＲｏｌｅ名「Ｍｏｄｕｌｅｓ」（ライン１１０８）は「ＥＭ１」（ライン１１１０）と称されるＭｏｄｕｌｅＩｎｓｔａｎｃｅＢａｓｅを含有しており、これは「ＥＭ１」（ライン１１１２）と称されるプロパティを含有している。
【００６６】
図１２は、プロセスコントロールデータをサーバースキーマ（例えば、図１０のサーバースキーマＸＭＬソースコード１０００、または図１４、１７、２０、２３、２６および２９と関連して後述されるサーバースキーマ階層のうちの１つ）からクライアントスキーマ（例えば、図１４、１７、２０、２３、２６および２９と関連して後述されるクライアントスキーマ階層のうちの１つ）にマッピングするために使用可能な例示的クライアントスキーマＸＭＬソースコード１２００を示している。クライアントスキーマは、サーバースキーマがタイプを定義するのと実質的に類似の方法でプロパティ、ロールおよびコマンドのタイプを定義する。タイプ、プロパティおよびロールごとに、クライアントスキーマＸＭＬソースコード（例えば、クライアントスキーマＸＭＬソースコード１２００）はサーバースキーマへのマッピングを示しているため、クライアントモデル１１６（図１）はクライアントスキーマとサーバースキーマ間でプロセスコントロールデータを再配列またはマッピング可能である。
【００６７】
図１２に示されるように、クライアントスキーマにおける「Ｍｏｄｕｌｅ」と称されるタイプはサーバースキーマ（ライン１２０２）における「Ｍｏｄｕｌｅ」と称されるタイプにマッピングされる。この場合、クライアントスキーマにおいて「Ｍｏｄｕｌｅ」と称されるタイプもまた、サーバースキーマにおいて「Ｍｏｄｕｌｅ」と称される。しかしながら、クライアントスキーマにおけるタイプ名は異なる名前を有するサーバースキーマにおけるタイプ名にマッピングされることがある。例えば、タイプ名「ＭｏｄｕｌｅＯｎｅ」はタイプ名「ＭｏｄｕｌｅＴｗｏ」にマッピングされることがある。
【００６８】
プロパティ要素（ライン１２０４）は１つ以上のプロパティ要素を含有することがある。各プロパティ要素はクライアントタイプの１つ以上のクライアントプロパティを定義し、各クライアントプロパティの名前と、クライアントプロパティが関連しているドメインと、サーバースキーマへのマッピングとを含有している。図１２に示されるように、「ｄｅｓｃ」と称されるプロパティはデータベースドメインと関連しており（例えば、プロパティは、プロセスコントロールシステムデータベース１１０に記憶されている格納プロセスコントロールデータに対応している）、サーバースキーマ（ライン１２０６）において「ｄｅｓｃｒｉｐｔｉｏｎ」と称されるプロパティにマッピングされる。「ｒｔＶａｌｕｅ」と称されるプロパティはランタイムドメインと関連しており（例えば、プロパティは、図１のランタイムサーバー１１４から取得可能なリアルタイムプロセスコントロールデータに対応している）、サーバースキーマ（ライン１２０８）において「ＳＴ」と称されるプロパティにマッピングされる。プロパティマッピングは含有タイプに関連する。例えば、含有タイプが含有タイプ「Ｓｉｔｅ」内にある「Ｍｏｄｕｌｅ」である場合、ＭＯＤ＿Ｘの「ｄｅｓｃ」プロパティに対して生成された問い合わせはＳｉｔｅ．Ｍｏｄｕｌｅｓ［ｎａｍｅ＝‘ＭＯＤ＿Ｘ’］（ｄｅｓｃｒｉｐｔｉｏｎ）である。
【００６９】
ロール要素（ライン１２１０）は１つ以上のロール要素を含有している。各ロール要素はクライアントタイプと関連したクライアントロールを定義し、クライアントロールの名前と、クライアントロールが関連しているドメインと、クライアントロールを得るために使用されるマッピングと、クライアントロールのオブジェクトのタイプとを含有している。図１２に示されるように、ロール要素（ライン１２１０）は、データベースドメインと関連している「ａｔｔｒｉｂｕｔｅｓ」と称されるロールを含有しており（例えば、このロールは、プロセスコントロールシステムデータベース１１０に記憶されている格納プロセスコントロールデータに対応している）、サーバースキーマ（ライン１２１２）において「Ａｔｔｒｉｂｕｔｅｓ」と称されるロールにマッピングされる。ロールマッピングは含有タイプと関連している。例えば、含有タイプが、含有タイプ「Ｓｉｔｅ」内に含有されている「Ｍｏｄｕｌｅ」である場合、ＭＯＤ＿Ｘの「ａｔｔｒｉｂｕｔｅｓ」ロールに対して生成された問い合わせはＳｉｔｅ．Ｍｏｄｕｌｅｓ［ｎａｍｅ＝‘ＭＯＤ＿Ｘ’］．Ａｔｔｒｉｂｕｔｅｓである。
【００７０】
図１３乃至２９は、サーバー（例えば、図１のプロセスコントロールシステムデータベースサーバー１１２やランタイムサーバー１１４）上にあるサーバースキーマからクライアントアプリケーション（例えば、図１のクライアントアプリケーション１０８）にあるクライアントスキーマにオブジェクトおよびロールなどのクラス要素をマッピングするために使用可能な例示的ユーザインタフェース、スキーママッピング構成および例示的ＸＭＬソースコードを示している。下記のマッピング構成は、プロセスコントロールシステムサーバーからクライアントアプリケーションを抜粋するためにクライアントモデル１１６によって実施されてもよい。クラス要素をサーバースキーマからクライアントスキーマにクライアントモデル１１６を介してマッピングすることによって、クライアントアプリケーションは、複数のサーバーに通信可能に接続され、またこれと共働するように構成可能である。さらに、下記のようなスキーママッピング構成を使用するクライアントモデル１１６に基づいたクライアントアプリケーションの開発によって、各々が特定のプロセスコントロールデータ要件を有している複数のアプリケーションが、プロセスコントロールシステムサーバーに通信可能に接続され、かつこれと共働することができる。
【００７１】
図１３は、オブジェクトと、これに含有されているロールとを表す例示的ユーザインタフェース１３００を示している。例示的ユーザインタフェース１３００はユニットモジュール「ＡＲＥＡ＿Ａ」１３０２を１個の完成オブジェクトとして示している。しかしながら、プロセスコントロールシステムデータベース１１０（図１）において、ユニットモジュール「ＡＲＥＡ＿Ａ」１３０２は２つの個別オブジェクトとして記憶されている。第１のオブジェクトはユニットモジュール「ＡＲＥＡ＿Ａ」１３０２の挙動を含有しており、第２のオブジェクトは、他のモジュールがユニットモジュール「ＡＲＥＡ＿Ａ」１３０２内にネスト可能な様子を定義するモジュールコンテナ挙動を含有している。
【００７２】
図１４は、図１３の例示的ユーザインタフェース１３００を生成するためのクライアントスキーマとサーバースキーマ間のマッピング構成１４００を示す詳細なブロック図である。マッピング構成１４００はクライアントモデル１１６（図１）によって実施可能である。具体的には、図１４は、サーバースキーマ階層１４０２と、クライアントスキーマ階層１４０４と、クライアントモデル階層１４０６とを１対１のマッピング構成で示している。サーバースキーマ階層１４０２は、プロセスコントロールシステムデータベース１１０（図１）に記憶されているようなタイプ「Ｕｎｉｔ」１４０８のサーバーオブジェクトとタイプ「ＵｎｉｔＭｏｄｕｌｅ」１４１０のサーバータイプとの区別を示している。クライアントモデル階層１４０６の階層は、サーバースキーマ階層１４０２の階層に従い、これと実質的に類似しており、あるいはこれと同一である。クライアントスキーマ階層１４０４は、クライアントモデル階層１４０６へのポインターを提供するマスク１４１０ａ、１４１０ｂおよび１４１０ｃを使用してサーバースキーマ階層１４０２から対象オブジェクトおよびロールのみを表す。
【００７３】
サーバースキーマ階層１４０２は、タイプ「Ｕｎｉｔｓ」１４１４のサーバーロールを含有するタイプ「ＡＲＥＡ」１４１２のサーバーオブジェクトを含んでいる。サーバーロール「Ｕｎｉｔｓ」１４１４は、タイプ「ＵｎｉｔＭｏｄｕｌｅ」１４１８のサーバーロールとタイプ「Ｍｏｄｕｌｅｓ」１４２０のサーバーロールとを含有するサーバーオブジェクト「Ｕｎｉｔ」１４０８となる。サーバーロール「ＵｎｉｔＭｏｄｕｌｅ」１４１８はサーバーオブジェクト「ＵｎｉｔＭｏｄｕｌｅ」１４１０になり、サーバーロール「Ｍｏｄｕｌｅｓ」１４２０はタイプ「Ｍｏｄｕｌｅ」１４２２のサーバーオブジェクトとなる。
【００７４】
クライアントスキーマ階層１４０４は、タイプ「ＵｎｉｔＭｏｄｕｌｅｓ」１４２６のクライアントロールを含有するタイプ「ＡＲＥＡ」１４２４のクライアントオブジェクトを含んでいる。クライアントロール「ＵｎｉｔＭｏｄｕｌｅｓ」１４２６は、タイプ「Ｍｏｄｕｌｅｓ」１４３０のクライアントロールを含有するタイプ「ＵｎｉｔＭｏｄｕｌｅ」１４２８のクライアントオブジェクトになる。クライアントロール「Ｍｏｄｕｌｅｓ」１４３０はタイプ「Ｍｏｄｕｌｅ」１４３２のクライアントオブジェクトになる。クライアントオブジェクトおよびクライアントロールは、図１５と関連して後述されるようなクライアントモデル階層１４０６のリアルオブジェクトおよびロールとマスク１４１０ａ乃至ｃとを介してサーバーオブジェクトおよびサーバーロールにマッピングされる。
【００７５】
クライアントモデル階層１４０６は、サーバースキーマ階層１４０２と実質的に類似または同一に配列された複数のリアルオブジェクトおよびリアルロールを含んでいる。クライアントモデル階層１４０６は、サーバーオブジェクト「ＡＲＥＡ」１４１２に対応するタイプ「ＡＲＥＡ＿Ａ」１４３４のリアルオブジェクトを含んでいる。リアルオブジェクト「ＡＲＥＡ＿Ａ」１４３４は、サーバーロール「Ｕｎｉｔｓ」１４１４に対応するタイプ「Ｕｎｉｔｓ」１４３６のリアルロールを含有している。リアルロール「Ｕｎｉｔｓ」１４３６は、サーバーオブジェクト「Ｕｎｉｔ」１４０８に対応するタイプ「ＡＢＣ」１４３８のリアルオブジェクトになる。リアルオブジェクト「ＡＢＣ」１４３８は、サーバーロール「ＵｎｉｔＭｏｄｕｌｅ」１４１８に対応するタイプ「ＵｎｉｔＭｏｄｕｌｅ」１４４０のリアルロールと、サーバーロール「Ｍｏｄｕｌｅｓ」１４２０に対応するタイプ「Ｍｏｄｕｌｅ」１４４２のリアルロールとを含有する。リアルロール「ＵｎｉｔＭｏｄｕｌｅ」１４４０は、サーバーオブジェクト「ＵｎｉｔＭｏｄｕｌｅ」１４１０に対応するリアルオブジェクト「ＡＢＣ」１４４４になる。ロール「Ｍｏｄｕｌｅ」１４４２は、サーバーオブジェクト「Ｍｏｄｕｌｅ」１４２２に対応するリアルオブジェクト「ＳＳＳ」１４４６になる。
【００７６】
図１５は、図１４のサーバースキーマ階層１４０２からクライアントスキーマ階層１４０４へのマッピングを生成するために使用可能な例示的ＸＭＬソースコード１５００を示している。ＸＭＬソースコード１５００は、クライアントオブジェクト「ＡＲＥＡ」１４２４（図１４）がサーバーオブジェクト「ＡＲＥＡ」１４１２（図１４）（ライン１５０２）にマッピングされることを示している。クライアントオブジェクト「ＡＲＥＡ」１４２４をサーバーオブジェクト「ＡＲＥＡ」１４１２にマッピングするためには、クライアントモデル１１６はリアルオブジェクト「ＡＲＥＡ＿Ａ」１４３４をクライアントオブジェクト「ＡＲＥＡ」１４２４にマスク「ＡＲＥＡ＿Ａ」１４１０ａを介してマッピングする。このように、クライアントオブジェクト「ＡＲＥＡ」１４２４は、クライアントオブジェクト「ＡＲＥＡ」１４２４がサーバーオブジェクト「ＡＲＥＡ」１４１２に直接アクセスしているように、リアルオブジェクト「ＡＲＥＡ＿Ａ」１４３４を介してサーバーオブジェクト「ＡＲＥＡ」１４１２にアクセスする。
【００７７】
クライアントオブジェクト「ＡＲＥＡ」１４２４は、サーバーロール「Ｕｎｉｔｓ」１４１４（図１４）にマッピングされ、かつクライアントオブジェクト「ＵｎｉｔＭｏｄｕｌｅｓ」１４２８（図１４）（ライン１５０４）になるクライアントロール「ＵｎｉｔＭｏｄｕｌｅｓ」１４２６（図１４）を含有している。クライアントスキーマ階層１４０４におけるクライアントオブジェクトは、クライアントオブジェクトが同一名称のサーバーオブジェクトにマッピングしなくても、サーバースキーマ階層１４０２におけるサーバーオブジェクトと同じ名前を有することができる。例えば、クライアントオブジェクト「ＵｎｉｔＭｏｄｕｌｅｓ」１４２８はサーバーオブジェクト「Ｕｎｉｔ」１４０８（図１４）（ライン１５０６）にマッピングされる。この場合、クライアントモデル１１６はクライアントオブジェクト「ＵｎｉｔＭｏｄｕｌｅｓ」１４２８をリアルオブジェクト「ＡＢＣ」１４３８にマスク「ＡＢＣ」１４１０ｂを介してマッピングする。
【００７８】
クライアントオブジェクト「ＵｎｉｔＭｏｄｕｌｅｓ」１４２８は、サーバーオブジェクト「ＵｎｉｔＭｏｄｕｌｅｓ」１４１０（つまり、「ＵｎｉｔＭｏｄｕｌｅ（ｓｃａｎＲａｔｅ）」）（ライン１５０８）の「ｓｃａｎＲａｔｅ」プロパティにマッピングされる、「ｓｃａｎＲａｔｅ」と称されるプロパティを含有する。この場合、クライアントモデル１１６はリアルオブジェクト「ＡＢＣ」１４４４の「ｓｃａｎＲａｔｅ」をクライアントオブジェクト「ＵｎｉｔＭｏｄｕｌｅ」１４２８の「ｓｃａｎＲａｔｅ」プロパティにマスク「ＡＢＣ」１４１０ｂを介してマッピングする。リアルオブジェクト「ＡＢＣ」１４４４の「ｓｃａｎＲａｔｅ」プロパティをクライアントオブジェクト「ＵｎｉｔＭｏｄｕｌｅ」１４２８の「ｓｃａｎＲａｔｅ」プロパティにマスク「ＡＢＣ」１４１０ｂを介してマッピングすることによって、クライアントモデル１１６はサーバーオブジェクト「Ｕｎｉｔ」１４０８からサーバーロール「ＵｎｉｔＭｏｄｕｌｅ」１４１８（図１４）に横断して、クライアントオブジェクト「ＵｎｉｔＭｏｄｕｌｅｓ」１４２８の「ｓｃａｎＲａｔｅ」プロパティをサーバーオブジェクト「ＵｎｉｔＭｏｄｕｌｅｓ」１４１０の「ｓｃａｎＲａｔｅ」プロパティにマッピングする。
【００７９】
オブジェクト「ＵｎｉｔＭｏｄｕｌｅｓ」１４２０は、サーバーロール「Ｍｏｄｕｌｅｓ」１４２０（図１４）にマッピングされ、かつクライアントオブジェクト「Ｍｏｄｕｌｅ」１４３２（図１４）（ライン１５１０）になるクライアントロール「Ｍｏｄｕｌｅｓ」１４３０（図１４）を含有している。
【００８０】
図１６は、１つの機能ブロックおよび２つの属性を含有する複合機能ブロック「ＰＴ＿ＣＯＭＰ」１６０２を表す例示的ユーザインタフェース１６００を示している。ユーザインタフェース１６００に示されるように、複合機能ブロック「ＰＴ＿ＣＯＭＰ」１６０２は、機能ブロック「ＣＡＬＣ１」１６０６と、属性「ＡＢＳ＿ＰＲＥＳＳ＿ＣＦ」１６０８と、属性「ＡＢＳ＿ＴＥＭＰ＿ＣＦ」１６１０とを含有するアイテムの統合リスト１６０４を含んでいる。ユーザがオブジェクトの統合リストの表示を選択すると、クライアントモデル１１６は１つのクライアントロールおよび２つ以上のサーバーロールをマッピングするように構成可能である。図１７と関連して後述されるように、サーバースキーマ（例えば、図１７のサーバースキーマ階層１７０２）において、機能ブロック「ＣＡＬＣ１」１６０６に対応するオブジェクトは、属性「ＡＢＳ＿ＰＲＥＳＳ＿ＣＦ」１６０８および属性「ＡＢＳ＿ＴＥＭＰ＿ＣＦ」１６１０に対応するオブジェクトとは異なるサーバーロールと関連している。しかしながら、クライアントスキーマ（例えば、図１７のクライアントスキーマ階層１７０４）において、機能ブロック「ＣＡＬＣ１」１６０４、属性「ＡＢＳ＿ＰＲＥＳＳ＿ＣＦ」１６０６および属性「ＡＢＳ＿ＴＥＭＰ＿ＣＦ」１６０８に対応するオブジェクトは全て同一クライアントロールの一部として表される。
【００８１】
図１７は、単一のクライアントロールを複数のサーバーロールにマッピングして図１６の例示的ユーザインタフェース１６００を生成する、サーバースキーマ階層１７０２とクライアントスキーマ階層１７０４間のマッピング構成１７００を示す詳細なブロック図である。マッピング構成で記述されたマッピングはクライアントモデル１１６（図１）によって実行可能である。マッピング構成１７００はクライアントスキーマ階層１７０４をサーバースキーマ階層１７０２にクライアントモデル階層１７０６および複数のマスク１７０８ａ乃至ｄを介してマッピングする。サーバースキーマ階層１７０２は、２つのサーバーロール：タイプ「Ｂｌｏｃｋｓ」１７１２のサーバーロールおよびタイプ「Ａｔｔｒｉｂｕｔｅｓ」１７１４のサーバーロールを含有するタイプ「ＣｏｍｐｏｓｉｔｅＦｕｎｃｔｉｏｎａｌＢｌｏｃｋ」１７１０のサーバーオブジェクトを含んでいる。サーバーロール「Ｂｌｏｃｋｓ」１７１２はタイプ「ＢｌｏｃｋＵｓａｇｅ」１７１６のクライアントオブジェクトになり、サーバーロール「Ａｔｔｒｉｂｕｔｅｓ」１７１４はタイプ「ＡｔｔｒｉｂｕｔｅＤｅｆｉｎｉｔｉｏｎｓ」１７１８のクライアントオブジェクトになる。従って、クライアントモデル階層１７０６はサーバースキーマ階層１７０２に従う。
【００８２】
クライアントスキーマ階層１７０４は、タイプ「Ｃｈｉｌｄｒｅｎ」１７２２のクライアントロールを含有するタイプ「Ｃｏｍｐｏｓｉｔｅ」１７２０のクライアントオブジェクトを含んでいる。クライアントロール「Ｃｈｉｌｄｒｅｎ」１７２２はタイプ「Ｂｌｏｃｋ」１７２４のクライアントオブジェクトおよびタイプ「Ａｔｔｒｉｂｕｔｅ」１７２６のクライアントオブジェクトになる。
【００８３】
図１８は、図１７のサーバースキーマ階層１７０２からクライアントスキーマ階層１７０４へのマッピングを生成するために使用可能な例示的ＸＭＬソースコード１８００を示している。ＸＭＬソースコード１８００はクライアントオブジェクト「Ｃｏｍｐｏｓｉｔｅ」１７２０（図１７）をサーバーオブジェクト「ＣｏｍｐｏｓｉｔｅＦｕｎｃｔｉｏｎａｌＢｌｏｃｋ」１７１０（図１７）（ライン１８０２）にマッピングする。クライアントオブジェクト「Ｃｏｍｐｏｓｉｔｅ」１７２０（ライン１８０４）内に含有されたクライアントロール「Ｃｈｉｌｄｒｅｎ」１７２２は２つのサーバーロールにマッピングする。とりわけ、クライアントロール「Ｃｈｉｌｄｒｅｎ」１７２２はサーバーロール「Ｂｌｏｃｋｓ」１７１２（ライン１８０６）およびサーバーロール「Ａｔｔｒｉｂｕｔｅｓ」１７１４（ライン１８０８）にマッピングする。サーバーロール「Ｂｌｏｃｋｓ」１７１２へのマッピングについて、クライアントロール「Ｃｈｉｌｄｒｅｎ」１７２２はクライアントオブジェクト「Ｂｌｏｃｋ」１７２４（ライン１８０６）になる。サーバーロール「Ａｔｔｒｉｂｕｔｅｓ」１７１４へのマッピングについて、クライアントロール「Ｃｈｉｌｄｒｅｎ」１７２２はクライアントオブジェクト「Ａｔｔｒｉｂｕｔｅ」１７２６（ライン１８０８）になる。クライアントロール「Ｂｌｏｃｋ」１７２４はサーバーオブジェクト「ＢｌｏｃｋＵｓａｇｅ」１７１６（ライン１８１０）にマッピングし、クライアントロール「Ａｔｔｒｉｂｕｔｅ」１７２６はサーバーオブジェクト「ＡｔｔｒｉｂｕｔｅＤｅｆｉｎｉｔｉｏｎ」１７１８（ライン１８１２）にマッピングする。
【００８４】
図１９は、特定のプラントエリア「ＡＲＥＡ＿Ａ」１９０２内の複数の異なるコントロールデバイスを表す例示的ユーザインタフェース１９００を示している。具体的には、プラントエリア「ＡＲＥＡ＿Ａ」１９０２は「ＬＩＣ−５４９」コントロールデバイス１９０４と、「ＰＬＭ１」コントロールデバイス１９０６と、「ＥＭ１」コントロールデバイス１９０８とを含んでいる。図２０および２１と関連して後述されるように、コントロールデバイス１９０４、１９０６および１９０８は、サーバースキーマ（例えば、図２０のサーバースキーマ階層２００２）において単一のサーバーロールにマッピングされる３つの個別クライアントロールとしてクライアントスキーマ（例えば、図２０のクライアントスキーマ階層２００４）において表される。
【００８５】
図２０は、複数のクライアントロールを単一のサーバーロールにマッピングして図１９の例示的ユーザインタフェース１９００を生成する、サーバースキーマ階層２００２とクライアントスキーマ階層２００４間のマッピング構成２０００を示す詳細なブロック図である。マッピング構成２０００はクライアントスキーマ階層２００４をサーバースキーマ階層２００２にクライアントモデル階層２００６および複数のマスク２００８ａ乃至ｄを介してマッピングする。サーバースキーマ階層２００２は、タイプ「Ｍｏｄｕｌｅｓ」２０１２のサーバーロールを含有するタイプ「Ａｒｅａ」２０１０のサーバーオブジェクトを含んでいる。サーバーロール「Ｍｏｄｕｌｅｓ」２０１２は、タイプ「ＰｈａｓｅＬｏｇｉｃＭｏｄｕｌｅ」２０１４のサーバーオブジェクト、タイプ「ＥｑｕｉｐｍｅｎｔＭｏｄｕｌｅ」２０１６のサーバーオブジェクト、およびタイプ「ＣｏｎｔｒｏｌＭｏｄｕｌｅ」２０１８のサーバーオブジェクトになる。クライアントモデル階層２００６は、それぞれサーバーオブジェクト「ＰｈａｓｅＬｏｇｉｃＭｏｄｕｌｅ」２０１４、サーバーオブジェクト「ＥｑｕｉｐｍｅｎｔＭｏｄｕｌｅ」２０１６およびサーバーオブジェクト「ＣｏｎｔｒｏｌＭｏｄｕｌｅ」２０１８に対応するタイプ「ＰＬＭ１」２０２０のリアルオブジェクトと、タイプ「ＥＭ１」２０２２のリアルオブジェクトと、タイプ「ＬＩＣ−４５９」２０２４のリアルオブジェクトとを含む。リアルオブジェクト「ＰＬＭ１」２０２０、「リアルオブジェクト「ＥＭ１」２０２２およびリアルオブジェクト「ＬＩＣ−４５９」２０２４はまた、ユーザインタフェース１９００に示されている「ＬＩＣ−４５９」コントロールデバイス１９０４、「ＰＬＭ１」コントロールデバイス１９０６および「ＥＭ１」コントロールデバイス１９０８にそれぞれ対応する。
【００８６】
クライアントスキーマ階層２００４は、タイプ「ＣｏｎｔｒｏｌＭｏｄｕｌｅｓ」２０２８のクライアントロール、タイプ「ＰｈａｓｅＬｏｇｉｃＭｏｄｕｌｅｓ」２０３０のクライアントロールおよびタイプ「ＥｑｕｉｐｍｅｎｔＭｏｄｕｌｅｓ」２０３２のクライアントロールになるタイプ「Ａｒｅａ」２０２６のクライアントオブジェクトを含んでいる。クライアントロール「ＣｏｎｔｒｏｌＭｏｄｕｌｅｓ」２０２８はタイプ「ＣｏｎｔｒｏｌＭｏｄｕｌｅ」２０３４のクライアントオブジェクトになる。クライアントロール「ＰｈａｓｅＬｏｇｉｃＭｏｄｕｌｅｓ」２０３０はタイプ「ＰｈａｓｅＬｏｇｉｃＭｏｄｕｌｅ」２０３６のクライアントオブジェクトになる。クライアントロール「ＥｑｕｉｐｍｅｎｔＭｏｄｕｌｅ」２０３２はタイプ「ＥｑｕｉｐｍｅｎｔＭｏｄｕｌｅ」２０３８のクライアントオブジェクトになる。
【００８７】
図２１は、図２０のサーバースキーマ階層２００２からクライアントスキーマ階層２００４へのロールマッピングを生成するために使用可能な例示的ＸＭＬソースコード２１００を示している。ＸＭＬソースコード２１００に示されるように、クライアントロール「ＣｏｎｔｒｏｌＭｏｄｕｌｅｓ」２０２８はサーバーロール「Ｍｏｄｕｌｅｓ」２００６（ライン２１０２）にマッピングされる。また、クライアントロール「ＰｈａｓｅＬｏｇｉｃＭｏｄｕｌｅｓ」２０３０はサーバーロール「Ｍｏｄｕｌｅｓ」２００６（ライン２１０４）にマッピングされる。加えて、クライアントロール「ＥｑｕｉｐｍｅｎｔＭｏｄｕｌｅｓ」２０３２はサーバーロール「Ｍｏｄｕｌｅｓ」２００６（ライン２１０６）にマッピングされる。
【００８８】
図２２は、コントロールデバイスと関連したアイテムを選択的に表示するために使用可能な例示的ユーザインタフェース２２００を示している。例えば、ユーザインタフェース２２００は「ＣＨ０１」コントロールデバイス２２０２を示しており、「ＣＨ０１」コントロールデバイス２２０２がサーバースキーマ（例えば、図２３のサーバースキーマ階層２３０２）における少なくとも２つのプロパティと関連していても、「ＣＨ０１」コントロールデバイス２２０２と関連した１つのプロパティ、プロパティ「ＣＴＬＲ１Ｃ０１ＣＨ０１」２２０４のみを表示する。より詳細に後述されるように、クライアントスキーマ（例えば、図２３のクライアントスキーマ階層２３０４）はサーバースキーマ（例えば、サーバースキーマ階層２３０２）において１サブセットのサーバーオブジェクトにマッピングされてもよいため、クライアントアプリケーション（例えば、図１のクライアントアプリケーション１０８）はユーザインタフェース２２００に示されるような１サブセットのオブジェクトのみを表示する。
【００８９】
図２３は、クライアントオブジェクトを１サブセットのサーバーオブジェクトにマッピングして図２２の例示的ユーザインタフェース２２００を生成する、サーバースキーマ階層２３０２とクライアントスキーマ階層２３０４間のマッピング構成２３００を示す詳細なブロック図である。クライアントモデル階層２３０６は、図２２のプロパティ「ＣＴＬＲ１Ｃ０１ＣＨ０１」２２０４に対応するタイプ「ＣＴＬＲＣ０１ＣＨ０１」２３０８のリアルオブジェクトを含んでいる。サーバースキーマ階層２３０２はタイプ「Ｄｅｖｉｃｅ」２３１０のサーバーオブジェクトと、タイプ「ＤＳＴ」２３１２のサーバーオブジェクトとを含んでいる。クライアントスキーマ階層２３０４はタイプ「ＤＳＴ」２３１４のクライアントオブジェクトを含んでいる。図２４の例示的ＸＭＬソースコード２４００に示されるように、クライアントオブジェクト「ＤＳＴ」２３１４はサーバーオブジェクト「ＤＳＴ」２３１２（ライン２４０２）にマッピングされる。クライアントオブジェクト「ＤＳＴ」２３１４はリアルオブジェクト「ＣＴＬＲＣ０１ＣＨ０１」２３０８およびマスク「ＣＴＬＲ１Ｃ０１ＣＨ０１」２３１６を介してサーバーオブジェクト「ＤＳＴ」２３１２にマッピングされる。
【００９０】
図２５は、追加アイテムがそのコントロールデバイスのサーバースキーマの一部でなくても追加アイテムをコントロールデバイスに挿入するために使用可能な例示的ユーザインタフェース２５００を示している。ユーザインタフェース２５００は「ＡｓｓｉｇｎｅｄＭｏｄｕｌｅｓ」アイテム２５０４および「ＴＩＣ−２０５」アイテム２５０６を有するものとして示されている「ＣＴＬＲ１」コントロールデバイス２５０２を含んでいる。図２６と関連して後述されるように、サーバースキーマ（例えば図２６のサーバースキーマ２６０２）は、「ＡｓｓｉｇｎｅｄＭｏｄｕｌｅｓ」アイテム２５０４に対応するサーバーオブジェクトを含んでいない。その代わり「ＡｓｓｉｇｎｅｄＭｏｄｕｌｅｓ」アイテム２５０４に対応するクライアントオブジェクトがクライアントスキーマ（例えば、図２６のクライアントスキーマ２６０４）に挿入される。
【００９１】
図２６は、クライアントオブジェクトをクライアントスキーマ階層２６０２に挿入する、サーバースキーマ階層２６０２とクライアントスキーマ階層２６０４間のマッピング構成２６００を示す詳細なブロック図である。サーバースキーマ階層２６０２およびクライアントモデル階層２６０６の各々は単一のオブジェクトを含んでいる。具体的には、サーバースキーマ階層２６０２はタイプ「Ｍｏｄｕｌｅ」２６０８のサーバーオブジェクトを含んでおり、クライアントモデル階層２６０６は、サーバーオブジェクト「Ｍｏｄｕｌｅｓ」２６０８および「ＴＩＣ−２０５」アイテム２５０６（図２５）に対応するタイプ「ＴＩＣ−２０１」２６１０のリアルオブジェクトを含んでいる。クライアントスキーマ階層２６０４は、サーバーおよびクライアントモデルオブジェクト２６０８および２６１０に対応するクライアントオブジェクト「Ｍｏｄｕｌｅ」２６１２を含んでいる。加えて、クライアントアプリケーション（例えば、図１のクライアントアプリケーション１０８）はタイプ「ＡｓｓｉｇｎｅｄＭｏｄｕｌｅｓ」２６１４のクライアントオブジェクトを挿入している。
【００９２】
図２７は、クライアントオブジェクト「ＡｓｓｉｇｎｅｄＭｏｄｕｌｅｓ」２６１４（図２６）をクライアントスキーマ階層２６０４（図２６）に挿入するための例示的ＸＭＬソースコード２７００を示している。具体的には、クライアントオブジェクト「ＡｓｓｉｇｎｅｄＭｏｄｕｌｅｓ」２６１４を作成するために、例示的ＸＭＬソースコード２７００は、タイプ「ＡｓｓｉｇｎｅｄＭｏｄｕｌｅｓ」２６１６（図２６）のクライアントロールがサーバースキーママッピング（例えば、ロール名＝‘ＡｓｓｉｇｎｅｄＭｏｄｕｌｅｓ’ｍａｐｐｉｎｇ＝‘’）を有していないこと、およびクライアントロール「ＡｓｓｉｇｎｅｄＭｏｄｕｌｅｓ」２６１６がクライアントオブジェクト「ＡｓｓｉｇｎｅｄＭｏｄｕｌｅｓ」２６１４（ライン２７０２）になることを指定する。クライアントオブジェクト「ＡｓｓｉｇｎｅｄＭｏｄｕｌｅｓ」２６１４をクライアントスキーマ階層２６０４に挿入するために、例示的ＸＭＬソースコード２７００は、クライアントオブジェクト「ＡｓｓｉｇｎｅｄＭｏｄｕｌｅｓ」２６１４がタイプ「Ｃｏｎｔｒｏｌｌｅｒ」２６１８のサーバーオブジェクト（例えば、サーバースキーマ階層２６０２の親オブジェクト）（ライン２７０４）に擬似マッピングされることを指定する。クライアントオブジェクト「ＡｓｓｉｇｎｅｄＭｏｄｕｌｅｓ」２６１４は、タイプ「ＡｓｓｉｇｎｅｄＭｏｄｕｌｅｓ」２６２２（図２６）（ライン２７０６）のサーバーロールにマッピングされるタイプ「Ｍｏｄｕｌｅｓ」２６２０（図２６）のクライアントロールを含有する。
【００９３】
図２８は、リアルタイムプロセスコントロールデータがコマンドを介して取得可能なアイテムを表示するために使用可能な例示的ユーザインタフェース２８００を示している。ユーザインタフェース２８００は、リアルタイムプロセスコントロールデータをランタイムサーバー１１４（図１）を介して取得可能なコントロールデバイスを含有するフィールドバスポート「Ｐ０１」２８０２を含んでいる。具体的には、フィールドバスポート「Ｐ０１」２８０２は「ＤｅｃｏｍｉｓｓｉｏｎｅｄＦｉｅｌｄｂｕｓＤｅｖｉｃｅ」２８０４を含有しており、これはコントロールデバイス「Ｄ１」２８０６を含んでいる。コントロールデバイス「Ｄ１」２８０６は、図２９と関連して後述されるコマンドとしてクライアントスキーマ（例えば、図２９のクライアントスキーマ階層２９０２）において実施される。
【００９４】
図２９は、クライアントロールをコマンドとして実施するマッピング構成を示す詳細なブロック図である。クライアントスキーマ階層２９０２は、コマンドとして実施されるタイプ「Ｄｅｖｉｃｅｓ」２９０４のクライアントロールを含んでいる。クライアントロール「Ｄｅｖｉｃｅｓ」２９０４は、リアルタイムプロセスコントロールデータを図１のランタイムサーバー１１４から取得するために使用可能である。図３０の例示的ＸＭＬソースコード３０００は、オブジェクトタイプ「ＤｅｃｏｍｍｉｓｓｉｏｎｅｄＤｅｖｉｃｅｓ」２９０６（図２９）（図３０のライン３００２）のクライアントがクライアントロール「Ｄｅｖｉｃｅｓ」２９０４（図２９）を含有していることを指定する。例示的ＸＭＬソースコード３０００はまた、クライアントロール「Ｄｅｖｉｃｅｓ」２９０４はファイル「ｃｏｍｍａｎｄｓ．ｄｌｌ」（例えば、ａｓｓｅｍｂｌｙ＝「ｃｏｍｍａｎｄｓ．ｄｌｌ」）に記憶されているコマンド命令を使用して実施されることと、クライアントロール「Ｄｅｖｉｃｅｓ」２９０４を実施する具体的なコマンドは「ＧｅｔＤｅｃｏｍｉｓｓｉｏｎｅｄＤｅｖｉｃｅｓ」（ライン３００４）であることとを指定する。クライアントロール「Ｄｅｖｉｃｅｓ」２９０４はタイプ「ＦｉｅｌｄｂｕｓＤｅｖｉｃｅｓ」２９０８（図１９）（図３０のライン３００４）のクライアントオブジェクトになり、これはサーバースキーマ階層２９１０（図２９）（図３０のライン３００６）へのマッピングを有していない。
【００９５】
図３１Ａ、３１Ｂおよび３２は、図１および２の例示的クライアントアプリケーション１０８と、例示的クライアントモデル１１６と例示的ユーザインタフェース１１８とを実施するための例示的マシーン読み取り可能かつ実行可能な命令を表すフローチャートを示している。これらの例において、マシーン読み取り可能な命令は、図３３の例示的プロセッサシステム３３１０に示されているプロセッサ３３１２などのプロセッサによって実行するためのプログラムを備えている。プログラムは、ＣＤ−ＲＯＭ、フロッピー（登録商標）ディスク、ハードドライブ、デジタル多用途ディスク（ＤＶＤ）またはプロセッサ３３１２と関連したメモリなどの有形媒体に記憶されたソフトウェアにおいて具現化されてもよく、かつ／または既知の方法でファームウェアや専用ハードウェアで具現化されてもよい。例えば、図１および２の例示的クライアントアプリケーション１０８、例示的クライアントモデル１１６および例示的ユーザインタフェース１１８内の構造のいずれかまたは全部がソフトウェア、ハードウェアおよび／またはファームウェアによって実施可能である。さらに、例示的プログラムは図３１Ａ、３１Ｂおよび３２に示されたフローチャートを参照して説明されるが、当業者は、図１および２の例示的クライアントアプリケーション１０８、例示的クライアントモデル１１６および例示的ユーザインタフェース１１８の多数の実施方法が代替的に使用可能であることを容易に理解するであろう。例えば、ブロックの実行順序は変更可能であり、かつ／または説明されているブロックの一部は変更、削除または結合可能である。
【００９６】
図３１Ａおよび３１Ｂは、ランタイム段階でクライアントアプリケーション（例えば、図１のクライアントアプリケーション１０８）アクセスをリアルオブジェクト（例えば、図２、７および８のリアルオブジェクト２１６）にクライアントオブジェクト（例えば、図２、７および８のクライアントオブジェクト２１２）を介して提供するために使用可能な例示的方法のフロー図を示している。まず、クライアントアプリケーション１０８は第１および第２のＵＩビュー（例えば、図７の第１および第２のＵＩビュー７０２および７０４）を参照する（ブロック３１０２）。第１のＵＩビュー７０２は次いで、親クライアントオブジェクト（例えば、図７の親クライアントオブジェクト「Ｏ」７１０ａ）と対応する親オブジェクトハンドルおよびマスク（例えば、図７の親オブジェクトハンドル「Ｈ」７１２ａおよびゼロ番目のマスク「Ｍ」７１４ａ）とを介するリアル親オブジェクト（例えば、図７の親リアルオブジェクト「Ｒ」７０８ａ）へのアクセスをリクエストする（ブロック３１０４）。例えば、第１のＵＩビュー７０２は親クライアントオブジェクト「Ｏ」７１０ａを使用するためのコールを発行可能である。親クライアントオブジェクト「Ｏ」７１０ａは次いで、親オブジェクトハンドル「Ｈ」７１２ａを参照することによって応答可能であり、これはまたゼロ番目のマスク「Ｍ」７１４ａを参照する。マスク参照「Ｍ」７１４ａは次いで親リアルオブジェクト「Ｒ」７０８ａを参照し、図７に示されるように通信経路が第１のＵＩビュー７０２と親リアルオブジェクト「Ｒ」７０８ａ間に確立される。
【００９７】
第１のＵＩビュー７０２は次いで、親リアルオブジェクト「Ｒ」７０８ａにリアルロール（例えば、図７の「ＭｏｄｕｌｅＬｉｂｒａｒｙ」リアルロール７０８ｂ）をロードさせる（ブロック３１０６）。例えば、第１のＵＩビュー７０２はロードロールを親クライアントオブジェクト「Ｏ」７１０ａに呼び出し、ロール名「ＭｏｄｕｌｅＬｉｂｒａｒｙ」を譲渡する。親クライアントオブジェクト「Ｏ」７１０ａは次いで、親オブジェクトハンドル「Ｈ」７１２ａからリアルロールをフェッチして、親オブジェクトハンドル「Ｈ」７１２ａはゼロ番目のマスク「Ｍ」７１４ａに「ＭｏｄｕｌｅＬｉｂｒａｒｙ」リアルロール７０８ｂをロードさせる。
【００９８】
親リアルオブジェクト「Ｒ」７０８ａは次いで、「ＭｏｄｕｌｅＬｉｂｒａｒｙ」リアルロール７０８ｂにおいて第１および第２のリアルオブジェクト７０８ｃおよび７０８ｄをロードする（ブロック３１０８）。ゼロ番目のマスク「Ｍ」７１４ａは次いで第１および第２のリアルオブジェクト７０８ｃおよび７０８ｄに対するマスク（例えば、図７の第１および第２のマスク７１４ａおよび７１４ｂ）を作成し、このマスクを親オブジェクトハンドル「Ｈ」７１２ａに返送する（ブロック３１１０）。親オブジェクトハンドル「Ｈ」７１２ａは次いで第１および第２のマスク７１４ｂおよび７１４ｃに対するオブジェクトハンドル（例えば、図７の第２のオブジェクトハンドル７１２ｂおよび７１２ｃ）を作成し、このオブジェクトハンドルを親クライアントオブジェクト「Ｏ」７１０ａに返送する（ブロック３１１２）。
【００９９】
親クライアントオブジェクト「Ｏ」７１０ａは次いで第１および第２の子クライアントオブジェクト７１０ｂおよび７１０ｃ（図７）のインスタンスを作成し、子クライアントオブジェクト７１０ａ乃至ｂの各々を対応するオブジェクトハンドルに照会する（ブロック３１１４）。具体的には、第１の子クライアントオブジェクト７１０ｂは第１のオブジェクトハンドル７１２ｂに照会され、第２の子クライアントオブジェクト７１０ｃは第２のオブジェクトハンドル７１２ｃに照会される。第１のＵＩビュー７０２は次いで第１および第２の子クライアントオブジェクト７１０ｂおよび７１０ｃを参照し（ブロック３１１６）、これは図７に示されるように第１のＵＩビュー７０２と第１および第２のリアルオブジェクト７０８ｃおよび７０８ｄとの間の通信経路を形成する。
【０１００】
図３１Ｂに示されるように、第２のＵＩビューは次いで、第１のリアルオブジェクト７０８ｃへのアクセスをリクエストする（ブロック３１１８）。クライアントモデル１１６は次いで、第１および第２のビュー７０２および７０４がクライアントスキーマ（例えば、図１４、１７、２０、２３、２６および２９のクライアントスキーマ階層のうちの１つ）を共通しているか否かを判断する（ブロック３１２０）。ＵＩビュー７０２および７０４がクライアントスキーマを共有している場合、第１のＵＩビュー７０２は第１の子クライアントオブジェクト７１０ｂを第２のユーザビュー７０４に譲渡する（ブロック３１２２）。この場合、図７に示されるように、データ経路が第２のＵＩビュー７０４と第１の子クライアントオブジェクト７１０ｂ間に確立され、第１のＵＩビュー７０２と第１の子クライアントオブジェクト７１０ｂ間のデータ経路は、第１のＵＩビュー７０２がもはや第１の子クライアントオブジェクト７１０ｂを参照しないため、非アクティブにされる。
【０１０１】
第１および第２のＵＩビュー７０２および７０４がクライアントスキーマを共有していない場合、第１のＵＩビュー７０２は、第１の子クライアントオブジェクト７１０ｂに対応するサーバー経路を第２のＵＩビュー７０４に譲渡する（ブロック３１２４）。第２のＵＩビュー７０４は次いでサーバー経路をクライアントモデル１１６に譲渡し、サーバー経路上のアイテムを調べるためにクライアントモデル１１６にリクエストを発行する（ブロック３１２６）。クライアントモデル１１６は次いで、第１のリアルオブジェクト７０８ｃを参照する第３のマスク８０４（図８）および第３のオブジェクトハンドル８０６（図８）を作成する（ブロック３１２８）。第２のＵＩビュー７０４は次いで第３のオブジェクトハンドル８０４（図８）をクライアントモデル１１６から受信する（ブロック３１３０）。第２のＵＩビュー７０４は次いで第３の子クライアントオブジェクト８０４（図８）のインスタンスを作成する（ブロック３１３２）。第３の子クライアントオブジェクト８０４は次いで第３のオブジェクトハンドル８０４を参照する（ブロック３１３４）。次いで通信経路が、図８に示されるように、第２のＵＩビュー７０４と第１のリアルオブジェクト７０８ｃ間に形成される。第１のＵＩビュー７０２が第１のリアルオブジェクト７０８ｃへのアクセスを終了されると、クライアントモデルは、第１の子クライアントオブジェクト７１０ｂ、第１のオブジェクトハンドル７１２ｂおよび第１のマスク７１４ｂは未使用または非アクティブであり、ガーベジコレクションの準備ができていることを示す（ブロック３１３６）。
【０１０２】
クライアントモデル１１６はいずれのクライアントオブジェクト、ハンドルおよびマスクがガーベジコレクションの準備ができているかを示した後、あるいはブロック３１２２において第１のＵＩビュー７０２が第１の子クライアントオブジェクト７１０ｂを第２のＵＩビュー７０４に譲渡した後、クライアントモデル１１６は第１のＵＩビュー７０４が第１のリアルオブジェクト７０８ｃに再度アクセスする必要があるか否かを判断する（ブロック３１３８）。第１のＵＩビュー７０４が第１のリアルオブジェクト７０８ｃに再度アクセスする必要がなければ、コントロールはブロック３１０４（図３１Ａ）に戻り、ブロック３１０４乃至３１１６と関連して上述された動作が、第１のＵＩビュー７０２と第１のリアルオブジェクト７０８ｃ間に通信経路を確立するために反復される。この場合、図７に示されるように、第１のＵＩビュー７０２から第１のリアルオブジェクト７０８ｃまでの通信経路が、第１のクライアント子オブジェクト「Ｏ１」７１０ｅの第２のインスタンス、第１のオブジェクトハンドル「Ｈ１」７１２ｄの第２のインスタンス、および第１のマスク「Ｍ１」７１４ｄの第２のインスタンスを介して確立される。クライアントモデル１１６がブロック３１３８で、第１のＵＩビュー７０２が第１のリアルオブジェクト７０８ｃに再度アクセスする必要がないと判断すると、プロセスは終了される。
【０１０３】
図３２は、クライアントオブジェクト（例えば、図９のクライアントオブジェクト９０２）において修正済みプロセスコントロールデータを更新するために使用可能な例示的方法である。まず、クライアントモデル１１６（図１）は更新通知イベントを取得する（ブロック３２０２）。クライアントモデル１１６は更新通知イベントをプロセスコントロールシステムデータベースサーバー１１２および／またはプロセスコントロールシステムデータベース１１０から受信する。例えば、格納プロセスコントロールデータがプロセスコントロールシステムデータベース１１０において修正された場合、プロセスコントロールシステムデータベース１１０は更新通知イベント（例えば、「ＵｐｄａｔｅＮｏｔｉｆｉｃａｔｉｏｎ」イベント）と、不確かなリアルオブジェクトや不正リアルオブジェクト（例えば、データベース１１０で修正されたプロセスコントロールデータと関連した図２および７のリアルオブジェクト２１６の一部）のリストとを発行する。「ＵｐｄａｔｅＮｏｔｉｆｉｃａｔｉｏｎ」イベントに応答して、クライアントモデル１１６は、「ＵｐｄａｔｅＮｏｔｉｆｉｃａｔｉｏｎ」イベントを介してクライアントモデル１１０に提供された不確かなリアルオブジェクトに対応する１つ以上の不確かなクライアントオブジェクト（例えば、図２および７のクライアントオブジェクト２１２の一部）を識別する（ブロック３２０４）。クライアントモデル１１６は次いで、例えば「ＱｕｅｓｔｉｏｎａｂｌｅＵｐｄａｔｅＮｏｔｉｆｉｃａｔｉｏｎ」イベントを介して不確かなクライアントオブジェクトのリストをクライアントアプリケーション（例えば、図１のクライアントアプリケーション１０８）に通信する（ブロック３２０６）。不確かなクライアントオブジェクトのリストは、不確かなクライアントオブジェクトのハンドルまたは識別を含むことがある。
【０１０４】
クライアントアプリケーション１０８は次いで、不確かなクライアントオブジェクトのリストをクライアントモデル１１６から受信し、不確かなクライアントオブジェクトのリストに基づいて不正ハッシュテーブル（例えば、図９の不正ハッシュテーブル９１６）にデータ投入する（ブロック３２０８）。例えば、クライアントアプリケーション１０８の事前生成パーシャルクラス（例えば、図２の事前生成パーシャルクラス２０６）は、「ＱｕｅｓｔｉｏｎａｂｌｅＵｐｄａｔｅＮｏｔｉｆｉｃａｔｉｏｎ」イベントと、不確かなクライアントオブジェクトのリストとを監視するためのメソッドやイベントを含むことがある。クライアントアプリケーション１０８は次いで、可視ＵＩビュー（例えば、図７のＵＩビュー７０２および７０４や図９のＵＩビュー１１８）に、更新通知イベントが受信されたことを通知する（ブロック３２１０）。例えば、ユーザに見えるプロセスコントロールデータを更新するのに必要な時間を短縮するために、クライアントアプリケーション１０８は、ユーザインタフェースディスプレイ上で最小化されるＵＩビューを通知しなくてもよい。可視ＵＩビューは次いで、クライアントオブジェクトのいずれかが不正であるかを、不正ハッシュテーブル９１６に基づいて判断する（ブロック３２１２）。例えば、可視ＵＩビューのクライアントオブジェクトは、ハンドルまたは識別のいずれかが不正ハッシュテーブル９１６における不確かなクライアントオブジェクトのハンドルまたは識別に対応しているか否かを判断する。
【０１０５】
可視ＵＩビューは次いで、不正ハッシュテーブル９１６にある使用済みオブジェクトハンドルをフラグする（ブロック３２１４）。例えば、ＵＩビュー１１８が依然としてクライアントオブジェクト９０２を使用しており、かつクライアントオブジェクト９０２に対応するオブジェクトハンドルが不正ハッシュテーブル９１６にある場合、オブジェクト９０２は不正ハッシュテーブル９１６におけるその対応するオブジェクトハンドルをフラグして、クライアントオブジェクト９０２が依然として「使用中」であり、従ってガーベジコレクションの準備ができていないことを示す。フラグされていない、不正ハッシュテーブル９１６における任意のオブジェクトハンドルは非アクティブまたは未使用、かつガーベジコレクション可能と指示または指定される。クライアントモデル１１６は次いで、全ての非アクティブまたは未使用の不正オブジェクトハンドルを除去またはアンロードする（ブロック３２１６）。例えば、クライアントモデル１１６は、不正ハッシュテーブル９１６に列挙されている全ての不正オブジェクトハンドルを除去またはアンロードするためにガーベジコレクションルーチンを使用してもよいが、これは使用済みまたはアクティブとしてフラグされない。
【０１０６】
クライアントモデル１１６は次いで、不正ハッシュテーブル９１６において使用済みとフラグされた不正オブジェクトハンドルに対する更新済みまたは修正済みプロセスコントロールデータを検索する（ブロック３２１８）。例えば、クライアントモデル１１６は「使用中」の不正オブジェクトのプロセスコントロールデータに対応する問い合わせを生成して、この問い合わせをプロセスコントロールシステムデータベースサーバー１１２に通信する（図１）。プロセスコントロールシステムデータサーバー１１２は次いで修正済みプロセスコントロールデータをプロセスコントロールシステムデータベース１１０から検索して、修正済みプロセスコントロールデータをクライアントモデル１１６に返送する。
【０１０７】
クライアントモデル１１６は次いで、更新済みまたは修正済みプロセスコントロールデータをサーバースキーマからクライアントスキーマに変換する（ブロック３２２０）。例えば、クライアントモデル１１６は、修正済みプロセスコントロールデータをサーバースキーマ（例えば、図１４、１７、２０、２３、２６および２９のサーバースキーマ階層のうちの１つ）からクライアントスキーマ（例えば、図１４、１７、２０、２３、２６および２９のクライアントスキーマ階層のうちの１つ）に変換またはマッピングするために図１４、１７、２０、２３、２６および２９と関連して上述されたマッピング構成のいずれかを使用してもよい。
【０１０８】
クライアントモデル１１６は次いで、不確かなクライアントオブジェクトに対して現在ロードされているいずれのプロセスコントロールデータ値が受信された修正済みプロセスコントロールデータと異なるかを判断して、異なる修正済みプロセスコントロールデータ（例えば、実際に変更したデータ）のみをクライアントアプリケーションに通信する（ブロック３２２２）。このように、クライアントモデル１１６は、修正済みとは示されているが、クライアントアプリケーション１０８に現在ロードされているプロセスコントロールデータからは変化していないプロセスコントロールデータをクライアントアプリケーション１０８に通信する必要はない。クライアントアプリケーション１０８は次いで、使用済みの不正オブジェクトハンドルと関連し、かつ修正済みプロセスコントロールデータがクライアントモデル１１６から受信されたクライアントオブジェクトに更新通知を発行する（ブロック３２２４）。例えば、クライアントアプリケーション１０８は更新通知をクライアントオブジェクト９０２（図９）に発行して、ＰＲＯＰＥＲＴＹ＿Ｃ要素９１０ｃ、ＰＲＯＰＥＲＴＹ＿Ｄ要素９１０ｄおよびＰＲＯＰＥＲＴＹ＿Ｅ要素９１０ｅ（図９）のいずれかと関連した修正済みプロセスコントロールデータを譲渡してもよい。各クライアントオブジェクトは次いでそのデータ（ブロック３２２６）を、受信した修正済みプロセスコントロールデータに基づいて更新する。例えば、クライアントオブジェクト９０２は受信した修正済みプロセスコントロールデータに基づいて要素９１０ｃ、９１０ｄおよび９１０ｅの値を更新してもよい。
【０１０９】
図３３は、ここに説明された例示的装置、方法および製品を実施するために使用可能な例示的プロセッサシステムのブロック図である。図３３に示されるように、プロセッサシステム３３１０は、相互接続バス３３１４に接続されたプロセッサ３３１２を含んでいる。プロセッサ３３１２はレジスタセットつまりレジスタスペース３３１６を含んでおり、これは図３３では全体的にオンチップとして示されているが、代替的に、全体的または部分的にオフチップで配置され、かつ専用電気接続および／または相互接続バス３３１４を介してプロセッサ３３１２に直接接続可能である。プロセッサ３３１２は任意の適切なプロセッサ、処理ユニットまたはマイクロプロセッサであってもよい。図３３には示されていないが、システム３３１０はマルチプロセッサシステムであってもよいため、プロセッサ３３１２と同一または類似であり、かつ相互接続バス３３１４に通信可能に接続されている１つ以上の追加プロセッサを含んでもよい。
【０１１０】
図３３のプロセッサ３３１２はチップセット３３１８に接続されており、これはメモリコントローラ３３２０および入力／出力（Ｉ／Ｏ）コントローラ３３２２を含んでいる。既知であるように、チップセットは通常、チップセット３３１８に接続された１つ以上のプロセッサによってアクセス可能であるか、これによって使用されるＩ／Ｏおよびメモリ管理機能ならびに複数の汎用および／または特別用途レジスタ、タイマーなどを提供する。メモリコントローラ３３２０は、プロセッサ３３１２（または、複数のプロセッサがあれば複数のプロセッサ）がシステムメモリ３３２４および大容量記憶メモリ３３２５にアクセスできるようにする機能を実行する。
【０１１１】
システムメモリ３３２４は、例えば静的ランダムアクセスメモリ（ＳＲＡＭ）、動的ランダムアクセスメモリ（ＤＲＡＭ）、フラッシュメモリ、リードオンリーメモリ（ＲＯＭ）などの所望のタイプの揮発性および／または不揮発性メモリを含んでもよい。大容量記憶メモリ３３２５は、ハードディスクドライブ、光学ドライブ、テープ記憶デバイスなどを含む所望のタイプの大容量記憶メモリを含んでもよい。
【０１１２】
Ｉ／Ｏコントローラ３３２２は、プロセッサ３３１２がＩ／Ｏバス３３３２を介して周辺入力／出力（Ｉ／Ｏ）デバイス３３２６および３３２８とネットワークインタフェース３３３０と通信できるようにする機能を実行する。Ｉ／Ｏデバイス３３２６および３３２８は、例えば、キーボード、ビデオディスプレイまたはモニタ、マウスなどの所望のタイプのＩ／Ｏデバイスであってもよい。ネットワークインタフェース３３３０は例えば、プロセッサシステム３３１０が別のプロセッサシステムと通信できるようにするイーサネット（登録商標）デバイス、非同期転送モード（ＡＴＭ）デバイス、８０２．１１デバイス、ＤＳＬモデム、ケーブルモデム、セルラーモデルなどであってもよい。
【０１１３】
メモリコントローラ３３２０およびＩ／Ｏコントローラ３３２２はチップセット３３１８内の個別機能ブロックとして図３３に示されているが、これらのブロックによって実行される機能は単一の半導体回路内に一体化されてもよく、あるいは２つ以上の個別集積回路を使用して実施されてもよい。
【０１１４】
特定の方法、装置および製品がここでは説明されてきたが、本特許の範囲はこれらに制限されない。反対に、本特許は、文字通りまたは均等論に従った添付の請求項の範囲内の全ての方法、装置および製品をカバーしている。
【図１】
0005602166.tif 000002
【図２】
0005602166.tif 000003
【図３】
0005602166.tif 000004
【図４】
0005602166.tif 000005
【図５】
0005602166.tif 000006
【図６】
0005602166.tif 000007
【図７】
0005602166.tif 000008
【図８】
0005602166.tif 000009
【図９】
0005602166.tif 000010
【図１０】
0005602166.tif 000011
【図１１】
0005602166.tif 000012
【図１２】
0005602166.tif 000013
【図１３】
0005602166.tif 000014
【図１４】
0005602166.tif 000015
【図１５】
0005602166.tif 000016
【図１６】
0005602166.tif 000017
【図１７】
0005602166.tif 000018
【図１８】
0005602166.tif 000019
【図１９】
0005602166.tif 000020
【図２０】
0005602166.tif 000021
【図２１】
0005602166.tif 000022
【図２２】
0005602166.tif 000023
【図２３】
0005602166.tif 000024
【図２４】
0005602166.tif 000025
【図２５】
0005602166.tif 000026
【図２６】
0005602166.tif 000027
【図２７】
0005602166.tif 000028
【図２８】
0005602166.tif 000029
【図２９】
0005602166.tif 000030
【図３０】
0005602166.tif 000031
【図３１Ａ】
0005602166.tif 000032
【図３１Ｂ】
0005602166.tif 000033
【図３２】
0005602166.tif 000034
【図３３】
0005602166.tif 000035