<< Click to Display Table of Contents >> トレーニング(PA-Panel) > エンジニアリングガイド > DCSサンプル解説 > フレームワークの仕組み > COREロジック |
COREロジックについて
PA-ClientはFrameworkのインポート後に、Framework側に含まれている「CORE」というフォームをHiddenフォームとしてオープンします。
具体的には以下のコードによりCOREフォームをHiddenフォームとしてオープンしています。
■COREフォームをHiddenフォームとしてロード
event OnLogin(login,level) { ・・・ ::AddResourceFile(vImport); ・・・ ::OpenHiddenForm("CORE"); ・・・ }
上スクリプトの「OpenHiddenForm」ルートメソッドの引数にフォーム名を渡して呼び出すと、指定されたフォームがHiddenフォームとしてオープンされます。HiddenとしてオープンされたCOREフォームは、システムの実行中、常に存在し続ける特別なフォームとなります。
また、COREフォームのフォームスクリプトには、フレームワーク固有の様々な共通ロジック(関数)が実装されています。この共通ロジックのことを「COREロジック」と称します。COREロジックはシステム実行中、スクリプトから自由に呼び出すことが可能であり、フレームワークの各種機能から呼び出して利用されています。
例)フォーム呼び出しロジック
::CORE.gOpenForm("_Trend._Main"); //トレンド画面をメインエリアに表示する |
COREフォーム上の個別ロジック
COREフォーム上には、システムの稼働中に常に実体化しておくべきコントロール群が配置されています。例えば、アラーム警報音を鳴動するためのロジックでは、リモートアラームクライアントコントロールやサウンドコントロールがバックグラウンドで常に実体化されている必要がありますが、CORE上にはそれらのオブジェクトが配置されています。
(COREフォーム上に配置された各種オブジェクト)
COREフォーム上には、アラームクライアントなどのように処理機能を持ったオブジェクトの他に、共通ロジックスクリプトをオブジェクトとしてまとめる目的で配置されたラベルコントロールがあります。それらは各Nameプロパティに「ViewLogic」「SymbolV6」「FacePlate」などのオブジェクト名として定義された「ラベルコントロール」ですが、これらのラベルオブジェクトは本来のラベル(=文字表示)としての用途ではなく、スクリプトを目的別に分けて実装するためのコンテナ的なオブジェクトの役目を担っています。これらのラベルのスクリプトには、「画面遷移」「シンボルバインド式生成」などのように、ある処理目的に関するロジックだけをあつめた関数群が「個別ロジック」として実装されています。
たとえば、グラフィックシンボルを例とした場合、グラフィック画面上に配置された各種グラフィックシンボルはグラフィック画面が開かれた際に内部で自動的にバインド式を生成し、構造化タグの値をシンボル自身に表示してくれます。この仕組みとしてはシンボル自身のOnInitializeイベントから必ず「SymbolV6」ラベルオブジェクト内のシンボルロジック「gBindSymbolScript()」を呼び出すことによって実現されています。
■COREフォーム上の個別ロジックの呼び出し例
COREフォーム上に実装されたロジックの呼び出しは、以下のように記述します(::CORE.オブジェクト名.メソッド名())。
例)バインド式の生成ロジック(シンボルロジック)
::CORE.SymbolV6.gBindSymbolScript(this); //バインド式の自動生成呼び出し |
COREグローバル変数・定数
COREロジックは、システムの起動時(サーバとの通信接続確立時)に各種環境設定ファイルの読み込みを行います。環境設定ファイルから読み込んだ各種設定値は、COREフォームのフォームスクリプト上に定義された変数に格納されます。これらの変数のことを、COREグローバル変数と称します。
また、COREフォームには、システム内部で利用される初期値(定数)を格納するための変数が宣言されています。例えば、環境設定ファイルの物理ファイル名などがまとめて定義されています。
COREグローバル変数・定数の宣言は、COREフォームスクリプトの先頭部分にまとめて記述されています。
各種機能からはCORE上のグローバル変数、定数を参照することで、システムの環境設定内容を知ることができます。
■COREグローバル変数の参照例
COREフォーム上に実装されたグローバル変数・定数の参照は以下のように記述します。
例)システムタイトルの参照
::OpenMsg(::CORE.gvSystemTitle); //システムタイトルをメッセージボックスで表示 |
例)アラームサウンド有効・無効
If(::CORE.gvIsAlarmSound == T) { //アラームサウンドを鳴動 } |
主要COREロジック
COREフォームに実装されている主要なCOREロジックとしては、以下のような機能があります(抜粋)。
特に、フォームの表示呼び出しなどの画面遷移に関する関数は、COREロジックの関数を利用する必要があります。
関数名 |
機能 |
gOpenForm() |
フォームの呼び出し全般を制御します。 rootの標準関数「::OpenForm()」のラップ関数です。フレームワークを利用する場合、フォームの呼び出しは必ずこの関数を使用します。 |
gOpenPrevForm() |
メインエリアに表示された「前画面」を表示します。 |
gOpenNextForm() |
メインエリアに表示された「次画面」を表示します。 |
gEventLog() |
画面操作履歴をイベント履歴に記録するための関数です。 |
gGetCurrentFolder |
クライアントアプリケーションのカレントフォルダを返します。 フレームワークを利用する場合、アプリケーションのカレントフォルダ取得は必ずこの関数を使用します。 |
gGetSavedataFolder |
クライアントアプリケーションのデータ保存先フォルダを返します。 フレームワークを利用する場合、アプリケーションのデータ保存先フォルダ(CSVファイルの保存先など)の取得は必ずこの関数を使用します。 |
gLogin() |
ログイン機能(ログインダイアログ)を呼び出します。 |
gLogout() |
ログアウトします。 |