ToolTalk ユーザーズガイド

オブジェクト指向メッセージの配信

ToolTalk サービスが処理するメッセージの多くはオブジェクト宛てですが、実際にはオブジェクトを管理するプロセスに配信されます。メッセージは、特定のメッセージを処理できるプロセスの ptype を含んだ otype にシグニチャを書き込み、ToolTalk サービスがオブジェクト指向メッセージを配信する必要があるプロセスを判定するのを助けます。

  1. 初期化

    送信側はクラス属性、操作属性、引数属性、および対象とする objid 属性を書き込みます。

    送信側属性は、ToolTalk サービスによって自動的に書き込まれます。送信側は、sender_ptype 属性とセッション属性を書き込むことも、ToolTalk サービスにデフォルト値を書き込ませることもできます。

    配信範囲が TT_FILE の場合は、ファイル名を書き込む必要があります。書き込まない場合は、デフォルトのファイル名が使用されます。配信範囲が TT_SESSION の場合は、セッション名を書き込む必要があります。書き込まない場合は、デフォルトのセッション名が使用されます。配信範囲が TT_BOTH または TT_FILE_IN_SESSION の場合は、ファイル名とセッション名の両方を書き込む必要があります。書き込まない場合は、デフォルトのファイル名とセッション名が使用されます。


    注 –

    配信に関して検査される一連のパターンは、メッセージの配信範囲によって異なります。配信範囲が TT_SESSION の場合は、同じセッション内のプロセスのパターンだけが検査されます。配信範囲が TT_FILE の場合は、ファイルを監視するすべてのプロセスのパターンが検査されます。配信範囲が TT_FILE_IN_SESSION または TT_BOTH の場合は、その両者に該当するプロセスが検査されます。


  2. 解釈処理

    ToolTalk サービスは、ToolTalk データベースで objid を検索し、otype 属性とファイル属性を書き込みます。

  3. ハンドラへのディスパッチ

    ToolTalk は、otype 定義内でメッセージの操作属性と引数属性に一致するハンドラのメッセージパターンを検索します。一致するものが見つかると、ToolTalk サービスは otype のメッセージパターンから、配信範囲属性、opnum 属性、handler_ptype 属性、および処置属性を書き込みます。

  4. オブジェクト指向オブザーバへのディスパッチ

    ToolTalk サービスは、メッセージのクラス属性、操作属性、および引数属性を、otype のすべての Observe メッセージのパターンと比較します。一致するものが見つかると、メッセージパターンが TT_QUEUE または TT_START を指定している場合には、ToolTalk サービスは ptype と待ち行列を指定するメッセージ、または開始オプションを指定するメッセージに、レコード (「約束監視」と呼ばれる) を付加します。

  5. 手順オブザーバへのディスパッチ

    ToolTalk サービスは、メッセージのクラス属性、操作属性、および引数属性を、すべての ptypes のすべての Observe メッセージのパターンと比較します。一致するものが見つかると、シグニチャが TT_QUEUE または TT_START を指定している場合には、ToolTalk サービスは ptype と待ち行列を指定するメッセージ、または開始オプションを指定するメッセージに、約束監視のレコードを付加します。

  6. ハンドラへの配信

    実行中のプロセスがメッセージに一致した登録済みのハンドラパターンを持っている場合、ToolTalk サービスはメッセージをそのプロセスに配信します。それ以外の場合、ToolTalk サービスは、処置 (待ち行列または開始) オプションに従います。

    ハンドラ情報に一致する動的パターンを複数のプロセスが登録している場合は、より限定的なパターン (ワイルドカード以外に一致するものの数を数えることによって判定する) が優先されます。2 つのパターンが同時に限定的である場合は、ハンドラが任意に選択します。

  7. オブザーバへの配信

    ToolTalk サービスは、実行中のプロセスのうち、メッセージに一致するオブザーバパターンを登録したすべてのプロセスにメッセージを渡します。ToolTalk サービスは、配信のたびにオブザーバの ptype について約束監視の完了状態を検査します。このプロセスが終わった時点で未完了の約束監視がある場合、ToolTalk サービスは、その約束に指定されている処置 (待ち行列または開始) オプションに従います。

この例では、ToolTalk サービスに FinnogaCalc という架空のスプレッドシートアプリケーションを統合します。

  1. FinnogaCalc は ToolTalk サービスを起動し、FinnogaCalc という ptype を宣言してデフォルトのセッションに参加することによって ToolTalk へ登録します。

  2. FinnogaCalc は、hatsize.wks ワークシートをロードし、ワークシートファイルに結合することによって、ワークシートを監視することを ToolTalk サービスに通知します。

  3. 第 2 のインスタンスの FinnogaCalc (FinnogaCalc2 と呼びます) が起動し、ワークシート wardrobe.wks をロードし、同じ方法で ToolTalk に登録します。

  4. hatsize.wks のセル B2 の値を、wardrobe.wks のセル C14 に代入します。

  5. FinnogaCalc2 は、FinnogaCalc が FinnogaCalc2 に値を送信できるように ToolTalk 関数を呼び出して、セル C14 のオブジェクト仕様を作成します。このオブジェクトは、objid によって識別されます。

  6. その後 FinnogaCalc2 は、FinnogaCalc にその objid を (たとえばクリップボードを介して) 指示します。

  7. FinnogaCalc は、この objid によって識別されるオブジェクトにセル B2 を表示し、値を持つメッセージを送信することを記憶します。

  8. ToolTalk はメッセージの経路を指定します。ToolTalk サービスは、メッセージを配信するために次のことを行います。

    1. objid に関連付けられている仕様を検査して、objid の型が FinnogaCalc_cell であることと、対応するオブジェクトが wardrobe.wks ファイルの中にあることを確認します。

    2. FinnogaCalc_cell について otype の定義を参照します。ToolTalk サービスは otype から、ptype である FinnogaCalc のプロセスがこのメッセージを監視することと、メッセージの配信範囲が TT_FILE であることを判定します。

    3. メッセージを登録済みのパターンと照合して、適切なファイルを監視しているプロセスのうち、この ptype を持つすべてのプロセスを検索します。FinnogaCalc2 は一致しますが、FinnogaCalc は一致しません。

    4. FinnogaCalc2 にメッセージを配信します。

  9. FinnogaCalc2 は、セル C14 に対応するオブジェクトがメッセージに入っていることを認識します。FinnogaCalc2 は、wardrobe.wks の値を更新し、新しい値を表示します。