(57)【特許請求の範囲】
【請求項１】
データ処理システムにおける式の処理を改良する方法であって、
条件付きデータ処理演算を制御するために評価可能な第１のタイプの式の要素を定義するパーズテンプレートを使用してデータ処理命令をパーズするステップであって、それにより、パラメータ値を含む前記第１のタイプの式の要素を識別する、パーズするステップと、
評価に向けて最適化された形態で前記第１のタイプの式を表す評価テンプレートを選択するステップと、
前記パーズするステップにより識別されたパラメータ値を前記評価テンプレートに挿入するステップであって、それにより、最適化された評価コードを生成する、挿入するステップと、
前記最適化された評価コードを使用して前記式を評価するステップと、
を含み、
前記パーズするステップは、データ処理命令に含まれる式を１組のパーズテンプレートと比較すること、および前記１組のパーズテンプレートがマッチングするパーズテンプレートを含む場合、マッチングするパーズテンプレートを使用して前記データ処理命令をパーズすることを行う第１のパーズプロセスを含み、
前記１組のパーズテンプレートがマッチングするパーズテンプレートを含まない場合、第２のパーズプロセスを使用して、前記データ処理命令をパーズして、式の要素を識別し、準備プロセスが前記式の要素に対して実行されて、最適化された評価コードが生成され、さらに、
前記第２のパーズプロセスによるパーズの結果からパーズテンプレートを導出するステップと、
前記準備プロセスによる処理結果から評価テンプレートを導出するステップと、
前記導出されたパーズテンプレートおよび前記導出された評価テンプレートを保存するステップ、
を含む方法。
【請求項２】
前記式はメッセージ選択フィルタ式である、請求項１に記載の方法。
【請求項３】
前記式はメッセージ変換式である、請求項１または２に記載の方法。
【請求項４】
前記式の前記評価は、データ通信の受信に応答して実行される、請求項１乃至３のいずれか１項に記載の方法。
【請求項５】
前記データ通信はＪＭＳメッセージであり、前記式の前記評価は、ＪＭＳメッセージセレクタを評価して、前記ＪＭＳメッセージをＪＭＳメッセージコンシューマに渡すべきか否かを判断することを含む、請求項４に記載の方法。
【請求項６】
前記データ通信の受信は、ヘッダ情報およびメッセージ本体を含むメッセージであり、前記式を評価する前に、前記メッセージはパーズされてヘッダ情報が抽出される、請求項４または５に記載の方法。
【請求項７】
前記受信メッセージの前記パーズは、１つまたは複数のメッセージヘッダフィールドを含むテンプレートを使用するテンプレートベースのパーズ動作を含む、請求項６に記載の方法。
【請求項８】
前記テンプレートベースのパーズ動作は、前記受信メッセージを第２の１組のパーズテンプレートと比較すること、および前記第２の１組のパーズテンプレートがマッチングするパーズテンプレートを含む場合、マッチングしたパーズテンプレートを使用して前記受信メッセージをパーズすることを含む、請求項７に記載の方法。
【請求項９】
データ処理ユニットと、
１組のテンプレートを記憶するデータ記憶ユニットと、
条件付きデータ処理演算を制御するために評価することができる第１のタイプの式の要素を定義する記憶されたパーズテンプレートを使用して、前記データ処理ユニットを制御して入力データ処理命令をパーズし、パラメータ値を含む前記第１のタイプの式の要素を識別するテンプレートベースのパーサと、
該テンプレートベースのパーサに関連付けられ、評価に向けて最適化された形態で前記第１のタイプの式を表す記憶されている評価テンプレートを選択する手段と、
前記パーサにより識別されたパラメータ値を前記評価テンプレートに挿入して、最適化された評価コードを生成する手段と、
データ通信を受信する手段と、
前記最適化された評価コードを使用して、前記式を評価して、前記データ通信の受信に関連して条件付きデータ処理演算の実行を制御する手段と、
１組のパーズテンプレートが前記式とマッチングするパーズテンプレートを含まないという、前記１組のパーズテンプレートと前記式との比較に応答して、前記データ処理命令をパーズして、式の要素を識別する手段と、
前記式に最適化された評価コードを生成する手段と、
前記式の要素を識別する手段によるパーズ結果からパーズテンプレートを導出する手段と、
前記式に最適化された評価コードを生成する手段による処理結果から評価テンプレートを導出する手段と、
前記導出されたパーズテンプレートおよび前記導出された評価テンプレートを前記データ記憶手段に保存する手段と、
を備えるデータ処理装置。
【請求項１０】
式の処理を改良する方法を実行するためのプログラムであって、前記プログラムがコンピュータに、
条件付きデータ処理演算を制御するために評価可能な第１のタイプの式の要素を定義するパーズテンプレートを使用してデータ処理命令をパーズするステップであって、それにより、パラメータ値を含む前記第１のタイプの式の要素を識別する、パーズするステップと、
評価に向けて最適化された形態で前記第１のタイプの式を表す評価テンプレートを選択するステップと、
前記パーズするステップにより識別されたパラメータ値を前記評価テンプレートに挿入するステップであって、それにより、最適化された評価コードを生成する、挿入するステップと、
前記最適化された評価コードを使用して前記式を評価するステップと、
を実行させ、
前記パーズするステップは、データ処理命令に含まれる式を１組のパーズテンプレートと比較すること、および前記１組のパーズテンプレートがマッチングするパーズテンプレートを含む場合、マッチングするパーズテンプレートを使用して前記データ処理命令をパーズすることを行う第１のパーズプロセスを含み、
前記１組のパーズテンプレートがマッチングするパーズテンプレートを含まない場合、第２のパーズプロセスを使用して、前記データ処理命令をパーズして、式の要素を識別し、準備プロセスが前記式の要素に対して実行されて、最適化された評価コードが生成され、さらに、
前記第２のパーズプロセスによるパーズの結果からパーズテンプレートを導出するステップと、
前記準備プロセスによる処理結果から評価テンプレートを導出するステップと、
前記導出されたパーズテンプレートおよび前記導出された評価テンプレートを保存するステップ、
を実行させるプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、メッセージングネットワークでのメッセージ選択フィルタの効率的な処理等、式の処理を改良した方法、装置、およびコンピュータプログラムに関する。
【背景技術】
【０００２】
メッセージ指向ミドルウェア（ＭＯＭ）は、一般に、分散した異種ネットワーク内の遠隔データ処理システムで実行されている可能性のあるアプリケーションプログラム間でデータを転送するために使用される。ミドルウェアは、リカバリ機能および他の信頼性機能を実施すると共に、転送の成功に必要なルーティングおよびフォーマット変換の複雑さの多くからアプリケーションプログラムをシールドすることができる。
【０００３】
１つの定着しているメッセージングモデルは非同期ポイントツーポイントメッセージングであり、この場合、メッセージはまず、送信側アプリケーションにより、送信側にとってローカルのメッセージ処理プログラムにより管理されるキューに配置される。次に、メッセージは、メッセージヘッダ内の情報を用いてメッセージ処理プログラムを相互に動作させることによりネットワークを介して転送され、ターゲットアプリケーションの入力キューに配置され、次に、ターゲットアプリケーションが、メッセージを処理する準備ができたときにメッセージを検索する。ポイントツーポイントメッセージングの利点は、非同期通信の非ブロック性である（メッセージ転送が行われている間に、送信側および受信側の両方が他のタスクに従事でき、送信側がメッセージを送信するときに受信側が使用可能である必要がなく、かつターゲット受信側がメッセージを受信するときに送信側が使用可能である必要がない）。市販の非同期ポイントツーポイントメッセージング製品の一例は、ＩＢＭ  ＣｏｒｐｏｒａｔｉｏｎからのＷｅｂＳｐｈｅｒｅ  ＭＱファミリの製品である。メッセージングの概念への案内書として、ＩＢＭ  Ｒｅｄｂｏｏｋ「ＩＢＭ  ＷｅｂＳｐｈｅｒｅ  ＭＱ  ｖ６  Ｆｕｎｄａｍｅｎｔａｌｓ」（ＩＢＭ文書番号ＳＧ２４−７１２８−００、２００５年１２月）を参照のこと。（ＩＢＭおよびＷｅｂＳｐｈｅｒｅは、Ｉｎｔｅｒｎａｔｉｏｎａｌ  Ｂｕｓｉｎｅｓｓ  Ｍａｃｈｉｎｅｓ  Ｃｏｒｐｏｒａｔｉｏｎの登録商標である）。
【０００４】
定着している別のメッセージングモデルはパブリッシュ／サブスクライブ（ｐｕｂｌｉｓｈ／ｓｕｂｓｃｒｉｂｅ）であり、この場合、各サブスクライブが、特定のメッセージ等のパブリケーションの受信に興味があることを登録している場合、パブリッシュメッセージを複数のサブスクライブに送信することができる。パブリッシャがパブリケーションをパブリッシャ／サブスクライブメッセージブローカに送信し、サブスクライブがブローカに要件を登録する（通常、ブローカがパブリッシュメッセージヘッダ内のトピック情報と比較することができる関心トピックを指定する）場合、パブリッシャおよびサブスクライブは互いを識別する必要がない。いくつかのパブリッシュ／サブスクライブメッセージブローカが、基礎となるメッセージキューに関連して使用される。ＩＢＭ  ＣｏｒｐｏｒａｔｉｏｎのＷｅｂＳｐｈｅｒｅミドルウェア製品ファミリは、ＩＢＭ  Ｃｏｒｐｏｒａｔｉｏｎから入手可能な資料「ＩＢＭ  ＷｅｂＳｐｈｅｒｅ  Ｍｅｓｓａｇｅ  Ｂｒｏｋｅｒ  Ｖｅｒｓｉｏｎ６  Ｒｅｌｅａｓｅ０−Ｉｎｔｒｏｄｕｃｔｉｏｎ」（２００６年１２月）および「ＩＢＭ  ＷｅｂＳｐｈｅｒｅ  Ｍｅｓｓａｇｅ  Ｂｒｏｋｅｒ  Ｖｅｒｓｉｏｎ６  Ｒｅｌｅａｓｅ０−Ｐｕｂｌｉｓｈ／Ｓｕｂｓｃｒｉｂｅ」（２００６年１２月）に記載されるようなパブリッシュ／サブスクライブメッセージング製品を含む。
【０００５】
多くの市販のＭＯＭ製品は、ＩＢＭ  ＣｏｒｐｏｒａｔｉｏｎのＷｅｂＳｐｈｅｒｅファミリの製品内の製品を含め、Ｊａｖａメッセージサービス（ＪＭＳ）を実施する。ＪＭＳは、ＭＯＭクライアント間でメッセージを送信するために使用するＡＰＩを定義するＪａｖａ仕様書である（Ｓｕｎ  Ｍｉｃｒｏｓｙｓｔｅｍｓ  Ｉｎｃ．により定められるＪａｖａ  Ｃｏｍｍｕｎｉｔｙ  Ｐｒｏｃｅｓｓの下で開発された）。ＪＭＳでは、メッセージプロパティおよびメッセージヘッダ情報でのフィルタリングによりメッセージの選択が可能である。ＪＭＳでは、ヘッダおよびフィルタの設定に大きな柔軟性が許されるため、ＪＭＳメッセージハンドラはこの柔軟性をサポート可能である必要がある。カスタムメッセージヘッダおよびフィルタを処理できるというこの要件により、ＪＭＳ環境内でフィルタ式を最適なフォーマットで用意して保存することは不可能であった。部分的にこの理由により、典型的なＪＭＳ実装は高性能に向けて最適化されず、特に、新しいフィルタ式をパーズして用意するタスクは、性能に対して負の影響を有する。これについて、以下においてより詳細に説明する。（ＪａｖａはＳｕｎ  Ｍｉｃｒｏｓｙｓｔｅｍｓ，Ｉｎｃ．の登録商標である）。
【０００６】
Ｐｈｉｌｉｐ  Ｒｏｕｓｓｅｌｌｅ「Ｉｍｐｌｅｍｅｎｔｉｎｇ  ｔｈｅ  ＪＭＳ  Ｐｕｂｌｉｓｈ／Ｓｕｂｓｃｒｉｂｅ  ＡＰＩ」（Ｄｒ．Ｄｏｂｂ’ｓ  Ｊｏｕｒｎａｌ，ｖｏｌｕｍｅ  ２７，ｉｓｓｕｅ  ４、２００２年４月、ｐ．２８−３２）には、メッセージフィルタリングの管理がＪＭＳパブリッシュ／サブスクライブミドルウェアの性能の大きな要因であると説明されている。Ｒｏｕｓｓｅｌｌｅは、大型フィルタの効率的な管理およびメッセージ選択フィルタ評価の最適化に焦点を合わせたＰｒｅｓｕｍｏ  ＪＭＳ設計を記載している。その結果が、１組のフィルタ内の共通要素を検出し、効率的な評価が可能なようにフィルタ式を組み合わせる再帰ＪＭＳフィルタパーサである。しかし、多くのＪＭＳ使用事例では、フィルタ評価ステップが唯一のメッセージフィルタリングプロセスの大きな性能オーバーヘッドではない。メッセージフィルタリングで実施される典型的なプロセスは、以下を含む複数のステップに分けることができる。
１．フィルタをパーズして、メッセージフィルタリングに有用な情報を抽出する。
２．効率的なフィルタ評価に向けてフィルタを準備する（例えば、ＳＱＬ様シンタックスから新しいフォーマットに変換する）。
３．受信メッセージのメッセージヘッダおよびメッセージプロパティをパーズする。
４．受信メッセージのメッセージヘッダ／プロパティをフィルタと比較して、マッチングするメッセージを識別する（フィルタ式の評価と呼ぶ）。
【特許文献１】米国特許出願公開第２００７００１６８９７号
【非特許文献１】ＩＢＭ  Ｒｅｄｂｏｏｋ「ＩＢＭ  ＷｅｂＳｐｈｅｒｅ  ＭＱ  ｖ６  Ｆｕｎｄａｍｅｎｔａｌｓ」（ＩＢＭ文書番号ＳＧ２４−７１２８−００、２００５年１２月）
【非特許文献２】ＩＢＭ  Ｃｏｒｐｏｒａｔｉｏｎ「ＩＢＭ  ＷｅｂＳｐｈｅｒｅ  Ｍｅｓｓａｇｅ  Ｂｒｏｋｅｒ  Ｖｅｒｓｉｏｎ６  Ｒｅｌｅａｓｅ０−Ｉｎｔｒｏｄｕｃｔｉｏｎ」（２００６年１２月）
【非特許文献３】ＩＢＭ  Ｃｏｒｐｏｒａｔｉｏｎ「ＩＢＭ  ＷｅｂＳｐｈｅｒｅ  Ｍｅｓｓａｇｅ  Ｂｒｏｋｅｒ  Ｖｅｒｓｉｏｎ６  Ｒｅｌｅａｓｅ０−Ｐｕｂｌｉｓｈ／Ｓｕｂｓｃｒｉｂｅ」（２００６年１２月）
【非特許文献４】Ｐｈｉｌｉｐ  Ｒｏｕｓｓｅｌｌｅによる「Ｉｍｐｌｅｍｅｎｔｉｎｇ  ｔｈｅ  ＪＭＳ  Ｐｕｂｌｉｓｈ／Ｓｕｂｓｃｒｉｂｅ  ＡＰＩ」（Ｄｒ．Ｄｏｂｂ’ｓ  Ｊｏｕｒｎａｌ，ｖｏｌｕｍｅ  ２７，ｉｓｓｕｅ  ４、２００２年４月、ｐ．２８−３２）
【非特許文献５】Ｔ．Ｔａｋａｓｅ、Ｈ．Ｍｉｙａｓｈｉｔａ、Ｔ．Ｓｕｚｕｍｕｒａ、およびＭ．Ｔａｔｓｕｂｏｒｉによる「Ａｎ  Ａｄａｐｔｉｖｅ，Ｆａｓｔ，ａｎｄ  Ｓａｆｅ  ＸＭＬ  Ｐａｒｓｅｒ  Ｂａｓｅｄ  ｏｎ  Ｂｙｔｅ  Ｓｅｑｕｅｎｃｅｓ  Ｍｅｍｏｒｉｚａｔｉｏｎ」（１４ｔｈ  ｉｎｔｅｒｎａｔｉｏｎａｌ  ｃｏｎｆｅｒｅｎｃｅ  ｏｎ  Ｗｏｒｌｄ  Ｗｉｄｅ  Ｗｅｂ（ＷＷＷ２００５）議事録、ｐ．６９２−７０１、２００５年３月１０−１５日、Ｃｈｉｂａ，Ｊａｐａｎ）
【発明の開示】
【発明が解決しようとする課題】
【０００７】
Ｒｏｕｓｅｌｌｅは、パブリッシュ／サブスクライブソリューションでの評価ステップの効率（異なるサブスクリプションからのフィルタの組み合わせ／並列化を含む入念な最適化により実現される）に焦点を合わせているが、本発明の発明者は、メッセージ選択プロセスのフィルタパーズステップおよび準備ステップ内で効率を向上させる必要性が残っていることを認識した。これら２つのステップは、特に、システムに頻繁に新しいフィルタが提示されるいくつかのポイントツーポイントシナリオで、ＪＭＳメッセージング性能にとって非常に重大であることが多い。一例のシナリオでは、キューが実行中の多くのプロセス（またはプロセスインスタンス）により共有され、フィルタ式が、どのプロセスがどのメッセージを処理するかを判断するために使用される。一般的な例は、各インスタンスが相関識別子（ＣｏｒｒｅｌＩｄ）または何等かのインスタンス識別子（ＩｎｓｔａｎｃｅＩｄ）により返信メッセージを選択する共有返信キューである。各ＩｎｓｔａｎｃｅＩｄまたはＣｏｒｒｅｌＩｄは新しいフィルタを必要とする。本発明者は、式をより効率的にパーズして準備する必要性が、ＪＭＳパブリッシュ／サブスクライブメッセージフィルタに制限されないより一般的な問題であることも認識した。
【０００８】
Ｔ．Ｔａｋａｓｅ、Ｈ．Ｍｉｙａｓｈｉｔａ、Ｔ．Ｓｕｚｕｍｕｒａ、およびＭ．Ｔａｔｓｕｂｏｒｉ「Ａｎ  Ａｄａｐｔｉｖｅ，Ｆａｓｔ，ａｎｄ  Ｓａｆｅ  ＸＭＬ  Ｐａｒｓｅｒ  Ｂａｓｅｄ  ｏｎ  Ｂｙｔｅ  Ｓｅｑｕｅｎｃｅｓ  Ｍｅｍｏｒｉｚａｔｉｏｎ」（１４ｔｈ  ｉｎｔｅｒｎａｔｉｏｎａｌ  ｃｏｎｆｅｒｅｎｃｅ  ｏｎ  Ｗｏｒｌｄ  Ｗｉｄｅ  Ｗｅｂ（ＷＷＷ２００５）議事録、ｐ．６９２−７０１、２００５年３月１０−１５日、Ｃｈｉｂａ，Ｊａｐａｎ）には、ＸＭＬ文書をパーズするパターンベースの手法が記載されている。パーサは、新しいＸＭＬメッセージと前に受信したメッセージとの相違を検出し、相違部分に対してのみセマンティックパーズを実行する。ＸＭＬ文書を処理する場合、パーサはバイトシーケンスおよび関連するパーズイベントを覚えるとともに、処理コンテキストを覚え、それにより、マッチングしないバイトシーケンスを部分的にパーズすることができる。これは、より効率的なパーズを提供することができるが、依然として、典型的なメッセージフィルタリングプロセスの非効率性のいくつかに対処していない。
【０００９】
米国特許出願公開第２００７００１６８９７号（発明者Ｓ．Ｔｏｄｄ、ＩＢＭ  Ｃｏｒｐｏｒａｔｉｏｎに譲渡）には、ＸＭＬを使用したＳＯＡＰメッセージ等のサービス要求のテンプレートベースの効率的なパーズが記載されており、サービス要件情報が抽出されて、サービスの呼び出しへのショートカットが提供される。上述した他の解決策と同様に、これは典型的なメッセージフィルタリングプロセスの非効率性のすべてに対処していない。
【課題を解決するための手段】
【００１０】
本発明の第１の態様は、データ処理システムにおける式の処理を改良する方法であって、
条件付きデータ処理演算を制御するために評価可能な第１のタイプの式の要素を定義するパーズテンプレートを使用してデータ処理命令をパーズするステップであって、それにより、式パラメータ値を含む前記第１のタイプの式の要素を識別する、パーズするステップと、
評価に向けて最適化された形態で前記第１のタイプの式を表す評価テンプレートを選択するステップと、
前記パーズするステップにより識別されたパラメータ値を前記評価テンプレートに挿入するステップであって、それにより、最適化された評価コードを生成する、挿入するステップと、
前記最適化された評価コードを使用するステップであって、それにより、前記式を評価する、使用するステップと、
を含む方法を提供する。
【００１１】
本発明は、記憶されたパーズテンプレートを使用して、受信データ処理命令等の入力シーケンスをパーズする。パーズテンプレートは、好ましくは、１組のパーズテンプレートの要素がそれぞれツリーのノードに関連付けられるツリー構造内に保持される。入力シーケンスとテンプレートツリーとの比較を用いて、マッチングしたパーズテンプレートを識別し、それと同時に、マッチングしたパーズテンプレートを使用して入力シーケンスをパーズする。例えば、入力シーケンスは、条件付きデータ処理演算を制御するために評価する必要がある式を指定するストリング、バイトアレイ、またはバイトストリームであってよい。パーズを使用して第１のタイプの式を識別し、次に、そのタイプの式に関連する前に記憶された評価テンプレートを使用することにより第１のタイプの式を暗黙的に最適化することができる。すなわち、本発明の発明者は、テンプレートパーズを既知のシステムで行われていたよりも十分に利用でき、パーズステップからの情報を推論して、続く準備ステップのショートカットが可能なことを認識した。
【００１２】
当分野において既知のように、準備ステップは、式を元のシンタックスから、より効率的に評価できるフォーマットに変形することを含むことができる。例えば、ＪＭＳ実装ＭＯＭ製品内で、新しいＪＭＳメッセージコンシューマに指定されるフィルタ式を、元のシンタックス（ＳＱＬ「ｗｈｅｒｅ」節と同様）からＭＯＭ製品の内部プログラムコードによる処理に最適化されたフォーマットに変換することができる。代替の応用例では、準備ステップは、ＸＱｕｅｒｙ（ＸＭＬ照会言語）または別のＸＭＬフォーマット照会シンタックスから異なるフォーマットに変換することを含むことができる。本発明は、識別された式を評価に向けて最適化された形態で表す事前準備されたテンプレートを選択することにより、準備ステップの繰り返しを回避する。
【００１３】
パーズステップの簡略化および準備ステップのショートカットのこの組み合わせにより、式の処理に関連する性能オーバーヘッドが低減する。式は、例えば、メッセージ選択フィルタ式または変換式であってよい。メッセージ選択フィルタリングは、サブスクライブおよび他のメッセージ受信先がフィルタ式を指定できるポイントツーポイントまたはパブリッシュ／サブスクライブメッセージングシステムで実施することができる。例えば、サブスクライブプリケーションが、受信したいメッセージの特定のメッセージヘッダまたはプロパティを指定することができ、これらヘッダまたはプロパティを有さないメッセージはサブスクライブプリケーションに渡されない。フィルタのこの利用は、サブスクライブ指定のメッセージトピックに加えてであってもよく、またはそれに代えてであってもよい。
【００１４】
本発明はＪＭＳメッセージ選択フィルタリングプロセスにおいて特に有益である。これは、ＪＭＳでは、予め規定された明示的な「準備」演算等の完全に予め規定されたメッセージ処理が許されないため、また最適化（「準備」）ステップが行われない場合、ＸＭＬおよびＳＱＬ様条件付き式を使用するＪＭＳ実装がフィルタ式の非効率評価を被るためである。上述したように、ＪＭＳおよびＸＭＬは大きな柔軟性を提供するが、この柔軟性およびＸＭＬの冗長性をサポートすると、多くの性能問題に繋がり得る。
【００１５】
本発明の実施形態は、パターンの繰り返しを利用することによりこういった問題を軽減する。ＪＭＳメッセージ選択フィルタ式等の式は、多くのメッセージシステムで繰り返し評価する必要があり、この処理オーバーヘッドは、これら式内のパターン（すなわち、繰り返される要素）を認識することにより低減することができる。受信メッセージのヘッダおよびプロパティ内でのパターンの繰り返しも認識して利用することができる。この繰り返しの利用は、最適化された式評価およびメッセージパーズテンプレートを生成し、保存し、再利用することを含む。テンプレートがマッチングしない場合、従来のパーズステップおよび準備ステップを行うことができ、従来の演算の結果を使用して新しいテンプレートを生成することができる。このような一実施形態では、普通と異なるフィルタおよび予測不可能なメッセージヘッダを処理する能力の本質的な損失はないが、パターンが繰り返される場合に効率の増大が可能である。
【００１６】
本発明の一実施形態は、繰り返し実行される式を含む入力ストリングをパーズすること、および式評価に使用できる最適化された形態でパーズされた結果を保存することを含む。この最適化された形態は、例えば、（ａ）式ツリー、（ｂ）バイトコード、または（ｃ）マシンコードであってよい。ＪＭＳの場合、ストリング式はＳＱＬ９２条件付き式シンタックスに基づく。このテンプレートベースの式のパーズおよび最適化を受信した通信のテンプレートベースのパーズと組み合わせて、式の評価に関連するデータを抽出する（例えば、情報をＪＭＳメッセージヘッダまたはメッセージプロパティあるいはその両方から抽出する）ことができる。
【００１７】
本発明の第２の態様は、
データ処理ユニットと、
１組のテンプレートを記憶するデータ記憶ユニットと、
条件付きデータ処理演算を制御するために評価することができる第１のタイプの式の要素を定義する記憶されたパーズテンプレートを使用して、前記データ処理ユニットを制御して入力データ処理命令をパーズし、式パラメータ値を含む前記第１のタイプの式の要素を識別するテンプレートベースのパーサと、
該テンプレートベースのパーサに関連付けられ、評価に向けて最適化された形態で前記第１のタイプの式を表す記憶されている評価テンプレートを選択する手段と、
前記パーサにより識別されたパラメータ値を前記評価テンプレートに挿入して、最適化された評価コードを生成する手段と、
データ通信を受信する手段と、
前記最適化された評価コードを使用して、前記式を評価して、前記受信データ通信に関連して条件付きデータ処理演算の実行を制御する手段と、
を備えるデータ処理装置を提供する。
【００１８】
一実施形態では、テンプレートベースのパーサは、データ処理命令をパーズテンプレートツリーと比較する。１組のパーズテンプレートの各要素に、ツリーのノードが関連付けられる。パーズテンプレートツリーがマッチングするパーズテンプレートを含む場合、テンプレートベースのパーサは、マッチングしたパーズテンプレートを使用してデータ処理命令をパーズする。しかし、パーズテンプレートツリーがマッチングするパーズテンプレートを含まない場合、第２のパーズプロセスを使用してデータ処理命令をパーズして、式の要素を識別し、明示的な準備プロセスが、識別された式要素に対して行われて、最適化された評価コードが生成される。データ処理装置は、好ましくは、第２のパーズプロセスによるおパーズ結果からパーズテンプレートを導出する手段、準備プロセスによる処理結果から評価テンプレートを導出する手段、ならびに導出されたパーズテンプレートおよび導出された評価テンプレートをデータ記憶手段に保存する手段も含む。導出されたパーズテンプレートは、好ましくは、パーズテンプレートツリーのリーフノードに関連して保存され、導出された評価テンプレートは同じリーフノードに関連して保存される。一実施形態では、テンプレートベースのパーサは、式を評価する前に、第２のテンプレートツリーにアクセスして受信データ通信をパーズする。
【００１９】
本発明のさらなる態様は、機械可読記録媒体に記録されたプログラムコードを含むコンピュータプログラム製品であって、プログラムコードが実行されて上記方法を実行するデータ処理装置を制御する１組の命令をプログラムコードが実装したコンピュータプログラム製品を提供する。
【００２０】
本発明の一実施形態は、１組の１つまたは複数の選択フィルタを適用することにより、ＪＭＳメッセージング環境においてメッセージを選択する方法を提供する。選択は、
第１の選択フィルタをパーズしてフィルタ式を識別するステップ、
第１のクラスのフィルタ式を表すパーズテンプレートを生成するステップ、
実行に最適化されたフォーマットで第１のクラスのフィルタ式を表す評価テンプレートを生成するステップ、
第２の選択フィルタをパーズテンプレートと比較して、第１のクラスのフィルタ式を識別し、第２の選択フィルタをパーズして第２の選択フィルタのパラメータを識別するステップ、
第１のクラスのフィルタ式に生成された上記評価テンプレートを第２の選択フィルタに関連付けるステップ、
上記識別されたパラメータを評価テンプレートに挿入して、第２の選択フィルタ内の式の評価に向けて最適化された評価コードを生成するステップ、および
上記最適化された評価コードを実行して、第２の選択フィルタを評価するステップ
を含む。
【００２１】
本発明では、２つ以上の選択フィルタのフィルタ式に適用可能として認識される評価テンプレートを再利用して、繰り返しのパーズおよびテンプレート生成を回避し、それにより、選択フィルタの処理を最適化することができる。
【００２２】
本発明の実施形態を添付図面を参照し例として以下においてより詳細に説明する。
【発明を実施するための最良の形態】
【００２３】
以下において説明する本発明の第１および第２の例示的な実施形態は、改良されたＪＭＳメッセージ選択メカニズムを含む。上述したように、本発明はＪＭＳに制限されず、データ処理演算を処理すべきか否かを判断するために評価される式内でパターンが繰り返される他の環境に適用することも可能である。式は、例えば、メッセージ選択フィルタ式またはメッセージ変換を制御する式であってよく、これら例について以下においてより詳細に説明する。図１〜図４を簡潔に参照することから明らかなように、また以下の付随説明から、本発明がポイントツーポイントメッセージングソリューションおよびパブリッシュ／サブスクライブメッセージングソリューションの両方で実施可能である。
【００２４】
本発明の第１の実施形態を実施するメッセージングシステム１００について、図１を参照して以下において説明する。システム１００は、従来のデータ処理システムハードウェア特徴（図示せず）と、メッセージ指向ミドルウェア（ＭＯＭ）プログラム３０とインタフェースする１組のアプリケーションプログラム１０、２０を含むソフトウェアとを組み合わせたものである。ＭＯＭは、基礎をなすオペレーティングシステム４０からサポートを得る。ＭＯＭプログラム３０は、メッセージキューを介して非同期ポイントツーポイントメッセージングを実施する。送信側アプリケーションプログラム１１０は、遠隔データ処理システム１５０に配置されてよく、ローカルＭＯＭキューマネージャ１２０により管理されるローカルメッセージキュー１４０にキューを配置するＡＰＩ呼び出しを行うことが可能である。物理ネットワークにわたって分散する複数のＭＯＭキューマネージャが相互に動作して、ターゲットアプリケーションプログラム１０のローカルＭＯＭキューマネージャ３０により管理されるキュー５０へのメッセージの転送を処理する。２つのみのキューマネージャ１２０、３０を図１に示すが、特定のメッセージの送達に関わる多くのシステムがあってよい。相互に動作するＭＯＭ製品は、ターゲットアプリケーションプログラム１０が準備ができたときにメッセージを処理できるように、異種ネットワークを介してのネットワークルーティングおよびトランザクション保証送達という複雑な問題を処理する。アプリケーションプログラム１０は、メッセージを入力キュー５０から検索するＡＰＩ呼び出しを発行し、キューマネージャ３０はこれに応答して、メッセージをアプリケーションプログラム１０に渡す。検索が成功したと仮定すると、メッセージはキュー５０から削除される。キューを介してメッセージを転送するこの非同期手法は、当分野において周知であり、ＩＢＭ  ＣｏｒｐｏｒａｔｉｏｎのＷｅｂＳｐｈｅｒｅ  ＭＱ製品ファミリ内のＭＯＭ製品で実施されていた。
【００２５】
これより、キュー５０が、同じアプリケーションプログラムの別個のインスタンスであってよい２つのプロセッサ１０、２０により共有されるメッセージング環境を考える。例えば、キュー５０は共有「ｒｅｐｌｙＴｏ（返信）」キューであってよく、ここから、各アプリケーションインスタンスが各返信メッセージを選択する。選択は、相関識別子（以下参照）または何等かのインスタンス識別子に基づくことができるが、いずれの場合でも、選択では、式を評価して、キューに保持されているメッセージが特定のアプリケーションインスタンスの要件にマッチングするか否かを判断することが必要である。
【００２６】
ＪＭＳでは、メッセージは以下を含む。
送信側クライアントおよび受信側クライアントの両方ならびにＪＭＳプロバイダがメッセージの識別およびルーティングに使用する値を含むフィールド２１０、２２０、２３０を有するメッセージヘッダ２００（図２参照）。
プロパティ２４０−各メッセージが、アプリケーション定義のメッセージフィルタリングに使用できるアプリケーション定義プロパティ値をサポートする機能を含む（プロパティはアプリケーション固有のヘッダフィールドと考えることができる）。
送信中のアプリケーションデータを含むメッセージ本体２５０（または「ペイロード」）。ＪＭＳ実装では、メッセージ本体は５つのタイプ、すなわちストリーム、マップ、テキスト、オブジェクト、またはバイトのうちの１つであることができる。
【００２７】
メッセージヘッダ内のＪＭＳＣｏｒｒｅｌａｔｉｏｎＩＤヘッダフィールドは、返信メッセージを要求メッセージにリンクするため等、１つのメッセージを別のメッセージにリンクするために使用することができる。例えば、相関識別子は、複数のアプリケーションインスタンスが同じ「ｒｅｐｌｙＴｏ」キューにデータ提供するポイントツーポイントメッセージング実装でのメッセージ選択のベースを提供することができる。ＪＭＳコンシューマアプリケーションが、メッセージ「セレクタ」内のメッセージヘッダフィールドリファレンスおよびプロパティリファレンスを介して関心のあるメッセージを特定することができる。ＪＭＳメッセージセレクタは、条件付きメッセージ選択フィルタ式であり、すなわち、シンタックスがＳＱＬ９２条件付き式シンタックスの部分集合に基づくストリングとして指定される。式は、受信メッセージのヘッダフィールド値およびプロパティ値がセレクタ内の対応する要素にマッチングする場合に真と評価される。セレクタは、ＪＭＳプロバイダ（ＭＯＭ製品）によりＪＭＳコンシューマ（メッセージングアプリケーション）の代わりとして評価される。したがって、ヘッダフィールドおよびプロパティがセレクタにマッチングするメッセージのみがコンシューマに送達される。
【００２８】
もちろん、ヘッダフィールドおよびプロパティに基づくメッセージ選択フィルタリングは、上述したようなＪＭＳパブリッシュ／サブスクライブの実施ならびにポイントツーポイントメッセージングの例に欠かせない。パブリッシャ／サブスクライブネットワークを図３に概略的に示す。パブリッシャアプリケーション１１０、３１０が、データ処理システム３５０で実行されているパブリッシャ／サブスクライブブローカ３４０にメッセージを送信する（ローカルメッセージ処理プログラム１２０、３２０および利用可能なネットワーク接続を介して）。パブリッシャ／サブスクライブブローカは、マッチングングエンジン３６０および１組のサブスクライバ（アプリケーション１０、４００、４３０、または各ローカルメッセージ処理プログラム３０、３９０、４２０）に代わってサブスクリプション情報を保持するリポジトリ３７０を含む。このパブリッシャ／サブスクライブネットワーク例では、フィルタリングは、ブローカ３４０のマッチングングエンジン３６０内で実施することができる。代替のパブリッシャ／サブスクライブネットワークは、中間ネットワークハブにあるブローカ内ではなく、サブスクライバアプリケーションにとってローカルのマッチングする構成要素内でのメッセージプロパティフィルタリングを含むサブスクリプションマッチングングを実施する。本発明は、各種モデルのＪＭＳ実装を含むこれらパブリッシャ／サブスクライブ通信モデルおよびポイントツーポイント通信モデルのそれぞれに適用可能である。
【００２９】
典型的なＪＭＳ環境では、メッセージ選択フィルタの処理にはコストがかかる。アプリケーションプログラムインスタンスが、呼び出しｓｅｓｓｉｏｎ．ｃｒｅａｔｅＣｏｎｓｕｍｅｒ（…，ｓｅｌｅｃｔｏｒ）を使用して作成される都度、ＪＭＳプロバイダ（すなわち、ＪＭＳインタフェースのＭＯＭ製品実装）は図４に示すような以下のステップを実施する必要がある。
１．アプリケーションインスタンスの選択フィルタをパーズし（５００）、
２．評価に向けてフィルタを準備する（５１０）。
【００３０】
次に、選択フィルタを、後の評価に使用するために保存する（５２０）。
【００３１】
次に、アプリケーションプログラムインスタンス１０が入力キュー５０からメッセージを検索しようとする都度、ＪＭＳプロバイダは、
１．特定のメッセージのＪＭＳメッセージヘッダおよびプロパティをパーズし（５３０）、
２．保存されているフィルタ式を評価して、メッセージがアプリケーションインスタンスの要件にマッチングするか否かを判断する（５４０）
必要がある。
【００３２】
フィルタ式が真と評価された場合、メッセージが特定のアプリケーションインスタンスにより検索されるのに対して、式が偽と評価される場合、アプリケーションインスタンスはキュー内の次のメッセージの検査に移る。
【００３３】
したがって、従来の方法を使用する場合、フィルタ式は、ｃｒｅａｔｅＣｏｎｓｕｍｅｒ（  ）演算が実行される都度、１回パーズされ、ｃｒｅａｔｅＣｏｎｓｕｍｅｒ（  ）演算の都度、準備演算が１回実行される。キュー内の各メッセージが検査される都度、別個のメッセージパーズ演算が１回実行される。
【００３４】
本発明の発明者は、典型的なＪＭＳメッセージング環境において多くの繰り返し処理が実行されることを認識した。本発明者は、テンプレートを使用してパターンを識別して利用し、フィルタ式の効率的なパーズおよび自動準備を実行してＪＭＳメッセージ選択フィルタ式に関連する処理オーバーヘッドを低減することができると結論づけた。
【００３５】
本発明の第１の実施形態では、テンプレートベースのパーズが、新しいＪＭＳコンシューマ作成時に指定されたＪＭＳ選択フィルタに対して実行される。すなわち、記憶されている、前に識別された式のタイプを表すテンプレートが選択フィルタと比較される。マッチングが識別される場合、マッチングングプロセスは、既知のタイプの式の要素を識別してパラメータ値（「定数」）を式から抽出するテンプレートベースのパーズにマッチングしたテンプレートを使用することを含む。このような式を識別した後、前に記憶されている最適化された評価テンプレートが選択され、式の評価に使用される。抽出されたパラメータは評価テンプレートに挿入されて、最適化された評価コードが形成される。したがって、共通のタイプの式を表すテンプレートを生成して記憶することにより、新しいＪＭＳコンシューマの作成に関連するパーズステップおよび準備ステップの両方を短縮することが可能である。
【００３６】
さらに、メッセージをＪＭＳコンシューマの入力キューで受け取られると、別のテンプレートベースのパーズが、受信メッセージのメッセージヘッダおよびプロパティに対して実行される。すなわち、メッセージヘッダまたはプロパティ内の前に識別されたパターンを表す記憶されているテンプレートを使用して、入力メッセージのパーズを簡略化する。
【００３７】
この効率的なテンプレートベースのパーズおよび関連する自動化された準備ステップの情報推論は、新しいフィルタならびに広範囲のメッセージヘッダおよびプロパティを処理できる柔軟性を犠牲にすることなく実現される。メッセージ選択フィルタまたは受信メッセージのヘッダ／プロパティが、記憶されているテンプレートのいずれともマッチングしない場合、従来のパーズステップ、準備ステップ、および評価ステップが実行される。次に、これら従来のパーズステップおよび準備ステップの結果を使用して、後に使用する新しいテンプレートを生成することができる。
【００３８】
本発明は他の環境および他のタイプの式に適用可能であるが、ＪＭＳ選択フィルタを事前処理して評価する例について、図６、図７、および図８を参照して以下においてより詳細に説明してから、他の例の説明に移る。
【００３９】
図６は、データ処理ユニット５７０、メインメモリ５５０、不揮発性記憶装置５８０、入出力ネットワーク接続５７０、および内部通信バスを備える、ネットワーク接続されたデータ処理システム８００内の本発明の第１の実施形態の構成要素の概略図である。この第１の実施形態では、本発明は、システムメモリ５５０内のＪＭＳプロバイダ（ＭＯＭ製品）６００の各種データリポジトリおよび実行可能構成要素により実施される。ＪＭＳプロバイダ６００は、これもまたシステムメモリで実行される従来のＪＭＳコンシューマアプリケーション１０、２０にサポートを提供する。図６に示す各種構成要素により実行される動作について、図７および図８を参照して以下において説明する。
【００４０】
本発明の第１の実施形態では、新しいＪＭＳコンシューマｓｅｓｓｉｏｎ．ｃｒｅａｔｅＣｏｎｓｕｍｅｒ（．．．，ｓｅｌｅｃｔｏｒ）を作成する命令をＪＭＳプロバイダ６００から受け取る（８１０）と、命令はまず、テンプレートパーサ６１０に渡される。テンプレートパーサは、１組の記憶テンプレートを表すテンプレートツリー６２０にアクセスし（８２０）、入力ストリングを、テンプレートツリー６２０内で現在表されている１組のパーズテンプレートと比較する（８３０）。１組のテンプレートは、「セレクタ」を処理する少なくとも１つのテンプレート、すなわち通常、新しいＪＭＳメッセージコンシューマを作成するために命令内に含まれるフィルタ式を処理するテンプレートを含む。利用できるテンプレートでマッチングするものがない場合、作成命令内のセレクタが、第２のパーサ６３０により従来通りにパーズされる。このパーズは、入力ストリングを既知のシンタックス規則と比較してセレクタの構造を判断し、メッセージ選択フィルタリングについて評価できるようにし、共通のパラメータタイプおよびデータ値を含む各種式パラメータを識別してから、処理可能なデータ構造内に配置する。準備プロセス６４０がパーズ結果に対して実行されて、より効率的な評価処理に向けてセレクタを準備する（８６０）。これは、通常、パーズされた入力ストリングの構造またはシンタックスを、より効率的な処理、この場合は効率的なメッセージ選択フィルタ評価を可能にする新しいフォーマットに変換することを含む従来のステップである。
【００４１】
マッチングするパーズテンプレートが識別されない場合、パーズステップ８５０および準備ステップ８６０が上述したように実行されてから、その結果が最適化された評価コード６５０として保存される（８７０）。この好ましい実施形態では、パーズ結果はまたパーズテンプレートジェネレータ６６０に入力されて、新しいパーズテンプレートが作成される（８８０）。準備ステップの結果は評価テンプレートジェネレータ６７０に渡されて、新しい式評価テンプレートが作成される（８９０）。新しいパーズテンプレートは、セレクタ式の識別されたパラメータを表すが、これらパラメータのデータ値は空白のままである。新しい式評価テンプレートはパーズテンプレートおよび前の準備ステップ中に作成された変換済みの式から導出される。新たに作成されたパーズテンプレートはいずれも、パーズテンプレートツリー６２０に追加され（９００）、新しい式評価テンプレートが式評価テンプレートの別個の記憶装置６８０に追加される（９００）。この実施形態では、各式評価テンプレートをパーズテンプレートツリー６２０のリーフノードに関連付けることにより、新しい式評価テンプレートが各パーズテンプレートに関連付けられる。
【００４２】
その後、新しいＪＭＳコンシューマが同様のセレクタを使用して定義されるとき、パラメータの繰り返しパターンを認識し、新しいパーズテンプレートを使用してパーズする（８２０）ことができる。すなわち、新しい命令ｓｅｓｓｉｏｎ．ｃｒｅａｔｅＣｏｎｓｕｍｅｒ（．．．，ｓｅｌｅｃｔｏｒ）内で指定されたセレクタがテンプレートパーサ６１０に渡されると、テンプレートパーサは新しいセレクタをテンプレートツリー６２０内に表される１組のテンプレートと比較する（８２０）。新しいパーズテンプレートがマッチングと識別され、これを使用してセレクタの構造が解析され、セレクタのフィルタ式のパラメータ情報を抽出する。式評価テンプレートがすでに、この対法のフィルタ式に対して作成されているため、新しく明示的な準備ステップまたは新しい評価テンプレートの作成は何等必要ない。それに代えて、評価テンプレートセレクタ６９０は前に保存した式評価テンプレート（このタイプの式を、効率的に評価できるフォーマットですでに表す）を選択し（８３０）、新しいメッセージ選択フィルタ式を評価することができる。例えば、記憶されている式評価テンプレートでは、ＪＭＳフィルタ式のＳＱＬ様シンタックスは、各ＭＯＭプログラムコードがより効率的に処理する異なるシンタックスで置換されている。
【００４３】
成功したテンプレートベースのパーズステップ８２０から推論される情報により、記憶されている１組の式評価テンプレートから適当なテンプレートを選択する（８３０）ことができる。パーズステップ８２０はまた、コードジェネレータ７００により評価テンプレートに結合（８４０）して、最適化された評価コードを生成することができるパラメータを抽出する。このようにし、繰り返しパターンの認識により、効率的な実行パスである前のパーズの結果の再利用および前の準備の再利用が可能であり、評価ステップに向けての準備の処理が従来の解決策よりも少なくなる。
【００４４】
例えば、ＪＭＳメッセージ選択構成要素がフィルタ式：
Ｅ−ｆｉｌｔｅｒ１：“ＪＭＳＣｏｒｒｅｌＩｄ＝‘ａｂｃ’  ａｎｄ  ＺＺＺ＝‘ｚｘｃ’”
を見る場合、メッセージ選択構成要素はフィルタ式をパーズしてから、準備処理を明示的に実行して、以下のように表すことができる最適化された評価コードを生成することができる。
Ｏｐｔ−ｃｏｄｅ１：ＭＱＣｏｒｒｅｌＩｄ：：ａｂｃ    ［［ＺＺＺ：：ｚｘｃ］］
【００４５】
これは、評価に適した形態でフィルタ式の表現を提供するが、まだいかなる再利用も可能ではなく、またいかなる処理オーバーヘッドも節減しない。メッセージフィルタ式を処理して、以下のように式の要素の繰り返しを認識するパーズテンプレートを作成することもできる。
Ｅ−ｐａｒｓｅ＿ｔｅｍｐｌａｔｅ１：ＪＭＳＣｏｒｒｅｌＩｄ＝‘％１％’ａｎｄ  ＺＺＺ＝‘％２％’
【００４６】
次に、メッセージ選択構成要素は、このパーズテンプレートを、最適化された評価コードに関連し、特定の評価関数の使用に向けて最適化された評価テンプレートに関連付けることができる。
Ｅ−ｅｖａｌｕａｔｉｏｎ＿ｔｅｍｐｌａｔｅ１：ＭＱＣｏｒｒｅｌＩｄ：：％１％  ［［ＺＺＺ：：％２％］］
（ＪＭＳＣｏｒｒｅｌＩｄ＝’％１％’ａｎｄ  ＺＺＺ＝’％２％’に関連する）
【００４７】
この説明のための例では、シンボル‘：：’および‘［［  ］］’の使用は、‘ＧｅｔＭｅｓｓａｇｅ’演算によりＭＯＭシステムから検索されたメッセージのテストに使用できる効率的な内部表現を示す。
【００４８】
初期フィルタ式のパーズは、評価テンプレートに挿入できるパラメータを抽出し、これらは以下のように表すことができる。
Ｅ−ｉｎｓｅｒｔｓ１：−−＞Ｅ−ｅｖａｌｕａｔｉｏｎ＿ｔｅｍｐｌａｔｅ１
％１％＝ａｂｃ    ％２％＝ｚｘｃ
（但し、表現‘−−＞Ｅ−ｅｖａｌｕａｔｉｏｎ＿ｔｅｍｐｌａｔｅ１’は、これら挿入部がテンプレート‘Ｅ−ｅｖａｌｕａｔｉｏｎ＿ｔｅｍｐｌａｔｅ１’と併せて使用されるためのものであることを示し、挿入値は‘ａｂｃ’および‘ｚｘｃ’である）。
【００４９】
上記例では、パーズされる式は、そのタイプのすべての式に共通する部分（この部分はテンプレートに表すことができる）および可変部分（挿入部）に分けられる。共通部分は、通常、フィールド名（‘ＪＭＳＣｏｒｒｅｌＩｄ’等）および演算子（‘＝’および‘ａｎｄ’等）を含むのに対して、挿入部は、通常、式内の「定数」（すなわち、特定のタイプの式の異なるインスタンスで変化する値）を含む。
【００５０】
本発明の代替の実施形態では、式のどの要素がテンプレートの部分になるべきか、またどれを挿入部として処理すべきかを判断するための異なる規則セットがあり得る。例えば、ＪＭＳＰｒｉｏｒｉｔｙを特殊なケースとして認識し、副次式‘ＪＭＳＰｒｉｏｒｉｔｙ＝１’をテンプレートの部分として扱い、‘ＪＭＳＰｒｉｏｒｉｔｙ＝２’特別することが有利であり得る。さらに、上記実施形態は、準備処理の多くの異なる例が当分野において既知であるという点で単なる例示にすぎない。
【００５１】
上記評価テンプレート例は、相関識別子の選択がここでは、ＭＯＭ製品コードにより効率的にアクセスできる標準メッセージヘッダフィールド（ＭＱＣｏｒｒｅｌＩｄ：：）を参照することにより処理できるため、最適化を表す。ＭＯＭ製品によっては、内部メッセージ処理関数を覆うＪＭＳレイヤを含むものがある。標準メッセージヘッダフィールドのいくつかは元のフィルタ式の対応するパラメータと同じ情報を含むが、効率的な評価を可能にする異なるフォーマットである。この説明のための例では、標準ヘッダフィールドは、拡張されたＪＭＳヘッダを複製し、それにより、‘ＧｅｔＢｙＣｏｒｒｅｌＩｄ＝ａｂｃ’を使用して共有入力キューからメッセージを検索するとき、または優先度もしくはｕｓｅｒＩＤに基づいて選択するときにＭＯＭ製品は標準ヘッダフィールドを使用できる。元のＪＭＳ選択フィルタ式の要素は、異なるシンタックスを有し、ＭＯＭ製品コードにより効率的に評価することができる等価の要素で置換されている。
【００５２】
異なるヘッダフィールドを調べるように適合されるのみならず、ＭＯＭ製品の既存のＡＰＩ呼び出しオプションまたは内部インデックスを使用してフィルタリングを実行できる（このようなパラメータをＭｅｓｓａｇｅＩｄ、ＣｏｒｒｅｌＩｄ、およびＧｒｏｕｐＩｄとして使用して）評価テンプレートを生成することができる。この場合、基礎をなすＭＯＭ製品コードからＪＭＳレイヤへに失敗したメッセージを渡すコストも節減することができる。
【００５３】
既知のソリューションは準備処理を明示的に実行することができるが、繰り返しパターンを識別して評価テンプレートを再利用することができる本発明のテンプレートベースのショートカットを使用して性能の向上が可能である。テンプレートベースのパーズおよび予め記憶された評価テンプレートの使用により、入力式の暗黙的かつ自動化された最適化が可能であり、これにより、この実施形態では、パーズが簡略化され、準備処理の繰り返しが回避され、かつ評価の低いフィルタが「押し出さ」れる。
【００５４】
本発明のこの実施形態では、ＪＭＳメッセージ選択構成要素が、例：
Ｅ−ｆｉｌｔｅｒ２：ｓ．ｃｒｅａｔｅＣｏｎｓｕｍｅｒ（．．．，“ＪＭＳＣｏｒｒｅｌＩｄ＝‘ｄｅｆ’  ａｎｄ  ＺＺＺ＝‘ｖｂｎ’”）
のような第２の同様の式を続けて見たとき、これは、
Ｅ−ｉｎｓｅｒｔｓ２：−−＞Ｅ−ｅｖａｌｕａｔｉｏｎ＿ｔｅｍｐｌａｔｅ１
％１％＝ｄｅｆ  ％２％＝ｖｂｎ
により、パーズテンプレート‘Ｅ−ｐａｒｓｅ＿ｔｅｍｐｌａｔｅ１’にマッチングするものとして識別される。
【００５５】
このマッチングの結果、ＪＭＳメッセージ選択構成要素は、最適化された式評価テンプレート‘Ｅ−ｅｖａｌｕａｔｉｏｎ＿ｔｅｍｐｌａｔｅ１’を第２のフィルタ式に自動的に関連付ける。パーズステップが簡略化されるだけではなく、新しいフィルタを準備して最適化する必要がない。
【００５６】
上記処理は、メッセージ選択に最適化された評価コードを効率的に準備する。
Ｏｐｔ−ｃｏｄｅ２：ＭＱＣｏｒｒｅｌＩｄ：：ｄｅｆ  ［［ＺＺＺ：：ｖｂｎ］］
【００５７】
第２のフィルタ（Ｅ−ｆｉｌｔｅｒ２）に対応する最適化された評価コード（Ｏｐｔ−ｃｏｄｅ２）は既知の技法の繰り返し処理を使用して生成されるものと同じであるが、最適化された評価コードは、準備処理を繰り返すことなく生成された。この繰り返し処理の回避の恩恵は、かなりの繰り返しを示す環境で顕著であり得る。
【００５８】
図８を参照して以下において説明するのは、フィルタ式を評価する必要がある新しい入力メッセージを受信したときに実行される追加処理である。メッセージが、データ処理システムのネットワーク接続５６０を介して受信され、ＪＭＳプロバイダ６００によりメモリの確保領域７２０内のメッセージキュー５０に配置される。受信メッセージのテンプレートベースのパーズが、メッセージパーズテンプレートの記憶されているツリー７３０にアクセスするメッセージパーサ７１０により実行される（９１０）（セレクタのテンプレートパーズとは別個）。マッチングするメッセージパーズテンプレートがツリー内で見つかる場合、このテンプレートベースのパーズは、１組のメッセージヘッダ／プロパティフィールド名、演算子、および定数を、従来のパーズよりも効率的に識別し、多数の繰り返しメッセージがある環境での処理を節減する。図５に明示的に示されていないが、テンプレートベースのメッセージパーサ７１０は、マッチングするテンプレートがメッセージパーズテンプレートツリー７３０内で見つからない場合、責務を従来のパーズプロセスに移す。
【００５９】
上記メッセージパーズを、第１の受信メッセージｍｅｓｓａｇｅ１および続いて受信されるメッセージｍｅｓｓａｇｅ２について簡略化された例を使用して以下に示す。
ｍｅｓｓａｇｅ１
Ｍ−ｕｓｒ１：    ＜ＺＺＺ＞ａｓｄ＜／ＺＺＺ＞＜ａｎｏｔｈｅｒ＞ｄａｔａ＜／ａｎｏｔｈｅｒ＞
Ｍ−ｔｅｍｐｌａｔｅ１：    ＜ＺＺＺ＞＄１＄＜／ＺＺＺ＞＜ａｎｏｔｈｅｒ＞＄２＄＜／ａｎｏｔｈｅｒ＞
Ｍ−ｉｎＭａｔｃｈｅｒ１：    ＄１＄−−＞ＺＺＺ    ＄２＄−−＞ａｎｏｔｈｅｒ
Ｍ−ｉｎｓｅｒｔｓ１：    −−＞Ｍ−ｉｎＭａｔｃｈｅｒ１    ＄１＄＝ｚｘｃ    ＄２＄＝ｄａｔａ
ｍｅｓｓａｇｅ２
Ｍ−ｕｓｒ２：    ＜ＺＺＺ＞ｆｇｈ＜／ＺＺＺ＞＜ａｎｏｔｈｅｒ＞ｅｘａｍｐｌｅ＜／ａｎｏｔｈｅｒ＞
Ｍ−ｉｎｓｅｒｔｓ２：−−＞ｉｎｐｕｔ  ｍａｔｃｈｅｒ  １  ＄１＄＝ｆｇｈ    ＄２＄＝ｅｘａｍｐｌｅ
【００６０】
上記例では、Ｍ−ｉｎＭａｔｃｈｅｒ１は、Ｍ−ｔｅｍｐｌａｔｅ１内の挿入物とこれら挿入物が関連付けられるフィールド値との間の関係を示す。したがって、＄１＄−−＞ＺＺＺは、第１の挿入物（＄１＄）にフィールドＺＺＺが関連付けられることを示す。
【００６１】
したがって、第２のメッセージおよびテンプレートパーズ（Ｍ−ｕｓｒ２）を見て、＄１＄＝‘ｇｆｈ’であることを見つけたとき、Ｍ−ｉｎＭａｔｃｈｅｒ１を使用して、ＺＺＺ＝‘ｆｇｈ’であると推定するとともに、同様に、いくつかの内部フォーマット内で（［  ］で表される）、ヘッダが
Ｍ−ｈｅａｄｅｒ２：  ［ＺＺＺ＝‘ｆｇｈ’，ａｎｏｔｈｅｒ＝‘ｅｘａｍｐｌｅ’］
を表すことを推定する。
【００６２】
ここで、メッセージおよび評価式の両方の効率的な内部表現を有し、したがって、フィルタ式エバリュエータ７４０によりメッセージ内に保持される値に基づいて式を効率的に評価する（９２０）ことができる。上記メッセージング例では、これは、以下の例：
Ｏｐｔ−ｃｏｄｅ−２：ＭＱＣｏｒｒｅｌＩｄ：：ｄｅｆ  ［［ＺＺＺ：：ｖｂｎ］］
Ｍ−ｈｅａｄｅｒ２：［ＺＺＺ＝‘ｆｇｈ’，ａｎｏｔｈｅｒ＝‘ｅｘａｍｐｌｅ’］
のようなヘッダ名を突き合わせることを含む。
【００６３】
Ｏｐｔ−ｃｏｄｅ−２内の要素‘ＭＱＣｏｒｒｅｌＩｄ：：ｄｅｆ’は、標準メッセージヘッダフィールドへの参照により基礎をなすＭＯＭコードによる処理のために押し出され（上述のように）、‘Ｍ−ｈｅａｄｅｒ’に現れる必要がない。マッチングするＣｏｒｒｅｌＩｄを有するメッセージが見つかる場合、内部式［［ＺＺＺ＝＝‘ｖｂｎ’］］がメッセージヘッダ［ＺＺＺ＝‘ｆｇｈ’，ａｎｏｔｈｅｒ＝‘ｅｘａｍｐｌｅ’］と突き合わせて評価される（９２０）。式がアプリケーションプログラムに対して真と評価される場合、ＪＭＳプロバイダはメッセージを各アプリケーションプログラム１０、２０に渡す。
【００６４】
別の代替の実施態様では、フィールド名はパーズおよび式とメッセージヘッダとの突き合わせのプロセスからなくなる。特に、フィールド名は、フィールド名からフィールドインデックスへの固定マッピングから判断されるインデックスで置換される。説明のための例では、マッピングは以下のようであってよい。
ＪＭＳＣｏｒｒｅｌ−＞？１？，ＡＡＡ−＞？２？，ＺＺＺ−＞？３？，ａｎｏｔｈｅｒ−＞？４？であり、以下同様である。
【００６５】
したがって、評価テンプレート：
Ｅ−ｅｖａｌｕａｔｉｏｎ＿ｔｅｍｐｌａｔｅ１：ＭＱＣｏｒｒｅｌＩｄ：：％１％  ［［ＺＺＺ＝‘％２％’］］
は、
Ｅ−ｅｖａｌｕｔｉｏｎ＿ｔｅｍｐｌａｔｅ１：ＭＱＣｏｒｒｅｌＩｄ：：％１％    ［［？３？＝‘％２％’］］
として記憶され、
Ｏｐｔ−ｃｏｄｅ−２：ＭＱＣｏｒｒｅｌＩｄ：：ｄｅｆ    ［［？３？：：ｖｂｎ］］
をもたらす。メッセージマッチングャテンプレート：
Ｍ−ｉｎＭａｔｃｈｅｒ１：＄１＄−−＞ＺＺＺ  ＄２＄−−＞ａｎｏｔｈｅｒ
は、
Ｍ−ｉｎＭａｔｃｈｅｒ１：＄１＄−−＞？３？  ＄２＄−−＞？４？
として記憶される。そして、これは、
Ｍ−ｈｅａｄｅｒ２：［？３？＝‘ｆｇｈ’，？４？＝‘ｅｘａｍｐｌｅ’］
をもたらす。
【００６６】
フィールドマッチング（ハッシュテーブル参照として実施可能）はこうして、インデックスマッチングングで置換される。これは単純なアレイ参照として実施することができる。
【００６７】
上述したように、本発明は、ＪＭＳメッセージ選択フィルタの評価に制限されず、メッセージブローカまたはクライアントメッセージングシステムにより実施される条件付き変換等の他の式の評価に使用することも可能である。例えば、変換式はＳＱＬ様シンタックスで表現することができる。
ＳＥＬＥＣＴ  ｎａｍｅ，ｐｒｉｃｅ，ｑｕａｎｔｉｔｙ，ｔｏｔａｌ  ＡＳ  ｐｒｉｃｅ  ＊  ｑｕａｎｔｉｔｙ  ＷＨＥＲＥ  ｎａｍｅ＞“Ｍ”
【００６８】
節‘ＷＨＥＲＥ  ｎａｍｅ＞“Ｍ””はフィルタとして機能するが、式はさらに、総値の計算によりメッセージを変形すべきことも指定する。ソースは入力メッセージストリームであるため、‘ＦＲＯＭ’を指定する必要はない。この例では、パーズおよび準備（または‘最適化’）は、ＪＭＳメッセージ選択フィルタについて上述したものと同じであるが、入力メッセージが式と突き合わせて処理される最終評価ステップは、メッセージが単にメッセージ選択に向けてフィルタリングされるのではなく、メッセージが変更されるという点で異なる。
【００６９】
したがって、繰り返しパターンにより記憶されているテンプレートの再利用が促される異なるタイプの式が本発明から恩恵を受けることができる。異なるアプリケーション環境が異なる種々の式準備ステップから恩恵を受けて、最適化された式評価テンプレートを実現する。しかし、準備ステップが高価であることは多くの環境に共通する特徴であるため、本発明の記憶されたパーズテンプレートおよび式評価テンプレートの再利用によるこの処理のショートカットにより、処理オーバーヘッドの価値ある低減を提供することができる。
【図面の簡単な説明】
【００７０】
【図１】当分野において既知のポイントツーポイントメッセージングネットワークでのメッセージ転送の概略図である。
【図２】当分野において既知のメッセージ構造例を表す。
【図３】当分野において既知のパブリッシャ／サブスクライブネットワークの概略図である。
【図４】評価に向けてフィルタ式を準備する等の入力データ処理命令の従来の処理を表す。
【図５】入力メッセージの対応する式を表す。
【図６】本発明の一実施形態によるデータ処理システムの概略図である。
【図７】本発明の一実施形態による最適化された評価コードを準備する方法の一連のステップを表す。
【図８】入力メッセージの対応する式を表す。
【符号の説明】
【００７１】
１０、２０  アプリケーション
５６０  ネットワーク接続
５７０  処理ユニット
５８０  不揮発性記憶装置
５９０  通信バス
６１０  テンプレートパーサ
６２０  式パーズテンプレート
６３０  第２のパーサ
６４０  準備プロセス
６５０  最適化されたコード
６６０  テンプレートジェネレータ
６７０  評価テンプレートジェネレータ
６８０  評価テンプレート
６９０  評価テンプレートセレクタ
７００  コードジェネレータ
７１０  メッセージパーサ
７３０  メッセージパーズテンプレート
７４０  フィルタエバリュエータ
【図１】
0005400305.tif 000002
【図２】
0005400305.tif 000003
【図３】
0005400305.tif 000004
【図４】
0005400305.tif 000005
【図５】
0005400305.tif 000006
【図６】
0005400305.tif 000007
【図７】
0005400305.tif 000008
【図８】
0005400305.tif 000009