プロセスコントロールデータにアクセスするための方法および装置
【課題】プロセスコントロールデータにアクセスするための方法、装置および製品を提供する。
【解決手段】プロセスコントロールデータにアクセスするための方法、装置および製品は、クライアントオブジェクトをロードするステップと、データアクセスリクエストを前記クライアントオブジェクトから、サーバーと通信するように構成されているリアルオブジェクトに通信するステップとを伴う。前記リアルオブジェクトは次いで前記データアクセスリクエストに基づいて問い合わせを前記サーバーに通信し、前記問い合わせに応答して前記サーバーからプロセスコントロールデータを取得する。前記プロセスコントロールデータは次いで、サーバースキーマと関連した第1のデータレイアウトからクライアントスキーマと関連した第2のデータレイアウトにマッピングされる。前記マッピング済みプロセスコントロールデータは次いでアプリケーションに通信される。
【解決手段】プロセスコントロールデータにアクセスするための方法、装置および製品は、クライアントオブジェクトをロードするステップと、データアクセスリクエストを前記クライアントオブジェクトから、サーバーと通信するように構成されているリアルオブジェクトに通信するステップとを伴う。前記リアルオブジェクトは次いで前記データアクセスリクエストに基づいて問い合わせを前記サーバーに通信し、前記問い合わせに応答して前記サーバーからプロセスコントロールデータを取得する。前記プロセスコントロールデータは次いで、サーバースキーマと関連した第1のデータレイアウトからクライアントスキーマと関連した第2のデータレイアウトにマッピングされる。前記マッピング済みプロセスコントロールデータは次いでアプリケーションに通信される。
【発明の詳細な説明】
【技術分野】
【0001】
(関連出願)
本出願は、2004年5月4日に出願され、かつ本出願が全体を参照してここに組み込んでいる、「プロセス制御システムを表現し、監視し、対話するためのグラフィックユーザインタフェース(Graphical User Interface for Representing,Monitoring,and Interacting with Process Control Systems)」と題された米国仮特許出願第60,567,980号の利点の一般的な分野の出願であり、また優先権のためにこれを特許請求する。本出願はまた、2003年7月21日に出願され、かつ2004年8月5日に米国公開第2004/0153804号として公開された、「グラフィックディスプレイ要素、プロセスモジュールおよび制御モジュールのプロセスプラントにおける統合(Integration of Graphic Display Elements,Process Modules and Control Modules in Process Plants)」と題された米国特許出願第10/625,481号に関連しており、これはまた2002年10月22日に出願され、かつ2004年4月22日に米国公開第2004/0075689号として公開された、「プロセスプラントにおけるスマートプロセスモジュールおよびオブジェクト(Smart Process Modules and Objects in Process Plants)」と題された米国特許出願第10/278,469号の一部継続出願であり、これらの開示全体は全体を参照してここに組み込まれている。本出願はまた、2003年2月18日に出願され、かつ2004年10月7日に米国公開第2004/0199925号として公開された、「プロセスプラント構成システムにおけるモジュールクラスオブジェクト(Module Class Objects in a Process Plant Configuration System)」と題された米国特許出願第10/368,151号に関連しており、この開示全体は全体を参照してここに組み込まれている。本出願はまた以下の特許出願に関連しており、これらは本出願と同日に国際(PCT)出願として出願されており、また本出願はこれらを、全体を参照してここに組み込んでいる:「プロセス環境における関連グラフィックディスプレイ(Associated Graphic Displays in a Process Environment)」(弁理士整理番号 No.06005/4111);「プロセス制御システムのためのユーザにより構成可能なアラームおよびアラームトレンド分析(User Configurable Alarms and Alarm Trending for Process
Control Systems)」(弁理士整理番号 No.06005/41112);「プロセスプラントにおけるプロセスモジュール及びエキスパートシステムの統合(Integration of Process Modules and Expert Systems in Process Plants)」(弁理士整理番号 No.06005/41113);「統合された環境におけるカスタマイズされたプロセスグラフィックディスプレイ層を有するプロセスプラントユーザインタフェースシステム(A Process Plant User Interface System Having Customized Process Graphic Display Layers in an Integrated Environment)」(弁理士整理番号 No.06005/41114);「プロセス環境におけるスクリプト化されたグラフィック(Scripted Graphics in a Process Environment)」(弁理士整理番号 No.06005/41115);「プロセス構成および制御環境へのグラフィック統合(Graphics Integration into a Process Configuration and Control Environment)」(弁理士整理番号 No.06005/41116);「プロセス環境における複数の視覚化のあるグラフィック要素(Graphic Element with Multiple Visualizations in a Process Environment)」(弁理士整理番号 No.06005/41117);「プロセスプラントにおいてグラフィックディスプレイ要素およびプロセスモジュールを構成するためのシステム(System for Configuring Graphic Display Elements and Process Modules in Process Plants)」(弁理士整理番号 No.06005/41118);「統合プロセス制御システムイシステムインタフェースのためのグラフィックディスプレイ構成フレームワーク(Graphic Display Configuration Framework for Unified Process Control System Interface)」(弁理士整理番号 No.06005/41124);「プロセスプラントユーザインタフェースにおけるマークアップ言語をベースにした動的プロセスグラフィックス(Markup Language−Based,Dynamic Process Graphics in a Process Plant User Interface)」(弁理士整理番号 No.06005/41127);「プロセス制御データを修正するための方法および装置(Methods and Apparatus for Modifying Process Control Data)」(弁理士整理番号 Nos.06005/591622および20040/59−11622);「プロセス制御システムのための統合グラフィックユーザインタフェース(Integrated Graphical Runtime Interface for Process Control Systems)」(弁理士整理番号 Nos.06005/591628および20040/59−11628);および「プロセス制御システムのためのサービス指向型アーキテクチャ(Service−Hyphen Oriented Architecture for
Process Control Systems)」(弁理士整理番号 Nos.06005/591629および20040/59−11629)。
【0002】
本開示は概してプロセッサコントロールシステムに、より具体的には、プロセスコントロールデータにアクセスするためのプロセスコントロール装置および方法に関する。
【背景技術】
【0003】
化学薬品、石油および他のプロセスで使用されるようなプロセスコントロールシステムは一般的に、アナログ、デジタルあるいは結合アナログ/デジタルバスを介して少なくとも1つのホストつまりオペレータワークステーションおよび1つ以上のフィールドデバイスに通信可能に接続された1つ以上の中央プロセスコントローラを含んでいる。フィールドデバイスとは、例えばバルブ、バルブポジショナー、スイッチおよび送信機(例えば、温度、圧力および流量センサー)であり、バルブの開閉およびプロセスパラメータの測定などのプロセス内の機能を実行する。プロセスコントローラは、フィールドデバイスによってなされたプロセス測定および/またはフィールドデバイスに関する情報を示す信号を受信し、この情報を使用してコントロールルーチンを実施し、そして、プロセスの動作をコントロールするためにバスや通信回線でフィールドデバイスに送られるコントロール信号を生成する。フィールドデバイスおよびコントローラからの情報は、プロセスの現在の状態を閲覧したり、プロセスの動作を修正したりするなどのプロセスに対してオペレータが所望の機能を実行できるように、オペレータワークステーションによって実行される1つ以上のアプリケーションに対して使用可能とすることができる。
【発明の概要】
【発明が解決しようとする課題】
【0004】
設計段階およびシステム動作時に、システムエンジニアはしばしば、プロセスコントロールデータを閲覧、監視、追加、更新、修正などをするためにプロセスコントロールデータにアクセスしなければならない。例えば、プロセスコントロールシステムは通常、システムエンジニアや、オペレータやユーザなどが、特定のプロセス(例えば、特定の化学薬品生産プロセス)に対してプロセスコントロールシステム内の各フィールドデバイスが機能する様子を定義できる構成アプリケーションを使用して構成される。フィールドデバイスが特定のプロセスに追加される場合や、プロセスが変更される度に、エンジニアは新たなコントロールプログラムや新たな構成データを生成したり、既存のコントロールプログラムを更新または修正したりすることがある。各プロセスは多数のフィールドデバイス、コントローラおよび/またはコントロールデバイスを使用することがあるため、コントロールプログラムは多量のプロセスコントロールデータを含んでいることがある。ユーザが、動作中にプロセスを監視できたり、かつ/またはコントロールプログラムを閲覧、作成および/または更新できたりするようなエディタやプロセスコントロールデータビューアーを提供する既知のプロセスコントロールシステムもある。既知のプロセスコントロールデータエディタおよびビューアーは通常、プロセスコントロールソフトウェア開発者によって提供された機能にユーザを制約する。例えば、プロセスコントロールソフトウェア開発者は、所望のタイプのユーザインタフェースコントロールおよびデータアクセス機能性を判断するために、その顧客を調査することがある。プロセスコントロールソフトウェアがリリースされる時点で顧客に使用可能なユーザインタフェースおよびデータアクセス機能は、これらの機能を内蔵するという、顧客による一般的な要求を受ける。
【0005】
顧客ごとにプロセスコントロールソフトウェアをカスタマイズすることはしばしば、比較的高価かつ複雑なプロジェクトである。具体的には、顧客が特定またはカスタムユーザインタフェースやデータアクセス機能を要する場合、顧客は、オリジナルのプロセスコントロールソフトウェアソースコードを理解および修正する必要がある。この場合、プロセスコントロールソフトウェア販売者は、そのソフトウェアのカスタマイズを望む各顧客に多数のリソース(例えば、ソフトウェア開発者、システムエンジニア、ソースコードなど)を提供しなければならない。加えて、ソフトウェア販売者は顧客に、ソースコードを顧客に配信する前に、ソースコードライセンスや開発ライセンスを購入させる必要がある場合がある。リソースおよび/またはライセンスはしばしば、ソフトウェア販売者および/または顧客にとってかなり高価である。また、特定のソースコードをリリースすることによって、そのソースコードが企業秘密、機密あるいは同業他社にとって好都合なコード化技術を含んでいる場合には、販売者はリスクを被ることがある。
【課題を解決するための手段】
【0006】
プロセスコントロールシステムデータにアクセスするための例示的方法およびシステムがここに開示されている。一例によると、プロセスコントロールデータアクセス方法は、クライアントオブジェクトをロードするステップと、データアクセスリクエストを前記クライアントオブジェクトから、サーバーと通信するように構成されているリアルオブジェクトに通信するステップとを伴う。そして前記リアルオブジェクトは前記データアクセスリクエストに基づいて前記サーバーに問い合わせを通信して、前記問い合わせに応答して前記サーバーからプロセスコントロールデータを取得する。そして前記プロセスコントロールデータは、サーバースキーマと関連した第1のデータレイアウトから、クライアントスキーマと関連した第2のデータレイアウトにマッピングされる。前記マッピング済みプロセスコントロールデータは次いで、アプリケーションに通信される。
【0007】
別の例によると、別のプロセスコントロールデータアクセス方法は、ユーザインタフェースリクエストに応答して第1および第2のクライアントオブジェクトをロードするステップを伴う。前記第1および第2のクライアントオブジェクトは、クライアントスキーマに基づいて組織化されたプロセスコントロールデータへのアクセスと関連している。次いで、前記第1および第2のクライアントオブジェクトと関連したリアルオブジェクトがロードされる。前記第1および第2のリアルオブジェクトは、サーバースキーマに基づいて組織化されたプロセスコントロールデータを取得するように構成されている。そして前記プロセスコントロールデータは、前記サーバースキーマ組織から前記クライアントスキーマ組織にマッピングされて、前記第1および第2のクライアントオブジェクトに通信される。そして前記プロセスコントロールデータは、前記第1のクライアントオブジェクトと関連した第1のユーザインタフェースと、前記第2のクライアントオブジェクトと関連した第2のユーザインタフェースとによって取得される。
【0008】
別の例によると、プロセスコントロールデータアクセスシステムは、事前生成パーシャル(部分)クラスおよびユーザ生成パーシャルクラスを含んでいる。前記事前生成パーシャルクラスは、プロセスコントロールデータへのアクセスと関連した事前生成クラス要素を含んでいる。前記ユーザ生成パーシャルクラスは前記事前生成パーシャルクラスと関連しており、また、前記事前生成クラス要素を介してプロセスコントロールデータにアクセス可能なユーザ定義のクラス要素を含んでいる。前記システムはまた、前記事前生成パーシャルクラスおよび前記ユーザ生成パーシャルクラスに基づいてクライアントオブジェクトのインスタンスを作成するように構成されたユーザインタフェースを含んでいる。前記ユーザインタフェースはまた、前記事前生成およびユーザ定義クラス要素に基づいてプロセスコントロールデータにアクセスするように構成されている。前記システムはまた、オブジェクトハンドルと、前記クライアントオブジェクトと関連したリアルオブジェクトとをロードし、前記オブジェクトハンドルおよび前記リアルオブジェクトを介して前記クライアントオブジェクトとサーバー間でプロセスコントロールデータを通信するように構成されたクライアントモデルを含んでいる。
【図面の簡単な説明】
【0009】
【図1】プロセスコントロールシステムマシーンに通信可能に接続されたクライアントマシーンを含む例示的クライアント/サーバーアーキテクチャを示すブロック図である。
【図2】図1のクライアントモデルおよびユーザインタフェースの詳細な機能ブロック図である。
【図3】継承によってユーザ生成パーシャルクラスと事前生成パーシャルクラス間でコードを共有するために使用可能な例示的コード構成を示している。
【図4】継承によってユーザ生成パーシャルクラスと事前生成パーシャルクラス間でコードを共有するために使用可能な例示的コード構成を示している。
【図5】集約によってユーザ生成パーシャルクラスと事前生成パーシャルクラス間でコードを共有するために使用可能な別の例示的コード構成を示している。
【図6】事前生成パーシャルクラスと、2つのクライアントスキーマを有するクライアントアプリケーションのリアルオブジェクトとの関係を示している。
【図7】ランタイム段階で図1および2のユーザインタフェースとクライアントモデル間で形成されるデータ経路を示している。
【図8】ランタイム段階で図1および2のユーザインタフェースとクライアントモデル間で形成されるデータ経路を示している。
【図9】図1および2のユーザインタフェースとクライアントオブジェクトとのデータ結合を示すブロック図である。
【図10】例示的サーバースキーマを定義する例示的サーバースキーマXMLソースコードを示している。
【図11】クライアントモデルによって提出された問い合わせに応答して、プロセスコントロールシステムデータベースサーバーによってクライアントモデルに返送された例示的XMLソースコードである。
【図12】プロセスコントロールデータをサーバースキーマからクライアントスキーマにマッピングするために使用可能な例示的クライアントスキーマXMLソースコードを示している。
【図13】オブジェクトと、これに含まれたロールとを表す例示的ユーザインタフェースを示している。
【図14】図13の例示的ユーザインタフェースを生成するための、クライアントスキーマとサーバースキーマ間のマッピング構成を示す詳細なブロック図である。
【図15】図14のサーバースキーマ階層からクライアントスキーマ階層へのマッピングを生成するために使用可能な例示的XMLソースコードを示している。
【図16】1つの機能ブロックおよび2つの属性を含む複合機能ブロック‘PT_COMP’を表す例示的ユーザインタフェースを示している。
【図17】図16の例示的ユーザインタフェースを生成するために単一のクライアントロールを複数のサーバーロールにマッピングする、サーバースキーマ階層とクライアントスキーマ階層間のマッピング構成を示す詳細なブロック図である。
【図18】図17のサーバースキーマ階層からクライアントスキーマ階層へのマッピングを生成するために使用可能な例示的XMLソースコードを示している。
【図19】特定のプラントエリア内の複数の異なるコントロールデバイスを表す例示的ユーザインタフェースを示している。
【図20】図19の例示的ユーザインタフェースを生成するために複数のクライアントロールを単一のサーバーロールにマッピングする、サーバースキーマ階層とクライアントスキーマ階層間のマッピング構成を示す詳細なブロック図である。
【図21】図20のサーバースキーマ階層からクライアントスキーマ階層へのロールマッピングを生成するために使用可能な例示的XMLソースコードを示している。
【図22】コントロールデバイスと関連したアイテムを選択的に表示するために使用可能な例示的ユーザインタフェースを示している。
【図23】図22の例示的ユーザインタフェースを生成するためにクライアントオブジェクトを1サブセットのサーバーオブジェクトにマッピングする、サーバースキーマ階層とクライアントスキーマ階層間のマッピング構成を示す詳細なブロック図である。
【図24】図23のサーバースキーマ階層からクライアントスキーマ階層へのオブジェクトマッピングを生成するために使用可能な例示的XMLソースコードを示している。
【図25】追加アイテムがそのコントロールデバイスのサーバースキーマの一部でなくても追加アイテムをコントロールデバイスビューに挿入するために使用可能な例示的ユーザインタフェースを示している。
【図26】クライアントオブジェクトをクライアントスキーマ階層に挿入する、サーバースキーマ階層とクライアントスキーマ階層間のマッピング構成を示す詳細なブロック図である。
【図27】クライアントオブジェクトを図26のクライアントスキーマ階層に挿入するための例示的XMLソースコードを示している。
【図28】リアルタイムプロセスコントロールデータがコマンドを介して取得可能なアイテムを表示するために使用可能な例示的ユーザインタフェースを示している。
【図29】クライアントロールをコマンドとして実施可能なマッピング構成を示す詳細なブロック図である。
【図30】図29のクライアントスキーマ階層においてクライアントロールをコマンドとして実施するために使用可能な例示的XMLソースコードを示している。
【図31A】ランタイム段階でクライアントオブジェクトを介するリアルオブジェクトへのクライアントアプリケーションアクセスを提供するために使用可能な例示的方法のフロー図を示している。
【図31B】ランタイム段階でクライアントオブジェクトを介するリアルオブジェクトへのクライアントアプリケーションアクセスを提供するために使用可能な例示的方法のフロー図を示している。
【図32】クライアントオブジェクトにおいて修正済みプロセスコントロールデータを更新するために使用可能な例示的方法である。
【図33】ここに説明された例示的装置、方法および製品を実施するために使用可能な例示的プロセッサシステムのブロック図である。
【発明を実施するための形態】
【0010】
以下の開示は、とりわけハードウェアで実行されるコンポーネント、ソフトウェアおよび/またはファームウェアを含むシステムを例証するが、このようなシステムは例示に過ぎず、制限的であるとみなされるべきではない点に注目すべきである。例えば、これらのハードウェア、ソフトウェアおよびファームウェアコンポーネントのいずれかまたは全部は、ハードウェアのみ、ソフトウェアのみ、あるいはハードウェアおよびソフトウェアの組み合わせで具現化可能であることが想定されている。従って、以下の開示は例示的システムについて説明しているが、当業者は、提供されている実施例がこのようなシステムを実施するための唯一の方法ではないことを容易に理解するであろう。
【0011】
プロセスコントロールデータにアクセスし、かつこれと相互作用するための所定の特徴および機能にエンドユーザを制限する機知のシステムとは反対に、ここに説明された例示的装置、方法および製品は、クライアントアプリケーションがプロセスコントロールデータにアクセスし、これを表し、かつこれを表示する方法をエンドユーザがカスタマイズできるようにするカスタマイズ可能なデータアクセスツールを使用して、プロセスコントロールシステムサーバーにおけるプロセスコントロールデータにアクセスするために使用可能である。プロセスコントロールデータは通常、コントロールシステム、プロセス、材料フローおよび組成、コントロールシステム機器、フィールドデバイス、およびシステム全体を操作、維持および診断するために使用される動作ディスプレイに関連するデータや情報を含んでいる。プロセスコントロールシステムサーバーは通常プロセスプラントに配置され、プロセスコントロールデータを記憶するために使用される。プロセスコントロールシステムを自動化、管理および構成するために、企業は通常、プロセスコントロールシステムサーバー上で実行し、かつユーザ定義プロセスコントロールデータに基づいてプロセスコントロールシステムと関連した各動作を管理するプロセスコントロールシステムソフトウェア(つまり、プロセスコントロールシステムアプリケーション)を使用する。ユーザ(例えば、システムエンジニア)は、コマンド、リクエストおよびプロセスコントロールデータをプロセスコントロールシステムアプリケーションと送受信するクライアントアプリケーションを使用してプロセスコントロールデータと相互作用する(例えば、管理する、閲覧する、修正する、構成するなど)場合がある。クライアントアプリケーションは通常、プロセスコントロールシステムサーバーも接続されているネットワークに接続された任意のワークステーション(つまり、任意のコンピュータ端末)にインストールされ、またここで実行することが可能である。
【0012】
エンドユーザ、またはプロセスコンピュータソフトウェアをエンドユーザに提供するソフトウェア販売者のいずれによって開発されても、従来のクライアントアプリケーションはしばしば、プロセスコンピュータシステムアプリケーションと同時またはこれと関連して開発される。従来のクライアントアプリケーションは通常、ユーザがプロセスコンピュータデータへのアクセス、この表示および閲覧を制限される固定セットのデータアクセスおよびデータ取扱い機能を提供する。データアクセスおよびデータ取扱い機能のカスタマイズは、プロセスコントロールシステムアプリケーションソフトウェアの修正、クライアントアプリケーションソフトウェアの修正、ソフトウェアのすべての再コンパイル、およびソフトウェアのすべての再テストを必要とするため、しばしば複雑かつ高価である。
【0013】
ここに説明された例示的方法、装置および製品は、クライアントアプリケーション(例えば、図1のクライアントアプリケーション108)がプロセスコントロールシステムサーバー(例えば、プロセスコントロールシステムデータベースサーバー112)とデータを送受信できるカスタマイズ可能なクライアント/サーバーデータインタフェースを提供するクライアントモデルデータインタフェース層(例えば、図1のクライアントモデル116)を提供する。クライアントモデル116によってクライアントアプリケーションは、プロセスコントロールシステムサーバー112から抜粋されて、異なるプロセスコントロールシステムサーバー間で携帯可能になる。クライアントモデル116は、クライアントアプリケーション108がプロセスコントロールシステムデータベースサーバー112と通信し、かつこれと相互作用し、またプロセスコントロールデータをこれと送受信できるようにするコアデータアクセスまたはデータ送受信機能性と、1ベースセットのデータアクセスおよびデータ取扱い機能とを含んでいる。クライアントモデル116は、複数のオブジェクトコードファイル、ヘッダーファイル、ソースコードファイルなどのソフトウェア開発キット(SDK)においてエンドユーザ(例えば、顧客、システムエンジニアなど)に提供されることがある。そしてエンドユーザは、プロセスコントロールシステムサーバーと相互作用してプロセスコントロールデータを閲覧、管理および構成するために、クライアントアプリケーションSDKに基づいてクライアントアプリケーションを開発してもよい。エンドユーザは常時データアクセス機能を修正または追加し、プロセスコントロールシステムアプリケーションソフトウェアを修正する必要なく、その度にクライアントアプリケーションソフトウェアのみを再コンパイルしてもよい。
【0014】
より詳細に後述されるように、クライアントモデル116はオブジェクト指向プログラミング言語と関連したパーシャル(部分)クラスを使用して実施される。パーシャルクラスは、クラスタイプを、2つ以上のファイルに存在可能な2つ以上のセクションに分割(split)、分離(divide)またはパーティショニングするために使用される。このように、プログラマーは機能性、使用頻度あるいは他の基準に基づいて長いコードをより小さなセクションやパーティションコードに分割(split)または分散(break up)してもよい。後述されるように、パーシャルクラスは、ユーザ生成コードから事前生成コードを分離するために使用可能である。対応するパーシャルクラスはオブジェクトコードとソースコードの組み合わせで存在することもある。事前生成コードは、プロセスコントロールシステムアプリケーションソフトウェアの初期開発時に開発され、かつ上記のように例えばクライアントアプリケーションSDKを介してエンドユーザに配信されるクライアントモデルオブジェクトコードを生成するようにコンパイルされるクライアントモデル116に対する事前生成パーシャルクラスを備えている。ユーザ生成コードは、事前生成パーシャルクラスに対応し、かつ後に開発された(例えば、アフターマーケット)クライアントアプリケーションのカスタム機能性を定義するために使用されるユーザ生成パーシャルクラスを含んでいる。
【0015】
エンドユーザは、クライアントモデルオブジェクトコードに提供された機能のみを使用することによってクライアントアプリケーションソフトウェアを開発する場合があり、またはエンドユーザは後に、追加のユーザ定義データアクセス機能を定義して、エンドユーザが所望するプロセスコントロールデータにアクセスし、これを表すかつ/またはこれを表示するためにソースコードを開発することもある。ユーザ定義データアクセス機能は、クライアントモデルオブジェクトコードの対応する事前生成パーシャルクラスで定義された任意のリソース、要素または機能を使用してもよいユーザ生成パーシャルクラスで開発される。コンパイル中、コンパイラはソフトウェアプロジェクトの各ファイル(例えば、各オブジェクトファイルおよびソースファイル)をスキャンし、対応するパーシャルクラスを架橋して、そのクラスの各要素、機能または態様を定義する完成(コンプリート)クラスを形成する。実行中、クライアントアプリケーション108は結合された対応するパーシャルクラスを完成クラスとして認識することによって、ユーザ定義データアクセス機能が元々クライアントモデルオブジェクトコードの一部であるように、ユーザ定義データアクセス機能をクライアントモデル116と共働させることができる。
【0016】
クライアントモデル116によってユーザはまた、プロセスコントロールデータレイアウトや、プロセスコントロールデータがプロセスコントロールシステムデータベース(例えば、図1のプロセスコントロールシステムデータベース110)から検索される場合にこれが呈示される様子を定義することができる。プロセスコントロールシステムデータベース110は、テーブル、コラム、レコード、エントリ、フィールドなどを使用してプロセスコントロールデータを組織化する。プロセスコントロールシステムデータベースサーバー112がプロセスコントロールデータをプロセスコントロールシステムデータベースから検索する場合、サーバーはサーバースキーマに従ってプロセスコントロールデータを組織化する。しかしながら、クライアントアプリケーションはしばしばプロセスコントロールデータが組織化され、呈示され、あるいは別個にレイアウトされることを要するため、クライアントアプリケーションはユーザに定義されたようにプロセスコントロールデータを表示することができる。クライアントアプリケーションを介するデータへのアクセスおよびこの表示を容易にするために、エンドユーザは、そのクライアントアプリケーションの設計段階でクライアントアプリケーションごとにクライアントスキーマを定義してもよい。動作時に、クライアントモデル116はサーバースキーマ組織や配列においてプロセスコントロールシステムデータベースサーバー110からプロセスコントロールデータを取得し、また図13乃至30と関連して後述されるようなユーザ定義クライアントスキーマに従って、プロセスコントロールデータをサーバースキーマ組織からクライアントスキーマ組織または配列に再配列することがある。
【0017】
次に図1を詳細に参照すると、クライアント/サーバーアーキテクチャ100はクライアントマシーン102とプロセスコントロールシステムマシーン104とを含む。クライアントマシーン102は概して、プロセスコントロールシステムと関連したプロセスコントロールデータを閲覧、修正および管理するために使用される。クライアントマシーン102は、コンピュータ、ワークステーション端末、ポータブルコンピュータ、ラップトップコンピュータ、携帯情報端末(PDA)あるいは任意の適切なプロセッサシステムを使用して実施可能である。プロセスコントロールシステムマシーン104はプロセスコントロールデータを記憶し、プロセスコントロールデータに基づいてプロセスコントロールシステムを自動化および管理する。プロセスコントロールシステムマシーン104は、プロセスコントロールシステムにおけるコントロールデバイスに通信可能に接続されたワークステーション、メインフレーム、サーバーあるいは任意の適切なプロセッサシステム(例えば、図33の例示的プロセッサシステム3310)であってもよい。プロセスコントロールシステムマシーン104はプロセスコントロールデータをクライアントマシーン102(あるいはプロセスコントロールシステムマシーン104と通信するように構成された他のクライアントマシーン)に提供するように構成されており、また、クライアントマシーン102および/または対応するプロセスコントロールシステムにおけるコントロールデバイスによってリクエストされたようにプロセスコントロールデータを修正、追加または更新するように構成されている。
【0018】
クライアントマシーン102は、通信ネットワーク106を介してプロセスコントロールシステムマシーン104に通信可能に接続されてもよい。通信ネットワーク106は例えば、ローカルエリアネットワーク(LAN)やワイドエリアネットワーク(WAN)であってもよく、また、適切な通信技術や、例えばイーサネット(登録商標)、IEEE802.11、Bluetooth(登録商標)、任意のデジタルまたはアナログモバイル通信システム(つまり、セルラー通信システム)、デジタル加入者回線(DSL)、任意のブロードバンド通信システムなどの技術の組み合わせを使用して実施されてもよい。
【0019】
クライアントマシーン102は、ユーザがプロセスコントロールデータを検索、閲覧、管理および記憶することができるようにするクライアントアプリケーション108を含んでいる。ユーザは、クライアントアプリケーション108を実施し、かつクライアントアプリケーション108を後に使用して格納プロセスコントロールデータおよび/またはリアルタイムコントロールデータにアクセスするクライアントマシーン102に、マシーンアクセス可能な命令をインストールしてもよい。格納プロセスコントロールデータは、コントロールデバイス構成パラメータ、定期的に測定されたプロセスコントロールデータ値、履歴測定値、あるいは後に検索するために記憶されることがある他の値と関連した情報を含むことがある。一般的に、リアルタイムプロセスコントロールデータは、記憶されていないが、リクエスト時に生成または引き出されるプロセスコントロールデータを含んでいる。例えば、リアルタイムプロセスコントロールデータは、クライアントアプリケーション108からのデータリクエストに応答して測定、取得、生成または算出されるプロセスコントロールデータ値を含むことがある。
【0020】
格納プロセスコントロールデータはプロセスコントロールシステムマシーン104から取得されることがある。プロセスコントロールシステムマシーン104は、プロセスコントロールデータ(例えば、格納プロセスコントロールデータ)を記憶するように構成されたプロセスコントロールシステムデータベース110と、プロセスコントロールシステムデータベース110に通信可能に接続されたプロセスコントロールシステムデータベースサーバー112とを含んでいる。プロセスコントロールシステムデータベースサーバー112は、プロセスコントロールシステムデータベース110とクライアントアプリケーション108間で格納プロセスコントロールデータを通信するように構成されている。
【0021】
クライアントマシーン102は、リアルタイムプロセスコントロールデータを提供するためのランタイムサーバー114を含んでいる。ランタイムサーバー114はネットワーク106に通信可能に接続され、かつデータサーバー112からおよび/またはプロセスコントロールシステムにおけるコントロールデバイスから間接的にプロセスコントロールデータを取得するように構成されてもよい。例えば、ランタイムサーバー114は、プロセスコントロールデータをデータベースサーバー112からリクエストし、かつ、例えば数学操作や他の操作を検索されたプロセスコントロールデータに実行することによって、1つ以上の格納プロセスコントロールデータに基づいてリアルタイムプロセスコントロールデータを引き出す場合がある。クライアントアプリケーション108がコントロールデバイスと関連したリアルタイム測定プロセスコントロールデータ値(例えば、温度値、圧力値、流量値など)をリクエストする場合、ランタイムサーバー114は、リアルタイム測定プロセスコントロールデータ値を検索するために、プロセスコントロールシステムマシーン104および/またはネットワーク106を介してコントロールデバイスと通信してもよい。
【0022】
クライアントアプリケーション108はクライアントモデル116とユーザインタフェース118とを含んでいる。クライアントモデル116はプロセスコントロールシステムマシーン104およびランタイムサーバー110に通信可能に接続され、これによってクライアントアプリケーション108は、プロセスコントロールシステムマシーン104およびランタイムサーバー110と通信して、格納プロセスコントロールデータおよびリアルタイムプロセスコントロールデータにアクセスすることができる。具体的には、クライアントモデル116は、格納およびリアルタイムプロセスコントロールデータにアクセスし、かつこれを送受信するためにクライアントアプリケーション108によって使用可能なデータベースアクセス機能を提供する。データアクセス機能は1ベースセットのデータベースアクセス機能を含んでおり、またユーザ定義データベースアクセス機能を含むこともある。図2と関連してより詳細に後述されるように、この1ベースセットのデータアクセス機能は事前生成パーシャルクラスを介して提供され、ユーザ定義データベースアクセス機能は、事前生成パーシャルクラスに対応するユーザ生成パーシャルクラスを介して提供される。
【0023】
ユーザインタフェース118は、プロセスコントロールデータにアクセス、閲覧、管理、修正、更新などをするために使用可能な複数のグラフィックベースおよび/またはテキストベースのユーザインタフェーススクリーンを生成するように構成されている。ユーザは設計段階および/またはランタイム時に、プロセスコントロールデータを表示するためにユーザインタフェース118によって使用されるディスプレイレイアウトやディスプレイ配列を指定してもよい。例証として、ユーザインタフェース118は、ツリービューインタフェース120およびコンテンツビューインタフェース122を含むものとして示されている。ツリービューインタフェース120は、展開および折りたたみ部分を有する階層ツリー構造においてプロセスコントロールデータを表示して、選択されたコントロールデバイスの詳細を閲覧するために使用可能である。コンテンツビューインタフェース122は、プロセスコントロールシステム図にオーバーレイされたプロセスコントロールデータを表示するために使用可能である。例えば、コンテンツビューインタフェース122は、プロセスコントロールシステム図において相互に通信可能に接続されている複数のコントロールデバイスを表示し、また対応するコントロールデバイスに隣接するか、この上にあるプロセスコントロールデータを表示してもよい。このように、ユーザは、プロセスコントロールシステム全体に関するプロセスコントロールデータを閲覧可能である。
【0024】
クライアントモデル116はスキーマ、問い合わせおよびコマンドに基づいて、プロセスコントロールデータをユーザインタフェース118と、ランタイムサーバー114と、プロセスコントロールシステムデータベースサーバー114との間で通信する。スキーマは、プロセスコントロールデータが呈示される様子に関する特定のデータ組織、配列またはデータレイアウトを定義する。例えば、クライアントスキーマは、ユーザインタフェース118に対してプロセスコントロールデータを呈示するために使用される特定のデータ配列やデータレイアウトを定義する。ユーザインタフェース118は複数のクライアントスキーマと関連している場合があり、これらの各々は、異なるプロセスコントロールデータを配列、組織化または呈示するために使用される。例えば、あるクライアントスキーマはポンプコントロールデバイスデータを呈示するために使用可能であるのに対して、別のクライアントスキーマは複数のコントロールデバイスに共通のプロパティ値を呈示するために使用可能であり、さらに別のクライアントスキーマは、特定のプラントエリアにおけるコントロールデバイスと関連したプロセスコントロールデータを呈示するために使用可能である。
【0025】
サーバースキームは、プロセスコントロールシステムデータベースサーバー112およびランタイムサーバー114に対してプロセスコントロールデータを呈示または配列するために使用される特定のデータ配列やデータレイアウトを定義する。プロセスコントロールシステムデータベースサーバー112のサーバースキーマはランタイムサーバー114のサーバースキーマとは異なってもよい。しかしながら、一般的に、サーバースキーマは通常、クライアントスキーマとは異なってデータを呈示、組織化または配列するために使用される。例えば、サーバースキーマはプロセスコントロールシステムと関連したプロセスコントロールデータの全てを呈示するために使用可能であるのに対して、クライアントスキーマはそのプロセスコントロールデータの指定の部分やセグメントのみを呈示するために使用可能である。
【0026】
クライアントモデル116は、図13乃至30と関連して詳細に後述されるように、サーバースキーマとクライアントスキーマ間でプロセスコントロールデータを変換またはマッピングするように構成されている。例えば、ユーザインタフェース118からのデータリクエスト問い合わせに応答して、クライアントモデル116はプロセスコントロールデータをサーバースキーマからクライアントスキーマに変換またはマッピングして、ユーザインタフェース118によって提供されたクライアントスキーマに基づいてプロセスコントロールデータを配列する。クライアントモデル116はまた、ユーザインタフェース118からの更新問い合わせに応答して修正済みまたは更新済みプロセスコントロールデータをクライアントスキーマからサーバースキーマに変換またはマッピングしてもよい。
【0027】
ユーザインタフェース118および/またはクライアントモデル116によって生成された問い合わせはデータリクエスト問い合わせおよび更新問い合わせを含むことがある。データリクエスト問い合わせは特定のプロセスコントロールデータを検索するために使用され、更新問い合わせは、例えばプロセスコントロールシステムデータベース110におけるプロセスコントロールデータを修正または更新するために使用される。ユーザインタフェース118からの問い合わせの受信に応答して、クライアントモデル110は、問い合わせが格納またはリアルタイムのプロセスコントロールデータと関連しているか否かを判断して、それに応じて問い合わせをプロセスコントロールシステムデータベースサーバー112またはランタイムサーバー114に通信する。問い合わせが格納およびリアルタイムプロセスコントロールデータの両方と関連した部分を含んでいる場合、クライアントモデル116はリアルタイムデータ問い合わせおよび格納データ問い合わせに問い合わせを解析または分割し、問い合わせをサーバー112および114にそれぞれ通信する。
【0028】
コマンドは、サーバー112および114にプロセスコントロールデータを検索、修正および/または作成させるマシーンアクセス可能な命令を含むことがある。例えば、問い合わせおよび更新問い合わせに基づいた、プロセスコントロールシステムデータベース110におけるプロセスコントロールデータへのアクセス(例えば、検索、修正または作成)と関連した命令を含むコマンドもある。加えて、ランタイムサーバー114にコントロールデバイスからプロセスコントロールデータを測定または取得する、格納プロセスコントロールデータに基づいてランタイムサーバー114にプロセスコントロールデータ値(例えば、平均値、フィルタリング値など)を引き出す等の命令を含むコマンドもある。
【0029】
図2は、図1のクライアントモデル116およびユーザインタフェース118の詳細な機能ブロック図である。具体的には、図2は、ユーザインタフェース118と、クライアントモデル116とサーバー112および114との間でプロセスコントロールデータを送受信するランタイム段階でパーシャルクラスが使用される様子を示している。ユーザインタフェース118は異なるプロセスコントロールデータに対処するために複数のクライアントスキーマ(例えば、図14、17、20、23、26および29の複数のクライアントスキーマ階層)を使用する。例証として、ユーザインタフェース118は、第1のクライアントスキーマオブジェクトモデル202aと、第2のクライアントスキーマオブジェクトモデル202bと、第3のクライアントスキーマオブジェクトモデル202cとを含むものとして示されており、これらの各々は第1、第2および第3のクライアントスキーマのそれぞれ1つと関連している。ユーザインタフェース118はまた、ユーザインタフェース(UI)ビュー(例えば、図1のツリービュー120およびコンテンツビュー122)にプロセスコントロールデータを表示し、かつプロセスコントロールデータの検索、表示および/または修正と関連したユーザ入力を取得するように構成されているユーザI/Oコントロール204を含んでいる。ユーザI/Oコントロール204は例えば、テキストボックス、ボタン、リスト、データフィールドなどを含んでいてもよく、また、例えばMicrosoft(登録商標)Avalonコントロールフレームワークを含む適切なコントロールフレームワークを使用して実施されてもよい。
【0030】
クライアントスキーマオブジェクトモデル202a乃至cの各々は、第1、第2および第3のクライアントスキーマのそれぞれ1つ関連しているプロセスコントロールデータへのアクセスおよびこの取扱いを可能にする1つ以上の事前生成パーシャルクラス206および1つ以上のユーザ生成パーシャルクラス208を含んでいる。具体的には、事前生成パーシャルクラス206は事前定義クラス要素を含んでいるのに対して、ユーザ生成パーシャルクラス108はユーザ定義クラス要素を含んでいる。クラス要素は当業界で既知のデータメンバー、アクセス機構、メソッドまたは機能、実施および/または他のクラス要素を含んでもよく、これらの各々はプライベート、被保護またはパブリックと指定されることがある。事前生成パーシャルクラス206のクラス要素は、図6と関連して詳細に後述されるように、リアルオブジェクト(例えば、後述されるリアルオブジェクト216)を介してプロセスコントロールシステムデータベースサーバー112(図1および2)と通信するために使用可能である。ユーザ生成パーシャルクラス208のクラス要素は、事前生成パーシャルクラス206のうちの対応するパーシャルクラスのクラス要素と関連したデータにアクセスするように構成可能であり、また事前生成パーシャルクラス206におけるクラス要素を介してプロセスコントロールシステムデータベースサーバー112と通信するように構成可能である。図2に示されるように、ユーザ生成パーシャルクラス108はユーザ定義機能210を含んでいる。パーシャルクラス206および208の対応するものによって形成された各完成クラスは異なるタイプのプロセスコントロールデータと関連していることがある。例えば、例示的クラスは特定のタイプのコントロールデバイスと関連したデータアクセスおよび取扱い機能を含む場合があるのに対して、別の例示的クラスは特定のプロセスプラントエリアや特定のプロセスコントロールサブシステムと関連したデータアクセスおよび取扱い機能を含む場合がある。さらに別の例示的クラスは、プロセスコントロールデータの数学的および/または統計的処理(例えば、平均化、フィルタリングなど)と関連した機能を含む場合がある。
【0031】
開発段階で、クライアントスキーマごとに、エンドユーザが、事前生成パーシャルクラス206の各々を作成するために1つ以上の事前生成パーシャルクラスを選択してもよい。また開発段階で、エンドユーザはユーザ定義機能210を開発し、またユーザ定義機能210と関連した1つ以上のユーザ生成パーシャルクラスを選択することによってクライアントスキーマオブジェクトモデル202a乃至cの各々のユーザ生成パーシャルクラス208を作成してもよい。
【0032】
第1のクライアントスキーマオブジェクトモデル202aに対して選択されたパーシャルクラス206および208は、第2のクライアントスキーマオブジェクトモデル202bに対して選択されたパーシャルクラス206および208と異なってもよい。例えば、第1のクライアントスキーマオブジェクトモデル202aに対するパーシャルクラス206および208は第1のプロセスプラントエリアのコントロールデバイスと関連したプロセスコントロールデータにアクセスするために使用可能であるのに対して、第2のクライアントオブジェクトモデル202bに対するパーシャルクラス206および208は、第2のプロセスプラントエリアのコントロールデバイスと関連したプロセスコントロールデータにアクセスするために使用可能である。
【0033】
実行段階で、パーシャルクラス206および208は、クライアントスキーマオブジェクトモデル202a乃至cの各々に対して複数のクライアントオブジェクト212を生成するために使用可能である。クライアントオブジェクト212はクライアントアプリケーション(例えば、図1のクライアントアプリケーション108)のクライアントスキーマのデータ配列やデータレイアウトに従うか、これに対応している。クライアントオブジェクト212の各々はパーシャルクラス206および208のうちの1つによって定義されたクラスタイプである。例えばクラスタイプポンプの2つのオブジェクトなど、同一クラスタイプのクライアントオブジェクト212のうちの2つ以上が生成されてもよく、各々はプロセスコントロールシステムにおける異なる物理的ポンプコントロールデバイスに対するものである。加えて、クライアントオブジェクト212のうちの2つ以上が、同一の物理的コントロールデバイスと関連したプロセスコントロールデータにアクセスするために生成可能である。クライアントオブジェクト212のうちの2つ以上による、同一の物理的コントロールデバイスのプロセスコントロールデータへのアクセスは、下記のようにリアルオブジェクト(例えば、リアルオブジェクト216)を介してクライアントモデル116において仲裁または取り扱われる。クライアントオブジェクト212は、図9と関連して詳細に後述されるように、リアルタイムおよび格納プロセスコントロールデータにユーザI/Oコントロール204をデータ結合させるために使用可能である。ユーザI/Oコントロール204をプロセスコントロールデータにデータ結合させることによって、クライアントオブジェクト212は、ユーザI/Oコントロールを介して提供されるユーザ入力に応答してデータリクエスト問い合わせおよび/またはデータ更新問い合わせを生成することができる。上記のように、問い合わせは、格納またはリアルタイムのプロセスコントロールデータを検索または修正するために使用される。クライアントオブジェクト212はまた、例えばプロセスコントロールシステムデータベース210における少なくとも一部のプロセスコントロールデータ値が変化したか修正されているかを示すデータ更新イベントに応答して、ユーザI/Oコントロール204を介して表示されるプロセスコントロールデータ値を更新することができる。
【0034】
クライアントモデル116は第1の複数のオブジェクトハンドル214aと、第2の複数のオブジェクトハンドル214bと、第3の複数のオブジェクトハンドル214cとを含んでいる。図2に示されるように、複数のオブジェクトハンドル214a乃至cの各々はクライアントスキーマオブジェクトモデル202a乃至cのそれぞれ1つと関連している。クライアントモデル116はまた複数のリアルオブジェクト216を含んでいる。リアルオブジェクト216は、図1のプロセスコントロールシステムデータベースサーバー112および/またはランタイムサーバー114と関連したサーバースキーマのデータ配列やデータレイアウトに従うか対応している。オブジェクトハンドル214a乃至cは、メモリにおいてリアルオブジェクト216のロケーションに対応するアドレス参照またはベース参照である。ランタイム時に、リアルオブジェクト216のうちの1つが作成されメモリヒープに記憶される場合、ハンドル214a乃至cのうちの1つにおける対応するハンドルもまた作成されて、メモリスタックに記憶される。クライアントオブジェクト212の各々はリアルオブジェクト216のうちの1つと関連しており、データアクセスリクエスト、問い合わせ、更新問い合わせおよび/またはプロセスコントロールデータをそのリアルオブジェクトにリアルオブジェクトのオブジェクトハンドル(例えば、オブジェクトハンドル214a乃至cのうちの1つ)を介して通信することによって、リアルオブジェクト216のうちの1つを介してプロセスコントロールデータにアクセスする。リアルオブジェクト216は、クライアントオブジェクト212から受信された問い合わせや更新問い合わせに応答して、問い合わせおよび/または更新問い合わせをプロセスコントロールシステムデータベースサーバー112に通信する。リアルオブジェクト216はプロセスコントロールシステムデータベースサーバー112から、サーバースキーマ(例えば、図14、17、20、23、26および29のサーバースキーマ階層のうちの1つ)に基づいて組織化または配列されたプロセスコントロールデータを取得する。そしてクライアントモデル116は、図13乃至29と関連して後述されるように、プロセスコントロールデータをサーバースキーマ組織からクライアントスキーマ組織にマッピング、再配列または変換する。
【0035】
クライアントオブジェクト212のうちの2つ以上がリアルオブジェクト216のうちの特定の1つに対応している場合もある。例えば、クライアントオブジェクト212のうちの2つ以上が、同一のプロセスコントロールデータにアクセスするために同一のクラスタイプから構築される場合、リアルオブジェクト216のうちの1つがクライアントオブジェクト212のうちの2つ以上に対して作成される。このように、リアルオブジェクト216のうちの1つは、同一のプロセスコントロールデータに対してなされるデータアクセスリクエストをクライアントオブジェクト212のうちの2つ以上によって仲裁可能である。
【0036】
図3および4は、継承によってユーザ生成および事前生成パーシャルクラス間でコードを共有するために使用可能な例示的コード構成を示している。図3は、「MODULE_GEN.CS」と称される事前生成ファイル302と、「MODULE_MANUAL.CS」と称される第1のユーザ生成ファイル304と、「MODULE_BASE.CS」と称される第2のユーザ生成ファイル306とを示している。事前生成ファイル302は、名前空間(ネームスペース)「DELTAV(登録商標).CONFIG.EXPLORER.HIERARCHY」308においてパーシャルクラスを定義し、これはタイプ「MODULE」310の事前生成パブリックパーシャルクラス(つまり、事前生成パブリックパーシャルクラス「MODULE」310)を含む。パブリックパーシャルクラス「MODULE」310は、図1および2のプロセスコントロールシステムデータベースサーバー112と通信するように構成されたクラス要素を含むことがある。パブリックパーシャルクラス「MODULE」310は図2の事前生成パーシャルクラス206の一部であってもよい。
【0037】
第1のユーザ生成ファイル304は名前空間「DELTAV(登録商標).CONFIG.EXPLORER」312と、名前空間「DELTAV(登録商標).CONFIG.EXPLORER.HIERARCHY」310におけるパーシャルクラス定義とを使用する。名前空間「DELTAV(登録商標).CONFIG.EXPLORER.HIERARCHY」310において、事前生成パブリックパーシャルクラス「MODULE」310はユーザ生成クラス「MODULE_BASE」314のクラス要素を継承している。このように、クラス「MODULE」310および「MODULE_BASE」314は相互のクラス要素を共有したり、これにアクセスしたりすることが可能である。例えば、クラス「MODULE_BASE」314に定義されているクラス要素は、クラス「MODULE」310に定義されているクラス要素を介してプロセスコントロールシステムデータベースサーバー112と通信可能である。クラス「MODULE_BASE」314は下記の第2のユーザ生成ファイル306に定義されており、また図2のユーザ生成パーシャルクラス208の一部であってもよい。
【0038】
第2のユーザ生成ファイル306は、クライアントアプリケーション(例えば、図1のクライアントアプリケーション108)を構成して、事前生成パーシャルクラス「MODULE」310とユーザ生成パーシャルクラス「MODULE_BASE」314間でソースコードを共有するために使用可能なソースコードを含んでいる。第2のユーザ生成ファイル306において、名前空間「DELTAV(登録商標).CONFIG.EXPLORER」312はユーザ生成パーシャルクラス「MODULE_BASE」314のアプリケーション固有のメソッドの実施を含んでいる。ユーザ生成「MODULE_BASE」314のアプリケーション固有のメソッドは、第1のユーザ生成ファイル304におけるユーザ生成パーシャルクラス「MODULE」310によって継承される。
【0039】
図4は、実行段階で2つの異なる名前空間の間で図3のソースコードを共有するために使用される例示的ランタイム構成を示している。図4は、名前空間「DELTAV(登録商標).CONFIG.EXPLORER」312のインスタンスと、名前空間「DELTAV(登録商標).CONFIG.EXPLORER.HIERARCHY」308のインスタンスと、名前空間「DELTAV(登録商標).CONFIG.EXPLORER.CONTENT」402のインスタンスとを示している。名前空間308または402のいずれかにロードまたはインスタンス化されたパーシャルクラスタイプ「MODULE」310のクライアントオブジェクトは、事前生成ファイル302またはユーザ生成ファイル306のいずれかに定義されたソースコードやクラス要素を使用可能である。
【0040】
名前空間「DELTAV(登録商標).CONFIG.EXPLORER」312のインスタンスは、ユーザ生成パーシャルクラス「MODULE_BASE」314に対して第2のユーザ生成ファイル306(図3)で定義されたクラス要素を含んでいる。名前空間「DELTAV(登録商標).CONFIG.EXPLORER.HIERARCHY」308のインスタンスは、クラスタイプ「MODULE」(例えば、パーシャルクラスタイプ「MODULE」310)の第1の「MODULE」クライアントオブジェクト404を含んでいる。名前空間「DELTAV(登録商標).CONFIG.EXPLORER.CONTENT」402のインスタンスは第2の「MODULE」クライアントオブジェクト406を含んでおり、これもまたクラスタイプ「MODULE」(例えば、パーシャルクラスタイプ「MODULE」310)である。クライアントオブジェクト404および406の各々はユーザ生成部分410(例えば、ユーザ生成クラス要素)と事前生成部分412(例えば、事前生成クラス要素)とを含んでいる。ユーザ生成部分410は第2のユーザ生成ファイル304のユーザ生成クラス「MODULE_BASE」310で定義されたクラス要素を含んでいる。事前生成部分412は、事前生成ファイル302のユーザ生成パーシャルタイプクラス「MODULE」310で定義されたクラス要素を含んでいる。
【0041】
図5は、集約によってユーザ生成パーシャルクラスおよび事前生成パーシャルクラス間でコードを共有するために使用可能な別の例示的コード構成を示している。事前生成パーシャルクラスコード502は、事前生成パーシャルクラス「MODULE」310を含有する名前空間「DELTAV(登録商標).CONFIG.EXPLORER.HIERARCHY」308を含んでいる。ユーザ生成パーシャルクラスコード504は、ユーザ生成クラス「EXPLORER_MODULE」506を含有する名前空間「DELTAV(登録商標).CONFIG.EXPLOERE.HIERARCHY」312を含んでいる。事前生成パーシャルクラス「MODULE」310とユーザ生成クラス「EXPLORER_MODULE」506間でソースコードやクラス要素を共有するために、ユーザ生成クラス「EXPLORER_MODULE」506は、事前生成パーシャルクラスコード502で定義された事前生成パーシャルクラス「MODULE」310のクラス要素の全てによって使用可能なタイプ「MODULE」508(例えば、パーシャルクラスタイプ「MODULE」310)のクライアントオブジェクトを定義する。
【0042】
図6は、2つのクライアントスキーマを有するクライアントアプリケーション(例えば、図1のクライアントアプリケーション108)の事前生成パーシャルクラスとリアルオブジェクトの関係を示している。第1のクライアントスキーマ602は第1の複数の事前生成パーシャルクラス604を使用し、第2のクライアントスキーマ606は第2の複数の事前生成パーシャルクラス608を使用する。事前生成パーシャルクラス604および608は図2の事前生成パーシャルクラス206と実質的に類似または同一である。クライアントアプリケーション108は2つのクライアントスキーマ602および606を使用して、異なるニーズや異なるプロセスコントロールデータに対処する。例えば、第1のクライアントスキーマ602は特定のプラントエリアでのモジュールと関連しており、第2のクライアントスキーマ606は特定のサブシステムのアラームと関連している。
【0043】
クライアントモデル116は第1のクライアントスキーマ602と関連した第1の複数のオブジェクトハンドル610と、第2のクライアントスキーマ606と関連した第2の複数のオブジェクトハンドル612とを含んでいる。オブジェクトハンドル610および612は図2のオブジェクトハンドル214a乃至cと実質的に類似または同一である。クライアントモデル116はクライアントスキーマ602および606の各々について個別グループまたはツリーのオブジェクトハンドルを構築または生成する。事前生成パーシャルクラス604および608の各々における事前生成パーシャルクラスの階層関係は対応するオブジェクトハンドル610および612の階層関係と同一である。
【0044】
クライアントモデル116はまた、図2のリアルオブジェクト216と実質的に類似または同一の複数のリアルオブジェクト614を含んでいる。クライアントアプリケーション108は、事前生成パーシャルクラス604および608と関連したクライアントオブジェクト(例えば、図2のクライアントオブジェクト212および図7の710a乃至d)を介してリアルオブジェクト614と通信する。具体的には、パーシャルクラス604および608と関連したクライアントオブジェクトはオブジェクトハンドル610および612を介してリアルオブジェクト614にアクセスする。
【0045】
クライアントアプリケーション108がデータアクセスリクエスト(例えば、問い合わせ)を第1のクライアントスキーマ602からクライアントモデル116に通信する場合、クライアントモデル116は、データアクセスリクエストが関連している特定のプロセスコントロールデータ(例えば、特定のプラントエリア)と関連したリアルオブジェクト(例えば、リアルオブジェクト614の一部)をロードする。クライアントアプリケーション108がデータアクセスリクエスト(例えば問い合わせ)を第2のクライアントスキーマ606から通信する場合、クライアントモデル116は、図6に示されるようにデータアクセスリクエストが関連している特定のサブシステムのアラーム(ALARM)と関連するリアルオブジェクト614の全アラーム属性またはプロパティをロードする。
【0046】
クライアントアプリケーション108は、リアルオブジェクト614の寿命や、リアルオブジェクト614がロードされる期間をコントロールする。例えば、クライアントアプリケーション108が、リアルオブジェクト614の一部がロードされたままであることを示す場合、これらのオブジェクトはアンロード不可能である。通常、リアルオブジェクト614などのオブジェクトは、クライアントアプリケーションがガーベジコレクション可能またはアンロード可能と指定されているリアルオブジェクトを定期的に検出するガーベジコレクションルーチンによってアンロードされる。例えば、クライアントアプリケーション118が,リアルオブジェクト614の一部がアンロードされるべきであると判断すると、これらのオブジェクトはガーベジコレクション可能と指定される。この場合、後続のガーベジコレクションスキャンは、ガーベジコレクション可能とフラグされるか、現在使用中とフラグされないリアルオブジェクト614のアンロードをもたらす。
【0047】
図7および8は、ランタイム段階で図1および2のユーザインタフェース108とクライアントモデル116間に形成されたデータ経路を示している。とりわけ、図7は、第1のユーザインタフェース(UI)ビュー702および第2のUIビュー704に対するクライアントオブジェクト212とリアルオブジェクト216間のデータ経路を示している。図7において、UIビュー702および704は共通クライアントスキーマを共有する。図8は、クライアントオブジェクト212とリアルオブジェクト216間のデータ経路を示しており、ここで第1のUIビュー702および第2のUIビュー704は各々独自のクライアントスキーマを有している。UIビュー702および704は図1のツリービュー120および/またはコンテンツビュー122と実質的に類似または同一であってもよい。
【0048】
図7および8に示されるように、第1および第2のUIビュー702および704はクライアントアプリケーションオブジェクト706に属しているか、これと関連している。UIビュー702および704の各々はリアルオブジェクト216のうちの1つ以上を介してプロセスコントロールデータにアクセスする。リアルオブジェクト216は、「ModuleLibrary」リアルロール(ROLE)708bをロードする親リアルオブジェクト「R」708aを有するものとして示されている。例えば「ModuleLibrary」リアルロール708bなどのロールは、そのロールと関連した複数のプロセスコントロールデータへのアクセスを明示または提供する。例えば、ロールは、特定のプラントエリアや特定のタイプのコントロールデバイスと関連したプロセスコントロールデータへのアクセスを提供することがある。「ModuleLibrary」リアルロール708bは、UIビュー702および704からのプロセスコントロールデータリクエストに応答して第1のリアルオブジェクト「R1」708cおよび第2のリアルオブジェクト「R2」708dをロードする。例えば、第1のリアルオブジェクト708cは第1のコントロールデバイスと関連することがあるのに対して、第2のリアルオブジェクト708dは第2のコントロールデバイスと関連することがある。
【0049】
リアルオブジェクト216を介してプロセスコントロールデータにアクセスするために、UIビュー702および704はクライアントオブジェクト212をロードしてリアルオブジェクト216と通信する。例えば、図7に示されるように、「ModuleLibrary」リアルロール708bと関連したプロセスコントロールデータにアクセスするために、第1のUIビュー702は親クライアントオブジェクト「O」710aをロードする。親クライアントオブジェクト「O」710aは、親クライアントオブジェクト710aがゼロ番目のマスク(MASK)「M」714aを介して親リアルオブジェクト「R」708aにアクセスするために使用する親オブジェクトハンドル「H」712aを参照する。例えばゼロ番目のマスク「M」714aなどのマスクは、プロセスコントロールデータをサーバースキーマのデータレイアウトまたは配列からクライアントスキーマのデータレイアウトまたは配列に変換またはマッピングするように構成される。例えば、親リアルオブジェクト708aは、複数のプロセスコントロールデータライブラリーへのアクセスを提供するライブラリーオブジェクトであってもよい。親クライアントオブジェクト710aが、親リアルオブジェクト708aと関連した1サブセットの複数のライブラリーオブジェクト(例えば、「ModuleLibrary」リアルロール708b)のみにアクセスするように構成されている場合、マスク714aはライブラリーアクセスリクエストを親クライアントオブジェクト710aから、親リアルオブジェクト708aにおける対応するライブラリーに変換またはマッピングする。例えば、マスクは、クライアントスキーマに対応し、かつリアルオブジェクトにおけるプロセスコントロールデータを指示または参照するレイアウトで配列された複数のポインターを含むことがある。
【0050】
データ経路は複数のアクティブおよび非アクティブデータ経路として示されている。実線は、アクティブであるか、特定のオブジェクト、ハンドルまたはマスクにアクセスするためにUIビュー702および704のうちの一方によって使用中であるデータ経路を表している。点線は、非アクティブであるか、UIビュー702および704のいずれによってももはや使用されていないデータ経路を表している。例えば、まず第1のUIビュー702は親クライアントオブジェクト「O」710aに、第1の子クライアントオブジェクト「O1」710bのインスタンス作成またはロードをさせる。第1のUIビュー702は第1の子クライアントオブジェクト710bを使用して、第1のリアルオブジェクト708cを介してプロセスコントロールデータにアクセスすることができる。第1のUIビュー702は第1のデータ経路を介して第1の子クライアントオブジェクト710bにアクセスし、データ経路は最初、アクティブつまり「使用中」のデータ経路を示す実線(図示せず)である。第1の子クライアントオブジェクト710bは第1のハンドル「H1」712bを参照して、第1のマスク「M1」714bを介して第1のリアルオブジェクト708cにアクセスする。
【0051】
加えて、第1および第2のUIビュー702および704は共通のクライアントスキーマを共有しているため、第2のUIビュー704はまた第1の子クライアントオブジェクト710bを介して第1のリアルオブジェクト708cにアクセス可能である。図7に示されるように、第2のUIビュー704は第2のデータ経路718を介して第1の子クライアントオブジェクト710bにアクセスする。第1のUIビュー702が第1の子クライアントオブジェクト710bの使用を終了すると、第1のデータ経路716は図7に点線で示されるように非アクティブになる。クライアントアプリケーション706の他のUIビューが第1の子クライアントオブジェクト710bへのアクセスを必要としない場合、クライアントオブジェクト710bはガーベジコレクション可能(例えば、アンロード可能)となる。しかしながら、第2のUIビュー704は第1の子クライアントオブジェクト710bへのアクセスを継続するため、データ経路718は図7に実線で示されるようにアクティブのままであり、クライアントオブジェクト710bはガーベジコレクション可能とはならない。第1の子クライアントオブジェクト710bから第1のリアルオブジェクト708cまでのデータ経路720、722および724もまた実線で示されるようにアクティブのままである。
【0052】
クライアントオブジェクトがクライアントアプリケーションのユーザインタフェースによってもはや使用されない場合、そのクライアントオブジェクトと関連したデータ経路の全ては非アクティブとなり、クライアントオブジェクトと対応するハンドルおよびマスクとはガーベジコレクションの準備ができているとフラグされ、クライアントモデル116によって後にアンロードされる。加えて、クライアントオブジェクトによってアクセスされていたリアルオブジェクトがもはや他のクライアントオブジェクトによってアクセスされない場合、リアルオブジェクトもまたガーベジコレクションの準備ができているとフラグされ、後にクライアントモデル116によってアンロードされる。例えば、第2のリアルオブジェクト708dにアクセスするために第1のUIビュー702に対して最初にインスタンスを作成またはロードされる第2の子クライアントオブジェクト「O2」710cは後に非アクティブとなり、これがUIビュー702および704のいずれによってももはや使用されない場合にガーベジコレクションの準備ができたとフラグされる。第2のオブジェクトハンドル712cおよび第2のマスク714cもまたガーベジコレクションの準備ができたとフラグされる。この場合、第2の子クライアントオブジェクト710cと関連したデータ経路の全てが図7に点線で示されるように非アクティブになる。クライアントモデル116は第2の子クライアントオブジェクト710cをアンロードするが、第2のオブジェクトハンドル712c、第2のマスク714cおよびクライアントモデル116は、別の子クライアントオブジェクトが第2のリアルオブジェクト708dを依然として使用していたり、これへのアクセスを必要としたりする場合には、第2のリアルオブジェクト708dをアンロードしなくてもよい。
【0053】
特定のクライアントオブジェクトのインスタンスがアンロードされた後、そのクライアントオブジェクトの別のインスタンスが、そのクライアントオブジェクトと関連したプロセスコントロールデータに後にアクセスするためにロードされてもよい。例えば、図7に示されるように、第2の子クライアントオブジェクト710cがアンロードされた(例えば、ガーベジコレクション時にアンロードされた)後に、第1のUIビュー702は親オブジェクト710aに、第2のリアルオブジェクト708dにアクセスするために第2の子クライアントオブジェクト「O2'」710dの第2のインスタンスをロードするか、
このインスタンス作成をさせてもよい。
【0054】
図8において、UIビュー702および704の各々はそれぞれの個別クライアントスキーマを有しており、それぞれの子クライアントオブジェクトを使用してリアルオブジェクト216にアクセスする。例えば、第2のUIビュー704は、第1のUIインタフェース702によって使用されるクライアントオブジェクトの全てとは別個のクライアントオブジェクト「O1」802のインスタンスを作成するか、これをロードする。図31Aおよび31Bと関連して後述される例示的方法は、図7および8に示されるUIビュー702および704とリアルオブジェクト216間の通信経路を形成するために使用可能である。
【0055】
図9は、図1および2のユーザインタフェース118と、図2のクライアントオブジェクト212のうちの1つと実質的に類似または同一のクライアントオブジェクト902とのデータ結合を示すブロック図である。図9のユーザインタフェース118は例証として、図2のユーザI/Oコントロール204と実質的に類似または同一の第1、第2および第3のユーザI/Oコントロール904a、904bおよび904cを有するものとして示されている。例えば、ユーザI/Oコントロール904a乃至cはテキストボックス、リストボックス、データフィールド、チェックボックスなどであってもよい。クライアントオブジェクト902はユーザ生成クラス要素部分906と事前生成クラス要素部分908とを含んでいる。ユーザ生成クラス要素部分906のクラス要素はユーザ生成パーシャルクラス(例えば、図2のユーザ生成パーシャルクラス208のうちの1つ)で定義され、事前生成クラス要素部分908のクラス要素は事前生成パーシャルクラス(例えば、図2の事前生成パーシャルクラス206のうちの1つ)で定義される。下記の複数のプロパティ(Property)910a乃至910eはユーザ生成および事前生成部分906および908のクラス要素に基づいて作成される。
【0056】
ユーザ生成部分906はPROPERTY_A要素910aおよびPROPERTY_B要素910bを含んでいる。事前生成部分908はPROPERTY_C要素910cと、PROPERTY_D要素910dとPROPERTY_E要素910eとを含んでいる。プロパティ要素910c乃至eは格納プロセスコントロールデータをプロセスコントロールシステムデータベース110から検索するために使用される。PROPERTY_A要素910aはPROPERTY_C要素910cと関連しており、PROPERTY_C要素910cに基づいて値を導き出す。クライアントオブジェクト902は、ユーザ生成要素(例えば、プロパティ要素910aおよび910b)と事前生成要素(例えば、プロパティ要素910c乃至e)間のマッピングまたは関連付けを含む、図9に示されたプライベートハッシュテーブル912を含んでいる。プライベートハッシュテーブル912は、オブジェクト912に対してプライベートであるタイプ「HashTable」の変数またはポインターを介して参照またはアクセスされてもよい。PROPERTY_A要素910aとPROPERTY_C要素910cの関連は、プライベートハッシュテーブル912の行914に示されている。
【0057】
ユーザI/Oコントロール904a乃至cはPROPERTY_A要素910a、PROPERTY_D要素910dおよびPROPERTY_E要素910eにそれぞれデータ結合される。このようなユーザI/Oコントロール904a乃至cのデータ結合によってクライアントアプリケーション108は、ユーザI/Oコントロール904a乃至c間のデータ値と要素910a、910dおよび910eのそれぞれのデータ値とを、これらのデータ値のいずれかが更新される度に通信する。例えば、図32と関連してより詳細に後述されるように、プロセスコントロールシステムデータベースサーバー112およびクライアントモデル116は、プロセスコントロールシステムデータベースサーバー110で修正されたプロセスコントロールデータに関する更新情報(例えば、不確かまたは不正オブジェクトの「UpdateNotification」イベントおよびリスト)を送受信可能である。このように、クライアントオブジェクト902は修正済みプロセスコントロールデータのいずれかが、格納プロセスコントロールデータにアクセスするために使用されるそのプロパティ要素910c乃至dのいずれかと関連しているかを判断し、もしそうならば、プロセスコントロールデータ値が修正されたプロパティ要素910c乃至dの各々の値を更新する。そしてクライアントオブジェクト902は、プロセスコントロールデータが修正されたプロパティ要素910c乃至dのいずれかと関連するか、またはこれを使用するユーザ生成プロパティ(例えば、プロパティ910aおよび910b)のいずれかの値を更新するためにプライベートハッシュテーブル912を使用してもよい。
【0058】
データ結合されたユーザI/Oコントロール904a乃至cの値を更新するために、クライアントモデル116は更新通知イベントを介して受信された更新情報を解析して、プロセスコントロールデータが修正されたユーザ生成または事前生成プロパティの「PropertyChanged」イベントを生成する。そして「PropertyChanged」イベントによってデータ結合されたユーザI/Oコントロール904a乃至cは、プロパティ910a乃至eのそれぞれ1つから修正済みプロセスコントロールデータを取得して、I/Oコントロール904a乃至cの値を更新する。
【0059】
クライアントオブジェクト902はまた、不正ハッシュテーブル916にデータ投入するために更新情報を使用可能である。不正ハッシュテーブル916はタイプ「HashTable」の変数またはポインターを介して参照され、オブジェクト902に対してはプライベートである。不正ハッシュテーブル916が、クライアントアプリケーション(例えば、図1のクライアントアプリケーション108)に対する不正または不確かなオブジェクトハンドルを記憶するために使用される。不正オブジェクトハンドルは更新情報において提供されて、一部のクライアントオブジェクトのプロセスコントロールデータがプロセスコントロールシステムデータベース110にあったことを示す。クライアントアプリケーション108は、不正オブジェクトハンドルによって不正ハッシュテーブル916にデータ投入するために「PopulateDirtyHashTable」機能を使用してもよい。例えば、「PopulateDirtyHashTable」機能はまず更新通知イベントから更新情報を受信し、次いで更新情報を解析して、不正ハンドルによって不正ハッシュテーブル916にデータ投入する。
【0060】
図10は、例示的サーバースキーマを定義する例示的サーバースキーマXMLソースコード1000を示している。サーバースキーマXMLソースコード1000はプロセスコントロールシステムデータベースサーバー112に記憶されており、プロセスコントロールシステムデータベースサーバー112によってプロセスコントロールデータを呈示するために使用される配列やレイアウトを定義する。サーバースキーマXMLソースコード1000はクラスタイプ定義および列挙定義を含有する。各クラスタイプは名前を有しており、多数のプロパティ、ロールおよびコマンドを含有する。各プロパティは名前およびデータタイプを有している。
【0061】
ロールはこれが含有している名前と(複数の)クラスタイプを有している。ロールのアイテムに対して含有されているベースタイプはロール要素において公表される。具体的なクラスサブタイプはロール要素内にネストされる。各含有クラスタイプは、コマンドを介してクライアントアプリケーション(例えば、図1のクライアントアプリケーション108)によって作成可能であるか否かにかかわらずマークされる。クラスタイプ定義はまた、例えばクライアントアプリケーション108から取得されたコマンドスクリプトを介して実行可能なコマンドを含有している。各コマンドは名前を有しており、そのパラメータおよびリターンタイプを定義する。
【0062】
図10に示されるように、サーバースキーマXMLソースコード1000は「ControlModule」(ライン1002)と称されるタイプを指定する。タイプ名「ControlModule」(ライン1002)はデータタイプストリング(ライン1004)の「detailDisplayName」と称されるプロパティと、宛先タイプ「BlockBase」(ライン1006)の「Blocks」と称されるロールとを含有する。ロール名「Blocks」(ライン1006)は、クライアントアプリケーション108(ライン1008)によって作成可能な「ModelUsage」と称されるタイプを含有する。タイプ名「ModelUsage」(ライン1008)は、クライアントアプリケーション108がタイプ「ModelUsage」のオブジェクトをロードまたはインスタンス作成をする場合に作成される複数の作成パラメータ(ライン1010および1012)を含有している。タイプ名「ControlModule」(ライン10002)はまたリターンタイプ無効(void)(ライン1014)の「renameTo」と称されるコマンドを含有している。コマンド名「renameTo」(ライン1014)はデータタイプストリング(ライン1016)の「newName」と称されるパラメータを含有している。
【0063】
サーバースキーマXMLソースコード1000はまた列挙定義を指定する。具体的には、サーバースキーマXMLソースコード1000は「DbeAttributeType」(ライン1018)と称されるイーナム(enum)を含んでいる。イーナム名「DbeAttributeType」(ライン1018)は、「Float」(ライン1020)と称されるエントリと、「FloatWithStatus」(ライン1022)と称されるエントリとを含む複数のアイテムを含有している。
【0064】
列挙はプロパティのデータタイプフィールドにおいて参照可能である。例えば、「Attribute」(ライン1024)と称されるタイプはデータタイプ「DbeAttributeType」(ライン1026)の「atrributeType」と称されるプロパティを含有しており、これはイーナム名「DbeAttributeType」(ライン1018)に対応している。
【0065】
図11は、クライアントモデル116によって提出された問い合わせに応答してプロセスコントロールシステムデータベースサーバー112によってクライアントモデル116に返送される例示的XMLソースコード1100である。具体的には、例示的XMLソースコード1100は問い合わせSite.PlantAreas[name=‘AREA_A’](index).Modules(name)に応答して返送される。図11に示されるように、XMLソースコード1100の結果は「PlantAreas」(ライン1102)と称されるModelRoleを含んでいる。ModelRole名「PlantAreas」(ライン1102)は「AREA_A」(ライン1104)と称されるPlantAreaを含有している。PlantArea名「AREA_A」(ライン1104)は、ゼロに等しく設定され、かつ「Models」(ライン1008)と称されるModelRoleであるプロパティインデックス(ライン1106)を含有している。ModelRole名「Modules」(ライン1108)は複数のモジュールと、各々の対応するプロパティとを含有している。例えば、ModelRole名「Modules」(ライン1108)は「EM1」(ライン1110)と称されるModuleInstanceBaseを含有しており、これは「EM1」(ライン1112)と称されるプロパティを含有している。
【0066】
図12は、プロセスコントロールデータをサーバースキーマ(例えば、図10のサーバースキーマXMLソースコード1000、または図14、17、20、23、26および29と関連して後述されるサーバースキーマ階層のうちの1つ)からクライアントスキーマ(例えば、図14、17、20、23、26および29と関連して後述されるクライアントスキーマ階層のうちの1つ)にマッピングするために使用可能な例示的クライアントスキーマXMLソースコード1200を示している。クライアントスキーマは、サーバースキーマがタイプを定義するのと実質的に類似の方法でプロパティ、ロールおよびコマンドのタイプを定義する。タイプ、プロパティおよびロールごとに、クライアントスキーマXMLソースコード(例えば、クライアントスキーマXMLソースコード1200)はサーバースキーマへのマッピングを示しているため、クライアントモデル116(図1)はクライアントスキーマとサーバースキーマ間でプロセスコントロールデータを再配列またはマッピング可能である。
【0067】
図12に示されるように、クライアントスキーマにおける「Module」と称されるタイプはサーバースキーマ(ライン1202)における「Module」と称されるタイプにマッピングされる。この場合、クライアントスキーマにおいて「Module」と称されるタイプもまた、サーバースキーマにおいて「Module」と称される。しかしながら、クライアントスキーマにおけるタイプ名は異なる名前を有するサーバースキーマにおけるタイプ名にマッピングされることがある。例えば、タイプ名「ModuleOne」はタイプ名「ModuleTwo」にマッピングされることがある。
【0068】
プロパティ要素(ライン1204)は1つ以上のプロパティ要素を含有することがある。各プロパティ要素はクライアントタイプの1つ以上のクライアントプロパティを定義し、各クライアントプロパティの名前と、クライアントプロパティが関連しているドメインと、サーバースキーマへのマッピングとを含有している。図12に示されるように、「desc」と称されるプロパティはデータベースドメインと関連しており(例えば、プロパティは、プロセスコントロールシステムデータベース110に記憶されている格納プロセスコントロールデータに対応している)、サーバースキーマ(ライン1206)において「description」と称されるプロパティにマッピングされる。「rtValue」と称されるプロパティはランタイムドメインと関連しており(例えば、プロパティは、図1のランタイムサーバー114から取得可能なリアルタイムプロセスコントロールデータに対応している)、サーバースキーマ(ライン1208)において「ST」と称されるプロパティにマッピングされる。プロパティマッピングは含有タイプに関連する。例えば、含有タイプが含有タイプ「Site」内にある「Module」である場合、MOD_Xの「desc」プロパティに対して生成された問い合わせはSite.Modules[name=‘MOD_X’](description)である。
【0069】
ロール要素(ライン1210)は1つ以上のロール要素を含有している。各ロール要素はクライアントタイプと関連したクライアントロールを定義し、クライアントロールの名前と、クライアントロールが関連しているドメインと、クライアントロールを得るために使用されるマッピングと、クライアントロールのオブジェクトのタイプとを含有している。図12に示されるように、ロール要素(ライン1210)は、データベースドメインと関連している「attributes」と称されるロールを含有しており(例えば、このロールは、プロセスコントロールシステムデータベース110に記憶されている格納プロセスコントロールデータに対応している)、サーバースキーマ(ライン1212)において「Attributes」と称されるロールにマッピングされる。ロールマッピングは含有タイプと関連している。例えば、含有タイプが、含有タイプ「Site」内に含有されている「Module」である場合、MOD_Xの「attributes」ロールに対して生成された問い合わせはSite.Modules[name=‘MOD_X’].Attributesである。
【0070】
図13乃至29は、サーバー(例えば、図1のプロセスコントロールシステムデータベースサーバー112やランタイムサーバー114)上にあるサーバースキーマからクライアントアプリケーション(例えば、図1のクライアントアプリケーション108)にあるクライアントスキーマにオブジェクトおよびロールなどのクラス要素をマッピングするために使用可能な例示的ユーザインタフェース、スキーママッピング構成および例示的XMLソースコードを示している。下記のマッピング構成は、プロセスコントロールシステムサーバーからクライアントアプリケーションを抜粋するためにクライアントモデル116によって実施されてもよい。クラス要素をサーバースキーマからクライアントスキーマにクライアントモデル116を介してマッピングすることによって、クライアントアプリケーションは、複数のサーバーに通信可能に接続され、またこれと共働するように構成可能である。さらに、下記のようなスキーママッピング構成を使用するクライアントモデル116に基づいたクライアントアプリケーションの開発によって、各々が特定のプロセスコントロールデータ要件を有している複数のアプリケーションが、プロセスコントロールシステムサーバーに通信可能に接続され、かつこれと共働することができる。
【0071】
図13は、オブジェクトと、これに含有されているロールとを表す例示的ユーザインタフェース1300を示している。例示的ユーザインタフェース1300はユニットモジュール「AREA_A」1302を1個の完成オブジェクトとして示している。しかしながら、プロセスコントロールシステムデータベース110(図1)において、ユニットモジュール「AREA_A」1302は2つの個別オブジェクトとして記憶されている。第1のオブジェクトはユニットモジュール「AREA_A」1302の挙動を含有しており、第2のオブジェクトは、他のモジュールがユニットモジュール「AREA_A」1302内にネスト可能な様子を定義するモジュールコンテナ挙動を含有している。
【0072】
図14は、図13の例示的ユーザインタフェース1300を生成するためのクライアントスキーマとサーバースキーマ間のマッピング構成1400を示す詳細なブロック図である。マッピング構成1400はクライアントモデル116(図1)によって実施可能である。具体的には、図14は、サーバースキーマ階層1402と、クライアントスキーマ階層1404と、クライアントモデル階層1406とを1対1のマッピング構成で示している。サーバースキーマ階層1402は、プロセスコントロールシステムデータベース110(図1)に記憶されているようなタイプ「Unit」1408のサーバーオブジェクトとタイプ「UnitModule」1410のサーバータイプとの区別を示している。クライアントモデル階層1406の階層は、サーバースキーマ階層1402の階層に従い、これと実質的に類似しており、あるいはこれと同一である。クライアントスキーマ階層1404は、クライアントモデル階層1406へのポインターを提供するマスク1410a、1410bおよび1410cを使用してサーバースキーマ階層1402から対象オブジェクトおよびロールのみを表す。
【0073】
サーバースキーマ階層1402は、タイプ「Units」1414のサーバーロールを含有するタイプ「AREA」1412のサーバーオブジェクトを含んでいる。サーバーロール「Units」1414は、タイプ「UnitModule」1418のサーバーロールとタイプ「Modules」1420のサーバーロールとを含有するサーバーオブジェクト「Unit」1408となる。サーバーロール「UnitModule」1418はサーバーオブジェクト「UnitModule」1410になり、サーバーロール「Modules」1420はタイプ「Module」1422のサーバーオブジェクトとなる。
【0074】
クライアントスキーマ階層1404は、タイプ「UnitModules」1426のクライアントロールを含有するタイプ「AREA」1424のクライアントオブジェクトを含んでいる。クライアントロール「UnitModules」1426は、タイプ「Modules」1430のクライアントロールを含有するタイプ「UnitModule」1428のクライアントオブジェクトになる。クライアントロール「Modules」1430はタイプ「Module」1432のクライアントオブジェクトになる。クライアントオブジェクトおよびクライアントロールは、図15と関連して後述されるようなクライアントモデル階層1406のリアルオブジェクトおよびロールとマスク1410a乃至cとを介してサーバーオブジェクトおよびサーバーロールにマッピングされる。
【0075】
クライアントモデル階層1406は、サーバースキーマ階層1402と実質的に類似または同一に配列された複数のリアルオブジェクトおよびリアルロールを含んでいる。クライアントモデル階層1406は、サーバーオブジェクト「AREA」1412に対応するタイプ「AREA_A」1434のリアルオブジェクトを含んでいる。リアルオブジェクト「AREA_A」1434は、サーバーロール「Units」1414に対応するタイプ「Units」1436のリアルロールを含有している。リアルロール「Units」1436は、サーバーオブジェクト「Unit」1408に対応するタイプ「ABC」1438のリアルオブジェクトになる。リアルオブジェクト「ABC」1438は、サーバーロール「UnitModule」1418に対応するタイプ「UnitModule」1440のリアルロールと、サーバーロール「Modules」1420に対応するタイプ「Module」1442のリアルロールとを含有する。リアルロール「UnitModule」1440は、サーバーオブジェクト「UnitModule」1410に対応するリアルオブジェクト「ABC」1444になる。ロール「Module」1442は、サーバーオブジェクト「Module」1422に対応するリアルオブジェクト「SSS」1446になる。
【0076】
図15は、図14のサーバースキーマ階層1402からクライアントスキーマ階層1404へのマッピングを生成するために使用可能な例示的XMLソースコード1500を示している。XMLソースコード1500は、クライアントオブジェクト「AREA」1424(図14)がサーバーオブジェクト「AREA」1412(図14)(ライン1502)にマッピングされることを示している。クライアントオブジェクト「AREA」1424をサーバーオブジェクト「AREA」1412にマッピングするためには、クライアントモデル116はリアルオブジェクト「AREA_A」1434をクライアントオブジェクト「AREA」1424にマスク「AREA_A」1410aを介してマッピングする。このように、クライアントオブジェクト「AREA」1424は、クライアントオブジェクト「AREA」1424がサーバーオブジェクト「AREA」1412に直接アクセスしているように、リアルオブジェクト「AREA_A」1434を介してサーバーオブジェクト「AREA」1412にアクセスする。
【0077】
クライアントオブジェクト「AREA」1424は、サーバーロール「Units」1414(図14)にマッピングされ、かつクライアントオブジェクト「UnitModules」1428(図14)(ライン1504)になるクライアントロール「UnitModules」1426(図14)を含有している。クライアントスキーマ階層1404におけるクライアントオブジェクトは、クライアントオブジェクトが同一名称のサーバーオブジェクトにマッピングしなくても、サーバースキーマ階層1402におけるサーバーオブジェクトと同じ名前を有することができる。例えば、クライアントオブジェクト「UnitModules」1428はサーバーオブジェクト「Unit」1408(図14)(ライン1506)にマッピングされる。この場合、クライアントモデル116はクライアントオブジェクト「UnitModules」1428をリアルオブジェクト「ABC」1438にマスク「ABC」1410bを介してマッピングする。
【0078】
クライアントオブジェクト「UnitModules」1428は、サーバーオブジェクト「UnitModules」1410(つまり、「UnitModule(scanRate)」)(ライン1508)の「scanRate」プロパティにマッピングされる、「scanRate」と称されるプロパティを含有する。この場合、クライアントモデル116はリアルオブジェクト「ABC」1444の「scanRate」をクライアントオブジェクト「UnitModule」1428の「scanRate」プロパティにマスク「ABC」1410bを介してマッピングする。リアルオブジェクト「ABC」1444の「scanRate」プロパティをクライアントオブジェクト「UnitModule」1428の「scanRate」プロパティにマスク「ABC」1410bを介してマッピングすることによって、クライアントモデル116はサーバーオブジェクト「Unit」1408からサーバーロール「UnitModule」1418(図14)に横断して、クライアントオブジェクト「UnitModules」1428の「scanRate」プロパティをサーバーオブジェクト「UnitModules」1410の「scanRate」プロパティにマッピングする。
【0079】
オブジェクト「UnitModules」1420は、サーバーロール「Modules」1420(図14)にマッピングされ、かつクライアントオブジェクト「Module」1432(図14)(ライン1510)になるクライアントロール「Modules」1430(図14)を含有している。
【0080】
図16は、1つの機能ブロックおよび2つの属性を含有する複合機能ブロック「PT_COMP」1602を表す例示的ユーザインタフェース1600を示している。ユーザインタフェース1600に示されるように、複合機能ブロック「PT_COMP」1602は、機能ブロック「CALC1」1606と、属性「ABS_PRESS_CF」1608と、属性「ABS_TEMP_CF」1610とを含有するアイテムの統合リスト1604を含んでいる。ユーザがオブジェクトの統合リストの表示を選択すると、クライアントモデル116は1つのクライアントロールおよび2つ以上のサーバーロールをマッピングするように構成可能である。図17と関連して後述されるように、サーバースキーマ(例えば、図17のサーバースキーマ階層1702)において、機能ブロック「CALC1」1606に対応するオブジェクトは、属性「ABS_PRESS_CF」1608および属性「ABS_TEMP_CF」1610に対応するオブジェクトとは異なるサーバーロールと関連している。しかしながら、クライアントスキーマ(例えば、図17のクライアントスキーマ階層1704)において、機能ブロック「CALC1」1604、属性「ABS_PRESS_CF」1606および属性「ABS_TEMP_CF」1608に対応するオブジェクトは全て同一クライアントロールの一部として表される。
【0081】
図17は、単一のクライアントロールを複数のサーバーロールにマッピングして図16の例示的ユーザインタフェース1600を生成する、サーバースキーマ階層1702とクライアントスキーマ階層1704間のマッピング構成1700を示す詳細なブロック図である。マッピング構成で記述されたマッピングはクライアントモデル116(図1)によって実行可能である。マッピング構成1700はクライアントスキーマ階層1704をサーバースキーマ階層1702にクライアントモデル階層1706および複数のマスク1708a乃至dを介してマッピングする。サーバースキーマ階層1702は、2つのサーバーロール:タイプ「Blocks」1712のサーバーロールおよびタイプ「Attributes」1714のサーバーロールを含有するタイプ「CompositeFunctionalBlock」1710のサーバーオブジェクトを含んでいる。サーバーロール「Blocks」1712はタイプ「BlockUsage」1716のクライアントオブジェクトになり、サーバーロール「Attributes」1714はタイプ「AttributeDefinitions」1718のクライアントオブジェクトになる。従って、クライアントモデル階層1706はサーバースキーマ階層1702に従う。
【0082】
クライアントスキーマ階層1704は、タイプ「Children」1722のクライアントロールを含有するタイプ「Composite」1720のクライアントオブジェクトを含んでいる。クライアントロール「Children」1722はタイプ「Block」1724のクライアントオブジェクトおよびタイプ「Attribute」1726のクライアントオブジェクトになる。
【0083】
図18は、図17のサーバースキーマ階層1702からクライアントスキーマ階層1704へのマッピングを生成するために使用可能な例示的XMLソースコード1800を示している。XMLソースコード1800はクライアントオブジェクト「Composite」1720(図17)をサーバーオブジェクト「CompositeFunctionalBlock」1710(図17)(ライン1802)にマッピングする。クライアントオブジェクト「Composite」1720(ライン1804)内に含有されたクライアントロール「Children」1722は2つのサーバーロールにマッピングする。とりわけ、クライアントロール「Children」1722はサーバーロール「Blocks」1712(ライン1806)およびサーバーロール「Attributes」1714(ライン1808)にマッピングする。サーバーロール「Blocks」1712へのマッピングについて、クライアントロール「Children」1722はクライアントオブジェクト「Block」1724(ライン1806)になる。サーバーロール「Attributes」1714へのマッピングについて、クライアントロール「Children」1722はクライアントオブジェクト「Attribute」1726(ライン1808)になる。クライアントロール「Block」1724はサーバーオブジェクト「BlockUsage」1716(ライン1810)にマッピングし、クライアントロール「Attribute」1726はサーバーオブジェクト「AttributeDefinition」1718(ライン1812)にマッピングする。
【0084】
図19は、特定のプラントエリア「AREA_A」1902内の複数の異なるコントロールデバイスを表す例示的ユーザインタフェース1900を示している。具体的には、プラントエリア「AREA_A」1902は「LIC−549」コントロールデバイス1904と、「PLM1」コントロールデバイス1906と、「EM1」コントロールデバイス1908とを含んでいる。図20および21と関連して後述されるように、コントロールデバイス1904、1906および1908は、サーバースキーマ(例えば、図20のサーバースキーマ階層2002)において単一のサーバーロールにマッピングされる3つの個別クライアントロールとしてクライアントスキーマ(例えば、図20のクライアントスキーマ階層2004)において表される。
【0085】
図20は、複数のクライアントロールを単一のサーバーロールにマッピングして図19の例示的ユーザインタフェース1900を生成する、サーバースキーマ階層2002とクライアントスキーマ階層2004間のマッピング構成2000を示す詳細なブロック図である。マッピング構成2000はクライアントスキーマ階層2004をサーバースキーマ階層2002にクライアントモデル階層2006および複数のマスク2008a乃至dを介してマッピングする。サーバースキーマ階層2002は、タイプ「Modules」2012のサーバーロールを含有するタイプ「Area」2010のサーバーオブジェクトを含んでいる。サーバーロール「Modules」2012は、タイプ「PhaseLogicModule」2014のサーバーオブジェクト、タイプ「EquipmentModule」2016のサーバーオブジェクト、およびタイプ「ControlModule」2018のサーバーオブジェクトになる。クライアントモデル階層2006は、それぞれサーバーオブジェクト「PhaseLogicModule」2014、サーバーオブジェクト「EquipmentModule」2016およびサーバーオブジェクト「ControlModule」2018に対応するタイプ「PLM1」2020のリアルオブジェクトと、タイプ「EM1」2022のリアルオブジェクトと、タイプ「LIC−459」2024のリアルオブジェクトとを含む。リアルオブジェクト「PLM1」2020、「リアルオブジェクト「EM1」2022およびリアルオブジェクト「LIC−459」2024はまた、ユーザインタフェース1900に示されている「LIC−459」コントロールデバイス1904、「PLM1」コントロールデバイス1906および「EM1」コントロールデバイス1908にそれぞれ対応する。
【0086】
クライアントスキーマ階層2004は、タイプ「ControlModules」2028のクライアントロール、タイプ「PhaseLogicModules」2030のクライアントロールおよびタイプ「EquipmentModules」2032のクライアントロールになるタイプ「Area」2026のクライアントオブジェクトを含んでいる。クライアントロール「ControlModules」2028はタイプ「ControlModule」2034のクライアントオブジェクトになる。クライアントロール「PhaseLogicModules」2030はタイプ「PhaseLogicModule」2036のクライアントオブジェクトになる。クライアントロール「EquipmentModule」2032はタイプ「EquipmentModule」2038のクライアントオブジェクトになる。
【0087】
図21は、図20のサーバースキーマ階層2002からクライアントスキーマ階層2004へのロールマッピングを生成するために使用可能な例示的XMLソースコード2100を示している。XMLソースコード2100に示されるように、クライアントロール「ControlModules」2028はサーバーロール「Modules」2006(ライン2102)にマッピングされる。また、クライアントロール「PhaseLogicModules」2030はサーバーロール「Modules」2006(ライン2104)にマッピングされる。加えて、クライアントロール「EquipmentModules」2032はサーバーロール「Modules」2006(ライン2106)にマッピングされる。
【0088】
図22は、コントロールデバイスと関連したアイテムを選択的に表示するために使用可能な例示的ユーザインタフェース2200を示している。例えば、ユーザインタフェース2200は「CH01」コントロールデバイス2202を示しており、「CH01」コントロールデバイス2202がサーバースキーマ(例えば、図23のサーバースキーマ階層2302)における少なくとも2つのプロパティと関連していても、「CH01」コントロールデバイス2202と関連した1つのプロパティ、プロパティ「CTLR1C01CH01」2204のみを表示する。より詳細に後述されるように、クライアントスキーマ(例えば、図23のクライアントスキーマ階層2304)はサーバースキーマ(例えば、サーバースキーマ階層2302)において1サブセットのサーバーオブジェクトにマッピングされてもよいため、クライアントアプリケーション(例えば、図1のクライアントアプリケーション108)はユーザインタフェース2200に示されるような1サブセットのオブジェクトのみを表示する。
【0089】
図23は、クライアントオブジェクトを1サブセットのサーバーオブジェクトにマッピングして図22の例示的ユーザインタフェース2200を生成する、サーバースキーマ階層2302とクライアントスキーマ階層2304間のマッピング構成2300を示す詳細なブロック図である。クライアントモデル階層2306は、図22のプロパティ「CTLR1C01CH01」2204に対応するタイプ「CTLRC01CH01」2308のリアルオブジェクトを含んでいる。サーバースキーマ階層2302はタイプ「Device」2310のサーバーオブジェクトと、タイプ「DST」2312のサーバーオブジェクトとを含んでいる。クライアントスキーマ階層2304はタイプ「DST」2314のクライアントオブジェクトを含んでいる。図24の例示的XMLソースコード2400に示されるように、クライアントオブジェクト「DST」2314はサーバーオブジェクト「DST」2312(ライン2402)にマッピングされる。クライアントオブジェクト「DST」2314はリアルオブジェクト「CTLRC01CH01」2308およびマスク「CTLR1C01CH01」2316を介してサーバーオブジェクト「DST」2312にマッピングされる。
【0090】
図25は、追加アイテムがそのコントロールデバイスのサーバースキーマの一部でなくても追加アイテムをコントロールデバイスに挿入するために使用可能な例示的ユーザインタフェース2500を示している。ユーザインタフェース2500は「AssignedModules」アイテム2504および「TIC−205」アイテム2506を有するものとして示されている「CTLR1」コントロールデバイス2502を含んでいる。図26と関連して後述されるように、サーバースキーマ(例えば図26のサーバースキーマ2602)は、「AssignedModules」アイテム2504に対応するサーバーオブジェクトを含んでいない。その代わり「AssignedModules」アイテム2504に対応するクライアントオブジェクトがクライアントスキーマ(例えば、図26のクライアントスキーマ2604)に挿入される。
【0091】
図26は、クライアントオブジェクトをクライアントスキーマ階層2602に挿入する、サーバースキーマ階層2602とクライアントスキーマ階層2604間のマッピング構成2600を示す詳細なブロック図である。サーバースキーマ階層2602およびクライアントモデル階層2606の各々は単一のオブジェクトを含んでいる。具体的には、サーバースキーマ階層2602はタイプ「Module」2608のサーバーオブジェクトを含んでおり、クライアントモデル階層2606は、サーバーオブジェクト「Modules」2608および「TIC−205」アイテム2506(図25)に対応するタイプ「TIC−201」2610のリアルオブジェクトを含んでいる。クライアントスキーマ階層2604は、サーバーおよびクライアントモデルオブジェクト2608および2610に対応するクライアントオブジェクト「Module」2612を含んでいる。加えて、クライアントアプリケーション(例えば、図1のクライアントアプリケーション108)はタイプ「AssignedModules」2614のクライアントオブジェクトを挿入している。
【0092】
図27は、クライアントオブジェクト「AssignedModules」2614(図26)をクライアントスキーマ階層2604(図26)に挿入するための例示的XMLソースコード2700を示している。具体的には、クライアントオブジェクト「AssignedModules」2614を作成するために、例示的XMLソースコード2700は、タイプ「AssignedModules」2616(図26)のクライアントロールがサーバースキーママッピング(例えば、ロール名=‘AssignedModules’mapping=‘’)を有していないこと、およびクライアントロール「AssignedModules」2616がクライアントオブジェクト「AssignedModules」2614(ライン2702)になることを指定する。クライアントオブジェクト「AssignedModules」2614をクライアントスキーマ階層2604に挿入するために、例示的XMLソースコード2700は、クライアントオブジェクト「AssignedModules」2614がタイプ「Controller」2618のサーバーオブジェクト(例えば、サーバースキーマ階層2602の親オブジェクト)(ライン2704)に擬似マッピングされることを指定する。クライアントオブジェクト「AssignedModules」2614は、タイプ「AssignedModules」2622(図26)(ライン2706)のサーバーロールにマッピングされるタイプ「Modules」2620(図26)のクライアントロールを含有する。
【0093】
図28は、リアルタイムプロセスコントロールデータがコマンドを介して取得可能なアイテムを表示するために使用可能な例示的ユーザインタフェース2800を示している。ユーザインタフェース2800は、リアルタイムプロセスコントロールデータをランタイムサーバー114(図1)を介して取得可能なコントロールデバイスを含有するフィールドバスポート「P01」2802を含んでいる。具体的には、フィールドバスポート「P01」2802は「DecomissionedFieldbusDevice」2804を含有しており、これはコントロールデバイス「D1」2806を含んでいる。コントロールデバイス「D1」2806は、図29と関連して後述されるコマンドとしてクライアントスキーマ(例えば、図29のクライアントスキーマ階層2902)において実施される。
【0094】
図29は、クライアントロールをコマンドとして実施するマッピング構成を示す詳細なブロック図である。クライアントスキーマ階層2902は、コマンドとして実施されるタイプ「Devices」2904のクライアントロールを含んでいる。クライアントロール「Devices」2904は、リアルタイムプロセスコントロールデータを図1のランタイムサーバー114から取得するために使用可能である。図30の例示的XMLソースコード3000は、オブジェクトタイプ「DecommissionedDevices」2906(図29)(図30のライン3002)のクライアントがクライアントロール「Devices」2904(図29)を含有していることを指定する。例示的XMLソースコード3000はまた、クライアントロール「Devices」2904はファイル「commands.dll」(例えば、assembly=「commands.dll」)に記憶されているコマンド命令を使用して実施されることと、クライアントロール「Devices」2904を実施する具体的なコマンドは「GetDecomissionedDevices」(ライン3004)であることとを指定する。クライアントロール「Devices」2904はタイプ「FieldbusDevices」2908(図19)(図30のライン3004)のクライアントオブジェクトになり、これはサーバースキーマ階層2910(図29)(図30のライン3006)へのマッピングを有していない。
【0095】
図31A、31Bおよび32は、図1および2の例示的クライアントアプリケーション108と、例示的クライアントモデル116と例示的ユーザインタフェース118とを実施するための例示的マシーン読み取り可能かつ実行可能な命令を表すフローチャートを示している。これらの例において、マシーン読み取り可能な命令は、図33の例示的プロセッサシステム3310に示されているプロセッサ3312などのプロセッサによって実行するためのプログラムを備えている。プログラムは、CD−ROM、フロッピー(登録商標)ディスク、ハードドライブ、デジタル多用途ディスク(DVD)またはプロセッサ3312と関連したメモリなどの有形媒体に記憶されたソフトウェアにおいて具現化されてもよく、かつ/または既知の方法でファームウェアや専用ハードウェアで具現化されてもよい。例えば、図1および2の例示的クライアントアプリケーション108、例示的クライアントモデル116および例示的ユーザインタフェース118内の構造のいずれかまたは全部がソフトウェア、ハードウェアおよび/またはファームウェアによって実施可能である。さらに、例示的プログラムは図31A、31Bおよび32に示されたフローチャートを参照して説明されるが、当業者は、図1および2の例示的クライアントアプリケーション108、例示的クライアントモデル116および例示的ユーザインタフェース118の多数の実施方法が代替的に使用可能であることを容易に理解するであろう。例えば、ブロックの実行順序は変更可能であり、かつ/または説明されているブロックの一部は変更、削除または結合可能である。
【0096】
図31Aおよび31Bは、ランタイム段階でクライアントアプリケーション(例えば、図1のクライアントアプリケーション108)アクセスをリアルオブジェクト(例えば、図2、7および8のリアルオブジェクト216)にクライアントオブジェクト(例えば、図2、7および8のクライアントオブジェクト212)を介して提供するために使用可能な例示的方法のフロー図を示している。まず、クライアントアプリケーション108は第1および第2のUIビュー(例えば、図7の第1および第2のUIビュー702および704)を参照する(ブロック3102)。第1のUIビュー702は次いで、親クライアントオブジェクト(例えば、図7の親クライアントオブジェクト「O」710a)と対応する親オブジェクトハンドルおよびマスク(例えば、図7の親オブジェクトハンドル「H」712aおよびゼロ番目のマスク「M」714a)とを介するリアル親オブジェクト(例えば、図7の親リアルオブジェクト「R」708a)へのアクセスをリクエストする(ブロック3104)。例えば、第1のUIビュー702は親クライアントオブジェクト「O」710aを使用するためのコールを発行可能である。親クライアントオブジェクト「O」710aは次いで、親オブジェクトハンドル「H」712aを参照することによって応答可能であり、これはまたゼロ番目のマスク「M」714aを参照する。マスク参照「M」714aは次いで親リアルオブジェクト「R」708aを参照し、図7に示されるように通信経路が第1のUIビュー702と親リアルオブジェクト「R」708a間に確立される。
【0097】
第1のUIビュー702は次いで、親リアルオブジェクト「R」708aにリアルロール(例えば、図7の「ModuleLibrary」リアルロール708b)をロードさせる(ブロック3106)。例えば、第1のUIビュー702はロードロールを親クライアントオブジェクト「O」710aに呼び出し、ロール名「ModuleLibrary」を譲渡する。親クライアントオブジェクト「O」710aは次いで、親オブジェクトハンドル「H」712aからリアルロールをフェッチして、親オブジェクトハンドル「H」712aはゼロ番目のマスク「M」714aに「ModuleLibrary」リアルロール708bをロードさせる。
【0098】
親リアルオブジェクト「R」708aは次いで、「ModuleLibrary」リアルロール708bにおいて第1および第2のリアルオブジェクト708cおよび708dをロードする(ブロック3108)。ゼロ番目のマスク「M」714aは次いで第1および第2のリアルオブジェクト708cおよび708dに対するマスク(例えば、図7の第1および第2のマスク714aおよび714b)を作成し、このマスクを親オブジェクトハンドル「H」712aに返送する(ブロック3110)。親オブジェクトハンドル「H」712aは次いで第1および第2のマスク714bおよび714cに対するオブジェクトハンドル(例えば、図7の第2のオブジェクトハンドル712bおよび712c)を作成し、このオブジェクトハンドルを親クライアントオブジェクト「O」710aに返送する(ブロック3112)。
【0099】
親クライアントオブジェクト「O」710aは次いで第1および第2の子クライアントオブジェクト710bおよび710c(図7)のインスタンスを作成し、子クライアントオブジェクト710a乃至bの各々を対応するオブジェクトハンドルに照会する(ブロック3114)。具体的には、第1の子クライアントオブジェクト710bは第1のオブジェクトハンドル712bに照会され、第2の子クライアントオブジェクト710cは第2のオブジェクトハンドル712cに照会される。第1のUIビュー702は次いで第1および第2の子クライアントオブジェクト710bおよび710cを参照し(ブロック3116)、これは図7に示されるように第1のUIビュー702と第1および第2のリアルオブジェクト708cおよび708dとの間の通信経路を形成する。
【0100】
図31Bに示されるように、第2のUIビューは次いで、第1のリアルオブジェクト708cへのアクセスをリクエストする(ブロック3118)。クライアントモデル116は次いで、第1および第2のビュー702および704がクライアントスキーマ(例えば、図14、17、20、23、26および29のクライアントスキーマ階層のうちの1つ)を共通しているか否かを判断する(ブロック3120)。UIビュー702および704がクライアントスキーマを共有している場合、第1のUIビュー702は第1の子クライアントオブジェクト710bを第2のユーザビュー704に譲渡する(ブロック3122)。この場合、図7に示されるように、データ経路が第2のUIビュー704と第1の子クライアントオブジェクト710b間に確立され、第1のUIビュー702と第1の子クライアントオブジェクト710b間のデータ経路は、第1のUIビュー702がもはや第1の子クライアントオブジェクト710bを参照しないため、非アクティブにされる。
【0101】
第1および第2のUIビュー702および704がクライアントスキーマを共有していない場合、第1のUIビュー702は、第1の子クライアントオブジェクト710bに対応するサーバー経路を第2のUIビュー704に譲渡する(ブロック3124)。第2のUIビュー704は次いでサーバー経路をクライアントモデル116に譲渡し、サーバー経路上のアイテムを調べるためにクライアントモデル116にリクエストを発行する(ブロック3126)。クライアントモデル116は次いで、第1のリアルオブジェクト708cを参照する第3のマスク804(図8)および第3のオブジェクトハンドル806(図8)を作成する(ブロック3128)。第2のUIビュー704は次いで第3のオブジェクトハンドル804(図8)をクライアントモデル116から受信する(ブロック3130)。第2のUIビュー704は次いで第3の子クライアントオブジェクト804(図8)のインスタンスを作成する(ブロック3132)。第3の子クライアントオブジェクト804は次いで第3のオブジェクトハンドル804を参照する(ブロック3134)。次いで通信経路が、図8に示されるように、第2のUIビュー704と第1のリアルオブジェクト708c間に形成される。第1のUIビュー702が第1のリアルオブジェクト708cへのアクセスを終了されると、クライアントモデルは、第1の子クライアントオブジェクト710b、第1のオブジェクトハンドル712bおよび第1のマスク714bは未使用または非アクティブであり、ガーベジコレクションの準備ができていることを示す(ブロック3136)。
【0102】
クライアントモデル116はいずれのクライアントオブジェクト、ハンドルおよびマスクがガーベジコレクションの準備ができているかを示した後、あるいはブロック3122において第1のUIビュー702が第1の子クライアントオブジェクト710bを第2のUIビュー704に譲渡した後、クライアントモデル116は第1のUIビュー704が第1のリアルオブジェクト708cに再度アクセスする必要があるか否かを判断する(ブロック3138)。第1のUIビュー704が第1のリアルオブジェクト708cに再度アクセスする必要がなければ、コントロールはブロック3104(図31A)に戻り、ブロック3104乃至3116と関連して上述された動作が、第1のUIビュー702と第1のリアルオブジェクト708c間に通信経路を確立するために反復される。この場合、図7に示されるように、第1のUIビュー702から第1のリアルオブジェクト708cまでの通信経路が、第1のクライアント子オブジェクト「O1」710eの第2のインスタンス、第1のオブジェクトハンドル「H1」712dの第2のインスタンス、および第1のマスク「M1」714dの第2のインスタンスを介して確立される。クライアントモデル116がブロック3138で、第1のUIビュー702が第1のリアルオブジェクト708cに再度アクセスする必要がないと判断すると、プロセスは終了される。
【0103】
図32は、クライアントオブジェクト(例えば、図9のクライアントオブジェクト902)において修正済みプロセスコントロールデータを更新するために使用可能な例示的方法である。まず、クライアントモデル116(図1)は更新通知イベントを取得する(ブロック3202)。クライアントモデル116は更新通知イベントをプロセスコントロールシステムデータベースサーバー112および/またはプロセスコントロールシステムデータベース110から受信する。例えば、格納プロセスコントロールデータがプロセスコントロールシステムデータベース110において修正された場合、プロセスコントロールシステムデータベース110は更新通知イベント(例えば、「UpdateNotification」イベント)と、不確かなリアルオブジェクトや不正リアルオブジェクト(例えば、データベース110で修正されたプロセスコントロールデータと関連した図2および7のリアルオブジェクト216の一部)のリストとを発行する。「UpdateNotification」イベントに応答して、クライアントモデル116は、「UpdateNotification」イベントを介してクライアントモデル110に提供された不確かなリアルオブジェクトに対応する1つ以上の不確かなクライアントオブジェクト(例えば、図2および7のクライアントオブジェクト212の一部)を識別する(ブロック3204)。クライアントモデル116は次いで、例えば「QuestionableUpdateNotification」イベントを介して不確かなクライアントオブジェクトのリストをクライアントアプリケーション(例えば、図1のクライアントアプリケーション108)に通信する(ブロック3206)。不確かなクライアントオブジェクトのリストは、不確かなクライアントオブジェクトのハンドルまたは識別を含むことがある。
【0104】
クライアントアプリケーション108は次いで、不確かなクライアントオブジェクトのリストをクライアントモデル116から受信し、不確かなクライアントオブジェクトのリストに基づいて不正ハッシュテーブル(例えば、図9の不正ハッシュテーブル916)にデータ投入する(ブロック3208)。例えば、クライアントアプリケーション108の事前生成パーシャルクラス(例えば、図2の事前生成パーシャルクラス206)は、「QuestionableUpdateNotification」イベントと、不確かなクライアントオブジェクトのリストとを監視するためのメソッドやイベントを含むことがある。クライアントアプリケーション108は次いで、可視UIビュー(例えば、図7のUIビュー702および704や図9のUIビュー118)に、更新通知イベントが受信されたことを通知する(ブロック3210)。例えば、ユーザに見えるプロセスコントロールデータを更新するのに必要な時間を短縮するために、クライアントアプリケーション108は、ユーザインタフェースディスプレイ上で最小化されるUIビューを通知しなくてもよい。可視UIビューは次いで、クライアントオブジェクトのいずれかが不正であるかを、不正ハッシュテーブル916に基づいて判断する(ブロック3212)。例えば、可視UIビューのクライアントオブジェクトは、ハンドルまたは識別のいずれかが不正ハッシュテーブル916における不確かなクライアントオブジェクトのハンドルまたは識別に対応しているか否かを判断する。
【0105】
可視UIビューは次いで、不正ハッシュテーブル916にある使用済みオブジェクトハンドルをフラグする(ブロック3214)。例えば、UIビュー118が依然としてクライアントオブジェクト902を使用しており、かつクライアントオブジェクト902に対応するオブジェクトハンドルが不正ハッシュテーブル916にある場合、オブジェクト902は不正ハッシュテーブル916におけるその対応するオブジェクトハンドルをフラグして、クライアントオブジェクト902が依然として「使用中」であり、従ってガーベジコレクションの準備ができていないことを示す。フラグされていない、不正ハッシュテーブル916における任意のオブジェクトハンドルは非アクティブまたは未使用、かつガーベジコレクション可能と指示または指定される。クライアントモデル116は次いで、全ての非アクティブまたは未使用の不正オブジェクトハンドルを除去またはアンロードする(ブロック3216)。例えば、クライアントモデル116は、不正ハッシュテーブル916に列挙されている全ての不正オブジェクトハンドルを除去またはアンロードするためにガーベジコレクションルーチンを使用してもよいが、これは使用済みまたはアクティブとしてフラグされない。
【0106】
クライアントモデル116は次いで、不正ハッシュテーブル916において使用済みとフラグされた不正オブジェクトハンドルに対する更新済みまたは修正済みプロセスコントロールデータを検索する(ブロック3218)。例えば、クライアントモデル116は「使用中」の不正オブジェクトのプロセスコントロールデータに対応する問い合わせを生成して、この問い合わせをプロセスコントロールシステムデータベースサーバー112に通信する(図1)。プロセスコントロールシステムデータサーバー112は次いで修正済みプロセスコントロールデータをプロセスコントロールシステムデータベース110から検索して、修正済みプロセスコントロールデータをクライアントモデル116に返送する。
【0107】
クライアントモデル116は次いで、更新済みまたは修正済みプロセスコントロールデータをサーバースキーマからクライアントスキーマに変換する(ブロック3220)。例えば、クライアントモデル116は、修正済みプロセスコントロールデータをサーバースキーマ(例えば、図14、17、20、23、26および29のサーバースキーマ階層のうちの1つ)からクライアントスキーマ(例えば、図14、17、20、23、26および29のクライアントスキーマ階層のうちの1つ)に変換またはマッピングするために図14、17、20、23、26および29と関連して上述されたマッピング構成のいずれかを使用してもよい。
【0108】
クライアントモデル116は次いで、不確かなクライアントオブジェクトに対して現在ロードされているいずれのプロセスコントロールデータ値が受信された修正済みプロセスコントロールデータと異なるかを判断して、異なる修正済みプロセスコントロールデータ(例えば、実際に変更したデータ)のみをクライアントアプリケーションに通信する(ブロック3222)。このように、クライアントモデル116は、修正済みとは示されているが、クライアントアプリケーション108に現在ロードされているプロセスコントロールデータからは変化していないプロセスコントロールデータをクライアントアプリケーション108に通信する必要はない。クライアントアプリケーション108は次いで、使用済みの不正オブジェクトハンドルと関連し、かつ修正済みプロセスコントロールデータがクライアントモデル116から受信されたクライアントオブジェクトに更新通知を発行する(ブロック3224)。例えば、クライアントアプリケーション108は更新通知をクライアントオブジェクト902(図9)に発行して、PROPERTY_C要素910c、PROPERTY_D要素910dおよびPROPERTY_E要素910e(図9)のいずれかと関連した修正済みプロセスコントロールデータを譲渡してもよい。各クライアントオブジェクトは次いでそのデータ(ブロック3226)を、受信した修正済みプロセスコントロールデータに基づいて更新する。例えば、クライアントオブジェクト902は受信した修正済みプロセスコントロールデータに基づいて要素910c、910dおよび910eの値を更新してもよい。
【0109】
図33は、ここに説明された例示的装置、方法および製品を実施するために使用可能な例示的プロセッサシステムのブロック図である。図33に示されるように、プロセッサシステム3310は、相互接続バス3314に接続されたプロセッサ3312を含んでいる。プロセッサ3312はレジスタセットつまりレジスタスペース3316を含んでおり、これは図33では全体的にオンチップとして示されているが、代替的に、全体的または部分的にオフチップで配置され、かつ専用電気接続および/または相互接続バス3314を介してプロセッサ3312に直接接続可能である。プロセッサ3312は任意の適切なプロセッサ、処理ユニットまたはマイクロプロセッサであってもよい。図33には示されていないが、システム3310はマルチプロセッサシステムであってもよいため、プロセッサ3312と同一または類似であり、かつ相互接続バス3314に通信可能に接続されている1つ以上の追加プロセッサを含んでもよい。
【0110】
図33のプロセッサ3312はチップセット3318に接続されており、これはメモリコントローラ3320および入力/出力(I/O)コントローラ3322を含んでいる。既知であるように、チップセットは通常、チップセット3318に接続された1つ以上のプロセッサによってアクセス可能であるか、これによって使用されるI/Oおよびメモリ管理機能ならびに複数の汎用および/または特別用途レジスタ、タイマーなどを提供する。メモリコントローラ3320は、プロセッサ3312(または、複数のプロセッサがあれば複数のプロセッサ)がシステムメモリ3324および大容量記憶メモリ3325にアクセスできるようにする機能を実行する。
【0111】
システムメモリ3324は、例えば静的ランダムアクセスメモリ(SRAM)、動的ランダムアクセスメモリ(DRAM)、フラッシュメモリ、リードオンリーメモリ(ROM)などの所望のタイプの揮発性および/または不揮発性メモリを含んでもよい。大容量記憶メモリ3325は、ハードディスクドライブ、光学ドライブ、テープ記憶デバイスなどを含む所望のタイプの大容量記憶メモリを含んでもよい。
【0112】
I/Oコントローラ3322は、プロセッサ3312がI/Oバス3332を介して周辺入力/出力(I/O)デバイス3326および3328とネットワークインタフェース3330と通信できるようにする機能を実行する。I/Oデバイス3326および3328は、例えば、キーボード、ビデオディスプレイまたはモニタ、マウスなどの所望のタイプのI/Oデバイスであってもよい。ネットワークインタフェース3330は例えば、プロセッサシステム3310が別のプロセッサシステムと通信できるようにするイーサネット(登録商標)デバイス、非同期転送モード(ATM)デバイス、802.11デバイス、DSLモデム、ケーブルモデム、セルラーモデルなどであってもよい。
【0113】
メモリコントローラ3320およびI/Oコントローラ3322はチップセット3318内の個別機能ブロックとして図33に示されているが、これらのブロックによって実行される機能は単一の半導体回路内に一体化されてもよく、あるいは2つ以上の個別集積回路を使用して実施されてもよい。
【0114】
特定の方法、装置および製品がここでは説明されてきたが、本特許の範囲はこれらに制限されない。反対に、本特許は、文字通りまたは均等論に従った添付の請求項の範囲内の全ての方法、装置および製品をカバーしている。
【技術分野】
【0001】
(関連出願)
本出願は、2004年5月4日に出願され、かつ本出願が全体を参照してここに組み込んでいる、「プロセス制御システムを表現し、監視し、対話するためのグラフィックユーザインタフェース(Graphical User Interface for Representing,Monitoring,and Interacting with Process Control Systems)」と題された米国仮特許出願第60,567,980号の利点の一般的な分野の出願であり、また優先権のためにこれを特許請求する。本出願はまた、2003年7月21日に出願され、かつ2004年8月5日に米国公開第2004/0153804号として公開された、「グラフィックディスプレイ要素、プロセスモジュールおよび制御モジュールのプロセスプラントにおける統合(Integration of Graphic Display Elements,Process Modules and Control Modules in Process Plants)」と題された米国特許出願第10/625,481号に関連しており、これはまた2002年10月22日に出願され、かつ2004年4月22日に米国公開第2004/0075689号として公開された、「プロセスプラントにおけるスマートプロセスモジュールおよびオブジェクト(Smart Process Modules and Objects in Process Plants)」と題された米国特許出願第10/278,469号の一部継続出願であり、これらの開示全体は全体を参照してここに組み込まれている。本出願はまた、2003年2月18日に出願され、かつ2004年10月7日に米国公開第2004/0199925号として公開された、「プロセスプラント構成システムにおけるモジュールクラスオブジェクト(Module Class Objects in a Process Plant Configuration System)」と題された米国特許出願第10/368,151号に関連しており、この開示全体は全体を参照してここに組み込まれている。本出願はまた以下の特許出願に関連しており、これらは本出願と同日に国際(PCT)出願として出願されており、また本出願はこれらを、全体を参照してここに組み込んでいる:「プロセス環境における関連グラフィックディスプレイ(Associated Graphic Displays in a Process Environment)」(弁理士整理番号 No.06005/4111);「プロセス制御システムのためのユーザにより構成可能なアラームおよびアラームトレンド分析(User Configurable Alarms and Alarm Trending for Process
Control Systems)」(弁理士整理番号 No.06005/41112);「プロセスプラントにおけるプロセスモジュール及びエキスパートシステムの統合(Integration of Process Modules and Expert Systems in Process Plants)」(弁理士整理番号 No.06005/41113);「統合された環境におけるカスタマイズされたプロセスグラフィックディスプレイ層を有するプロセスプラントユーザインタフェースシステム(A Process Plant User Interface System Having Customized Process Graphic Display Layers in an Integrated Environment)」(弁理士整理番号 No.06005/41114);「プロセス環境におけるスクリプト化されたグラフィック(Scripted Graphics in a Process Environment)」(弁理士整理番号 No.06005/41115);「プロセス構成および制御環境へのグラフィック統合(Graphics Integration into a Process Configuration and Control Environment)」(弁理士整理番号 No.06005/41116);「プロセス環境における複数の視覚化のあるグラフィック要素(Graphic Element with Multiple Visualizations in a Process Environment)」(弁理士整理番号 No.06005/41117);「プロセスプラントにおいてグラフィックディスプレイ要素およびプロセスモジュールを構成するためのシステム(System for Configuring Graphic Display Elements and Process Modules in Process Plants)」(弁理士整理番号 No.06005/41118);「統合プロセス制御システムイシステムインタフェースのためのグラフィックディスプレイ構成フレームワーク(Graphic Display Configuration Framework for Unified Process Control System Interface)」(弁理士整理番号 No.06005/41124);「プロセスプラントユーザインタフェースにおけるマークアップ言語をベースにした動的プロセスグラフィックス(Markup Language−Based,Dynamic Process Graphics in a Process Plant User Interface)」(弁理士整理番号 No.06005/41127);「プロセス制御データを修正するための方法および装置(Methods and Apparatus for Modifying Process Control Data)」(弁理士整理番号 Nos.06005/591622および20040/59−11622);「プロセス制御システムのための統合グラフィックユーザインタフェース(Integrated Graphical Runtime Interface for Process Control Systems)」(弁理士整理番号 Nos.06005/591628および20040/59−11628);および「プロセス制御システムのためのサービス指向型アーキテクチャ(Service−Hyphen Oriented Architecture for
Process Control Systems)」(弁理士整理番号 Nos.06005/591629および20040/59−11629)。
【0002】
本開示は概してプロセッサコントロールシステムに、より具体的には、プロセスコントロールデータにアクセスするためのプロセスコントロール装置および方法に関する。
【背景技術】
【0003】
化学薬品、石油および他のプロセスで使用されるようなプロセスコントロールシステムは一般的に、アナログ、デジタルあるいは結合アナログ/デジタルバスを介して少なくとも1つのホストつまりオペレータワークステーションおよび1つ以上のフィールドデバイスに通信可能に接続された1つ以上の中央プロセスコントローラを含んでいる。フィールドデバイスとは、例えばバルブ、バルブポジショナー、スイッチおよび送信機(例えば、温度、圧力および流量センサー)であり、バルブの開閉およびプロセスパラメータの測定などのプロセス内の機能を実行する。プロセスコントローラは、フィールドデバイスによってなされたプロセス測定および/またはフィールドデバイスに関する情報を示す信号を受信し、この情報を使用してコントロールルーチンを実施し、そして、プロセスの動作をコントロールするためにバスや通信回線でフィールドデバイスに送られるコントロール信号を生成する。フィールドデバイスおよびコントローラからの情報は、プロセスの現在の状態を閲覧したり、プロセスの動作を修正したりするなどのプロセスに対してオペレータが所望の機能を実行できるように、オペレータワークステーションによって実行される1つ以上のアプリケーションに対して使用可能とすることができる。
【発明の概要】
【発明が解決しようとする課題】
【0004】
設計段階およびシステム動作時に、システムエンジニアはしばしば、プロセスコントロールデータを閲覧、監視、追加、更新、修正などをするためにプロセスコントロールデータにアクセスしなければならない。例えば、プロセスコントロールシステムは通常、システムエンジニアや、オペレータやユーザなどが、特定のプロセス(例えば、特定の化学薬品生産プロセス)に対してプロセスコントロールシステム内の各フィールドデバイスが機能する様子を定義できる構成アプリケーションを使用して構成される。フィールドデバイスが特定のプロセスに追加される場合や、プロセスが変更される度に、エンジニアは新たなコントロールプログラムや新たな構成データを生成したり、既存のコントロールプログラムを更新または修正したりすることがある。各プロセスは多数のフィールドデバイス、コントローラおよび/またはコントロールデバイスを使用することがあるため、コントロールプログラムは多量のプロセスコントロールデータを含んでいることがある。ユーザが、動作中にプロセスを監視できたり、かつ/またはコントロールプログラムを閲覧、作成および/または更新できたりするようなエディタやプロセスコントロールデータビューアーを提供する既知のプロセスコントロールシステムもある。既知のプロセスコントロールデータエディタおよびビューアーは通常、プロセスコントロールソフトウェア開発者によって提供された機能にユーザを制約する。例えば、プロセスコントロールソフトウェア開発者は、所望のタイプのユーザインタフェースコントロールおよびデータアクセス機能性を判断するために、その顧客を調査することがある。プロセスコントロールソフトウェアがリリースされる時点で顧客に使用可能なユーザインタフェースおよびデータアクセス機能は、これらの機能を内蔵するという、顧客による一般的な要求を受ける。
【0005】
顧客ごとにプロセスコントロールソフトウェアをカスタマイズすることはしばしば、比較的高価かつ複雑なプロジェクトである。具体的には、顧客が特定またはカスタムユーザインタフェースやデータアクセス機能を要する場合、顧客は、オリジナルのプロセスコントロールソフトウェアソースコードを理解および修正する必要がある。この場合、プロセスコントロールソフトウェア販売者は、そのソフトウェアのカスタマイズを望む各顧客に多数のリソース(例えば、ソフトウェア開発者、システムエンジニア、ソースコードなど)を提供しなければならない。加えて、ソフトウェア販売者は顧客に、ソースコードを顧客に配信する前に、ソースコードライセンスや開発ライセンスを購入させる必要がある場合がある。リソースおよび/またはライセンスはしばしば、ソフトウェア販売者および/または顧客にとってかなり高価である。また、特定のソースコードをリリースすることによって、そのソースコードが企業秘密、機密あるいは同業他社にとって好都合なコード化技術を含んでいる場合には、販売者はリスクを被ることがある。
【課題を解決するための手段】
【0006】
プロセスコントロールシステムデータにアクセスするための例示的方法およびシステムがここに開示されている。一例によると、プロセスコントロールデータアクセス方法は、クライアントオブジェクトをロードするステップと、データアクセスリクエストを前記クライアントオブジェクトから、サーバーと通信するように構成されているリアルオブジェクトに通信するステップとを伴う。そして前記リアルオブジェクトは前記データアクセスリクエストに基づいて前記サーバーに問い合わせを通信して、前記問い合わせに応答して前記サーバーからプロセスコントロールデータを取得する。そして前記プロセスコントロールデータは、サーバースキーマと関連した第1のデータレイアウトから、クライアントスキーマと関連した第2のデータレイアウトにマッピングされる。前記マッピング済みプロセスコントロールデータは次いで、アプリケーションに通信される。
【0007】
別の例によると、別のプロセスコントロールデータアクセス方法は、ユーザインタフェースリクエストに応答して第1および第2のクライアントオブジェクトをロードするステップを伴う。前記第1および第2のクライアントオブジェクトは、クライアントスキーマに基づいて組織化されたプロセスコントロールデータへのアクセスと関連している。次いで、前記第1および第2のクライアントオブジェクトと関連したリアルオブジェクトがロードされる。前記第1および第2のリアルオブジェクトは、サーバースキーマに基づいて組織化されたプロセスコントロールデータを取得するように構成されている。そして前記プロセスコントロールデータは、前記サーバースキーマ組織から前記クライアントスキーマ組織にマッピングされて、前記第1および第2のクライアントオブジェクトに通信される。そして前記プロセスコントロールデータは、前記第1のクライアントオブジェクトと関連した第1のユーザインタフェースと、前記第2のクライアントオブジェクトと関連した第2のユーザインタフェースとによって取得される。
【0008】
別の例によると、プロセスコントロールデータアクセスシステムは、事前生成パーシャル(部分)クラスおよびユーザ生成パーシャルクラスを含んでいる。前記事前生成パーシャルクラスは、プロセスコントロールデータへのアクセスと関連した事前生成クラス要素を含んでいる。前記ユーザ生成パーシャルクラスは前記事前生成パーシャルクラスと関連しており、また、前記事前生成クラス要素を介してプロセスコントロールデータにアクセス可能なユーザ定義のクラス要素を含んでいる。前記システムはまた、前記事前生成パーシャルクラスおよび前記ユーザ生成パーシャルクラスに基づいてクライアントオブジェクトのインスタンスを作成するように構成されたユーザインタフェースを含んでいる。前記ユーザインタフェースはまた、前記事前生成およびユーザ定義クラス要素に基づいてプロセスコントロールデータにアクセスするように構成されている。前記システムはまた、オブジェクトハンドルと、前記クライアントオブジェクトと関連したリアルオブジェクトとをロードし、前記オブジェクトハンドルおよび前記リアルオブジェクトを介して前記クライアントオブジェクトとサーバー間でプロセスコントロールデータを通信するように構成されたクライアントモデルを含んでいる。
【図面の簡単な説明】
【0009】
【図1】プロセスコントロールシステムマシーンに通信可能に接続されたクライアントマシーンを含む例示的クライアント/サーバーアーキテクチャを示すブロック図である。
【図2】図1のクライアントモデルおよびユーザインタフェースの詳細な機能ブロック図である。
【図3】継承によってユーザ生成パーシャルクラスと事前生成パーシャルクラス間でコードを共有するために使用可能な例示的コード構成を示している。
【図4】継承によってユーザ生成パーシャルクラスと事前生成パーシャルクラス間でコードを共有するために使用可能な例示的コード構成を示している。
【図5】集約によってユーザ生成パーシャルクラスと事前生成パーシャルクラス間でコードを共有するために使用可能な別の例示的コード構成を示している。
【図6】事前生成パーシャルクラスと、2つのクライアントスキーマを有するクライアントアプリケーションのリアルオブジェクトとの関係を示している。
【図7】ランタイム段階で図1および2のユーザインタフェースとクライアントモデル間で形成されるデータ経路を示している。
【図8】ランタイム段階で図1および2のユーザインタフェースとクライアントモデル間で形成されるデータ経路を示している。
【図9】図1および2のユーザインタフェースとクライアントオブジェクトとのデータ結合を示すブロック図である。
【図10】例示的サーバースキーマを定義する例示的サーバースキーマXMLソースコードを示している。
【図11】クライアントモデルによって提出された問い合わせに応答して、プロセスコントロールシステムデータベースサーバーによってクライアントモデルに返送された例示的XMLソースコードである。
【図12】プロセスコントロールデータをサーバースキーマからクライアントスキーマにマッピングするために使用可能な例示的クライアントスキーマXMLソースコードを示している。
【図13】オブジェクトと、これに含まれたロールとを表す例示的ユーザインタフェースを示している。
【図14】図13の例示的ユーザインタフェースを生成するための、クライアントスキーマとサーバースキーマ間のマッピング構成を示す詳細なブロック図である。
【図15】図14のサーバースキーマ階層からクライアントスキーマ階層へのマッピングを生成するために使用可能な例示的XMLソースコードを示している。
【図16】1つの機能ブロックおよび2つの属性を含む複合機能ブロック‘PT_COMP’を表す例示的ユーザインタフェースを示している。
【図17】図16の例示的ユーザインタフェースを生成するために単一のクライアントロールを複数のサーバーロールにマッピングする、サーバースキーマ階層とクライアントスキーマ階層間のマッピング構成を示す詳細なブロック図である。
【図18】図17のサーバースキーマ階層からクライアントスキーマ階層へのマッピングを生成するために使用可能な例示的XMLソースコードを示している。
【図19】特定のプラントエリア内の複数の異なるコントロールデバイスを表す例示的ユーザインタフェースを示している。
【図20】図19の例示的ユーザインタフェースを生成するために複数のクライアントロールを単一のサーバーロールにマッピングする、サーバースキーマ階層とクライアントスキーマ階層間のマッピング構成を示す詳細なブロック図である。
【図21】図20のサーバースキーマ階層からクライアントスキーマ階層へのロールマッピングを生成するために使用可能な例示的XMLソースコードを示している。
【図22】コントロールデバイスと関連したアイテムを選択的に表示するために使用可能な例示的ユーザインタフェースを示している。
【図23】図22の例示的ユーザインタフェースを生成するためにクライアントオブジェクトを1サブセットのサーバーオブジェクトにマッピングする、サーバースキーマ階層とクライアントスキーマ階層間のマッピング構成を示す詳細なブロック図である。
【図24】図23のサーバースキーマ階層からクライアントスキーマ階層へのオブジェクトマッピングを生成するために使用可能な例示的XMLソースコードを示している。
【図25】追加アイテムがそのコントロールデバイスのサーバースキーマの一部でなくても追加アイテムをコントロールデバイスビューに挿入するために使用可能な例示的ユーザインタフェースを示している。
【図26】クライアントオブジェクトをクライアントスキーマ階層に挿入する、サーバースキーマ階層とクライアントスキーマ階層間のマッピング構成を示す詳細なブロック図である。
【図27】クライアントオブジェクトを図26のクライアントスキーマ階層に挿入するための例示的XMLソースコードを示している。
【図28】リアルタイムプロセスコントロールデータがコマンドを介して取得可能なアイテムを表示するために使用可能な例示的ユーザインタフェースを示している。
【図29】クライアントロールをコマンドとして実施可能なマッピング構成を示す詳細なブロック図である。
【図30】図29のクライアントスキーマ階層においてクライアントロールをコマンドとして実施するために使用可能な例示的XMLソースコードを示している。
【図31A】ランタイム段階でクライアントオブジェクトを介するリアルオブジェクトへのクライアントアプリケーションアクセスを提供するために使用可能な例示的方法のフロー図を示している。
【図31B】ランタイム段階でクライアントオブジェクトを介するリアルオブジェクトへのクライアントアプリケーションアクセスを提供するために使用可能な例示的方法のフロー図を示している。
【図32】クライアントオブジェクトにおいて修正済みプロセスコントロールデータを更新するために使用可能な例示的方法である。
【図33】ここに説明された例示的装置、方法および製品を実施するために使用可能な例示的プロセッサシステムのブロック図である。
【発明を実施するための形態】
【0010】
以下の開示は、とりわけハードウェアで実行されるコンポーネント、ソフトウェアおよび/またはファームウェアを含むシステムを例証するが、このようなシステムは例示に過ぎず、制限的であるとみなされるべきではない点に注目すべきである。例えば、これらのハードウェア、ソフトウェアおよびファームウェアコンポーネントのいずれかまたは全部は、ハードウェアのみ、ソフトウェアのみ、あるいはハードウェアおよびソフトウェアの組み合わせで具現化可能であることが想定されている。従って、以下の開示は例示的システムについて説明しているが、当業者は、提供されている実施例がこのようなシステムを実施するための唯一の方法ではないことを容易に理解するであろう。
【0011】
プロセスコントロールデータにアクセスし、かつこれと相互作用するための所定の特徴および機能にエンドユーザを制限する機知のシステムとは反対に、ここに説明された例示的装置、方法および製品は、クライアントアプリケーションがプロセスコントロールデータにアクセスし、これを表し、かつこれを表示する方法をエンドユーザがカスタマイズできるようにするカスタマイズ可能なデータアクセスツールを使用して、プロセスコントロールシステムサーバーにおけるプロセスコントロールデータにアクセスするために使用可能である。プロセスコントロールデータは通常、コントロールシステム、プロセス、材料フローおよび組成、コントロールシステム機器、フィールドデバイス、およびシステム全体を操作、維持および診断するために使用される動作ディスプレイに関連するデータや情報を含んでいる。プロセスコントロールシステムサーバーは通常プロセスプラントに配置され、プロセスコントロールデータを記憶するために使用される。プロセスコントロールシステムを自動化、管理および構成するために、企業は通常、プロセスコントロールシステムサーバー上で実行し、かつユーザ定義プロセスコントロールデータに基づいてプロセスコントロールシステムと関連した各動作を管理するプロセスコントロールシステムソフトウェア(つまり、プロセスコントロールシステムアプリケーション)を使用する。ユーザ(例えば、システムエンジニア)は、コマンド、リクエストおよびプロセスコントロールデータをプロセスコントロールシステムアプリケーションと送受信するクライアントアプリケーションを使用してプロセスコントロールデータと相互作用する(例えば、管理する、閲覧する、修正する、構成するなど)場合がある。クライアントアプリケーションは通常、プロセスコントロールシステムサーバーも接続されているネットワークに接続された任意のワークステーション(つまり、任意のコンピュータ端末)にインストールされ、またここで実行することが可能である。
【0012】
エンドユーザ、またはプロセスコンピュータソフトウェアをエンドユーザに提供するソフトウェア販売者のいずれによって開発されても、従来のクライアントアプリケーションはしばしば、プロセスコンピュータシステムアプリケーションと同時またはこれと関連して開発される。従来のクライアントアプリケーションは通常、ユーザがプロセスコンピュータデータへのアクセス、この表示および閲覧を制限される固定セットのデータアクセスおよびデータ取扱い機能を提供する。データアクセスおよびデータ取扱い機能のカスタマイズは、プロセスコントロールシステムアプリケーションソフトウェアの修正、クライアントアプリケーションソフトウェアの修正、ソフトウェアのすべての再コンパイル、およびソフトウェアのすべての再テストを必要とするため、しばしば複雑かつ高価である。
【0013】
ここに説明された例示的方法、装置および製品は、クライアントアプリケーション(例えば、図1のクライアントアプリケーション108)がプロセスコントロールシステムサーバー(例えば、プロセスコントロールシステムデータベースサーバー112)とデータを送受信できるカスタマイズ可能なクライアント/サーバーデータインタフェースを提供するクライアントモデルデータインタフェース層(例えば、図1のクライアントモデル116)を提供する。クライアントモデル116によってクライアントアプリケーションは、プロセスコントロールシステムサーバー112から抜粋されて、異なるプロセスコントロールシステムサーバー間で携帯可能になる。クライアントモデル116は、クライアントアプリケーション108がプロセスコントロールシステムデータベースサーバー112と通信し、かつこれと相互作用し、またプロセスコントロールデータをこれと送受信できるようにするコアデータアクセスまたはデータ送受信機能性と、1ベースセットのデータアクセスおよびデータ取扱い機能とを含んでいる。クライアントモデル116は、複数のオブジェクトコードファイル、ヘッダーファイル、ソースコードファイルなどのソフトウェア開発キット(SDK)においてエンドユーザ(例えば、顧客、システムエンジニアなど)に提供されることがある。そしてエンドユーザは、プロセスコントロールシステムサーバーと相互作用してプロセスコントロールデータを閲覧、管理および構成するために、クライアントアプリケーションSDKに基づいてクライアントアプリケーションを開発してもよい。エンドユーザは常時データアクセス機能を修正または追加し、プロセスコントロールシステムアプリケーションソフトウェアを修正する必要なく、その度にクライアントアプリケーションソフトウェアのみを再コンパイルしてもよい。
【0014】
より詳細に後述されるように、クライアントモデル116はオブジェクト指向プログラミング言語と関連したパーシャル(部分)クラスを使用して実施される。パーシャルクラスは、クラスタイプを、2つ以上のファイルに存在可能な2つ以上のセクションに分割(split)、分離(divide)またはパーティショニングするために使用される。このように、プログラマーは機能性、使用頻度あるいは他の基準に基づいて長いコードをより小さなセクションやパーティションコードに分割(split)または分散(break up)してもよい。後述されるように、パーシャルクラスは、ユーザ生成コードから事前生成コードを分離するために使用可能である。対応するパーシャルクラスはオブジェクトコードとソースコードの組み合わせで存在することもある。事前生成コードは、プロセスコントロールシステムアプリケーションソフトウェアの初期開発時に開発され、かつ上記のように例えばクライアントアプリケーションSDKを介してエンドユーザに配信されるクライアントモデルオブジェクトコードを生成するようにコンパイルされるクライアントモデル116に対する事前生成パーシャルクラスを備えている。ユーザ生成コードは、事前生成パーシャルクラスに対応し、かつ後に開発された(例えば、アフターマーケット)クライアントアプリケーションのカスタム機能性を定義するために使用されるユーザ生成パーシャルクラスを含んでいる。
【0015】
エンドユーザは、クライアントモデルオブジェクトコードに提供された機能のみを使用することによってクライアントアプリケーションソフトウェアを開発する場合があり、またはエンドユーザは後に、追加のユーザ定義データアクセス機能を定義して、エンドユーザが所望するプロセスコントロールデータにアクセスし、これを表すかつ/またはこれを表示するためにソースコードを開発することもある。ユーザ定義データアクセス機能は、クライアントモデルオブジェクトコードの対応する事前生成パーシャルクラスで定義された任意のリソース、要素または機能を使用してもよいユーザ生成パーシャルクラスで開発される。コンパイル中、コンパイラはソフトウェアプロジェクトの各ファイル(例えば、各オブジェクトファイルおよびソースファイル)をスキャンし、対応するパーシャルクラスを架橋して、そのクラスの各要素、機能または態様を定義する完成(コンプリート)クラスを形成する。実行中、クライアントアプリケーション108は結合された対応するパーシャルクラスを完成クラスとして認識することによって、ユーザ定義データアクセス機能が元々クライアントモデルオブジェクトコードの一部であるように、ユーザ定義データアクセス機能をクライアントモデル116と共働させることができる。
【0016】
クライアントモデル116によってユーザはまた、プロセスコントロールデータレイアウトや、プロセスコントロールデータがプロセスコントロールシステムデータベース(例えば、図1のプロセスコントロールシステムデータベース110)から検索される場合にこれが呈示される様子を定義することができる。プロセスコントロールシステムデータベース110は、テーブル、コラム、レコード、エントリ、フィールドなどを使用してプロセスコントロールデータを組織化する。プロセスコントロールシステムデータベースサーバー112がプロセスコントロールデータをプロセスコントロールシステムデータベースから検索する場合、サーバーはサーバースキーマに従ってプロセスコントロールデータを組織化する。しかしながら、クライアントアプリケーションはしばしばプロセスコントロールデータが組織化され、呈示され、あるいは別個にレイアウトされることを要するため、クライアントアプリケーションはユーザに定義されたようにプロセスコントロールデータを表示することができる。クライアントアプリケーションを介するデータへのアクセスおよびこの表示を容易にするために、エンドユーザは、そのクライアントアプリケーションの設計段階でクライアントアプリケーションごとにクライアントスキーマを定義してもよい。動作時に、クライアントモデル116はサーバースキーマ組織や配列においてプロセスコントロールシステムデータベースサーバー110からプロセスコントロールデータを取得し、また図13乃至30と関連して後述されるようなユーザ定義クライアントスキーマに従って、プロセスコントロールデータをサーバースキーマ組織からクライアントスキーマ組織または配列に再配列することがある。
【0017】
次に図1を詳細に参照すると、クライアント/サーバーアーキテクチャ100はクライアントマシーン102とプロセスコントロールシステムマシーン104とを含む。クライアントマシーン102は概して、プロセスコントロールシステムと関連したプロセスコントロールデータを閲覧、修正および管理するために使用される。クライアントマシーン102は、コンピュータ、ワークステーション端末、ポータブルコンピュータ、ラップトップコンピュータ、携帯情報端末(PDA)あるいは任意の適切なプロセッサシステムを使用して実施可能である。プロセスコントロールシステムマシーン104はプロセスコントロールデータを記憶し、プロセスコントロールデータに基づいてプロセスコントロールシステムを自動化および管理する。プロセスコントロールシステムマシーン104は、プロセスコントロールシステムにおけるコントロールデバイスに通信可能に接続されたワークステーション、メインフレーム、サーバーあるいは任意の適切なプロセッサシステム(例えば、図33の例示的プロセッサシステム3310)であってもよい。プロセスコントロールシステムマシーン104はプロセスコントロールデータをクライアントマシーン102(あるいはプロセスコントロールシステムマシーン104と通信するように構成された他のクライアントマシーン)に提供するように構成されており、また、クライアントマシーン102および/または対応するプロセスコントロールシステムにおけるコントロールデバイスによってリクエストされたようにプロセスコントロールデータを修正、追加または更新するように構成されている。
【0018】
クライアントマシーン102は、通信ネットワーク106を介してプロセスコントロールシステムマシーン104に通信可能に接続されてもよい。通信ネットワーク106は例えば、ローカルエリアネットワーク(LAN)やワイドエリアネットワーク(WAN)であってもよく、また、適切な通信技術や、例えばイーサネット(登録商標)、IEEE802.11、Bluetooth(登録商標)、任意のデジタルまたはアナログモバイル通信システム(つまり、セルラー通信システム)、デジタル加入者回線(DSL)、任意のブロードバンド通信システムなどの技術の組み合わせを使用して実施されてもよい。
【0019】
クライアントマシーン102は、ユーザがプロセスコントロールデータを検索、閲覧、管理および記憶することができるようにするクライアントアプリケーション108を含んでいる。ユーザは、クライアントアプリケーション108を実施し、かつクライアントアプリケーション108を後に使用して格納プロセスコントロールデータおよび/またはリアルタイムコントロールデータにアクセスするクライアントマシーン102に、マシーンアクセス可能な命令をインストールしてもよい。格納プロセスコントロールデータは、コントロールデバイス構成パラメータ、定期的に測定されたプロセスコントロールデータ値、履歴測定値、あるいは後に検索するために記憶されることがある他の値と関連した情報を含むことがある。一般的に、リアルタイムプロセスコントロールデータは、記憶されていないが、リクエスト時に生成または引き出されるプロセスコントロールデータを含んでいる。例えば、リアルタイムプロセスコントロールデータは、クライアントアプリケーション108からのデータリクエストに応答して測定、取得、生成または算出されるプロセスコントロールデータ値を含むことがある。
【0020】
格納プロセスコントロールデータはプロセスコントロールシステムマシーン104から取得されることがある。プロセスコントロールシステムマシーン104は、プロセスコントロールデータ(例えば、格納プロセスコントロールデータ)を記憶するように構成されたプロセスコントロールシステムデータベース110と、プロセスコントロールシステムデータベース110に通信可能に接続されたプロセスコントロールシステムデータベースサーバー112とを含んでいる。プロセスコントロールシステムデータベースサーバー112は、プロセスコントロールシステムデータベース110とクライアントアプリケーション108間で格納プロセスコントロールデータを通信するように構成されている。
【0021】
クライアントマシーン102は、リアルタイムプロセスコントロールデータを提供するためのランタイムサーバー114を含んでいる。ランタイムサーバー114はネットワーク106に通信可能に接続され、かつデータサーバー112からおよび/またはプロセスコントロールシステムにおけるコントロールデバイスから間接的にプロセスコントロールデータを取得するように構成されてもよい。例えば、ランタイムサーバー114は、プロセスコントロールデータをデータベースサーバー112からリクエストし、かつ、例えば数学操作や他の操作を検索されたプロセスコントロールデータに実行することによって、1つ以上の格納プロセスコントロールデータに基づいてリアルタイムプロセスコントロールデータを引き出す場合がある。クライアントアプリケーション108がコントロールデバイスと関連したリアルタイム測定プロセスコントロールデータ値(例えば、温度値、圧力値、流量値など)をリクエストする場合、ランタイムサーバー114は、リアルタイム測定プロセスコントロールデータ値を検索するために、プロセスコントロールシステムマシーン104および/またはネットワーク106を介してコントロールデバイスと通信してもよい。
【0022】
クライアントアプリケーション108はクライアントモデル116とユーザインタフェース118とを含んでいる。クライアントモデル116はプロセスコントロールシステムマシーン104およびランタイムサーバー110に通信可能に接続され、これによってクライアントアプリケーション108は、プロセスコントロールシステムマシーン104およびランタイムサーバー110と通信して、格納プロセスコントロールデータおよびリアルタイムプロセスコントロールデータにアクセスすることができる。具体的には、クライアントモデル116は、格納およびリアルタイムプロセスコントロールデータにアクセスし、かつこれを送受信するためにクライアントアプリケーション108によって使用可能なデータベースアクセス機能を提供する。データアクセス機能は1ベースセットのデータベースアクセス機能を含んでおり、またユーザ定義データベースアクセス機能を含むこともある。図2と関連してより詳細に後述されるように、この1ベースセットのデータアクセス機能は事前生成パーシャルクラスを介して提供され、ユーザ定義データベースアクセス機能は、事前生成パーシャルクラスに対応するユーザ生成パーシャルクラスを介して提供される。
【0023】
ユーザインタフェース118は、プロセスコントロールデータにアクセス、閲覧、管理、修正、更新などをするために使用可能な複数のグラフィックベースおよび/またはテキストベースのユーザインタフェーススクリーンを生成するように構成されている。ユーザは設計段階および/またはランタイム時に、プロセスコントロールデータを表示するためにユーザインタフェース118によって使用されるディスプレイレイアウトやディスプレイ配列を指定してもよい。例証として、ユーザインタフェース118は、ツリービューインタフェース120およびコンテンツビューインタフェース122を含むものとして示されている。ツリービューインタフェース120は、展開および折りたたみ部分を有する階層ツリー構造においてプロセスコントロールデータを表示して、選択されたコントロールデバイスの詳細を閲覧するために使用可能である。コンテンツビューインタフェース122は、プロセスコントロールシステム図にオーバーレイされたプロセスコントロールデータを表示するために使用可能である。例えば、コンテンツビューインタフェース122は、プロセスコントロールシステム図において相互に通信可能に接続されている複数のコントロールデバイスを表示し、また対応するコントロールデバイスに隣接するか、この上にあるプロセスコントロールデータを表示してもよい。このように、ユーザは、プロセスコントロールシステム全体に関するプロセスコントロールデータを閲覧可能である。
【0024】
クライアントモデル116はスキーマ、問い合わせおよびコマンドに基づいて、プロセスコントロールデータをユーザインタフェース118と、ランタイムサーバー114と、プロセスコントロールシステムデータベースサーバー114との間で通信する。スキーマは、プロセスコントロールデータが呈示される様子に関する特定のデータ組織、配列またはデータレイアウトを定義する。例えば、クライアントスキーマは、ユーザインタフェース118に対してプロセスコントロールデータを呈示するために使用される特定のデータ配列やデータレイアウトを定義する。ユーザインタフェース118は複数のクライアントスキーマと関連している場合があり、これらの各々は、異なるプロセスコントロールデータを配列、組織化または呈示するために使用される。例えば、あるクライアントスキーマはポンプコントロールデバイスデータを呈示するために使用可能であるのに対して、別のクライアントスキーマは複数のコントロールデバイスに共通のプロパティ値を呈示するために使用可能であり、さらに別のクライアントスキーマは、特定のプラントエリアにおけるコントロールデバイスと関連したプロセスコントロールデータを呈示するために使用可能である。
【0025】
サーバースキームは、プロセスコントロールシステムデータベースサーバー112およびランタイムサーバー114に対してプロセスコントロールデータを呈示または配列するために使用される特定のデータ配列やデータレイアウトを定義する。プロセスコントロールシステムデータベースサーバー112のサーバースキーマはランタイムサーバー114のサーバースキーマとは異なってもよい。しかしながら、一般的に、サーバースキーマは通常、クライアントスキーマとは異なってデータを呈示、組織化または配列するために使用される。例えば、サーバースキーマはプロセスコントロールシステムと関連したプロセスコントロールデータの全てを呈示するために使用可能であるのに対して、クライアントスキーマはそのプロセスコントロールデータの指定の部分やセグメントのみを呈示するために使用可能である。
【0026】
クライアントモデル116は、図13乃至30と関連して詳細に後述されるように、サーバースキーマとクライアントスキーマ間でプロセスコントロールデータを変換またはマッピングするように構成されている。例えば、ユーザインタフェース118からのデータリクエスト問い合わせに応答して、クライアントモデル116はプロセスコントロールデータをサーバースキーマからクライアントスキーマに変換またはマッピングして、ユーザインタフェース118によって提供されたクライアントスキーマに基づいてプロセスコントロールデータを配列する。クライアントモデル116はまた、ユーザインタフェース118からの更新問い合わせに応答して修正済みまたは更新済みプロセスコントロールデータをクライアントスキーマからサーバースキーマに変換またはマッピングしてもよい。
【0027】
ユーザインタフェース118および/またはクライアントモデル116によって生成された問い合わせはデータリクエスト問い合わせおよび更新問い合わせを含むことがある。データリクエスト問い合わせは特定のプロセスコントロールデータを検索するために使用され、更新問い合わせは、例えばプロセスコントロールシステムデータベース110におけるプロセスコントロールデータを修正または更新するために使用される。ユーザインタフェース118からの問い合わせの受信に応答して、クライアントモデル110は、問い合わせが格納またはリアルタイムのプロセスコントロールデータと関連しているか否かを判断して、それに応じて問い合わせをプロセスコントロールシステムデータベースサーバー112またはランタイムサーバー114に通信する。問い合わせが格納およびリアルタイムプロセスコントロールデータの両方と関連した部分を含んでいる場合、クライアントモデル116はリアルタイムデータ問い合わせおよび格納データ問い合わせに問い合わせを解析または分割し、問い合わせをサーバー112および114にそれぞれ通信する。
【0028】
コマンドは、サーバー112および114にプロセスコントロールデータを検索、修正および/または作成させるマシーンアクセス可能な命令を含むことがある。例えば、問い合わせおよび更新問い合わせに基づいた、プロセスコントロールシステムデータベース110におけるプロセスコントロールデータへのアクセス(例えば、検索、修正または作成)と関連した命令を含むコマンドもある。加えて、ランタイムサーバー114にコントロールデバイスからプロセスコントロールデータを測定または取得する、格納プロセスコントロールデータに基づいてランタイムサーバー114にプロセスコントロールデータ値(例えば、平均値、フィルタリング値など)を引き出す等の命令を含むコマンドもある。
【0029】
図2は、図1のクライアントモデル116およびユーザインタフェース118の詳細な機能ブロック図である。具体的には、図2は、ユーザインタフェース118と、クライアントモデル116とサーバー112および114との間でプロセスコントロールデータを送受信するランタイム段階でパーシャルクラスが使用される様子を示している。ユーザインタフェース118は異なるプロセスコントロールデータに対処するために複数のクライアントスキーマ(例えば、図14、17、20、23、26および29の複数のクライアントスキーマ階層)を使用する。例証として、ユーザインタフェース118は、第1のクライアントスキーマオブジェクトモデル202aと、第2のクライアントスキーマオブジェクトモデル202bと、第3のクライアントスキーマオブジェクトモデル202cとを含むものとして示されており、これらの各々は第1、第2および第3のクライアントスキーマのそれぞれ1つと関連している。ユーザインタフェース118はまた、ユーザインタフェース(UI)ビュー(例えば、図1のツリービュー120およびコンテンツビュー122)にプロセスコントロールデータを表示し、かつプロセスコントロールデータの検索、表示および/または修正と関連したユーザ入力を取得するように構成されているユーザI/Oコントロール204を含んでいる。ユーザI/Oコントロール204は例えば、テキストボックス、ボタン、リスト、データフィールドなどを含んでいてもよく、また、例えばMicrosoft(登録商標)Avalonコントロールフレームワークを含む適切なコントロールフレームワークを使用して実施されてもよい。
【0030】
クライアントスキーマオブジェクトモデル202a乃至cの各々は、第1、第2および第3のクライアントスキーマのそれぞれ1つ関連しているプロセスコントロールデータへのアクセスおよびこの取扱いを可能にする1つ以上の事前生成パーシャルクラス206および1つ以上のユーザ生成パーシャルクラス208を含んでいる。具体的には、事前生成パーシャルクラス206は事前定義クラス要素を含んでいるのに対して、ユーザ生成パーシャルクラス108はユーザ定義クラス要素を含んでいる。クラス要素は当業界で既知のデータメンバー、アクセス機構、メソッドまたは機能、実施および/または他のクラス要素を含んでもよく、これらの各々はプライベート、被保護またはパブリックと指定されることがある。事前生成パーシャルクラス206のクラス要素は、図6と関連して詳細に後述されるように、リアルオブジェクト(例えば、後述されるリアルオブジェクト216)を介してプロセスコントロールシステムデータベースサーバー112(図1および2)と通信するために使用可能である。ユーザ生成パーシャルクラス208のクラス要素は、事前生成パーシャルクラス206のうちの対応するパーシャルクラスのクラス要素と関連したデータにアクセスするように構成可能であり、また事前生成パーシャルクラス206におけるクラス要素を介してプロセスコントロールシステムデータベースサーバー112と通信するように構成可能である。図2に示されるように、ユーザ生成パーシャルクラス108はユーザ定義機能210を含んでいる。パーシャルクラス206および208の対応するものによって形成された各完成クラスは異なるタイプのプロセスコントロールデータと関連していることがある。例えば、例示的クラスは特定のタイプのコントロールデバイスと関連したデータアクセスおよび取扱い機能を含む場合があるのに対して、別の例示的クラスは特定のプロセスプラントエリアや特定のプロセスコントロールサブシステムと関連したデータアクセスおよび取扱い機能を含む場合がある。さらに別の例示的クラスは、プロセスコントロールデータの数学的および/または統計的処理(例えば、平均化、フィルタリングなど)と関連した機能を含む場合がある。
【0031】
開発段階で、クライアントスキーマごとに、エンドユーザが、事前生成パーシャルクラス206の各々を作成するために1つ以上の事前生成パーシャルクラスを選択してもよい。また開発段階で、エンドユーザはユーザ定義機能210を開発し、またユーザ定義機能210と関連した1つ以上のユーザ生成パーシャルクラスを選択することによってクライアントスキーマオブジェクトモデル202a乃至cの各々のユーザ生成パーシャルクラス208を作成してもよい。
【0032】
第1のクライアントスキーマオブジェクトモデル202aに対して選択されたパーシャルクラス206および208は、第2のクライアントスキーマオブジェクトモデル202bに対して選択されたパーシャルクラス206および208と異なってもよい。例えば、第1のクライアントスキーマオブジェクトモデル202aに対するパーシャルクラス206および208は第1のプロセスプラントエリアのコントロールデバイスと関連したプロセスコントロールデータにアクセスするために使用可能であるのに対して、第2のクライアントオブジェクトモデル202bに対するパーシャルクラス206および208は、第2のプロセスプラントエリアのコントロールデバイスと関連したプロセスコントロールデータにアクセスするために使用可能である。
【0033】
実行段階で、パーシャルクラス206および208は、クライアントスキーマオブジェクトモデル202a乃至cの各々に対して複数のクライアントオブジェクト212を生成するために使用可能である。クライアントオブジェクト212はクライアントアプリケーション(例えば、図1のクライアントアプリケーション108)のクライアントスキーマのデータ配列やデータレイアウトに従うか、これに対応している。クライアントオブジェクト212の各々はパーシャルクラス206および208のうちの1つによって定義されたクラスタイプである。例えばクラスタイプポンプの2つのオブジェクトなど、同一クラスタイプのクライアントオブジェクト212のうちの2つ以上が生成されてもよく、各々はプロセスコントロールシステムにおける異なる物理的ポンプコントロールデバイスに対するものである。加えて、クライアントオブジェクト212のうちの2つ以上が、同一の物理的コントロールデバイスと関連したプロセスコントロールデータにアクセスするために生成可能である。クライアントオブジェクト212のうちの2つ以上による、同一の物理的コントロールデバイスのプロセスコントロールデータへのアクセスは、下記のようにリアルオブジェクト(例えば、リアルオブジェクト216)を介してクライアントモデル116において仲裁または取り扱われる。クライアントオブジェクト212は、図9と関連して詳細に後述されるように、リアルタイムおよび格納プロセスコントロールデータにユーザI/Oコントロール204をデータ結合させるために使用可能である。ユーザI/Oコントロール204をプロセスコントロールデータにデータ結合させることによって、クライアントオブジェクト212は、ユーザI/Oコントロールを介して提供されるユーザ入力に応答してデータリクエスト問い合わせおよび/またはデータ更新問い合わせを生成することができる。上記のように、問い合わせは、格納またはリアルタイムのプロセスコントロールデータを検索または修正するために使用される。クライアントオブジェクト212はまた、例えばプロセスコントロールシステムデータベース210における少なくとも一部のプロセスコントロールデータ値が変化したか修正されているかを示すデータ更新イベントに応答して、ユーザI/Oコントロール204を介して表示されるプロセスコントロールデータ値を更新することができる。
【0034】
クライアントモデル116は第1の複数のオブジェクトハンドル214aと、第2の複数のオブジェクトハンドル214bと、第3の複数のオブジェクトハンドル214cとを含んでいる。図2に示されるように、複数のオブジェクトハンドル214a乃至cの各々はクライアントスキーマオブジェクトモデル202a乃至cのそれぞれ1つと関連している。クライアントモデル116はまた複数のリアルオブジェクト216を含んでいる。リアルオブジェクト216は、図1のプロセスコントロールシステムデータベースサーバー112および/またはランタイムサーバー114と関連したサーバースキーマのデータ配列やデータレイアウトに従うか対応している。オブジェクトハンドル214a乃至cは、メモリにおいてリアルオブジェクト216のロケーションに対応するアドレス参照またはベース参照である。ランタイム時に、リアルオブジェクト216のうちの1つが作成されメモリヒープに記憶される場合、ハンドル214a乃至cのうちの1つにおける対応するハンドルもまた作成されて、メモリスタックに記憶される。クライアントオブジェクト212の各々はリアルオブジェクト216のうちの1つと関連しており、データアクセスリクエスト、問い合わせ、更新問い合わせおよび/またはプロセスコントロールデータをそのリアルオブジェクトにリアルオブジェクトのオブジェクトハンドル(例えば、オブジェクトハンドル214a乃至cのうちの1つ)を介して通信することによって、リアルオブジェクト216のうちの1つを介してプロセスコントロールデータにアクセスする。リアルオブジェクト216は、クライアントオブジェクト212から受信された問い合わせや更新問い合わせに応答して、問い合わせおよび/または更新問い合わせをプロセスコントロールシステムデータベースサーバー112に通信する。リアルオブジェクト216はプロセスコントロールシステムデータベースサーバー112から、サーバースキーマ(例えば、図14、17、20、23、26および29のサーバースキーマ階層のうちの1つ)に基づいて組織化または配列されたプロセスコントロールデータを取得する。そしてクライアントモデル116は、図13乃至29と関連して後述されるように、プロセスコントロールデータをサーバースキーマ組織からクライアントスキーマ組織にマッピング、再配列または変換する。
【0035】
クライアントオブジェクト212のうちの2つ以上がリアルオブジェクト216のうちの特定の1つに対応している場合もある。例えば、クライアントオブジェクト212のうちの2つ以上が、同一のプロセスコントロールデータにアクセスするために同一のクラスタイプから構築される場合、リアルオブジェクト216のうちの1つがクライアントオブジェクト212のうちの2つ以上に対して作成される。このように、リアルオブジェクト216のうちの1つは、同一のプロセスコントロールデータに対してなされるデータアクセスリクエストをクライアントオブジェクト212のうちの2つ以上によって仲裁可能である。
【0036】
図3および4は、継承によってユーザ生成および事前生成パーシャルクラス間でコードを共有するために使用可能な例示的コード構成を示している。図3は、「MODULE_GEN.CS」と称される事前生成ファイル302と、「MODULE_MANUAL.CS」と称される第1のユーザ生成ファイル304と、「MODULE_BASE.CS」と称される第2のユーザ生成ファイル306とを示している。事前生成ファイル302は、名前空間(ネームスペース)「DELTAV(登録商標).CONFIG.EXPLORER.HIERARCHY」308においてパーシャルクラスを定義し、これはタイプ「MODULE」310の事前生成パブリックパーシャルクラス(つまり、事前生成パブリックパーシャルクラス「MODULE」310)を含む。パブリックパーシャルクラス「MODULE」310は、図1および2のプロセスコントロールシステムデータベースサーバー112と通信するように構成されたクラス要素を含むことがある。パブリックパーシャルクラス「MODULE」310は図2の事前生成パーシャルクラス206の一部であってもよい。
【0037】
第1のユーザ生成ファイル304は名前空間「DELTAV(登録商標).CONFIG.EXPLORER」312と、名前空間「DELTAV(登録商標).CONFIG.EXPLORER.HIERARCHY」310におけるパーシャルクラス定義とを使用する。名前空間「DELTAV(登録商標).CONFIG.EXPLORER.HIERARCHY」310において、事前生成パブリックパーシャルクラス「MODULE」310はユーザ生成クラス「MODULE_BASE」314のクラス要素を継承している。このように、クラス「MODULE」310および「MODULE_BASE」314は相互のクラス要素を共有したり、これにアクセスしたりすることが可能である。例えば、クラス「MODULE_BASE」314に定義されているクラス要素は、クラス「MODULE」310に定義されているクラス要素を介してプロセスコントロールシステムデータベースサーバー112と通信可能である。クラス「MODULE_BASE」314は下記の第2のユーザ生成ファイル306に定義されており、また図2のユーザ生成パーシャルクラス208の一部であってもよい。
【0038】
第2のユーザ生成ファイル306は、クライアントアプリケーション(例えば、図1のクライアントアプリケーション108)を構成して、事前生成パーシャルクラス「MODULE」310とユーザ生成パーシャルクラス「MODULE_BASE」314間でソースコードを共有するために使用可能なソースコードを含んでいる。第2のユーザ生成ファイル306において、名前空間「DELTAV(登録商標).CONFIG.EXPLORER」312はユーザ生成パーシャルクラス「MODULE_BASE」314のアプリケーション固有のメソッドの実施を含んでいる。ユーザ生成「MODULE_BASE」314のアプリケーション固有のメソッドは、第1のユーザ生成ファイル304におけるユーザ生成パーシャルクラス「MODULE」310によって継承される。
【0039】
図4は、実行段階で2つの異なる名前空間の間で図3のソースコードを共有するために使用される例示的ランタイム構成を示している。図4は、名前空間「DELTAV(登録商標).CONFIG.EXPLORER」312のインスタンスと、名前空間「DELTAV(登録商標).CONFIG.EXPLORER.HIERARCHY」308のインスタンスと、名前空間「DELTAV(登録商標).CONFIG.EXPLORER.CONTENT」402のインスタンスとを示している。名前空間308または402のいずれかにロードまたはインスタンス化されたパーシャルクラスタイプ「MODULE」310のクライアントオブジェクトは、事前生成ファイル302またはユーザ生成ファイル306のいずれかに定義されたソースコードやクラス要素を使用可能である。
【0040】
名前空間「DELTAV(登録商標).CONFIG.EXPLORER」312のインスタンスは、ユーザ生成パーシャルクラス「MODULE_BASE」314に対して第2のユーザ生成ファイル306(図3)で定義されたクラス要素を含んでいる。名前空間「DELTAV(登録商標).CONFIG.EXPLORER.HIERARCHY」308のインスタンスは、クラスタイプ「MODULE」(例えば、パーシャルクラスタイプ「MODULE」310)の第1の「MODULE」クライアントオブジェクト404を含んでいる。名前空間「DELTAV(登録商標).CONFIG.EXPLORER.CONTENT」402のインスタンスは第2の「MODULE」クライアントオブジェクト406を含んでおり、これもまたクラスタイプ「MODULE」(例えば、パーシャルクラスタイプ「MODULE」310)である。クライアントオブジェクト404および406の各々はユーザ生成部分410(例えば、ユーザ生成クラス要素)と事前生成部分412(例えば、事前生成クラス要素)とを含んでいる。ユーザ生成部分410は第2のユーザ生成ファイル304のユーザ生成クラス「MODULE_BASE」310で定義されたクラス要素を含んでいる。事前生成部分412は、事前生成ファイル302のユーザ生成パーシャルタイプクラス「MODULE」310で定義されたクラス要素を含んでいる。
【0041】
図5は、集約によってユーザ生成パーシャルクラスおよび事前生成パーシャルクラス間でコードを共有するために使用可能な別の例示的コード構成を示している。事前生成パーシャルクラスコード502は、事前生成パーシャルクラス「MODULE」310を含有する名前空間「DELTAV(登録商標).CONFIG.EXPLORER.HIERARCHY」308を含んでいる。ユーザ生成パーシャルクラスコード504は、ユーザ生成クラス「EXPLORER_MODULE」506を含有する名前空間「DELTAV(登録商標).CONFIG.EXPLOERE.HIERARCHY」312を含んでいる。事前生成パーシャルクラス「MODULE」310とユーザ生成クラス「EXPLORER_MODULE」506間でソースコードやクラス要素を共有するために、ユーザ生成クラス「EXPLORER_MODULE」506は、事前生成パーシャルクラスコード502で定義された事前生成パーシャルクラス「MODULE」310のクラス要素の全てによって使用可能なタイプ「MODULE」508(例えば、パーシャルクラスタイプ「MODULE」310)のクライアントオブジェクトを定義する。
【0042】
図6は、2つのクライアントスキーマを有するクライアントアプリケーション(例えば、図1のクライアントアプリケーション108)の事前生成パーシャルクラスとリアルオブジェクトの関係を示している。第1のクライアントスキーマ602は第1の複数の事前生成パーシャルクラス604を使用し、第2のクライアントスキーマ606は第2の複数の事前生成パーシャルクラス608を使用する。事前生成パーシャルクラス604および608は図2の事前生成パーシャルクラス206と実質的に類似または同一である。クライアントアプリケーション108は2つのクライアントスキーマ602および606を使用して、異なるニーズや異なるプロセスコントロールデータに対処する。例えば、第1のクライアントスキーマ602は特定のプラントエリアでのモジュールと関連しており、第2のクライアントスキーマ606は特定のサブシステムのアラームと関連している。
【0043】
クライアントモデル116は第1のクライアントスキーマ602と関連した第1の複数のオブジェクトハンドル610と、第2のクライアントスキーマ606と関連した第2の複数のオブジェクトハンドル612とを含んでいる。オブジェクトハンドル610および612は図2のオブジェクトハンドル214a乃至cと実質的に類似または同一である。クライアントモデル116はクライアントスキーマ602および606の各々について個別グループまたはツリーのオブジェクトハンドルを構築または生成する。事前生成パーシャルクラス604および608の各々における事前生成パーシャルクラスの階層関係は対応するオブジェクトハンドル610および612の階層関係と同一である。
【0044】
クライアントモデル116はまた、図2のリアルオブジェクト216と実質的に類似または同一の複数のリアルオブジェクト614を含んでいる。クライアントアプリケーション108は、事前生成パーシャルクラス604および608と関連したクライアントオブジェクト(例えば、図2のクライアントオブジェクト212および図7の710a乃至d)を介してリアルオブジェクト614と通信する。具体的には、パーシャルクラス604および608と関連したクライアントオブジェクトはオブジェクトハンドル610および612を介してリアルオブジェクト614にアクセスする。
【0045】
クライアントアプリケーション108がデータアクセスリクエスト(例えば、問い合わせ)を第1のクライアントスキーマ602からクライアントモデル116に通信する場合、クライアントモデル116は、データアクセスリクエストが関連している特定のプロセスコントロールデータ(例えば、特定のプラントエリア)と関連したリアルオブジェクト(例えば、リアルオブジェクト614の一部)をロードする。クライアントアプリケーション108がデータアクセスリクエスト(例えば問い合わせ)を第2のクライアントスキーマ606から通信する場合、クライアントモデル116は、図6に示されるようにデータアクセスリクエストが関連している特定のサブシステムのアラーム(ALARM)と関連するリアルオブジェクト614の全アラーム属性またはプロパティをロードする。
【0046】
クライアントアプリケーション108は、リアルオブジェクト614の寿命や、リアルオブジェクト614がロードされる期間をコントロールする。例えば、クライアントアプリケーション108が、リアルオブジェクト614の一部がロードされたままであることを示す場合、これらのオブジェクトはアンロード不可能である。通常、リアルオブジェクト614などのオブジェクトは、クライアントアプリケーションがガーベジコレクション可能またはアンロード可能と指定されているリアルオブジェクトを定期的に検出するガーベジコレクションルーチンによってアンロードされる。例えば、クライアントアプリケーション118が,リアルオブジェクト614の一部がアンロードされるべきであると判断すると、これらのオブジェクトはガーベジコレクション可能と指定される。この場合、後続のガーベジコレクションスキャンは、ガーベジコレクション可能とフラグされるか、現在使用中とフラグされないリアルオブジェクト614のアンロードをもたらす。
【0047】
図7および8は、ランタイム段階で図1および2のユーザインタフェース108とクライアントモデル116間に形成されたデータ経路を示している。とりわけ、図7は、第1のユーザインタフェース(UI)ビュー702および第2のUIビュー704に対するクライアントオブジェクト212とリアルオブジェクト216間のデータ経路を示している。図7において、UIビュー702および704は共通クライアントスキーマを共有する。図8は、クライアントオブジェクト212とリアルオブジェクト216間のデータ経路を示しており、ここで第1のUIビュー702および第2のUIビュー704は各々独自のクライアントスキーマを有している。UIビュー702および704は図1のツリービュー120および/またはコンテンツビュー122と実質的に類似または同一であってもよい。
【0048】
図7および8に示されるように、第1および第2のUIビュー702および704はクライアントアプリケーションオブジェクト706に属しているか、これと関連している。UIビュー702および704の各々はリアルオブジェクト216のうちの1つ以上を介してプロセスコントロールデータにアクセスする。リアルオブジェクト216は、「ModuleLibrary」リアルロール(ROLE)708bをロードする親リアルオブジェクト「R」708aを有するものとして示されている。例えば「ModuleLibrary」リアルロール708bなどのロールは、そのロールと関連した複数のプロセスコントロールデータへのアクセスを明示または提供する。例えば、ロールは、特定のプラントエリアや特定のタイプのコントロールデバイスと関連したプロセスコントロールデータへのアクセスを提供することがある。「ModuleLibrary」リアルロール708bは、UIビュー702および704からのプロセスコントロールデータリクエストに応答して第1のリアルオブジェクト「R1」708cおよび第2のリアルオブジェクト「R2」708dをロードする。例えば、第1のリアルオブジェクト708cは第1のコントロールデバイスと関連することがあるのに対して、第2のリアルオブジェクト708dは第2のコントロールデバイスと関連することがある。
【0049】
リアルオブジェクト216を介してプロセスコントロールデータにアクセスするために、UIビュー702および704はクライアントオブジェクト212をロードしてリアルオブジェクト216と通信する。例えば、図7に示されるように、「ModuleLibrary」リアルロール708bと関連したプロセスコントロールデータにアクセスするために、第1のUIビュー702は親クライアントオブジェクト「O」710aをロードする。親クライアントオブジェクト「O」710aは、親クライアントオブジェクト710aがゼロ番目のマスク(MASK)「M」714aを介して親リアルオブジェクト「R」708aにアクセスするために使用する親オブジェクトハンドル「H」712aを参照する。例えばゼロ番目のマスク「M」714aなどのマスクは、プロセスコントロールデータをサーバースキーマのデータレイアウトまたは配列からクライアントスキーマのデータレイアウトまたは配列に変換またはマッピングするように構成される。例えば、親リアルオブジェクト708aは、複数のプロセスコントロールデータライブラリーへのアクセスを提供するライブラリーオブジェクトであってもよい。親クライアントオブジェクト710aが、親リアルオブジェクト708aと関連した1サブセットの複数のライブラリーオブジェクト(例えば、「ModuleLibrary」リアルロール708b)のみにアクセスするように構成されている場合、マスク714aはライブラリーアクセスリクエストを親クライアントオブジェクト710aから、親リアルオブジェクト708aにおける対応するライブラリーに変換またはマッピングする。例えば、マスクは、クライアントスキーマに対応し、かつリアルオブジェクトにおけるプロセスコントロールデータを指示または参照するレイアウトで配列された複数のポインターを含むことがある。
【0050】
データ経路は複数のアクティブおよび非アクティブデータ経路として示されている。実線は、アクティブであるか、特定のオブジェクト、ハンドルまたはマスクにアクセスするためにUIビュー702および704のうちの一方によって使用中であるデータ経路を表している。点線は、非アクティブであるか、UIビュー702および704のいずれによってももはや使用されていないデータ経路を表している。例えば、まず第1のUIビュー702は親クライアントオブジェクト「O」710aに、第1の子クライアントオブジェクト「O1」710bのインスタンス作成またはロードをさせる。第1のUIビュー702は第1の子クライアントオブジェクト710bを使用して、第1のリアルオブジェクト708cを介してプロセスコントロールデータにアクセスすることができる。第1のUIビュー702は第1のデータ経路を介して第1の子クライアントオブジェクト710bにアクセスし、データ経路は最初、アクティブつまり「使用中」のデータ経路を示す実線(図示せず)である。第1の子クライアントオブジェクト710bは第1のハンドル「H1」712bを参照して、第1のマスク「M1」714bを介して第1のリアルオブジェクト708cにアクセスする。
【0051】
加えて、第1および第2のUIビュー702および704は共通のクライアントスキーマを共有しているため、第2のUIビュー704はまた第1の子クライアントオブジェクト710bを介して第1のリアルオブジェクト708cにアクセス可能である。図7に示されるように、第2のUIビュー704は第2のデータ経路718を介して第1の子クライアントオブジェクト710bにアクセスする。第1のUIビュー702が第1の子クライアントオブジェクト710bの使用を終了すると、第1のデータ経路716は図7に点線で示されるように非アクティブになる。クライアントアプリケーション706の他のUIビューが第1の子クライアントオブジェクト710bへのアクセスを必要としない場合、クライアントオブジェクト710bはガーベジコレクション可能(例えば、アンロード可能)となる。しかしながら、第2のUIビュー704は第1の子クライアントオブジェクト710bへのアクセスを継続するため、データ経路718は図7に実線で示されるようにアクティブのままであり、クライアントオブジェクト710bはガーベジコレクション可能とはならない。第1の子クライアントオブジェクト710bから第1のリアルオブジェクト708cまでのデータ経路720、722および724もまた実線で示されるようにアクティブのままである。
【0052】
クライアントオブジェクトがクライアントアプリケーションのユーザインタフェースによってもはや使用されない場合、そのクライアントオブジェクトと関連したデータ経路の全ては非アクティブとなり、クライアントオブジェクトと対応するハンドルおよびマスクとはガーベジコレクションの準備ができているとフラグされ、クライアントモデル116によって後にアンロードされる。加えて、クライアントオブジェクトによってアクセスされていたリアルオブジェクトがもはや他のクライアントオブジェクトによってアクセスされない場合、リアルオブジェクトもまたガーベジコレクションの準備ができているとフラグされ、後にクライアントモデル116によってアンロードされる。例えば、第2のリアルオブジェクト708dにアクセスするために第1のUIビュー702に対して最初にインスタンスを作成またはロードされる第2の子クライアントオブジェクト「O2」710cは後に非アクティブとなり、これがUIビュー702および704のいずれによってももはや使用されない場合にガーベジコレクションの準備ができたとフラグされる。第2のオブジェクトハンドル712cおよび第2のマスク714cもまたガーベジコレクションの準備ができたとフラグされる。この場合、第2の子クライアントオブジェクト710cと関連したデータ経路の全てが図7に点線で示されるように非アクティブになる。クライアントモデル116は第2の子クライアントオブジェクト710cをアンロードするが、第2のオブジェクトハンドル712c、第2のマスク714cおよびクライアントモデル116は、別の子クライアントオブジェクトが第2のリアルオブジェクト708dを依然として使用していたり、これへのアクセスを必要としたりする場合には、第2のリアルオブジェクト708dをアンロードしなくてもよい。
【0053】
特定のクライアントオブジェクトのインスタンスがアンロードされた後、そのクライアントオブジェクトの別のインスタンスが、そのクライアントオブジェクトと関連したプロセスコントロールデータに後にアクセスするためにロードされてもよい。例えば、図7に示されるように、第2の子クライアントオブジェクト710cがアンロードされた(例えば、ガーベジコレクション時にアンロードされた)後に、第1のUIビュー702は親オブジェクト710aに、第2のリアルオブジェクト708dにアクセスするために第2の子クライアントオブジェクト「O2'」710dの第2のインスタンスをロードするか、
このインスタンス作成をさせてもよい。
【0054】
図8において、UIビュー702および704の各々はそれぞれの個別クライアントスキーマを有しており、それぞれの子クライアントオブジェクトを使用してリアルオブジェクト216にアクセスする。例えば、第2のUIビュー704は、第1のUIインタフェース702によって使用されるクライアントオブジェクトの全てとは別個のクライアントオブジェクト「O1」802のインスタンスを作成するか、これをロードする。図31Aおよび31Bと関連して後述される例示的方法は、図7および8に示されるUIビュー702および704とリアルオブジェクト216間の通信経路を形成するために使用可能である。
【0055】
図9は、図1および2のユーザインタフェース118と、図2のクライアントオブジェクト212のうちの1つと実質的に類似または同一のクライアントオブジェクト902とのデータ結合を示すブロック図である。図9のユーザインタフェース118は例証として、図2のユーザI/Oコントロール204と実質的に類似または同一の第1、第2および第3のユーザI/Oコントロール904a、904bおよび904cを有するものとして示されている。例えば、ユーザI/Oコントロール904a乃至cはテキストボックス、リストボックス、データフィールド、チェックボックスなどであってもよい。クライアントオブジェクト902はユーザ生成クラス要素部分906と事前生成クラス要素部分908とを含んでいる。ユーザ生成クラス要素部分906のクラス要素はユーザ生成パーシャルクラス(例えば、図2のユーザ生成パーシャルクラス208のうちの1つ)で定義され、事前生成クラス要素部分908のクラス要素は事前生成パーシャルクラス(例えば、図2の事前生成パーシャルクラス206のうちの1つ)で定義される。下記の複数のプロパティ(Property)910a乃至910eはユーザ生成および事前生成部分906および908のクラス要素に基づいて作成される。
【0056】
ユーザ生成部分906はPROPERTY_A要素910aおよびPROPERTY_B要素910bを含んでいる。事前生成部分908はPROPERTY_C要素910cと、PROPERTY_D要素910dとPROPERTY_E要素910eとを含んでいる。プロパティ要素910c乃至eは格納プロセスコントロールデータをプロセスコントロールシステムデータベース110から検索するために使用される。PROPERTY_A要素910aはPROPERTY_C要素910cと関連しており、PROPERTY_C要素910cに基づいて値を導き出す。クライアントオブジェクト902は、ユーザ生成要素(例えば、プロパティ要素910aおよび910b)と事前生成要素(例えば、プロパティ要素910c乃至e)間のマッピングまたは関連付けを含む、図9に示されたプライベートハッシュテーブル912を含んでいる。プライベートハッシュテーブル912は、オブジェクト912に対してプライベートであるタイプ「HashTable」の変数またはポインターを介して参照またはアクセスされてもよい。PROPERTY_A要素910aとPROPERTY_C要素910cの関連は、プライベートハッシュテーブル912の行914に示されている。
【0057】
ユーザI/Oコントロール904a乃至cはPROPERTY_A要素910a、PROPERTY_D要素910dおよびPROPERTY_E要素910eにそれぞれデータ結合される。このようなユーザI/Oコントロール904a乃至cのデータ結合によってクライアントアプリケーション108は、ユーザI/Oコントロール904a乃至c間のデータ値と要素910a、910dおよび910eのそれぞれのデータ値とを、これらのデータ値のいずれかが更新される度に通信する。例えば、図32と関連してより詳細に後述されるように、プロセスコントロールシステムデータベースサーバー112およびクライアントモデル116は、プロセスコントロールシステムデータベースサーバー110で修正されたプロセスコントロールデータに関する更新情報(例えば、不確かまたは不正オブジェクトの「UpdateNotification」イベントおよびリスト)を送受信可能である。このように、クライアントオブジェクト902は修正済みプロセスコントロールデータのいずれかが、格納プロセスコントロールデータにアクセスするために使用されるそのプロパティ要素910c乃至dのいずれかと関連しているかを判断し、もしそうならば、プロセスコントロールデータ値が修正されたプロパティ要素910c乃至dの各々の値を更新する。そしてクライアントオブジェクト902は、プロセスコントロールデータが修正されたプロパティ要素910c乃至dのいずれかと関連するか、またはこれを使用するユーザ生成プロパティ(例えば、プロパティ910aおよび910b)のいずれかの値を更新するためにプライベートハッシュテーブル912を使用してもよい。
【0058】
データ結合されたユーザI/Oコントロール904a乃至cの値を更新するために、クライアントモデル116は更新通知イベントを介して受信された更新情報を解析して、プロセスコントロールデータが修正されたユーザ生成または事前生成プロパティの「PropertyChanged」イベントを生成する。そして「PropertyChanged」イベントによってデータ結合されたユーザI/Oコントロール904a乃至cは、プロパティ910a乃至eのそれぞれ1つから修正済みプロセスコントロールデータを取得して、I/Oコントロール904a乃至cの値を更新する。
【0059】
クライアントオブジェクト902はまた、不正ハッシュテーブル916にデータ投入するために更新情報を使用可能である。不正ハッシュテーブル916はタイプ「HashTable」の変数またはポインターを介して参照され、オブジェクト902に対してはプライベートである。不正ハッシュテーブル916が、クライアントアプリケーション(例えば、図1のクライアントアプリケーション108)に対する不正または不確かなオブジェクトハンドルを記憶するために使用される。不正オブジェクトハンドルは更新情報において提供されて、一部のクライアントオブジェクトのプロセスコントロールデータがプロセスコントロールシステムデータベース110にあったことを示す。クライアントアプリケーション108は、不正オブジェクトハンドルによって不正ハッシュテーブル916にデータ投入するために「PopulateDirtyHashTable」機能を使用してもよい。例えば、「PopulateDirtyHashTable」機能はまず更新通知イベントから更新情報を受信し、次いで更新情報を解析して、不正ハンドルによって不正ハッシュテーブル916にデータ投入する。
【0060】
図10は、例示的サーバースキーマを定義する例示的サーバースキーマXMLソースコード1000を示している。サーバースキーマXMLソースコード1000はプロセスコントロールシステムデータベースサーバー112に記憶されており、プロセスコントロールシステムデータベースサーバー112によってプロセスコントロールデータを呈示するために使用される配列やレイアウトを定義する。サーバースキーマXMLソースコード1000はクラスタイプ定義および列挙定義を含有する。各クラスタイプは名前を有しており、多数のプロパティ、ロールおよびコマンドを含有する。各プロパティは名前およびデータタイプを有している。
【0061】
ロールはこれが含有している名前と(複数の)クラスタイプを有している。ロールのアイテムに対して含有されているベースタイプはロール要素において公表される。具体的なクラスサブタイプはロール要素内にネストされる。各含有クラスタイプは、コマンドを介してクライアントアプリケーション(例えば、図1のクライアントアプリケーション108)によって作成可能であるか否かにかかわらずマークされる。クラスタイプ定義はまた、例えばクライアントアプリケーション108から取得されたコマンドスクリプトを介して実行可能なコマンドを含有している。各コマンドは名前を有しており、そのパラメータおよびリターンタイプを定義する。
【0062】
図10に示されるように、サーバースキーマXMLソースコード1000は「ControlModule」(ライン1002)と称されるタイプを指定する。タイプ名「ControlModule」(ライン1002)はデータタイプストリング(ライン1004)の「detailDisplayName」と称されるプロパティと、宛先タイプ「BlockBase」(ライン1006)の「Blocks」と称されるロールとを含有する。ロール名「Blocks」(ライン1006)は、クライアントアプリケーション108(ライン1008)によって作成可能な「ModelUsage」と称されるタイプを含有する。タイプ名「ModelUsage」(ライン1008)は、クライアントアプリケーション108がタイプ「ModelUsage」のオブジェクトをロードまたはインスタンス作成をする場合に作成される複数の作成パラメータ(ライン1010および1012)を含有している。タイプ名「ControlModule」(ライン10002)はまたリターンタイプ無効(void)(ライン1014)の「renameTo」と称されるコマンドを含有している。コマンド名「renameTo」(ライン1014)はデータタイプストリング(ライン1016)の「newName」と称されるパラメータを含有している。
【0063】
サーバースキーマXMLソースコード1000はまた列挙定義を指定する。具体的には、サーバースキーマXMLソースコード1000は「DbeAttributeType」(ライン1018)と称されるイーナム(enum)を含んでいる。イーナム名「DbeAttributeType」(ライン1018)は、「Float」(ライン1020)と称されるエントリと、「FloatWithStatus」(ライン1022)と称されるエントリとを含む複数のアイテムを含有している。
【0064】
列挙はプロパティのデータタイプフィールドにおいて参照可能である。例えば、「Attribute」(ライン1024)と称されるタイプはデータタイプ「DbeAttributeType」(ライン1026)の「atrributeType」と称されるプロパティを含有しており、これはイーナム名「DbeAttributeType」(ライン1018)に対応している。
【0065】
図11は、クライアントモデル116によって提出された問い合わせに応答してプロセスコントロールシステムデータベースサーバー112によってクライアントモデル116に返送される例示的XMLソースコード1100である。具体的には、例示的XMLソースコード1100は問い合わせSite.PlantAreas[name=‘AREA_A’](index).Modules(name)に応答して返送される。図11に示されるように、XMLソースコード1100の結果は「PlantAreas」(ライン1102)と称されるModelRoleを含んでいる。ModelRole名「PlantAreas」(ライン1102)は「AREA_A」(ライン1104)と称されるPlantAreaを含有している。PlantArea名「AREA_A」(ライン1104)は、ゼロに等しく設定され、かつ「Models」(ライン1008)と称されるModelRoleであるプロパティインデックス(ライン1106)を含有している。ModelRole名「Modules」(ライン1108)は複数のモジュールと、各々の対応するプロパティとを含有している。例えば、ModelRole名「Modules」(ライン1108)は「EM1」(ライン1110)と称されるModuleInstanceBaseを含有しており、これは「EM1」(ライン1112)と称されるプロパティを含有している。
【0066】
図12は、プロセスコントロールデータをサーバースキーマ(例えば、図10のサーバースキーマXMLソースコード1000、または図14、17、20、23、26および29と関連して後述されるサーバースキーマ階層のうちの1つ)からクライアントスキーマ(例えば、図14、17、20、23、26および29と関連して後述されるクライアントスキーマ階層のうちの1つ)にマッピングするために使用可能な例示的クライアントスキーマXMLソースコード1200を示している。クライアントスキーマは、サーバースキーマがタイプを定義するのと実質的に類似の方法でプロパティ、ロールおよびコマンドのタイプを定義する。タイプ、プロパティおよびロールごとに、クライアントスキーマXMLソースコード(例えば、クライアントスキーマXMLソースコード1200)はサーバースキーマへのマッピングを示しているため、クライアントモデル116(図1)はクライアントスキーマとサーバースキーマ間でプロセスコントロールデータを再配列またはマッピング可能である。
【0067】
図12に示されるように、クライアントスキーマにおける「Module」と称されるタイプはサーバースキーマ(ライン1202)における「Module」と称されるタイプにマッピングされる。この場合、クライアントスキーマにおいて「Module」と称されるタイプもまた、サーバースキーマにおいて「Module」と称される。しかしながら、クライアントスキーマにおけるタイプ名は異なる名前を有するサーバースキーマにおけるタイプ名にマッピングされることがある。例えば、タイプ名「ModuleOne」はタイプ名「ModuleTwo」にマッピングされることがある。
【0068】
プロパティ要素(ライン1204)は1つ以上のプロパティ要素を含有することがある。各プロパティ要素はクライアントタイプの1つ以上のクライアントプロパティを定義し、各クライアントプロパティの名前と、クライアントプロパティが関連しているドメインと、サーバースキーマへのマッピングとを含有している。図12に示されるように、「desc」と称されるプロパティはデータベースドメインと関連しており(例えば、プロパティは、プロセスコントロールシステムデータベース110に記憶されている格納プロセスコントロールデータに対応している)、サーバースキーマ(ライン1206)において「description」と称されるプロパティにマッピングされる。「rtValue」と称されるプロパティはランタイムドメインと関連しており(例えば、プロパティは、図1のランタイムサーバー114から取得可能なリアルタイムプロセスコントロールデータに対応している)、サーバースキーマ(ライン1208)において「ST」と称されるプロパティにマッピングされる。プロパティマッピングは含有タイプに関連する。例えば、含有タイプが含有タイプ「Site」内にある「Module」である場合、MOD_Xの「desc」プロパティに対して生成された問い合わせはSite.Modules[name=‘MOD_X’](description)である。
【0069】
ロール要素(ライン1210)は1つ以上のロール要素を含有している。各ロール要素はクライアントタイプと関連したクライアントロールを定義し、クライアントロールの名前と、クライアントロールが関連しているドメインと、クライアントロールを得るために使用されるマッピングと、クライアントロールのオブジェクトのタイプとを含有している。図12に示されるように、ロール要素(ライン1210)は、データベースドメインと関連している「attributes」と称されるロールを含有しており(例えば、このロールは、プロセスコントロールシステムデータベース110に記憶されている格納プロセスコントロールデータに対応している)、サーバースキーマ(ライン1212)において「Attributes」と称されるロールにマッピングされる。ロールマッピングは含有タイプと関連している。例えば、含有タイプが、含有タイプ「Site」内に含有されている「Module」である場合、MOD_Xの「attributes」ロールに対して生成された問い合わせはSite.Modules[name=‘MOD_X’].Attributesである。
【0070】
図13乃至29は、サーバー(例えば、図1のプロセスコントロールシステムデータベースサーバー112やランタイムサーバー114)上にあるサーバースキーマからクライアントアプリケーション(例えば、図1のクライアントアプリケーション108)にあるクライアントスキーマにオブジェクトおよびロールなどのクラス要素をマッピングするために使用可能な例示的ユーザインタフェース、スキーママッピング構成および例示的XMLソースコードを示している。下記のマッピング構成は、プロセスコントロールシステムサーバーからクライアントアプリケーションを抜粋するためにクライアントモデル116によって実施されてもよい。クラス要素をサーバースキーマからクライアントスキーマにクライアントモデル116を介してマッピングすることによって、クライアントアプリケーションは、複数のサーバーに通信可能に接続され、またこれと共働するように構成可能である。さらに、下記のようなスキーママッピング構成を使用するクライアントモデル116に基づいたクライアントアプリケーションの開発によって、各々が特定のプロセスコントロールデータ要件を有している複数のアプリケーションが、プロセスコントロールシステムサーバーに通信可能に接続され、かつこれと共働することができる。
【0071】
図13は、オブジェクトと、これに含有されているロールとを表す例示的ユーザインタフェース1300を示している。例示的ユーザインタフェース1300はユニットモジュール「AREA_A」1302を1個の完成オブジェクトとして示している。しかしながら、プロセスコントロールシステムデータベース110(図1)において、ユニットモジュール「AREA_A」1302は2つの個別オブジェクトとして記憶されている。第1のオブジェクトはユニットモジュール「AREA_A」1302の挙動を含有しており、第2のオブジェクトは、他のモジュールがユニットモジュール「AREA_A」1302内にネスト可能な様子を定義するモジュールコンテナ挙動を含有している。
【0072】
図14は、図13の例示的ユーザインタフェース1300を生成するためのクライアントスキーマとサーバースキーマ間のマッピング構成1400を示す詳細なブロック図である。マッピング構成1400はクライアントモデル116(図1)によって実施可能である。具体的には、図14は、サーバースキーマ階層1402と、クライアントスキーマ階層1404と、クライアントモデル階層1406とを1対1のマッピング構成で示している。サーバースキーマ階層1402は、プロセスコントロールシステムデータベース110(図1)に記憶されているようなタイプ「Unit」1408のサーバーオブジェクトとタイプ「UnitModule」1410のサーバータイプとの区別を示している。クライアントモデル階層1406の階層は、サーバースキーマ階層1402の階層に従い、これと実質的に類似しており、あるいはこれと同一である。クライアントスキーマ階層1404は、クライアントモデル階層1406へのポインターを提供するマスク1410a、1410bおよび1410cを使用してサーバースキーマ階層1402から対象オブジェクトおよびロールのみを表す。
【0073】
サーバースキーマ階層1402は、タイプ「Units」1414のサーバーロールを含有するタイプ「AREA」1412のサーバーオブジェクトを含んでいる。サーバーロール「Units」1414は、タイプ「UnitModule」1418のサーバーロールとタイプ「Modules」1420のサーバーロールとを含有するサーバーオブジェクト「Unit」1408となる。サーバーロール「UnitModule」1418はサーバーオブジェクト「UnitModule」1410になり、サーバーロール「Modules」1420はタイプ「Module」1422のサーバーオブジェクトとなる。
【0074】
クライアントスキーマ階層1404は、タイプ「UnitModules」1426のクライアントロールを含有するタイプ「AREA」1424のクライアントオブジェクトを含んでいる。クライアントロール「UnitModules」1426は、タイプ「Modules」1430のクライアントロールを含有するタイプ「UnitModule」1428のクライアントオブジェクトになる。クライアントロール「Modules」1430はタイプ「Module」1432のクライアントオブジェクトになる。クライアントオブジェクトおよびクライアントロールは、図15と関連して後述されるようなクライアントモデル階層1406のリアルオブジェクトおよびロールとマスク1410a乃至cとを介してサーバーオブジェクトおよびサーバーロールにマッピングされる。
【0075】
クライアントモデル階層1406は、サーバースキーマ階層1402と実質的に類似または同一に配列された複数のリアルオブジェクトおよびリアルロールを含んでいる。クライアントモデル階層1406は、サーバーオブジェクト「AREA」1412に対応するタイプ「AREA_A」1434のリアルオブジェクトを含んでいる。リアルオブジェクト「AREA_A」1434は、サーバーロール「Units」1414に対応するタイプ「Units」1436のリアルロールを含有している。リアルロール「Units」1436は、サーバーオブジェクト「Unit」1408に対応するタイプ「ABC」1438のリアルオブジェクトになる。リアルオブジェクト「ABC」1438は、サーバーロール「UnitModule」1418に対応するタイプ「UnitModule」1440のリアルロールと、サーバーロール「Modules」1420に対応するタイプ「Module」1442のリアルロールとを含有する。リアルロール「UnitModule」1440は、サーバーオブジェクト「UnitModule」1410に対応するリアルオブジェクト「ABC」1444になる。ロール「Module」1442は、サーバーオブジェクト「Module」1422に対応するリアルオブジェクト「SSS」1446になる。
【0076】
図15は、図14のサーバースキーマ階層1402からクライアントスキーマ階層1404へのマッピングを生成するために使用可能な例示的XMLソースコード1500を示している。XMLソースコード1500は、クライアントオブジェクト「AREA」1424(図14)がサーバーオブジェクト「AREA」1412(図14)(ライン1502)にマッピングされることを示している。クライアントオブジェクト「AREA」1424をサーバーオブジェクト「AREA」1412にマッピングするためには、クライアントモデル116はリアルオブジェクト「AREA_A」1434をクライアントオブジェクト「AREA」1424にマスク「AREA_A」1410aを介してマッピングする。このように、クライアントオブジェクト「AREA」1424は、クライアントオブジェクト「AREA」1424がサーバーオブジェクト「AREA」1412に直接アクセスしているように、リアルオブジェクト「AREA_A」1434を介してサーバーオブジェクト「AREA」1412にアクセスする。
【0077】
クライアントオブジェクト「AREA」1424は、サーバーロール「Units」1414(図14)にマッピングされ、かつクライアントオブジェクト「UnitModules」1428(図14)(ライン1504)になるクライアントロール「UnitModules」1426(図14)を含有している。クライアントスキーマ階層1404におけるクライアントオブジェクトは、クライアントオブジェクトが同一名称のサーバーオブジェクトにマッピングしなくても、サーバースキーマ階層1402におけるサーバーオブジェクトと同じ名前を有することができる。例えば、クライアントオブジェクト「UnitModules」1428はサーバーオブジェクト「Unit」1408(図14)(ライン1506)にマッピングされる。この場合、クライアントモデル116はクライアントオブジェクト「UnitModules」1428をリアルオブジェクト「ABC」1438にマスク「ABC」1410bを介してマッピングする。
【0078】
クライアントオブジェクト「UnitModules」1428は、サーバーオブジェクト「UnitModules」1410(つまり、「UnitModule(scanRate)」)(ライン1508)の「scanRate」プロパティにマッピングされる、「scanRate」と称されるプロパティを含有する。この場合、クライアントモデル116はリアルオブジェクト「ABC」1444の「scanRate」をクライアントオブジェクト「UnitModule」1428の「scanRate」プロパティにマスク「ABC」1410bを介してマッピングする。リアルオブジェクト「ABC」1444の「scanRate」プロパティをクライアントオブジェクト「UnitModule」1428の「scanRate」プロパティにマスク「ABC」1410bを介してマッピングすることによって、クライアントモデル116はサーバーオブジェクト「Unit」1408からサーバーロール「UnitModule」1418(図14)に横断して、クライアントオブジェクト「UnitModules」1428の「scanRate」プロパティをサーバーオブジェクト「UnitModules」1410の「scanRate」プロパティにマッピングする。
【0079】
オブジェクト「UnitModules」1420は、サーバーロール「Modules」1420(図14)にマッピングされ、かつクライアントオブジェクト「Module」1432(図14)(ライン1510)になるクライアントロール「Modules」1430(図14)を含有している。
【0080】
図16は、1つの機能ブロックおよび2つの属性を含有する複合機能ブロック「PT_COMP」1602を表す例示的ユーザインタフェース1600を示している。ユーザインタフェース1600に示されるように、複合機能ブロック「PT_COMP」1602は、機能ブロック「CALC1」1606と、属性「ABS_PRESS_CF」1608と、属性「ABS_TEMP_CF」1610とを含有するアイテムの統合リスト1604を含んでいる。ユーザがオブジェクトの統合リストの表示を選択すると、クライアントモデル116は1つのクライアントロールおよび2つ以上のサーバーロールをマッピングするように構成可能である。図17と関連して後述されるように、サーバースキーマ(例えば、図17のサーバースキーマ階層1702)において、機能ブロック「CALC1」1606に対応するオブジェクトは、属性「ABS_PRESS_CF」1608および属性「ABS_TEMP_CF」1610に対応するオブジェクトとは異なるサーバーロールと関連している。しかしながら、クライアントスキーマ(例えば、図17のクライアントスキーマ階層1704)において、機能ブロック「CALC1」1604、属性「ABS_PRESS_CF」1606および属性「ABS_TEMP_CF」1608に対応するオブジェクトは全て同一クライアントロールの一部として表される。
【0081】
図17は、単一のクライアントロールを複数のサーバーロールにマッピングして図16の例示的ユーザインタフェース1600を生成する、サーバースキーマ階層1702とクライアントスキーマ階層1704間のマッピング構成1700を示す詳細なブロック図である。マッピング構成で記述されたマッピングはクライアントモデル116(図1)によって実行可能である。マッピング構成1700はクライアントスキーマ階層1704をサーバースキーマ階層1702にクライアントモデル階層1706および複数のマスク1708a乃至dを介してマッピングする。サーバースキーマ階層1702は、2つのサーバーロール:タイプ「Blocks」1712のサーバーロールおよびタイプ「Attributes」1714のサーバーロールを含有するタイプ「CompositeFunctionalBlock」1710のサーバーオブジェクトを含んでいる。サーバーロール「Blocks」1712はタイプ「BlockUsage」1716のクライアントオブジェクトになり、サーバーロール「Attributes」1714はタイプ「AttributeDefinitions」1718のクライアントオブジェクトになる。従って、クライアントモデル階層1706はサーバースキーマ階層1702に従う。
【0082】
クライアントスキーマ階層1704は、タイプ「Children」1722のクライアントロールを含有するタイプ「Composite」1720のクライアントオブジェクトを含んでいる。クライアントロール「Children」1722はタイプ「Block」1724のクライアントオブジェクトおよびタイプ「Attribute」1726のクライアントオブジェクトになる。
【0083】
図18は、図17のサーバースキーマ階層1702からクライアントスキーマ階層1704へのマッピングを生成するために使用可能な例示的XMLソースコード1800を示している。XMLソースコード1800はクライアントオブジェクト「Composite」1720(図17)をサーバーオブジェクト「CompositeFunctionalBlock」1710(図17)(ライン1802)にマッピングする。クライアントオブジェクト「Composite」1720(ライン1804)内に含有されたクライアントロール「Children」1722は2つのサーバーロールにマッピングする。とりわけ、クライアントロール「Children」1722はサーバーロール「Blocks」1712(ライン1806)およびサーバーロール「Attributes」1714(ライン1808)にマッピングする。サーバーロール「Blocks」1712へのマッピングについて、クライアントロール「Children」1722はクライアントオブジェクト「Block」1724(ライン1806)になる。サーバーロール「Attributes」1714へのマッピングについて、クライアントロール「Children」1722はクライアントオブジェクト「Attribute」1726(ライン1808)になる。クライアントロール「Block」1724はサーバーオブジェクト「BlockUsage」1716(ライン1810)にマッピングし、クライアントロール「Attribute」1726はサーバーオブジェクト「AttributeDefinition」1718(ライン1812)にマッピングする。
【0084】
図19は、特定のプラントエリア「AREA_A」1902内の複数の異なるコントロールデバイスを表す例示的ユーザインタフェース1900を示している。具体的には、プラントエリア「AREA_A」1902は「LIC−549」コントロールデバイス1904と、「PLM1」コントロールデバイス1906と、「EM1」コントロールデバイス1908とを含んでいる。図20および21と関連して後述されるように、コントロールデバイス1904、1906および1908は、サーバースキーマ(例えば、図20のサーバースキーマ階層2002)において単一のサーバーロールにマッピングされる3つの個別クライアントロールとしてクライアントスキーマ(例えば、図20のクライアントスキーマ階層2004)において表される。
【0085】
図20は、複数のクライアントロールを単一のサーバーロールにマッピングして図19の例示的ユーザインタフェース1900を生成する、サーバースキーマ階層2002とクライアントスキーマ階層2004間のマッピング構成2000を示す詳細なブロック図である。マッピング構成2000はクライアントスキーマ階層2004をサーバースキーマ階層2002にクライアントモデル階層2006および複数のマスク2008a乃至dを介してマッピングする。サーバースキーマ階層2002は、タイプ「Modules」2012のサーバーロールを含有するタイプ「Area」2010のサーバーオブジェクトを含んでいる。サーバーロール「Modules」2012は、タイプ「PhaseLogicModule」2014のサーバーオブジェクト、タイプ「EquipmentModule」2016のサーバーオブジェクト、およびタイプ「ControlModule」2018のサーバーオブジェクトになる。クライアントモデル階層2006は、それぞれサーバーオブジェクト「PhaseLogicModule」2014、サーバーオブジェクト「EquipmentModule」2016およびサーバーオブジェクト「ControlModule」2018に対応するタイプ「PLM1」2020のリアルオブジェクトと、タイプ「EM1」2022のリアルオブジェクトと、タイプ「LIC−459」2024のリアルオブジェクトとを含む。リアルオブジェクト「PLM1」2020、「リアルオブジェクト「EM1」2022およびリアルオブジェクト「LIC−459」2024はまた、ユーザインタフェース1900に示されている「LIC−459」コントロールデバイス1904、「PLM1」コントロールデバイス1906および「EM1」コントロールデバイス1908にそれぞれ対応する。
【0086】
クライアントスキーマ階層2004は、タイプ「ControlModules」2028のクライアントロール、タイプ「PhaseLogicModules」2030のクライアントロールおよびタイプ「EquipmentModules」2032のクライアントロールになるタイプ「Area」2026のクライアントオブジェクトを含んでいる。クライアントロール「ControlModules」2028はタイプ「ControlModule」2034のクライアントオブジェクトになる。クライアントロール「PhaseLogicModules」2030はタイプ「PhaseLogicModule」2036のクライアントオブジェクトになる。クライアントロール「EquipmentModule」2032はタイプ「EquipmentModule」2038のクライアントオブジェクトになる。
【0087】
図21は、図20のサーバースキーマ階層2002からクライアントスキーマ階層2004へのロールマッピングを生成するために使用可能な例示的XMLソースコード2100を示している。XMLソースコード2100に示されるように、クライアントロール「ControlModules」2028はサーバーロール「Modules」2006(ライン2102)にマッピングされる。また、クライアントロール「PhaseLogicModules」2030はサーバーロール「Modules」2006(ライン2104)にマッピングされる。加えて、クライアントロール「EquipmentModules」2032はサーバーロール「Modules」2006(ライン2106)にマッピングされる。
【0088】
図22は、コントロールデバイスと関連したアイテムを選択的に表示するために使用可能な例示的ユーザインタフェース2200を示している。例えば、ユーザインタフェース2200は「CH01」コントロールデバイス2202を示しており、「CH01」コントロールデバイス2202がサーバースキーマ(例えば、図23のサーバースキーマ階層2302)における少なくとも2つのプロパティと関連していても、「CH01」コントロールデバイス2202と関連した1つのプロパティ、プロパティ「CTLR1C01CH01」2204のみを表示する。より詳細に後述されるように、クライアントスキーマ(例えば、図23のクライアントスキーマ階層2304)はサーバースキーマ(例えば、サーバースキーマ階層2302)において1サブセットのサーバーオブジェクトにマッピングされてもよいため、クライアントアプリケーション(例えば、図1のクライアントアプリケーション108)はユーザインタフェース2200に示されるような1サブセットのオブジェクトのみを表示する。
【0089】
図23は、クライアントオブジェクトを1サブセットのサーバーオブジェクトにマッピングして図22の例示的ユーザインタフェース2200を生成する、サーバースキーマ階層2302とクライアントスキーマ階層2304間のマッピング構成2300を示す詳細なブロック図である。クライアントモデル階層2306は、図22のプロパティ「CTLR1C01CH01」2204に対応するタイプ「CTLRC01CH01」2308のリアルオブジェクトを含んでいる。サーバースキーマ階層2302はタイプ「Device」2310のサーバーオブジェクトと、タイプ「DST」2312のサーバーオブジェクトとを含んでいる。クライアントスキーマ階層2304はタイプ「DST」2314のクライアントオブジェクトを含んでいる。図24の例示的XMLソースコード2400に示されるように、クライアントオブジェクト「DST」2314はサーバーオブジェクト「DST」2312(ライン2402)にマッピングされる。クライアントオブジェクト「DST」2314はリアルオブジェクト「CTLRC01CH01」2308およびマスク「CTLR1C01CH01」2316を介してサーバーオブジェクト「DST」2312にマッピングされる。
【0090】
図25は、追加アイテムがそのコントロールデバイスのサーバースキーマの一部でなくても追加アイテムをコントロールデバイスに挿入するために使用可能な例示的ユーザインタフェース2500を示している。ユーザインタフェース2500は「AssignedModules」アイテム2504および「TIC−205」アイテム2506を有するものとして示されている「CTLR1」コントロールデバイス2502を含んでいる。図26と関連して後述されるように、サーバースキーマ(例えば図26のサーバースキーマ2602)は、「AssignedModules」アイテム2504に対応するサーバーオブジェクトを含んでいない。その代わり「AssignedModules」アイテム2504に対応するクライアントオブジェクトがクライアントスキーマ(例えば、図26のクライアントスキーマ2604)に挿入される。
【0091】
図26は、クライアントオブジェクトをクライアントスキーマ階層2602に挿入する、サーバースキーマ階層2602とクライアントスキーマ階層2604間のマッピング構成2600を示す詳細なブロック図である。サーバースキーマ階層2602およびクライアントモデル階層2606の各々は単一のオブジェクトを含んでいる。具体的には、サーバースキーマ階層2602はタイプ「Module」2608のサーバーオブジェクトを含んでおり、クライアントモデル階層2606は、サーバーオブジェクト「Modules」2608および「TIC−205」アイテム2506(図25)に対応するタイプ「TIC−201」2610のリアルオブジェクトを含んでいる。クライアントスキーマ階層2604は、サーバーおよびクライアントモデルオブジェクト2608および2610に対応するクライアントオブジェクト「Module」2612を含んでいる。加えて、クライアントアプリケーション(例えば、図1のクライアントアプリケーション108)はタイプ「AssignedModules」2614のクライアントオブジェクトを挿入している。
【0092】
図27は、クライアントオブジェクト「AssignedModules」2614(図26)をクライアントスキーマ階層2604(図26)に挿入するための例示的XMLソースコード2700を示している。具体的には、クライアントオブジェクト「AssignedModules」2614を作成するために、例示的XMLソースコード2700は、タイプ「AssignedModules」2616(図26)のクライアントロールがサーバースキーママッピング(例えば、ロール名=‘AssignedModules’mapping=‘’)を有していないこと、およびクライアントロール「AssignedModules」2616がクライアントオブジェクト「AssignedModules」2614(ライン2702)になることを指定する。クライアントオブジェクト「AssignedModules」2614をクライアントスキーマ階層2604に挿入するために、例示的XMLソースコード2700は、クライアントオブジェクト「AssignedModules」2614がタイプ「Controller」2618のサーバーオブジェクト(例えば、サーバースキーマ階層2602の親オブジェクト)(ライン2704)に擬似マッピングされることを指定する。クライアントオブジェクト「AssignedModules」2614は、タイプ「AssignedModules」2622(図26)(ライン2706)のサーバーロールにマッピングされるタイプ「Modules」2620(図26)のクライアントロールを含有する。
【0093】
図28は、リアルタイムプロセスコントロールデータがコマンドを介して取得可能なアイテムを表示するために使用可能な例示的ユーザインタフェース2800を示している。ユーザインタフェース2800は、リアルタイムプロセスコントロールデータをランタイムサーバー114(図1)を介して取得可能なコントロールデバイスを含有するフィールドバスポート「P01」2802を含んでいる。具体的には、フィールドバスポート「P01」2802は「DecomissionedFieldbusDevice」2804を含有しており、これはコントロールデバイス「D1」2806を含んでいる。コントロールデバイス「D1」2806は、図29と関連して後述されるコマンドとしてクライアントスキーマ(例えば、図29のクライアントスキーマ階層2902)において実施される。
【0094】
図29は、クライアントロールをコマンドとして実施するマッピング構成を示す詳細なブロック図である。クライアントスキーマ階層2902は、コマンドとして実施されるタイプ「Devices」2904のクライアントロールを含んでいる。クライアントロール「Devices」2904は、リアルタイムプロセスコントロールデータを図1のランタイムサーバー114から取得するために使用可能である。図30の例示的XMLソースコード3000は、オブジェクトタイプ「DecommissionedDevices」2906(図29)(図30のライン3002)のクライアントがクライアントロール「Devices」2904(図29)を含有していることを指定する。例示的XMLソースコード3000はまた、クライアントロール「Devices」2904はファイル「commands.dll」(例えば、assembly=「commands.dll」)に記憶されているコマンド命令を使用して実施されることと、クライアントロール「Devices」2904を実施する具体的なコマンドは「GetDecomissionedDevices」(ライン3004)であることとを指定する。クライアントロール「Devices」2904はタイプ「FieldbusDevices」2908(図19)(図30のライン3004)のクライアントオブジェクトになり、これはサーバースキーマ階層2910(図29)(図30のライン3006)へのマッピングを有していない。
【0095】
図31A、31Bおよび32は、図1および2の例示的クライアントアプリケーション108と、例示的クライアントモデル116と例示的ユーザインタフェース118とを実施するための例示的マシーン読み取り可能かつ実行可能な命令を表すフローチャートを示している。これらの例において、マシーン読み取り可能な命令は、図33の例示的プロセッサシステム3310に示されているプロセッサ3312などのプロセッサによって実行するためのプログラムを備えている。プログラムは、CD−ROM、フロッピー(登録商標)ディスク、ハードドライブ、デジタル多用途ディスク(DVD)またはプロセッサ3312と関連したメモリなどの有形媒体に記憶されたソフトウェアにおいて具現化されてもよく、かつ/または既知の方法でファームウェアや専用ハードウェアで具現化されてもよい。例えば、図1および2の例示的クライアントアプリケーション108、例示的クライアントモデル116および例示的ユーザインタフェース118内の構造のいずれかまたは全部がソフトウェア、ハードウェアおよび/またはファームウェアによって実施可能である。さらに、例示的プログラムは図31A、31Bおよび32に示されたフローチャートを参照して説明されるが、当業者は、図1および2の例示的クライアントアプリケーション108、例示的クライアントモデル116および例示的ユーザインタフェース118の多数の実施方法が代替的に使用可能であることを容易に理解するであろう。例えば、ブロックの実行順序は変更可能であり、かつ/または説明されているブロックの一部は変更、削除または結合可能である。
【0096】
図31Aおよび31Bは、ランタイム段階でクライアントアプリケーション(例えば、図1のクライアントアプリケーション108)アクセスをリアルオブジェクト(例えば、図2、7および8のリアルオブジェクト216)にクライアントオブジェクト(例えば、図2、7および8のクライアントオブジェクト212)を介して提供するために使用可能な例示的方法のフロー図を示している。まず、クライアントアプリケーション108は第1および第2のUIビュー(例えば、図7の第1および第2のUIビュー702および704)を参照する(ブロック3102)。第1のUIビュー702は次いで、親クライアントオブジェクト(例えば、図7の親クライアントオブジェクト「O」710a)と対応する親オブジェクトハンドルおよびマスク(例えば、図7の親オブジェクトハンドル「H」712aおよびゼロ番目のマスク「M」714a)とを介するリアル親オブジェクト(例えば、図7の親リアルオブジェクト「R」708a)へのアクセスをリクエストする(ブロック3104)。例えば、第1のUIビュー702は親クライアントオブジェクト「O」710aを使用するためのコールを発行可能である。親クライアントオブジェクト「O」710aは次いで、親オブジェクトハンドル「H」712aを参照することによって応答可能であり、これはまたゼロ番目のマスク「M」714aを参照する。マスク参照「M」714aは次いで親リアルオブジェクト「R」708aを参照し、図7に示されるように通信経路が第1のUIビュー702と親リアルオブジェクト「R」708a間に確立される。
【0097】
第1のUIビュー702は次いで、親リアルオブジェクト「R」708aにリアルロール(例えば、図7の「ModuleLibrary」リアルロール708b)をロードさせる(ブロック3106)。例えば、第1のUIビュー702はロードロールを親クライアントオブジェクト「O」710aに呼び出し、ロール名「ModuleLibrary」を譲渡する。親クライアントオブジェクト「O」710aは次いで、親オブジェクトハンドル「H」712aからリアルロールをフェッチして、親オブジェクトハンドル「H」712aはゼロ番目のマスク「M」714aに「ModuleLibrary」リアルロール708bをロードさせる。
【0098】
親リアルオブジェクト「R」708aは次いで、「ModuleLibrary」リアルロール708bにおいて第1および第2のリアルオブジェクト708cおよび708dをロードする(ブロック3108)。ゼロ番目のマスク「M」714aは次いで第1および第2のリアルオブジェクト708cおよび708dに対するマスク(例えば、図7の第1および第2のマスク714aおよび714b)を作成し、このマスクを親オブジェクトハンドル「H」712aに返送する(ブロック3110)。親オブジェクトハンドル「H」712aは次いで第1および第2のマスク714bおよび714cに対するオブジェクトハンドル(例えば、図7の第2のオブジェクトハンドル712bおよび712c)を作成し、このオブジェクトハンドルを親クライアントオブジェクト「O」710aに返送する(ブロック3112)。
【0099】
親クライアントオブジェクト「O」710aは次いで第1および第2の子クライアントオブジェクト710bおよび710c(図7)のインスタンスを作成し、子クライアントオブジェクト710a乃至bの各々を対応するオブジェクトハンドルに照会する(ブロック3114)。具体的には、第1の子クライアントオブジェクト710bは第1のオブジェクトハンドル712bに照会され、第2の子クライアントオブジェクト710cは第2のオブジェクトハンドル712cに照会される。第1のUIビュー702は次いで第1および第2の子クライアントオブジェクト710bおよび710cを参照し(ブロック3116)、これは図7に示されるように第1のUIビュー702と第1および第2のリアルオブジェクト708cおよび708dとの間の通信経路を形成する。
【0100】
図31Bに示されるように、第2のUIビューは次いで、第1のリアルオブジェクト708cへのアクセスをリクエストする(ブロック3118)。クライアントモデル116は次いで、第1および第2のビュー702および704がクライアントスキーマ(例えば、図14、17、20、23、26および29のクライアントスキーマ階層のうちの1つ)を共通しているか否かを判断する(ブロック3120)。UIビュー702および704がクライアントスキーマを共有している場合、第1のUIビュー702は第1の子クライアントオブジェクト710bを第2のユーザビュー704に譲渡する(ブロック3122)。この場合、図7に示されるように、データ経路が第2のUIビュー704と第1の子クライアントオブジェクト710b間に確立され、第1のUIビュー702と第1の子クライアントオブジェクト710b間のデータ経路は、第1のUIビュー702がもはや第1の子クライアントオブジェクト710bを参照しないため、非アクティブにされる。
【0101】
第1および第2のUIビュー702および704がクライアントスキーマを共有していない場合、第1のUIビュー702は、第1の子クライアントオブジェクト710bに対応するサーバー経路を第2のUIビュー704に譲渡する(ブロック3124)。第2のUIビュー704は次いでサーバー経路をクライアントモデル116に譲渡し、サーバー経路上のアイテムを調べるためにクライアントモデル116にリクエストを発行する(ブロック3126)。クライアントモデル116は次いで、第1のリアルオブジェクト708cを参照する第3のマスク804(図8)および第3のオブジェクトハンドル806(図8)を作成する(ブロック3128)。第2のUIビュー704は次いで第3のオブジェクトハンドル804(図8)をクライアントモデル116から受信する(ブロック3130)。第2のUIビュー704は次いで第3の子クライアントオブジェクト804(図8)のインスタンスを作成する(ブロック3132)。第3の子クライアントオブジェクト804は次いで第3のオブジェクトハンドル804を参照する(ブロック3134)。次いで通信経路が、図8に示されるように、第2のUIビュー704と第1のリアルオブジェクト708c間に形成される。第1のUIビュー702が第1のリアルオブジェクト708cへのアクセスを終了されると、クライアントモデルは、第1の子クライアントオブジェクト710b、第1のオブジェクトハンドル712bおよび第1のマスク714bは未使用または非アクティブであり、ガーベジコレクションの準備ができていることを示す(ブロック3136)。
【0102】
クライアントモデル116はいずれのクライアントオブジェクト、ハンドルおよびマスクがガーベジコレクションの準備ができているかを示した後、あるいはブロック3122において第1のUIビュー702が第1の子クライアントオブジェクト710bを第2のUIビュー704に譲渡した後、クライアントモデル116は第1のUIビュー704が第1のリアルオブジェクト708cに再度アクセスする必要があるか否かを判断する(ブロック3138)。第1のUIビュー704が第1のリアルオブジェクト708cに再度アクセスする必要がなければ、コントロールはブロック3104(図31A)に戻り、ブロック3104乃至3116と関連して上述された動作が、第1のUIビュー702と第1のリアルオブジェクト708c間に通信経路を確立するために反復される。この場合、図7に示されるように、第1のUIビュー702から第1のリアルオブジェクト708cまでの通信経路が、第1のクライアント子オブジェクト「O1」710eの第2のインスタンス、第1のオブジェクトハンドル「H1」712dの第2のインスタンス、および第1のマスク「M1」714dの第2のインスタンスを介して確立される。クライアントモデル116がブロック3138で、第1のUIビュー702が第1のリアルオブジェクト708cに再度アクセスする必要がないと判断すると、プロセスは終了される。
【0103】
図32は、クライアントオブジェクト(例えば、図9のクライアントオブジェクト902)において修正済みプロセスコントロールデータを更新するために使用可能な例示的方法である。まず、クライアントモデル116(図1)は更新通知イベントを取得する(ブロック3202)。クライアントモデル116は更新通知イベントをプロセスコントロールシステムデータベースサーバー112および/またはプロセスコントロールシステムデータベース110から受信する。例えば、格納プロセスコントロールデータがプロセスコントロールシステムデータベース110において修正された場合、プロセスコントロールシステムデータベース110は更新通知イベント(例えば、「UpdateNotification」イベント)と、不確かなリアルオブジェクトや不正リアルオブジェクト(例えば、データベース110で修正されたプロセスコントロールデータと関連した図2および7のリアルオブジェクト216の一部)のリストとを発行する。「UpdateNotification」イベントに応答して、クライアントモデル116は、「UpdateNotification」イベントを介してクライアントモデル110に提供された不確かなリアルオブジェクトに対応する1つ以上の不確かなクライアントオブジェクト(例えば、図2および7のクライアントオブジェクト212の一部)を識別する(ブロック3204)。クライアントモデル116は次いで、例えば「QuestionableUpdateNotification」イベントを介して不確かなクライアントオブジェクトのリストをクライアントアプリケーション(例えば、図1のクライアントアプリケーション108)に通信する(ブロック3206)。不確かなクライアントオブジェクトのリストは、不確かなクライアントオブジェクトのハンドルまたは識別を含むことがある。
【0104】
クライアントアプリケーション108は次いで、不確かなクライアントオブジェクトのリストをクライアントモデル116から受信し、不確かなクライアントオブジェクトのリストに基づいて不正ハッシュテーブル(例えば、図9の不正ハッシュテーブル916)にデータ投入する(ブロック3208)。例えば、クライアントアプリケーション108の事前生成パーシャルクラス(例えば、図2の事前生成パーシャルクラス206)は、「QuestionableUpdateNotification」イベントと、不確かなクライアントオブジェクトのリストとを監視するためのメソッドやイベントを含むことがある。クライアントアプリケーション108は次いで、可視UIビュー(例えば、図7のUIビュー702および704や図9のUIビュー118)に、更新通知イベントが受信されたことを通知する(ブロック3210)。例えば、ユーザに見えるプロセスコントロールデータを更新するのに必要な時間を短縮するために、クライアントアプリケーション108は、ユーザインタフェースディスプレイ上で最小化されるUIビューを通知しなくてもよい。可視UIビューは次いで、クライアントオブジェクトのいずれかが不正であるかを、不正ハッシュテーブル916に基づいて判断する(ブロック3212)。例えば、可視UIビューのクライアントオブジェクトは、ハンドルまたは識別のいずれかが不正ハッシュテーブル916における不確かなクライアントオブジェクトのハンドルまたは識別に対応しているか否かを判断する。
【0105】
可視UIビューは次いで、不正ハッシュテーブル916にある使用済みオブジェクトハンドルをフラグする(ブロック3214)。例えば、UIビュー118が依然としてクライアントオブジェクト902を使用しており、かつクライアントオブジェクト902に対応するオブジェクトハンドルが不正ハッシュテーブル916にある場合、オブジェクト902は不正ハッシュテーブル916におけるその対応するオブジェクトハンドルをフラグして、クライアントオブジェクト902が依然として「使用中」であり、従ってガーベジコレクションの準備ができていないことを示す。フラグされていない、不正ハッシュテーブル916における任意のオブジェクトハンドルは非アクティブまたは未使用、かつガーベジコレクション可能と指示または指定される。クライアントモデル116は次いで、全ての非アクティブまたは未使用の不正オブジェクトハンドルを除去またはアンロードする(ブロック3216)。例えば、クライアントモデル116は、不正ハッシュテーブル916に列挙されている全ての不正オブジェクトハンドルを除去またはアンロードするためにガーベジコレクションルーチンを使用してもよいが、これは使用済みまたはアクティブとしてフラグされない。
【0106】
クライアントモデル116は次いで、不正ハッシュテーブル916において使用済みとフラグされた不正オブジェクトハンドルに対する更新済みまたは修正済みプロセスコントロールデータを検索する(ブロック3218)。例えば、クライアントモデル116は「使用中」の不正オブジェクトのプロセスコントロールデータに対応する問い合わせを生成して、この問い合わせをプロセスコントロールシステムデータベースサーバー112に通信する(図1)。プロセスコントロールシステムデータサーバー112は次いで修正済みプロセスコントロールデータをプロセスコントロールシステムデータベース110から検索して、修正済みプロセスコントロールデータをクライアントモデル116に返送する。
【0107】
クライアントモデル116は次いで、更新済みまたは修正済みプロセスコントロールデータをサーバースキーマからクライアントスキーマに変換する(ブロック3220)。例えば、クライアントモデル116は、修正済みプロセスコントロールデータをサーバースキーマ(例えば、図14、17、20、23、26および29のサーバースキーマ階層のうちの1つ)からクライアントスキーマ(例えば、図14、17、20、23、26および29のクライアントスキーマ階層のうちの1つ)に変換またはマッピングするために図14、17、20、23、26および29と関連して上述されたマッピング構成のいずれかを使用してもよい。
【0108】
クライアントモデル116は次いで、不確かなクライアントオブジェクトに対して現在ロードされているいずれのプロセスコントロールデータ値が受信された修正済みプロセスコントロールデータと異なるかを判断して、異なる修正済みプロセスコントロールデータ(例えば、実際に変更したデータ)のみをクライアントアプリケーションに通信する(ブロック3222)。このように、クライアントモデル116は、修正済みとは示されているが、クライアントアプリケーション108に現在ロードされているプロセスコントロールデータからは変化していないプロセスコントロールデータをクライアントアプリケーション108に通信する必要はない。クライアントアプリケーション108は次いで、使用済みの不正オブジェクトハンドルと関連し、かつ修正済みプロセスコントロールデータがクライアントモデル116から受信されたクライアントオブジェクトに更新通知を発行する(ブロック3224)。例えば、クライアントアプリケーション108は更新通知をクライアントオブジェクト902(図9)に発行して、PROPERTY_C要素910c、PROPERTY_D要素910dおよびPROPERTY_E要素910e(図9)のいずれかと関連した修正済みプロセスコントロールデータを譲渡してもよい。各クライアントオブジェクトは次いでそのデータ(ブロック3226)を、受信した修正済みプロセスコントロールデータに基づいて更新する。例えば、クライアントオブジェクト902は受信した修正済みプロセスコントロールデータに基づいて要素910c、910dおよび910eの値を更新してもよい。
【0109】
図33は、ここに説明された例示的装置、方法および製品を実施するために使用可能な例示的プロセッサシステムのブロック図である。図33に示されるように、プロセッサシステム3310は、相互接続バス3314に接続されたプロセッサ3312を含んでいる。プロセッサ3312はレジスタセットつまりレジスタスペース3316を含んでおり、これは図33では全体的にオンチップとして示されているが、代替的に、全体的または部分的にオフチップで配置され、かつ専用電気接続および/または相互接続バス3314を介してプロセッサ3312に直接接続可能である。プロセッサ3312は任意の適切なプロセッサ、処理ユニットまたはマイクロプロセッサであってもよい。図33には示されていないが、システム3310はマルチプロセッサシステムであってもよいため、プロセッサ3312と同一または類似であり、かつ相互接続バス3314に通信可能に接続されている1つ以上の追加プロセッサを含んでもよい。
【0110】
図33のプロセッサ3312はチップセット3318に接続されており、これはメモリコントローラ3320および入力/出力(I/O)コントローラ3322を含んでいる。既知であるように、チップセットは通常、チップセット3318に接続された1つ以上のプロセッサによってアクセス可能であるか、これによって使用されるI/Oおよびメモリ管理機能ならびに複数の汎用および/または特別用途レジスタ、タイマーなどを提供する。メモリコントローラ3320は、プロセッサ3312(または、複数のプロセッサがあれば複数のプロセッサ)がシステムメモリ3324および大容量記憶メモリ3325にアクセスできるようにする機能を実行する。
【0111】
システムメモリ3324は、例えば静的ランダムアクセスメモリ(SRAM)、動的ランダムアクセスメモリ(DRAM)、フラッシュメモリ、リードオンリーメモリ(ROM)などの所望のタイプの揮発性および/または不揮発性メモリを含んでもよい。大容量記憶メモリ3325は、ハードディスクドライブ、光学ドライブ、テープ記憶デバイスなどを含む所望のタイプの大容量記憶メモリを含んでもよい。
【0112】
I/Oコントローラ3322は、プロセッサ3312がI/Oバス3332を介して周辺入力/出力(I/O)デバイス3326および3328とネットワークインタフェース3330と通信できるようにする機能を実行する。I/Oデバイス3326および3328は、例えば、キーボード、ビデオディスプレイまたはモニタ、マウスなどの所望のタイプのI/Oデバイスであってもよい。ネットワークインタフェース3330は例えば、プロセッサシステム3310が別のプロセッサシステムと通信できるようにするイーサネット(登録商標)デバイス、非同期転送モード(ATM)デバイス、802.11デバイス、DSLモデム、ケーブルモデム、セルラーモデルなどであってもよい。
【0113】
メモリコントローラ3320およびI/Oコントローラ3322はチップセット3318内の個別機能ブロックとして図33に示されているが、これらのブロックによって実行される機能は単一の半導体回路内に一体化されてもよく、あるいは2つ以上の個別集積回路を使用して実施されてもよい。
【0114】
特定の方法、装置および製品がここでは説明されてきたが、本特許の範囲はこれらに制限されない。反対に、本特許は、文字通りまたは均等論に従った添付の請求項の範囲内の全ての方法、装置および製品をカバーしている。
【特許請求の範囲】
【請求項1】
ユーザインタフェースリクエストに応答して第1および第2のクライアントオブジェクトをロードするステップであって、前記第1および第2のクライアントオブジェクトは、クライアントスキーマに基づいて組織化されたプロセスコントロールデータへのアクセスと関連しているステップと、
前記第1および第2のクライアントオブジェクトと関連し、かつサーバースキーマに基づいて組織化されたプロセスコントロールデータを取得するように構成されたリアルオブジェクトをロードするステップと、
プロセスコントロールデータを前記サーバースキーマ組織から前記クライアントスキーマ組織にマッピングして、前記プロセスコントロールデータを前記第1および第2のクライアントオブジェクトに通信するステップと、
前記第1のクライアントオブジェクトと関連した第1のユーザインタフェースおよび前記第2のクライアントオブジェクトと関連した第2のユーザインタフェースを介して前記プロセスコントロールデータを取得するステップと、
を含むプロセスコントロールデータアクセス方法。
【請求項2】
前記プロセスコントロールデータが、少なくとも1つのマスクに基づいて前記サーバースキーマ組織から前記クライアントスキーマ組織にマッピングされる、請求項1に記載の方法。
【請求項3】
前記第1のユーザインタフェースが前記第1クライアントオブジェクトの使用を終了した後、前記第1クライアントオブジェクトが非アクティブであると特定するステップをさらに含む、請求項1に記載の方法。
【請求項4】
前記第1のクライアントオブジェクトハンドルをアンロードするステップをさらに含む、請求項3に記載の方法。
【請求項5】
更新通知に応答して前記第1のユーザインタフェースまたは前記第2のユーザインタフェースと関連したプロセスコントロールデータを更新するステップをさらに含む、請求項1に記載の方法。
【請求項6】
プロセッサシステムと、
前記プロセッサシステムに通信可能に接続されたメモリであって、前記プロセッサシステムが、
ユーザインタフェースリクエストに応答して第1および第2のクライアントオブジェクトをロードすることであって、前記第1および第2のクライアントオブジェクトはクライアントスキーマに基づいて組織化されたプロセスコントロールデータへのアクセスと関連していることと、
前記第1および第2クライアントオブジェクトと関連し、かつサーバースキーマに基づいて組織化されたプロセスコントロールデータを取得するように構成されたリアルオブジェクトをロードすることと、
プロセスコントロールデータを前記サーバースキーマ組織から前記クライアントスキーマ組織にマッピングして、前記プロセスコントロールデータを前記第1および第2のクライアントオブジェクトに通信することと、
前記第1のクライアントオブジェクトと関連した第1のユーザインタフェースおよび前記第2のクライアントオブジェクトと関連した第2のユーザインタフェースを介して前記プロセスコントロールデータを取得すること、
を可能にする記憶された命令を含むメモリと、
を含む、プロセスコントロールデータアクセス装置。
【請求項7】
前記命令は前記プロセッサシステムが、少なくとも1つのマスクに基づいて前記プロセスコントロールデータを前記サーバースキーマ組織から前記クライアントスキーマ組織にマッピングできるようにする、請求項6に記載の装置。
【請求項8】
前記命令は前記プロセッサシステムが、前記第1のユーザインタフェースが前記第1のクライアントオブジェクトの使用を終了した後、前記第1のクライアントオブジェクトが非アクティブであると特定できるようにする、請求項6に記載の装置。
【請求項9】
前記命令は前記プロセッサシステムが、前記第1のクライアントオブジェクトハンドルをアンロードできるようにする、請求項8に記載の装置。
【請求項10】
前記命令は前記プロセッサシステムが、更新通知に応答して、前記第1のユーザインタフェースまたは前記第2のユーザインタフェースと関連したプロセスコントロールデータを更新できるようにする、請求項6に記載の装置。
【請求項11】
命令を記憶するマシーンアクセス可能な媒体であって、
前記命令は実行時に、マシーンに、
ユーザインタフェースリクエストに応答して第1および第2のクライアントオブジェクトをロードすることであって、前記第1および第2のクライアントオブジェクトはクライアントスキーマに基づいて組織化されたプロセスコントロールデータへのアクセスと関連していることと、
前記第1および第2のクライアントオブジェクトと関連し、かつサーバースキーマに基づいて組織化されたプロセスコントロールデータを取得するように構成されたリアルオブジェクトをロードすることと、
プロセスコントロールデータを前記サーバースキーマ組織から前記クライアントスキーマ組織にマッピングし、前記プロセスコントロールデータを前記第1および第2のクライアントオブジェクトに通信することと、
前記第1のクライアントオブジェクトと関連した第1のユーザインタフェースおよび前記第2のクライアントオブジェクトと関連した第2のユーザインタフェースを介して前記プロセスコントロールデータを取得すること、
をさせるマシーンアクセス可能な媒体。
【請求項12】
前記命令は実行時に、前記マシーンに、
少なくとも1つのマスクに基づいて前記プロセスコントロールデータを前記サーバースキーマ組織から前記クライアントスキーマ組織にマッピングさせる、請求項11に記載のマシーンアクセス可能な媒体。
【請求項13】
前記命令は実行時に、前記マシーンに、
前記第1のユーザインタフェースが前記第1のクライアントオブジェクトの使用を終了した後、前記第1のクライアントオブジェクトが非アクティブであると特定させる、請求項11に記載のマシーンアクセス可能な媒体。
【請求項14】
前記命令は実行時に、前記マシーンに、
前記第1のクライアントオブジェクトハンドルをアンロードさせる、請求項13に記載のマシーンアクセス可能な媒体。
【請求項15】
前記命令は実行時に、前記マシーンに、
更新通知に応答して前記第1のユーザインタフェースまたは前記第2のユーザインタフェースと関連したプロセスコントロールデータを更新させる、請求項11に記載のマシーンアクセス可能な媒体。
【請求項16】
プロセスコントロールデータへのアクセスと関連した事前生成クラス要素を含む事前生成パーシャルクラスと、
前記事前生成パーシャルクラスと関連し、かつ前記事前生成クラス要素を介してプロセスコントロールデータにアクセス可能なユーザ定義クラス要素を有するユーザ生成パーシャルクラスと、
前記事前生成パーシャルクラスおよび前記ユーザ生成パーシャルクラスに基づいてクライアントオブジェクトのインスタンスを作成するように構成され、かつ前記事前生成およびユーザ定義クラス要素に基づいてプロセスコントロールデータにアクセスするように構成されたユーザインタフェースと、
オブジェクトハンドルと、前記クライアントオブジェクトと関連したリアルオブジェクトとをロードし、前記オブジェクトハンドルおよび前記リアルオブジェクトを介して前記クライアントオブジェクトとサーバー間でプロセスコントロールデータを通信するように構成されたクライアントモデルと、
を含むプロセスコントロールデータアクセスシステム。
【請求項17】
前記事前生成パーシャルクラスおよび前記ユーザ生成パーシャルクラスが完成クラスを形成する、請求項16に記載のシステム。
【請求項18】
前記事前生成パーシャルクラスおよび前記ユーザ生成パーシャルクラスの前記事前生成およびユーザ生成クラス要素は継承または集約によって共有される、請求項16に記載のシステム。
【請求項19】
前記事前生成パーシャルクラスおよび前記ユーザ生成パーシャルクラスは、前記事前生成およびユーザ定義クラス要素を複数の名前空間にわたって共有するように構成されている、請求項16に記載のシステム。
【請求項20】
前記ユーザインタフェースが、前記事前生成クラス要素または前記ユーザ定義クラス要素と関連したプロパティにデータ結合されるように構成されたI/Oコントロールを含む、請求項16に記載のシステム。
【請求項21】
前記クライアントモデルが、修正済みプロセスコントロールデータと関連した更新情報をクライアントアプリケーションに通信するように構成されている、請求項16に記載のシステム。
【請求項22】
前記ユーザインタフェースが、前記更新情報で特定された前記修正済みプロセスコントロールデータのいずれかが前記クライアントオブジェクトと関連しているかを判断するように構成されている、請求項21に記載のシステム。
【請求項23】
前記ユーザインタフェースが、前記修正済みプロセスコントロールデータのいずれかが前記クライアントオブジェクトと関連しているか、前記ユーザインタフェースが前記クライアントオブジェクトの使用を要する場合に前記クライアントハンドルを使用済みとフラグするように構成されている、請求項21に記載のシステム。
【請求項24】
前記クライアントモデルが、前記リアルオブジェクトに基づいて複数のサーバーと通信するように構成されている、請求項16に記載のシステム。
【請求項25】
前記複数のサーバーが、記憶されているプロセスコントロールデータと関連したデータベースサーバー、あるいはリアルタイムプロセスコントロールデータと関連したランタイムサーバーを含む、請求項24に記載のシステム。
【請求項26】
前記リアルオブジェクトが、サーバースキーマ階層に基づいて組織化されたプロセスコントロールデータを取得するように構成されている、請求項16に記載のシステム。
【請求項27】
前記クライアントオブジェクトが、クライアントスキーマ階層に基づいて組織化された前記プロセスコントロールデータを取得するように構成されている、請求項16に記載のシステム。
【請求項28】
前記クライアントモデルが、前記プロセスコントロールデータをサーバースキーマ階層からクライアントスキーマ階層にマッピングするように構成されている、請求項16に記載のシステム。
【請求項29】
修正済みプロセスコントロールデータと関連した更新通知イベントを取得するステップと、
前記更新通知イベントに基づいて前記修正済みプロセスコントロールデータと関連したオブジェクトを識別するステップと、
前記オブジェクトと関連した前記修正済みプロセスコントロールデータを検索するステップと、
前記修正済みプロセスコントロールデータが、前記オブジェクトと関連したロード済みプロセスコントロールデータと異なるか否かを判断するステップと、
前記修正済みプロセスコントロールデータが前記ロード済みプロセスコントロールデータと異なる場合に前記修正済みプロセスコントロールデータに基づいてクライアントアプリケーションと関連した値を更新するステップと、
を含むプロセスコントロールデータ修正方法。
【請求項1】
ユーザインタフェースリクエストに応答して第1および第2のクライアントオブジェクトをロードするステップであって、前記第1および第2のクライアントオブジェクトは、クライアントスキーマに基づいて組織化されたプロセスコントロールデータへのアクセスと関連しているステップと、
前記第1および第2のクライアントオブジェクトと関連し、かつサーバースキーマに基づいて組織化されたプロセスコントロールデータを取得するように構成されたリアルオブジェクトをロードするステップと、
プロセスコントロールデータを前記サーバースキーマ組織から前記クライアントスキーマ組織にマッピングして、前記プロセスコントロールデータを前記第1および第2のクライアントオブジェクトに通信するステップと、
前記第1のクライアントオブジェクトと関連した第1のユーザインタフェースおよび前記第2のクライアントオブジェクトと関連した第2のユーザインタフェースを介して前記プロセスコントロールデータを取得するステップと、
を含むプロセスコントロールデータアクセス方法。
【請求項2】
前記プロセスコントロールデータが、少なくとも1つのマスクに基づいて前記サーバースキーマ組織から前記クライアントスキーマ組織にマッピングされる、請求項1に記載の方法。
【請求項3】
前記第1のユーザインタフェースが前記第1クライアントオブジェクトの使用を終了した後、前記第1クライアントオブジェクトが非アクティブであると特定するステップをさらに含む、請求項1に記載の方法。
【請求項4】
前記第1のクライアントオブジェクトハンドルをアンロードするステップをさらに含む、請求項3に記載の方法。
【請求項5】
更新通知に応答して前記第1のユーザインタフェースまたは前記第2のユーザインタフェースと関連したプロセスコントロールデータを更新するステップをさらに含む、請求項1に記載の方法。
【請求項6】
プロセッサシステムと、
前記プロセッサシステムに通信可能に接続されたメモリであって、前記プロセッサシステムが、
ユーザインタフェースリクエストに応答して第1および第2のクライアントオブジェクトをロードすることであって、前記第1および第2のクライアントオブジェクトはクライアントスキーマに基づいて組織化されたプロセスコントロールデータへのアクセスと関連していることと、
前記第1および第2クライアントオブジェクトと関連し、かつサーバースキーマに基づいて組織化されたプロセスコントロールデータを取得するように構成されたリアルオブジェクトをロードすることと、
プロセスコントロールデータを前記サーバースキーマ組織から前記クライアントスキーマ組織にマッピングして、前記プロセスコントロールデータを前記第1および第2のクライアントオブジェクトに通信することと、
前記第1のクライアントオブジェクトと関連した第1のユーザインタフェースおよび前記第2のクライアントオブジェクトと関連した第2のユーザインタフェースを介して前記プロセスコントロールデータを取得すること、
を可能にする記憶された命令を含むメモリと、
を含む、プロセスコントロールデータアクセス装置。
【請求項7】
前記命令は前記プロセッサシステムが、少なくとも1つのマスクに基づいて前記プロセスコントロールデータを前記サーバースキーマ組織から前記クライアントスキーマ組織にマッピングできるようにする、請求項6に記載の装置。
【請求項8】
前記命令は前記プロセッサシステムが、前記第1のユーザインタフェースが前記第1のクライアントオブジェクトの使用を終了した後、前記第1のクライアントオブジェクトが非アクティブであると特定できるようにする、請求項6に記載の装置。
【請求項9】
前記命令は前記プロセッサシステムが、前記第1のクライアントオブジェクトハンドルをアンロードできるようにする、請求項8に記載の装置。
【請求項10】
前記命令は前記プロセッサシステムが、更新通知に応答して、前記第1のユーザインタフェースまたは前記第2のユーザインタフェースと関連したプロセスコントロールデータを更新できるようにする、請求項6に記載の装置。
【請求項11】
命令を記憶するマシーンアクセス可能な媒体であって、
前記命令は実行時に、マシーンに、
ユーザインタフェースリクエストに応答して第1および第2のクライアントオブジェクトをロードすることであって、前記第1および第2のクライアントオブジェクトはクライアントスキーマに基づいて組織化されたプロセスコントロールデータへのアクセスと関連していることと、
前記第1および第2のクライアントオブジェクトと関連し、かつサーバースキーマに基づいて組織化されたプロセスコントロールデータを取得するように構成されたリアルオブジェクトをロードすることと、
プロセスコントロールデータを前記サーバースキーマ組織から前記クライアントスキーマ組織にマッピングし、前記プロセスコントロールデータを前記第1および第2のクライアントオブジェクトに通信することと、
前記第1のクライアントオブジェクトと関連した第1のユーザインタフェースおよび前記第2のクライアントオブジェクトと関連した第2のユーザインタフェースを介して前記プロセスコントロールデータを取得すること、
をさせるマシーンアクセス可能な媒体。
【請求項12】
前記命令は実行時に、前記マシーンに、
少なくとも1つのマスクに基づいて前記プロセスコントロールデータを前記サーバースキーマ組織から前記クライアントスキーマ組織にマッピングさせる、請求項11に記載のマシーンアクセス可能な媒体。
【請求項13】
前記命令は実行時に、前記マシーンに、
前記第1のユーザインタフェースが前記第1のクライアントオブジェクトの使用を終了した後、前記第1のクライアントオブジェクトが非アクティブであると特定させる、請求項11に記載のマシーンアクセス可能な媒体。
【請求項14】
前記命令は実行時に、前記マシーンに、
前記第1のクライアントオブジェクトハンドルをアンロードさせる、請求項13に記載のマシーンアクセス可能な媒体。
【請求項15】
前記命令は実行時に、前記マシーンに、
更新通知に応答して前記第1のユーザインタフェースまたは前記第2のユーザインタフェースと関連したプロセスコントロールデータを更新させる、請求項11に記載のマシーンアクセス可能な媒体。
【請求項16】
プロセスコントロールデータへのアクセスと関連した事前生成クラス要素を含む事前生成パーシャルクラスと、
前記事前生成パーシャルクラスと関連し、かつ前記事前生成クラス要素を介してプロセスコントロールデータにアクセス可能なユーザ定義クラス要素を有するユーザ生成パーシャルクラスと、
前記事前生成パーシャルクラスおよび前記ユーザ生成パーシャルクラスに基づいてクライアントオブジェクトのインスタンスを作成するように構成され、かつ前記事前生成およびユーザ定義クラス要素に基づいてプロセスコントロールデータにアクセスするように構成されたユーザインタフェースと、
オブジェクトハンドルと、前記クライアントオブジェクトと関連したリアルオブジェクトとをロードし、前記オブジェクトハンドルおよび前記リアルオブジェクトを介して前記クライアントオブジェクトとサーバー間でプロセスコントロールデータを通信するように構成されたクライアントモデルと、
を含むプロセスコントロールデータアクセスシステム。
【請求項17】
前記事前生成パーシャルクラスおよび前記ユーザ生成パーシャルクラスが完成クラスを形成する、請求項16に記載のシステム。
【請求項18】
前記事前生成パーシャルクラスおよび前記ユーザ生成パーシャルクラスの前記事前生成およびユーザ生成クラス要素は継承または集約によって共有される、請求項16に記載のシステム。
【請求項19】
前記事前生成パーシャルクラスおよび前記ユーザ生成パーシャルクラスは、前記事前生成およびユーザ定義クラス要素を複数の名前空間にわたって共有するように構成されている、請求項16に記載のシステム。
【請求項20】
前記ユーザインタフェースが、前記事前生成クラス要素または前記ユーザ定義クラス要素と関連したプロパティにデータ結合されるように構成されたI/Oコントロールを含む、請求項16に記載のシステム。
【請求項21】
前記クライアントモデルが、修正済みプロセスコントロールデータと関連した更新情報をクライアントアプリケーションに通信するように構成されている、請求項16に記載のシステム。
【請求項22】
前記ユーザインタフェースが、前記更新情報で特定された前記修正済みプロセスコントロールデータのいずれかが前記クライアントオブジェクトと関連しているかを判断するように構成されている、請求項21に記載のシステム。
【請求項23】
前記ユーザインタフェースが、前記修正済みプロセスコントロールデータのいずれかが前記クライアントオブジェクトと関連しているか、前記ユーザインタフェースが前記クライアントオブジェクトの使用を要する場合に前記クライアントハンドルを使用済みとフラグするように構成されている、請求項21に記載のシステム。
【請求項24】
前記クライアントモデルが、前記リアルオブジェクトに基づいて複数のサーバーと通信するように構成されている、請求項16に記載のシステム。
【請求項25】
前記複数のサーバーが、記憶されているプロセスコントロールデータと関連したデータベースサーバー、あるいはリアルタイムプロセスコントロールデータと関連したランタイムサーバーを含む、請求項24に記載のシステム。
【請求項26】
前記リアルオブジェクトが、サーバースキーマ階層に基づいて組織化されたプロセスコントロールデータを取得するように構成されている、請求項16に記載のシステム。
【請求項27】
前記クライアントオブジェクトが、クライアントスキーマ階層に基づいて組織化された前記プロセスコントロールデータを取得するように構成されている、請求項16に記載のシステム。
【請求項28】
前記クライアントモデルが、前記プロセスコントロールデータをサーバースキーマ階層からクライアントスキーマ階層にマッピングするように構成されている、請求項16に記載のシステム。
【請求項29】
修正済みプロセスコントロールデータと関連した更新通知イベントを取得するステップと、
前記更新通知イベントに基づいて前記修正済みプロセスコントロールデータと関連したオブジェクトを識別するステップと、
前記オブジェクトと関連した前記修正済みプロセスコントロールデータを検索するステップと、
前記修正済みプロセスコントロールデータが、前記オブジェクトと関連したロード済みプロセスコントロールデータと異なるか否かを判断するステップと、
前記修正済みプロセスコントロールデータが前記ロード済みプロセスコントロールデータと異なる場合に前記修正済みプロセスコントロールデータに基づいてクライアントアプリケーションと関連した値を更新するステップと、
を含むプロセスコントロールデータ修正方法。
【図1】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【図13】
【図14】
【図15】
【図16】
【図17】
【図18】
【図19】
【図20】
【図21】
【図22】
【図23】
【図24】
【図25】
【図26】
【図27】
【図28】
【図29】
【図30】
【図31A】
【図31B】
【図32】
【図33】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【図13】
【図14】
【図15】
【図16】
【図17】
【図18】
【図19】
【図20】
【図21】
【図22】
【図23】
【図24】
【図25】
【図26】
【図27】
【図28】
【図29】
【図30】
【図31A】
【図31B】
【図32】
【図33】
【公開番号】特開2012−89166(P2012−89166A)
【公開日】平成24年5月10日(2012.5.10)
【国際特許分類】
【出願番号】特願2012−14447(P2012−14447)
【出願日】平成24年1月26日(2012.1.26)
【分割の表示】特願2007−511578(P2007−511578)の分割
【原出願日】平成17年5月4日(2005.5.4)
【出願人】(506266023)フィッシャー−ローズマウント・システムズ・インコーポレーテッド (37)
【氏名又は名称原語表記】Fisher−Rosemount Systems, Inc.
【Fターム(参考)】
【公開日】平成24年5月10日(2012.5.10)
【国際特許分類】
【出願日】平成24年1月26日(2012.1.26)
【分割の表示】特願2007−511578(P2007−511578)の分割
【原出願日】平成17年5月4日(2005.5.4)
【出願人】(506266023)フィッシャー−ローズマウント・システムズ・インコーポレーテッド (37)
【氏名又は名称原語表記】Fisher−Rosemount Systems, Inc.
【Fターム(参考)】
[ Back to top ]