エージェント同士、あるいはエージェントとアプリケーションプログラムとの通信は、情報や知識を交換するための言語アーキテクチャプロトコルであるKQML(Knowledge Query and Manipulation Language)によって行われる。また、技術者の業務活動を通じて発生するEventもKQMLでエージェントに通知される。例えば他の技術者と通信したというEventは電子メールアプリケーションから、また、PMのデータを変更したというEventはCADアプリケーションからエージェントに通知される。
エージェントは実際にはファシリテーターであり、KQMLで送られてきたメッセージを解釈し、それに見合った応答処理機能を実行する。例えば、技術者Aのエージェントに、Aが技術者Bに電子メールを発送したというEventが送られたのに対応して、技術者Aと技術者Bの依存関係を生成する処理機能を実行するという如くである。
KQMLメッセージの解釈機能や各種応答機能はプラグインの形態(Javaのオブジェクト)になっており、必要な機能を簡単に追加してエージェントが利用できる。このため、プラグインするモジュールを置き換えることで、エージェント機能の拡張や、異なるオントロジを持つ企業への適用が容易にできる柔軟な構成となっている。
更に、これらのモジュールはJavaのクラスとして実装していてCORBA対応化も容易であることから、高度造船CIMの基盤インフラストラクチャとしてエージェントをリファレンスアーキテクチャに取り込むことは容易である。
図3.3-3にプロトタイプシステムにおけるKQML文の例を示す。この例では、KQML文のキーワードとして、それぞれ意味を持った以下の5種類が使用されている。
・tell:エージェントへのメッセージ送信
・sender:送信者名
・receiver:受信者名
・ontology:「content」で指定されるメッセージを解釈するためのドメイン情報
・content:送信するメッセージ