ここは旧式の4DドキュメントWebサイトです。最新のアップデートされたドキュメントを読むには新サイトをご利用下さい→ developer.4d.com

ホーム

 
4D v20 R7
4D Serverと4Dランゲージ

4D Serverと4Dランゲージ  


 

 

4D Serverで、サーバマシン上で4Dコードを実行する状況が4つあります:

  • トリガ
  • ストアドプロシージャ
  • "サーバ上で実行"属性が設定されたプロジェクトメソッド
  • データベースメソッド

トリガはテーブルに付属するメソッドです。トリガを使用すれば、データベースのレコードに対して"不正な"操作が行われるのを防ぐことができます。 トリガは、偶発的にデータが失われたり、変更されたりするのを防ぐだけでなく、テーブルに対する操作を制限するための非常に強力なツールです。例えば、請 求システムにおいて、誰かが請求先である顧客を指定せずに請求書を追加するのを防止することができます。

トリガは、データベースエンジンが実際に存在するマシン上で実行されます。
4D Serverでは、トリガはクライアントマシンではなく、サーバマシン上で実行されているプロセスのコンテキストで実行されます。すなわちトリガは、デー タベース処理を呼び出したユーザプロセスに対応するサーバプロセスのコンテキストで実行されます (特にトランザクションの状態とレコードロック) が、ランゲージコンテキスト (変数、プロセス、セット、カレントセレクション) は共有しません。ただしトリガテーブルのカレントレコードはすべてのコンテキストで同じです。

トリガについては4D Language Referenceのトリガを参照してください。

注意: サーバー上では、トリガは割り当てられたアクション(作成/更新/削除)に対応したプロセス内で実行されます。アクションがサーバー上のプリエンプティブプロセス(例: ストアドプロシージャー、スケーラブルセッションモード内のhttpリクエスト)から引き起こされた場合、トリガは同じプリエンプティブプロセス内で実行されます。しかし、アクションが4Dリモートから引き起こされた場合、トリガはツインプロセス内で実行され、このツインプロセスは必ずコオペラティブモードとなります(ツインプロセスはそのユーザーの全ての呼び出しに対して共有されます)。詳細については  developer.4d.com 上のプリエンプティブプロセスのページ をご覧下さい。

4Dのストアードプロシージャは、それを起動したクライアントマシンの代わりに、サーバマシン上で実行されるプロセス内のプロセスメソッドを実行するプロジェクトメソッドです。ストアドプロシージャを参照してください。

サーバー上で実行されている全てのストアドプロシージャーは同じバーチャルユーザーセッションを共有します。このセッションはSession コマンドによってSession class オブジェクトとして返されます。

セッションオブジェクトを使用すると、セッションのについての情報を取得することができるようになる上に、.storage プロパティを使用することでプロセス間で情報を共有できるようになります。

バーチャルユーザーセッションは以下のコンテキストから利用可能です:

  • Execute on server コマンドで呼び出されたメソッド
  • On Server Startup、On Server Shutdown、On Backup Startup、On Backup Shutdown、およびOn System event データベースメソッド

注意: サーバー上の全てのユーザーセッションはそれぞれのセッションオブジェクトを持っています。詳細な情報については、developer.4d.com 上のこちらのページを参照してください。

"サーバ上で実行"の属性が指定されたプロジェクトメソッドもサーバ上で実行されます。しかしストアドプロシージャと異なり、このメソッドはクライアントプロセスに対応するサーバ上のプロセスで実行され、トリガのように、データベースコンテキストを利用できます。詳細はサーバー上で実行属性を参照してください。

4つのデータベースメソッドがサーバマシン上でのみ実行されます:

他の5つのデータベースメソッドはコンテキストに応じてサーバマシンおよびクライアントマシン両方で実行されます:

3つのデータベースメソッドはクライアントマシン上でのみ実行されます:

詳細はこのマニュアル内および4D Language Reference マニュアルのそれぞれ対応する節を参照してください。

  • 4D Server はインタープロセス変数テーブルを1つ維持します。これらの変数の有効範囲はサーバマシンです。コンパイルしたデータベースを実行している場合、インター プロセス変数テーブルの定義は、サーバマシンとすべてのクライアントマシンとで共通です。各マシンはそれぞれ独自のインスタンスを保持します。
  • すべてのプロセスと同様、それぞれのストアドプロシージャ、データベースメソッド、トリガは独自のプロセス変数テーブルを持ちます。これらのプロセス変数は実行の各フェーズの間、動的に作成、使用されます。

4D Serverにおいて、セットと命名セレクションの可視範囲はそれが作成された場所 (サーバプロセスまたはクライアントプロセス) およびそのオブジェクトタイプ (ローカル、プロセス、またはインタープロセスオブジェクト) に基づきます。詳細は4D Server: セットと命名セレクションを参照してください。

 
プロパティ 

プロダクト: 4D
テーマ: 4D Serverと4Dランゲージ

 
ページの目次 
 
履歴 

変更: 4D v20 R5

 
タグ 

Twin Process, twins

 
ARTICLE USAGE

4D Server ( 4D v20 R7)