説明

ランタイム中のメッセージ・フローのプログラムによる修正のための方法、システムおよびコンピュータ・プログラム

【課題】ランタイム中のメッセージ・フローのプログラムによる修正のための方法、システム、およびコンピュータ・プログラム製品を提供する。
【解決手段】メッセージ・ブローカ内のメッセージ・フローを識別することができる。メッセージ・フローにはノードおよび接続路を含めることができる。ノードには、反射ノード、事前定義ノード、およびユーザ定義ノードを含めることができる。メッセージ・ブローカは、メッセージを第一正式メッセージング・プロトコルから第二正式メッセージング・プロトコルに変換できる媒介コンピュータ・プログラム・コードとすることができる。メッセージ・フロー内の反射ノードを選択することができる。反射ノードは、外部リソースと関連付けることができ、このリソースを実行コードとすることができる。

【発明の詳細な説明】
【技術分野】
【0001】
本発明はメッセージ・パッシングの分野に関し、さらに具体的には、ランタイム中のメッセージ・フローのプログラムによる修正に関する。
【背景技術】
【0002】
アプリケーション統合とは、ハイ・レベルでは、組織内または組織間のソフトウエア・アプリケーションを統合するために実装可能なソリューションであるといえる。歴史的に、アプリケーション統合は、例えば、社内の異なる部門、事業部の間、または新規合併会社との間などでレガシー・ソフトウエア・アプリケーションの統合に重きを置いてきた。組織内で、これらのアプリケーションは、部門にわたって相当に違いがあることが多く、相異なるプラットフォーム上に存在することがあり、相異なるプログラミング言語で記述されることがあり、相異なるデータ・フォーマットが使われることがある。サービス指向アーキテクチャ(SOA:Service Oriented Architecture)内にアプリケーションを統合することは、実際的で既存のアプリケーションを再記述するのに替わるコスト効果的なソリューションとなり得る。
【0003】
SOAインフラストラクチャ内では、メッセージ・パッシングは、フレキシブル、再使用可能で、ロバストなアプリケーション統合の構築を可能にする不可欠のコンポーネントであるといえる。通常、メッセージ・パッシングは、数多くのメッセージ処理オペレーションを遂行できるメッセージ・ブローカを含む。すなわち、メッセージ・ブローカは、組織内のアプリケーション間の交信を円滑にすることができる。メッセージ・ブローカは、現在静的状態のメッセージ・フロー内のメッセージを処理することができる。すなわち、メッセージ・フローが、動的に、自己制御するもしくはメッセージ、内部状態、コンテキスト、および刺激に反応する、またはその両方を行うことはできない。
【発明の概要】
【発明が解決しようとする課題】
【0004】
メッセージ・フローの処理の改善のための現在のソリューションには、手動によるメッセージ・フロー修正が含まれる。例えば、メッセージ・フローの設計は、ボトルネックを表示可能なパフォーマンス評価指標に応じて、ミドルウェア・アナリストが修正することができる。手動で修正されたメッセージ・フローは、人手を介して、再展開し、継続的に最適化しなければならない。このアプローチは、手間がかかり、間違いが発生しやすい可能性があり、インフラストラクチャのコストに大きく影響することがある。
【課題を解決するための手段】
【0005】
本発明の一つの態様には、ランタイム中のメッセージ・フローのプログラムによる修正のための方法、コンピュータ・プログラム、システム、および装置を含めることができる。メッセージ・ブローカ内のメッセージ・フローを識別することができる。メッセージ・フローにはノードおよび接続路を含めることができる。ノードには、反射ノード、事前定義ノード、およびユーザ定義ノードを含めることができる。このメッセージ・ブローカは、メッセージを第一正式メッセージング・プロトコルから第二正式メッセージング・プロトコルに変換できる媒介コンピュータ・プログラム・コードとすることができる。このコードは、コンピュータ可読媒体内に格納することができる。メッセージ・フロー内の反射ノードを選択することができる。反射ノードは、外部リソースと関連付けることができ、このリソースを実行コードとすることができる。外部リソースを実行し、メッセージ・フローの構造の修正を行うことができる。修正はランタイム中に行うことが可能である。この修正には、ノードもしくは接続路またはその両方の追加、変更、および削除を含めることができる。
【0006】
本発明の別の態様には、ランタイム中にメッセージ・フローをプログラムで修正するためのシステムを含めることができる。この態様では、フロー・エンジンが、ノード、接続路、および反射ノードを含むメッセージ・フローを実行することができる。フロー・エンジンはメッセージ・ブローカと関連付けることができる。反射ノードを外部リソースと関連付けることが可能である。外部リソースは、メッセージ・フローを構造的に修正できる実行コードとすることができる。メッセージ・キューは、アプリケーションとの関連付けが可能なメッセージを保持するように構成することができる。アプリケーションは、コンピュータ可読媒体内に格納されたコンピュータ・プログラム・コードとすることができる。アプリケーションは、アプリケーション・サーバと関連付けることができる。構成設定によって、反射ノードを外部リソースもしくはパラメータまたはその両方にリンクすることができる。このパラメータは実行設定値とすることができる。
【図面の簡単な説明】
【0007】
【図1】本明細書で開示する本発明アレンジメント(方法/装置/配列)の実施形態による、ランタイム中のメッセージ・フローのプログラムによる修正の方法を示すフローチャートである。
【図2】本明細書で開示する本発明アレンジメントの実施形態による、ランタイム中のメッセージ・フローのプログラムによる修正の一組のシナリオを示す概略図である。
【図3】本明細書で開示する本発明アレンジメントの実施形態による、ランタイム中のメッセージ・フローのプログラムによる修正のためのシステムを示す概略図である。
【発明を実施するための形態】
【0008】
本開示は、ランタイム中のメッセージ・フローのプログラムによる修正のためのソリューションである。本ソリューションにおいて、メッセージ・フローは、一つ以上の作動インプットに応じてランタイム中に構造的に修正することができる。作動インプットには、以下に限らないが、評価指標、状態、コンテキスト、刺激などを含めることができる。構造的な修正には、以下に限らないが、ノード操作(例、追加、変更、削除)、接続路操作(例、挿入、修正、削除)、屈曲点操作などを含めることができる。一つの実施形態において、メッセージ・フロー内の反射ノードは、ランタイムにおいてメッセージ・フローを修正できる、構造的アプリケーション・プログラミング・インターフェース(API:application programming interface)機能の実行を可能にすることができる。この実施形態において、反射ノードは、反射ノードの機能に定期的なトリガを加えることが可能なタイムアウト・ノードにリンクすることができる。
【0009】
当業者ならよく理解できるであろうように、本発明の態様は、システム、方法、またはコンピュータ・プログラムとして具現することができる。従って、本発明の態様は、全体がハードウエアの実施形態、全体がソフトウエアの実施形態(ファームウエア、常駐ソフトウエア、マイクロコードなどを含む)、あるいは、一般に本明細書では全て「回路」、「モジュール」、または「システム」といわれる、ソフトウエアおよびハードウエア態様を組み合わせた実施形態の形を取ることができる。さらに、本発明の態様は、内部に具体化されたコンピュータ可読プログラム・コードを有する一つ以上のコンピュータ可読媒体(群)中に具現されたコンピュータ・プログラムの形を取ることもできる。
【0010】
一つ以上のコンピュータ可読媒体(群)の任意の組み合わせを用いることができる。コンピュータ可読媒体は、コンピュータ可読信号媒体、またはコンピュータ可読記憶媒体とすることができる。コンピュータ可読記憶媒体は、例えば、以下に限らないが、電子的、磁気的、光学的、電磁気的、赤外的な、または半導体の、システム、装置、もしくはデバイス、あるいはこれらの任意の適切な組み合わせとすることができる。コンピュータ可読記憶媒体のさらに具体的な例(非包括的リスト)には、一つ以上の配線を有する電気接続、携帯型コンピュータ・ディスケット、ハード・ディスク、ランダム・アクセス・メモリ(RAM:random access memory)、読み取り専用メモリ(ROM:read−only memory)、消去可能プログラム可能読み取り専用メモリ(EPROM(erasable programmable read−only memory)またはフラッシュ・メモリ)、光ファイバ、携帯型コンパクト・ディスク読み取り専用メモリ(CD−ROM:compact disc read−only memory)、光記憶デバイス、磁気記憶デバイス、またはこれらの任意の適切な組み合わせが含まれよう。本文書の文脈において、コンピュータ可読記憶媒体は、命令実行システム、装置、またはデバイスによってまたはこれらに関連させて使用するためのプログラムを、包含または格納できる任意の有形媒体とすることができる。
【0011】
コンピュータ可読信号媒体には、例えばベースバンド中にまたは搬送波の一部として具現されたコンピュータ可読のプログラム・コードを有する、伝播データ信号を含めることができる。かかる伝播信号は、以下に限らないが、電磁気的、光学的、またはこれらの任意の組み合わせを含め、さまざまな形態の任意の形を取ることができる。コンピュータ可読信号媒体は、コンピュータ可読記憶媒体ではないが、命令実行システム、装置、またはデバイスによってまたはこれらに関連させて使うためのプログラムを通信、伝播、または伝送が可能な任意のコンピュータ可読媒体であり得る。
【0012】
コンピュータ可読媒体中に具現されたプログラム・コードは、以下に限らないが、無線、有線、光ファイバ・ケーブル、RFなど、またはこれらの任意の適した組み合わせを含め、任意の適切な媒体を用いて送信することができる。本発明の態様のオペレーションを実行するためのコンピュータ・プログラム・コードは、Java(R)、Smalltalk(R)、C++などのオブジェクト指向プログラミング言語、および、“C”プログラミング言語または類似のプログラミング言語などの従来式手続き型プログラミング言語を含め、一つ以上のプログラミング言語の任意の組み合わせで記述することができる。このプログラム・コードは、全体をユーザのコンピュータで、一部をユーザのコンピュータで、スタンドアロン・ソフトウエア・パッケージとして実行することができ、一部をユーザのコンピュータで他の部分を遠隔コンピュータで、または全体を遠隔のコンピュータまたはサーバで実行することができる。後者のシナリオでは、ローカル・エリア・ネットワーク(LAN:local area network)または広域ネットワーク(WAN:widearea network)を含む任意の種類のネットワークを介して、遠隔コンピュータをユーザのコンピュータに接続することができ、あるいは(例えばインターネット・サービス・プロバイダを使いインターネットを介し)外部のコンピュータへの接続を行うことができる。
【0013】
本発明の実施形態による方法、装置(システム)およびコンピュータ・プログラムのフローチャート説明図もしくはブロック図またはその両方を参照しながら本発明の態様を以下に説明する。フローチャート説明図もしくはブロック図またはその両方の各ブロック、および、フローチャート説明図もしくはブロック図またはその両方中のブロックの組み合わせは、コンピュータ・プログラム命令によって実装可能であることが理解されよう。
【0014】
これらのコンピュータ・プログラム命令を、汎用コンピュータ、特殊用途コンピュータ、またはマシンを形成する他のプログラム可能データ処理装置のプロセッサに供給し、コンピュータ又は他のプログラム可能データ処理装置のプロセッサを介して実行されるこれらの命令が、フローチャートもしくはブロック図またはその両方のブロックまたはブロック群中に規定された機能群/処理群を実施するための手段を生成するようにすることができる。
【0015】
また、これらのコンピュータ・プログラム命令を、コンピュータ、他のプログラム可能データ処理装置、または他のデバイスに対し特定の仕方で機能するよう命令できるコンピュータ可読媒体に格納し、そのコンピュータ可読媒体に格納された命令が、フローチャートもしくはブロック図またはその両方のブロックまたはブロック群中に規定された機能/処理を実施する命令群を包含する製品を形成するようにすることができる。
【0016】
同様に、コンピュータ・プログラム命令を、コンピュータ、他のプログラム可能データ処理装置、または他のデバイスにロードして、これらコンピュータ、他のプログラム可能装置、または他のデバイス上で一連のオペレーション・ステップを実施させてコンピュータ実装のプロセスを生成し、これらコンピュータまたは他のプログラム可能装置で実行されるこれらの命令が、フローチャートもしくはブロック図またはその両方のブロックまたはブロック群中に規定された機能群/処理群を実施するためのプロセスを提供するようにすることもできる。
【0017】
図1は、本明細書で開示する本発明アレンジメントの実施形態による、ランタイム中のメッセージ・フローのプログラムによる修正の方法100を示すフローチャートである。方法100において、メッセージ・ブローカ内で実行されているメッセージ・フローは、ランタイム中に動的に修正することができる。このメッセージ・フローには、作動インプットに応じ、メッセージ・フローに構造的調整を実施することが可能な反射ノードを含めることができる。一つの実施形態において、方法100は、リアルタイムまたはほぼリアルタイムで実施することができる。
【0018】
本明細書での使用において、メッセージ・フローは、メッセージに対し一連の処置を行う能力のある2つ以上のノードを含むソフトウエア構造体とすることができる。メッセージ・フローのノードは接続路を介して接続することができる。接続路は、それを通してメッセージの伝送が可能な、メッセージ・フローのノードの間のリンケージとすることができる。ノードは、メッセージの一部を処理可能な実行可能ソフトウエア・エンティティとすることができる。ノードは、ノードの連結を可能にできるターミナルに関連付けることができる。ターミナルは、入力端、出力端などとすることができる。ノードには、以下に限らないが、事前定義ノード(例、内蔵ノード)、ユーザ定義ノード、サブフローなどを含めることができる。ノードの機能には、以下に限らないが、メッセージの処理、メッセージの変換、メッセージの経路設定、集合、フィルタリングなどを含めることができる。
【0019】
本明細書での使用において、メッセージは、あるアプリケーションから別のアプリケーションに伝えられるアプリケーション・メッセージとすることができる。このメッセージは、一つ以上の従来フォーマットもしくは独自フォーマットまたはその両方のフォーマットに適合する、自動生成されたデジタル・アーチファクトとすることができる。一例において、メッセージは、拡張マークアップ言語(XML:Extensible Markup Language)のメッセージとすることができる。
【0020】
アプリケーションは、アプリケーション・メッセージング・インフラストラクチャ内のソフトウエア・プログラムとすることができる。アプリケーション・メッセージング・インフラストラクチャは、メッセージ・パッシング・バスに亘るアプリケーションの弱連結を可能にする、ハードウエア/ソフトウエア・プラットフォームとすることができる。一例において、アプリケーション・メッセージング・インフラストラクチャには、サービス指向アーキテクチャ(SOA)を含めることができる。方法100内のメッセージ・フローは、分散コンピューティング環境、ネットワーク・コンピューティング環境、クラウド・コンピューティング環境などに設置可能であることをよく理解すべきである。
【0021】
ステップ105において、メッセージ・ブローカ内のメッセージ・フローを選択することができる。選択は、以下に限らないが、パフォーマンス評価指標、メッセージ・フローの複雑性、オーナーなどを含む一つ以上の基準に基づいて行うことができる。ステップ110で、選択されたメッセージ・フローを実行することができる。実行は、動的コンピューティング環境内においてリアルタイムで行うことができる。ステップ115において、メッセージ内の反射ノードを選択することができる。反射ノードは、実行順序、定期的ノード選択などに基づいて選択することができる。反射ノードは、事前定義ノード、ユーザ定義、サブフローなどにすることができる。
【0022】
ステップ120で、選択された反射ノードを実行することができ、実行には、外部リソースに関連するプログラム処置を遂行するステップを含めることができる。実行可能リソースは、以下に限らないが、実行コード、アプリケーション・プログラミング・インタフェース(API)などを含めた、実行可能エンティティとすることが可能な外部リソースとすることができる。実行コードには、以下に限らないが、JAVA、C、実用データ取得レポート作成言語(PERL:Practical Extraction and Reporting Language)などを含めることができる。
【0023】
ステップ125において、反射ノードは、メッセージ・フローの構造、実行、もしくはパフォーマンスまたはこれらの組み合わせを評価することができる。構造の評価には、以下に限らないが、構造の改善もしくは最適化またはその両方を判定するための従来式もしくは独自式またはその両方式の分析を含めることができる。メッセージ・フローの評価には、以下に限らないが、実行接続の検査、ノードの作動状況などを含めることができる。メッセージ・フローのパフォーマンスの評価には、以下に限らないが、評価指標の収集、実行評価指標の分析などを含めることができる。
【0024】
ステップ130において、メッセージ・フローの評価が、フローが最適化されていないことを示した場合、方法はステップ135に進み、示さない場合はステップ105に戻る。ステップ135で、パフォーマンスを改善するため、ランタイム中にメッセージ・フローを構造的に修正することができる。一つの実施形態において、メッセージ・フローを自動的に修正し再展開することができる。ステップ140で、随意的に構造的な修正を記録することができる。メッセージ・フローの修正は、元のメッセージ・フロー構造、差分などとして記録することができる。修正について、監査し変更歴を追跡することなどが可能なようにできる。
【0025】
ステップ145において、構造的な修正から最適化フローを生成することができる。動作可能性を確実にするため、この最適化フローに、一貫性テスト、構文テストなどを課すことができる。一例において、最適化フローの生成に応じて、自動的にテストを実施することができる。別の例では、テストは、メッセージ・フロー・ソフトウエア・ツールを使って手動で実施することができる。
【0026】
ステップ147において、ランタイム中に、識別されたメッセージ・フローを最適化フローに置き換えることができる。一例において、選択されたメッセージ・フロー構造を、リアルタイムで動的に修正し使用することができる。この例において、メッセージ・フローは、自動的に変更し再展開することができる。この例の一つの構成において、メッセージ・フローのランタイム状態を維持しながらメッセージ処理状態を存続させることができる。ステップ150において、さらなる処理対象のメッセージ・フローがある場合、方法はステップ105に戻り、ない場合はステップ155に進む。ステップ155でこの方法を終了することができる。
【0027】
本明細書に提示する図面は、例示目的のためだけのものであって、いかなる点においても、本発明を限定すると解釈すべきではない。複数のメッセージ・フローに対して同時に方法100を実施することができる。すなわち、メッセージ・フローの最適化は、並行して実施することができ、改善の迅速な達成を可能にする。一つの実施形態において、方法100は反復的に実行することができ、メッセージ・フローが、環境要件もしくは変化またはその両方に応じて継続的に最適化されることを可能にする。
【0028】
図2は、本明細書で開示する本発明アレンジメントの実施形態による、ランタイム中のメッセージ・フローのプログラムによる修正の一組のシナリオ210、260を示す概略図である。シナリオ210、260は、方法100との関連において設定することができる。シナリオ210において、メッセージ・キューもしくはメッセージ・ブローカ(例えば、フロー・エンジン250)またはその両方の中のメッセージ・フロー209をプログラムによって修正することができる。メッセージ・フロー209の構造は、一つ以上のイベントに応じ、ランタイム中に変更することができる。イベントには、自動トリガ、および手動によるトリガ処置を含めることができる。シナリオ210において、フロー209の構造の修正には、ノード230、231および接続路224、225の付加を含めることができる。
【0029】
シナリオ210において、メッセージ・フロー209は、有向グラフ209として視覚的に表現できることを理解すべきである。メッセージ・フロー209は、メッセージ・フロー・エディタのインタフェース(例、インタフェース344)内に視覚的に提示することができる。このシナリオにおいて、ノード211〜216、230、231は、図形アイコンとして表現することができる。メッセージ・フロー接続路(例、経路)は有向線220〜226で表すことができる。破線224〜226は、ノード216の実行から得られた、動的に挿入された接続路を表すことができる。点線222は、ノード216の実行から生じた、ノード212〜214間の削除された接続路を表すことができる。
【0030】
シナリオ210において、メッセージ・フロー209には、接続路220〜223を介してリンクされたノード211〜216を含めることができる。フロー209内にノード215、216を設定することができ、これらを接続路223によって結合することができる。ノード215、216は、ノード216に関連付けられた実行コードを介して、フロー209の定期的評価をトリガすることができる。フロー209は、必要なとき(例、パフォーマンス問題時)ランタイム中に構造的に修正することができる。このシナリオにおいて、フロー209は、ノード230〜231および接続路224〜226の付加を介して修正することができる。接続路222を除去して、ノード230および接続路224、225を介してノード212から214をリンクする新規のメッセージ・フロー接続路を生成することができる。すなわち、新規経路(例、接続路224および225)を生成することができる。
【0031】
接続路226を介して、ノード230、231をリンクすることができ、これによりノード230は複数の接続に対応することができる。ノード230の選択は、ターミナル構成(例、入力端もしくは出力端またはその両方)に基づいて行うことができる。ノード選択の基準には、以下に限らないが、インプット/アウトプット量、処理能力などを含めることができる。一つの実施形態において、ノード連結は、自動的に検証され、メッセージ・フローの動作可能性を確実にすることができる。一例において、別途の連結を実施し、フロー209に対するロバストな改善を可能にすることができる。この例において、ノードの別のアウトプットを識別することができ、このノードから別の適切なノードへのリンクを確立することができる。
【0032】
一例において、ノード215は、定期的にノード216の実行を駆動する、タイムアウト・ノードとすることができる。この例において、ノード215のタイムアウト値は、自動で、もしくは手動で、またはその両方によって設定された値とすることができる。
【0033】
一例において、ノード216は、アプリケーション・プログラミング・インタフェース(API)に関連付けられた動的フロー更新ノードとすることができる。この例において、ノード216は、JAVA(R)のAPI機能を実行でき、メッセージ・フロー209の構造的な修正を可能にする。
【0034】
一つの実施形態において、ノード挿入には、フロー209内へのJAVA(R)COMPUTEノードの付加を含めることができる。
【0035】
シナリオ260において、フロー・エンジン250は、メッセージ・フロー240の反復的改善の実現を可能にすることができる。フロー・エンジン250は、メッセージング・アーキテクチャに関連付けられたメッセージ・ブローカのコンポーネントとすることができる。メッセージ・フロー240は、リアルタイムの評価指標244を用いて継続的に改善することができる。シナリオ260において、収集された評価指標244は、メッセージ・フロー240の最適化を駆動するためのインプット・パラメータとして用いることができる。評価指標244には、以下に限らないが、スループット、個別ノードのパフォーマンス、経路パフォーマンス、諸評価指標、フロー・レスポンス時間などを含めることができる。評価指標244は、エンジン250、記録リソース、外部プログラムなどから収集することができる。
【0036】
フロー・エンジン250は、インプットとしてメッセージ・フロー240を受信することができる。エンジン250は、評価指標を用いて適切な構造変更を決めることができる。例えば、メッセージ・フロー経路が閾値を下回る実施状況のとき、エンジン250は、プログラムによって再構築を実行することができる。メッセージ・フロー240の変更を、エンジン250からのアウトプットとして保持し、これを最適化フロー242とすることができる。最適化フロー242は、メッセージ・フロー240とは構造的に異なるメッセージ・フローとすることができる。フロー242は、評価指標244に応じてリアルタイムで生成することができる。一例において、フロー242は、展開の前にテストし、パフォーマンスの変化特性を判定することができる。この例において、フロー242のパフォーマンスがメッセージ・フロー240を上回れば、メッセージ・フロー242を展開することができる。
【0037】
本明細書に提示する図面は、例示目的のためだけのものであって、いかなる点においても、本発明を限定すると解釈すべきではない。一例において、シナリオ210は、異なるメッセージ・フローの修正を可能にすることができる。この例において、メッセージ・フロー209は、反射ノードを異なるメッセージ・フロー中に挿入し、その異なるメッセージ・フローが自己修正を遂行するのを可能にすることができる。
【0038】
図3は、本明細書で開示する本発明アレンジメントの実施形態による、ランタイム中のメッセージ・フローのプログラムによる修正のためのシステム300を示す概略図である。システム300は、方法100およびシナリオ210、260との関連において設定することができる。システム300において、フロー・エンジン320は、反射ノード336の実行を可能にし、メッセージ・フロー332がランタイム中に構造的に修正されるようにすることができる。エンジン320は、サーバ310のコンポーネントとすることができ、該サーバはネットワーク380を介して通信可能にアプリケーション・サーバ350に連結することができる。アプリケーション352は、メッセージ362を処理のためメッセージ・キュー330に伝送することができる。メッセージ・フロー332は、メッセージ362を処理(例、プロトコルの変換)してメッセージ360を生成することができる。
【0039】
ブローカ・サーバ310は、メッセージ362、360の送受信が可能なハードウエア/ソフトウエア・コンポーネントとすることができる。サーバ310には、以下に限らないが、フロー・エンジン320、メッセージ・キュー330、メッセージ・フロー332、ノード・ライブラリ370、データ・ストア340、インタフェース344などを含めることができる。サーバ310の機能には、以下に限らないが、メッセージ変換、メッセージ妥当性確認、メッセージ転換、メッセージ経路設定などを含めることができる。一例において、サーバ310は、IBM(IBM社の登録商標)WEBSPHERE MESSAGE BROKERのコンポーネントとすることができる。すなわち、サーバ310は、エンタープライズ・サービス・バスのコンポーネントとすることができる。
【0040】
フロー・エンジン320は、ランタイム中にメッセージ・フロー332を変更するためのハードウエア/ソフトウエア・コンポーネントとすることができる。フロー・エンジン320には、以下に限らないが、分析エンジン322、フロー・マニピュレータ324、監査マネージャ326、構成設定328などを含めることができる。フロー・エンジン320の機能には、以下に限らないが、フロー操作、フロー分析、フロー妥当性確認、エラー処理、フロー/メッセージのセキュリティなどを含めることができる。一例において、フロー・エンジン320は、分散コンピューティング環境内のネットワーク・エレメントとすることができる。
【0041】
分析エンジン322は、メッセージ・フロー332のパフォーマンスの査定が可能なハードウエア/ソフトウエア・エンティティとすることができる。エンジン322の機能には、以下に限らないが、評価指標収集、フロー332の分析などを含めることができる。エンジン322は、フロー332もしくは最適化フローまたはその両方に対するフロー分析を行うことができる。一例において、エンジン322は、ネットワーク・コンピューティング環境に関連付けられた外部コンポーネントとすることができる。
【0042】
フロー・マニピュレータ324は、ランタイム中に、一つ以上の条件に対応してフロー332を調整することが可能なハードウエア/ソフトウエア・コンポーネントとすることができる。マニピュレータの機能には、以下に限らないが、ノード操作、接続路調整などを含めることができる。ノード操作には、以下に限らないが、ノードの挿入、変更、および削除を含めることができる。接続路調整には、以下に限らないが、接続路の追加、調整および除去を含めることができる。一例において、マニピュレータ324は、ノードの挿入が必要なとき、ノード・ライブラリ370からノード372を選択することができる。この例において、事前設定されたノード372をメッセージ・フロー332中に挿入することができる。
【0043】
監査マネージャ326は、メッセージ・フロー332の変更の追跡が可能なハードウエア/ソフトウエア・エンティティとすることができる。マネージャ326の機能には、以下に限らないが、記録、監査報告作成、変更履歴などを含めることができる。マネージャ326の追跡には、ノード・レベル追跡、フロー改訂追跡などを含めることができる。一例において、マネージャ326は、メッセージ・フロー332の変更の取り消しをさせることができる。
【0044】
構成設定328は、エンジン320の動作を制御するための設定の収集とすることができる。構成設定328には、以下に限らないが、ノード識別値、メッセージ・フロー識別、実行コード識別子、パラメータ、評価指標設定、セキュリティ設定、ビジネス・ルールなどを含めることができる。一つの実施形態において、構成設定328は、反射ノード336を実行コードにリンク可能にすることができる。例えば、設定329は、反射ノード(例、Ref_A)を、実行コード(例、Exe_A)とパラメータのセット(例、Param_A)とに関連付け可能にすることができる。
【0045】
メッセージ・キュー330は、メッセージ362もしくはメッセージ360またはその両方を一時的に保持することが可能なプログラム・キューとすることができる。キュー330は、メッセージ362を受信し、メッセージ・フロー332による処理のため格納しておくことができる。キュー330は、メッセージ・ブローカに関連付けられたキュー330とすることができる。キュー330には、以下に限らないが、スタック、キュー、ヒープなどを含めることができる。キュー330の処理順序には、以下に限らないが、後入れ先出し(LIFO:Last In First Out)、先入れ先出し(FIFO:First In First Out)などを含めることができる。
【0046】
メッセージ・フロー332は、メッセージ360、362を処理可能なソフトウエア構造体とすることができる。メッセージ・フロー332には、以下に限らないが、ノード334、反射ノード336などを含めることができる。メッセージ・フロー332のロジックには、以下に限らないが、拡張構造化クエリー言語(ESQL:Extended Structured Query Language)、JAVA、変換用拡張スタイル・シート言語(XSLT:Extensible Style sheet Language for Transformations)などを含めることができる。
【0047】
ノード・ライブラリ370は、ノード372を格納するためのソフトウエア・アーチファクトとすることができ、ランタイム中にメッセージ・フロー332を動的に修正するためこのノードを用いることができる。ノード372には、以下に限らないが、事前定義ノード(例、フィルタ・ノード)ユーザ定義ノードなどを含めることができる。ライブラリ370は、自動で、もしくは手動で、またはその両方で投入することができる。一例において、ライブラリは、データ・ストア340もしくは外部のリポジトリまたはその両方に格納することができる。
【0048】
データ・ストア340は、実行コード342を保持する能力のあるハードウエア/ソフトウエア・エンティティとすることができる。データ・ストア340には、以下に限らないが、ストレージ・エリア・ネットワーク(SAN:Storage Area Network)、ネットワーク接続ストレージ(NAS:Network Attached Strage)などを含めることができる。データ・ストア340には、以下に限らないが、リレーショナル・データベース管理システム(RDMS:Relational Database Management System)、オブジェクト指向データベース管理システム(OODBMS:Object Oriented Database Management System)などを含めることができる。
【0049】
実行コード342は、メッセージ・フロー332を動的に修正することが可能なプログラム・リソースとすることができる。コード342は、プログラム命令、バイナリ・コードなどとして格納することができる。コード342は、諸許可、アクセス制御リスト(ACL:access control list)、諸設定などに関連付けることができる。一例において、コード342は、データ・ストア340内に格納することができる。この例において、コード342は、データベース構造(例、テーブル)内に格納することが可能である。
【0050】
インタフェース344は、システム300内のリソースを設定するためのユーザ・インタフェースとすることができる。インタフェース344は、構成設定328、メッセージ360、362、メッセージ・フロー332、反射ノード336の提示もしくは修正またはその両方を可能にすることができる。一例において、インタフェース344は、IBM(IBM社の登録商標)WEBSPHERE BROKERメッセージ・フロー・エディタに関連付けることができる。この例において、インタフェース344は、IBM(IBM社の登録商標)WEBSPHERE MESSAGE BROKERS EXPLORERソフトウエアとすることができる。インタフェースは、グラフィカル・ユーザ・インタフェース、音声ユーザ・インタフェース、テキスト・ベース・ユーザ・インタフェース、混合モード・インタフェースなどにすることができる。
【0051】
アプリケーション・サーバ350は、アプリケーション352を実行するためのハードウエア/ソフトウエア・プラットフォームとすることができる。サーバ350には、以下に限らないが、アプリケーション352、メッセージ・キュー(図示せず)、構成設定などを含めることができる。サーバ350は、従来方式もしくは独自方式またはその両方の実行環境とすることができる。一例において、サーバ350は、IBM(IBM社の登録商標)WEBSPHERE APPLICATION SERVERにすることができる。
【0052】
ネットワーク380は、リアルタイムまたはほぼリアルタイムで、システム300のコンポーネント群を通信可能にリンクするためのハードウエア/ソフトウエア・エンティティとすることができる。ネットワーク380には、以下に限らないが、有線技術、無線技術などを含めることができる。ネットワーク300は、以下に限らないが、ローカル・エリア・ネットワーク(LAN:Local Area Network)、広域ネットワーク(WAN:Wide Area Network)、都市規模ネットワーク(MAN:Metropolitan Area Network)などとすることができる。
【0053】
本明細書に提示する図面は、例示目的のためだけのものであって、いかなる点においても、本発明を限定すると解釈すべきではない。サーバ310は、分散コンピューティング環境、ネットワーク・コンピューティング環境、クラウド・コンピューティング環境などのコンポーネントとすることができる。システム300のアーキテクチャには、出版/購読モデル、分散方式出版/購読モデルを含めることができる。一例において、サーバ310の機能をウェブで使用可能なサービスの一部にすることができる。システム300は、以下に限らないが、シンプル・オブジェクト・アクセス・プロトコル(SOAP:Simple Object Access Protocol)、伝送制御プロトコル(TCP:Transport Control Protocol)、インターネット・プロトコル(IP:Internet Protocol)、ハイパーテキスト転送プロトコル、拡張マークアップ言語遠隔手続き呼び出し(XML−RPC:Extensible Markup Language Remote Procedure Call)などを含む一つ以上のプロトコルへの関連付けが可能なことをよく理解すべきである。
【0054】
図1〜3中のフローチャートおよびブロック図は、本発明のさまざまな実施形態による、システム、方法、およびコンピュータ・プログラムの可能な実装のアーキテクチャ、機能、およびオペレーションを例示している。この点について、フローチャートまたはブロック図中の各ブロックは、特定の論理機能(群)を実装するための一つ以上の実行可能命令を含む、モジュール、セグメント、またはコードの部分を表し得る。また、一部の別の実装においては、ブロック中に記載された機能が、図に記載された順序を外れて行われることがあり得ることにも留意すべきである。例えば、連続して示された2つのブロックが、実際にはほぼ同時に実行されることがあり、関与する機能によっては、時にこれらブロックが逆の順序で実行されることもあり得る。また、ブロック図もしくはフローチャート説明図またはその両方の各ブロック、およびブロック図もしくはフローチャート説明図またはその両方中のブロックの組み合わせは、特定の機能または処置を実施する特殊用途のハードウエア・ベースのシステム、または特殊用途のハードウエアとコンピュータ命令との組み合わせによって実装可能なことにも留意すべきである。
【符号の説明】
【0055】
300 システム
310 ブローカ・サーバ
320 フロー・エンジン
322 分析エンジン
324 フロー・マニピュレータ
326 監査マネージャ
328 構成設定
329 設定
330 メッセージ・キュー
332 メッセージ・フロー
334 ノード
336 反射ノード
340 データ・ストア
342 実行コード
344 インタフェース
350 アプリケーション・サーバ
352 アプリケーション
360 メッセージ
362 メッセージ
370 ノード・ライブラリ
372 ノード
380 ネットワーク

