アシスタントはフリー・フローティングのモードレス・ウィンドウです。
アプリケーションの他のコンポーネントとイベントの通知を通して通信します。
アプリケーションの他のコンポーネントが通知するイベントをリスニングして反応します。
この非常にシンプルなアーキテクチャは柔軟性と拡張性に富んでいます。
以下に簡単なイベント・ドリブン対話処理のサンプルを示します。
例1-クラシックなF4=プロンプト型の要求ユーザーに顧客番号の入力を要求する注文入力フォームがあるとします。
ユーザーはボタンまたはイメージ (例:クエスチョン・マーク) を押して顧客を入力したいことを表します。
Order Entry フォームが "SelectCustomer" イベントを通知します。イベントに関連付けた「ペイロード」の一部として、ユーザーがすでに入力した情報(例:顧客名の一部、番号、など)の詳細を、オプションで含む場合があります。
Customer Assistantが"SelectCustomer"イベントを検出し、ユーザーが要求する顧客の検索を可能にします。初期の検索をスピードアップしたり、検索対象を絞り込むためにイベントに関連した「ペイロード」が使える可能性があります。ユーザーが要求した顧客を発見し選択すると、Customer Assistantは、顧客番号(およびその名前を含む場合もある)をイベントに関連した「ペイロード」として含め、"CustomerSelected"イベントを通知します。
Order Entryフォームは"CustomerSelected"イベントを検出し、入力された注文詳細を選択された顧客の詳細で更新します。
例2-より高度な非モーダル・プロンプト要求Order Entryフォームは現在アクティブであるとします。
Customer Assistantウィンドウはフローティングで表示されているとします。
ユーザーは直接Customer Assistantウィンドウで顧客を検索します。ユーザーが要求した顧客を選択すると、Customer Assistantは、顧客番号(およびその名前を含む場合もある)をイベントに関連した「ペイロード」として含め、"CustomerSelected"イベントを通知します。
Order Entryフォームは"CustomerSelected"イベントを検出し、今入力された注文の詳細を選択した顧客の詳細で更新します。
特にWebアプリケーションではこの方法がプロンプトを出すのにより効率的です。この方法では対話処理を完了するための多くのリモート・サーバーとの対話処理が省かれるためです。
例3-マルチ項目プロンプトイベント・ドリブン処理では複数の項目を選択できます。
Order Entryフォームは現在アクティブであるとします。
Product Assistantウィンドウはフローティングで表示されているとします。
ユーザーは直接Product Assistantウィンドウで4つの異なる製品を選択します。選択が完了すると、Product Assistantは"ProductsSelected"イベントを通知します。Product Assistantは"ProductsSelected"イベントのペイロードとして製品番号(および製品の詳細を含む場合がある)のリストが含まれます。
Order Entryフォームは"ProductsSelected"イベントを検出し、今入力された注文の詳細で選択されたすべての製品を更新します。
例4-その他のアシスタントの使用法以下はアシスタントの概念を拡張したアイデアの例です。