(57)【要約】【課題】本発明は、機能強化されたウィジェットコンポジションプラットフォームに関する。【解決手段】コードが、ウェブベースウィジェットコンポジションプラットフォームを介する少なくとも第1サービスおよびウィジェットエンジンの選択を受け取ることに基づいて自動的に生成され、コードが、選択されたウィジェットエンジンによって呼び出された時に第1サービスと通信するように動作可能なウィジェットを実施する、機能強化されたウィジェットコンポジションプラットフォーム。【選択図】図2
2008305411.tif 000002
【特許請求の範囲】
【請求項１】
ウェブベースウィジェットコンポジションプラットフォームを介して少なくとも第1サービスおよびウィジェットエンジンの選択を受け取ることに基づいてコードを自動的に生成する段階を含み、前記コードが、前記選択されたウィジェットエンジンによって呼び出される時に、前記第1サービスと通信するように動作可能なウィジェットを実施する、コンピュータ実施される方法。
【請求項２】
前記ウェブベースウィジェットコンポジションプラットフォームが、設計モードおよびプレビューモードをさらに含み、
前記第1サービスが、設計モードで前記ウェブベースウィジェットコンポジションプラットフォームを介して選択され、
前記ウィジェットが、プレビューモードで前記ウェブベースウィジェットコンポジションプラットフォームを介してシミュレートされる
請求項1に記載の方法。
【請求項３】
前記ウィジェットエンジンをエミュレートする互換性レイヤを使用してブラウザ環境内で前記コードを呼び出し、これによって前記ウィジェットコンポジションプラットフォーム内で前記ウィジェットをシミュレートする段階をさらに含む、請求項1に記載の方法。
【請求項４】
前記選択を受け取ることに基づいてサービスメディエータインスタンスを作成する段階をさらに含み、前記サービスメディエータインスタンスが、
入力パラメータを集め、
前記入力パラメータに基づいて前記第1サービスにサービス呼出しを送り、
前記サービス呼出しの生データ結果を前記サービスメディエータインスタンスに送る
ように動作可能なサービスリクエスタコンポーネントと、
前記生データ結果を解釈されたSERVICEDATAMODELオブジェクトに処理し、
前記SERVICEDATAMODELオブジェクトを前記サービスメディエータインスタンスに送る
ように動作可能なインタープリタコンポーネントと、
前記SERVICEDATAMODELオブジェクト内のデータの視覚的表現をレンダリングするように動作可能なレンダラコンポーネントと
を含む、請求項1に記載の方法。
【請求項５】
前記コードが、さらに、前記ウィジェットの外見を定義する設計要素の選択を受け取ることに基づいてまたは非サービス関連機能を実行する設計要素の選択を受け取ることに基づいて自動的に生成される、請求項1に記載の方法。
【請求項６】
前記コードが、さらに、前記ウェブベースウィジェットコンポジションプラットフォームを介して第2サービスの選択を受け取ることに基づいて自動的に生成される、請求項1に記載の方法。
【請求項７】
前記コードが、さらに、WIDGETOBJECTMANAGERモジュールを介して、前記第1サービスの出力を前記第2サービスの入力に接続する選択を受け取ることに基づいて自動的に生成される、請求項6に記載の方法。
【請求項８】
イベントのCONNECTORオブジェクトを生成する段階であって、前記CONNECTORオブジェクトが、前記第2サービスの前記入力をリスナとして追加し、前記第1サービスの前記出力を呼出し側として追加する、段階と、
前記イベントを検出することに基づいて前記呼出し側から前記リスナにENVELOPEオブジェクトを送る段階であって、前記ENVELOPEオブジェクトが、前記呼出し側からの出力値をカプセル化する、段階と
をさらに含む、請求項7に記載の方法。
【請求項９】
LINEMANAGERモジュールを介して、前記第1サービスの前記出力を前記第2サービスの前記入力に接続する前記選択が有効であることを検証する段階と、
前記第1サービスの前記出力を前記第2サービスの前記入力に接続する前記選択が有効である場合に、前記LINEMANAGERモジュールを介して、前記第1サービスの前記出力を前記第2サービスの前記入力に接続する前記選択の表現を出力する段階と
をさらに含む、請求項8に記載の方法。
【請求項１０】
前記ウィジェットが、Service Oriented Architecture Protocol (SOAP)呼出しまたは他のHyperText Transfer Protocol (HTTP)呼出しを介して前記第1サービスと通信するように動作可能である、請求項1に記載の方法。
【請求項１１】
前記第1サービスからデータを受け取る段階と、
前記ウィジェットを介して前記データを表示する段階と
をさらに含む、請求項1に記載の方法。
【請求項１２】
前記ウィジェットコンポジションプラットフォームが、What-You-See-Is-What-You-Get (WYSIWYG)統合開発環境(IDE)を含む、請求項1に記載の方法。
【請求項１３】
前記ウィジェットを出力する段階をさらに含む、請求項1に記載の方法。
【請求項１４】
前記ウィジェットを出力する段階が、前記ウィジェットをユーザデバイスにアップロードする段階をさらに含む、請求項13に記載の方法。
【請求項１５】
前記第1サービスが、ウェブサービス、Really Simple Syndication (RSS)サービス、またはMultidimensional eXpressions (MDX)サービスである、請求項1に記載の方法。
【請求項１６】
前記少なくとも第1サービスの前記選択を受け取ることに基づいて、WINDOWOBSERVERモジュールを使用して前記少なくとも第1サービスをグローバルウィジェットモデルに追加する段階をさらに含む、請求項1に記載の方法。
【請求項１７】
前記WINDOWOBSERVERモジュールを介して前記ウィジェットコンポジションプラットフォームの状態変化を追跡する段階をさらに含む、請求項16に記載の方法。
【請求項１８】
前記少なくとも第1サービス、前記少なくとも第1サービスのそれぞれの位置およびサイズ、ならびに前記少なくとも第1サービスの間の接続を含む配列を前記WINDOWOBSERVERモジュールを介して送る段階をさらに含む、請求項17に記載の方法。
【請求項１９】
機械によって読み取られた時に、データ処理装置に、ウェブベースウィジェットコンポジションプラットフォームを介して少なくとも第1サービスおよびウィジェットエンジンの選択を受け取ることに基づいてコードを生成させるように動作する命令を含む、機械可読媒体内で有形に実施されるコンピュータプログラム製品であって、前記コードが、前記選択されたウィジェットエンジンによって呼び出される時に、前記第1サービスと通信するように動作可能なウィジェットを実施する、コンピュータプログラム製品。
【請求項２０】
ウェブベースウィジェットコンポジションプラットフォームを介して少なくとも第1サービスおよびウィジェットエンジンの選択を受け取ることに基づいてコードを生成するように構成されたプロセッサを含むデバイスであって、前記コードが、前記選択されたウィジェットエンジンによって呼び出される時に、前記第1サービスと通信するように動作可能なウィジェットを実施する、デバイス。
【発明の詳細な説明】
【技術分野】
【０００１】
本開示は、全般的にはウィジェット(またはガジェット)に関し、少なくとも1つの特定の実施態様は、機能強化されたウィジェットコンポジションプラットフォームに関する。
【背景技術】
【０００２】
的確な判断を下すためには、タイムリー、正確、かつ関連する情報へのアクセスを有することが重要である。さまざまな情報を有用な形で組み合わせることによって、それぞれ別々の情報が組み合わされた価値より高い価値を有するコンテキストを形成することができる。
【０００３】
1つの単純な例で、3つの別々のログエントリが、供給業者銀行口座番号変更および最初の口座番号へのロールバック、変更された供給業者銀行口座番号と等しい従業員銀行口座番号、および変更された供給業者銀行口座番号への送り状支払いを反映する場合がある。個別には、これらのログエントリは、完全に正常であるように見える可能性がある。しかし、組み合わされると、これらの別々のエントリが、詐欺のコンテキストを提供する。というのは、送り状が、供給業者銀行口座番号が変更された時点とその変更がロールバックされた時点との間に支払われており、変更された供給業者銀行口座番号が、従業員銀行口座番号と同一であるからである。したがって、異なるソースからの情報の組合せは、有用なコンテキストを形成するのに必要な相乗効果を提供することができる。
【発明の開示】
【課題を解決するための手段】
【０００４】
1つの一般的な実施態様によれば、コードは、ウェブベースウィジェットコンポジションプラットフォームを介して少なくとも第1サービスおよびウィジェットエンジンの選択を受け取ることに基づいて自動的に生成される。コードは、選択されたウィジェットエンジンによって呼び出される時に、第1サービスと通信するように動作可能なウィジェットを実施する。
【０００５】
実施態様は、次の特徴のうちの1つまたは複数を含むことができる。たとえば、第1サービスおよびウィジェットエンジンの選択は、ユーザ選択または自動選択とすることができる。ウェブベースウィジェットコンポジションプラットフォームは、設計モードおよびプレビューモードをさらに含むことができ、第1サービスは、(設計モードで)ウェブベースウィジェットコンポジションプラットフォームを介して選択され、ウィジェットは、(プレビューモードで)ウェブベースウィジェットコンポジションプラットフォームを介してシミュレートされる。コードを、ウィジェットエンジンをエミュレートする互換性レイヤを使用してブラウザ環境内で呼び出し、これによってウィジェットコンポジションプラットフォーム内でウィジェットをシミュレートすることができる。
【０００６】
さらなる例で、サービスメディエータインスタンスを、選択を受け取ることに基づいて作成することができ、サービスメディエータインスタンスは、サービスリクエスタコンポーネントと、インタープリタコンポーネントと、レンダラコンポーネントとを含む。サービスリクエスタコンポーネントは、入力パラメータを集め、入力パラメータに基づいて第1サービスにサービス呼出しを送り、サービス呼出しの生データ結果をサービスメディエータインスタンスに送るように動作可能である。インタープリタコンポーネントは、生データ結果を解釈されたSERVICEDATAMODELオブジェクトに処理し、SERVICEDATAMODELオブジェクトをサービスメディエータインスタンスに送るように動作可能である。レンダラコンポーネントは、SERVICEDATAMODELオブジェクト内のデータの視覚的表現をレンダリングするように動作可能である。
【０００７】
その上、コードは、さらに、ウィジェットの外見を定義するか非サービス関連機能を実行する設計要素の選択を受け取ることに基づいて、ウェブベースウィジェットコンポジションプラットフォームを介して第2サービスの選択を受け取ることに基づいて、またはWIDGETOBJECTMANAGERモジュールを介して第1サービスの出力を第2サービスの入力に接続する選択を受け取ることに基づいて、自動的に生成することができる。イベントのCONNECTORオブジェクトを生成することができ、CONNECTORオブジェクトは、第2サービスの入力をリスナとして追加し、第1サービスの出力を呼出し側として追加する。ENVELOPEオブジェクトを、イベントを検出することに基づいて呼出し側からリスナに送ることができ、ENVELOPEオブジェクトは、呼出し側からの出力値をカプセル化する。
【０００８】
さらに、第1サービスの出力を第2サービスの入力に接続する選択が有効であることを、LINEMANAGERモジュールを介して検証することができ、第1サービスの出力を第2サービスの入力に接続する選択が有効である場合に、第1サービスの出力を第2サービスの入力に接続する選択の表現を、LINEMANAGERモジュールを介して出力することができる。ウィジェットは、Service Oriented Architecture Protocol (SOAP)呼出しまたは他のHyperText Transfer Protocol (HTTP)呼出しを介して第1サービスと通信するように動作可能とすることができる。データを、第1サービスから受け取ることができ、データを、ウィジェットを介して表示することができる。
【０００９】
また、ウィジェットコンポジションプラットフォームを、What-You-See-Is-What-You-Get (WYSIWYG)統合開発環境(IDE)とすることができる。ウィジェットをユーザデバイスにアップロードすることによるなど、ウィジェットを出力することができる。第1サービスを、ウェブサービス、Really Simple Syndication (RSS)サービス、Multidimensional eXpressions (MDX)サービス、またはネットワークを介して到達可能な任意のデータソース(ウェブサイトなど)とすることができる。少なくとも第1サービスを、少なくとも第1サービスの選択を受け取ることに基づいて、WINDOWOBSERVERモジュールを使用してグローバルウィジェットモデルに追加することができる。ウィジェットコンポジションプラットフォームの状態変化を、WINDOWOBSERVERモジュールを介して追跡することができる。少なくとも第1サービス、少なくとも第1サービスのそれぞれの位置およびサイズ、ならびに少なくとも第1サービスの間の接続を含む配列を、WINDOWOBSERVERモジュールを介して送ることができる。
【００１０】
もう1つの一般的な実施態様によれば、コンピュータプログラム製品が、機械可読媒体内で有形に実施される。コンピュータプログラム製品は、機械によって読み取られた時に、データ処理装置に、ウェブベースウィジェットコンポジションプラットフォームを介して少なくとも第1サービスおよびウィジェットエンジンの選択を受け取ることに基づいてコードを生成させるように動作する命令を含み、コードは、選択されたウィジェットエンジンによって呼び出される時に、第1サービスと通信するように動作可能なウィジェットを実施する。
【００１１】
もう1つの一般的な実施態様によれば、デバイスが、ウェブベースウィジェットコンポジションプラットフォームを介して少なくとも第1サービスおよびウィジェットエンジンの選択を受け取ることに基づいてコードを生成するように構成されたプロセッサを含み、コードは、選択されたウィジェットエンジンによって呼び出される時に、第1サービスと通信するように動作可能なウィジェットを実施する。
【００１２】
もう1つの一般的な実施態様によれば、デバイスが、ウェブベースウィジェットコンポジションプラットフォームを介して少なくとも第1サービスおよびウィジェットエンジンの選択を受け取ることに基づいてコードを生成する手段を含み、コードは、選択されたウィジェットエンジンによって呼び出される時に、第1サービスと通信するように動作可能なウィジェットを実施する。
【００１３】
もう1つの一般的な実施態様によれば、第1サービスのユーザ選択は、ウェブベースのWYSIWYGウィジェットコンポジションプラットフォームを介して受け取られ、第2サービスのユーザ選択は、ウィジェットコンポジションプラットフォームを介して受け取られ、第1サービスの出力を第2サービスの入力に接続するユーザ選択は、ウィジェットコンポジションプラットフォームを介して受け取られる。第1サービスの出力を第2サービスの入力に接続するユーザ選択が有効であるかどうかが検証され、ウィジェットエンジンのユーザ選択が、ウィジェットコンポジションプラットフォームを介して受け取られ、コードが、第1サービス、第2サービス、およびウィジェットエンジンの選択を受け取ることに基づいて自動的に生成され、コードは、選択されたウィジェットエンジンによって呼び出された時に、第1サービスおよび第2サービスと通信するように動作可能なウィジェットを実施する。コードは、ウィジェットエンジンをエミュレートする互換性レイヤを使用してブラウザ環境内で呼び出され、これによって、ウィジェットコンポジションプラットフォーム内でウィジェットをシミュレートし、第1サービスからの第1データが、受け取られ、ENVELOPEオブジェクトが、イベントを検出することに基づいて第1サービスの出力から第2サービスの入力に送られ、このENVELOPEオブジェクトは、第1サービスからの出力値をカプセル化する。第2データが、第2サービスの入力でENVELOPEオブジェクトを受け取ることに基づいて第2サービスから受け取られ、第2データが、出力され、コードが、ユーザにアップロードされる。
【００１４】
1つまたは複数の実施態様の詳細を、添付図面および下の説明に示す。本開示の他の潜在的な特徴および利益は、その説明および図面から、ならびに特許請求の範囲から明白となろう。
【００１５】
類似する符号は、複数の図面を通じて対応する部分を表す。
【発明を実施するための最良の形態】
【００１６】
最も基本的な形で、機能強化されたウィジェットコンポジションプラットフォームは、ユーザが直観的なデスクトップスタイルの開発環境を使用してウィジェットを簡単に作成することを可能にするウェブベースのWYSIWYG IDEである。ウェブブラウザを介してIDEを提供するのにWeb 2.0テクノロジを使用することによって、機能強化されたウィジェットコンポジションプラットフォームを、ローカルコンピュータに追加のアプリケーションソフトウェアをインストールせずに呼び出すことができる。それを行う際に、特殊化されたプログラミングの技量を有しないユーザでさえ、ウィジェットを視覚的に作成し、とりわけYAHOO!(登録商標)ウィジェットエンジンまたはMICROSOFT VISTA(登録商標)ガジェットエンジンなどのさまざまなウィジェットエンジンと共に使用するためにこれらのウィジェットを出力(または「展開」)することができる。IDEは、一般に、初心者または経験のあるソフトウェア開発者がソフトウェアを開発するのを支援するコンピュータアプリケーションを指す。
【００１７】
図1は、1つの一般的なクライアント-サーバ実施態様による例示的なシステム100のブロック図である。短く言うと、システム100は、ネットワーク105を介して接続された、デバイス101と、サーバ102および104とを含む。
【００１８】
デバイス101は、(他の構成要素の中でも)プロセッサ106、ウェブブラウザ107、ウィジェットエンジン109、および出力媒体110を含む。プロセッサ106は、少なくとも第1サービスおよびウィジェットエンジンの選択をウェブベースウィジェットコンポジションプラットフォームを介して受け取ることに基づいてコードを生成するように構成される。選択されたウィジェットエンジンによって呼び出された時に、コードは、第1サービスと通信するように動作可能なウィジェットを実施する(すなわち、引き起こす、遂行する、提供する、出力する、および/または実現する)。ウェブブラウザ107は、機能強化されたウィジェットコンポジションプラットフォームのフロントエンドを表し、機能強化されたウィジェットコンポジションプラットフォームのユーザインターフェースを表示する。ウェブブラウザ107は、MICROSOFT(登録商標) INTERNET EXPLORER(登録商標)ウェブブラウザ、APPLE(登録商標) SAFARI(登録商標)ウェブブラウザ、または他のウェブブラウザなど、任意のウェブブラウザとすることができる。
【００１９】
ウィジェット(または「ガジェット」)は、ローカルデータおよびリモートデータを表示し、更新するクライアント側の自己完結型ウェブアプリケーションまたは別のアプリケーションもしくはエンジンの助けを得てブラウザ環境内で動作するアプリケーションとすることができる。ウィジェットを、YAHOO!(登録商標)ウィジェットエンジンまたはMICROSOFT VISTA(登録商標) SIDEBAR(登録商標)ウィジェットエンジンなどのアプリケーションエンジン(または「ウィジェットエンジン」)を使用して実行することができる。ウィジェットは、データを取り出し、更新するために、SOAP呼出しまたは他のHTTP呼出しを使用してインターネット上のサービスと通信することができる。このデータは、その後、効率的な形でウィジェットによって表示される。SOAPは、しばしばHTTPを使用して、コンピュータネットワークを介してXMLベースのメッセージを交換するプロトコルを指す。
【００２０】
他の構成要素の中で、サーバ102は、機能強化されたウィジェットコンポジションプラットフォームアプリケーション111を含み、サーバ104は、サービス112を含む。サーバ102は、WICKET (商標)またはAsynchronous Java（登録商標）Script and XML (AJAX)動作を処理できる他のフレームワークを使用するAPACHE (商標) TOMCAT (商標)サーバとして実施することができる。サーバ102は、データストレージに、およびウィジェット展開(または「出力」)プロセスを管理するのに使用することができる。
【００２１】
サービスは、ウェブサービス、RSSサービス、MDXサービス、または別のサービスとすることができる。一般に、サービスは、ネットワークを介するインターオペラブルなマシン対マシン相互作用をサポートするように設計されたソフトウェアを含む。さらに、サービスは、ネットワークを介して到達可能な任意のデータソース(ウェブサイトなど)とすることができ、ここで、データは、そのデータソースから取り出され、解析される。たとえば、サービスは、SOAP標準規格に従うeXtensible Markup Language (XML)メッセージを使用して通信するクライアントまたはサーバを指すことができる。もう1つの実施態様では、サーバ102およびサーバ104の機能または構造が、単一のサーバに組み合わされ、あるいは部分的にまたは完全に省略される。
【００２２】
機能強化されたウィジェットコンポジションプラットフォームアプリケーション111のビジネスロジックの多くは、実際には、Java（登録商標）Scriptを使用してデバイス101で呼び出される。これに関して、多くの関連するプロセスが、Java（登録商標）Scriptファイルを介してクライアント側で実施される。リソースのこの分散を用いると、論理が、機能強化されたウィジェットコンポジションプラットフォームを使用してウィジェットを設計する時にクライアントデバイス上で使用可能であり、クライアントデバイスで出力されるウィジェット自体においても使用可能である。
【００２３】
図2は、もう1つの一般的な実施態様による例示的なプロセス200を示す流れ図である。短く言うと、コードは、ウェブベースウィジェットコンポジションプラットフォームを介して少なくとも第1サービスおよびウィジェットエンジンの選択を受け取ることに基づいて自動的に生成される。コードは、選択されたウィジェットエンジンによって呼び出された時に、第1サービスと通信するように動作可能なウィジェットを実施する。
【００２４】
より詳細には、プロセス200は、ウェブベースの機能強化されたウィジェットコンポジションプラットフォームのユーザインターフェースが、クライアントデバイス上のウェブブラウザを介して出力される時に開始される(S201)。このユーザインターフェースは、サーバ102などのバックエンドサーバによって生成し、デバイス101のウェブブラウザ107など、クライアントデバイスのウェブブラウザにネットワークを介して転送することができる。これに関して、機能強化されたウィジェットコンポジションプラットフォーム自体は、Java（登録商標）Scriptライブラリをロードし、ユーザインターフェース要素をウェブブラウザ環境内で位置決めすることによって初期化される。
【００２５】
前もって短く参照すると、図3は、1つのそのような例示的なウィジェットコンポジションプラットフォーム300を示し、ウィジェットコンポジションプラットフォーム300は、ウィジェット出力領域301、サービスリポジトリ領域302、設計要素リポジトリ領域304、背景イメージリポジトリ領域305、およびモードセレクタ領域306を含む。ウィジェット出力領域301は、ウィジェットコンポジションプラットフォーム300のうちで、ウィジェットコンポーネントが組み立てられ、配置され、再配置され、接続され、組み立てられたウィジェットオブジェクトが完全なウィジェットをシミュレートするかプレビューする部分である。
【００２６】
図3は、ウィジェットコンポジションプラットフォーム300で設計されつつあるウィジェットオブジェクト307を示す。ウィジェットオブジェクト307は、ウィジェットの外見を有するが、実際には、ウィジェット(具体的には、設計中のウィジェット)が、展開された時にどのように見えるかの視覚化である。下でより詳細に説明するように、ウィジェットオブジェクト307は、サービスと通信するのにウィジェットエンジン固有コードを使用することができるが、ウィジェットオブジェクト307の機能性は、ブラウザ環境内で1つまたは複数のウィジェットエンジンをエミュレートする互換性レイヤの使用を介して提供され、したがって、ウィジェットオブジェクト307を実際のウィジェットから区別する。
【００２７】
サービスが、プラットフォームの作業スペースに追加される時に、サービスメディエータインスタンスマネージャモジュールが、追加されるサービスに関連するサービスメディエータインスタンスのコンポーネントの間で調停するために包括的構文を生成する。この包括的構文は、サービスメディエータインスタンスを作業エリアに動的に含めるのに使用され、サービスの呼出しを処理する。下でより詳細に説明するように、サービスメディエータインスタンスマネージャモジュールは、たとえば、サービスリクエスタコンポーネントをインタープリタコンポーネントに接続するのに、およびインタープリタコンポーネントをレンダラコンポーネントに接続するのに使用することができる。
【００２８】
サービスメディエータインスタンスマネージャモジュールは、他のサービスメディエータインスタンスおよび設計要素インスタンスから受け取られるイベントまたはデータを処理するのに使用することもできる。「イベント」は、一般に、マウスクリックもしくはキー押下げなどのユーザアクションまたは別のアプリケーションからのメッセージの受取りを指す。
【００２９】
サービスリポジトリ領域302は、サービスを表示し、サービスの選択を可能にする。図3の例では、サービスは、使用可能なサービスのリストを展開可能ツリーコントロール309を使用して視覚的にフィルタリングすることによって、またはテキストフィールド310にテキストストリングを入力することによってサービスを検索することによって、選択することができる。他のコントロール、技法、または手法を使用して、サービスを突き止めることもできる。例のサービスには、GOOGLE(登録商標) News、YAHOO!(登録商標) News、GOOGLE(登録商標) Search、New York Stock Exchange Headlines、NASDAQ Headlines、New York Times Headlines、Washington Post Headlines、または他の内部サービスもしくは外部サービスなどのRSSサービスを含めることができる。
【００３０】
サービスリポジトリ領域302は、ウィジェットエンジンの選択を可能にする、コントロール311から313などの少なくとも1つのコントロールをも含む。この選択は、機能強化されたウィジェットコンポジションプラットフォームによって出力されるウィジェットコードのフォーマットまたは言語を決定するか指定するのに使用される。たとえば、YAHOO!ウィジェットを生成する(または「出力する」)ことを望むユーザは、単純に「Deploy Yahoo Widget」コントロール311を選択するはずであり、MICROSOFT WINDOWS（登録商標） VISTAガジェットまたはGOOGLEガジェットを生成することを望むユーザは、それぞれ「Deploy Vista Gadget」コントロール312または「Deploy Google Gadget」コントロール313を選択するはずである。さまざまなウィジェットタイプのそのような選択は、連続的にまたは並列に、あるいは異なるタイプのコントロールを使用して、行うこともできる。さらに、他のウィジェットタイプをコントロール311から313にマッピングすることができ、あるいは、さらなるコントロールを追加することができる。
【００３１】
サービスリポジトリ領域302は、複数の事前定義のサービスを含む場合があるが、これらのサービスを、削除するか再配置することができ、あるいは、サービスリポジトリ領域302を、サービス定義ウィンドウを使用して新しいサービスを作成することによって拡張することができる。サービス定義ウィンドウは、サービスのタイプ、新しいサービスの位置、構成プリファレンス、または他のデータをユーザから受け取ることによって、新しいサービスを追加するのに使用することができる。この構成プロセスに続いて、新しいサービスメディエータインスタンスを、たとえば展開可能ツリーコントロール309または他のコントロールに新しいサービスを追加することによって、サービスリポジトリ領域302に追加された新しいサービスに関連付けることができる。この形で、新しいサービスを追加することができ、既存のサービスを適合させることができる。
【００３２】
機能強化されたウィジェットコンポジションプラットフォーム300内で、サービスから受け取られたデータは、サービスウィンドウ内に表示される。サービスメディエータインスタンスのレンダラコンポーネントからのフォーマットされたデータを使用して、これらのサービスウィンドウは、事前定義のパラメータまたはユーザが調整可能なパラメータによって指定された形で、受け取られたデータを表示する。たとえば、ユーザは、サービスから受け取られたデータをテキストフィールド内、テーブル内、またはチャート内に出力するインタープリタコンポーネントおよびレンダラコンポーネントを割り当てることができる。したがって、各サービスは、サービスリポジトリ領域302内で、その従属するインタープリタコンポーネントおよびレンダラコンポーネントに関連して格納される。
【００３３】
同様に、設計要素リポジトリ領域304は、設計要素を表示し、設計要素の選択を可能にする。設計要素(DE)は、サービスに類似するが、設計要素はサービス呼出しを行わず、入ってくるデータを処理しないので、必ずしもサービスのようにサービスリクエスタコンポーネント、インタープリタコンポーネント、またはレンダラコンポーネントを含まない。さまざまな実施態様で、設計要素を、レイアウト目的に使用される非機能グラフィカル要素とすることができ、あるいは、設計要素が、アイコンの選択時に通信リンクを介してデータを送る能力、またはテキストストリングを受け入れるか出力する能力など、高度な機能性を含むことができる。サンプルの設計要素は、たとえば、変更不能なテキストフィールド、ラベル、形状、もしくはセパレータなどの非機能設計要素、またはmailto:、SKYPE(登録商標)、もしくは電話リンクなどの機能設計要素、または出力テキストストリングもしくはグラフィックスを表示するか入力テキストストリングを受け取るテキストフィールドを含む。
【００３４】
背景イメージリポジトリ領域305は、事前定義の背景テンプレートを表示し、事前定義の背景テンプレートの選択を可能にする。一般に使用される背景テンプレートを、機能強化されたウィジェットコンポジションプラットフォーム300の簡単にアクセスできる部分で提供することによって、初心者ユーザが、高度なプログラミングの技量を必要とせずにまたはこれを使用せずに、カスタム作成されたルックアンドフィールを有する視覚的にすばらしいウィジェットを作成することができる。
【００３５】
モードセレクタ領域306は、現在のモードを表示し、モードセレクタコントロール315を使用することによるなど、異なるモードの選択を可能にする。たとえば、機能強化されたウィジェットコンポジションプラットフォーム300に、設計モードおよびプレビューモードを含めることができる。サービスは、設計モードでウェブベースウィジェットコンポジションプラットフォーム300を介して選択され、ウィジェットは、プレビューモードで、機能強化されたウィジェットコンポジションプラットフォーム300を介してシミュレートされる。
【００３６】
直観的に、ウィジェットを設計モードで設計することができる。このモードでは、機能強化されたウィジェットコンポジションプラットフォーム300は、MICROSOFT(登録商標) VISUAL STUDIO(登録商標)ソフトウェア開発環境などのデスクトップベースのIDEに似て振る舞う。デスクトップベースのIDEに似て、機能強化されたウィジェットコンポジションプラットフォーム300は、ユーザが、サービスリポジトリ領域302または設計要素リポジトリ領域304などからコンポーネントをドラッグアンドドロップして、コンテキスト化のためにコンポーネントを接続し、色またはサイズなど、コンポーネントの視覚的特性を割り当てるか定義することを可能にする。しかし、設計モードにおいても、機能強化されたウィジェットコンポジションプラットフォーム300は、サービスと通信し、適当な時および場合にライブデータを出力し、コンポーネントの間でデータを交換する。
【００３７】
コンテキスト化は、一般に、第2データソースからの以前のデータアクセスの結果に基づいて第1データソースからのデータにアクセスするプロセスを指し、2つの別々のまたはばらばらのデータアクセスから生じるものより関連するデータの取出しをもたらすことができる。したがって、コンテキスト化されたデータは、第2データアクセスの出力または結果を指し、ここで、第2データアクセスの入力項または入力パラメータは、以前に発生した第1データアクセスによって定義される。
【００３８】
単純な例で、比較的静的な売上データベースの第1のアクセスが、先月に購入を行った顧客のリストを返すことができる。比較的静的な売上データベースの第2のアクセスが、先月に購入を行った、ある都市に住む顧客のリストをもたらすことができる。セールスマンが、この都市を訪れることを計画している場合に、先月に購入を行った、その都市に住む顧客のこのリストは、その都市に住む顧客のリストおよび先月に購入を行った顧客の別々のリストよりはるかに貴重であるはずである。先月に購入を行った、その都市に住む顧客のこのリストを2つの別々のソースから入手したので、そのリストは、コンテキスト化されたデータと考えられる。
【００３９】
より複雑な例で、比較的動的なニュースデータベースの第1アクセスが、その利益が増加した会社のリストをもたらすことができ、連絡先データベースの第2アクセスが、これらの会社で働く人事担当者の連絡先情報をもたらすことができる。職業紹介所が、成長している可能性があり、採用を必要としている可能性がある会社への手がかりを探している場合に、このフィルタリングされた連絡先情報は、おそらく貴重である。このフィルタリングされた連絡先情報は、異なるデータソースから取り出されたので、やはりコンテキスト化されたデータと考えられる。同じ調子で、コンテキスト化イベントは、データをあるデータソース(またはサービス)の出力から別のデータソース(またはサービス)の入力に渡させる任意のアクションまたはできごとである。
【００４０】
ウィジェットは、ランタイムモード(またはプレビューモード)でシミュレートされる。このモードでは、ウィジェットオブジェクトは、そのウィジェットが展開時にどのように見えるかをユーザに示すためにプレビューされる。このシミュレーションに基づいて、ユーザは、設計モードに戻って切り替え、要素を再設計することができ、あるいは、ウィジェットを出力することを選択することができる。コンテキスト化またはコンポーネントの間のデータの交換を見るためにランタイムモードに切り替える必要はない。というのは、機能強化されたウィジェットコンポジションプラットフォームが、設計モードでもサービスと通信するからである。
【００４１】
図2に戻って、第1サービスまたは設計要素の選択を、ウェブベースの機能強化されたウィジェットコンポジションプラットフォームを介して受け取る(S202)。第1サービスの選択を、自動選択とすることができ、あるいは、この選択を手動ユーザ選択とすることができる。ユーザ選択は、たとえば、ユーザが、マウスまたは他のポインティングデバイスを使用して、サービスリポジトリ領域302内でサービスを選択するか、設計要素リポジトリ領域304内で設計要素を選択する時に発生する。
【００４２】
図4に、サービス401および402が選択された状態での、例示的なウィジェットコンポジションプラットフォーム300を示す。第1のサービス401は、Australian Stock eXchange (ASX) Gainsサービスを表し、第2のサービス402は、GOOGLE(登録商標) Newsサービスを表す。ユーザは、マウスを使用してサービスリポジトリ領域302内でサービスを選択し、それらのサービスをウィジェット出力領域301にドラッグすることによって、これらのサービスのいずれをも選択することができる。代替案では、サービスを、キーストロークの組合せを介して、タッチスクリーンドラッグアンドドロップの使用または動作の選択によって、音声コマンドを介して、または任意の他の入力技法によって選択することができる。
【００４３】
ウィジェット出力領域301にドラッグされたならば、サービスウィンドウ404および405(それぞれ第1および第2のサービス401および402を表す)が表示され、関連するサービスから受け取られたデータを表フォーマットまたは他の事前定義のフォーマットもしくはユーザ選択可能なフォーマットで出力する。たとえば、サービスウィンドウ404は、会社名、株式相場表示器コード、価格、および利益パーセンテージを含む4つの列にASX Gainsサービス401からの特定の時刻の上位5つの値上がり株を表示する。サービスウィンドウ405は、GOOGLE(登録商標) Newsサービス402からのトップニュースを表示する。特筆すべきことに、図4に示された状態では、各サービスウィンドウに表示される情報が、必ずしも関連せず、コンテキスト化されていない。
【００４４】
各サービスウィンドウは、さまざまなコンポーネントを含む。たとえば、サービスウィンドウ404は、サービスウィンドウ404のユーザ調整可能な境界を定義するフレーム406、入力407などの少なくとも1つの入力コントロール(または「入力」)、および出力409から412などの少なくとも1つの出力コントロール(または「出力」)を含む。サービスへの呼出しが、入力パラメータを含む場合があるので、入力コントロールは、他のサービスまたは設計要素の出力を受け取るのに使用され、これによって、そのサービスによって使用される入力またはクエリパラメータを整形し、または他の形で定義する。同様に、出力コントロールは、サービスまたは設計要素からのデータを別のコンポーネントに出力するのに使用される。
【００４５】
一般に、各入力コントロールは、サービスの関連する入力パラメータ(または「ポート」)の視覚化である。たとえば、架空のニュースサービスが、キーワード、開始日付、および終了日付という入力パラメータまたはポートのデータ検索に基づくことができる。この架空のニュースサービスのサービスウィンドウは、ポートごとに1つの、3つまでの入力コントロールを有するはずである。キーワードデータ(第1ポートに関連する)を、テキストボックス設計要素を使用して、そのテキストボックス設計要素の出力をキーワードポートに関連する入力コントロールに接続することによって、動的にまたは静的に指定することができる。
【００４６】
代替案では、キーワードデータを、キーワードポートに関連する入力コントロールを別のサービスウィンドウの出力に接続することによって動的に指定することができ、ここで、その別のサービスウィンドウの出力は、キーワードを出力すると期待される。さらなる例では、その別のサービスウィンドウが、複数のキーワードを出力する潜在能力を有する場合に、イベント(マウスイベントなど)を、その別のサービスウィンドウに割り当てることができ、特定のキーワードが、イベントの発生に基づいてその別のサービスウィンドウから出力されるようになる。
【００４７】
単一のサービスが、複数のデータアイテムを出力することができる。たとえば、サービスウィンドウ404は、5つの異なる会社のそれぞれの、会社データ、ティッカシンボルデータ、価格データ、およびパーセンテージデータを出力する。したがって、異なる出力コントロールを、異なる別個のデータアイテムに割り当てることができる。図4の例では、出力コントロール409が、会社データに関連し、出力コントロール410が、ティッカシンボルデータに関連し、出力コントロール411が、価格データに関連し、出力コントロール412が、パーセンテージデータに関連する。代替案では、出力コントロール409から412を、サービスウィンドウ404に表示されるデータの第1行から第4行に関連付けることができる。
【００４８】
これに関して、出力コントロール409を介して出力されるデータを、ユーザ対話イベントと組み合わせて、関連するデータ領域または型によって定義することができる。たとえば、出力コントロール409が、会社名に関連する場合に、出力コントロール409を介して出力される会社名データを、会社名の上で発生するマウスイベントに応じて変更することができる。下でさらに詳細に説明するように、これらの入力コントロールおよび出力コントロールは、データをコンテキスト化するのに有用である。ユーザが、ユーザインターフェースを介して、あるサービスウィンドウに関連する出力を第2のサービスウィンドウの入力に接続する場合に、第2のサービスウィンドウで提示されるデータを、ユーザがそのサービスウィンドウ内のデータを選択するかこれと対話することに基づいて動的に更新し、コンテキスト化することができる。
【００４９】
サービスウィンドウ404は、図4では複数の要素、コンポーネント、またはコントロールを含むものとして示されているが、ランタイムモードで、これらの要素の多くを省略するか、透明にすることができる。一例として、フレーム要素406は、設計モードではサービスウィンドウ404の境界を確立するのに有用であるが、プレビューモードでは、視覚的な混乱を減らし、出力データの重要性を強調するかこれを視覚的にフィルタリングするために、除去することができる。
【００５０】
図5は、例示的なサービスメディエータインスタンス500を示すブロック図である。サービスメディエータインスタンスは、ウィジェットコンポジションプラットフォームを介してサービスの選択を受け取ることに基づいて作成される。サービスが選択される場合に、機能強化されたウィジェットコンポジションプラットフォーム300は、選択されたサービスに関連する新しいサービスメディエータインスタンス500ならびに選択されたサービスのレンダリングされた出力を表示する新しいサービスウィンドウ(または「ビジュアルコンテナ」)を作成する。サービスメディエータインスタンス500は、少なくとも、サービスリクエスタコンポーネント501、インタープリタコンポーネント502、およびレンダラコンポーネント504を含む。
【００５１】
サービスリクエスタコンポーネント501は、入力パラメータを集め、入力パラメータに基づいて第1サービスにサービス呼出し(たとえば、+SOAPCALL() 506、INVOKE()、またはサービスリクエスタコンポーネント501の別の関数もしくは概念によって生成されるサービス呼出し)を送り、サービス呼出しの生データ結果505をサービスメディエータインスタンス500に送るように動作可能である。
【００５２】
一実施態様で、サービスリクエスタコンポーネント501は、連合認証（federated authentication）機能性を備えるセキュリティフレームワークに組み込まれ、ウィジェットが各サービスと個別にまたは繰り返して認証することなく複数のサービスと通信することを可能にする。ウェブブラウザ環境内で、連合認証(または「シングルサインオン」認証)の使用は、クライアント証明書認証を介して、デフォルトでサポートすることができる。しかし、ウィジェットが動作できるブラウザ環境の外部では、追加のコンポーネントを含めて、さまざまなサービスリクエスタコンポーネントが連合認証をサポートすることを可能にすることができる。
【００５３】
インタープリタコンポーネント502は、サービスリクエスタコンポーネント501からの生データ結果505を解釈されたSERVICEDATAMODELオブジェクト507に処理し、SERVICEDATAMODELオブジェクト507をサービスメディエータインスタンス500に送るように動作可能である。SERVICEDATAMODELオブジェクト507への生データ結果505の解釈は、+INTERPRET() 509またはインタープリタコンポーネント502の別の態様を使用してXMLコードまたはHTMLコードを解析することによって行うことができる。
【００５４】
生データ結果505を使用できる形に処理した後に、SERVICEDATAMODELオブジェクト507が、解釈されたデータを移植され、サービスメディエータインスタンス500に送られる。インタープリタコンポーネント502は、生データを取り出し、その生データの意味のある解釈を提供するインターフェースとして働くので、そこからデータが受け取られるサービスのタイプに密接に関連するものとすることができる。たとえば、XML for Analysis (XMLA)データを取り出すサービスは、XMLAインタープリタを使用することができる。
【００５５】
レンダラコンポーネント504は、SERVICEDATAMODELオブジェクト507からデータの視覚的表現を出力するように動作可能である。SERVICEDATAMODELオブジェクト507の構造は、標準化されているので、任意のレンダラコンポーネント504を使用して、このオブジェクトを出力することができる。レンダラコンポーネント504は、色プロパティ、チャートタイプまたはチャートプロパティ、列または行のフォーマッティングプロパティ、フォントプロパティ、または他のプロパティなど、視覚化を変更するためにカスタマイズすることができるプロパティを含む。SERVICEDATAMODELオブジェクト507を使用して、レンダラコンポーネント504は、特有にフォーマットされた意味のあるデータをインタープリタコンポーネント502から受け取る。たとえば、テーブルレンダラが、セルの配列で、解釈されたテーブルデータを受け取ることができる。
【００５６】
レンダラタイプに基づいて、レンダラコンポーネント504は、+RENDER()関数510を使用して、ウィジェットオブジェクト上の特定の位置で、指定された次元を有する、処理されたデータの視覚的表現を出力する。処理されたデータの位置および次元は、処理されたデータを出力するためにレンダラコンポーネント504によって使用されるサービスウィンドウによって定義することができる。レンダラコンポーネント504は、ユーザとレンダラコンポーネント504によってレンダリングされたサービスウィンドウとの間の対話に基づいてコンテキスト化イベントをトリガするコンポーネントをも格納する。たとえば、レンダラコンポーネント504は、関連するサービスウィンドウでONMOUSEOVERイベントが発生することに基づいてアクションをトリガするコンポーネントを格納することができる。
【００５７】
サービスまたは設計要素は、ウィジェット出力領域301にドラッグアンドドロップされた後に、WINDOWOBSERVERモジュールを介してグローバルウィジェットモデルに追加され、このWINDOWOBSERVERモジュールは、ウィジェット出力領域301に追加されたすべてのサービスおよび設計要素を追跡する。WINDOWOBSERVERモジュールによって記憶されるデータは、設計プロセス中にまたはウィジェットの展開もしくは出力が要求される時に収集される。その後、WINDOWOBSERVERモジュールは、ウィジェット出力領域301内のサービスウィンドウまたは設計要素ウィンドウの位置、サイズ、または他の特性を記述した配列を配送する。
【００５８】
配列データは、保存され、出力ウィジェット上の適当な位置でサービスおよび設計要素を再初期化するのに使用される。WINDOWOBSERVERモジュールは、サービスおよび設計要素の間の接続をも追跡し、展開または出力の後の再初期化のためにこれらの接続を配送する。一般に、WINDOWOBSERVERモジュールは、ユーザインターフェース上で設計されたウィジェットの各状態変化を追跡し、機能強化されたウィジェットコンポジションプラットフォーム300がユーザの意図した設計に従ってウィジェットを正確に出力することを可能にする。
【００５９】
サービスウィンドウまたは設計要素ウィンドウが、ウィジェット出力領域301から除去される時に、WINDOWOBSERVERモジュールは、展開の前に、そのサービスをグローバルウィジェットモデルから除去する。ウィジェットを出力する選択を受け取る時に、WINDOWOBSERVERモジュールは、ウィジェット出力領域301内のサービスウィンドウおよび設計要素ウィンドウを通って反復し、位置および次元のデータを取り出す。WINDOWOBSERVERモジュールは、さらに、サービスおよび設計要素の間のさまざまな接続を通って反復し、接続情報をグローバルウィジェットモデルに追加する。さらに、WINDOWOBSERVERモジュールは、ウィジェットモデルを定義する全体的次元を更新し、この情報のすべてを使用してウィジェットを出力する。
【００６０】
図2に戻ると、第2サービスの選択を、ウィジェットコンポジションプラットフォームを介して受け取る(S204)。図4に関して上で説明したように、第1の選択されたサービス401は、ASX Gainsサービスであり、このASX Gainsサービスは、ASX-Service Requestorコンポーネント、ASX-Interpreterコンポーネント、および適切にフォーマットされたデータを受け取ることに基づいてテーブルをレンダリングすることができる包括的テーブルレンダラコンポーネント(「GENERICTABLERENDERER」)を使用する。テーブルを移植するために、ASX-Service Requestorコンポーネントは、ASXウェブサイトの内容を読み取り、生データをASX-Interpreterコンポーネントに送る。ASX-Interpreterコンポーネントは、生データのHTMLコードを解析することによってSERVICEDATAMODELオブジェクト507を充てんする。包括的テーブルレンダラコンポーネントは、SERVICEDATAMODELオブジェクト507のテーブル表現を適当なサービスウィンドウ内に示すのに使用される。
【００６１】
第2サービス402は、GOOGLE(登録商標) Newsサービスであり、このGOOGLE(登録商標) Newsサービスは、RSS-Service Requestorコンポーネント、RSS-Interpreterコンポーネント、および包括的テーブルレンダラコンポーネントを使用する。第2サービス402が、ウィジェット出力領域301にドロップされる時に、関連するサービスウィンドウが、WINDOWOBSERVERモジュール内およびWIDGETOBJECTMANAGERモジュール内で登録される。ドラッグ可能サービスウィンドウが作成された後に、RSS-Service Requestorコンポーネントが呼び出され、これによってRSSフィードを読み取る。RSSはXMLを使用するので、RSS-Interpreterコンポーネントは、返されたXMLを処理し、SERVICEDATAMODELオブジェクト507を充てんする。包括的テーブルレンダラは、SERVICEDATAMODELオブジェクト507を受け取り、そのデータのテーブル表現を適当なサービスウィンドウ内にレンダリングする。
【００６２】
2つのサービスを、ウィジェット出力領域301の左側に位置決めされた展開可能ツリーコントロール309からドラッグすることができる。展開可能ツリーコントロール309からウィジェット出力領域301にドラッグされたサービスのそれぞれについて、新しいサービスメディエータインスタンスが、関連するサービスリクエスタコンポーネント、インタープリタコンポーネント、およびレンダラコンポーネントをインスタンス化するために作成される。これらのコンポーネントは、サービスが最初に定義され、サービスリポジトリに保存される時に、サービスメディエータインスタンスに割り当てられる。
【００６３】
第1のサービスまたは設計要素の出力を第2のサービスまたは設計要素の入力に接続する選択を、ウィジェットコンポジションプラットフォームを介して受け取る(S205)。イベントのCONNECTORオブジェクトを生成することができ、このCONNECTORオブジェクトは、第2サービスの入力をリスナとして追加し、第1サービスの出力を呼出し側として追加する。
【００６４】
複数のサービスまたは設計要素が、ウィジェット出力領域301での配置のために選択された時に、これらを、ユーザインターフェースを介してコンテキスト化のために接続することができる。各サービスは、入力の矢印記号および出力のドットなど、関連する記号を有することができる複数の出力ポートおよび入力ポートを有する。ユーザは、単純にマウスまたは他の入力デバイスを使用してポートの間に線を描くことによって、あるサービスまたは設計要素の出力を別のサービスまたは設計要素の入力に接続することができる。
【００６５】
有効な接続が、サービスウィンドウまたは設計要素ウィンドウに描かれたならば、WIDGETOBJECTMANAGERモジュールは、ONBLURイベント、ONCHANGEイベント、ONCLICKイベント、ONFOCUSイベント、ONLOADイベント、ONMOUSEOVERイベント、ONSELECTイベント、ONSUBMITイベント、ONUNLOADイベント、キーストロークイベント、または他のイベントなどの特定のイベントに関連するCONNECTORオブジェクトを作成することによって、この2つのサービスを論理的に接続する。CONNECTORオブジェクトは、受け取るサービスの入力ポートをリスナとして追加し、配送するサービスの出力ポートを呼出し側として追加し、WIDGETOBJECTMANAGERモジュールは、CONNECTORオブジェクトを、配送するサービスに追加する。少なくとも第1サービス401、少なくとも第1サービス401のそれぞれの位置およびサイズ、ならびに第1サービス401と第2サービス402との間の接続を識別する配列を、WINDOWOBSERVERモジュールを介して送ることができる。
【００６６】
有効な接続とは、第1のサービスまたは設計要素の出力ポートと第2のサービスまたは設計要素の入力ポートとの間の接続を指す。名前を出力するサービスの出力から、名前を受け取ることに基づいてアドレスを返すサービスの入力への接続が、有効な接続の例である。あるサービスの出力から同一のサービスの入力への接続が、無効な接続の例である。さらなる例で、有効な接続は、特定のタイプまたはフォーマットのデータを出力する第1のサービスまたは設計要素の出力と、その特定のタイプまたはフォーマットのデータを受け入れる第2のサービスまたは設計要素の入力との間の接続を指す。有効な接続は、ポートの間のそのような基礎になる接続のグラフィカル表現をも指すことができ、たとえば、第1サービスウィンドウ上の出力コントロール(第1サービスの出力ポートに関連する)と、第2サービスウィンドウ上の入力コントロール(第2サービスの入力ポートに関連する)との間に描かれる矢印によって視覚化されるはずである。他のタイプの無効な接続は、あるサービスの入力から発する接続、またはあるサービスの出力から別のサービスの出力に向かう接続である。
【００６７】
同様に、有効な選択は、有効な接続の定義または関連付けをもたらす、自動化された入力またはマウスイベントもしくはキーストロークなどの手動入力である。したがって、あるサービスウィンドウの出力コントロールを同一のサービスウィンドウの入力コントロールに接続することを試みるマウスイベントは、無効な接続を作成するはずであり、したがって、無効な選択である。
【００６８】
図6に、第1サービスウィンドウ404の出力が第2サービスウィンドウ405の入力に接続された状態での、例示的なウィジェットコンポジションプラットフォーム300のウィジェット出力領域301を示す。具体的に言うと、ポインティングデバイスを介するユーザ選択に基づいて、第1サービス404の「company」列に関連する出力コントロール409が、第2サービス405の入力ポート601に接続される。したがって、ASX Gainsサービスウィンドウ404の出力コントロール409は、単純にASXサービス404の出力ポート409(会社名に関連する)からGOOGLE(登録商標) Newsサービスウィンドウ405の入力コントロール601に線を描くことによって、GOOGLE(登録商標) Newsサービスウィンドウ405の入力コントロール601に接続される。
【００６９】
さらに、やはりこのユーザ選択に基づいて、矢印コネクタ602が、この2つのポートコントロールを視覚的に接続するために表示され、ユーザが、接続の表現を簡単に見、変更し、または削除することを可能にする。この特定の例では、さまざまなイベントに応じて、第1サービス404の「company」列に関連する会社名データを、第1サービスから選択的に出力し、第2サービス405を使用するクエリまたは他のコンテキスト化の基礎として第2サービス405に入力パラメータとして自動的に入力することができる。
【００７０】
ユーザが、会社「Sims Grp」または「Babcock」の上にマウスを置く(マウスオーバー)か、これをクリックするか、これにタブ移動するか、他の形で選択する場合に、これらのアクションは、「Sims Grp」または「Babcock」の会社名の第2サービス402への出力をトリガするイベントを構成することができる。これらの会社名を第1サービス401から受け取ることに基づいて、第2サービス402は、GOOGLE(登録商標) Newsサービスを使用して株価上昇の理由または原因を判定する際に「Sims Grp」または「Babcock」をルックアップすることができ、これによって、第1サービス401によって出力されるデータがコンテキスト化される。
【００７１】
LINEMANAGERモジュールを使用して、第1のサービスまたは設計要素の出力を第2のサービスまたは設計要素の入力に接続するユーザ選択が有効であるかどうかを検証する(S206)。あるサービスまたは設計要素の出力から同一のサービスまたは設計要素の入力への接続が、無効な接続の例である。第1サービスの出力を第2サービスの入力に接続する選択が有効と検証される場合には、第1サービスの出力を第2サービスの入力に接続する選択の表現を、LINEMANAGERモジュールを介して出力することができる。
【００７２】
LINEMANAGERモジュールは、接続が有効であることを検証し、その後、線を描く。線は、基礎になるモデル内の2つのサービスのイベントベースの接続の視覚的表現である。この接続を確立するために、WIDGETOBJECTMANAGERが呼び出されて、たとえば、第1サービス401(ASX Gainsサービス)が指定されたイベント(すなわち、MOUSEOVERイベント)のCONNECTORオブジェクトを既に有するかどうかを判定する。
【００７３】
第1サービス401が、指定されたイベントのCONNECTORオブジェクトを既に有する場合には、そのCONNECTORオブジェクトが、サービスの間の接続を定義するのに使用され、またはそのために変更される。第1サービス401が、指定されたイベントのCONNECTORオブジェクトを有しない場合には、その後、新しいCONNECTORオブジェクトが作成される。図6の例では、出力コントロール409に関連するCONNECTORオブジェクトが、リスナとして入力コントロール601を追加する。このCONNECTORオブジェクトは、MOUSEOVERイベントに割り当てられ(または再割り当てされ)、MOUSEOVERイベントがトリガされる時に、MOUSEOVERイベントによって選択されたデータが適当な出力ポートに送られるようになる。
【００７４】
したがって、CONNECTORオブジェクトは、ウィジェットのサービスまたは設計要素を接続し、各CONNECTORオブジェクトは、リスナおよび呼出し側の配列を含む。イベントの発生を検出した時に、CONNECTORオブジェクトは、登録されたリスナを呼び出す。リスナに対応するサービスウィンドウが設計モードで削除される時など、リスナの破壊を検出した時に、CONNECTORオブジェクトは、呼出し側に関連する配列からそのリスナを除去する。CONNECTORオブジェクトは、すべての可視のサービスメディエータインスタンスまたは設計要素インスタンス、およびその接続の可視の表現、ならびにさまざまなウィジェットオブジェクトの破壊をも管理することができる。
【００７５】
図7は、呼出し側、イベント、およびリスナの間の例示的関係を示すブロック図である。具体的に言うと、出力コントロール701から703を、単一のサービスウィンドウの異なる出力ポートに関連付けることができ、出力コントロール701から703のそれぞれを、3つの異なるサービスウィンドウの出力ポートに関連付けることができ、あるいは、出力コントロール701から703を、そのある組合せに関連付けることができる。同様に、入力コントロール705および706のそれぞれを、2つの異なるサービスウィンドウの入力ポートに関連付けることができ、あるいは、入力コントロール705と706との両方を、同一のサービスウィンドウの単一の入力ポートまたは複数の入力ポートに関連付けることができる。
【００７６】
図7の例では、CONNECTORオブジェクト707は、出力コントロール701のサービスウィンドウでのONCLICKイベント709の発生に基づいて、呼出し側出力コントロール701のリスナとして入力コントロール705を定義する配列を記憶する。CONNECTORオブジェクト710は、出力コントロール702のサービスウィンドウでのkeypressイベント711の発生に基づいて、呼出し側出力コントロール702のリスナとして入力コントロール705を定義する配列を記憶する。CONNECTORオブジェクト712は、出力コントロール703のサービスウィンドウでのkeypressイベント714の発生に基づいて、呼出し側出力コントロール703のリスナとして入力コントロール706を定義する配列を記憶する。CONNECTORオブジェクト715は、出力コントロール703のサービスウィンドウでのONCLICKイベント716の発生に基づいて、呼出し側出力コントロール703のリスナとして入力コントロール706を定義する配列を記憶する。
【００７７】
これに関して、単一の呼出し側出力ポートに、異なるイベントの割当および発生に依存して、複数のリスナ入力ポートを関連付けることができる。逆に、単一のリスナ入力ポートに、類似するイベント割当手法に基づいて、複数の呼出し側出力ポートを関連付けることもできる。したがって、サービスおよび設計要素を、最上位にリストされた株に関する情報を提供するサービスウィンドウ内のマウスオーバーなどのイベントを使用して接続することができ、これによって、別のサービスウィンドウに、ウィジェットの異なる領域内のマウスオーバーされた株式シンボルに基づいて動的に検索させ、ニュースを話させることができる。
【００７８】
図2に戻って、ウィジェットコンポジションプラットフォームを介して、ウィジェットエンジンの選択を受け取る(S207)。複数の異なるウィジェットエンジンを使用して、YAHOO!(登録商標)ウィジェットエンジンまたはMICROSOFT VISTA(登録商標)ガジェットエンジンなどのウィジェットを実施することができるので、ユーザは、どのウィジェットエンジンが自分の要求または要望に適するかを選択する機会を提示される。図3では、たとえば、サービスリポジトリ領域302が、それぞれYAHOO!(登録商標)ウィジェットエンジン、MICROSOFT VISTA(登録商標)ガジェットエンジン、またはGOOGLE(登録商標)ガジェットエンジンの選択を可能にするコントロール311から313をも含むが、他のウィジェットエンジンまたはガジェットエンジンを追加し、または置換することもでき、他のタイプのコントロールを使用してそのような選択を受け入れることができる。
【００７９】
したがって、ウィジェットコンポジションプラットフォームは、設計されたウィジェットの複数の展開オプションならびにユーザが異なるサービスをウィジェットに組み立てることを可能にする対話型ランタイム環境を提供する。ウェブブラウザ環境内で、互換性レイヤは、ウィジェットコンポジションプラットフォームがさまざまなウィジェットエンジンによって使用されるコードを実行することを可能にし、機能強化されたウィジェットコンポジションプラットフォーム300内でまたは機能強化されたウィジェットコンポジションプラットフォーム300の外部で選択されたウィジェットエンジンを使用して、同一の自動的に生成されたコードを実行する能力を提供する。
【００８０】
第1のサービスまたは設計要素、第2のサービスまたは設計要素、ならびに/あるいはウィジェットエンジンの選択を受け取ることに基づいて、コードを自動的に生成する(S209)。選択されたウィジェットエンジンによって呼び出される時に、このコードは、第1のおよび/または第2のサービスと通信するように動作可能なウィジェットを実施する。呼出しは、一般に、コンピュータプログラムの命令を実行するプロセスを指し、コードの走行、呼出し、アクセス、ロード、および/または実行を含む。
【００８１】
ウィジェットコンポジションプラットフォームを介するウィジェットエンジンの選択は、ウィジェットの展開または出力を実現する。ウィジェットの現在の状態は、WINDOWOBSERVERモジュールに記憶されたデータを介して決定され、このデータは、生成され適当なコードおよび生成された関連するファイルを組み立てるためにサーバに送り返される。
【００８２】
コードを、さらに、ウィジェットの外見を定義するか非サービス関連機能を実行するために設計要素の選択を受け取ることに基づいて、ウェブベースウィジェットコンポジションプラットフォームを介して第2サービスの選択を受け取ることに基づいて、あるいはWIDGETOBJECTMANAGERモジュールを介して第1サービスの出力を第2サービスの入力に接続する選択を受け取ることに基づいて、自動的に生成することができる。
【００８３】
コードは、選択されたウィジェットエンジンの機能性の少なくとも一部をエミュレートする互換性レイヤを使用してブラウザ環境内で呼び出され、これによって、ウィジェットコンポジションプラットフォーム内でウィジェットをシミュレートする(S210)。ウェブブラウザ環境内でウィジェット様挙動を可能にするために、ウィジェットエンジンは、互換性レイヤを介してシミュレートされ、この互換性レイヤは、1つまたは複数のウィジェットエンジンの機能の少なくとも一部を実施するJava（登録商標）Scriptファイルである。この形で、展開の前にウェブブラウザ内で、ならびに展開後に出力ウィジェット自体の中で、同一のまたは類似するコードを使用することが可能である。
【００８４】
図8は、生成されるコードと互換性レイヤおよびウィジェットエンジンによって生成される応答との間の例示的な関係を示すブロック図である。Java（登録商標）Scriptを使用してウェブブラウザ環境内で作成されるテキストフィールドに関して、新しい<INPUT>コンポーネントが作成される必要があり、プロパティがそのコンポーネントに割り当てられる。YAHOO!(登録商標)ウィジェットエンジンは、<INPUT>コンポーネントを認識しないが、類似する<TEXTAREA>コンポーネントを認識し、この<TEXTAREA>コンポーネントは、Java（登録商標）Scriptによって認識されない。したがって、互換性レイヤは、ウェブブラウザ環境内で<TEXTAREA>コンポーネントを実施する。この形で、自動的に生成されるコードは、そのコードが互換性レイヤを介してウェブブラウザ環境内で呼び出されているのか、選択されたウィジェットエンジンを使用して呼び出されているのかにかかわりなく、<TEXTAREA>コンポーネントを発行することができる。
【００８５】
図8では、ブロック801aは、ウィジェットの展開の前の自動的に生成されたコードを表し、ブロック801bは、展開の後の自動的に生成されたコードを表す。ブラウザ環境内で<INPUT>コンポーネントを生成するのではなく、ブロック801aは、<TEXTAREA>コンポーネントを生成する。この<TEXTAREA>コンポーネントは、互換性レイヤ802によってインターセプトされ、互換性レイヤ802は、この例ではYAHOO!(登録商標)ウィジェットエンジン804をエミュレートし、ウェブブラウザによって理解される、応答内の<INPUT>コンポーネントを生成する。展開されたならば、同一の機能を実行するために、ブロック801bは、同一の<TEXTAREA>コンポーネントを生成し、この<TEXTAREA>コンポーネントは、YAHOO!(登録商標)ウィジェットエンジン804によって理解される。
【００８６】
互換性レイヤを介してウェブブラウザ内で<TEXTAREA>コンポーネントを実施することによって、同一の自動的に生成されるコードを、展開の前にウェブブラウザ内で、および展開の後にウィジェットエンジンによって使用することができる。展開の際に、互換性レイヤコードは、自動的に生成されたコードと共には出力されず、ウィジェットエンジンは、自動的に生成されたコードを受け取り、処理する。このコードは、たとえば、<TEXTAREA>コンポーネントなどのコンポーネントを含むことができる。その結果、ブロック801aおよび801bに含まれるコードは、同一とすることができ、異なる参照を使用するのみとすることができる。
【００８７】
もう1つの例で、YAHOO!(登録商標)ウィジェットは、ウェブブラウザ環境内でテーブルを表すのに使用される、<TABLE>、<SPAN>、<A>などのHyperText Markup Language (HTML)要素を認識しないが、類似する<TEXT>要素および<FRAME>要素を認識する。したがって、互換性レイヤは、TEXT()実施態様とFRAME()実施態様との両方を記憶し、包括的テーブルレンダラが、<TEXT>要素および<FRAME>要素がどのように解析されるかを顧慮せず、展開後にこれらの要素を変更せずに、ウェブブラウザ環境内でこれらの要素を生成することを可能にする。具体的に言うと、ウィジェットコンポジションプラットフォーム内で呼び出された時に、<TEXT>要素および<FRAME>要素は、HTML <TABLE>を返す。YAHOO!(登録商標)ウィジェットエンジンによって呼び出された時に、ウィジェットエンジンは、これらのネイティブ要素を認識し、それ相応に応答する。
【００８８】
図9に、ウィジェットがプレビューされる状態での、例示的なウィジェットコンポジションプラットフォーム300を示す。具体的に言うと、モードセレクタ315が選択される時に、ウィジェットコンポジションプラットフォームは、設計モードからプレビュー(または「ランタイム」)モードに切り替え、ここで、ウィジェットがシミュレートされる。上で示したように、設計モードであっても、ウィジェットコンポジションプラットフォームは、選択されたサービスと通信し、さまざまなサービスウィンドウは、ユーザによって構成されたまたは事前定義の、リアルタイムデータを移植される。
【００８９】
しかし、プレビューモードでは、ウィジェットオブジェクト307の、出力ウィジェット内で示されないある種の視覚的要素が、除去されるか、強調表示されるか、透明にされる。たとえば、図9に示されているように、プレビューモードでは、さまざまなサービスウィンドウに関連する入力コントロールおよび出力コントロールが、サービスウィンドウの境界を定義する拡張可能フレーム(および関連すコントロール)と同様に、除去される。さらに、さまざまなサービスの間の接続の表現も、これらの接続を示すことが望まれない限り、隠すことができる。さらなる図示されていない実施態様では、サービスリポジトリ領域302または設計要素リポジトリ領域304などのウィジェットコンポジションプラットフォームの諸領域も、プレビューモードではビューから隠される。
【００９０】
第1のサービスまたは設計要素から第1データを受け取る(S211)。ウィジェットは、SOAP呼出しまたはHTTP呼出しを介して第1サービスと通信するように動作可能とすることができる。データを第1サービスから受け取ることができ、そのデータをウィジェットを介して表示することができる。図7では、たとえば、第1サービス401が、トップ5 ASX Gainsに関するデータを受け取り、受け取ったデータを表フォーマットで第1サービスウィンドウ404に表示する。第1サービスウィンドウ404は、入力コントロール407に接続された他のサービスまたは設計要素を有しないので、第1サービス401によって受け取られるデータは、包括的な、コンテキスト化されていないデータである。
【００９１】
ENVELOPEオブジェクトが、イベントを検出することに基づいて第1のサービスまたは設計要素の出力から第2のサービスまたは設計要素の入力に送られ、このENVELOPEオブジェクトは、第1のサービスまたは設計要素からの出力値をカプセル化する(S212)。ENVELOPEオブジェクトを、イベントを検出することに基づいて呼出し側からリスナに送ることができ、このENVELOPEオブジェクトは、呼出し側からの出力値をカプセル化する。図7では、たとえば、第1サービスウィンドウ404内の会社名「Babcock」でのマウスオーバーイベントの検出時に、この単語を含むENVELOPEオブジェクトが、第2サービスに入力として送られる。したがって、第2サービスは、入力パラメータとしてこの単語「Babcock」を使用する。
【００９２】
イベントが、配送するサービスによってトリガされたならば、このイベントのCONNECTORオブジェクトが、配送するオブジェクトの登録されたポートから出力データまたは値を受け取ることによって、すべてのリスナを呼び出す。出力データは、ENVELOPEオブジェクトにカプセル化され、受け取るサービスにこのENVELOPEオブジェクトを送る。他のデータの中で、ENVELOPEオブジェクトは、次のようにフォーマットされた、レシーバポート(「リスナ」)およびそのリスナのために要求されたデータの配列を記憶する。
array[receiverPort]=data
【００９３】
第2サービスの入力でENVELOPEオブジェクトを受け取ることに基づいて、第2のサービスまたは設計要素から第2データを受け取り(S214)、第2データを出力する(S215)。リスナは、ENVELOPEオブジェクトを受け取り、これにアクセスし、出力データまたは値をその入力ポートに割り当てる。エンベロープ内容が適当な入力ポートに割り当てられた後に、第2サービスが、関連する入力データを使用して再呼出しされ、再レンダリングされる。
【００９４】
上で示したように、マウスポインタがASX Gainsサービスウィンドウ404内の会社名「Babcock」の上で検出される時に、MOUSEOVERイベントがトリガされる。ASX Gainsサービス401は、CONNECTORオブジェクトがそのMOUSEOVERイベントに関して定義されていると判定し、レシーバポートの配列を記憶する新しいENVELOPEオブジェクトが、インスタンス化される。
【００９５】
接続が、ユーザによってASX Gains (第1)サービス401の出力コントロール409とGOOGLE(登録商標) News (第2)サービス402の入力コントロール601とASX Gainsサービス出力コントロール409との間で作成されたので、ASX Gainsサービスの出力コントロール409に関連するarray[1]は、出力データ(「Babcock」)を記憶する。ENVELOPEオブジェクトが、GOOGLE(登録商標) Newsサービスに送られ、GOOGLE(登録商標) Newsサービスは、そのENVELOPEオブジェクトにアクセスし、値「Babcock」を入力コントロール601に関連するポートに割り当てる。次に、GOOGLE(登録商標) Newsサービスが、再呼出しされ、単語「Babcock」に関する新しいGOOGLE(登録商標) News検索の結果を受け取り、処理し、表示する。
【００９６】
コードをユーザにアップロードし(S216)、これによってプロセス200を終了する(S217)。コードは、たとえばウィジェットをユーザデバイスにアップロードすることによって出力することができる。ウィジェットの現在の状態は、WINDOWOBSERVERモジュールに記憶されたデータを介して決定され、ここで、このデータは、生成され適当なコードを組み立てるためにサーバに送り返され、このコードが、データストリーム内でウェブブラウザに返される。このデータストリームは、たとえば、ユーザによるダウンロードのためのアーカイブ(たとえば、.ZIP)ファイル内にウィジェットファイルを出力する。
【００９７】
ウィジェットのコンポジションが終了した後に、そのウィジェットを、複数のウィジェットエンジンのうちの任意の1つに合わせて調整されたウィジェットとして展開することができる。展開されたウィジェットは、ウェブブラウザのWYSIWYG環境内のウィジェットのスナップショットである。展開マネージャモジュールは、互換性レイヤを使用して、選択されたサービスに基づいてウィジェットまたはガジェットを生成する。したがって、ユーザは、WYSIWYG環境を使用してウィジェットを作成し、そのウィジェットをダウンロードし、他者に送信し、または他の形で展開することができる。
【００９８】
図10に、ウィジェットがユーザに出力された状態での、例示的なウィジェットコンポジションプラットフォーム300を示す。具体的に言うと、コントロール311を選択する時に、ウィジェットの現在の状態が、WINDOWOBSERVERモジュールに記憶されたデータを介して判定される。このデータは、生成され、YAHOO!(登録商標)ウィジェットに適当なコードを組み立てるためにサーバに送り返される。返す（The returns）、データストリーム内でウェブブラウザへのコード、コードの受け取りは、ウェブブラウザにメニュー1001を表示させる。このメニューを使用して、ユーザは、「open」コントロール1002を使用して、.WIDGETファイルとして適切にフォーマットされたコードを呼び出すこと、または「save」コントロール1004を使用してコードを保存することを選択することができる。
【００９９】
図11に示されているように、「open」コントロール1002の選択時に(または保存し、保存されたコードを後に実行することによって)、ウィジェット1101が呼び出される。特定のウィジェットエンジンによって判定されるウィジェットプリファレンスを、ウィジェットプリファレンスメニュー1102を使用して変更することもできる。ウィジェット1101は、WYSIWYG環境内で設計されたので、機能強化されたウィジェットコンポジションプラットフォーム300を介して設計されたウィジェットオブジェクト307に類似してまたはこれと同一に見える。
【０１００】
図12および13にも、例示的なウィジェットコンポジションプラットフォーム300を示すが、これらは、それぞれ設計モードおよびプレビューモードでウィジェットに通信リンクを確立させる機能的設計要素を含む。短く言うと、ウィジェットオブジェクト1201は、第1サービスウィンドウ1202ならびに設計要素ウィンドウ1204および1205を含む。設計要素ウィンドウ1204は、mailto:アイコン1206を含み、設計要素ウィンドウ1205は、SKYPE(登録商標)アイコン1207を含む。
【０１０１】
サービスウィンドウ1202は、サービスウィンドウ1202に関連するサービスから受け取られたデータ(電子メールアドレスデータなど)を設計要素ウィンドウ1204に出力する出力コントロール1209を含む。サービスウィンドウ1202内の電子メールアドレスに対するまたはmailto:アイコン1206に対するMOUSEOVERイベントまたはONCLICKイベントは、電子メールメッセージをその電子メールアドレスに対して生成させる。同様に、サービスウィンドウ1202は、サービスウィンドウ1202に関連するサービスから受け取られたデータ(電話番号データなど)を設計要素ウィンドウ1205に出力する出力コントロール1210を含む。サービスウィンドウ1202内の電話番号に対するまたはSKYPE(登録商標)アイコン1207に対するMOUSEOVERイベントまたはONCLICKイベントは、SKYPE(登録商標)サービスを使用して、その電話番号に電話をかけさせる。図13では、矢印コネクタ1211などのさまざまな設計要素が、出力ウィジェットのより正確な描写をもたらすために省略されている。
【０１０２】
機能強化されたウィジェットコンポジションプラットフォームによって出力されるウィジェットは、シナリオを包括的に定義するのに、たとえばオンザフライでコンテキスト化されるさまざまなリンクされたデータの動的選択に基づいてパターンを検出するのに、使用することができる。直観的なWYSIWYGインターフェースを使用することによって、データを、非技術的な形で、単一のプラットフォーム内で、特殊化されたプログラミングの技量を必要とせずにコンテキスト化することができる。これに関して、ユーザは、ユーザが結果の情報に永久的にアクセスすることを可能にする形で、ユーザに関連する可能性があるシナリオを定義できるものとすることができる。したがって、展開されるウィジェットが、事前定義のデータコンテキスト化をオンデマンドで実行すると言うことができる。
【０１０３】
さらに、機能強化されたウィジェットコンポジションプラットフォームは、サービスからのデータの送信および受信を可能にするのに、およびユーザとサービスをホスティングするサーバとの間のユーザ認証を実現するのに必須のスクリプトおよびコードを準備する。したがって、ユーザは、もはや、基礎になるプロセスを実行するコードを手動で生成することを要求されず、技術的に経験のないユーザにとってさえ、ウィジェット作成がより容易になる。
【０１０４】
セキュリティフレームワークは、シングルサインオンまたは連合認証を可能にするデータソースからデータを取り出す機能性を提供する。セキュリティフレームワークは、ランタイム環境内のセキュリティ機能と展開されたウィジェット内のセキュリティ機能との間の相違をも管理し、ウィジェットがセキュアサービス呼出しをサポートすることを可能にする。さらに、ウィジェットは、ユーザが連合認証を介してログインしているかどうかを検出し、ユーザが必要な許可を有する場合に選択的にデータを表示することができる。
【０１０５】
他の手法と異なって、機能強化されたウィジェットコンポジションプラットフォームは、たとえばRSSフィード、ウェブサービス、および外部HTMLページを含む異なるデータソースおよび異なるタイプのデータソースからのデータの交換を提供する。さらに、機能強化されたウィジェットコンポジションプラットフォームは、ポータブルなソフトウェアとしてウィジェットを保存する能力を提供し、コミュニティまたはコンテンツ専門家が、技術的な技量または深いコンテンツの知識なしで、他者が使用できるサービスを作成することを可能にする。
【０１０６】
図14に、もう1つの一般的な実施態様による、機能強化されたウィジェットコンポジションプラットフォームを実施する例示的なシステム1400の外見を示す。短く言うと、システム1400は、デバイス1401、機能強化されたウィジェットコンポジションプラットフォームアプリケーションを含むサーバ1402、および少なくとも1つのサービスを含むサーバ1404を含む。下でより詳細に説明するように、デバイス1401は、ウェブベースウィジェットコンポジションプラットフォームを介して少なくとも第1サービスおよびウィジェットエンジンの選択を受け取ることに基づいてコードを生成するように構成されたプロセッサを含み、このコードは、選択されたウィジェットエンジンによって呼び出された時に、第1サービスと通信するように動作可能なウィジェットを実施する。
【０１０７】
さらなる詳細で、デバイス1401のハードウェア環境は、テキストおよびイメージをユーザに表示するディスプレイモニタ1408と、テキストデータおよびユーザコマンドをデバイス1401に入力するキーボード1409と、ディスプレイモニタ1408に表示されたオブジェクトをポイントし、選択し、調整するマウス1410と、固定ディスクドライブ1411と、取り外し可能ディスクドライブ1412と、テープドライブ1414と、ハードコピー出力デバイス1415と、コンピュータネットワーク接続1416と、ビデオおよびオーディオ検出器1417とを含む。
【０１０８】
ディスプレイモニタ1408は、デバイス1401によって使用されるソフトウェアアプリケーションならびにデバイス1401を動作させるのに必要なオペレーティングシステムプログラムの表示を含むグラフィックス、イメージ、およびテキストを表示する。ユーザは、キーボード1409を使用して、コンピュータオペレーティングシステムプログラム、ウェブブラウザ、および/またはウィジェットエンジンを動作させ、制御するためのコマンドおよびデータを入力する。ユーザは、マウス1410を使用して、デバイス1401およびデバイス1401で動作するアプリケーションとの対話およびそれらの制御の一部としてディスプレイモニタ1408に表示されるグラフィックスオブジェクトおよびテキストオブジェクトを選択し、調整する。マウス1410は、任意のタイプのポインティングデバイスとすることができ、ジョイスティック、トラックボール、タッチパッド、または他のポインティングデバイスとすることができる。
【０１０９】
ビデオおよびオーディオ検出器1417は、デバイス1401が、ディジタルイメージおよび/またはディジタルオーディオを取り込むことを可能にし、スキャナ、ディジタルカメラ、ディジタルビデオカメラ、マイクロホン、または他のディジタル入力デバイスとすることができる。機能強化されたウィジェットコンポジションプラットフォームを提供するのに使用されるソフトウェアを、固定ディスクドライブ1411などのコンピュータ可読記憶媒体上にローカルに格納することができる。
【０１１０】
さらなる実施態様で、固定ディスクドライブ1411自体は、redundant array of independent disks (「RAID」)など、複数の物理的ドライブユニットを含むことができ、あるいは、別々のコンピューティングユニットに物理的に配置されるディスクドライブファームまたはディスクアレイとすることができる。そのようなコンピュータ可読記憶媒体は、デバイス1401が、取り外し可能記憶媒体および取り外し不能記憶媒体に格納された、コンピュータ実行可能処理ステップ、アプリケーションプログラム、および類似物にアクセスすることを可能にする。
【０１１１】
無線または有線のコンピュータネットワーク接続1416は、モデム接続、イーサネット（登録商標）を含むローカルエリアネットワーク(「LAN」)接続、またはディジタル加入者回線(「DSL」)、ケーブル高速インターネット接続、ダイヤルアップ接続、T-1回線、T-3回線、光ファイバ接続、もしくは衛星接続などのブロードバンド広域ネットワーク(「WAN」)接続とすることができる。ネットワーク1406は、LANネットワーク、会社または政府のWANネットワーク、インターネット、または他のネットワークのうちの1つまたは複数とすることができる。
【０１１２】
コンピュータネットワーク接続1416は、有線または無線のコネクタを使用する。例の無線コネクタは、たとえば、INFRARED DATA ASSOCIATION(登録商標)(「IrDA(登録商標)」)無線コネクタ、光無線コネクタ、米国電気電子技術者協会(INSTITUTE OF ELECTRICAL AND ELECTRONICS ENGINEERS(登録商標))(「IEEE(登録商標)」) Standard 802.11無線コネクタ、BLUETOOTH(登録商標)無線コネクタ、ニアフィールド通信(「NFC」)コネクタ、直交周波数分割多重(「OFDM」)ウルトラワイドバンド(「UWB」)無線コネクタ、time-modulated ultra wide band (「TM-UWB」)無線コネクタ、または他の無線コネクタを含む。例の有線コネクタは、たとえば、IEEE(登録商標)-1394 FIREWIRE(登録商標)コネクタ、Universal Serial Bus (「USB」)コネクタ、シリアルポートコネクタ、パラレルポートコネクタ、または他の有線コネクタを含む。
【０１１３】
取り外し可能ディスクドライブ1412は、デバイス1401からデータをオフロードするかデバイス1401にデータをアップロードするのに使用される取り外し可能ストレージデバイスである。取り外し可能ディスクドライブ1412は、フロッピディスクドライブ、IOMEGA(登録商標) ZIP(登録商標)ドライブ、コンパクトディスク読取専用メモリ(「CD-ROM」)ドライブ、CD-Recordableドライブ(「CD-R」)、CD-Rewritableドライブ(「CD-RW」)、フラッシュメモリ、USBフラッシュドライブ、外部ハードディスクドライブ、サムドライブ、ペンドライブ、キードライブ、High-Density Digital Versatile Disc (「HD-DVD」)光ディスクドライブ、Blu-Ray光ディスクドライブ、Holographic Digital Data Storage (「HDDS」)光ディスクドライブ、あるいは、DVD-Recordable (「DVD-R」または「DVD+R」)、DVD-Rewritable (「DVD-RW」または「DVD+RW」)、またはDVD-RAMなどのさまざまな記録可能もしくは書換可能なディジタル多用途ディスク(「DVD」)ドライブのうちの1つとすることができる。オペレーティングシステムプログラム、アプリケーション、およびさまざまなデータファイルが、ディスクに格納され、このディスクは、固定ディスクドライブ1411または取り外し可能ディスクドライブ1412の取り外し可能媒体に格納される。
【０１１４】
テープドライブ1414は、デバイス1401からデータをオフロードするかデバイス1401にデータをアップロードするのに使用されるテープストレージデバイスである。テープドライブ1414は、quarter-inch cartridge (「QIC」)、4mmディジタルオーディオテープ(「DAT」)、8mm digital linear tape (「DLT」)ドライブ、または他のタイプのテープとすることができる。
【０１１５】
ハードコピー出力デバイス1415は、オペレーティングシステムプログラムおよびアプリケーションに出力機能を提供する。ハードコピー出力デバイス1415は、テキストデータもしくはイメージデータまたはテキストデータもしくはイメージデータのグラフィカル表現を含む、有形の出力オブジェクトを作るプリンタまたは任意の出力デバイスとすることができる。ハードコピー出力デバイス1415は、デバイス1401に直接に接続されるものとして図示されているが、そうである必要はない。たとえば、ハードコピー出力デバイス1415を、有線ネットワークまたは無線ネットワークなどのネットワークインターフェースを介してデバイス1401に接続することができる。
【０１１６】
さらに、デバイス1401は、図14でデスクトップPCとして示されているが、さらなる実施態様で、デバイス1401を、ラップトップ機、ワークステーション、ミッドレンジコンピュータ、メインフレーム、組込みシステム、電話機、ハンドヘルドコンピュータ、タブレットコンピュータ、PDA、または他のタイプのコンピュータとすることができる。
【０１１７】
図15は、図14に示された1つのコンピュータの内部アーキテクチャを示すブロック図である。このコンピューティング環境は、オペレーティングシステムまたはアプリケーションを含むコンピュータ命令が処理される中央処理装置(「CPU」)1501と、グラフィック、イメージ、およびテキストをディスプレイモニタ1408にレンダリングする通信インターフェースおよび処理機能を提供するディスプレイインターフェース1502と、キーボード1409への通信インターフェースを提供するキーボードインターフェース1504と、マウス1410または同等のポインティングデバイスへの通信インターフェースを提供するポインティングデバイスインターフェース1505と、ビデオおよびオーディオ検出器1417への通信インターフェースを提供するディジタル入力インターフェース1506と、ハードコピー出力デバイス1415への通信インターフェースを提供するハードコピー出力デバイスインターフェース1508と、コンピュータ命令およびデータがコンピュータCPU 1501による処理のために不揮発性メモリデバイスに記憶される、ランダムアクセスメモリ(「RAM」)1510と、基本的な入出力(「I/O」)、スタートアップ、またはキーボード1409からのキーストロークの受け取りなどの基本的なシステム機能の不変の低水準システムコードまたはデータが不揮発性メモリデバイスに格納される、読取専用メモリ(「ROM」)1511と、オペレーティングシステム1521、アプリケーションプログラム1522(ウェブブラウザアプリケーション1523、ウィジェットエンジン1524、および他のアプリケーション1525を必要に応じて含む)、およびデータファイル1526を含むファイルが格納される、ストレージ1520または他の適切なタイプのメモリ(たとえば、ランダムアクセスメモリ(「RAM」)、読取専用メモリ(「ROM」)、プログラマブル読取専用メモリ(「PROM」)、消去可能プログラマブル読取専用メモリ(「EPROM」)、電気的消去可能プログラマブル読取専用メモリ(「EEPROM」)、磁気ディスク、光ディスク、フロッピディスク、ハードディスク、取り外し可能カートリッジ、フラッシュドライブなど)と、コンピュータネットワーク接続1416を介するネットワーク1406への通信インターフェースを提供するコンピュータネットワークインターフェース1516とを含む。構成するデバイスおよびコンピュータCPU 1501は、コンピュータバス1527を介して互いに通信する。
【０１１８】
ウィジェットエンジン1524は、TAFRI (商標)ウィジェットエンジン、WINDOWS（登録商標） SIDEBAR(登録商標)ガジェットエンジンもしくはKAPSULES (商標)ガジェットエンジンなどのMICROSOFT(登録商標)ガジェットエンジン、KONFABULTOR (商標)ウィジェットエンジンなどのYAHOO!(登録商標)ウィジェットエンジン、APPLE(登録商標) DASHBOARD(登録商標)ウィジェットエンジン、GOOGLE(登録商標)ガジェットエンジン、KLIPFOLIO(登録商標)ウィジェットエンジン、OPERA (商標)ウィジェットエンジン、WIDSETS (商標)ウィジェットエンジン、SAP(登録商標)ウィジェットエンジンもしくはガジェットエンジン、独自のウィジェットエンジンもしくはガジェットエンジン、または、デスクトップ上で物理的にもたらされたアプレットのホストシステムソフトウェアを提供する他のウィジェットエンジンもしくはガジェットエンジンとすることができる。
【０１１９】
短く言うと、コンピュータプログラム製品は、ディスク1520すなわち機械可読記憶媒体内で有形に実施される。コンピュータプログラム製品は、機械によって読み取られた時に、データ処理装置に、ウェブベースウィジェットコンポジションプラットフォームを介して少なくとも第1サービスおよびウィジェットエンジンの選択を受け取ることに基づいてコードを生成させるように動作する命令を含み、このコードは、選択されたウィジェットエンジンによって呼び出された時に、第1サービスと通信するように動作可能なウィジェットを実施する。
【０１２０】
RAM 1510は、オペレーティングシステム、アプリケーションプログラム、およびデバイスドライバなどのソフトウェアプログラムの実行中にコンピュータCPU 1501にすばやいRAMストレージを提供するために、コンピュータバス1527とインターフェースする。より具体的には、コンピュータCPU 1501は、ソフトウェアプログラムを実行するために、固定ディスクドライブ1411または他の媒体からRAM 1510のフィールドにコンピュータ実行可能プロセスステップをロードする。データは、RAM 1510に格納され、ここで、データは、実行中にコンピュータCPU 1501によってアクセスされる。
【０１２１】
図15に示されているように、デバイス1401は、オペレーティングシステム1521と、ワードプロセッシング、スプレッドシート、プレゼンテーション、ゲーミング、ウェブブラウジング、Java（登録商標）Scriptエンジン、または他のアプリケーションなどのアプリケーションプログラム1522とのコンピュータ実行可能コードを記憶する。上で説明した実施態様を使用して機能強化されたウィジェットコンポジションプラットフォームを提供することが可能ではあるが、本開示による機能を、ダイナミックリンクライブラリ(「DLL」)、またはAPPLE(登録商標) SAFARI(登録商標)ウェブブラウザもしくはMICROSOFT(登録商標) INTERNET EXPLORER(登録商標)ウェブブラウザなどのインターネットウェブブラウザなどの他のアプリケーションプログラムへのプラグインとして実施することも可能である。
【０１２２】
コンピュータCPU 1501は、INTEL(登録商標)またはAMD(登録商標)のプロセッサ、POWERPC(登録商標)プロセッサ、MIPS(登録商標)縮小命令セットコンピュータ(「RISC」)プロセッサ、SPARC(登録商標)プロセッサ、ACORN(登録商標) RISC Machine (「ARM(登録商標)」)アーキテクチャプロセッサ、HP ALPHASERVER(登録商標)プロセッサ、またはメインフレーム用の独自コンピュータプロセッサを含む複数の高性能コンピュータプロセッサのうちの1つである。追加の配置で、コンピュータCPU 1501は、高性能ワークステーションおよびサーバに見られる複数CPU構成またはメインフレームに見られる複数のスケーラブル処理ユニットを含む、複数の処理ユニットである。
【０１２３】
オペレーティングシステム1521は、INTEL(登録商標)およびPOWERPC(登録商標)ベースのワークステーションおよびサーバ用のAPPLE(登録商標) MAC OS X(登録商標)か、MICROSOFT(登録商標) WINDOWS（登録商標） NT(登録商標)/WINDOWS(登録商標) 2000/WINDOWS(登録商標) XP Workstationか、MICROSOFT(登録商標) WINDOWS（登録商標） VISTA(登録商標)/WINDOWS（登録商標） NT(登録商標)/WINDOWS(登録商標) 2000/WINDOWS(登録商標) XP Serverか、IBM(登録商標)ワークステーションおよびサーバ用のAIX(登録商標)、SUN(登録商標)ワークステーションおよびサーバ用のSUNOS(登録商標)、INTEL(登録商標) CPUベースのワークステーションおよびサーバ用のLINUX(登録商標)、HP(登録商標)ワークステーションおよびサーバ用のHP UX WORKLOAD MANAGER(登録商標)、SGI(登録商標)ワークステーションおよびサーバ用のIRIX(登録商標)、Digital Equipment Corporationコンピュータ用のVAX/VMS、HP ALPHASERVER(登録商標)ベースのコンピュータ用のOPENVMS(登録商標)を含むさまざまなUNIX(登録商標)フレイバーのオペレーティングシステムか、モバイルデバイス用のSYMBIAN OS(登録商標)、NEWTON(登録商標)、IPOD(登録商標)、WINDOWS（登録商標） MOBILE(登録商標)またはWINDOWS（登録商標） CE(登録商標)、PALM(登録商標)、NOKIA(登録商標) OS (「NOS」)、OSE(登録商標)、またはEPOC(登録商標)か、コンピュータまたは組込みシステム用の独自オペレーティングシステムとすることができる。オペレーティングシステム1521用のアプリケーション開発のプラットフォームまたはフレームワークは、BINARY RUNTIME ENVIRONMENT FOR WIRELESS(登録商標)(「BREW(登録商標)」)、Java（登録商標） Platform, Micro Edition (「Java（登録商標） ME」)またはJava（登録商標） 2 Platform, Micro Edition (「J2ME(登録商標)」)、PYTHON (商標)、FLASH LITE(登録商標)、またはMICROSOFT(登録商標).NET Compactとすることができる。
【０１２４】
図14および15は、機能強化されたウィジェットコンポジションを実現するように構成されたプログラムコード、プログラムステップ、またはプロセスステップを実行するコンピューティングシステムの1つの可能な実施態様を示すが、他のタイプのコンピュータも、使用することができる。
【０１２５】
形式的な問題として、用語「ユーザ」は、これらのプロセスと対話する実体を記述するのに一貫して使用されてきたが、そのような一般化は、さまざまな異なる、オーバーラップする、またはオーバーラップしない状態でこれらのプロセスと対話する、複数の、関連するまたは関連しない、生きているまたは自動化された実体または存在を記述することも意図されている。類似する調子で、用語「選択」は、本明細書全体を通じて、人間による手動選択、非人間による自動選択、またはこれらのある組合せを表すことが意図されている。
【０１２６】
最後に、簡単にするために、本明細書線全体を通じて、用語「Java（登録商標）Script」は、SUN MICROSYSTEMS(登録商標) JAVA（登録商標）SCRIPT(登録商標)プログラミング言語を指すことが意図され、用語「XML」は、「eXtensible Markup Language」を指すことが意図されている。さらに、用語「ウィジェット」に言及する場所は、必ず用語「ガジェット」、「コントロール」、または「ミニアプリケーション」に置換することができる。
【０１２７】
複数の実施態様を説明した。それでも、本開示の趣旨および範囲から逸脱せずに、さまざまな変更を行えることを理解されたい。したがって、他の実施態様は、添付の特許請求の範囲に含まれる。
【図面の簡単な説明】
【０１２８】
【図１】1つの一般的な実施態様による例示的なシステムを示すブロック図である。
【図２】もう1つの一般的な実施態様による例示的なプロセスを示す流れ図である。
【図３】ある状態での、もう1つの一般的な実施態様による例示的なウィジェットコンポジションプラットフォームを示す図である。
【図４】ある状態での、もう1つの一般的な実施態様による例示的なウィジェットコンポジションプラットフォームを示す図である。
【図５】例示的なサービスメディエータインスタンスを示すブロック図である。
【図６】ある状態での、もう1つの一般的な実施態様による例示的なウィジェットコンポジションプラットフォームを示す図である。
【図７】呼出し側、イベント、およびリスナの間の例示的関係を示すブロック図である。
【図８】生成されるコードと互換性レイヤおよびウィジェットエンジンによって生成される応答との間の例示的な関係を示すブロック図である。
【図９】ある状態での、もう1つの一般的な実施態様による例示的なウィジェットコンポジションプラットフォームを示す図である。
【図１０】ある状態での、もう1つの一般的な実施態様による例示的なウィジェットコンポジションプラットフォームを示す図である。
【図１１】例示的なウィジェットを示す図である。
【図１２】ある状態での、もう1つの一般的な実施態様による例示的なウィジェットコンポジションプラットフォームを示す図である。
【図１３】ある状態での、もう1つの一般的な実施態様による例示的なウィジェットコンポジションプラットフォームを示す図である。
【図１４】もう1つの一般的な実施態様による例示的なシステムの外見を示す図である。
【図１５】図14に示されたデバイスの内部アーキテクチャを示すブロック図である。
【符号の説明】
【０１２９】
100    システム
101    デバイス
102    サーバ
104    サーバ
105    ネットワーク
106    プロセッサ
107    ウェブブラウザ
109    ウィジェットエンジン
110    出力媒体
111    機能強化されたウィジェットコンポジションプラットフォームアプリケーション
112    サービス
200    プロセス
300    ウィジェットコンポジションプラットフォーム
301    ウィジェット出力領域
302    サービスリポジトリ領域
304    設計要素リポジトリ領域
305    背景イメージリポジトリ領域
306    モードセレクタ領域
307    ウィジェットオブジェクト
309    展開可能ツリーコントロール
310    テキストフィールド
311    「Deploy Yahoo Widget」コントロール
312    「Deploy Vista Gadget」コントロール
313    「Deploy Google Gadget」コントロール
315    モードセレクタコントロール
401    サービス
402    サービス
404    サービスウィンドウ
405    サービスウィンドウ
406    フレーム
407    入力
409    出力コントロール
410    出力コントロール
411    出力コントロール
412    出力コントロール
500    サービスメディエータインスタンス
501    サービスリクエスタコンポーネント
502    インタープリタコンポーネント
504    レンダラコンポーネント
505    生データ結果
506    +SOAPCALL()
507    SERVICEDATAMODELオブジェクト
509    +INTERPRET()
510    +RENDER()関数
601    入力ポート
601    入力コントロール
602    矢印コネクタ
701    出力コントロール
702    出力コントロール
703    出力コントロール
705    入力コントロール
706    入力コントロール
707    CONNECTORオブジェクト
709    ONCLICKイベント
710    CONNECTORオブジェクト
711    keypressイベント
712    CONNECTORオブジェクト
714    keypressイベント
715    CONNECTORオブジェクト
716    ONCLICKイベント
801a    ブロック
801b    ブロック
802    互換性レイヤ
804    YAHOO!(登録商標)ウィジェットエンジン
1001    メニュー
1002    「open」コントロール
1004    「save」コントロール
1101    ウィジェット
1102    ウィジェットプリファレンスメニュー
1201    ウィジェットオブジェクト
1202    第1サービスウィンドウ
1204    設計要素ウィンドウ
1205    設計要素ウィンドウ
1206    mailto:アイコン
1207    SKYPE(登録商標)アイコン
1209    出力コントロール
1210    出力コントロール
1211    矢印コネクタ
1400    システム
1401    デバイス
1402    サーバ
1404    サーバ
1406    ネットワーク
1408    ディスプレイモニタ
1409    キーボード
1410    マウス
1411    固定ディスクドライブ
1412    取り外し可能ディスクドライブ
1414    テープドライブ
1415    ハードコピー出力デバイス
1416    コンピュータネットワーク接続
1417    ビデオおよびオーディオ検出器
1501    中央処理装置(「CPU」)
1502    ディスプレイインターフェース
1504    キーボードインターフェース
1505    ポインティングデバイスインターフェース
1506    ディジタル入力インターフェース
1508    ハードコピー出力デバイスインターフェース
1510    ランダムアクセスメモリ(「RAM」)
1511    読取専用メモリ(「ROM」)
1516    コンピュータネットワークインターフェース
1520    ストレージ
1521    オペレーティングシステム
1522    アプリケーションプログラム
1523    ウェブブラウザアプリケーション
1524    ウィジェットエンジン
1525    他のアプリケーション
1526    データファイル
1527    コンピュータバス
【図１】
2008305411.tif 000003
【図２】
2008305411.tif 000004
【図５】
2008305411.tif 000005
【図７】
2008305411.tif 000006
【図８】
2008305411.tif 000007
【図１５】
2008305411.tif 000008
【図３】
2008305411.tif 000009
【図４】
2008305411.tif 000010
【図６】
2008305411.tif 000011
【図９】
2008305411.tif 000012
【図１０】
2008305411.tif 000013
【図１１】
2008305411.tif 000014
【図１２】
2008305411.tif 000015
【図１３】
2008305411.tif 000016
【図１４】
2008305411.tif 000017