XML ブローカの使い方
多層アプリケーションの作成:インデックス への移動
XML ブローカはブラウザから XML デルタ パケットのフォームで更新を受信し、それをアプリケーション サーバーに適用します。
XML ブローカを Web モジュール(または、TWebDispatcher を含むデータ モジュール)に追加すると、自分自身を自動ディスパッチ オブジェクトとして、Web ディスパッチャに自動的に登録します。これはつまり、他のコンポーネントとは異なり、XML ブローカはアクション項目を作成しなくても、Web ブラウザからの更新メッセージに応答できることを意味します。これらのメッセージは、アプリケーション サーバーに適用しなければならない XML デルタ パケットが含まれます。大抵は、Web クライアント アプリケーションによって生成された HTML ページの 1 つに作成するボタンから発生します。
ディスパッチャが XML ブローカに対するメッセージを認識できるようにするには、トピック「リクエスト メッセージのディスパッチ」にあるように、記述されていなければなりません。
ディスパッチャが、XML ブローカへ更新メッセージを渡す際、その更新をアプリケーション サーバーへも渡し、もし更新エラーがあった場合には、すべての更新エラーを記述した XML デルタ パケットを受け取ります。最後に、レスポンス メッセージをブラウザに返すと、ブラウザは XML デルタ パケットを生成したのと同じページにリダイレクトされるか、新しい内容が送信されます。
数多くのイベントによって、この更新プロセスのあらゆるステップにおいて、独自の処理を挿入することができます:
- ディスパッチャは、最初に更新メッセージを XML ブローカに渡す際に、XMLBrokr.TXMLBroker.BeforeDispatch イベントを受け取ります。ここでは、リクエストを事前処理したり、リクエストを完全に処理することさえも可能です。このイベントにより、XML ブローカは、更新メッセージ以外のメッセージも処理することができます。
- BeforeDispatch イベント ハンドラがメッセージを処理しない場合、XML ブローカは XMLBrokr.TXMLBroker.OnRequestUpdate イベントを受け取ります。ここでは、デフォルト処理を使用するのではなく、更新を自分自身で適用することができます。
- OnRequestUpdate イベント ハンドラがリクエストを処理しない場合、XML ブローカは、更新を適用し、更新エラーを保有しているデルタ パケットを受け取ります。
- 更新エラーがない場合、XML ブローカは XMLBrokr.TXMLBroker.OnGetResponse イベントを受け取ります。ここでは、更新が正常に適用された旨のレスポンス メッセージを作成したり、更新されたデータをブラウザに送信します。OnGetResponse イベント ハンドラがレスポンスを完了していない場合(Handled パラメータに True を設定していない場合)、XML ブローカは、デルタ パケットを生成したドキュメントへ、ブラウザをリダイレクトするレスポンスを送信します。
- 更新エラーが起こった場合、XML ブローカは、XMLBrokr.TXMLBroker.OnGetErrorResponse イベントを代わりに受け取ります。このイベントを使用して、更新エラーの解決を試行したり、更新エラーをエンド ユーザーに対して記述する Web ページを生成することができます。OnGetErrorResponse イベント ハンドラがレスポンスを完了していない場合(Handled パラメータに True を設定していない場合)、XML ブローカは、レスポンス メッセージのコンテンツを生成するために、ReconcileProducer と呼ばれる特殊なコンテンツ プロデューサを呼び出します。
- 最後に、XML ブローカは XMLBrokr.TXMLBroker.AfterDispatch イベントを受け取ります。ここでは、Web ブラウザにレスポンスを返す前に、最後にアクションを実行させることができます。