【特許請求の範囲】
【請求項1】
メッセージ・フローのプログラムによる修正の方法であって、
メッセージ・ブローカ内のメッセージ・フローを識別するステップであって、前記メッセージ・フローは複数のノードおよび接続路を含み、前記複数のノードはノードおよび反射ノードを含み、前記ノードは事前定義ノードおよびユーザ定義ノードの少なくとも一つであり、前記メッセージ・ブローカは、メッセージを第一正式メッセージング・プロトコルから第二正式メッセージング・プロトコルに変換ができる媒介コンピュータ・プログラム・コードであり、前記媒介コンピュータ・プログラム・コードはコンピュータ可読媒体に格納される、前記識別するステップと、
前記メッセージ・フロー内の前記反射ノードを選択するステップであって、前記反射ノードは外部リソースに関連付けられ、前記外部リソースは実行コードである、前記選択するステップと、
前記外部リソースを実行するステップであって、前記実行が前記メッセージ・フローの構造の前記修正をもたらし、前記修正はノードの追加、変更、および削除であり、前記修正はランタイム中に行われる、前記実行するステップと、
を含む前記方法。
【請求項2】
前記メッセージ・フローに関連付けられた評価指標を分析するステップであって、前記評価指標は、前記実行するステップに関連付けられたパラメータである、前記分析するステップ、
をさらに含む、請求項1に記載の方法。
【請求項3】
前記修正を最適化メッセージ・フローとしてデータ・ストアに格納するステップであって、前記最適化メッセージ・フローは前記メッセージ・フローとは異なる、前記格納するステップと、
ランタイム中に、前記メッセージ・ブローカ内の前記メッセージ・フローを前記最適化メッセージ・フローに置き換えるステップであって、前記最適化メッセージ・フローが展開され、前記メッセージ・フローは展開を止める、前記置き換えるステップと、
前記最適化メッセージ・フローを実行するステップと、
をさらに含む、請求項1に記載の方法。
【請求項4】
前記最適化メッセージ・フローがユーザ・インタフェース内に提示される、請求項3に記載の方法。
【請求項5】
前記外部リソースはJAVA実行コードである、請求項1に記載の方法。
【請求項6】
前記外部リソースはIBM(IBM社の登録商標)WEBSPHERE SERVICE REGISTRY AND REPOSITORY(WSRR)ソフトウエアに関連付けられる、請求項1に記載の方法。
【請求項7】
前記追加は、前記メッセージ・フロー内へのトレース・ノードの挿入である、請求項1に記載の方法。
【請求項8】
前記反射ノードはタイムアウト・ノードに関連付けられ、前記タイムアウト・ノードは前記反射ノードの機能の前記実行をトリガする、請求項1に記載の方法。
【請求項9】
前記メッセージ・ブローカはIBM(IBM社の登録商標)WEBSPHERE MESSAGE BROKERである、請求項1に記載の方法。
【請求項10】
メッセージ・フローのプログラムによる修正のためのシステムであって、
ノード、接続路、および反射ノードの少なくとも一つを含むメッセージ・フローを実行できるフロー・エンジンであって、前記フロー・エンジンはメッセージ・ブローカに関連付けられ、前記反射ノードは外部リソースに関連付けられ、前記外部リソースは、前記メッセージ・フローを構造的に修正できる実行コードである、前記フロー・エンジンと、
メッセージを保持するよう構成されたメッセージ・キューであって、前記メッセージはアプリケーションに関連付けられ、前記アプリケーションはコンピュータ可読媒体内に格納されたコンピュータ・プログラム・コードであり、前記アプリケーションはアプリケーション・サーバと関連付けられる、前記メッセージ・キューと、
前記反射ノードを前記外部リソースおよびパラメータの少なくとも一つとリンクすることができる構成設定であって、前記パラメータは実行設定値である、前記構成設定と、
を含む前記システム。
【請求項11】
前記メッセージ・フローの分析を遂行するよう構成された分析エンジンであって、前記分析は評価指標の収集であり、前記分析エンジンは前記評価指標を前記フロー・エンジンに伝送する、前記分析エンジンと、
ランタイム中に前記外部リソースを実行できるフロー・マニピュレータであって、前記外部リソースは、ノード変更および接続路調整の少なくとも一つを遂行することができ、前記ノード変更は、ノード挿入、ノード修正、およびノード削除の少なくとも一つであり、前記接続路調整は、接続路挿入、接続路修正、および接続路削除の少なくとも一つである、前記フロー・マニピュレータと、
メッセージ・フローの変更およびエラーの少なくとも一つを保持できる監査マネージャであって、前記メッセージ・フローの変更は、差分および改訂の少なくとも一つとして保持される、前記監査マネージャと、
をさらに含む、請求項10に記載のシステム。
【請求項12】
リアルタイムで前記評価指標が収集される、請求項11に記載のシステム。
【請求項13】
前記外部リソースはノード・ライブラリに関連付けられ、前記ノード・ライブラリは事前定義ノードおよびユーザ定義ノードの少なくとも一つを含む、請求項10に記載のシステム。
【請求項14】
前記反射ノードはタイムアウト・ノードに接続され、前記タイムアウト・ノードは前記反射ノードを定期的に実行するよう構成される、請求項10に記載のシステム。
【請求項15】
前記反射ノードは、IBM(IBM社の登録商標)WEBSPHERE MESSAGE BROKERに関連付けられた、動的フロー更新ノードである、請求項10に記載のシステム。
【請求項16】
前記外部リソースは、メッセージ・フローの構造的な修正を遂行するよう構成された、アプリケーション・プログラミング・インタフェース(API)である、請求項10に記載のシステム。
【請求項17】
コンピュータ・プログラムであって、前記プログラムがコンピュータに、
メッセージ・ブローカ内のメッセージ・フローを識別するよう動作可能であり、前記メッセージ・フローは複数のノードおよび接続路を含み、前記複数のノードはノードおよび反射ノードを含み、前記ノードは事前定義ノードおよびユーザ定義ノードの少なくとも一つであり、前記メッセージ・ブローカは、メッセージを第一正式メッセージング・プロトコルから第二正式メッセージング・プロトコルに変換する機能と、
前記メッセージ・フロー内の前記反射ノードを選択するよう動作可能であり、前記反射ノードを外部リソースに関連付ける機能と、
前記外部リソースを実行するよう作動し、前記実行が前記メッセージ・フローの構造の修正をもたらし、前記修正はノードの追加、変更、および削除であり、前記修正をランタイム中に行う機能と、
を実行させる、コンピュータ・プログラム。
【請求項18】
前記コンピュータ・プログラムはIBM(IBM社の登録商標)WEBSPHERE MESSAGE BROKERのコンポーネントである、請求項17に記載のコンピュータ・プログラム。
【請求項19】
前記反射ノードは、IBM(IBM社の登録商標)WEBSPHERE MESSAGE BROKER EXPLORERに関連付けられた、動的フロー更新ノードである、請求項17に記載のコンピュータ・プログラム。
【請求項20】
前記反射ノードはタイムアウト・ノードに接続され、前記タイムアウト・ノードは事前定義ノードである、請求項19に記載のコンピュータ・プログラム。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate


【公開番号】特開2012−128843(P2012−128843A)
【公開日】平成24年7月5日(2012.7.5)
【国際特許分類】
【出願番号】特願2011−254912(P2011−254912)
【出願日】平成23年11月22日(2011.11.22)
【出願人】(390009531)インターナショナル・ビジネス・マシーンズ・コーポレーション (4,084)
【氏名又は名称原語表記】INTERNATIONAL BUSINESS MASCHINES CORPORATION