(57)【要約】【課題】本開示は、学習メカニズムにマッシュアップインフラストラクチャを提供するためのシステム、ソフトウェア、およびコンピュータで実施される方法を含む。【解決手段】1つのプロセスは、アプリケーションの第1のポートを異なるポートに接続し、第1のポートに関連付けられたタグ付きパラメータを識別する要求を受け取る動作を含む。タグ付きパラメータに少なくとも一部は基づいて、第1のポートと接続するための潜在的なポートのセットが、動的に決定される。潜在的なポートのセットから選択された潜在的ポートの少なくともサブセットを含む、第1のポートと接続するための潜在的なポートの提案が、提示されている。【選択図】図1
2011204228.tif 000002
【特許請求の範囲】
【請求項１】
アプリケーションインターフェイスを接続する提案を1つまたは複数のプロセッサに生成させるためにコンピュータで実施される方法であって、前記1つまたは複数のプロセッサによって実行される以下のステップを含み、前記方法は、
第1のポートを異なるポートに接続する要求を受け取るステップと、
前記第1のポートに関連付けられたタグ付きパラメータを識別するステップと、
前記タグ付きパラメータに少なくとも一部は基づいて、前記第1のポートと接続する潜在的なポートのセットを動的に決定するステップと、
前記第1のポートと接続する潜在的なポートの提案を提示するステップとを含み、前記提案は、前記潜在的なポートのセットから選択された潜在的なポートの少なくともサブセットを含む方法。
【請求項２】
前記潜在的なポートのサブセットは、前記第1のポートに、または前記潜在的なポートのサブセット内の潜在的なポートに関連付けられた関係する接続の履歴に少なくとも一部は基づいて選択される請求項1に記載の方法。
【請求項３】
前記潜在的なポートのサブセットは、前記第1のポートと前記潜在的なポートのセット内の各ポートとの間の、少なくとも互換性の程度を含む基準に少なくとも一部は基づいて選択される請求項1に記載の方法。
【請求項４】
前記互換性の程度は、前記第1のポートおよび前記潜在的なポートによって処理される前記データのデータ型、または前記第1のポートおよび前記潜在的なポートによって処理される前記データのフォーマットの一方に少なくとも基づく請求項3に記載の方法。
【請求項５】
前記第1のポートは、特定のフォーマットのデータを処理するように構成される請求項1に記載の方法。
【請求項６】
前記第1のポートは、前記特定のフォーマットと異なるフォーマットのデータを前記特定のフォーマットに変換するように構成された変換器エレメントを備える請求項5に記載の方法。
【請求項７】
前記第1のポートは、前記特定のフォーマットのデータを異なるフォーマットのデータに変換するように構成された変換器エレメントを備える請求項5に記載の方法。
【請求項８】
前記潜在的なポートの提案は、潜在的なポートに関連して使用される変換器エレメントの提案を含む請求項1に記載の方法。
【請求項９】
前記第1のポートと前記潜在的なポートのサブセット内の前記ポートうちの1つとの間の接続を自動的に形成するステップをさらに含む請求項1に記載の方法。
【請求項１０】
1つまたは複数のプロセッサに以下の動作を実行させるコンピュータ可読命令を含むコンピュータプログラムであって、前記動作は、
第1のポートを異なるポートに接続する要求を受け取るステップと、
前記第1のポートに関連付けられた接続の履歴を識別するステップと、
少なくとも一部は接続の前記履歴に基づいて前記第1のポートと接続する潜在的なポートのセットを動的に決定するステップと、
前記潜在的なポートのセットから選択された潜在的ポートの少なくともサブセットを含み、前記提案は、前記第1のポートと接続する潜在的なポートの提案を提示するコンピュータプログラム。
【請求項１１】
前記潜在的なポートのサブセットは、前記第1のポートに、または前記潜在的なポートのサブセット内の潜在的なポートに関連付けられたタグ付きパラメータに少なくとも一部は基づいて選択される請求項10に記載のコンピュータプログラム。
【請求項１２】
前記潜在的なポートのサブセットは、前記第1のポートと前記潜在的なポートのセット内の各ポートとの間の、少なくとも互換性の程度を含む基準に少なくとも一部は基づいて選択される請求項10に記載のコンピュータプログラム。
【請求項１３】
前記互換性の程度は、前記第1のポートおよび前記潜在的なポートによって処理される前記データのデータ型、または前記第1のポートおよび前記潜在的なポートによって処理される前記データのフォーマットの一方に少なくとも基づく請求項12に記載のコンピュータプログラム。
【請求項１４】
前記第1のポートは、特定のフォーマットのデータを処理するように構成される請求項10に記載のコンピュータプログラム。
【請求項１５】
前記第1のポートは、前記特定のフォーマットと異なるフォーマットのデータを前記特定のフォーマットに変換するように構成された変換器エレメントを備える請求項14に記載のコンピュータプログラム。
【請求項１６】
前記第1のポートは、前記特定のフォーマットのデータを異なるフォーマットのデータに変換するように構成された変換器エレメントを備える請求項14に記載のコンピュータプログラム。
【請求項１７】
前記潜在的なポートの提案は、潜在的なポートに関連して使用される変換器エレメントの提案を含む請求項10に記載のコンピュータプログラム。
【請求項１８】
前記第1のポートと前記潜在的なポートのサブセット内のポートの1つとの間の接続を自動的に形成するステップをさらに含む請求項10に記載のコンピュータプログラム。
【請求項１９】
マッシュアップインターフェイスおよび学習メカニズムに関連付けられた情報を格納するように動作するメモリと、
1つまたは複数のプロセッサとを含むシステムであって、
前記プロセッサは、
第1のポートを異なるポートに接続する要求を受け取り、
前記第1のポートに関連付けられたタグ付きパラメータを識別し、
前記タグ付きパラメータに少なくとも一部は基づいて、前記第1のポートと接続する潜在的なポートのセットを動的に決定するとともに、
前記第1のポートと接続する潜在的なポートの提案を提示するように動作し、前記提案は、前記潜在的なポートのセットから選択された潜在的ポートの少なくともサブセットを含むシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本開示は、マッシュアップインフラストラクチャにおける効率的な学習メカニズムのためのソフトウェア、コンピュータシステム、およびコンピュータで実施される方法に関する。
【背景技術】
【０００２】
アプリケーションによってはマッシュアップ機能を備えるものもあり、これによりユーザーはさまざまなアプリケーションの複数のコンポーネントを1つのページまたはワークスペース上に組み合わせることができる。例えば、ユーザーは、1つのアプリケーションの特定のコンポーネントを選択して、第2のアプリケーション内にそのコンポーネントを挿入することができる。これらの組み合わされたコンポーネントは、1つのページまたはワークスペース上に、「混ぜ合わせる(マッシュアップする)」、つまり、1つのカスタマイズされた配置構成にまとめることができるため、マッシュアップコンポーネントと称されることがある。ページは、典型的には、「マッシュ可能な(mashable)」アプリケーションもしくはコンポーネントの視覚的な順序を定義するために使用されるレイアウトを有する。さらに、マッシュ可能なアプリケーション間のデータフローを、これらのアプリケーションの入力ポートまたは出力ポート同士を接続することによって定義することができる。このようにして、マッシュアップアプリケーションのユーザーは、ユーザーが必要とする、または望んでいるコンポーネントのみを使って1つのページまたはワークスペースをカスタマイズすることができる。
【０００３】
マッシュアップコンポーネントとは、他のアプリケーションまたはプロセスと組み合わせて新しいサービスを作成したり、または機能を付加することで既存のアプリケーションの特徴を強化することができるアプリケーションのことである。典型的なマッシュアップ環境では、マッシュアップコンポーネントの異なる作用型エレメントをリンクすることができるが、これには、マッシュアップコンポーネント間のデータまたはイベントの適切な交換を行う前にエレメント間のコンテキスト接続(contextual connection)を定義しておく必要がある。しかし、マッシュアップコンポーネントは、異なるソースに由来するか、または異なる技術を使用して実装されている場合がある。いくつかの場合において、異なる技術から開発されたマッシュアップコンポーネントは、データの入力または出力に異なるインターフェイスを必要とする。したがって、異なるインターフェイス技術を用いてマッシュアップコンポーネントのエレメント間の接続を定義するには、それらの技術間に架けるブリッジの開発が必要になる場合がある。それぞれのマッシュアップコンポーネントに関連付けられる異なる技術は、特定のドメイン言語によるインターフェイスを必要とする場合があり、これが、マッシュアップ環境に付加価値を与えるマッシュアップコンポーネント間のコンテキスト接続を定義することを困難にしている。さらに、マッシュアップコンポーネントのユーザーは、異なるインターフェイスのマッシュアップコンポーネント間の接続を定義するか、または管理するための技術的な知識を有していないことがある。
【発明の概要】
【課題を解決するための手段】
【０００４】
本開示は、学習メカニズムを用いてマッシュアップインフラストラクチャを実装するための技術を提供する。コンピュータプログラム製品は、有形の記憶媒体上に符号化され、コンピュータプログラム製品は、1つまたは複数のプロセッサに動作を実行させるためのコンピュータ可読命令を備える。これらの動作は、アプリケーションの第1のポートを異なるポートに接続し、第1のポートに関連付けられたタグ付きパラメータを識別する要求を受け取ることを含むことができる。少なくとも一部はタグ付きパラメータに基づいて第1のポートと接続するための潜在的なポートのセットが、動的に決定される。潜在的なポートのセットから選択された潜在的ポートの少なくともサブセットを含む、第1のポートと接続するための潜在的なポートの提案が、提示される。第1のポートと接続するための潜在的なポートのセットは、第1のポートに関連付けられた接続の履歴に基づくこともできる。
【０００５】
各データを処理し、変換する有形の媒体上に具現化されたコンピュータ実装ソフトウェアとして一般的に説明されているが、これらの態様のうちのいくつかまたはすべては、コンピュータ実装方法であるか、またはこの説明されている機能を実行するために各システムもしくは他のデバイス内に備えることができる。本開示のこれらの、および他の態様および実施形態の詳細は、添付の図面および以下の説明で述べられる。本開示の他の特徴、目的、および利点は、説明および図面、さらに特許請求の範囲から明らかになるであろう。
【図面の簡単な説明】
【０００６】
【図１】本開示の文脈の範囲内で学習メカニズムによりマッシュアップインフラストラクチャのさまざまな特徴を実装する例示的な環境を示す図である。
【図２】図1において説明されているシステムなどの、適切なシステムを使用してマッシュアップアプリケーションポイント間の潜在的な接続を識別するためのデータを収集する例示的なプロセスを示すフローチャートである。
【図３】図1において説明されているシステムなどの、適切なシステムを使用して潜在的なターゲットポートを、または特定のポートについて確立されうる接続を識別する識別する例示的なプロセスを示すフローチャートである。
【図４】図1において説明されているシステムなどの、適切なシステム内の2つのポート間の接続の例示的なマッシュアップモデルを示す図である。
【図５】図1において説明されているシステムなどの、適切なシステム内の変換器エレメントを備えるポートのインスタンスのマッシュアップモデルを示す図である。
【図６】図1において説明されているシステムなどの、適切なシステム内で使用されるマッシュアップフレームワークの例示的な実装の図である。
【発明を実施するための形態】
【０００７】
本開示は概して、マッシュアップインフラストラクチャ間の接続を定義する自動学習メカニズムを提供するための、コンピュータシステム、ソフトウェア、及びコンピュータで実施される方法を説明する。一般に、マッシュアップ環境は、他のアプリケーションに関連してマッシュアップコンポーネントと呼ばれるアプリケーション、モジュール、または機能をこれらのアプリケーションに対するユーザーによるカスタマイズおよび配置構成に基づく柔軟な方法で使用することができる環境を含みうる。マッシュアップコンポーネントは、ユーザーの選好に基づく、ウェブページ、アプリケーション、またはモジュール、コンポーネント、サービス、もしくは他のマッシュアップコンポーネントなどの、他のアプリケーションもしくはコンポーネントと組み合わせることができるデータもしくは機能を含むサブルーチンなどのアプリケーションの一部とすることができる。さらに、「マッシュアップコンポーネント」、「マッシュアップアプリケーション」、「マッシュ可能アプリケーション」、または「マッシュアップエンティティ」という用語は、本開示の範囲から逸脱することなく、適宜入れ替えて使用することができる。したがって、マッシュアップ機能を備えるように設計されているアプリケーションは、新規サービスを作成するためにアプリケーションの他のコンポーネントと、または1つまたは複数の外部アプリケーションの特定のコンポーネントと組み合わせた特定のデータもしくは機能をアプリケーション内に有することができる。いくつかのマッシュアップのシナリオにおいて、ページまたはワークスペースは、ワークスペース内にマッシュ可能アプリケーションの視覚的な配置構成を定義するために使用されるレイアウトを有することができる。さらに、マッシュ可能アプリケーションは、マッシュ可能アプリケーション間でコンテンツを受け渡しすることなどによって相互にやり取りすることができる。特に、マッシュ可能アプリケーションは、ユーザーによって定義されているとおりにアプリケーションの入力ポートおよび出力ポートを接続するデータフローを通じて他のマッシュ可能アプリケーションと組み合わせることができる。マッシュアップ環境において、特定のフォーマットで配置されるマッシュ可能アプリケーションは、異なる組み合わせで再配置することができ、その結果、マッシュアップアプリケーションのエレメント間に異なるデータフローおよび接続をもたらしうる。マッシュ可能アプリケーションは、さまざまなアプリケーション間でデータの共有を可能にする入力ポートまたは出力ポートなどの、複数のポートを通じて他のアプリケーションにリンクさせることができる。ユーザーは、ユーザーの選好に応じてマッシュアップコンポーネントの配置構成をカスタマイズすることができる。
【０００８】
いくつかの場合において、マッシュ可能アプリケーションは、マッシュ可能アプリケーションに関連付けられたポート間の接続を作成し、構成するために異なるインターフェイスを有することができる。マッシュ可能アプリケーションは、異なる技術もしくはソースに関連付けられ、マッシュ可能アプリケーションのいくつかのインターフェイスは、互いに非互換である場合もある。マッシュ可能アプリケーションの異なるコンポーネントが潜在的に1つの接続を共有することがあるが、さまざまなコンポーネント間のデータフォーマットが一致しないため、データ接続を作成することが困難になる場合がある。さらに、ユーザーは、マッシュ可能アプリケーション間のコンテキスト接続を形成するためにどのポートを接続することができるか、または異なるマッシュ可能アプリケーションに関連付けられたポート間の接続をどのように作成するかを知ることができない。したがって、マッシュアップアプリケーションポート間の接続を自動的に定義するように、またはポートを接続することに関する提案を自動的に行うように、マッシュアップモデルおよびシステムを実装することができる。
【０００９】
マッシュアップアプリケーションは、入力ポートおよび出力ポート、さらにはそれらのポート間のデータ接続を含むものとしてよい。マッシュアップアプリケーションのポートは、マッシュアップアプリケーションを他のアプリケーションもしくはコンポーネントのインターフェイスにリンクするための入力および出力インターフェイスであり、それぞれのポートは、データの型に関連付けられうる。いくつかの実装において、学習システムまたはモデルは、特定のポートを接続することに関する提案を生成し、それらの提案をユーザーに対して提示することができる。特に、マッシュアップアプリケーションのいくつかのポートを、複数のパラメータとタグを使用して定義することができ、それらのパラメータおよびタグに基づいて、2つのポートの間の可能な接続を与える1つまたは複数の提案を生成するか、または提供することができる。それに加えて、学習システムは、ポート間の既存の接続またはいくつかのマッシュ可能アプリケーションに対する確立された接続の履歴に基づいていくつかのポートを接続する提案を生成することができる。さらに、マッシュアップモデルを使用して、マッシュアップシナリオの設計をサポートするためにマッシュアップエンティティおよび接続を定義することができる。ポートおよび接続などのマッシュアップエレメントは、マッシュアップアプリケーション同士の接続をしやすくするためにオブジェクトとして表すことができる。
【００１０】
マッシュアップアプリケーションのいくつかのポートは、これらのポートの属性を定義するパラメータを含むことができる。いくつかの実装では、ユーザーは、特定のポートに対するパラメータにタグを付けて、ポートをさらに定義し、後で使用する追加のコンテキストを構成することができる。本開示の学習システムは、ソースコンポーネントまたはポートとターゲットコンポーネントまたはポートとの間の可能な接続を提案することができる。この提案は、ポートに関連付けられた一致するポートパラメータ、タグ、または既存の接続に基づくことができる。ポートの定義および接続を利用する学習のロジックおよびアルゴリズムは、システムの提案機能を改善し、より効果的な接続を見つけるためにも適用することができる。さらに、学習システムの提案機能は、時間を追って情報が増えるとともにマッシュアップアプリケーションポートに対するタグおよびパラメータがよくなってゆくので絶えず改善されうる。例えば、特定のポートがさらに多くの接続に関連付けられているので、ポートの接続履歴が大きくなり、提案のベースとなりうるデータのより大きな記憶域が作成されうる。ポートのタグを充実するために、または接続に対する提案を生成するために、さまざまなアルゴリズムを使用することができる。例えば、2つのポートの間に接続が作成されるときに、それぞれのポートのパラメータのタグを他のポートのパラメータにコピーし、2つの接続されているポートのうちのそれぞれのポートのパラメータにおいて派生タグを作成することができる。いくつかの実装において、派生タグを、ポートパラメータを格納している既存のリポジトリに伝搬させ、可能な一致をさらに広げることができる。また、2つの接続されているポートについて、一方のポートからのパラメータの名前をタグとして、他方のポート内のマッピングされたパラメータに付加し、内部タグを作成することができる。新規に追加されたタグが2つのポートの間の接続に基づく場合、これら2つのポートが、追加の接続のために学習システムによって生成された提案に含まれる確率がさらに高まる。
【００１１】
このような技術の潜在的な1つの利点は、マッシュアップアプリケーション間の接続を効率的な仕方で使いやすくできるという点にある。マッシュアップアプリケーションは、異なる技術およびインターフェイスを使用して異なるエンティティによって開発されている可能性があり、このため、異なるコンポーネントに関連付けられたインターフェイスが異質であるためユーザーがマッシュアップアプリケーション間の接続を作成したり、または定義したりすることができない。本開示の学習メカニズムは、マッシュアップアプリケーションの一部の間の接続を自動的に作成するか、またはそれらの接続を形成することについてユーザーに対して提案を行うことができる。さらに、学習メカニズムは、マッシュアップエンティティおよび接続を抽象化して定義することができるマッシュアップモデルを使用し、さまざまなリポジトリおよび他のコンテキスト接続からのマッシュアップ情報を使用することができる。また、マッシュアップアプリケーション間の接続を後で提案するために学習システムにポート特性およびパラメータのユーザー定義のタグ付けおよびランク付けをフィードバックすることができるので、学習メカニズムは時間の経過とともに進化しうる。言い換えると、学習メカニズムは、ポートパラメータの常時更新に適応することができるということであり、これにより、可能な接続の選択幅が広がる。したがって、学習メカニズムによって生成される提案は、常時改善されうる。
【００１２】
示されている例を参照すると、図1は、マッシュアップフレームワーク104と学習メカニズム128を備えるマッシュアップインフラストラクチャの例示的な環境100を示していることがわかる。例示されている環境100は、サーバー102および1つまたは複数のクライアント135を備えるか、またはそれらと通信可能に結合され、その少なくともいくつかはネットワーク112上で通信する。環境100は、異なるマッシュアップアプリケーションのポートを自動的に接続するか、または異なるポートを接続する提案を生成することができるシステムもサポートする。
【００１３】
一般に、サーバー102は、1つまたは複数のホステッドアプリケーション122を格納する任意のサーバーであり、そこでは、ホステッドアプリケーション122の少なくとも一部は、図1の例示されている環境100内にあり、その環境100と通信可能に結合されているユーザーまたはクライアントに送信された要求および応答を介して実行される。例えば、サーバー102は、Enterprise Java(登録商標)Beans (EJB)、J2EE Connector Architecture (JCA)、Java(登録商標) Messaging Service (JMS)、Java(登録商標) Naming and Directory Interface (JNDI)、およびJava(登録商標) Database Connectivity (JDBC)などのJava(登録商標)技術を含む、Java(登録商標) 2 Platform、Enterprise Edition (J2EE)準拠アプリケーションサーバーとすることができる。いくつかの場合において、サーバー102は、複数のさまざまなホステッドアプリケーション122を格納することができる、他の場合には、サーバー102は、単一のホステッドアプリケーション122のみを格納し、実行することが意図されている専用サーバーとすることができる。いくつかの場合において、サーバー102は、ウェブサーバーを備えるか、またはウェブサーバーと通信可能に結合されうるが、ただし、ホステッドアプリケーション122は、ホステッドアプリケーション122のプログラムされたタスクまたは動作を実行するためにシステムのクライアント135によってネットワーク112経由でアクセスされ、実行される1つまたは複数のウェブベースのアプリケーションを表す。
【００１４】
高水準では、サーバー102は、環境100に関連付けられたデータおよび情報の受信、送信、処理、格納、または管理を行う動作が可能な電子コンピューティングデバイスを備える。図1に例示されているサーバー102は、環境100のクライアント135に関連付けられた1つまたは複数のクライアントアプリケーション144からアプリケーション要求を受け取り、関連付けられたホステッドアプリケーション122において前記要求を処理することによって受け取った要求に応答し、ホステッドアプリケーション122からの適切な応答を要求しているクライアントアプリケーション144に送り返す役割を持つものとすることができる。あるいは、サーバー102におけるホステッドアプリケーション122は、サーバー102にローカルでアクセスするユーザーからのローカル要求を処理し、応答することが可能であるものとしてよい。したがって、図1に例示されている外部クライアント135からの要求に加えて、ホステッドアプリケーション122に関連付けられる要求も、内部ユーザー、外部もしくはサードパーティーカスタマー、他の自動化アプリケーション、さらには他の適切なエンティティ、個人、システム、またはコンピュータから送信されうる。
【００１５】
本開示において使用されているように、「コンピュータ」という用語は、好適な処理デバイスを包含することが意図されている。例えば、図1は、単一のサーバー102を例示しているが、環境100は、2つまたはそれ以上のサーバー102、さらには、サーバープールを含む、サーバー以外のコンピュータを使用して実装されうる。実際、サーバー102は、例えば、ブレードサーバー、汎用パーソナルコンピュータ(PC)、Macintosh、ワークステーション、UNIX(登録商標)ベースのワークステーション、または他の好適なデバイスなどの任意のコンピュータもしくは処理デバイスとすることができる。言い換えると、本開示では、汎用コンピュータ以外のコンピュータ、さらには従来のオペレーティングシステムを持たないコンピュータをも対象とする。さらに、例示されているサーバー102は、Linux、UNIX(登録商標)、Windows(登録商標)、Mac OS、または他の好適なオペレーティングシステムを実行するように構成されうる。一実施形態によれば、サーバー102は、メールサーバーを含むか、またはそれと通信可能に結合することも可能である。
【００１６】
本発明の実装では、図1に示されているように、サーバー102は、プロセッサ118、インターフェイス117、メモリ120、1つまたは複数のホステッドアプリケーション122、およびマッシュアップフレームワーク104を備える。インターフェイス117は、ネットワーク112に接続されたクライアントサーバー型または他の分散型環境(環境100を含む)内の他のシステム(例えば、クライアント135、さらにはネットワーク112と通信可能に結合されている他のシステム)と通信するためにサーバー102によって使用される。一般に、インターフェイス117は、好適な組み合わせでソフトウェアおよび/またはハードウェア内に符号化され、ネットワーク112と通信する動作が可能なロジックを備える。より具体的には、インターフェイス117は、ネットワーク112またはインターフェイスのハードウェアが例示されている環境100の内部および環境100の外部で物理的信号を伝達する動作が可能であるように通信に関連付けられた1つまたは複数の通信プロトコルをサポートするソフトウェアを備えることができる。
【００１７】
サーバー102は、グラフィカルユーザーインターフェイス(GUI)160aなどのユーザーインターフェイスを備えることもできる。GUI 160aは、例えばサーバー102のユーザーが、データの作成、準備、要求、または分析、さらには商取引に関連するソースドキュメントの閲覧およびアクセスなどの、何らかの適当な目的のためにプラットホームの少なくとも一部とインターフェイスすることを可能にする動作が可能なグラフィカルユーザーインターフェイスを備える。一般に、GUI 160aは、システムによって供給される、またはシステム内で伝達される業務データを特定のユーザーに効率よく、わかりやすく提示する。GUI 160aは、ユーザーによって操作されるインタラクティブなフィールド、プルダウンリスト、およびボタンを持つ複数のカスタマイズ可能なフレームもしくはビューを備えることができる。例えば、GUI 160aは、ユーザーがマッシュ可能アプリケーションのコンポーネントもしくはポートのパラメータにタグ付けできるようにするインタラクティブエレメントを備えることができる。GUI 160aは、マッシュ可能アプリケーションのポートの間の可能な接続の提案を表示することもできる。より一般的には、GUI 160aは、ユーザーがアプリケーション122のさまざまなサービスおよび機能にアクセスし、利用することを可能にする一般的なインタラクティブエレメントを備えることもできる。GUI 160aは、多くの場合に構成可能であり、テーブルとグラフ(棒グラフ、折れ線グラフ、円グラフ、ステータスダイアルなど)の組み合わせをサポートし、リアルタイムポータルを構築することができ、その場合、タブはキー特性(例えば、サイトまたはマイクロサイト)で区切られる。したがって、GUI 160aでは、一般的なウェブブラウザ、インテリジェント型エンジン、およびプラットホームにおける情報を処理し、その結果をユーザーに対し効率よく視覚的に提示するコマンドラインインターフェイス(CLI)の組み合わせなどの、任意の好適なグラフィカルユーザーインターフェイスを意図している。
【００１８】
一般的に、例示的なサーバー102は、環境100のコンポーネント間(つまり、サーバー102とクライアント135との間)の無線または有線による通信を容易にするネットワーク112、さらには追加のクライアント、サーバー、または図1に例示されていないがネットワーク112と通信可能に結合されている他のデバイスなどの他のローカルまたはリモートのコンピュータと通信可能なよう結合されうる。ネットワーク112は、図1では単一のネットワークとして例示されているが、ネットワーク112の少なくとも一部が送信側と受信側との間の通信を円滑にすることができる限り、この開示の範囲から逸脱することなく連続的な、または不連続なネットワークであってもよい。ネットワーク112は、企業ネットワークまたは安全なネットワークのすべてまたは一部であってもよいが、他の場合には、ネットワーク112の少なくとも一部は、インターネットへの接続を表すものとすることができる。場合によっては、ネットワーク112の一部は、例えば、クライアント135とサーバー102との間の接続などの、仮想プライベートネットワーク(VPN)であってもよい。さらに、ネットワーク112のすべて、または一部は、有線リンクまたは無線リンクのいずれかを含むことができる。例示的な無線リンクは、802.11a/b/g/n、802.20、WiMax、および/または他の適切な無線リンクを含むことができる。言い換えると、ネットワーク112は、例示されている環境100の内部および外部におけるさまざまなコンピューティングコンポーネントの間の通信を円滑にする動作が可能である内部もしくは外部のネットワーク、ネットワーク、サブネットワーク、またはこれらのネットワークの組み合わせを含む。ネットワーク112は、例えば、インターネットプロトコル(IP)のパケット、フレームリレーのフレーム、非同期転送モード(ATM)のセル、音声、ビデオ、データ、および他の好適な情報をネットワークアドレス間で伝達することができる。ネットワーク112は、1つまたは複数のローカルエリアネットワーク(LAN)、無線アクセスネットワーク(RAN)、メトロポリタンエリアネットワーク(MAN)、ワイドエリアネットワーク(WAN)、インターネットのすべてまたは一部、および/または1つもしくは複数の場所にある他の1つまたは複数の通信システムも含むことができる。しかし、ネットワーク112は、本開示の必須のコンポーネントであるというわけではない。
【００１９】
図1に例示されているように、サーバー102は、プロセッサ118を備える。図1の単一のプロセッサ118として例示されているが、環境100の特定のニーズ、願望、または特定の実施形態に応じて、2つまたはそれ以上のプロセッサを使用することができる。それぞれのプロセッサ118は、中央演算処理装置(CPU)、ブレード、特定用途向け集積回路(ASIC)、フィールドプログラマブルゲートアレイ(FPGA)、または他の好適なコンポーネントとすることができる。一般に、プロセッサ118は、命令を実行し、データを操作することで、サーバー102および特に、1つまたは複数のホステッドアプリケーション122の動作を実行する。特に、サーバーのプロセッサ118は、クライアント135およびその各クライアントアプリケーション144からの要求を受け取り、その要求に応答するために必要な機能、さらにはホステッドアプリケーション122の他の動作を実行するために必要な機能を実行する。
【００２０】
特定の実装に関係なく、コンピュータ可読命令、ファームウェア、有線接続されたもしくはプログラムされたハードウェア、または「ソフトウェア」は、少なくとも本明細書で説明されているプロセスおよび動作を実行するために実行されたときに動作可能な有形の媒体上のこれらの任意の組み合わせを含むことができる。実際、それぞれのソフトウェアコンポーネントを、C、C++、Java(登録商標)、Visual Basic、アセンブラ、Perl、4GLの好適な任意のバージョン、さらにはその他のものを含む、適切なコンピュータ言語で完全に、もしくは部分的に書くことができるか、または記述することができる。図1に示されているソフトウェアの部分は、さまざまなオブジェクト、方法、または他のプロセスを通じてさまざまな特徴および機能を実装する個別のモジュールとして示されているが、ソフトウェアは、その代わりに、多数のサブモジュール、サードパーティーサービス、コンポーネント、ライブラリ、およびそのような適切なものなどを含みうることは理解されるであろう。逆に、さまざまなコンポーネントの特徴および機能を組み合わせて適宜単一のコンポーネントにすることができる。例示されている環境100では、プロセッサ118は、サーバー102上の1つまたは複数のホステッドアプリケーション122を実行する。
【００２１】
高水準では、1つまたは複数のホステッドアプリケーション122のそれぞれは、特に、例示されているクライアント135およびその関連付けられたクライアントアプリケーション144から受け取った1つまたは複数の要求に応答し、それらの要求に関して、本開示に従って情報の作成、変更、削除、生成、または他の何らかの方法による管理を行うことができる任意のアプリケーション、プログラム、モジュール、プロセス、または他のソフトウェアである。いくつかの場合において、特定のサーバー102に、ただ1つのホステッドアプリケーション122のみが配置されうる。とりわけ、複数の関係する、および/または無関係のホステッドアプリケーション122を単一のサーバー102に格納することができるか、または複数の他のサーバー102上に配置することも同様にできる。いくつかの場合において、環境100は、複合ホステッドアプリケーション122を実装することができる。例えば、複合アプリケーションの一部を、Enterprise Java(登録商標) Beans (EJB)として実装することができるか、または設計時コンポーネントが、J2EE (Java(登録商標) 2 Platform、Enterprise Edition)、ABAP (Advanced Business Application Programming)オブジェクト、または特に、Microsoftの.NETへのランタイム実装を生成する機能を備えることができる。それに加えて、ホステッドアプリケーション122は、ネットワーク112を介して(例えば、インターネットを通じて)リモートクライアント135またはクライアントアプリケーション144によってアクセスされ、実行されるウェブベースのアプリケーションを表しうる。さらに、サーバー102の内部にあるものとして例示されているが、特定のホステッドアプリケーション122に関連付けられた1つまたは複数のプロセスを、リモートに格納するか、リモートへ参照するか、またはリモートで実行することができる。例えば、特定のホステッドアプリケーション122の一部が、リモートで呼び出されるアプリケーションに関連付けられたウェブサービスであり、ホステッドアプリケーション122の他の部分が、リモートクライアント135における処理のためにバンドルされているインターフェイスオブジェクトまたはエージェントであってもよい。さらに、本開示の範囲から逸脱することなく、ホステッドアプリケーション122のどれか、またはすべてが、他のソフトウェアモジュールまたは企業アプリケーション(図示せず)の子もしくはサブモジュールであってもよい。さらに、ホステッドアプリケーション122の一部は、サーバー102において直接作業しているユーザーによって実行されるだけでなく、クライアント135においてリモートで実行されうる。
【００２２】
例示されているように、プロセッサ118は、マッシュアップアプリケーションの構成を管理するためにマッシュアップフレームワーク104を実行することもできる。マッシュアップフレームワーク104は、標準のポータルページにおいて実行できるマッシュアップシナリオをユーザーが定義するために使用できるインターフェイス、モジュール、サービス、およびメタデータ定義のセットである。マッシュアップフレームワーク104は、アプリケーションをマッシュアップエンティティ、またはマッシュアップイベントを送信または受信することができるアプリケーションとして定義する機能を備える。特に、マッシュアップアプリケーションは、マッシュアップアプリケーションがコンテキストに応じて互いに接続されるポータルページである、マッシュアップページ上に実装されうる。ユーザーは、1つのマッシュアップアプリケーションとやり取りすることができるが、これが、マッシュアップページ上で接続されているすべてのマッシュアップアプリケーション間のコンテキストに関するデータの伝搬をトリガーしうる。マッシュアップフレームワーク104は、マッシュアップページの範囲内で、マッシュアップエンティティ間の接続のパラメータを定義することができる。特に、マッシュアップフレームワーク104は、一方のマッシュアップアプリケーションをソースアプリケーションとして定義し、他方のマッシュアップアプリケーションをターゲットアプリケーションとして定義し、ソースの出力をターゲットアプリケーションの入力にマッピングするパラメータを含む、ソースマッシュアップアプリケーションとターゲットマッシュアップアプリケーションとの間の接続を定義することができる。実行時に、マッシュアップフレームワーク104は、ソースマッシュアップアプリケーションとターゲットマッシュアップアプリケーションとの間の接続を実行するように構成することができ、そのときに、ユーザーとのやり取りに応答してソースアプリケーションとターゲットアプリケーションとの間のマッシュアップイベントおよび通信をディスパッチする。言い換えると、マッシュアップフレームワーク104は、マッシュアップアプリケーションの作成、管理、および実行のための環境、およびマッシュアップアプリケーション間のインターフェイスを提供することができる。マッシュアップフレームワーク104は、ホステッドアプリケーション122とは別になっているが、他の場合には、マッシュアップフレームワーク104は、特定の1つまたは複数のホステッドアプリケーション内に埋め込まれるか、またはその一部となっていることがある。いくつかの場合において、ホステッドアプリケーション122は、マッシュアップフレームワーク104と通信可能に結合することができ、これにより、ホステッドアプリケーション122はマッシュアップフレームワーク104によって提供される機能にアクセスし、利用することができる。マッシュアップフレームワーク104に対する環境の一例が、図6に関して以下で詳述される。
【００２３】
プロセッサ118は、マッシュアップフレームワーク104が備えるか、またはマッシュアップフレームワーク104に関連付けられたマッシュアップインターフェイス学習メカニズムのソフトウェア128も実行することができる。マッシュアップインターフェイス学習メカニズムのソフトウェア128は、一般に、マッシュアップアプリケーション間のインターフェイスに違いがあったとしても、特にマッシュアップアプリケーションのポート間のデータ接続を円滑に行えるようにする学習メカニズム128を実装するために、本開示に従って情報の作成、変更、削除、生成、または他の何らかの方法による管理を行うことができる任意のアプリケーション、プログラム、機能、モジュール、プロセス、ランタイムエンジン、または他のソフトウェアとすることができる。マッシュアップアプリケーションポート間のすでに作成されている接続を分析することによって、学習メカニズム128は、異なるマッシュアップアプリケーション間のインターフェイスが首尾よく機能する可能性を高めることができる潜在的な接続を識別することができる。マッシュアップインターフェイス学習メカニズム128が提供する機能は、例えば、業務アプリケーションのウェブ表現の開発用のUIサポートを提供することを含むことができる。
【００２４】
一般に、サーバー102は、データおよびプログラム命令を格納するためのメモリ120を備えることもできる。メモリ120は、任意のメモリもしくはデータベースモジュールであってもよく、限定することなく、磁気媒体、光媒体、ランダムアクセスメモリ(RAM)、読み取り専用メモリ(ROM)、取り外し可能媒体、または他の好適なローカルもしくはリモートのメモリを含む、揮発性もしくは不揮発性のメモリの形態をとりうる。メモリ120は、さまざまなオブジェクトまたはデータを格納することができ、このようなオブジェクトまたはデータとしては、クラス、フレームワーク、アプリケーション、バックアップデータ、業務オブジェクト、ジョブ、ウェブページ、ウェブページテンプレート、データベーステーブル、業務情報および/または動的情報を格納するリポジトリ、ならびにサーバー102およびその1つまたは複数のホステッドアプリケーション122の目的に関連付けられたパラメータ、変数、アルゴリズム、命令、ルール、制約条件、またはこれらへの参照を含む他の何らかの適切な情報が挙げられる。
【００２５】
さらに、メモリ120は、ポートリポジトリ126内のマッシュアップアプリケーションの入力ポートおよび出力ポートに関連付けられたデータを格納することができる。これらのポートに関連付けられたデータは、本開示のマッシュアップインターフェイスで使用されるさまざまなマッシュアップアプリケーションのインターフェイスを記述する、ユーザーによって定義されたか、または自動生成されたメタデータ、パラメータ、タグ、または他のデータであるものとしてよい。メモリ120は、接続リポジトリ124内のマッシュアップアプリケーションインターフェイス間の、さまざまな接続、いずれかの潜在的な接続、またはすでに確立されている接続に関連付けられたデータも格納することができる。接続リポジトリ124内のデータは、マッシュアップアプリケーションポート間で確立されている接続の履歴に関連付けられたデータ、すでに確立されている接続の優先順位付け(または場合によっては、人気度)、および学習メカニズム128によって使用されうる、または潜在的接続を識別するためのマッシュアップアプリケーションのコンポーネント間の接続に関連付けられた他の関連性のあるデータを含みうる。ポートリポジトリ126および接続リポジトリ124内に格納されているデータは、マッシュアップアプリケーションコンポーネント間に接続を自動作成するか、または可能な接続をユーザーに推奨するために使用することができる。さらに、メモリ120は、VPNアプリケーション、ファームウェアのログおよびポリシー、HTMLファイル、データクラスもしくはオブジェクトインターフェイス、ここに図示されていないソフトウェアアプリケーションもしくはサブシステム、ファイアウォールポリシー、セキュリティもしくはアクセスログ、印刷もしくは他の報告ファイル、さらには他のものなどの、他の適切なデータを格納することができる。
【００２６】
図1の例示されている環境は、1つまたは複数のクライアント135も備える。それぞれのクライアント135は、少なくともサーバー102と、および/または有線もしくは無線接続を使用するネットワーク112を介して、接続または通信する動作が可能なコンピューティングデバイスとすることができる。さらに、クライアント135によって例示されているように、それぞれのクライアント135は、プロセッサ146、インターフェイス142、グラフィカルユーザーインターフェイス(GUI)160b、クライアントアプリケーション144、およびメモリ150を備える。一般に、それぞれのクライアント135は、図1の環境100に関連付けられた適切なデータの受信、送信、処理、または格納を行う動作が可能な電子コンピュータデバイスを備える。環境100に関連付けられているか、または環境100の外部にあるクライアント135はいくつもありうることは理解されるであろう。例えば、例示されている環境100は、3つのクライアント(135a、135b、および135c)を備えるが、環境100の代替的実装は、サーバー102と通信可能に結合されている単一のクライアント135、または環境100の目的に適した他の数のクライアント135を備えることができる。それに加えて、ネットワーク112を介して環境100とやり取りすることが可能な環境100の例示されている部分の外部に1つまたは複数の追加のクライアント135がありうる。さらに、「クライアント」および「ユーザー」という用語は、本開示の範囲から逸脱することなく、適宜入れ替えて使用することができる。さらに、それぞれのクライアント135は、単一のユーザーが使用するという状況に関して説明されているが、本開示では、多数のユーザーが1つのコンピュータを使用できること、または1人のユーザーが複数のコンピュータを使用できることを想定している。
【００２７】
本開示で使用されているように、クライアント135は、パーソナルコンピュータ、タッチスクリーン端末、ワークステーション、ネットワークコンピュータ、キオスク、無線データポート、スマートフォン、パーソナルデータアシスタント(PDA)、これらの、もしくは他のデバイス内にある1つまたは複数のプロセッサ、または他の好適な処理デバイスを包含することが意図されている。例えば、それぞれのクライアント135は、キーパッド、タッチスクリーン、マウス、またはユーザー情報を受け付けることができる他のデバイスなどの入力デバイス、およびデジタルデータ、視覚的情報、クライアントアプリケーション144、またはGUI 160bを含む、サーバー102(およびホステッドアプリケーション122)またはクライアント135それ自体の動作に関連付けられた情報を伝達する出力デバイスを備えるコンピュータを具備することができる。入力デバイスおよび出力デバイスは、両方とも、ディスプレイ、つまり、GUI 160bを通じてクライアント135のユーザーから入力を受け取り、出力を受け渡すための磁気記憶媒体、CD-ROM、または他の好適な媒体などの固定もしくは取り外し可能な記憶媒体を備えることができる。
【００２８】
図1は、複数のエレメントを含むものとして、または複数のエレメントに関連付けられたものとして説明されているが、本開示のそれぞれの代替的実装において、図1の環境100内に例示されているすべてのエレメントが使用できるわけではない。例えば、図1はクライアントコンピュータ135によってアクセス可能なサーバー102にホステッドアプリケーションを実装するサーバークライアント型環境を示しているが、いくつかの実装では、サーバー102は、マッシュアップアプリケーションポートのパラメータにタグ付けするか、またはマッシュアップアプリケーション間の可能な接続に対する提案を表示するためにGUI 160aを直接利用するユーザーからアクセス可能なアプリケーションUIを備えるローカルアプリケーションを実行する。それに加えて、本明細書で説明されているエレメントのうちの1つまたは複数は、環境100の外部に配置されうるが、他の場合には、いくつかのエレメントは、他の説明されているエレメントのうちの1つまたは複数のエレメントの中に、さらには例示されている実装では説明されていない他のエレメントのうちの1つまたは複数のエレメントの中に含まれるか、またはその一部として含まれるものとしてよい。さらに、図1に例示されているいくつかのエレメントは、他のコンポーネントと組み合わせることができるだけでなく、本明細書で説明されている目的に加えて代替えのまたは追加の目的に使用することができる。
【００２９】
図2は、マッシュアップアプリケーションポート間の潜在的な接続を識別するためにデータを収集するプロセス200を例示するフローチャートである。いくつかの実装では、潜在的な接続は、異なるマッシュアップアプリケーションポートもしくは接続について収集されたデータの履歴に基づいてユーザーに対し自動作成または提案されうる。言い換えると、潜在的な接続は、マッシュアップコンポーネント間の接続をすでに確立しているユーザー、またはいくつかのマッシュアップアプリケーションポートに対する有益なメタデータをすでに識別しているユーザーの作業結果を活用することによって識別できるということである。特定のユーザーの持つ履歴も、潜在的な接続を識別するために使用できる。最初に、2つのポートの間の接続を生成する要求が、202において受信される。一般に、ポートは、他のアプリケーションのコンポーネントと通信することができるマッシュアップアプリケーションの特定のコンポーネントを定義するパラメータおよびメタデータを含むマッシュアップアプリケーションのインターフェイスとすることができる。したがって、マッシュアップアプリケーションによって使用されるデータオブジェクトまたはコンテンツは、他のアプリケーションに受け渡すことができる。いくつかの場合において、マッシュアップアプリケーションの特定のポートは、ソースまたは出力ポートを含むことができ、これから、データを異なるマッシュアップアプリケーションのターゲットもしくは入力ポートのインターフェイスに伝送することができる。ソースポートと特定の場合における2つのポートの間のインターフェイス(つまり、相互のやり取り)を定義するターゲットポートとの間にリンク、つまり接続が確立される。接続は、1つまたは複数の場合においてデータを一方のマッシュアップアプリケーションから他方のマッシュアップアプリケーションに効果的に受け渡すことができるように定義される。特に、接続は、ソースコンポーネントからターゲットコンポーネントに、コンテキストデータを受け渡す方法を定義する。2つのポート間の作成された接続に関連付けられたデータは、図1のリポジトリ124などの、接続リポジトリに格納することができる。
【００３０】
202においてユーザーによって要求されたとおりに接続される2つのポートは、類似のインターフェイス、または異なるインターフェイスのいずれかを有するマッシュアップアプリケーションに関連付けられうる。2つのポートが、異なるインターフェイスを有し、異なる構造を有する場合には、適切な技術的機能を持つユーザーは、それにもかかわらず、204において2つのポートの間の接続の確立を、例えば、異なるインターフェイスによってサポートされるフォーマットの違いを識別し、接続に必要なロジックを手作業でプログラムすることによって行うことができる。いくつかの実装では、ポート間の接続は、マッシュアップフレームワーク104および図1に例示されている、関連付けられたそのマッシュアップインターフェイスの学習メカニズム128などによって、自動的に確立されうる。次いで、確立された接続に関連付けられたメタデータは、手作業で作成されようと自動作成されようと、206において、接続リポジトリ124に格納することができる。例えば、メタデータは、接続によってリンクされたポートもしくは関連付けられたマッシュアップアプリケーションの名前、接続の特定のインスタンスに対する識別番号、その接続を通じて転送されるコンテンツの種類の記述、またはポート間の接続に関連付けられた他のデータを含むことができる。メタデータは、接続リポジトリ124内に自動的に格納されるか、またはユーザーからの入力に応答して格納されうる。
【００３１】
ユーザーは、2つのポートのうちの一方または両方のポートの追加の属性を識別し、208においてポートパラメータのデータオブジェクトまたはリポジトリ(ポートリポジトリ126など)内のタグまたはパラメータとして属性を入力することもできる。それぞれのポートに対するメタデータは、そのポートまたはマッシュアップアプリケーションによってサポートされるデータの型、そのポートで確立された特定の接続に対するパラメータ、そのポートのインターフェイスの構造、またはそのポートの機能を識別するために使用されうる他の好適なデータを含むことができる。ポートおよび接続のタグは、ユーザーによって作成された接続を記述する情報を供給し、その後、接続およびポートのリポジトリ内のデータに基づいて特定のポートに対する異なる潜在的な接続を識別するために210において追加データとして使用されうる。1つのポートに対する潜在的な世俗を識別するためのプロセスの一例について、図3を参照しつつ以下で詳しく説明する。さらに、プロセス200をシステム内のマッシュアップアプリケーションポートに関係するトランザクション毎に繰り返すことができ、これは、データ接続およびポートに関連付けられたデータの収集の履歴に基づいて拡張される。したがって、自動的に、または手動ですでに確立されている接続から収集されたデータを活用することで、マッシュアップアプリケーションポート間の新しい接続に対する提案を生成することができる。いくつかの場合において、接続に関連付けられたデータが、後からアクセスできるようにポートリポジトリに格納された後に、プロセス200は208で終了することができる。
【００３２】
図3は、特定のポートについて確立されうる潜在的なターゲットポートまたは接続を識別するプロセス300を示すフローチャートである。最初に、ソースポートに対する潜在的なターゲットポートを識別する要求が、302において受信される。いくつかの実装では、代わりに、特定のターゲットポートに対する潜在的なソースポートを識別する要求を受け取ることができる。要求は、ユーザーによる選択から手動で、または、例えば、現在のマッシュアップ環境にマッシュアップアプリケーションの新規ポートを追加すること、マッシュアップフレームワーク104全体にわたってマッシュアップイベントを伝搬させること、または特定のポートにタグ付きパラメータを追加することなどの、さまざまなイベントに応答して自動的に受信されうる。次に、プロセス300が、ソースポートに関連付けられたメタデータを識別できるかどうかを判定する。例えば、ソースポートに関連付けられた関連性のあるタグが、304において発見されうる。ソースポートに関連付けられたタグは、ソースポートに関連付けられているか、または同じマッシュアップアプリケーションの異なるポートなどの関係するポートに関連付けられたすでに確立された接続を構成しつつユーザーによって識別されたパラメータとすることができる。タグは、他の関係するポートから自動的にコピーされたパラメータ、またはそのポートですでに作成されている接続に応答してリポジトリ内に格納された属性であってもよい。いくつかの場合において、図1のマッシュアップフレームワーク104は、コンポーネント間に1つまたは複数の接続が作成されたときにポートメタデータの自動コピーを制御するか、または指令することができる。マッシュアップアプリケーションポートは、さまざまなアルゴリズムに基づいて時間の経過とともに充実されるか、更新されるか、または拡大されるタグを持つパラメータを備えることができる。例えば、派生タグは、2つのポート間で接続が作成されるときに一方のポートのパラメータのタグを他方のポートのパラメータに自動的にコピーすることによって作成されうる。さらに、2つのポート間に接続が作成されたときに、作成された接続のコンテキストに応じて、一方のポートからの特定のパラメータの名前をタグとして、他方のポートの対応するマッピングされたパラメータに付加することができる。
【００３３】
ソースポートに関連付けられた関連性のあるタグが見つからない場合、プロセスは、308において潜在的なターゲットポートに関連付けられた関連性のあるタグがあるかどうかを判定する。ソースポートに関連付けられた関連性のあるタグがある場合、ソースポートに接続される可能なターゲットポートのセットが、306においてソースポートに関連付けられた関連性のあるタグに基づいて識別される。可能なタグポートは、さまざまな基準に基づいて識別されうる。例えば、ソースポートといくつかのパラメータもしくはタグを共有する、または以前の接続の履歴を共有するターゲットポートは、潜在的なターゲットポートとして識別されうる。潜在的なターゲットポートに関連付けられた関連性のあるタグも、308において識別されうる。例えば、ソースポートとのいくつかの一致するタグを持つ潜在的なターゲットポートに対して探索を実行することができる。潜在的なターゲットポートに関連付けられた関連性のあるポートが見つかった場合、潜在的なターゲットポートのセットも、310において潜在的なターゲットポートに関連付けられたタグに基づいて拡大されうる。潜在的なターゲットポートに関連付けられた関連性のあるタグがない場合、プロセス300は、312においてソースまたはターゲットポートに関連付けられた前の接続(previous connections)があるかどうかを判定する。識別されたターゲットポートは、ソースポートとターゲットポートとの間で首尾よく接続できる確率を高めることができる因子に基づいて優先順位付けすることができる。潜在的なターゲットポートを優先順位付けする可能な因子の1つは、ソースポートとターゲットポートとの間に確立された前の接続の数であるものとしてよい。
【００３４】
さらに、ソースポートまたは潜在的なターゲットポートに関連付けられた前の接続に関係するメタデータを利用して、ユーザーに対して提案する潜在的なターゲットポートの選択を決定することができる。最初に、プロセス300が、312においてソースポートまたはターゲットポートに関連付けられた前の接続があるかどうかを判定する。すでに確立されている接続が存在する場合、それらの接続のうちのいくつかは現在のソースポートに対してターゲットポートの識別に対し他の接続に比べて関連性が高いかどうかが判定される。言い換えると、ソースポートとターゲットポートとの間のすでに作成されている接続は、そのソースポートと他のターゲットポートとの間のすでに作成されている接続に比べて潜在的なターゲットポートの現在の判定に対し関連性が高い場合も関連性が低い場合もあるということである。例えば、2つのポート間の接続は、すでに確立されている可能性があるが、それらのポート間の接続の付加価値は、特定のマッシュアップ環境では最小であった可能性がある。したがって、その特定の接続は、前の接続からそれら2つのポートのいずれかについて潜在的な接続ポートを決定するときにそれほど有用でない場合がある。さらに、注目しているポートのデータ型およびコンテンツによっては、一方のシナリオにおいて有益であると考えられる特定の接続が、別のシナリオで潜在的なターゲットポートを識別するための関連性のある情報を提供しないことがある。特定の接続の有用性を判定するために、さまざまなアルゴリズムを使用することができる。例えば、マッシュアップフレームワーク104は、それぞれの接続に関連付けられたさまざまな因子に対し重み付けの公式を適用する提案エンジンを備えることができる。潜在的な接続の有用性を判定するためのいくつかの因子としては、特定の接続の以前のインスタンスの頻度、特定の組み合わせの前の接続が比較的最近行われたかどうか、特定のコンテキストにおいて特定の種類の接続をユーザーが必要としたかどうか、特定のデータ型を適応できるかどうか、一方のデータフォーマットが他方のデータフォーマットよりもよいとする一般的な選好、または共有されるか、もしくは関係するタグおよびパラメータの個数が挙げられる。これらの因子に対し、異なるシナリオにおいて接続のいくつかの属性の有用性を反映するように異なる重みを割り当てることができる。
【００３５】
さらに、ソースポートへの関連性に関して接続の順位付け(または準位付けを導き出すために使用できるメタデータ)を提供する接続リポジトリ(例えば、図1の接続リポジトリ126)内に前の接続のリストを格納することができる。あるいは、プロセス300は、一組の基準に基づいて314で前の接続の順位付けを動的に決定することができる。特に、本開示の学習メカニズム128は、前の可能な基準に基づいてソースポートに対する潜在的な接続のセットを識別することができる。例えば、前の接続は、使用の頻度もしくは接続がこれより前に行われた回数に基づいて順位付けすることができる。この順位付けは、特定のポート間の接続の人気度を反映することができ、この人気度は、特定の接続を行うことの有益性または容易さの指標となるものとしてよい。いくつかの実装では、関連性のある接続を識別することは、接続を順位付けすることの代わりに、または接続を順位付けすることに加えてポートに関連付けられたパラメータタグを順位付けした成果であるものとすることができる。例えば、自動的に作成されたタグは、手動で作成されたタグよりも低い順位付けを与えられる場合がある。このような順位付け方法は、特定の接続のダイナミックスおよび/またはシンタックスを理解し、ポートまたは接続に関連付けられたメタデータを手作業で入力するユーザーの重要度および影響度を反映するものとしてよい。接続またはタグの順位付けは、類似の提案をすでに受け取っていたユーザーなどの下流ユーザーによって提供されるユーザーフィードバック、およびそれらの関係するコンテキストにおける提案の関連性もしくは適切性のそれらの順位付けに基づくこともできる。さらに、優先度に対する接続またはタグの順位付けは、さらに多くのユーザーがマッシュアップアプリケーションポート間の接続を作成するときに動的に更新されうる。接続またはタグの順位付けに基づいて、316において前の接続の優先度を識別することができる。
【００３６】
318において、ユーザーに提示するための潜在的なターゲットポートおよび接続の識別されたセットのうちから、潜在的なターゲットポートまたは潜在的な接続のサブセットを選択することができる。いくつかの実装では、潜在的なターゲットポートまたは潜在的な接続のサブセットは、接続のために互換性のある、有益なターゲットポートを形成する可能性の最も高い、特定のソースポートに対する一致するポートもしくは接続を含む。一致するポートおよび接続の選択は、潜在的なポートおよび接続に関連付けられたメタデータ(タグ)、潜在的なポートの間の前の接続の履歴、前の接続の順位付け、または特定のマッシュアップアプリケーションのユーザーにとって有用であるとみなされる品質を定義する他の評価指標などの因子の組み合わせに基づくものとしてよい。時間の経過とともに作成される接続が増えてゆくので、メタデータは学習メカニズム128によって常時更新されうる。
【００３７】
上述のタグ付きパラメータに加えて、特定のポートに関連付けられたメタデータは、他のエレメントを含むことができる。例えば、異なるソースに由来するマッシュアップアプリケーションは、一致しないフォーマットのインターフェイスパラメータを有するポートで構成されうる。マッシュアップアプリケーションが受け取り側のアプリケーションによって認識されないか、または受け取り側のアプリケーションと互換性のないフォーマットでデータを出力する場合、アプリケーション間の直接的な接続を作成することはできない。いくつかの実装では、異なるフォーマットで2つのポート間の有効な接続を作成するために、データのフォーマットを変換する、例えば出力ポートに関連付けられたフォーマットから入力ポートに関連付けられたフォーマットに変換するためのブリッジ、つまり機能を使用することができる。データの一方のフォーマットから他方のフォーマットへの変換のためのブリッジの機能は、2つの特定のポート間の接続のパラメータもしくは定義に含めることができる。言い換えると、ポート間の接続の定義に、ソースポートからターゲットポートに流れるデータを変換するための基礎となる技術を含めることができるということである。
【００３８】
図4は、互いに通信することができるようにポートのパラメータの構成を必要とする2つのポートの間の接続のモデルを示している。図4に示されているように、出力ポート410は、マッシュアップアプリケーションに関連付けられ、ターゲットマッシュアップアプリケーションの入力ポート420との接続を形成するように構成されたソースポートとすることができる。出力ポート410は、パラメータ412および414などの1つまたは複数のインターフェイスパラメータを含むことができる。インターフェイスパラメータ412および414は、入力ポート420の対応するインターフェイスパラメータ422および424にマッピングすることができる。つまり、データフローを、図4に示されているインターフェイスパラメータを通じて出力ポート410に関連付けられたマッシュアップアプリケーションによって使用されるコンテンツを入力ポート420に関連付けられたマッシュアップアプリケーションに転送するように定義することができる。
【００３９】
しかし、いくつかの場合において、パラメータ412および422などの、互いにマッピングされるインターフェイスパラメータは、一致しないか、もしくは互換性のないフォーマットを有する場合があり、このため、ソースからターゲットへのデータの転送が厄介なものとなることがある。例えば、データレポートは、マッシュアップアプリケーションの2つのポートの間の接続を通じて一方のマッシュアップアプリケーションから他方のマッシュアップアプリケーションに伝送されうる。ソースマッシュアップアプリケーションとターゲットマッシュアップアプリケーションは両方とも、データレポートを取り扱うように構成できるが、ソースマッシュアップアプリケーションは識別番号に6桁の数字を使用するデータレポートを生成するのに、ターゲットマッシュアップアプリケーションは識別番号8桁の数字を使用するデータを処理するように構成されているという場合がありうる。ターゲットアプリケーションは、ターゲットアプリケーションのインターフェイスパラメータを通じて6桁の識別番号を受け取ることができるが、ターゲットアプリケーションは、ターゲットアプリケーションのビジネスロジックで必要とされる8桁構成に従って番号を処理するために受け取った識別番号に2桁の数字を追加する必要がある場合がある。したがって、ソースアプリケーションからターゲットアプリケーションに送信される識別番号は、ターゲットアプリケーションパラメータの要件に従うように追加の桁を番号に加える変換を受ける必要があると思われる。
【００４０】
図4のモデルに表されているように、変換器エレメント430は、出力インターフェイスパラメータ412と入力インターフェイスパラメータ422との間のデータフローに対する介在コンポーネントとして定義されうる。変換器エレメント430は、発信データまたは受信データを接続されているポートによって要求される特定のフォーマットに適合させるためにポートパラメータに適用することができるデータ操作エンティティである。図の例では、出力ポート410からのデータは、入力変換器インターフェイスパラメータ430aのところで受信され、そのデータは、出力変換器インターフェイスパラメータ430bからインターフェイスパラメータ422に伝送された後に入力ポート420によって受信される適切なフォーマットに変換される。変換器エレメント430は、ドラッグ&ドロップまたはコンテキストメニューメカニズムなどの適切な方法を使用してマッシュアップモデル環境内で設計時などにユーザーによって接続に追加されうる。変換器エレメント430は、マッシュアップフレームワークのビジネスロジックによって自動的に取り込まれるようにもできる。いくつかの実装では、マッシュアップフレームワークは、ユーザーに対して可能な接続の提案を行うことができ、それらの提案は、変換器エレメント430がその接続を適切に完了するためのロジックを含みうる。変換器エレメント430は、インターフェイスパラメータ414と424との間の接続などの、データフォーマットの変換を必要としないいくつかの接続に含まれない。
【００４１】
変換器エレメント430は、マッシュアップアプリケーションポートのパラメータとしてさらに定義されうる。外部の観点からすると、図5に示されているように、ポートのパラメータに変換器エレメント430を含めることは、ポートの新規インスタンスとみなすことができ、ユーザーは、データを適切なフォーマットに変換するための追加のロジックをプログラムしなくても変換器を含むポートでマッシュアップコンポーネントに直接アクセスすることができる。図の例では、変換構造510aは、特定のポート510に関連付けられたエレメントを備えるモジュールを表すことができる。変換構造510aには、ポート512および514のベースパラメータ、さらには変換器エレメント530が含まれる。変換器エレメント530は、532bにおいて特定のフォーマットのデータを受け取り、そのデータをベースパラメータ512と互換性のあるフォーマットに変換するように構成されうる。変換器エレメント530は、変換されたデータのデータフローをベースパラメータ512内に送り込む変換器出力パラメータ532aを含むことができる。異なるアプリケーションを呼びインターフェイスに関連付けられた外部ポート520は、ポートに関連付けられたマッピングされたパラメータを通じてベースポート510に接続されうる。いくつかの実装では、ポート520のインターフェイスパラメータ522は、変換構造510aで表されているポートインスタンスに直接接続することができるが、それは、変換器エレメント530に関連付けられたソフトウェアロジックが、ベースポート510の一部として表され、別のコンポーネントとしては表されていないからである。ポートインスタンスは、従来の、もしくは重複したポートとして公開されず、インターフェイスパラメータ522は、変換器入力パラメータ532bに、ポート510と520との間の接続としてマッピングされうる。
【００４２】
マッシュアップフレームワーク104は、ユーザーへのマッシュアップアプリケーションポートの公開を管理し、マッシュアップアプリケーションを操作するユーザー用に適切なインターフェイスを提示するための設計時環境を提供することができる。マッシュアップフレームワーク104の機能は、さまざまな実装を用いて実現することができ、マッシュアップフレームワーク104によって提供されるマッシュアップ環境の一例は、図6に示されている。一般に、図6に示されているようなマッシュアップフレームワーク104は、アプリケーションのコンポーネント間の接続およびポートを定義し、永続させ、既存の接続にわたってポート間の可能な一致する接続を発見する機能を備える拡張可能なサービスのセットである。マッシュアップフレームワーク104は、定義されている接続を処理し、出力マッシュアップイベントを適切なマッシュアップ入力イベントに転送するためのランタイムプロセッサも備えることができる。ここで、ランタイムプロセッサは、マッシュアップアプリケーションのコンポーネントなどのソースによって送られるイベントの伝搬を管理するランタイムサービスであるものとしてよい。ランタイムプロセッサは、ソースアプリケーションコンポーネントに接続されるターゲットアプリケーションコンポーネントを特定し、マッシュアップ接続の実行中に適切なターゲットイベントを構築することができる。
【００４３】
示されている例を参照すると、図6は、マッシュアップフレームワーク104の例示的な環境600を示していることがわかる。例示されている環境600は、1つまたは複数のクライアント635を備えるか、または通信可能に結合されている。クライアント635は、ホステッドサービスとしてサーバーを通じてリモートで、またはサーバーのローカルで、図6に示されているマッシュアップフレームワーク104のコンポーネントにアクセスすることができる。特に、マッシュアップフレームワーク104は、クライアント635bに対して特定のユーザーインターフェイスエレメントとして表すことができる。ユーザーに提示されるユーザーインターフェイスの設計時エレメントは、ポートストア640aおよび接続ストア640bを構成するマッシュアップストア640を備えることができる。特に、マッシュアップストア640は、マッシュアップフレームワーク104の設計時サービスを公開するための中央アクセスポイントとして使用されるインターフェイスとすることが可能である。マッシュアップストア640、ポートストア640a、および接続ストア640bは、クライアントに対し提供され、クライアントによってアクセス可能なモジュールであり、マッシュアップフレームワーク104の基礎となるシステムのロジックを公開するためのアプリケーションプログラミングインターフェイス(API)として実装されうる。特に、マッシュアップストア640のコンポーネントは、ユーザーが利用可能なマッシュアップアプリケーションのポートおよび接続に関する情報を取得し、マッシュアップフレームワーク104によって提供されるロジックおよび機能に一般的にアクセスすることができるようにユーザーインターフェイスを介してユーザーにアクセス可能なサービスを提供する。例えば、マッシュアップストアAPIを使用することにより、特定のポートに対する可能な接続のリストを取ること、公開されているポートを識別するか、または探索すること、ポートを修正すること、ポートのパラメータにデータを書き込むこと、特定のポートもしくは接続に関連付けられた情報を取得すること、またはマッシュアップ環境を管理するためにマッシュアップフレームワーク104によって提供される他のツールもしくはサービスを利用することがユーザーにとって可能になる。
【００４４】
クライアント635は、マッシュアップフレームワーク104を通じて、マッシュアップアプリケーションなどのアプリケーション622にアクセスするか、または一般的に使用することもできる。これらのアプリケーションは、バックエンドサーバー上で、またはマッシュアップフレームワーク104を格納する同じサーバー上で実行されるホステッドアプリケーションであってもよい。アプリケーション622は、異なるアプリケーションタイプ622aおよび622bからなるものとしてよく、またクライアント635は、マッシュアップフレームワーク104を使用し、例えば、図4に関して上で説明されているような変換器エレメント430などを介して、マッシュアップフレームワーク104によって提供されるロジックを使用する異なるタイプのアプリケーション間の接続を作成もしくは修正することができる。
【００４５】
マッシュアップフレームワーク104は、さまざまなアプリケーション622およびそのコンポーネントをマッシュアップアプリケーション間の接続を識別し、作成するためのアクセス可能なポートとしてクライアント635に提示するためのメカニズムも備えることができる。特に、ポートプロバイダ610は、アプリケーション622に関連付けられたコンポーネントを識別して、クライアント635、またはシステムの他のコンポーネントに公開する。さらに、いくつかのポートに関連付けられた追加の更新されたパラメータもしくは接続などの、リポジトリ内の新しいコンテンツがマッシュアップフレームワーク104に導入されると、ポートプロバイダ610は、その新しいコンテンツをクライアント635から利用可能なポートのセットとして公開することができる。同様に、接続プロバイダ612は、マッシュアップフレームワーク104内の作成された接続に関連付けられた情報を公開して利用可能にする。ポートプロバイダ610および接続プロバイダ612は、クライアント635を含む、マッシュアップフレームワーク104の他のエレメントにポートまたは接続を公開するためにマッシュアップフレームワーク104内のコンテンツリポジトリによって実装されうるサービスプロバイダインターフェイス(SPI)として実装することができる。アプリケーション622のポートおよび接続は、マッシュアップフレームワーク104を通じて修正されるので、変更をポートリポジトリ660または接続リポジトリ662に保存することができ、これらのリポジトリは、マッシュアップフレームワーク104内でポートおよび接続を公開し、その永続性を維持するように構成されているサービスである。
【００４６】
さらに、ポートプロバイダ610および接続プロバイダ612のモジュールは、ポートプロバイダマネージャ650および接続プロバイダマネージャ652にそれぞれ結合されうる。ポートプロバイダマネージャ650および接続プロバイダマネージャ652は、ポートおよび接続はクライアント635による使用のためマッシュアップストア640に公開されるので、ポートプロバイダ610および接続プロバイダ612を管理する、特定のシステムもしくはアプリケーションから独立したマッシュアップフレームワーク104のコンポーネントであるものとしてよい。さらに、マッシュアップフレームワーク104は、ポートのローカルにおける表現を管理する役割を有する読み取り可能、書き込み可能なポートプロバイダであるものとしてよい、ポートプロバイダ654の内部実装を含むことができる。したがって、内部ポートプロバイダ654は、ポートプロバイダ650を通じてマッシュアップコンポーネントによって宣言されたパラメータを超える特定のポートに関連付けられた追加の構成データを管理することができる。例えば、内部ポートプロバイダ654は、ポートの新規インスタンスなどのポートに関連付けられた追加のメタデータ、ポートのインスタンスにおいて使用される変換器エレメント、ポートのパラメータにおける追加のタグの作成、またはポートプロバイダ650を通じてポートの初期宣言とは別に定義されている他のデータを追跡することができる。
【００４７】
マッシュアップフレームワーク104は、本開示で説明されている学習メカニズムのロジックを含む、発見もしくは提案エンジン670を備えることもできる。一般に、発見エンジン670は、クライアント635に提案する適切なポートおよび接続を決定するためにさまざまなアルゴリズムを適用する。これらのアルゴリズムは、ユーザーによって作成されるか、またはマッシュアップフレームワーク104の学習メカニズムを通じて自動的に作成された、いくつかのポートの間の接続の履歴に基づくことができる。提案されるポートおよび接続は、ポートもしくは接続に関連付けられたタグ付きパラメータ、またはマッシュアップコンポーネントに関連付けられた他のメタデータに基づいて決定することもできる。最後に、マッシュアップランタイムコントローラ680、マッシュアップランタイムオーサリング環境コントローラ682、またはランタイム接続リポジトリ684などのさまざまなコンポーネントを、マッシュアップフレームワーク104を使用して作成されたポート間のマッシュアップアプリケーションおよび接続の配置構成をランタイムで実行するために必要に応じてマッシュアップ環境内に組み込むことができる。一般に、ランタイムコンポーネントは、アプリケーションに固有のものであり、マッシュアップ接続を処理するJava(登録商標)スクリプトまたはクライアントサイドロジックからなり、接続に関連付けられたデータフローをトリガーし、ランタイムユーザーインターフェイスに対するレンダリングを行うことができる。
【００４８】
以上の図面およびそれに付随する説明は、例示的なプロセスおよびコンピュータ実装可能技術を示している。しかし、環境100(またはそのソフトウェアもしくは他のコンポーネント)では、これらのタスクおよび他のタスクを実行するために適した技術の使用、実装、または実行を考慮している。これらのプロセスは、例示のみを目的としており、説明されている、または類似の技術は、適切な時点において、例えば、同時に、個別に、または組み合わせて実行されうることは理解されるであろう。それに加えて、これらのプロセスにおけるステップの多くは、同時に、および/または図示されている順序と異なる順序で、実行されうる。さらに、環境100では、これらの方法が適切である限り、追加のステップを有する、より少ないステップを用いる、および/または異なるステップを用いるプロセスを使用することができる。
【００４９】
言い換えると、本開示はいくつかの実施形態および一般的に関連付けられた方法に関して説明されているが、これらの実施形態および方法の変形および置換は、当業者にとっては明らかなことであろう。したがって、例示的な実施形態の上記の説明が、本開示を定義したり、制約したりすることはない。他の変更、置換、および変形も、本開示の趣旨および範囲から逸脱することなく可能である。
【符号の説明】
【００５０】
100  環境
102  サーバー
104  マッシュアップフレームワーク
112  ネットワーク
117  インターフェイス
118  プロセッサ
120  メモリ
122  ホステッドアプリケーション
124  接続リポジトリ
126  ポートリポジトリ
128  学習メカニズム
135  クライアント
142  インターフェイス
144  クライアントアプリケーション
146  プロセッサ
150  メモリ
160a  GUI
160b  グラフィカルユーザーインターフェイス(GUI)
【図１】
2011204228.tif 000003
【図２】
2011204228.tif 000004
【図３】
2011204228.tif 000005
【図４】
2011204228.tif 000006
【図５】
2011204228.tif 000007
【図６】
2011204228.tif 000008
【外国語明細書】
2011204228.tif 000009
2011204228.tif 000010
2011204228.tif 000011
2011204228.tif 000012
2011204228.tif 000013
2011204228.tif 000014
2011204228.tif 000015
2011204228.tif 000016
2011204228.tif 000017
2011204228.tif 000018
2011204228.tif 000019
2011204228.tif 000020
2011204228.tif 000021
2011204228.tif 000022
2011204228.tif 000023
2011204228.tif 000024
2011204228.tif 000025
2011204228.tif 000026
2011204228.tif 000027
2011204228.tif 000028
2011204228.tif 000029
2011204228.tif 000030
2011204228.tif 000031
2011204228.tif 000032
2011204228.tif 000033
2011204228.tif 000034
2011204228.tif 000035
2011204228.tif 000036
2011204228.tif 000037
2011204228.tif 000038
2011204228.tif 000039
2011204228.tif 000040
2011204228.tif 000041
2011204228.tif 000042
2011204228.tif 000043
2011204228.tif 000044
2011204228.tif 000045
2011204228.tif 000046