version 6.5 (Modified)
コンテキストモードの例題
この節ではコンテキストモードで簡単にデータベースを公開する手順をお見せします。この自動モードは特にイントラネットサーバで使用できます。4D Webサーバの処理の基本的な原則をお見せします。
このデータベースのストラクチャ (この節の最後で説明) は単純です。データベースは一つのテーブルでできていて、入力フォーム、出力フォーム、およびメニューバーがあります。ホームページはカスタマイズされ、データベースはWebサーバとして公開されています。
1. Webサーバデータベースへの接続
WebブラウザからWebサーバとして公開されているデータベースに接続します。以下のようなWebページが表示されます:
2. レコードの表示とブラウズ
List Existing Recordsリンクをクリックします。4Dのセレクション表示と同等の機能を持つページがブラウザに表示されます:
この時点で、好きなようにレコードをブラウズできます。終了ボタンをクリックすると、Webサイトのホームページに戻ります。
3. レコードの追加
Webサイトのホームページで、Add Some Recordsリンクをクリックして4Dのレコード追加フォームと同等のページを表示します:
必要なだけレコードを追加できます。終了するにはキャンセルボタンをクリックして、Webサイトのホームページに戻ります。
4. メインメニュー中のレコード一覧とレコード追加
ホームページでGo to Main Menu Barボタンをクリックするとホームページを抜け、4Dカスタムメニューと同等の機能をもったページが表示されます:
この時点で、それぞれのメニュー項目をクリックすると、レコードを一覧したり追加したりできます。ホームページと同じメソッドがメニュー項目に割り当てられています。
5. 接続の終了
作業が終了したら、ブラウザを終了します。4Dはタイムアウト時間経過後、Web接続プロセスを終了します。
コンテキストモードでWeb接続を開始する
コンテキストモードで公開されている4DデータベースにWebブラウザが接続するたびに、4Dは以下のアクションを行います:
・On Web Authenticationデータベースメソッドが存在すれば実行します。
・このメソッドがTrueを返すか存在しない場合、On Web Connectionデータベースメソッドがあればそれを実行します。
・データベースメソッドが存在しないか、メソッドが終了すると、4Dは環境設定で定義されたデフォルトホームページがあればそれを表示します。
・デフォルトホームページが定義されていなければ、4Dはカレントのメニューバー (デフォルトでメニューバー#1) を表示します (あれば)。
・デフォルトホームページもメニューバーもなければ、4Dは"このデータベースはWeb用に設定されていません"ページを返します。
下図はこれらのアクションを図示しています:
On Web connection データベースメソッドは、データベースに定義されたプロジェクトメソッドやフォーム、またHTMLを呼び出すことができます。このデータベースメソッドは実際にセッション全体を処理します。
4Dや4D ServerへのWeb接続はクライアント/サーバの接続と同じではありません。HTMLとWebをわポートするHTTPプロトコルは、セッションベースのプロトコルではなく、リクエストベースのプロトコルです。クライアント/サーバで、あなたはサーバに接続し、セッションの中で処理を行い、そして接続を解除します。HTTPでは、Webサーバによる処理やWebサーバからのレスポンスが必要なアクションを行うたびに、リクエストがサーバに送信されます。つまり、HTTPリクエストは一連の “接続+リクエスト+回答待ち+切断” であると理解できます。
コンテキストモードで、HTTPでクライアント/サーバセッションを実行するために、デフォルトで4Dは透過的なURLのエンコーディングを使用して、Web接続を個別に識別し、同時に接続を処理する4Dプロセスへの接続を割り当てる、コンテキストを管理します。
しかしこのモードでは、4Dはセッションを終了するための、クライアント/サーバの切断アクションと同等の機能を持つことはできません。そのためセッションの終了はタイムアウトスキームで行われます。Web接続を処理する4Dプロセスは、最後のアクションからデータベースのWebタイムアウトに設定された遅延時間が過ぎたら終了します。
データベースとWebサーバ
あなたは完全に4D Webサーバセッションを4Dメニューバー、フォーム、メソッドを使用して、コンテキストモードで管理できます。先の例題で、レコードの一覧と追加は単純な4Dメソッドとフォームで行われました。HTMLホームページを用意していなければ、Webブラウザには接続時にメニューバーが表示されます。
HTMLのホームページを除くと、クライアント/サーバトランザクションをサポートするWebサーバの構築は、WindowsやMacintosh上でシングル、あるいはマルチユーザの4Dデータベースを構築することと同じです。以下のステップでは例題データベースの作成方法を示します。
・これは例題データベースのストラクチャです:
・入力および出力フォームを作成し、レコードを処理できるようにします。
・メニューバー #1 を追加してWeb接続をサポートし、カスタムメニューで作業ができるようにします。
・以下の2つのプロジェクトメソッドを書きます:
` M_ADD_RECORDS project method C_TEXT($1) ` この引数は明示的に宣言しなければならない Repeat ADD RECORD ([Clients]) Until (OK=0)
` M_LIST_RECORDS project method C_TEXT($1) ` この引数は明示的に宣言しなければならない ALL RECORDS ([Clients]) MODIFY SELECTION([Clients])
"新規プロセスを開始" 属性がメソッドに割り当てられます。
・Webサーバがコンテキストモードで開始されるよう、またデフォルトのホームページをデータベースの環境設定で設定します:
・ホームページには2つのリンク“Add Some Records” と“List Existing Records"が置かれ、URLを使用して4DのプロジェクトメソッドM_ADD_RECORDSとM_LIST_RECORDSの実行をトリガします。URL "/4DMETHOD/Name_of_your_Method"を使用して、HTMLオブジェクトをデータベースのプロジェクトメソッドにリンクできます。4DACTION、4DMETHODおよび4DSCRIPTで利用可能属性が、4DMETHODを使用して呼び出されるメソッドごとに割り当てられていなければなりません:
これらのリンクが定義されると、WebブラウザがURLを送り返してきた時、4Dは/4DMETHOD/キーワードの後ろで指定されたプロジェクトメソッドを実行します。プロジェクトメソッドの実行が終了した後、実行をトリガしたHTMLページに戻ります。プロジェクトフォーム自身が4Dフォームや他のHTMLページなどを表示できることに留意してください。
4DベースのWebサイトは、完全に4Dベースのシステムでも、あるいは4DフォームとHTMLの合成システムとしてでも、作成できます。4Dデータベース内からのHTMLを使用する場合の興味深い点は、4DとHTML開発環境両方の利点を得られるということです。必要なければHTMLを使用しなくてもよいということを覚えておいてください。
この例題のHTMLホームページはレコードを送信するためのボタンを含んでいます。HTMLには3つのタイプのボタンがあります: 通常, 送信, リセット.
・通常 - 通常ボタンには/4DMETHOD/キーワードを使用して、4Dメソッドを割り当てることができます。通常ボタンはナビゲーションの目的で使用されます。
・送信 - 送信ボタンは、(ユーザ入力値があればそれとともに) フォームをWebサーバに送信します。これは4Dフォームではなく、HTMLを使用してデータ入力を処理したい場合に使用します。
・リセット - リセットボタンは4Dによる開発時にはさほど便利なものではありません。このボタンはユーザにより入力されたフォームの値をクリアします。サーバにリクエストは送信しません。
4DにHTMLページを統合する際、特に通常型や送信型のボタンを使用します。ホームページのボタンのコードは以下のようになります: INPUT TYPE="SUBMIT" NAME="/4DMETHOD/GO_MAIN_MENUBAR"
送信されたHTMLフォームを4D側で処理するには、フォームが送信されたときに4Dが実行するPOSTアクションメソッドを指定する必要があります。
これを行うには、以下のコードが含まれていなければなりません: FORM ACTION="/4DMETHOD/GO_MAIN_MENU_BAR" METHOD="POST"
・GO_MAIN_MENU_BAR プロジェクトメソッドは以下のとおりです:
SET HOME PAGE("")
この例題では、このメソッドはただ一つの目的を持っています。それはWebブラウザに表示されているカレントのデフォルトホームページを抜け、カレントのメニューバーを送信することです。4Dはデータベースのメニューバー#1にスイッチします。
以上です。
5分以内に、ローカルおよびイントラネットやインターネットに公開可能なWebサーバとして動作する4Dデータベースを作成しました。
参照
SEND HTML FILE, SET WEB DISPLAY LIMITS, SET WEB TIMEOUT, START WEB SERVER, STOP WEB SERVER.