アシスタントがアプリケーションの他のパーツと対話処理する方法

Visual LANSA

アシスタントがアプリケーションの他のパーツと対話処理する方法


アシスタントはフリー・フローティングのモードレス・ウィンドウです。

アプリケーションの他のコンポーネントとイベントの通知を通して通信します。

アプリケーションの他のコンポーネントが通知するイベントをリスニングして反応します。

この非常にシンプルなアーキテクチャは柔軟性と拡張性に富んでいます。

以下に簡単なイベント・ドリブン対話処理のサンプルを示します。

例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-その他のアシスタントの使用法

以下はアシスタントの概念を拡張したアイデアの例です。

·         オールマイティなアシスタント。前述の例では独立した3つのアシスタントを使用しました。複数の項目を扱う1つのアシスタントを設計しても問題ありません。ユーザーとの対話処理によっては、例えば、単体で"CustomerSelected"、"ProductSelected"、"OrderSelected"を(適切なペイロードと共に)通知するアシスタントも簡単に設計できます。

·         通貨を計算し、"CurrencyCalculationPerformed"イベントを発行する"Currency Calculation Assistant"

·         現在のユーザーに関係するアラートやメッセージがないか、サーバー・アプリケーションを定期的に問い合わせる"Alerts and Messages Assistant"。もし何かが検出されたら、フレームワーク・レベルのコマンドに切り替えユーザーに詳細を伝えます。

·         エンド・ユーザーが制御の元で別のアプリケーション・ユーザーにメッセージを作成、送信できる"Chat and Messages Assistant"。おそらくこれは、前述の例に何らかの形でリンクされます(または単にその拡張形となります)。

·         エンド・ユーザーが起動したサーバー側のもの(例:レポート、出力待ち行列、メッセージ待ち行列、など)を表示、操作できる"Server"アシスタント