高度なカスタマイズ > Info*Engine 実装 > Info*Engine 機能の設定 > メッセージングと Web Event Service の実装
  
メッセージングと Web Event Service の実装
Info*Engine Web Event Service (WES) やポイントツーポイントメッセージングを実装することで、以下の機能が提供されます。
Info*Engine と対話するユーザーまたはアプリケーションは、JMS メッセージキューへメッセージを送信し、JMS メッセージキューからメッセージを読み込むことが可能です。Web Event Service を使用している場合は、ユーザーまたはアプリケーションがイベントを発生させることもできます。
メッセージやイベントは MOM ネットワークのどこからでも発生できます。したがって、WES を使用して、別々の Info*Engine 環境をほかの JMS 互換環境に接続したり、メッセージングによってこれらの環境間で情報を送信することができます。
デフォルトでは、Info*Engine を経由して発生したイベントは期限切れになりません。ただし、WES イベント作成者はイベントの期限が切れる時刻を指定できます。
WES を使用している場合、Info*Engine による JMS トピックの購読者は、指定したイベントが発生した際に定義済みのタスクを実行できます。
MOM と対話する場合、Info*Engine がローカルの Info*Engine データを JMS メッセージに変換し、その後、JMS メッセージから Info*Engine データに戻す必要があります。
この双方向の変換を実行するために、Info*Engine はさまざまなメッセージプロセッサを使用します (ここではタイプと呼びます)。ほとんどの場合、リストされるタイプは実際の JMS メッセージタイプに直接対応していますが、InfoEngineUnknown などのタイプは単純にメッセージプロセッサの名前を指しており、これらの名前が、変換されるデータに適合する JMS メッセージオブジェクトにマップされます。Info*Engine では、以下のタイプの JMS メッセージを送受信できます。
InfoEngine
Info*Engine から Info*Engine への通信に使用されます。
メッセージタイプが InfoEngine の場合、Info*Engine から送信されたメッセージには Info*Engine グループを含めることができます。これによって、別々の Info*Engine 環境間で Info*Engine グループを受け渡すことができます。
BytesMessage
このタイプのメッセージをサポートするサードパーティの受信者固有のメッセージを構築および受信するときに使用します。
TextMessage
送信文字列メッセージを作成し、受信文字列メッセージを受信するときに使用します。
MapMessage
name=data の形式の値からメッセージを作成するときに使用します。この値の name 部分は、このタイプのメッセージに data を配置するときに使用するキーです。
StreamMessage
このタイプのメッセージもサポートするサードパーティの受信者固有のメッセージを作成または受信するときに使用します。
Unknown
BytesMessage をサポートするサードパーティの受信者が処理できるフォーマットに BLOB データを変換するときに使用します。
Info*Engine は、メッセージタイプが定義されていない受信メッセージにこのタイプを使用します。これは、空白の IeRequest を作成し、BLOB データとしてメッセージの内容を添付します。
さらに、ユーザー定義のメッセージプロセッサを使用できる場合、Info*Engine はユーザー定義タイプの JMS メッセージを送受信できます。
* 
送受信できるメッセージのサイズは、使用する MOM に依存することがあります。たとえば、WebSphere MQ の永続メッセージは、デフォルトでは 4 MB 未満でなければなりません。
以下の Info*Engine Webject には、ポイントツーポイントメッセージング機能が備わっています。
Create-Object
Delete-Object
Query-Object
Browse-Queue
Subscribe-Queue
Unsubscribe-Queue
以下の Info*Engine Webject は WES 機能をサポートしています。
Emit-Event
Subscribe-Event
Unsubscribe-Event
Webject の例については、Message WebjectおよびWeb Event Service Webjectを参照してください。
Info*Engine 環境に WES またはポイントツーポイントメッセージングを実装するには、以下のタスクを完了します。
WebSphere MQ などの Message-Oriented Middleware (MOM) ソフトウェア製品をインストールします。
ポイントツーポイントメッセージングの場合は、使用する MOM に JMS キューを設定し、キューと併用されるキュー接続ファクトリを設定します。ポイントツーポイントメッセージングに使用される接続ファクトリは、タスクキューに使用される接続ファクトリと同じです。
WES の場合は、MOM に必要な JMS トピックとトピック接続ファクトリを設定します。各トピックは、イベントを表します。
MOM 提供のユーティリティと管理 UI を使用して、JNDI リポジトリに必要な管理オブジェクト (接続ファクトリ、キュー、トピック) を作成します。お使いの MOM によって、これらのオブジェクトは前述のオブジェクトとは別のものである場合と、そうでない場合があります。
Info*Engine プロパティ管理ユーティリティを使用して、使用する MOM の新しい JMS サービスプロパティセットを作成します。作成したプロパティセットの名前は、任意の JMS 関連の Webject の SERVICE パラメータへの入力として渡すことができます。JMS Webject で SERVICE パラメータを使用しない場合は、JMS 操作に使用する適切な Info*Engine サーバーまたはサーブレットを編集して、「デフォルト JMS サービス」プロパティ (.jms.defaultService) にプロパティセットの名前を指定します。
新しい JMS サービスプロパティセットを作成するときには、プロパティセット形式の「コア JMS プロパティ」セクションの下に、最も一般的な設定プロパティが表示されます。その他のプロパティは、「その他の JMS プロパティ」セクションに表示されています。
* 
設定する必要のあるプロパティは、接続先の MOM によって決まります。最低でも、.jms.baseUri プロパティと接続ファクトリプロパティは設定する必要があります。
以下のプロパティは、ポイントツーポイントメッセージングと WES を実装する場合に役立ちます。
JMS コンテキストプロバイダファクトリ
.jms.CtxFactory プロパティを使用すると、MOM の管理オブジェクトが LDAP 内に保存されていない場合に、JNDI コンテキストプロバイダファクトリを指定できます。これは通常は、Info*Engine を MOM に接続するために使用される JAR によって提供される Java クラス名です。
JMS ベース URI
.jms.baseUri プロパティでは、管理オブジェクトを検出するために使用する JNDI URL を指定します。
JMS ベース URI プリンシパル
JMS ベース URI パスワード
.jms.baseUri.principal および .jms.baseUri.password プロパティでは、.jms.baseUri プロパティによって指定された URI へのアクセスに関連付けられた必要な JNDI 資格証明を指定します。これらのプロパティを設定する必要があるかどうかは、お使いの MOM の JNDI リポジトリのセキュリティ要件に基づきます。
JMS ユーザー
JMS パスワード
.jms.username および .jms.password プロパティを使用すると、MOM への接続時に使用するデフォルトの資格証明を指定することができます。MOM で接続に資格証明が必要とされる場合は、これらのプロパティを指定するか、JMS Webject を使用するときに DBUSER および PASSWD パラメータを使用します。
JMS キュー接続ファクトリ
トピック接続ファクトリ
ポイントツーポイントメッセージングの場合、.msg.queueConnectionFactory プロパティで、MOM への接続に使用する QueueConnectionFactory オブジェクトの JNDI 名を指定します。
WES の場合、.wes.topicConnectionFactory プロパティで、MOM への接続に使用する TopicConnectionFactory オブジェクトの JNDI 名を指定します。
JMS ライブラリディレクトリ
.jms.lib プロパティでは、MOM への接続に必要な JAR の保存場所のディレクトリを指定します。このプロパティを指定しない場合、JAR は JVM CLASSPATH 内にあります (<Windchill>/codebase/WEB-INF/lib に保存されている JAR など)。
システムに複数のサードパーティ MOM を設定する場合、各 MOM で .jms.lib プロパティを使用して、サードパーティクラスを相互に分離させる必要があります。
WES 購読識別子
WES の場合、.wes.subscriptionIdentifier プロパティでは、システムで使用する必要のあるハードコードされた購読識別子を指定します。イベントの購読により、自動的に購読識別子が生成されます。これらの識別子は一意でなければなりません。デフォルトでは、生成された識別子はホスト名とイベント名の両方に基づいています。
Web Event Service の実装の注意事項
同一のホストで実行されている複数の Info*Engine 環境があり、同一イベントに対する同一 MOM に複数の購読を生成する場合、自動的に生成される購読識別子も同一になります。それらの識別子を一意にするには、すべての環境、または 1 つの環境を除くすべての環境で一意の購読識別子を設定する必要があります。
イベントを発生するのに使用される JMS トピックを購読する 1 つまたは複数の Info*Engine タスクを作成する必要があります。システムの起動時に、起動タスクを使用して、購読を生成できます。wt.federation.task.startup プロパティで単一の起動タスクを制御するか、イベントが発生した際にタスクを実行する Info*Engine サーバーまたはサーブレットに対して、LDAP エントリフォーム上の Startup Task 1 フィールドにタスクを追加します。サーバー起動時にそのタスクを実行すると、サーバーのトピックは必ず購読されます。
* 
起動タスクは wt.propertieswt.federation.task.startup プロパティを使用して指定します。
イベント発生の例および発生時に実行されるタスク設定の例については、Info*Engine タスクを参照してください。