フック一覧 Central (画面フック) | 前の画面フック 次の画面フック |
VB C# ALL プログラミング言語によるフィルタ (ここで選んだ言語で選別された説明や図だけが表示されます)
◇ 役割 (この画面フックメソッドに委託されている処理)
ローカル側の FormBase のメソッド invokeCentral のパラメタで指定されたオブジェクトをセントラル側で受信し、セントラル側で行うべき処理を実施し、その処理の結果として作成されたオブジェクトをローカル側に送り返す。
なお、ワンピーススタイルの場合は、ローカル・セントラル間の通信がなされないだけで、 ツーピーススタイルの場合と同じように動作する。
◇ 配置 (ツーピーススタイルの場合にこの画面フックメソッドをどこに配置できるか)
セントラルピースに配置するか、または配置しない。ローカルピースに配置することは禁止されている。
◇ 代表的な書き方 (詳しい構文はフックメソッドの書き方を参照)
VB での書き方:
Friend Function Central(パラメタ宣言列) As Object
または
Friend Function 画面略称_Central(パラメタ宣言列) As Object
パラメタ宣言列の中には、この画面フックメソッド固有のパラメタとして ByVal Rm_Object As Object を含めることができる。
C# での書き方:
internal object Central(パラメタ宣言列)
または
internal object 画面略称_Central(パラメタ宣言列)
パラメタ宣言列の中には、この画面フックメソッド固有のパラメタとして object Rm_Object を含めることができる。
Java での書き方:
Object Central(パラメタ宣言列)
または
Object 画面略称_Central(パラメタ宣言列)
パラメタ宣言列の中には、この画面フックメソッド固有のパラメタとして Object Rm_Object を含めることができる。
Rm_Object には、ローカル側から送り込まれた送付オブジェクトが設定されている。
なお、フック名としては、Central の他に中央局処理を用いることができる。
◇ 呼び出される契機 (以下が切っ掛けとなりこのフックメソッドが呼び出される)
普通のフックメソッドは、アプリ操作者の操作・指示を契機として呼び出されるが、このフックメソッドはローカル側の FormBase のメソッド invokeCentral の呼出しを契機として呼び出される。
すなわち、ローカル側で FormBase のメソッド invokeCentral が呼び出されると、 ローカル・セントラル間の通信がなされ、セントラル側の Central フックメソッドが呼び出される。
なお、ワンピーススタイルの場合には、ローカル・セントラル間の通信がなされないだけで、 ツーピーススタイルの場合と同じように動作する。
◇ 戻り値の意味とデフォルト動作(戻り値による FormBase への伝言)
セントラル側で行うべき処理を実施し、その処理の結果を示すために、オブジェクトを作成して戻り値とするか、または Nothing (null) を戻り値とする。この戻り値がローカル側の呼出し元 invokeCentral の戻り値となる。
◇ 代行メッセージ (処理の流れに応じて発せられるメッセージ; カスタマイズ可能)
(関係する代行メッセージなし)
◇ 使用上のヒントと注意事項
特定の項目固有のセントラル側の呼出し処理は、この画面フックメソッドではなく、項目フックメソッド Central で行ってください。
Rm_Object には、ローカル側で呼び出した FormBase の invokeCentral メソッドに渡したパラメタ (Object 型) の内容が格納されている。
送受信するオブジェクトは、<Serializable()> または [Serializable()] 指定をした Public Class として、ローカル・セントラル双方のソリューションから共に参照できるアセンブリに含めて、ローカルプロジェクトおよびセントラルプロジェクトから参照設定することが必要。したがって、これらを定義したクラスモジュールは、ca プロジェクトに含めるのがお勧め。
送受信するオブジェクトは、java.io.Serializable インターフェースを実装した public クラスとして、ローカル・セントラル双方から共に参照できることが必要。したがって、これらを定義したクラスモジュールは、ca プロジェクトに含めるのがお勧め。
◇ 関連事項
RHMI (Remote Hook Method Invocation) に関係するフックメソッドには、
画面フックメソッド Central (本フックメソッド),項目フックメソッド Central,画面フックメソッド Local,項目フックメソッド Local の四つがある。
これらのフックメソッドは、それぞれローカル側の FormBase のメソッド invokeCentral,ローカル側の ItemBase のメソッド invokeCentral,セントラル側の FormBase のメソッド invokeLocal,セントラル側の ItemBase のメソッド invokeLocal の呼出しを契機として呼び出される。
◇ 使用例
' フックメソッド Central を呼び出すローカル側のプログラム。 Dim JutyuCdObj As Records.JutyuCd = CType(fB.invokeCentral(Nothing), Records.JutyuCd)
' 画面データの選択の際に候補として表示するレコード群をローカル側に返送する (Central)。 Friend Function 中央局処理(ByVal fB As FormBase, ByVal Rm_Object As Object) As Object Dim co As Common = CType(fB.getCommon(), Common) Dim JutyuCdObj As Records.JutyuCd = New Records.JutyuCd(メインレコード.RecordCount) ' co.受注レコード.SetCursorForAllRecords() Dim wk_Return As Integer = co.受注レコード.ReadSequential() Dim I As Integer = 0 While wk_Return = 0 Dim 戻り値 As Integer = co.発注元レコード.SelectEqual(co.受注レコード.発注元コード) If 戻り値 <> 0 Then co.発注元レコード.発注元名称 = "(不明)" + VB.Strings.Space(18) JutyuCdObj.受注コード(I) = co.受注レコード.受注コード JutyuCdObj.受注日付(I) = co.受注レコード.受注日付 JutyuCdObj.発注元名称(I) = co.発注元レコード.発注元名称 wk_Return = co.受注レコード.ReadSequential() I += 1 End While ' Return JutyuCdObj End Function ' 中央局処理
// フックメソッド Central を呼び出すローカル側のプログラム。 // Records.JutyuCd JutyuCdObj = (Records.JutyuCd)fB.invokeCentral(null);
// 画面データの選択の際に候補として表示するレコード群をローカル側に返送する (Central)。 internal object 中央局処理( FormBase fB, object Rm_Object ) { Common co = (Common)fB.getCommon(); Records.JutyuCd JutyuCdObj = new Records.JutyuCd(メインレコード.RecordCount); // co.受注レコード.SetCursorForAllRecords(); int wk_Return = co.受注レコード.ReadSequential(); int I = 0; while (wk_Return == 0) { int 戻り値 = co.発注元レコード.SelectEqual(co.受注レコード.発注元コード); if (戻り値 != 0) co.発注元レコード.発注元名称 = "(不明)" + Strings.Space(18); JutyuCdObj.受注コード[I] = co.受注レコード.受注コード; JutyuCdObj.受注日付[I] = co.受注レコード.受注日付; JutyuCdObj.発注元名称[I] = co.発注元レコード.発注元名称; wk_Return = co.受注レコード.ReadSequential(); I += 1; } // return JutyuCdObj; } // 中央局処理
// フックメソッド Central を呼び出すローカル側のプログラム。 Records.JutyuCd JutyuCdObj = (Records.JutyuCd) fB.invokeCentral(null);
// 画面データの選択の際に候補として表示するレコード群をローカル側に返送する (Central)。 Object 中央局処理( FormBase fB, Object Rm_Object ) { Common co = (Common) fB.getCommon(); Records.JutyuCd JutyuCdObj = new Records.JutyuCd( メインレコード.RecordCount); // co.受注レコード.SetCursorForAllRecords(); int wk_Return = co.受注レコード.ReadSequential(); int I = 0; while (wk_Return == 0) { int 戻り値 = co.発注元レコード.SelectEqual(co.受注レコード.発注元コード); if (戻り値 != 0) co.発注元レコード.発注元名称 = "(不明)" + Strings.Space(18); JutyuCdObj.受注コード[I] = co.受注レコード.受注コード; JutyuCdObj.受注日付[I] = co.受注レコード.受注日付; JutyuCdObj.発注元名称[I] = co.発注元レコード.発注元名称; wk_Return = co.受注レコード.ReadSequential(); I += 1; } // return JutyuCdObj; } // 中央局処理