メッセージ・ツールキット機能をアプリケーションに組み込む前に、アプリケーションのツールが他のツールと一緒に動作する方法を決定する必要があります。考慮すべき基本的な内容は以下のとおりです。
これらのツールはどのように同時に動作するか
これらのツールはどのようなオペレーションを実行できるか
他のツールにどのようなオペレーションを実行するように要求できるか
他のツールを配信対象にできるこれらのツールはどのようなイベントを生成するか (これらのツールはどの型のメッセージを送信するか)
他のツールによって生成されたイベントの中でこれらのツールの配信対象となるイベントはどれか (これらのツールはどの型のメッセージを受信するか)
これらの質問に的確に答えるには、イベントとオペレーションの間の違いと、ToolTalk サービスがお互いに関連のあるメッセージを処理する方法を理解する必要があります。
イベントは、何か起きたことを通知するものです。イベントは、簡単に言えばニュース速報です。送信側のプロセスは、他のプロセスがイベントが起きたことを聞くかどうかと、アクションがイベントの結果として起こるかどうかについて正式な予想を持っていません。プロセスが ToolTalk サービスを使用して、配信対象のプロセスにイベントが発生したことを知らせる場合、通知を送信します。送信側プロセスは応答を期待しないため、イベントは失敗できません。
オペレーションは、問い合わせまたはアクションです。要求側プロセスは、オペレーションが実行されるように問い合わせまたは要求を行います。要求側プロセスは結果が返されることを予想し、問い合わせまたはアクションのステータスを通知するように要求します。プロセスが ToolTalk サービスを使用して、他のツールにオペレーションを実行するように依頼する場合、要求を送信します。ToolTalk サービスは配信対象のプロセスに要求を配信し、送信側プロセスに要求のステータスを通知します。
アプリケーションが ToolTalk の通知を送信する場合、応答は受信せず、ツールがその通知に注意を払うかどうかについて通知を受けることもありません。通知をイベントの発生に応じて正確なレポートにすることが重要です。
たとえば、ツールがデスクトップ・サービス・メッセージの Modified を送信する場合、聞き手側のツールを指定の方法で反応させることができます。しかしツールは、他のツールがそのメッセージに反応するかどうか気にしたり、通知を受ける必要はありません。次のイベントをレポートするだけです。
THE_USER_HAS_MADE_CHANGES_TO_THIS.
アプリケーションが ToolTalk の要求を送信する場合、1 つのツールが指示されたオペレーションを実行する、または問い合わせに答え、応答メッセージを返すことを期待します。たとえば、ツールがデスクトップ・サービス・メッセージの Get_Modified を送信する場合、メッセージが配信され、アクションが実行されたという通知が期待できます。ToolTalk サービスでは必ず、プロセスの受信によって応答が返されるか、送信側に要求の失敗が通知されます。
異常終了できるツールによって要求されるオペレーションを識別する
他のツール用に実行できるオペレーションを識別する
他のツールに実行させるオペレーションを識別する
これらのオペレーションを識別するための良い方法は、ツールが実行するまたは実行を完了したイベントとオペレーションの順序について概説するシナリオを開発することです。
シナリオは、ツールが実行および実行を完了したイベントとオペレーションの順序について概説しています。たとえば、次のシナリオは、ToolTalk デモ・プログラム CoEd が実行および実行を完了したイベントについて概説しています。
ファイル・マネージャのドキュメント・アイコンをダブルクリックします。
ファイルをエディタで開きます。エディタを実行中でない場合はシステムによって起動されます。
ドキュメントに対して別のツールが保留中のテキストに変更を行うと、その別のツールが変更したテキストを保存するか、最後に保存されたバージョンのドキュメントに戻るか尋ねられます。
テキストを挿入します。
ドキュメントを保存します。
別のツールがそのドキュメントに保留中の変更点を持っている場合、ドキュメントを変更するか尋ねられます。
エディタを終了します。
テキストに保存されていない変更がある場合、ファイルを終了する前にその変更を保存するか、破棄するか尋ねられます。
シナリオがいったん実行されると、基本的な質問に答えることができます。
ファイル・マネージャは、CoEd が編集用のドキュメントを開くように要求します。
CoEd の各インスタンスは、その他の配信対象のインスタンスにドキュメントの状態に対して行われる変更を通知します。
CoEd の各インスタンスは、インスタンス自身とその状態に関する質問 (「ステータスは ?」など) に答えることができます。
CoEd の各インスタンスには、次のようなオペレーションを実行する機能があります。
アイコン化とアイコン化解除
重なり順の変更
ドキュメントの編集
ドキュメントの表示
終了
ファイル・マネージャは、CoEd が編集用のドキュメントを開くように要求する必要があります。
CoEd のインスタンスは、CoEd の別のインスタンスに対し、開いているドキュメントの変更を保存するように要求できます。
CoEd のインスタンスは、CoEd の別のインスタンスに対し、開いているドキュメントの最後に保存されたバージョンに戻るように要求できます。
ドキュメントを開いています。
ドキュメントを変更しています。
ドキュメントは最後に保存されたバージョンの内容に戻っています。
ドキュメントを保存しています。
CoEd のインスタンスは終了しています。
ドキュメントを開いています。
ドキュメントを変更しています。
ドキュメントは最後に保存されたバージョンの内容に戻っています。
ドキュメントを保存しています。
CoEd のインスタンスは終了しています。