(57)【要約】【課題】ユーザインタフェース操作の位置独立な実行を実現するシステム、方法、及びソフトウェアを提供する。【解決手段】この実行には、サーバ側コンピュータに通信可能に接続されたクライアント側ユーザインタフェースを介したユーザ対話の識別が含まれる。次いで、識別したユーザ対話をクライアント側又はサーバ側のどちら側で処理するかを動的に判断する。ユーザ対話がクライアント側で処理されるものであった場合、クライアント側アクションハンドラが呼び出される。ユーザ対話がサーバ側で処理されるものであった場合、サーバ側アクションハンドラによる対話の処理を要求する。【選択図】図１
2011118879.tif 000002
【特許請求の範囲】
【請求項１】
コンピュータによって実施される、ユーザインタフェース操作の位置独立な実行のための方法であって、
１つ以上のプロセッサによって実行される、
サーバ側コンピュータに通信可能に接続されたクライアント側ユーザインタフェースを介してユーザ対話を識別する段階と、
識別したユーザ対話をクライアント側又はサーバ側のどちらで処理するかを動的に判断する段階と、
ユーザ対話がクライアント側で処理されるものであった場合、クライアント側アクションハンドラを呼び出す段階と、
ユーザ対話がサーバ側で処理されるものであった場合、サーバ側アクションハンドラによる対話の処理を要求する段階と
を有することを特徴とするコンピュータ実施方法。
【請求項２】
サーバ側アクションハンドラによる対話の処理を要求する段階が、
ユーザ対話により同期的アクション又は非同期的アクションのどちらが引き起こされるかを判断する段階と、
判断結果に基づいて、同期的サーバ側アクションハンドラ又は非同期的サーバ側アクションハンドラのいずれか一方による対話の処理を要求する段階と
を含むことを特徴とする請求項１に記載のコンピュータ実施方法。
【請求項３】
識別したユーザ対話をクライアント側又はサーバ側のどちらで処理するかを動的に判断する段階が、規則リポジトリを利用して、識別したユーザ対話をクライアント側又はサーバ側のどちらで処理するかを判断する段階を含むことを特徴とする請求項１に記載のコンピュータ実施方法。
【請求項４】
規則リポジトリが、特定の対話にマッピングされた主キーを有することを特徴とする請求項３に記載のコンピュータ実施方法。
【請求項５】
規則リポジトリが、さまざまな対話アクションの動的な表現を備えた規則を有することを特徴とする請求項３に記載のコンピュータ実施方法。
【請求項６】
サーバ側コンピュータから、ユーザインタフェースコードを備えたクライアント側アクションハンドラを受信する段階をさらに有することを特徴とする請求項１に記載のコンピュータ実施方法。
【請求項７】
動的な判断の少なくとも一部分が、処理能力、ラウンドトリップ数、及び動作環境からなる複数の基準に従ってなされることを特徴とする請求項１に記載のコンピュータ実施方法。
【請求項８】
ユーザインタフェース操作の位置独立な実行のためのコンピュータプログラムを格納したコンピュータ可読媒体であって、
コンピュータプログラムは、コンピュータに、
サーバ側コンピュータに通信可能に接続されたクライアント側ユーザインタフェースを介してユーザ対話を識別する手順と、
識別したユーザ対話をクライアント側又はサーバ側のどちらで処理するかを動的に判断する手順と、
ユーザ対話がクライアント側で処理されるものであった場合、クライアント側アクションハンドラを呼び出す手順と、
ユーザ対話がサーバ側で処理されるものであった場合、サーバ側アクションハンドラによる対話の処理を要求する手順と
を実行させることを特徴とするコンピュータ可読媒体。
【請求項９】
サーバ側アクションハンドラによる対話の処理を要求する手順が、
ユーザ対話により同期的アクション又は非同期的アクションのどちらが引き起こされるかを判断する手順と、
判断結果に基づいて、同期的サーバ側アクションハンドラ又は非同期的サーバ側アクションハンドラのいずれか一方による対話の処理を要求する手順と
を含むことを特徴とする請求項８に記載のコンピュータ可読媒体。
【請求項１０】
識別したユーザ対話をクライアント側又はサーバ側のどちらで処理するかを動的に判断する手順が、規則リポジトリを利用して、識別したユーザ対話をクライアント側又はサーバ側のどちらで処理するかを判断する手順を含むことを特徴とする請求項８に記載のコンピュータ可読媒体。
【請求項１１】
規則リポジトリが、特定の対話にマッピングされた主キーを有することを特徴とする請求項１０に記載のコンピュータ可読媒体。
【請求項１２】
規則リポジトリが、さまざまな対話アクションの動的な表現を備えた規則を有することを特徴とする請求項１０に記載のコンピュータ可読媒体。
【請求項１３】
コンピュータプログラムが、コンピュータに、
サーバ側コンピュータから、ユーザインタフェースコードを備えたクライアント側アクションハンドラを受信する手順をさらに実行させることを特徴とする請求項８に記載のコンピュータ可読媒体。
【請求項１４】
動的な判断の少なくとも一部分が、処理能力、ラウンドトリップ数、及び動作環境からなる複数の基準に従ってなされることを特徴とする請求項８に記載のコンピュータ可読媒体。
【請求項１５】
ユーザ対話により複数のイベントサイクルが引き起こされる場合、識別したユーザ対話をクライアント側又はサーバ側のどちらで処理するかを動的に判断する手順が、イベントサイクル毎に行われることを特徴とする請求項８に記載のコンピュータ可読媒体。
【請求項１６】
アプリケーション間通信インフラストラクチャを想定した構成を介して通信を行うためのコンピュータシステムであって、
クライアント側ユーザインタフェース及びクライアント側アクションハンドラを格納したメモリと、
１つ以上のプロセッサと
を具備し、
１つ以上のプロセッサは、実行時に、
サーバ側コンピュータに通信可能に接続されたクライアント側ユーザインタフェースを介してユーザ対話を識別する手順と、
識別したユーザ対話をクライアント側又はサーバ側のどちらで処理するかを動的に判断する手順と、
ユーザ対話がクライアント側で処理されるものであった場合、クライアント側アクションハンドラを呼び出す手順と、
ユーザ対話がサーバ側で処理されるものであった場合、サーバ側アクションハンドラによる対話の処理を要求する手順と
を実行することを特徴とするコンピュータシステム。
【請求項１７】
サーバ側アクションハンドラによる対話の処理を要求する手順が、
ユーザ対話により同期的アクション又は非同期的アクションのどちらが引き起こされるかを判断する手順と、
判断結果に基づいて、同期的サーバ側アクションハンドラ又は非同期的サーバ側アクションハンドラのいずれか一方による対話の処理を要求する手順と
を含むことを特徴とする請求項１６に記載のコンピュータシステム。
【請求項１８】
メモリが、規則リポジトリをさらに格納し、
識別したユーザ対話をクライアント側又はサーバ側のどちらで処理するかを動的に判断する手順が、規則リポジトリを利用して実行されることを特徴とする請求項１６に記載のコンピュータシステム。
【請求項１９】
規則リポジトリが、特定の対話にマッピングされた主キーを有することを特徴とする請求項１８に記載のコンピュータシステム。
【請求項２０】
規則リポジトリが、さまざまな対話アクションの動的な表現を備えた規則を有することを特徴とする請求項１８に記載のコンピュータシステム。
【請求項２１】
１つ以上のプロセッサが、サーバ側コンピュータから、ユーザインタフェースコードを備えたクライアント側アクションハンドラを受信する手順をさらに実行することを特徴とする請求項１８に記載のコンピュータシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
この開示は、ユーザインタフェース操作の位置独立な実行を実現するシステム、方法、及びソフトウェアに関する。例えば、本開示は、クライアント側操作処理とサーバ側操作処理との間の切換を多くの場合リアルタイムで行うことを容易にするフレームワークを提供する。
【背景技術】
【０００２】
グラフィカルユーザインタフェース（ＧＵＩ）により、コンピュータのユーザは、コンピュータシステムのコントロールと、表示インタフェースを介したコンピュータシステム上でのデータ入力及び修正とを行うことができる。いくつかのアプリケーションは、クライアントサーバ設備で動作するウェブブラウザなどのクライアントプログラム内でＵＩを実現する。典型的に、ＵＩは、ユーザによる操作が可能なコントロール手段であり、アプリケーションとの対話を行う。コントロール手段には、ボタン、メニュー、プルダウンメニュー、ダイアログボックス、及びスクロールバー、並びに、ユーザによるアプリケーションデータの閲覧、アプリケーション機能の呼び出し、及びその他のアプリケーション対話を可能とするあらゆるコントロール手段が含まれる。各コントロール手段は、関連するコントロール状態を有し、かつアプリケーションは、関連するＵＩ状態を有する。コントロール状態及びＵＩ状態は、ユーザ対話に基づいて変化することがある。典型的に、ＧＵＩ内でのナビゲーションは、マウスなどのポインティングデバイスをアクティブな要素へ動かすことや要素上でのクリックによって要素をアクティブ化することによって引き起こされる。あるいは、キーボードデバイスによるさまざまなキーストローク（例えば、「ｔａｂ」キーの押下）により、ユーザは、ＧＵＩ要素間を横断できる。
【０００３】
ユーザインタフェース（又はウェブ）アプリケーションフレームワークの開発には、しばしば、操作又はユーザ対話（例えば、ユーザがリンク又はボタンをクリックして操作をトリガすること）がクライアント側（おそらくは、ブラウザ内で動作するＪａｖａＳｃｒｉｐｔフレームワークを用いる）又はサーバ側（おそらくは、ウェブアプリケーションサーバ上で動作するＪａｖａ（登録商標）フレームワークを用いる）のどちら側で取り扱われるべきかについての熟考が伴う。アプリケーションの視覚的表示は、クライアントサーバ設備、例えば、ウェブブラウザ内で動作するクライアントプログラムにアプリケーションのＵＩ状態をレンダリングすることによって生成可能である。
【発明の概要】
【課題を解決するための手段】
【０００４】
本開示の一態様は、ユーザインタフェース操作又は対話の位置独立な実行を目的とする。例えば、ユーザインタフェース操作の位置独立な実行のためのコンピュータプログラムは、コンピュータ可読命令を格納した有形の記憶媒体からなる。一実施態様において、命令は、サーバ側コンピュータに通信可能に接続されたクライアント側ユーザインタフェースを介してユーザ対話を識別するように機能する。次いで、命令は、識別したユーザ対話をクライアント側又はサーバ側のどちらで処理するかを動的に判断する。いくつかの場合には、動的な判断のうちの少なくとも一部分が、処理能力、ラウンドトリップ数、及び動作環境を含む複数の基準に従ってなされる。そして、ユーザ対話がクライアント側で処理されるものであった場合、格納された命令は、クライアント側アクションハンドラを呼び出す。逆に、ユーザ対話がサーバ側で処理されるものであった場合、命令は、サーバ側アクションハンドラによる対話の処理を要求する。
【０００５】
いくつかの実施態様は、以下の複数の特徴のうちの１つ以上を実現又は利用する。例えば、格納された命令がサーバ側アクションハンドラによる対話の処理を要求する手順は、ユーザ対話により同期的アクション又は非同期的アクションのどちらが引き起こされるかを判断する手順と、判断結果に基づいて、同期的サーバ側アクションハンドラ又は非同期的サーバ側アクションハンドラのうちのいずれか一方を要求する手順とを含む。別の例では、格納された命令は、規則リポジトリ又は他の類似のロジックを用いて、識別したユーザ対話をクライアント側又はサーバ側のどちらで処理するか判断する。この例示的な規則リポジトリは、主キー、すなわち、特定の対話に直接マッピングされたキーを有するか、又は、さまざまな対話アクションの動的な表現を備えた規則を有する。さらに別の例では、格納された命令は、ユーザインタフェースを備えたクライアント側アクションハンドラをサーバ側コンピュータから受信するようにさらに機能する。ユーザ対話により複数のイベントサイクルが引き起こされる場合、識別したユーザ対話をクライアント側又はサーバ側のどちらで処理するかの動的な判断は、イベントサイクル毎に発生する。
【０００６】
コンピュータによって実行されるソフトウェアが個々のデータを処理及び変換するものとして記載したが、本態様の一部分又は全体は、コンピュータによって実施される方法であってよく、又は、個々のシステム又は上記の機能を実行するためのその他のデバイスにさらに含まれてもよい。これら及びその他態様と本開示の各実施形態との詳細は、添付の図面及び以降の記載によって説明される。本開示のその他の特徴、目的、及び利点は、明細書及び図面の記載と、特許請求の範囲とから明らかとなる。
【図面の簡単な説明】
【０００７】
【図１】本開示の一実施形態によるユーザインタフェース操作又は対話の位置独立な実行を提供する例示的なシステムを図示する。
【図２】図１に示された通信線の例示的な構成である。
【図３】図２に示された通信線の例示的なインスタンスである。
【図４】図１に示されたシステムを用いた実行時の例示的な通信線切換イベントサイクルである。
【図５】図１に記載されたシステムのさまざまな利用事例を図示する。
【図６Ａ】本開示の一実施形態による図５の利用事例の例示的なフローを図示する。
【図６Ｂ】本開示の一実施形態による図５の利用事例の例示的なフローを図示する。
【図６Ｃ】本開示の一実施形態による図５の利用事例の例示的なフローを図示する。
【図７】本開示の一実施形態による例示的な通信線切換実行時シーケンスを図示する。
【発明を実施するための形態】
【０００８】
本開示の一形態は、ユーザインタフェース操作又は対話の位置独立な実行を提供するシステムを対象とする。具体的には、システムは、「クライアント側」問い合わせと「サーバ側」問い合わせとを対象としたアドレス指定を臨機応変に行うためのフレームワークを提供する。換言すれば、リクエスト、特に、外部コンテンツに対するリクエストの起点をコントロールするためのエンタープライズソリューションが求められている。例えば、サービス提供者は、顧客マシーンから又はホスティング環境からのサービスへのアクセスを制限してよい。別の例では、ソリューションは、外部ウェブコンテンツが、クライアントブラウザによって直接取り出されるのではなく、サーバ側から取り出されるというようなセキュリティ（これは、データサイズのコントロール、ブラックリストを用いた疑わしいサイトのフィルタアウト等に役立つ）を実現する。システムは、シナリオの大部分でサーバ側アプローチを実現する。さらに、特殊な実行時シナリオでは、システムは、そのシナリオに適するか又は特殊な基準を満たす場合にクライアント側でのユーザ対話を実行するためのメカニズムを実現する。これらの基準には、特に、システム又は全操作のパフォーマンスを改善するか否か、ラウンドトリップを削減するか否か、又は取り扱いか複雑過ぎないか否かが含まれる。多くの場合、対話を実行するためにどのモデルを用いるかについての決定は、フレームワークによって、開発者に意識させないように選択される（すなわち、開発者は、クライアント側アプローチ又はサーバ側アプローチのどちらを使用するかの決定を行わない）。実行中のシナリオ／アプリケーションに応じて、フレームワークは、どちらのアプローチを実施するかを動的に決定する。また、これは、シナリオ／アプリケーションが実行されている環境によって決まることもある（例えば、アプリケーションがポータル内で実行されている場合には違いがあってよい）。要するに、システムは、定義を事前に実行すること（又は通例とすること）ができない代わりに、個別的に決定を行う能力と、特定の状況又はシナリオに最適なソリューションとを提供する。そのようにして、ある構成において、このインフラストラクチャは、クライアント側アプローチ又はサーバ側アプローチに限定されることがなく、特定のシステム構成（landscape）に限定されることがなく、かつどのようなＵＩ技術にも限定されることがない。
【０００９】
その一例が、ラウンドトリップの分野での最適化である。この例では、ユーザは、別のアプリケーションへのナビゲートをトリガしたいと考えている。そのシナリオに応じて、これは、直接クライアント側コールを介して行われるか（例えば、単純なシナリオでは、アプリケーションは、比較的スタンドアロンなアプリケーションとして操作を実行できる）、又は、サーバラウンドトリップを介して行われる（例えば、より複雑なシナリオでは、フレームワークは、ナビゲーションをトリガする前に、同一ページ上で動作する他のアプリケーション間で整合を取る手助けをする）。１つの可能性だけを提供する代わりに、フレームワークは、ナビゲーションをトリガするために１つのＡＰＩを提供でき、しかるに、全体では、フレームワークは、このナビゲーションをどこで（すなわち、クライアント側又はサーバ側で）実行するかの決定を行う。
【００１０】
別の例は、マッシュアップの分野（すなわち、「通信線（wire）」を介して接続され、単純な通信を行ういくつかの小さな「アプリケーション」又は「チップ」の組み合わせ）にあり、これには、サーバ側又はクライアント側のいずれか一方に基づく構成要素又は他の技術が含まれる。マッシュアップを構築するためには、典型的に、イベントベースの通信インフラストラクチャに基づいた「通信線切換（wiring）」が行われる。純粋なクライアント側ベースのマッシュアップ環境が存在してよく、かつサーバベースの環境が存在する。静的手段で対話の処理位置を決定する代わりに、上記フレームワークは、別個の条件に従って動作を実行してよい。これらの例示的な条件には、どのタイプのアプリケーションがマッシュアップシナリオ及び現在の配線の一部分となるのか、という条件が含まれる。例えば、アプリケーションは、クライアント側ベースのアプリケーションだけ、（クライアントフロントエンドを備えた）サーバベースのアプリケーションだけ、又はその組合せを含み得る。不要なラウンドトリップの回避を助けるために、フレームワークは、（例えば、いくつかの他のクライアント側アプリケーションのいくつかの状態を変更するコントロール手段をユーザがクリックした場合に）クライアント側でのユーザ対話を実行する。さもなければ、フレームワークは、例えば、ｉ）ユーザ対話が複雑すぎる動作をもたらすか否か、ｉｉ）一貫した画面表示を保証することが困難であり、それによって、動作が主にサーバ側で行われることをリクエストするか否か、又は、ｉｉｉ）合成イベントサイクルのような（クライアント側又はサーバ側での）雑多な実行時技術を用いたマッシュアップシナリオが必要とされるか否かを判断する。
【００１１】
図示した実施形態に戻ると、図１は、アプリケーション間通信インフラストラクチャを想定した構成を実現する例示的なシステム１００を示す。システム１００は、１つ以上のネットワークによって隔てられた分散型のクライアント／サーバ型システムであってよい。そのような実施形態では、データは、任意の標準的又は専用の暗号化アルゴリズム用いて暗号化形式でやりとり又は格納されてよい。しかしながら、システム１００は、ローカルエリアネットワーク又はサブネットを横断するような専用エンタープライズ環境、又は、この開示の範囲から逸脱することのないあらゆる適切な環境にあってよい。システム１００は、サーバ１０２と、１つ以上のクライアント１０４と、１つ以上のネットワーク１１２とを具備するか、又はそれらと通信可能に接続される。
【００１２】
サーバ１０２は、システム１００に関連したデータの受信、送信、処理、及び格納を行う機能を有した電子演算デバイスを具備する。全体として、図１は、本開示で使用されてよい複数のコンピュータのほんの一実施例を提供するに過ぎない。通常、各コンピュータは、あらゆる適切な処理デバイスを包含するよう意図されている。例えば、図１には、本開示で使用される１つのサーバが図示されているが、システム１００は、サーバ以外のコンピュータやサーバプールを用いて実現することもできる。実際には、サーバは、任意のコンピュータ又は処理デバイス、例えば、ブレードサーバ、汎用パーソナルコンピュータ（ＰＣ）、マッキントッシュ（登録商標）、ワークステーション、ＵＮＩＸ（登録商標）ベースのコンピュータ、ＰＤＡ、オフライン機能を提供するためのスマートフォン（デバイス内の小設置面積サーバ）、又はその他の適切なデバイスであってよい。換言すれば、本開示は、汎用コンピュータ以外のコンピュータのほか、従来のオペレーティングシステムを有さないコンピュータをも想定したものである。サーバは、Ｌｉｎｕｘ（登録商標）、ＵＮＩＸ、Ｗｉｎｄｏｗｓ（登録商標）Ｓｅｒｖｅｒ、又はその他の適切なオペレーティングシステムを含む任意のオペレーティングシステムを実行するように構成される。また、一実施形態によれば、サーバは、ウェブサーバ及び／又はメールサーバを具備するか、又は、それらと通信可能に接続される。
【００１３】
サーバは、ローカルメモリを具備してよい。メモリは、任意の有形のコンピュータ可読メモリであり、これには、揮発性又は不揮発性メモリ形式をとる任意のメモリ又はデータベースモジュールが含まれてよい。そのようなメモリには、これらに限定されないが、磁気媒体、光学媒体、ランダムアクセスメモリ（ＲＡＭ）、リードオンリーメモリ（ＲＯＭ）、リムーバブル媒体、又はその他の適切なローカル又はリモートメモリ構成要素が含まれる。メモリは、以下で詳細に記載されるように、他の構成要素の中でも特に、ユーザインタフェース操作又は対話の位置独立な実行のためのフレームワークと、複数のアプリケーションとを格納できる。さらに、メモリには、１つ以上の動作環境が格納されてよい。また、メモリには、例えば、環境及び／又はアプリケーション記述データ、１つ以上のアプリケーションのためのアプリケーションデータのほか、ＶＰＮアプリケーション又はサービスを起動するデータ、ファイアウォールポリシ、セキュリティログ又はアクセスログ、プリントファイル又はその他のリポートファイル、ハイパーテキストマークアップランゲージ（ＨＴＭＬ）ファイル又はテンプレート、関係する又は関係のないソフトウェアアプリケーション又はサブシステムなど、他のタイプのデータが格納されてもよい。したがって、メモリは、１つ以上のアプリケーションに基づくローカルデータリポジトリなどのデータ格納庫と見なすこともできる。実際には、位置独立なフレームワークは、サーバ側とクライアント側（クライアント側ロジック及びディスパッチ）との両方に属してよい。
【００１４】
具体的には、アプリケーション間通信インフラストラクチャを想定した構成を用いる又はその利用を容易にする機能を有したフレームワークの任意のアプリケーション、プログラム、モジュール、プロセス、又はその他のソフトウェアは、それ自体はソフトウェアである。特定の実施形態に関係なく、用語「ソフトウェア」には、ソフトウェア、ファームウェア、配線型又はプログラム型ハードウェア、又は有形のコンピュータ可読媒体上に実現されたそれらの任意の組み合わせが含まれる。実際には、形式変換モジュール１３０が、Ｃ、Ｃ＋＋、Ｊａｖａ、Ｖｉｓｕａｌ Ｂａｓｉｃ、アセンブラ、Ｐｅｒｌ、任意の適切なバージョンの４ＧＬなどを含む任意の適切なコンピュータ言語で記述又は表現されてよい。例えば、形式変換モジュール１３０は、その一部分がＥｎｔｅｒｐｒｉｓｅ Ｊａｖａ Ｂｅａｎｓ（ＥＪＢ）として実現されるか、又は、Ｊ２ＥＥ（Java 2 Platform, Enterprise Edition）、ＡＢＡＰ（Advanced Business Application Programming）オブジェクト、又はマイクロソフト社の．ＮＥＴなどの異なるプラットフォームに実行時形態を生成する機能を有した設計時コンポーネントとして実現される、合成アプリケーションであってよい。
【００１５】
いくつかの実施形態によれば、通信は、１つ以上のＸＭＬ（eXtensible Markup Language）文書ファイル又はその一部分、又は、記述言語、スクリプト言語、又は拡張言語のＳＯＬ（Structured Query Language）ステートメント又はスクリプトの形式を取る。例えば、通信設備１４５は、テキストファイル、ＶＳＡＭ（Virtual Storage Access Method）ファイル、フラットファイル、Ｂｔｒｉｅｖｅファイル、カンマ区切り（ＣＳＶ）ファイル、内部変数、又は１つ以上のライブラリ形式によるさまざまなデータ構造でフォーマット、格納、又は定義される。ＸＭＬのほかにも、記述言語の別の例としては、ＪａｖａＳｃｒｉｐｔ、ＣＳＳ（Cascading Style Sheets）、ＨＴＭＬ、ＡＪＡＸ（Asynchronous JavaScript and XML）などがある。
【００１６】
また、サーバは、プロセッサを具備してよい。プロセッサは、上記のソフトウェアなどの命令を実行するとともに、サーバの動作を実行するためのデータ操作を行う。例えば、プロセッサは、中央演算装置（ＣＰＵ）、ブレード、特定用途集積回路（ＡＳＩＣ）、又は利用者書込可能ゲート配列（ＦＰＧＡ）である。当然ながら、特殊な要求に応じてマルチプロセッサが使用されてよく、プロセッサに言及する際には、マルチプロセッサが適用可能であることも意味する。
【００１７】
ネットワーク１１２は、サーバコンピュータと、クライアント１０４などの別のローカル又はリモートコンピュータと間の無線又は有線通信を容易にする。ネットワークは、エンタープライズネットワーク又はセキュアネットワークの全体又は一部分であってよい。別の例では、ネットワークは、有線又は無線リンクを介したサーバとクライアントとの間だけのＶＰＮ接続である。そのような例示的な無線リンクは、８０２．１１ａ、８０２．１１ｂ、８０２．１１ｇ、８０２．２０、ＷｉＭＡＸ、又はその他の多くの規格であってよい。ネットワークを単一のもの又は連続したものとして図示したが、ネットワークは、ネットワークの少なくとも一部分がサーバと少なくとも１つのクライアントとの間の通信を容易にする限りは、この開示の範囲から逸脱することなく、いくつかのサブネット又は仮想ネットワークに論理的に分割されてもよい。例えば、サーバは、１つのサブネットを介してリポジトリと通信可能に接続されると同時に、別のネットワークを介して特定のクライアントと通信可能に接続される。換言すれば、ネットワークは、システム１００中のさまざまな演算構成要素間の通信を容易にする機能を有した任意の内部又は外部ネットワーク、複数のネットワーク、サブネットワーク、又はそれらの組み合わせを包含する。ネットワークは、例えば、インターネットプロトコル（ＩＰ）パケット、フレームリレーフレーム、非同期転送モード（ＡＴＭ）セル、音声、動画、データ、及び複数のネットワークアドレス間のその他の適切な情報のやりとりを行う。ネットワークには、１つ以上のローカルエリアネットワーク（ＬＡＮ）、ラジオアクセスネットワーク（ＲＡＮ）、都市エリアネットワーク（ＭＡＮ）、ワイドエリアネットワーク（ＷＡＮ）、インターネットのような既知の大域コンピュータネットワークの全体又は一部分、及び／又は、１つ以上の位置での任意の通信システム又は複数の通信システムが含まれてよい。ある実施形態では、ネットワークは、特定のローカル又はリモートクライアント１０４を介してユーザアクセス可能なセキュアネットワークである。
【００１８】
クライアント１０４は、任意の通信リンクを用いて、サーバ又はネットワークに接続する機能又はそれらと通信を行う機能を有した任意の演算デバイスであってよい。具体的には、各クライアントは、少なくとも１つのＧＵＩを有するか又は実行するとともに、システム１００に関連したあらゆる適切なデータの受信、送信、処理、及び格納を行う機能を有した電子演算デバイスを具備する。さらに、クライアントは、有形のメモリと、１つ以上のプロセッサとを具備する。当然ながら、サーバと通信可能に接続されたいくつものクライアントが存在してよい。さらに、用語「クライアント」、「ローカルマシン」、及び「ユーザ」は、この開示の範囲から逸脱することなく、必要に応じて同一の意味を有するものとして使用できる。さらに、各図において、各クライアントは、１人のユーザに使用されるものとして記載した。しかしながら、この開示は、複数のユーザが１つのコンピュータを使用すること、又は、１人のユーザが複数のコンピュータを使用することも想定している。この開示中で用いられるように、クライアントは、パーソナルコンピュータ、タッチスクリーン端末、ワークステーション、ネットワークコンピュータ、公衆電話（キオスク）、無線データポート、スマートフォン、パーソナルデータアシスタント（ＰＤＡ）、これら又はその他のデバイス中の１つ以上のプロセッサ、又は、その他の適切な処理デバイスを包含することを意図する。例えば、クライアントは、外部又は安全でないネットワークと無線接続を行う機能を有したＰＤＡである。別の例では、クライアントは、情報を受け取る機能を有した、例えば、キーパッド、タッチスクリーン、マウス、又はその他のデバイスなどの入力デバイスと、サーバ又はクライアントの動作に関連した、デジタルデータ、視覚情報、又はＧＵＩを含む情報を伝える出力デバイスとを具備したラップトップコンピュータである。入力デバイス及び出力デバイスの両方には、例えば、磁気コンパクトディスク、ＣＤ−ＲＯＭ、又はその他の適切な媒体などの固定の又は取り外し可能な記憶媒体が含まれ、ディスプレイ、すなわち、クライアントのＧＵＩ又はアプリケーションインタフェース部分を介して、クライアントのユーザからの入力の受信と、クライアントのユーザへの出力の提供との両方を行う。
【００１９】
ＧＵＩは、クライアントのユーザがアプリケーション又はその他のトランザクションデータの閲覧などの任意の適切な目的のためにシステム１００の少なくとも一部分とやりとり可能となる機能を有したグラフィカルユーザインタフェースであってよい。例えば、ＧＵＩは、多くの場合、複数のページ又はコンテナを介して、１つ以上のアプリケーション又はアプリケーションインスタンス間でやりとりされているビジネス情報のさまざまな表示を提供できる。一般に、ＧＵＩは、システム１００によって提供されるデータ又はシステム１００内でやりとりされるデータの効果的かつユーザフレンドリーな表示を特定のユーザに提供する。ＧＵＩは、ユーザによって操作される対話フィールド、プルダウンリスト、及びボタンを含むカスタマイズ可能な複数のフレーム又はビューを有してよい。また、ＧＵＩは、複数のポータル又はダッシュボードを表示してもよい。例えば、ＧＵＩは、ユーザが１つ以上のモジュールに対してサーチパラメータを入力及び定義することを可能とするセキュアなウェブページを表示する。当然ながら、用語「グラフィカルユーザインタフェース」は、単数形又は複数形で用いられ、１つ以上のグラフィカルユーザインタフェースと、特定のグラフィカルユーザインタフェースの複数の表示のそれぞれとを表現できる。実際には、ＧＵＩへの言及は、アプリケーションのフロントエンド又はコンポーネントへの言及のほか、この開示の範囲から逸脱することなく、必要に応じて、クライアントを介してアクセス可能な特定のインタフェースへの言及をも指す。したがって、ＧＵＩは、システム１００中で情報を処理して結果をユーザへ効果的に表示する、一般的なウェブブラウザ又はタッチスクリーンなどの任意のグラフィカルユーザインタフェースを包含する。サーバは、ウェブブラウザ（例えば、マイクロソフトインターネットエクスプローラ又はネットスケープナビゲータ）を介して、クライアントからのデータを受け取り、ネットワークを使用して、ブラウザへ適切なＨＴＭＬ又はＸＭＬ応答を返すことができる。
【００２０】
クライアント側には、クライアントアクションディスパッチャ（Client Action Dispatcher，ＣＡＤ）、又は、イベントバス、又は、フレームワーク及びアプリケーションロジックが存在してよい。ある構成では、これは、ユーザによって（例えば、ボタンの押下、テーブル行の選択などにより）トリガされるユーザ対話のための１つの入力ポイントとなる。ＣＡＤは、アクションを取得（get）するとともに、規則エンジンを用いてその分析を行う。規則エンジンは、規則リポジトリにアクセスする機能を有する。規則リポジトリには、「アクション」がどのように処理されるべきかという規則が格納されている。最も単純な場合には、規則は、単純なマッピング（例えば、「ボタンのクリック→サーバコール」）であるが、規則を動的に表現して、アクションがどのように処理されるべきかを決定してもよい。そして、ＣＡＤは、必要とされるアクションハンドラにアクションを渡す。具体的には、通常、通信線情報はサーバに格納されているものの、実行時プロセッサ（コントローラ）は、クライアント側及び／又はサーバ側に実装される可能性があり、クライアント側イベントサイクルとサーバ側イベントサイクルとの差を緩和する役目を果たす。例えば、図４は、サーバ側の実装を示す。図１に戻ると、図示された構成は、補完的なクライアント側実行時コンポーネントを示しており、これは、ソリューション環境にとらわれないようにすることへの助けとなる（これは、１つのイベントサイクル中にクライアント側ＵＩコンポーネントとサーバ側ＵＩコンポーネントとの両方で取り扱い可能であることを意味する）。
【００２１】
クライアント側コールは、クライアントコールアクションハンドラ（又はその他の関係するモジュール）によって直接取り扱われる。サーバ側コールでは、ＣＡＤ（又はその他の関係するモジュール）が、同期コールと非同期コールとを識別するとともに、例えば、適切な同期ハンドラ及び非同期ハンドラにリクエストを送信する。また、サーバ側には、アプリケーションが動作する特別なアプリケーションコンテナが存在してよい。次いで、チャネル毎に、アプリケーションは、サーバ側アクションハンドラ（上記の実施例では、一方は同期コールのためのものであり、他方は非同期コールのためのものである）を介して、クライアント側からの呼び出しを受けることができる。
【００２２】
マッシュアップ構成の動作の一実施例では、図１に例示したように、ソースからのＲａｉｓｅＥｖｅｎｔコールが、クライアント側イベントバスによって識別される。ＣＡＤは、サーバ側イベントバスへのＰｒｏｃｅｓｓＥｖｅｎｔコールをトリガする。これは、ｆｒｏｍＪＳＯＮｔｏＥｖｅｎｔを介して、イベント並直列変換部／直並列変換部を呼び出す。サーバ側イベントバスは、ＰｒｏｃｅｓｓＷｉｒｅｓを介して、マッシュアップインフラストラクチャ（おそらくは、通信線切換プロセッサ）と交信し、これは、ＲｅｔｕｒｎＥｖｅｎｔを引き起こす。次いで、このイベントは、ｔｏＪＳＯＮを介して、イベント並直列変換部／直並列変換部によって処理され、ＲｅｔｕｒｎＩｎＥｖｅｎｔｓを介して、クライアント側イベントバスに返される。次いで、ＣＡは、ｏｎＥＶＥＮＴを介して、ターゲットにイベントを送信する。
【００２３】
図２は、図１に示された通信線の例示的な構成２００である。通信切換定義オブジェクトの構成には、変換部が含まれ、これは、ソースとターゲットチップ定義ポートとの間の実際の通信線切換変換データを表す。換言すれば、変換部は、実質的に互換性の無い構成要素が互いに通信し情報を交換できるようにする手助けを行う。変換部は、特定のオブジェクトクラス内で実現される定義に従って情報の変換を行ってよい。処理を容易とするために、単純な変換がクライアント側で行われてよいが、ビジネスロジック（サービスコール）を用いたより複雑な変換がサーバ側で行われてもよい。そのようにして、ハイブリッドなソリューションは、データのこのような混合フローを実現できる。また、この実施例では、通信線定義２００は、１つ以上の出力要素、１つの入力要素、１つ以上の入力フィールド、及び１つ以上の出力フィールドを有する。いくつかの場合では、通信線切換持続性は、実行時、実行時オーサリング、及び管理者シナリオに対して最適化が行える。実行時プロセスにおいて、ソースからのアウトイベントは、ターゲットへのインイベントに変換される。通信線切換データは、転送されるとともに、コンテナ（ワークスペース／ページ）に関連付けられてよい。それによって、その有効期限を、コンテナの有効期限で管理できる。当然ながら、これは、通信線の要約図であり、それによって、派生クライアント側ベース表現（ＪａｖａＳｃｒｉｐｔベース）と、派生サーバ側ベース表現（ｊａｖａベース）とが存在する。これら２つは、同一の定義を共存させ、共有する。この構成は、同一のメタデータに基づいて、クライアント側イベントシナリオ及びサーバ側イベントシナリオを実行すると同時に、環境に応じて個々に変換部及びイベントハンドラを起動させる手助けを行う。
【００２４】
通信線定義は、大域リポジトリ（又はその他の持続手段）に格納されてよく、システム上に生成されている通信線を表わす。いくつかの場合では、これらの定義は、異なるシステム中のさまざまな通信線切換インスタンスによってアクセス可能となる。新しいインスタンスが追加されたとき、通信線定義は、提案メカニズムによって検索されてよい。
【００２５】
図３は、図２に示された通信線の例示的なインスタンス３００である。このインスタンス３００は、ソースチップインスタンスの出口ポートとターゲットチップインスタンスの入口ポートとを特定の通信線定義にマッピングする。いくつかの構成では、インスタンスは、特定のコンテナ（ページ／ワークスペース）に関連付けられるとともに、ランタイム中の対応する通信線定義への高速なアクセスを提供する助けとなる。先に記載した通り、通信線切換インスタンスの有効期限は、しばしば、コンテナに結びついている。例えば、ページが消去／複写／転送されたとき、典型的に、そのページの通信線切換済インスタンスは、同一の方法で取り扱われなければならない。これを達成する手助けをするために、一実施形態では、属性を表わしたＸＭＬとして、ページ下に通信線インスタンスをローカルに格納する。この実施形態の一実施例を以下に示す。
【００２６】
【数１】
2011118879.tif 000003
【００２７】
この実施例では、通信線切換マップは、実行時に、メモリ中の専用データ構造体に分解され、関連する通信線切換データへの高速アクセスを提供する。当然ながら、この実施例は、例示のみを目的とし、あらゆる言語、形式、又はその他の詳細な実装が必要に応じて利用できる。
【００２８】
図５は、図１に示されたシステムのさまざまな利用事例を示す。詳細には、図は、３つの利用事例、すなわち、実行時、実行時オーサリング、及び管理を表わし、これらのそれぞれは、図６でさらに詳細に説明される。特に、図６Ａは、通信線の実行時処理を実現するための例示的なコンポーネント及びデータフロー６００を表わし、図６Ｂは、通信線の実行時オーサリングを実現するための例示的なコンポーネント及びデータフロー６３０を表わし、かつ図６Ｃは、通信線の管理を実現するための例示的なコンポーネント及びデータフロー６６０を表わす。
【００２９】
図７は、データフロー６００などの本開示の一実施形態による例示的な通信線切換実行時シーケンス７００を示す。表示の明瞭化のために、以下の記載は、一般に、図１に示された環境下での方法７００を説明する。しかしながら、方法７００は、必要に応じて、その他の適切なシステム、環境、又は複数のシステム及び環境の組み合わせによって可換的に実行されてもよいということを理解されたい。
【００３０】
特に、実行時シーケンス７００は、ステップ７０２において、ＷｉｒｉｎｇＲｕｎｔｉｍｅＥｘｔｅｎｓｉｏｎ ６１０がＰｒｏｃｅｓｓＷｉｒｅｓメソッドを介してＷｉｒｉｎｇＰｒｏｃｅｓｓｏｒ ６２０を呼び出すことを示す。次いで、ＷｉｒｉｎｇＰｒｏｃｅｓｓｏｒは、ステップ７０４において、おそらくは、ｉｎｉｔ（）メソッドコールを介して、ｉＬｏｃａｌＷｉｒｅＩｎｓｔａｎｃｅＭａｎａｇｅｒ ６３０を呼び出す。環境又はワークスペースアクセスモジュール６４０は、ステップ７０６において、ｃｒｅａｔｅＷｉｒｉｎｇＭａｐＦｏｒＰａｇｅ（）を介して呼び出され、ステップ７０８において、ＷｉｒｉｎｇＭａｐを生成して返す。ＷｉｒｉｎｇＰｒｏｃｅｓｓｏｒは、ステップ７１０において、ｉＬｏｃａｌＷｉｒｅＩｎｓｔａｎｃｅＭａｎａｇｅｒモジュールと交信することによって、通信線切換インスタンス３００を決定する。通信線切換インスタンス３００は、ステップ７１２で返される。これらのインスタンスは、アレイ、オブジェクト、又はリストなどの任意の適切な通信又はデータ構造体として返されてよい。次いで、ＷｉｒｉｎｇＰｒｏｃｅｓｓｏｒは、ステップ７１４及びステップ７１６において、環境又はワークスペースアクセスモジュールと交信し、特定の通信線切換インスタンスのそれぞれがこの特定のアクションに関連しているか否かを決定する。次いで、ＷｉｒｉｎｇＰｒｏｃｅｓｓｏｒは、ステップ７１８において、パラメータを変換し、ステップ７２０において、インポートイベントを返す。
【００３１】
本開示は、開示したさまざまな方法及び技術に関連した例示的な技術を図示するために、複数のデータ及び処理フローと添付の図面とを用いたが、システム１００は、これら及びその他のタスクを実行するために任意の適切な技術を用いること又は実現することを想定する。当然ながら、これらの技術は、例示のみを目的として示されたのであって、記載した技術又は類似の技術が、同時に、別々に、又は組み合わされて、任意の適切な時間に実行されてもよい。さらに、これらのフロー中のステップの多くは、図示及び説明されたものとは異なり、同時に、及び／又は、異なる順序で実行されてよい。さらに、システム１００は、プロセス及び方法が適切に残存している限りは、追加的な、より少ない、及び／又は、異なるステップを備えたプロセス及び方法を使用してよい。要するに、この開示は、特定の実施形態及び一般的に関連する方法の観点から記載されたが、これらの実施形態及び方法の変形例及び置換例は、当業者には明白である。したがって、他の実施形態は、添付の特許請求の範囲内にある。
【符号の説明】
【００３２】
１００  ユーザインタフェース操作の位置独立な実行を実現するシステム
１０２  サーバ
１０４  クライアント
１１２  ネットワーク
２００、２００ａ  通信線定義
３００、３００ａ  通信線インスタンス
【図１】
2011118879.tif 000004
【図２】
2011118879.tif 000005
【図３】
2011118879.tif 000006
【図４】
2011118879.tif 000007
【図５】
2011118879.tif 000008
【図６Ａ】
2011118879.tif 000009
【図６Ｂ】
2011118879.tif 000010
【図６Ｃ】
2011118879.tif 000011
【図７】
2011118879.tif 000012