予期しない Get 呼び出し

サーバー リクエストの大部分は、予測可能であり、記録スクリプトにより正確に処理されます。スクリプトの再生中に、スクリプトの記録中に送信しなかった追加の Get 呼び出しをサーバーが自発的に送信することがあります。このような場合は、クライアントはデフォルトの回答のみをサーバーに送信できます。サーバーがデフォルト回答を受け入れる場合は、エラーなしで再生が続行されます。ただし、サーバーがデフォルトの回答を受け入れ不能とみなす場合は、手動で OraFormsSet 関数と OraFormsOnMessageGet 関数をスクリプト化し、サーバーの Get 呼び出しに対する正しいレスポンスを作成する必要があります。

たとえば、サーバーが UI コントロールの VALUE プロパティを問い合わせる Get リクエストを自発的に送る場合を考えます。スクリプトにはこの Get リクエストを処理するスクリプト化関数がないので、クライアントは文字列のデフォルト値 (null) を返信します。サーバーはこの回答を受け入れません。クライアントへの接続が異常終了し、再生スクリプトでエラーが発生します。

このような状況に対応するために追加の Get 関数をスクリプトに手動で追加するには、クライアントとサーバー間で交換される受信データと送信データを解析することが必要です。この解析を実行できるのは、Silk Performer のログ レベルに [デバッグ] を設定した場合のみです。

注: テストを実行する前に、ログ レベルに [デバッグ] を設定しなかった場合は、設定を変更してからテストを再実行し、必要なデバッグ データを生成する必要があります。
注: また、Oracle Forms サーバーでの record=names パラメータは、スクリプトの正確な記録を可能にするために有効にする必要があります。

スクリプト化した OraFormsOnMessageGet 関数では、関連する UI 要素に対する後続の Get 呼び出しに対して、デフォルトの回答とは異なる回答を用意する必要があります。

注: 実際に、スクリプトで回答を用意するのは、OraFormsSet 関数です (OraFormsOnMessageGet 関数呼び出しの前の行にある)。

次の BDL スクリプトの例で示すとおり、Get 呼び出しが処理されるとき、スクリプトを下から上に読む必要があります。

OraFormsSetRectangle("VISIBLERECT", 0, 0, 119, 24, ORA_SET_TYPE_MESSAGEGET);
OraFormsOnMessageGet("LINE_CUSTOMER_ITEM_DSP_0"); // Requested Item
OraFormsMouseClick("LINE_CUSTOMER_ITEM_DSP_0", 70, 18, 0); //
Requested Item

このコード例は次のように解釈できます。クライアントの UI 要素 LINE_CUSTOMER_ITEM_DSP_0 上でマウスがクリックされます。これは、OraFormsMouseClick 関数で表現されます。マウスがクリックされると、サーバーから Get 呼び出しを受信することが予測されます。マウスがクリックされる前に Get 呼び出しに対して準備するには、OraFormsOnMessageGet 関数を挿入します。ここで、サーバーがプロパティ VISIBLERECT を要求することを予測し、OraFormsSetRectangle 関数を使用して、rectangle タイプのプロパティ値を OraFormsOnMessageGet 関数の前のスタックに配置します。