6.5.2 データの共有

一例として、ショッピング・カートを共有する必要があるアプリケーションについて考えてみましょう。ショッピング・カートは、リストという形で表現できます。ショッピング・カートには、商品のID、商品名、数量が含まれます。顧客がショッピング・カートのリストに複数の商品を追加するWEBEVENTアプリケーションがあるとします。そのWEBEVENTのプログラムでは、STDANCHORに一意の識別子を割り当ててから、STDANCHORをキーとしてショッピング・カートのリスト項目をデータベース・テーブルに挿入できます。STDANCHORをDISPLAYコマンドに追加して、その値をフォームの非表示フィールドとして利用できるようにします。

WEBEVENTフォームをブラウザーで表示すると、そのフォームには、STDANCHORの一意の識別子も組み込まれています。「6. WAMとWEBEVENTの相互運用」で説明されているように、JavaScriptのHandleWAMEvent()関数を使用すれば、WAMを呼び出すことが可能です。

HandleWAMEvent()は、フォームの中のSTDANCHORフィールドを自動的に探して、その値も一緒に送信します。

WAM側では、STDANCHORフィールドをWEB_MAPに記述して、WebRoutineにマッッピングする必要があります。ターゲットWebRoutineが実行されると、WEB_MAPでWebRoutineにマップされているSTDANCHOR識別子の値やその他のフィールド値がHandleWAMEvent()経由で渡され、これをこのWebRoutineが受け取ります。このWebRoutineでは、STDANCHORキーを使用して、ショッピング・カートのリストをデータベース・テーブルから取得できます。さらに、WAMのセッション状態に属するWAMリストにそれらの値を置き、STDANCHORキーで識別されるデータをデータベースから削除できます。あるいは、データベースから古いデータを削除する特別なクリーンアップ・ジョブの実行スケジュールを設定することも可能です。

WAMからWEBEVENTにデータを渡すには、上の手順を逆の順序で実行します。JavaScriptのHandleWebEvent()関数が、WAMフォームの中のSTDANCHORフィールドを自動的に探して、その値を他の送信データと一緒に送信します。