サーバ上で実行属性

4D - Documentation   French   English   German   日本語   4D Serverテーマリスト   4D Serverインデックス   戻る   前   次

version 11.2


"サーバ上で実行"プロジェクトメソッド属性はメソッドプロパティダイアログや属性の一括設定ダイアログを使用して設定できます:

このオプションがチェックされていると、プロジェクトメソッドは、それが呼ばれる方法に関わらず、常にサーバ上で実行されます。

Note: この属性はクライアント/サーバモードの4Dアプリケーションでのみ考慮されます。

実行コンテキスト

この属性がチェックされていると、プロジェクトメソッドの実行コンテキストはトリガのそれと同じです。サーバ上のメソッドは、レコードのロックやトランザクションにおいて、クライアント側の対応するコンテキストと同じデータベースコンテキストを共有します (4D Server と 4D ランゲージ参照)。

メソッドのすべての引数 ($1, $2等) はサーバに送信され、$0が (使用されていれば) クライアントに返されます。

Execute on server コマンドと異なり、このオプションはサーバ上にプロセスを作成しません。4D Serverは、実行をリクエストしたクライアントプロセスに対応するサーバ側のクライアントプロセスを使用します。

さらにこのオプションは、普通のメソッド呼び出しのように、引数の交換が両方向で自動化されるので、サーバにメソッドの実行を移譲することが簡単になります。

Execute on server コマンドの場合、これは非同期で動作するため、追加のプログラミングと、結果を読み込むための待ち合わせが必要です。

使用できるコマンド

"サーバ上で実行"属性を持つメソッドは、4Dランゲージコマンドの利用においては、ストアドプロシージャと同じルールが適用されます。サーバ上ではいくつかのコマンドの実行は許可されず、いくつかは推奨されません。詳細はストアドプロシージャ節の"(サーバ上で実行される) ストアドプロシージャが行わないこと"を参照してください。

ポインタ

変数へのポインタ (変数、配列、または配列要素) を渡した場合、参照先の値もサーバに送信されます。サーバ上でメソッドにより参照先の値が更新されると、更新された値がクライアントに返され、クライアント側の対応する変数が更新されます。

テーブルやフィールドのポインタは参照として送られます (テーブル番号、フィールド番号)。カレントのレコード値は自動では交換されません。

Note: このオプションはインタプリタモードとコンパイルモードで同じように動作します。

例題

以下は"サーバ上で実行"属性が設定されたMyappliプロジェクトメソッドのコードです:

   C_POINTER($1) `ーブルへのポインタ
   C_POINTER($2) `フィールドへのポインタ
   C_POINTER($3) `配列へのポインタ
   C_TEXT($4) `検索する値
   C_LONGINT($0) `結果

      `検索を行いレコード毎の結果を返す
   QUERY($1-> ; $2-> = $4)
   While(Not(End selection($1->)))
      APPEND TO ARRAY($3-> ; myFormula($1))
      NEXT RECORD($1->)
   End while
   UNLOAD RECORD($1->)
   $0 := Records in selection( $1->)

クライアント側で、メソッドは以下のように呼び出されます:

   ARRAY TEXT(myArray; 0)
   $vlnum := MyAppli ( ->[Table_1] ; ->[Table_1]Field_1 ; ->myArray; "to find")

4D - Documentation   French   English   German   日本語   4D Serverテーマリスト   4D Serverインデックス   戻る   前   次