発明の詳細な説明
以下の記載において本発明の実施形態が完全に理解されるように説明目的のために具体的な詳細を記載する。しかしながら、さまざまな実施形態がこれらの特定の詳細なしで実施されてもよいということは明白であろう。図および記載は、限定的であるように意図されない。
イントロダクション
Java EEは、今日のエンタープライズアプリケーションの多くの基礎をなす標準的で、ロバストで、スケーラブルで、かつ、セキュアなプラットフォームである。Java EEは、Java言語を使用して、多層アプリケーションを構築するための仕様のセットを提供する。過去においては、アプリケーションのロバスト性と、ロバスト性を達成するのに必要とされる複雑性との間に直接的な相関性が存在した。しかしながら、オラクルADF(Oracle ADF)のようなADFの出現により、標準パターンおよびプラクティスに従うことによって非常にリッチなJava EEアプリケーションのインプリメンテーションが提供され得、労力が大幅に低減される。
サービス指向アーキテクチャ(SOA:Service Oriented Architecture)原理を利用するコンポジットアプリケーションを組織が構築する必要性の増加により、デベロッパは、非常にアジャイルなアプリケーションを作成することを強いられる。アジャイルなアプリケーションにおいてこれらのベストプラクティスを実現することは通常、かなりの量のインフラストラクチャコードを記述することを伴い、これにより、はじめてJava EEアプリケーションを構築するデベロッパにとって別の支障が加わる。ロバストで、パフォーマンスが高く(performant)、メンテナンス可能なアプリケーションの提供に加えて、オラクルADFは、アジャイルなSOAベースのアプリケーションを実現するようインフラストラクチャコードを提供し、これにより、組織が「自作する(rolling their own)」ことに伴う労力が除去される。
オラクルADFはさらに、Oracle JDeveloper 11g開発ツールを通じて、Java EE開発に対して視覚的および宣言的なアプローチ(visual and declarative approach)を提供する。オラクルADFは、モデル・ビュー・コントローラデザインパターンを実現し、かつ、オブジェクト/リレーショナルマッピング、データ持続性、再使用可能なコントローラレイヤー、リッチウェブユーザインターフェイスフレームワーク、UIへのデータ結合、セキュリティ、およびカスタマイゼーションといったエリアに到るソリューションでこのアーキテクチャのすべてのレイヤーをカバーする統合ソリューションを提供する。コアウェブベースMVCアプローチを超えて、ADFはさらに、オラクルSOAと、完全なコンポジットアプリケーションの作成の簡素化するWebCenter Portalフレームワークとを統合する。
たとえば、オラクルADFは、ADFにおけるビルトインビジネスサービスにサービスインターフェイスを結合することによって、サービスとしてデータを公開するアジャイルなアプリケーションを開発することを容易にする。ビジネスサービスインプリメンテーションの詳細のこの分離は、メタデータを介してオラクルADFにおいて実行される。このメタデータドリブンのアーキテクチャの使用により、アプリケーションデベロッパが、サービスがどのようにアクセスされるかの詳細ではなく、ビジネスロジックおよびユーザ体験に集中することが可能になる。
オラクルADFは、ADFモデルレイヤーにおいてメタデータにこれらのサービスのインプリメンテーションの詳細を格納する。これにより、デベロッパは、ユーザインターフェイスを修正することなく、サービスを交換することが可能になり、アプリケーションが非常にアジャイルになる。さらに、ユーザインターフェイスを作成するデベロッパは、ビジネスサービスアクセスの詳細に悩まされる必要がない。代わりに、デベロッパはアプリケーションインターフェイスおよび相互作用ロジックの開発に集中することができる。ユーザ体験を作り出すことは、ビジュアルページデザイナに所望のビジネスサービスをドラッグアンドドロップし、どのタイプのコンポーネントがそのデータを表わすべきか示すといったように単純であり得る。
図1は、本発明に従った一実施形態において、アプリケーション開発フレームワーク(ADF)100を示すブロック図である。図1は、この開示において示される1つ以上の発明のさまざまな実施形態または実現例を組み込み得るシステムの簡略図である。図1は、本願明細書において開示される発明の実施形態または実現例を単に例示しているだけであり得、請求の範囲に記載されるような任意の発明の範囲を限定するべきでない。当業者は、この開示および本願明細書において示される教示を通じて、図において示される実施形態または実現例に対する他の変形例、修正例および/または代替例を認識し得る。
ADF100は一例ではオラクルADFとして具現化され得る。したがって、ADF100はモデル・ビュー・コントローラ(MVC:Model-View-Controller)デザインパターンに基づく。MVCアプリケーションは、1)データソースとの相互作用を扱うとともにビジネスロジックを実行するモデルレイヤーと、2)アプリケーションユーザインターフェイスを扱うビューレイヤーと、3)アプリケーションフローを管理するとともにモデルレイヤーとビューレイヤーとの間のインターフェイスとして機能するコントローラとに分離される。これらの3つのレイヤーにアプリケーションを分離することによって、アプリケーションを横断するコンポーネントのメンテナンスおよび再使用が簡素化される。他のレイヤーからの各レイヤーの独立によって、疎結合されたサービス指向アーキテクチャ(SOA)が得られる。
この実施形態において、エンタープライズアプリケーションを形成するモジュールが、当該モジュールADF100内に存在するのが示され、ADFを使用して開発され、次いで、ADF100のコンテキストにおいて実行されることを示す。簡明性のために、JAVAプログラミング言語と、オラクル社から入手可能な開発ツールであるJDeveloper 10.1.3の一部として利用可能なオラクルADFとを使用してアプリケーションが開発されると仮定して、ADFのさまざまな内部の詳細は示されない。しかしながら、以下に記載される本発明の特徴は、関連する技術の当業者には明らかであろうように、本願明細書において提供される開示を読むことによって、プログラミング言語およびアプリケーション開発フレームワークの任意の所望の組合せを用いて実現され得る。
さまざまな実施形態において、ADF100により、アプリケーションが複数のレイヤーの形態で開発され、各レイヤーは、あらかじめ定義された仕様に従って所望のロジックを実現するコードモジュール/ファイルを含む。したがって、一実施形態において、ADF100によって、アプリケーションは、アプリケーションのユーザインターフェイスを提供するコードモジュール/ファイルを含むビューレイヤー110と、アプリケーションのフローを制御するコードモジュールを含むコントローラレイヤー120と、基礎をなすデータに対して抽象化レイヤーを提供するデータ/コードモジュールを含むモデルレイヤー130と、さまざまなソースからのデータへのアクセスを提供するとともにビジネスロジックを扱うコードモジュールを含むビジネスサービスレイヤー140といった4つのレイヤーとして開発され得る。
オラクルADFにより、レイヤーの各々を実現する際に、デベロッパは使用することを好む技術を選択する。図1は、オラクルADFアプリケーションを構築する場合に、デベロッパに利用可能なさまざまなオプションを示す。Java EEアプリケーションのさまざまなコンポーネントを統合し開発を非常にフレキシブルにする接着剤(glue)がオラクルADFモデルレイヤーである。EJB、Web Services、JavaBeans、JPA/EclipseLink/TopLinkオブジェクトおよび他の多くのものは、すべてオラクルADFモデルのためのビジネスサービスとして使用され得る。ビューレイヤーは、JSF、デスクトップスイングアプリケーション(Desktop Swing Application)、およびMSオフィスフロントエンドを用いて実装されるウェブベースのインターフェイスと、モバイルデバイスのためのインターフェイスとを含み得る。
そのようなレイヤーアプローチを使用するアプリケーションの開発はしばしば、さまざまなアプリケーションを横断するコンポーネント/コードモジュールのメンテナンスおよび再使用を簡素化するということが理解され得る。さらに他のレイヤーからの各レイヤーの独立は、開発されたビジネス/エンタープライズアプリケーションを複数/異なるシステム上で展開する場合に望ましくあり得る疎結合のサービス指向アーキテクチャ(SOA)に繋がる。
1つの局面において、ビューレイヤー110は、開発されるアプリケーションのユーザインターフェイスを表わす。ビューレイヤー110は、各々がユーザインターフェイスのすべてまたは一部を提供しビュータイプに対応するさまざまな態様でアクセス可能であるデスクトップ、モバイルおよびブラウザベースのビューを有するのが示される。たとえば、ウェブページは、対応するURLを含むクライアント要求を受信することに応答してアプリケーションによって送信され得る。その後、ウェブページは、要求を行ったクライアントシステムに関連付けられるディスプレイユニット(図示せず)上にブラウザによって表示され得、これにより、要求を行ったクライアントシステムのユーザがエンタープライズアプリケーションと相互作用することが可能になる。オラクルADFは、ビジネスサービスの再使用を可能にするビジネスサービスへのマルチチャンネルアクセスと、Webクライアント、クライアント・サーバ・スイングデスクトップベース・アプリケーション(client-server swing desktop-based application)、マイクロソフトエクセルスプレッドシート、または、スマートフォンのようなモバイルデバイスなどからのアクセスとをサポートする。
(ウェブページのような)ビューレイヤーを形成するコードファイル/モジュールは、ハイパーテキストマークアップ言語(HTML:hypertext markup language)、Javaサーバページ(JSP:Java server page)およびJavaサーバフェイス(JSF:Java Server Face)のうちの1つ以上を用いて実現され得る。代替的には、SwingのようなJavaコンポーネントおよび/または拡張マークアップ言語(XML:extensible markup language)を使用してユーザインターフェイスが実現され得る。さらに示されるように、ユーザインターフェイスは、マイクロソフトによるワードおよびエクセルのようなデスクトップアプリケーションについてのユーザの経験および熟知性にレバレッジをかけ得る。
上に示されるように、ユーザが開発した関連するコード/データモジュールが上記レイヤーの各々において提供される。しかしながら、各レイヤーは典型的に、ADF100によって提供される他のあらかじめ定義されたコード/データモジュールを含む。たとえば、あらかじめ定義されたモジュールのうちのいくつかは、ウェブページを開発するためのテンプレート、開発したコードに所望の機能を含ませるためのテンプレートなどとして、開発の間に使用され得る。(URL書換モジュールのような)他のあらかじめ定義されたモジュールは、開発されたアプリケーションと共に展開され得、エンタープライズアプリケーションの実行の間に、付加的な機能(内部名への要求されたURLのマッピング)をユーザに提供し得る。
コントローラレイヤー120は、アプリケーションのフローを制御するコードモジュール/ファイルを含む。各コントローラオブジェクトは、ビューレイヤー110において情報を提示する所望の態様に従って実現されるソフトウェア命令および/またはデータを含む。所望の態様は、別のウェブページにおけるリンクがユーザによってクリック/選択される場合に特定のウェブページが表示されることと、エラーが実行の間に発生する場合に、格納/抽出されるべき特定のデータを示すページが表示されることなどとを含み得る。
1つの局面において、コントローラレイヤー120はアプリケーションフローを管理し、ユーザ入力を扱う。たとえば、サーチボタンがページ上でクリックされると、コントローラは、どのアクションを実行するべきか(サーチを行う)と、どこにナビゲートするべきか(結果ページ)とを決定する。JDeveloperにおいて、ウェブベースのアプリケーションについては、JSFコントローラ機能を拡張する標準的なJSFコントローラまたはADFコントローラといった2つのコントローラオプションが存在する。どちらのコントローラが使用されるかにかかわらず、アプリケーションフローは典型的に、ページおよびナビゲーションルールをダイアグラムにレイアウトすることによってデザインされる。アプリケーションのフローは、より小さく再使用可能なタスクフローへ細分され得、フローにおけるメソッドコールおよび決定ポイントのような非視覚的コンポーネントを含み、単一の包含ページの領域の内で実行される「ページフラグメント」フローを作成する。
コントローラレイヤー120を形成するコードモジュール/ファイルはしばしば、クライアント要求を受信するととともに対応する応答として所望のウェブページを送信するJavaサーブレットとして実現される。また、たとえば、コントローラオブジェクトは、Apache Jakarta Strutsコントローラとして、または、JSF規格に従って実現され得る。
モデルレイヤー130は、上に論じたコントローラオブジェクトのような、他のレイヤーにおいてさまざまなビジネスサービスを使用するオブジェクトに当該さまざまなビジネスサービスを接続するか、または、示されるように当該さまざまなビジネスサービスを直接的にデスクトップアプリケーションに接続するデータ/コードモジュールを含む。モデルレイヤー130の各抽象データオブジェクトは、任意のタイプのビジネスサービスにアクセスするために使用され得る対応するインターフェイスを提供し、基礎をなすビジネスサービスレイヤー140において実行する。データオブジェクトは、クライアントからサービスのビジネスサービスインプリメンテーションの詳細を抽象化し、および/または、ビューコンポーネントにデータ制御メソッド/属性を公開し、ビューレイヤーとデータレイヤーとの分離を提供する。
1つの局面において、モデルレイヤー130は、インターフェイスを定義するためにメタデータファイルを利用するデータ制御およびデータ結合という2つのコンポーネントからなる。データ制御は、クライアントからビジネスサービスインプリメンテーションの詳細を抽象化する。データ結合は、UIコンポーネントにデータ制御メソッドおよび属性を公開し、ビューとモデルとのクリーンな分離を提供する。モデルレイヤーのメタデータアーキテクチャにより、デベロッパは、任意のタイプのビジネスサービスレイヤーインプリメンテーションをビューレイヤーおよびコントローラレイヤーに結合する際に、同じ開発経験を得る。
オラクルADFは、開発プロセスの全体にわたって宣言プログラミングパラダイムの使用を強調し、インプリメンテーションの詳細に入ることを必要とすることなくユーザがアプリケーション作成のロジックに集中することを可能にする。ハイレベルでは、Fusionウェブアプリケーションのための開発プロセスは、アプリケーションワークスペースを作成することを通常伴う。ウィザードを使用して、デベロッパによって選択される技術に必要とされるライブラリおよび構成が自動的に追加され、アプリケーションがパッケージおよびディレクトリを有するプロジェクトへと構造化される。
データベースオブジェクトをモデリングすることによって、オンラインデータベースまたは任意のデータベースのオフラインレプリカが作成され得、定義が編集され、スキーマが更新される。その後、UMLモデラーを使用して、当該アプリケーションのためにユースケース(use case)が作成され得る。また、アプリケーション制御およびナビゲーションがデザインされ得る。アプリケーション制御およびナビゲーションのフローを視覚的に決定するために、ダイアグラマ(diagrammer)が使用され得る。当該フローを記述する基礎となるXMLが自動的に作成され得る。アプリケーションに単純にリソースライブラリをドラッグアンドドロップすることによって、インポートされたライブラリをデベロッパが閲覧および使用することを可能にするよう、リソースライブラリが使用され得る。データベーステーブルから、エンティティオブジェクトがウィザードまたはダイアログを使用して作成され得る。それらのエンティティオブジェクトから、アプリケーションにおけるページによって用いられるようにビューオブジェクトが作成される。検証ルールおよび他のタイプのビジネスロジックが実現され得る。
この例において、ビジネスサービスレイヤー140は、データ持続性レイヤーとの相互作用を管理する。これにより、データ持続性、オブジェクト/リレーショナルマッピング、トランザクション管理およびビジネスロジック実行といったサービスが提供される。オラクルADFにおけるビジネスサービスレイヤーは、シンプルJavaクラス、EJB、Web services、JPAオブジェクト、およびオラクルADFビジネスコンポーネントといったオプションのうちのいずれかにおいて実現され得る。さらに、ファイル(XMLまたはCSV)およびRESTからデータが直接的に消費され得る。
したがって、各ビジネスサービスは、対応するデータ持続性レイヤーとの相互作用を管理し、オブジェクト/リレーショナルマッピング、トランザクション管理、ビジネスロジックの実行などといったサービスを提供する。ビジネスサービスレイヤーは、シンプルJavaクラス、Enterprise Java Beans、ウェブサービスなどのうち1つ以上を使用して実現され得る。
ビジネスコンポーネントは、たとえば、データベース、ウェブサービス、レガシーシステム、および、アプリケーションサーバなどとの相互作用を提供するようオラクルADFビジネスコンポーネントを使用して実現されるビジネスサービスを表わす。一実施形態において、ビジネスサービスレイヤー140のビジネスコンポーネントは、ビジネスサービスインプリメンテーションを提供するように協働するアプリケーションモジュール、ビュー/クエリーオブジェクトおよびエンティティオブジェクトの混合を含む。アプリケーションモジュールは、アプリケーション/トランザクションデータとともに動作するために、UIクライアントが通信するトランザクションコンポーネント/コードモジュールであり得る。アプリケーションモジュールは、ユーザトランザクションに関する更新可能なデータモデルおよびプロシージャ/関数(一般にサービスメソッドと称される)を提供し得る。
エンティティオブジェクトは、データベーステーブルにおける対応する行を表わし得、当該対応する行に格納されるデータの操作(更新、削除など)を簡素化する。エンティティオブジェクトはしばしば、所望のビジネスルールが一貫して実施されることを保証するために、対応する行のためのビジネスロジックをカプセル化する。エンティティオブジェクトはさらに、存在するデータベースに格納される行同士の間に存在する関係を反映するよう、他のエンティティオブジェクトに関連付けられ得る。
デスクトップ統合
ADFデスクトップ統合は、オラクルアプリケーション開発フレームワークをマイクロソフトエクセルのようなデスクトップアプリケーションの世界へ拡張する。アプリケーションデベロッパは、ユーザがクリティカルなビジネスデータにアクセスし編集することを可能にするよう、他のデスクトップベースのアプリケーションのスプレッドシートおよびドキュメントといった統合されたドキュメントを迅速に開発し得る。このフレームワークは、各ウェブアプリケーションのセキュリティおよびビジネスロジックインフラストラクチャにシームレスに統合する。さらに、このフレームワークは、エンドユーザがネットワークへの実際の接続なしでデータを編集することを可能にする。ひとたび再接続されると、ADFデスクトップ統合は、アプリケーションのバックエンドに対して、トランスピアレントにすべてのユーザ変更をアップロードおよび有効化し得る。したがって、ADFデスクトップ統合は、デベロッパがウェブベースのアプリケーションによって提供される機能をデスクトップアプリケーションに拡張することを可能にする。さらに、エンドユーザはADFデスクトップ統合を好む場合がある。なぜならば、ADFデスクトップ統合は、複雑な計算の実行または大量のデータのアップロードといった情報管理タスクを容易かつシームレスに行うために、ユーザの好むデスクトップアプリケーションにおける見慣れたユーザインターフェイスを提供するからである。
図2は、本発明に従った一実施形態において図1のADF100のためのデスクトップ統合フレームワーク200を示すブロック図である。デスクトップ統合フレームワーク200は、この開示内に提示された1つ以上の発明のさまざまな実施形態または実現例を組み込み得る。デスクトップ統合フレームワーク200は、本願明細書において開示される発明の実施形態または実現例を単に例示しているだけであり、請求の範囲に記載されるような任意の発明の範囲を限定するべきでない。当業者は、この開示および本願明細書において示される教示を通じて、図において示される実施形態または実現例に対する他の変形例、修正例および/または代替例を認識し得る。
この例において、デスクトップ統合フレームワーク200は、クライアントコンピュータシステム210およびサーバコンピュータシステム220を含む。クライアントコンピュータシステム210は、アクセスを提供および/またはアプリケーション230をホスティングするように構成されるハードウェアおよび/またはソフトウェア要素を表す。クライアントコンピュータシステム210は、パーソナルコンピュータシステム、ラップトップ、タブレット、およびモバイルデバイスなどとして具現化され得る。クライアントコンピュータシステム210は、1つ以上のコンピュータ上で実行される1つ以上のオペレーティングシステム、アプリケーション、およびブラウザなどを含み得る。クライアントコンピュータシステム210は、本願明細書において開示される発明の実施形態または実現例を単に例示しているだけであり、請求の範囲に記載されるような任意の発明の範囲を限定するべきでない。当業者は、この開示および本願明細書において示される教示を通じて、図において示される実施形態または実現例に対する他の変形例、修正例および/または代替例を認識し得る。
アプリケーション230は、ユーザがドキュメントを生成、編集、または別の態様で相互作用することを可能にする1つ以上のソフトウェア要素を表す。アプリケーション230のいくつかの例は、テキストエディタ、ワードプロセッシングアプリケーション、スプレッドシートアプリケーション、ならびに、画像編集および操作プログラムなどである。さまざまな実施形態において、デスクトップ統合フレームワーク200は、マイクロソフトワードおよびマイクロソフトエクセルのようなマイクロソフトオフィス製品のようなデスクトップアプリケーションに特有の構成で動作する。
アプリケーション230は、ADF−DIクライアントコンポーネント240をさらに含むか、または、そうでなければADF−DIクライアントコンポーネント240と通信し、かつ、ドキュメント250を作成する。ADF−DIクライアントコンポーネント240は、ウェブベースまたは他のネットワークアクセス可能なアプリケーションによって提供される機能をアプリケーション230に拡張する1つ以上のソフトウェア要素を表す。たとえば、ADF−DIクライアントコンポーネント240は、エンドユーザが、アプリケーション230に関連付けられる見慣れたユーザインターフェイスを利用することを可能にし、これにより、ドキュメント250を使用して、サーバコンピュータシステム220にアクセスすることにより通常実行される情報管理タスクを行う。これらのタスクは、サーバコンピュータシステム220によってホスティングされたウェブベースまたは他のネットワークアクセス可能なアプリケーションによって実行または扱われ得る。さまざまな実施形態において、アプリケーション230において実行されるそのような情報管理タスクによって操作されたデータは、サーバコンピュータシステム220に同期される。
ドキュメント250は、電子情報の1つ以上のコンピュータデータファイルまたはユニットを表わす。ドキュメント250は、テキスト、画像、オーディオ、ビデオおよび他のマルチメディア情報を含み得る。ドキュメント250はさらに、アプリケーション230に特有のメタデータに関連付けられ得る。ドキュメント250(またはアプリケーション230)は、ドキュメント250に関連付けられるコンテンツを作成し、相互作用し、管理するためのネイティブな機能を提供し得る。さまざまな局面において、アプリケーション230は、アプリケーション230の機能またはドキュメント250のコンテンツと相互作用するための1つ以上のインターフェイスを提供する。
サーバコンピュータシステム220は、アプリケーションサーバ260にアクセスを提供および/またはアプリケーションサーバ260をホスティングするよう構成されるハードウェアおよび/またはソフトウェア要素を表わす。サーバコンピュータシステム220は、ローカルサーバコンピュータシステムおよびクラウドサービスなどとして具現化され得る。サーバコンピュータシステム220は、1つ以上のコンピュータ上で実行される1つ以上のオペレーティングシステム、サーバ、サービス、およびアプリケーションなどを含み得る。サーバコンピュータシステム220は、本願明細書において開示される発明の実施形態または実現例を単に例示しているだけであり、請求の範囲に記載されるような任意の発明の範囲を限定するべきでない。当業者は、この開示および本願明細書において示される教示を通じて、図において示される実施形態または実現例に対する他の変形例、修正例および/または代替例を認識し得る。
アプリケーションサーバ260は、ユーザがウェブベースのアプリケーションまたはネットワークベースのアプリケーションと相互作用することを可能にする1つ以上のソフトウェア要素を表わす。アプリケーションサーバ260のいくつかの例は、アプリケーション機能が何かであるかにかかわらず、アプリケーションサーバインプリメンテーションの作成に対する一般化されたアプローチを提供するソフトウェアフレームワークか、または、特定のインプリメンテーションインスタンスのサーバ部分のいずれかである。さまざまな実施形態において、アプリケーションサーバ260は、Javaプラットフォーム、エンタープライズエディション、またはAPIのコアセットおよびJavaアプリケーションサーバの機能を定義するJava EEに特有の構成で動作する。アプリケーションサーバ260は、サーブレット、JavaServer Page、およびEnterprise JavaBeansなどを含み得る。アプリケーションサーバ260は、本願明細書において開示される発明の実施形態または実現例を単に例示しているだけであり、請求の範囲に記載されるような任意の発明の範囲を限定するべきでない。当業者は、この開示および本願明細書において示される教示を通じて、図において示される実施形態または実現例に対する他の変形例、修正例および/または代替例を認識し得る。
ADF−DIサーバコンポーネント270は、アプリケーションサーバ260の部分のような1つ以上のサーバコンポーネントを表わす。一般に、ADF−DIクライアントコンポーネント240は、ビューレイヤー110およびコントローラレイヤー120の両方として機能し、モデルレイヤー130として部分的に機能するADF−DIサーバコンポーネント270と通信して、データを同期させて、アプリケーションサーバ260によってホスティングされるアプリケーション、または、ADFモデル280を使用するアプリケーションサーバ260と通信するアプリケーションにおけるビジネスロジックを実行する。上で論じたように、モデルレイヤー130は、データ値に対して使用されるモデルレベルのビジネスルール、セキュリティおよびアプリケーションロジックとともに、アプリケーション230内のADF−DIクライアントコンポーネント240によって提示される現在のビューに関係するデータ値を表わす。この例において、ADF−DIクライアントコンポーネント240およびADF−DIサーバコンポーネント270は、エンドユーザがアプリケーション230に関連付けられる見慣れたユーザインターフェイスを利用することを可能にし、ADFモデル280にアクセスするようドキュメント250を使用してビュー/コントローラタスクを行う。
1つの局面において、デベロッパは、デザインモードにおいてドキュメント250を作成するためにアプリケーション230内で作業するよう、ADF−DIクライアントコンポーネント240を利用する。デベロッパは、アプリケーション230のネイティブツールを利用して所望の態様でドキュメント250を構造化およびフォーマットする。その後、デベロッパは、アプリケーションサーバ260にドキュメント250を統合するよう、ADF−DIクライアントコンポーネント240を使用してドキュメント250にコンポーネントを追加し得る。コンポーネントのいくつかの例は、入力コンポーネント(たとえばフォームコンポーネント)、出力コンポーネント、ラベル、リスト、ボタン、画像、およびテーブルなどである。
その後、ドキュメント250に加えられるコンポーネントは、ADF−DIサーバコンポーネント270によって提供されるまたはADF−DIサーバコンポーネント270を通じて提供される対応するモデルにマッピングされる。たとえば、モデルレイヤー130によって公開されるADF−DIサーバコンポーネント270によって提供されるまたはADF−DIサーバコンポーネント270を通じて提供される人間モデルの名前属性にドキュメント250内の入力/出力メカニズムを提供するよう、テキストボックスコンポーネントがマッピングされ得る。
1つの局面において、コンポーネントは、多くのアプリケーションによって使用され得る(または同じアプリケーションによって複数回使用され得る)機能を提供する再使用可能なエンティティである。コンポーネントは、ドキュメント250内に埋め込まれ得、0以上の視覚的表現を有し得る。視覚的表現を有さないコンポーネントは、表示されないが、何らかの他の機能を提供し得る。コンポーネントは一般に、プログラミングインターフェイス、データ結合インターフェイス、および視覚的インターフェイスのような1つ以上のインターフェイスを提供する。コンポーネント200は1つ以上の視覚的表現を有し得る。さらに以下に記載されるように、コンポーネントは、存在するモデルによってドリブンされる視覚的表現を有し得る。
1つの局面において、コンポーネントは、あるデザインタイムにて任意の数のビューを特定し得、そのいずれかがランタイムにて表示され得る。ビューアセンブリは、ランタイムにて実際に表示されるビューのセットである。アプリケーションまたはコンポーネントのためのビューアセンブリは、ある時点で表示のために選択されるビュー構成におけるビューからなる。
ひとたびすべての所望のコンポーネントが含まれ、アプリケーションサーバ260およびADFモデル280にアクセス可能なデータおよび/またはモデルメタデータにマッピングされると、ドキュメント250は、アプリケーションサーバ260上に「発行(published)」またはそうでなければ利用可能にされ得る。アプリケーションサーバ260は、ユーザがブラウザを介してドキュメントにアクセスすることを可能にする発行されたドキュメントへのダウンロードリンクを提供し得、サーバコンピュータシステム220にアクセス可能であるデータベースに格納されたデータのようなデータを閲覧、作成、および/または、操作するようアプリケーション230内において作動を開始し得る。さまざまな実施形態において、発行されたドキュメントは、コンポーネント、データマッピング、およびデベロッパがドキュメントと関連付けた任意のロジック、を定義するドキュメントメタデータとは別に格納される。いくつかの実施形態において、発行されたドキュメントはすべてのドキュメントメタデータを含む。
図3は、本発明に従った一実施形態において、図2のデスクトップ統合フレームワーク200を使用してドキュメントをデザインするための方法300のフローチャートである。図3に示される方法300の実現または処理は、コンピュータシステムまたは情報処理デバイスのようなロジックマシンの中央処理装置(CPUまたはプロセッサ)によって実行される際にソフトウェア(たとえば命令またはコードモジュール)によって実行され得るか、電子デバイスまたは特定用途向け集積回路のハードウェアコンポーネントによって実行され得るか、または、ソフトウェアおよびハードウェア要素の組合せによって実行され得る。図3に示される方法300は、ステップ310において開始する。
ステップ320において、ドキュメントが受け取られる。一般に、ドキュメントは、そのようなドキュメントをネイティブで作成するアプリケーションによってか、または、ネイティブフォーマットでドキュメントを作成するライブラリを使用して、作成される。図2に従うと、ユーザは、存在するドキュメントを開くか、または、たとえばマイクロソフトエクセルにおいて新しいスプレッドシートを作成するといったようにアプリケーション230において新しいドキュメントを作成し得る。ドキュメントデベロッパは、ネイティブおよびノンネイティブなツールを使用して任意の所望の態様でドキュメントを編集、構造化、またはフォーマットし得る。
ステップ330において、ドキュメントメタデータが受け取られる。ドキュメントメタデータは、アプリケーションサーバ260から得られるデータに基づいてドキュメントのコンテンツを与えるよう、ADF−DIクライアントコンポーネント240によって利用される情報を含む。1つの局面において、ドキュメントメタデータは、ドキュメントに含まれる各コンポーネント、および、ビジネスサービスレイヤー140において利用可能なデータまたはメタデータにコンポーネントがどのように結合されるかということを示す。ドキュメントメタデータはさらに、デベロッパによって提供されるアクセス情報、静的データ、および他のロジックまたはデータ操作情報を提供し得る。上で論じたように、デベロッパは、アプリケーションサーバ260にドキュメント250を統合するよう、ADF−DIクライアントコンポーネント240を使用してドキュメント250にコンポーネントを追加し得る。
さまざまな実施形態において、ADF−DIクライアントコンポーネント240は、ドキュメントに追加され得るいくつかまたはすべてのコンポーネントについて1つ以上の特性を含むエクスプレッションビルダーを提供する。各プロパティは、その対応するコンポーネントの挙動の局面を定義し得る。たとえば、プロパティは、コンポーネントにマッピングされるモデルもしくはオブジェクトを特定し得る、および/または、コンポーネントに対応するモデルもしくはオブジェクトの1つ以上の属性を特定し得る。別の例において、プロパティは、テーブルカラムヘッダーおよびワークシートリボンコマンドなどのようなドキュメント250の局面を特定し得る。
ステップ340において、ドキュメントおよびドキュメントメタデータが発行される。上で論じたように、発行されたドキュメントは、ドキュメントメタデータとは別に格納され得る。いくつかの実施形態において、発行されたドキュメントは、ドキュメントメタデータのすべてまたは一部を含み得る。一般に、発行されたドキュメントは、ADF−DIクライアントコンポーネント240が、ドキュメントを初期化し、ADF−DIサーバコンポーネント270からの付加的な情報を要求して、ランタイムにてユーザのためにドキュメント250のコンテンツを与えることを可能にする少なくとも十分なメタデータを含む。図3はステップ350で終了する。
ランタイムの間、ユーザは発行されたドキュメント250をダウンロードし、アプリケーション230を用いてそれを開く。一実施形態において、ADF−DIクライアントコンポーネント240は、アプリケーションプラグインまたはモジュールとしてインストールされている。その後、ADF−DIクライアントコンポーネント240は、ドキュメント250がフレームワークコンポーネントを含むよう記述されていることを検出し得、かつ、ドキュメントメタデータ、実データ、および、実行される必要がある任意のロジックを要求するようADF−DIサーバコンポーネント270にコンタクトする。たとえば、ADF−DIクライアントコンポーネント240はまず、どのコンポーネントが含められるべきかと当該コンポーネントをどこに含むべきかとを定義するドキュメントメタデータを、ADF−DIサーバコンポーネント270からまたはADF−DIサーバコンポーネント270を通じて抽出し得る。ADF−DIクライアントコンポーネント240は、選択されたコンポーネントが使用するかまたはそうでなければ動作することになるADFモデル280からのデータを、ADF−DIサーバコンポーネント270からまたはADF−DIサーバコンポーネント270を通じて抽出し得る。ADF−DIクライアントコンポーネント240はさらに、ドキュメント250に関連付けられる任意のロジックをADF−DIサーバコンポーネント270からまたはADF−DIサーバコンポーネント270を通じて抽出し得る。その後、最終的に、ADF−DIクライアントコンポーネント240は、ドキュメントメタデータ、実データおよびロジックを利用してドキュメント250のコンテンツを与え得る。
したがって、ユーザは、ドキュメントテンプレートを抽出し得るとともに、ADF−DIクライアントコンポーネント240によって実行される処理とアプリケーションサーバ260から得られたデータとに基づき自動的に更新およびフォーマットされたドキュメントコンテンツを有し得る。その後、ユーザは、アプリケーション230に関連付けられる見慣れたユーザインターフェイスを利用して、ドキュメント250を使用してタスクを実行する。
さまざまな局面において、ユーザがドキュメント250と相互作用または操作する際に、ADF−DIクライアントコンポーネント240およびADF−DIサーバコンポーネント270は、通信したままであり得、これにより更新を送信および受信する。モデルレイヤー130における対応するモデルのデータへのドキュメント250の1つ以上のコンポーネント内でなされた変更は、ADFモデル280において持続され得る。
図4は、本発明に従った一実施形態において、図2のデスクトップ統合フレームワーク200を使用してドキュメントと相互作用するための方法400のフローチャートである。図4に示される方法400の実現または処理は、コンピュータシステムまたは情報処理デバイスのようなロジックマシンの中央処理装置(CPUまたはプロセッサ)によって実行される際にソフトウェア(たとえば命令またはコードモジュール)によって実行され得るか、電子デバイスまたは特定用途向け集積回路のハードウェアコンポーネントによって実行され得るか、または、ソフトウェアおよびハードウェア要素の組合せによって実行され得る。図4に示される方法400は、ステップ410において開始する。
ステップ420において、ドキュメントが受け取られる。図2に従うと、ユーザは、たとえばドキュメントリンクをクリックすることによって、所望のドキュメントを抽出するようアプリケーションサーバ260と相互作用し得る。ドキュメントは、クライアントコンピュータシステム210にダウンロードまたはそうでなければ通信され得、アプリケーション230において開かれ得る。
ステップ430において、ドキュメントメタデータが処理される。上で論じたように、ドキュメントメタデータは、アプリケーションサーバ260から得られたデータに基づいてドキュメントのコンテンツを与えるよう、ADF−DIクライアントコンポーネント240によって利用される情報を含む。したがって、ADF−DIクライアントコンポーネント240は、どのコンポーネントがドキュメントに追加されるべきかと、どこに追加されるべきかとを決定する。ADF−DIクライアントコンポーネント240はさらに、何のデータが各コンポーネントによって使用されるかと、何のデータがデベロッパによって定義される任意のロジックを適用するかとを決定する。
ステップ440において、ドキュメントデータが処理される。上で論じたように、発行されたドキュメントは、ドキュメントメタデータとドキュメントによって使用される実データとは別に格納され得る。一般に、発行されたドキュメントは、ADF−DIクライアントコンポーネント240が、ドキュメントを初期化し、ADF−DIサーバコンポーネント270からの付加的な情報を要求して、ユーザのためにドキュメント250のコンテンツを与えることを可能にする少なくとも十分なメタデータを含む。
ステップ450において、ドキュメントが与えられる。上で論じたように、ADF−DIクライアントコンポーネント240は、選択されたコンポーネントが使用するかまたはそうでなければ動作することになるADFモデル280からのデータを、ADF−DIサーバコンポーネント270からまたはADF−DIサーバコンポーネント270を通じて抽出し得る。ADF−DIクライアントコンポーネント240はさらに、ドキュメント250に関連付けられる任意のロジックをADF−DIサーバコンポーネント270からまたはADF−DIサーバコンポーネント270を通じて抽出し得る。その後、最終的に、ADF−DIクライアントコンポーネント240は、ドキュメントメタデータ、実データおよびロジックを利用してドキュメント250のコンテンツを与え得る。
ステップ460において、ドキュメントに対する更新が存在するかどうかについて決定がなされる。ドキュメントへの更新が存在し得るさまざまな理由が存在し得る。ユーザがドキュメント250と相互作用するかまたはドキュメント250を操作する際、ADF−DIクライアントコンポーネント240およびADF−DIサーバコンポーネント270は、更新を送信および受信するよう通信したままであり得る。モデルレイヤー130における対応するモデルのデータへのドキュメント250の1つ以上のコンポーネント内でなされた変更は、ADFモデル280において持続され得る。いくつかの実施形態において、ユーザによる相互作用は新しいデータセットを必要とする場合がある。したがって、方法400のフローは、ステップ450において与えられる付加的なドキュメントデータを処理するようステップ440に戻る。図4はステップ470で終了する。
モデルドリブンの局面
さまざまな実施形態において、デスクトップ統合フレームワーク200は、デベロッパが、ビューおよびデータが対応するモデルまたはモデル属性によってドリブンされるコンポーネントドキュメント250を含めることを可能にする。1つの局面において、コンポーネントは、ユーザのマウスがデータの部分上にある場合またはデータが選択される場合に表示されるコンポーネントの与えられたコンテンツに関する有用な情報を含むツールティップ(tool tip)を提供し得る。ツールティップは、モデルまたはオブジェクトを介して定義され得、ドキュメントのコンポーネントが与えられる際に自動的に構成され得る。別の局面において、リストコンポーネントの要素には、モデルまたはオブジェクトに関連付けられる1つ以上の属性の以前に存在した値がポピュレートされ得る。したがって、デベロッパは、ドキュメントが与えられる場合にコンポーネントが提示するビューにおける値を特定することが必要とされない。
図5は、本発明に従った一実施形態において、基礎をなすモデルによってビューがドリブンされ得るドキュメントコンポーネントのスクリーンショット500の図である。この例において、ツリー510は、ドキュメント250において提示され得る1つ以上のビューのリストを提供する。この例において、EmpView520は、「Empno」、「Ename」、「Job」、「Mgr」などとラベル付けされたテキスト、リスト、画像、および日付などといった1つ以上のコンポーネントを含む。
1つの局面において、コンポーネント530に関連付けられる従業員オブジェクトの基礎をなすデータモデルまたは属性が「Hiredate」とラベル付けされる。当該データモデルまたは属性は、所与の従業員が組織によって雇われた日付に関連付けられる日付値を格納するように構成される。さまざまな実施形態において、コンポーネント530のビューまたは挙動は、デベロッパによるさらなる別の構成が存在しない日付値(date value absent further configuration)を属性が格納するという事実によってドリブンされ得る。たとえば、コンポーネント530に対応するセルを有するエクセルワークブックをADF−DIクライアントコンポーネント240が与える時に、ADF−DIクライアントコンポーネント240は、ユーザが従業員の雇用の日付を表わす値を格納するセルを選択すると、エクセルのネイティブの機能内または機能外にて日付ポップアップが提供され、これによりユーザが新しい雇用日付を選択または既存の雇用日付を修正することを可能にするように、セルを構成し得る。
別の局面において、コンポーネント540に関連付けられる従業員オブジェクトの基礎をなすデータモデルまたは属性は「Deptno」とラベル付けされる。当該データモデルまたは属性は、ある従業員に関連付けられる部門またはチームについての識別子を格納するように構成される。さまざまな実施形態において、コンポーネント540のビューまたは挙動は、属性が、デベロッパによるさらなる別の構成が存在しないデータモデル(data model absent further configuration)において特定される複数の所定の値のうちの1つを格納するという事実によってドリブンされ得る。たとえば、コンポーネント540に対応するセルを有するエクセルワークブックをADF−DIクライアントコンポーネント240が与える時に、ADF−DIクライアントコンポーネント240は、従業員が割り当てられている部門またはチームを表わす値を格納するセルをユーザが選択すると、ドロップダウンリストがエクセルのネイティブの機能内または機能外にて提供され、これによりデータモデルから導き出される部門またはチームの所定のリストからユーザが選択することを可能にするように、セルを構成し得る。
図6は、本発明に従った一実施形態において、図2のデスクトップ統合フレームワーク200を使用してコンポーネントのモデルドリブンの局面をデザインするための方法600のフローチャートである。図6に示される方法600の実現または処理は、コンピュータシステムまたは情報処理デバイスのようなロジックマシンの中央処理装置(CPUまたはプロセッサ)によって実行される際にソフトウェア(たとえば命令またはコードモジュール)によって実行され得るか、電子デバイスまたは特定用途向け集積回路のハードウェアコンポーネントによって実行され得るか、または、ソフトウェアおよびハードウェア要素の組合せによって実行され得る。図6に示される方法600は、ステップ610において開始する。
ステップ620において、コンポーネント仕様が受け取られる。一般に、コンポーネント仕様は、当該コンポーネントがどのように定義されるかを特定する情報を指す。図2に従うと、アプリケーション230において、デベロッパは、存在するドキュメントを開くか、または、たとえばマイクロソフトエクセルにおいて新しいスプレッドシートを作成するといったように新しいドキュメントを作成し得る。次いで、デベロッパは、ネイティブおよびノンネイティブなツールを使用して任意の所望の態様でドキュメントを編集、構造化、またはフォーマットし得る。さらに、デベロッパは、複数の所定のコンポーネントから選択を行い、それらのコンポーネントをドキュメント250に追加し得る。
ステップ630において、データ結合仕様が受け取られる。一般に、データ結合仕様は、そのソースなどのようなデータとコンポーネントがどのように相互作用するかを特定する情報を指す。さまざまな実施形態において、ADF−DIクライアントコンポーネント240は、この情報を利用して、コンポーネント仕様に加えてコンポーネントをさらに構成する。1つの局面において、ADF−DIクライアントコンポーネント240は、コンポーネントに関連付けられる1つ以上のモデルまたはオブジェクトに基づいて、各コンポーネントがどのように1つ以上のビューを提示するかを示す。ADF−DIクライアントコンポーネント240は、モデル局面および値などを抽出して、コンポーネントと、任意の関連付けられるビューと、関連付けられる挙動とを構成するようADF−DIサーバコンポーネント270と相互作用し得る。さまざまな実施形態において、ADF−DIクライアントコンポーネント240は、ユーザが上に論じられたエクスプレッションビルダーを使用することに応答して、コンポーネント仕様およびデータ結合仕様を受け取り得る。
ステップ640において、コンポーネントのモデルドリブンの局面が決定される。ADF−DIクライアントコンポーネント240は、ADFモデル280における属性プロパティまたはヒントとして知られるモデル局面および値などを抽出してコンポーネント、任意の関連付けられるビュー、および関連付けられる挙動を構成するようADF−DIサーバコンポーネント270と相互作用し得る。構成情報は、発行されたドキュメントに関連付けられ得るドキュメントメタデータに格納され得る。
一例において、ユーザに提示されるラベルは、当該ラベルに対応するデータオブジェクトの名称としばしば異なる。たとえば、「EmpName」と称される属性が存在する場合、UIにおいて、デベロッパは、「従業員名」を表示することを望む。大抵のUIフレームワークは、デベロッパがユーザフレンドリなラベルを特定することを可能にする。しかしながら、現われる必要がある各場所にユーザフレンドリなラベルを特定することは効率的ではない。「モデルドリブン」なアプローチは、モデルレベルにてEmpName属性にユーザフレンドリなラベルを関連付けることである。その後、EmpNameを与えることを望む各UI要素(ページ、ワークシートなど)は、デザインタイムにおいてEmpNameのラベルを間接的に「参照」し、ランタイムにてそれを動的にフェッチする。このアプローチは、データオブジェクトのさまざまな異なる潜在的なプロパティに適用される。他の例は「読取専用」、「必須」などを含む。図6はステップ650で終了する。
メタデータ管理
いくつかの実施形態において、ワークブック統合を定義するメタデータは、メタデータサービスによって管理され得る。図7は、本発明に従った一実施形態においてメタデータ管理を提供する、図2のデスクトップ統合フレームワーク200における相互作用を示すブロック図である。この例において、ドキュメントメタデータは、デザインタイムおよびランタイムの両方においてリポジトリ295内部に格納され得る。ドキュメント250がたとえばカスタマーサイトにおいて発行された後、リポジトリ295においてメタデータがカスタマイズされ得る。ADF−DIサーバコンポーネント270は、管理ルールのセットに基づいてドキュメントメタデータの1つ以上のバージョンを提供するようメタデータサーバ290と通信する。管理ルールは、たとえば時間、日付、ユーザの役割、構成などのようなドキュメントがメタデータのどのバージョンを利用するかを規定する基準および/または条件を定義し得る。これは、より多くの機能が追加される場合のように、ワークブック定義スキーマが時間にわたり変化することを可能にする。
したがって、さまざまな実施形態において、デスクトップ統合フレームワーク200は、カスタマイズ可能なものとしてデベロッパがワークブックを指定することを可能にする。デベロッパは、良好に定義されたワークブック初期化ポイントにて、メタデータサーバ290から抽出されるワークブックメタデータを構成し得る。ワークブックメタデータは、現在のユーザのカスタマイゼーションのコンテキストについてカスタマイズされ得る。別の局面において、ランタイムワークブックは、メタデータサーバ290から抽出されたカスタマイズされたメタデータを使用して与えられ得る。
さまざまな実施形態において、ADF−DIクライアントコンポーネント240は、ADF−DIサーバコンポーネント270へドキュメントメタデータを転送し、ADF−DIサーバコンポーネント270は、メタデータサーバ290にワークブック定義ファイル(ベースドキュメントメタデータ)およびカスタマイゼーションを格納させる。デベロッパは、ベースドキュメントおよび/またはカスタマイゼーションを管理するためのファイルベースまたはデータベースリポジトリを使用するよう選択し得る。
図8は、本発明に従った一実施形態において、メタデータ管理を提供する、図7のデスクトップ統合フレームワーク間の相互作用を示すブロック図である。ブロック810において、クラスパス上において対応するワークブック定義ファイルを特定するよう、暗示されたメタデータパスが使用され得るような態様で、カスタマイゼーションが可能にされたワークブックが発行される。たとえば、デザインタイムワークブックを「/PROJECT_ROOT/src/apps/workbooks/myDTWorkbook.xlsx」として、それが発行される場合、当該ワークブック定義ファイルは、「/PROJECT_ROOT/src/apps/workbooks/myDTWorkbook.xlsx-workbook-definition.xml」に生成される。アプリケーションが展開されると、このワークブック定義ファイルは、パス「/apps/workbooks/myDTWorkbook.xlsx-workbook-definition.xml」を使用して、クラスパスリポジトリによって発見され得る。したがって、ランタイムワークブックは、暗示されたメタデータパスを使用してそのワークブックメタデータをロードし得るために、「/PROJECT_ROOT/public_html/oracle/apps/workbooks/」フォルダに発行されるべきである。上で論じたように、デベロッパは、ベースドキュメントおよび/またはカスタマイゼーションを管理するためのファイルベースまたはデータベースリポジトリを使用するよう選択し得る。
ブロック820におけるワークブック初期化の際、ADF−DIクライアントコンポーネント240は、現在のワークブックのメタデータについて、サーバコンピュータシステム220への要求を発する。ブロック830において、ADF−DIサーバコンポーネント270は、MDSセッション(たとえば現在のADFコンテキスト(ADF Context)からメタデータサーバ290を介して標準的なMDSセッション)を使用してワークブックメタデータを抽出する。MDSセッションに関連付けられるカスタマイゼーションのコンテキストに基づいて、メタデータサーバ290はワークブックメタデータに全てのカスタマイゼーションを適用する。ブロック820において、カスタマイズされたワークブックメタデータは、ADF−DIクライアントコンポーネント240に返され、ワークブックのメタデータキャッシュに書き込まれる。ブロック860において、キャッシュされたカスタマイズされたワークブックメタデータは、ランタイムワークブックを初期化するよう使用される。
図9は、本発明に従った一実施形態において、1つ以上のカスタマイゼーションを含む図2のデスクトップ統合フレームワーク200を使用してドキュメントを実行するための方法900のフローチャートである。図9に示される方法900の実現または処理は、コンピュータシステムまたは情報処理デバイスのようなロジックマシンの中央処理装置(CPUまたはプロセッサ)によって実行される際にソフトウェア(たとえば命令またはコードモジュール)によって実行され得るか、電子デバイスまたは特定用途向け集積回路のハードウェアコンポーネントによって実行され得るか、または、ソフトウェアおよびハードウェア要素の組合せによって実行され得る。図9に示される方法900は、ステップ910において開始する。
ステップ920において、ドキュメントおよび初期メタデータが受け取られる。たとえば、ユーザは、発行されたドキュメント250をアプリケーションサーバ260からダウンロードすることを要求し得る。ステップ930において、メタデータカスタマイゼーションが要求される。1つの局面において、ドキュメントダウンロードは、ドキュメント250にて完了し得、その時、ドキュメント250がアプリケーション230で開かれ得る。その後、ADF−DIクライアントコンポーネント240は、ドキュメント250が与えられる必要があると検出し得る。ADF−DIクライアントコンポーネント240はADF−DIサーバコンポーネント270とコンタクトし、ドキュメントのデザインに従って与えられるべきドキュメントメタデータおよび任意の実データを得る。
さまざまな局面において、ワークブック初期化の際、ADF−DIクライアントコンポーネント240は、現在のワークブックのメタデータについてサーバコンピュータシステム220への要求を発する。ADF−DIサーバコンポーネント270は、メタデータサーバ290を介して現在のADFコンテキストから標準MDSセッションを得、このMDSセッションを使用してワークブックメタデータを抽出する。MDSセッションに関連付けられるカスタマイゼーションのコンテキストに基づいて、メタデータサーバ290は、ワークブックメタデータに全てのカスタマイゼーションを適用する。カスタマイズされたワークブックメタデータは、ADF−DIクライアントコンポーネント240に返される。カスタマイズされたワークブックメタデータは、ランタイムワークブックを初期化するために使用される。
ステップ940において、ドキュメントおよびカスタマイズされたメタデータが処理される。ADF−DIクライアントコンポーネント240は、コンポーネントの配置を決定し、ステップ950においてADF−DIサーバコンポーネント270によって提供される実データを利用して当該コンポーネントをドキュメント250のコンテンツとして与える。図9はステップ960で終了する。
ワークブックコンポーザ
さまざまな実施形態において、カスタマイゼーションがさまざまなツールおよびインターフェイスを利用してなされ得る。エンドユーザがデスクトップ統合フレームワークを使用して開発されたドキュメントのランタイムカスタマイゼーションを提供することを可能にする方法、システムおよび一時的でないコンピュータ読取可能媒体が開示される。ワークブックメタデータは、所与のワークブックが特定のウェブアプリケーションにどのように統合されるか記述する情報のセットである。ワークブックが発行されている場合、メタデータは、発行されたワークブックにおけるローカルキャッシュとワークブック定義ファイルとに書き込まれ得る。メタデータ管理は、メタデータサービスによって扱われ得、発行されたワークブックおよびワークブック定義ファイルにおけるローカルキャッシュから独立して、発行されたワークブックの更新およびカスタマイゼーションを可能にする。ワークブックカスタマイゼーションエディタは、統合されたワークブックのさまざまなカスタマイゼーションを実行するために使用される。
図10は、本発明に従った一実施形態においてメタデータをカスタマイズするためのユーザインターフェイス1000のスクリーンショットである。この例において、ユーザインターフェイス1000は、統合されたワークシートを所与のワークブックから選択する能力、選択されたワークシート上のコンポーネントを閲覧および選択する能力、または、選択されたコンポーネントを編集または削除する能力を提供する。いくつかの実施形態において、ユーザインターフェイス1000は、新しいワークシートを追加する能力、新しいコンポーネントを追加する能力、または、アクションセットのような既存のコンポーネントの高度なプロパティを編集する能力を提供し得る。
動作の一例において、ウェブアプリケーションが送られて、Acme社にインストールされる。Acme社のビジネスアナリストであるラルフは、統合されたワークブックをレビューし、いくつかの調節が必要であると判断する。ラルフは、ウェブアプリケーションにログインし、ユーザインターフェイス1000にナビゲートする。ラルフは、ベースワークブックの新しいカスタマイゼーションを作成することを決定する。ラルフは、テーブルにおける標準的な65カラムから5カラムを除去する。なぜならば、ラルフは、Acme社がそれらのカラムを必要としない/望まないことを知っているからである。ラルフはカスタマイゼーションを保存する。ここで、当該カスタマイゼーションは、ワークブックカスタマイゼーションに関連付けられるカスタマイゼーションのコンテキストと一致するユーザについて利用可能である。そのようなユーザは、60カラムを有するテーブルを見ることになる。
別の例において、ユーザインターフェイス1000は、承認されたユーザが所与の統合されたワークブックのさまざまな局面を編集することを可能にするADFタスクフロー(ADF Task Flow)の部分を形成する。上で論じたように、ユーザインターフェイス1000は、選択されたワークブックから、統合されたワークシートのリストを提供し得る。ユーザインターフェイス1000は、ユーザがワークブックおよび/またはワークシートを選択および/または削除することを可能にする機能を含み得る。ユーザインターフェイス1000は、選択されたワークシートに現われるかまたはそうでなければ選択されたワークシートに関連付けられるコンポーネントのリストを含み得る。ユーザインターフェイス1000は、ユーザがコンポーネントを選択し、削除し、編集することを可能にする機能を含み得る。ユーザインターフェイス1000は、ユーザがテキスト入力(Input-Text)、テキスト出力(Output-Text)、ラベル(Label)、値のリスト(List-of-Values)といったコンポーネントのプロパティを編集することができる機能を含み得る。たとえば、ドキュメント250のデベロッパは、コンポーネントID、値、注釈などといったコンポーネントのどの局面が閲覧可能(閲覧のみ)であるか、または、スタイル、ツールティップ、リードオンリ、ポジションのように編集可能であるか特定し得る。デベロッパは、たとえばソース、ShortDesc、ポジションなどといったイメージコンポーネントについて、また、ラベル、ポジションなどといったボタンコンポーネントについて、コンポーネントのどの局面が編集可能であるか特定し得る。別の局面において、デベロッパは、テーブルコンポーネントのどの局面が閲覧可能(閲覧のみ)および編集可能であるかを特定し得る。いくつかの例は、コンポーネントの削除のみで編集可能でない読取専用テーブルを含むか、または、ポジション、カラムの編集(削除、編集、再配置すべきかどうか)、セル/ヘッダスタイル、ツールティップ、ビジブル(Visible)、ヘッダラベルの編集を許可し、かつ、特別なカラムの削除を防止する。
さまざまな局面において、ホストアプリケーションは、(メタデータパスおよびワークブック名を含む)編集されるべきワークブックおよびカスタマイゼーションのコンテキストのようなさまざまな情報をユーザインターフェイス1000に提供する。さらに、ホストアプリケーションは、ユーザインターフェイス1000のどのユーザがどのワークブック(存在する場合)を編集してもよいのかを制御することを担い得る。
結論
図のうちのいくつかに示されるシステムは、さまざまな構成で提供され得る。いくつかの実施形態において、システムは、システムの1つ以上のコンポーネントがクラウドコンピューティングシステムにおいて1つ以上のネットワークにわたって分散される分散システムとして構成され得る。
図11は、実施形態のうちの1つを実現するための分散システム1100の簡略図を示す。例示される実施形態において、分散システム1100は、1つ以上のネットワーク1110にわたって、ウェブブラウザまたはプロプラエタリクライアント(たとえばオラクルフォームズ(Oracle Forms)などといったクライアントアプリケーションを実行および動作するように構成される1つ以上のクライアントコンピューティングデバイス1102、1104、1106および1108を含む。サーバ1112は、ネットワーク1110を介してリモートクライアントコンピューティングデバイス1102、1104、1106および1108と通信可能に結合され得る。
さまざまな実施形態において、サーバ1112は、システムのコンポーネントのうちの1つ以上によって提供される1つ以上のサービスまたはソフトウェアアプリケーションを実行するように適合され得る。いくつかの実施形態において、これらのサービスは、ウェブベースのサービスもしくはクラウドサービスとして、または、ソフトウェアアズアサービス(SaaS:Software as a Service)モデルで、クライアントコンピューティングデバイス1102、1104、1106および/または1108のユーザに提供され得る。クライアントコンピューティングデバイス1102、1104、1106および/または1108を操作するユーザは、1つ以上のクライアントアプリケーションを利用して、これらのコンポーネントによって提供されるサービスを利用するようサーバ1112と相互作用する。
図に示される構成において、システム1100のソフトウェアコンポーネント1118、1120および1122は、サーバ1112上で実現されるのが示される。他の実施形態において、システム1100のコンポーネントおよび/またはこれらのコンポーネントによって提供されるサービスのうちの1つ以上が、クライアントコンピューティングデバイス1102、1104、1106および/または1108の1つ以上によって実現され得る。次いで、クライアントコンピューティングデバイスを操作するユーザは、1つ以上のクライアントアプリケーションを利用し、これらのコンポーネントによって提供されるサービスを使用する。これらのコンポーネントは、ハードウェア、ファームウェア、ソフトウェアまたはその組合せで実現され得る。分散システム1100と異なり得るさまざまな異なるシステム構成が可能であるということが認識されるべきである。したがって、図において示される実施形態は、実施形態のシステムを実現するための分散システムの一例であり、限定するようには意図されない。
クライアントコンピューティングデバイス1102、1104、1106および/または1108は、ポータブルハンドヘルドデバイス(たとえばiPhone(登録商標)、携帯電話、iPad(登録商標)、コンピューティングタブレット、携帯情報端末(PDA))もしくはウェアラブルデバイス(たとえばGoogle Glass(登録商標)ヘッドマウントディスプレイ)であり得るか、または、Microsoft Windows Mobile(登録商標)のような実行しているソフトウェアおよび/もしくはiOS、Windows Phone、Android、BlackBerry10およびPalm OSなどといったさまざまなモバイルのオペレーティングシステムであるか、または、インターネット、電子メール、ショートメッセージサービス(SMS:short message service)、Blackberry(登録商標)または他の通信プロトコルが有効化されたものである。クライアントコンピューティングデバイスは、例としてMicrosoft Windows(登録商標)、Apple Macintosh(登録商標)および/またはLinux(登録商標)オペレーティングシステムのさまざまなバージョンが実行されるパーソナルコンピュータおよび/またはラップトップコンピュータを含む汎用のパーソナルコンピュータであり得る。クライアントコンピューティングデバイスは、たとえばGoogle ChromeOSのようなさまざまなGNU/Linuxオペレーティングシステムを含むがそれらに限定されないさまざまな商業的に利用可能なUNIX(登録商標)またはUNIXライクなオペレーティングシステムのいずれかが実行されるワークステーションコンピュータであり得る。代替的または付加的には、クライアントコンピューティングデバイス1102、1104、1106および1108は、シンクライアントコンピュータ、インターネットが有効化されたゲームシステム(たとえばKinect(登録商標)ジェスチャ入力デバイスを有するかまたは有さないMicrosoft Xboxゲームコンソール)、および/または、パーソナルメッセージデバイスといった、ネットワーク1110上で通信可能である任意の他の電子デバイスであり得る。
例示的な分散システム1100が4つのクライアントコンピューティングデバイスを有するのが示されるが、任意数のクライアントコンピューティングデバイスがサポートされ得る。センサなどを有するデバイスのような他のデバイスがサーバ1112と相互作用し得る。
分散システム1100におけるネットワーク1110は、さまざまな商業的に利用可能なプロトコルのうちのいずれかを使用してデータ通信をサポートし得る当業者によく知られている任意のタイプのネットワークであり得、当該プロトコルは、TCP/IP(transmission control protocol/Internet protocol;トランスミッションコントロールプロトコル/インターネットプロトコル)、SNA(systems network architecture;システムネットワークアーキテクチャ)、IPX(Internet packet exchange;インターネットパケットエクスチェンジ)、およびAppleTalkなどを含むがこれらに限定されない。単に例として、ネットワーク1110は、イーサネット(登録商標)および/またはトークンリングなどに基づいたもののようなローカルエリアネットワーク(LAN)であり得る。ネットワーク1110はワイドエリアネットワークおよびインターネットであり得る。ネットワーク1110はバーチャルネットワークを含み得、当該バーチャルネットワークは、バーチャルプライベートネットワーク(VPN:virtual private network)、イントラネット、エクストラネット、公衆交換電話網(PSTN:public switched telephone network)、赤外線ネットワーク、無線ネットワーク(たとえばIEEE(Institute of Electrical and Electronics;電気電子技術者協会)802.11スイート、Bluetooth(登録商標)、および/もしくは任意の他の無線プロトコルのいずれかに基づき動作するネットワーク)、ならびに/または、これらおよび/もしくは他のネットワークの任意の組合せを含むがこれらに限定されない。
サーバ1112は、1つ以上の汎用コンピュータ、専用サーバコンピュータ(例として、PC(パーソナルコンピュータ)サーバ、UNIX(登録商標)サーバ、ミッドレンジサーバ、メインフレームコンピュータ、ラックマウントサーバなどを含む)、サーバファーム、サーバクラスタまたは任意の他の適切な構成および/もしくは組合せから構成され得る。さまざまな実施形態において、サーバ1112は、上記の開示に記載される1つ以上のサービスまたはソフトウェアアプリケーションを実行するよう適合され得る。たとえば、サーバ1112は、本開示の実施形態に従った、上に記載された処理を実行するためのサーバに対応し得る。
サーバ1112は、上に論じられたもののいずれかを含むオペレーティングシステムと、任意の商業的に利用可能なサーバオペレーティングシステムとを実行し得る。サーバ1112はさらに、HTTP(hypertext transport protocol;ハイパーテキストトランスポートプロトコル)サーバと、FTP(file transfer protocol;ファイル転送プロトコル)サーバと、CGI(common gateway interface;コモンゲートウェイインターフェイス))サーバと、JAVA(登録商標)サーバと、データベースサーバなどとを含む、さまざまな付加的なサーバアプリケーションおよび/または中間層アプリケーションのいずれかを実行し得る。例示的なデータベースサーバは、オラクル、マイクロソフト、Sybase、IBM(International Business Machines)などから商業的に利用可能なものを含むがこれらに限定されない。
いくつかの実現例において、サーバ1112は、クライアントコンピューティングデバイス1102、1104、1106および1108のユーザから受け取られるデータフィードおよび/またはイベント更新を分析および統合するよう、1つ以上のアプリケーションを含み得る。例として、データフィードおよび/またはイベント更新は、Twitter(登録商標)フィード、Facebook(登録商標)更新、または、1つ以上のサードパーティ情報ソースおよび連続的なデータストリームから受け取られるリアルタイム更新を含み得るがこれらに限定されない。当該リアルタイム更新は、センサデータアプリケーション、金融相場表示器(financial ticker)、ネットワークパフォーマンス測定ツール(たとえばネットワーク監視およびトラフィック管理アプリケーション)、クリックストリーム解析ツール、および自動車交通監視などに関連付けられるリアルタイムイベントを含み得る。サーバ1112はさらに、クライアントコンピューティングデバイス1102、1104、1106および1108の1つ以上のディスプレイデバイスを介してデータフィードおよび/またはリアルタイムイベントを表示するために1つ以上のアプリケーションを含み得る。
分散システム1100はさらに、1つ以上のデータベース1114および1116を含み得る。データベース1114および1116はさまざまな場所に存在し得る。例として、データベース1114および1116のうちの1つ以上は、サーバ1112に対してローカルである(および/またはサーバ1112に存在する)一時的でないストレージ媒体上に存在し得る。代替的には、データベース1114および1116は、サーバ1112からリモートであり得、ネットワークベースまたは専用の接続を介してサーバ1112と通信し得る。実施形態の1つのセットにおいて、データベース1114および1116は、ストレージエリアネットワーク(SAN:storage-area network)に存在し得る。同様に、サーバ1112に起因する機能を実行するための任意の必要なファイルは、適切なように、サーバ1112上にローカルにおよび/またはリモートに格納され得る。実施形態の1つのセットにおいて、データベース1114および1116は、オラクルによって提供されるデータベースのような、SQLフォーマットのコマンドに応答してデータを格納、更新および抽出するように適合されるリレーショナルデータベースを含み得る。
図12は、本発明のさまざまな実施形態が実現され得る例示的なコンピュータシステム1200を示す。システム1200は、上に記載されたコンピュータシステムのいずれかを実現するよう使用され得る。当該図に示されるように、コンピュータシステム1200は、バスサブシステム1202を介して多くの周辺サブシステムと通信する処理ユニット1204を含む。これらの周辺サブシステムは、処理加速ユニット1206、I/Oサブシステム1208、ストレージサブシステム1218、および通信サブシステム1224を含み得る。ストレージサブシステム1218は、有形的なコンピュータ読取可能ストレージ媒体1222およびシステムメモリ1210を含む。
バスサブシステム1202は、コンピュータシステム1200のさまざまなコンポーネントおよびサブシステムを意図されるように互いと通信させるためのメカニズムを提供する。バスサブシステム1202は単一のバスとして概略的に示されるが、バスサブシステムの代替的な実施形態は複数のバスを利用してもよい。バスサブシステム1202は、メモリバスまたはメモリコントローラと、周辺バスと、さまざまなバスアーキテクチャのうちのいずれかを使用するローカルバスとを含むいくつかのタイプのバス構造のうちのいずれかであり得る。たとえば、そのようなアーキテクチャは、産業標準アーキテクチャ(ISA:Industry Standard Architecture)バスと、マイクロチャネルアーキテクチャ(MCA:Micro Channel Architecture)バスと、エンハンスドISA(EISA:Enhanced ISA)バスと、ビデオエレクトロニクス標準組織(VESA:Video Electronics Standards Association)ローカルバスと、IEEE P1386.1規格に対して製造されるメザニーン(Mezzanine)バスとして実現され得るペリフェラルコンポーネントインターコネクト(PCI:Peripheral Component Interconnect)バスとを含み得る。
1つ以上の集積回路として実現され得る処理ユニット1204(たとえば従来のマイクロプロセッサまたはマイクロコントローラ)は、コンピュータシステム1200の動作を制御する。1つ以上のプロセッサが処理ユニット1204に含まれ得る。これらのプロセッサは、シングルコアまたはマルチコアプロセッサを含み得る。ある実施形態において、処理ユニット1204は、各処理ユニットに含まれるシングルまたはマルチコアプロセッサを有する1つ以上の独立した処理ユニット1232および/または1234として実現され得る。他の実施形態において、処理ユニット1204はさらに、シングルチップに2つのデュアルコアプロセッサを統合することにより形成されるクアッドコア処理ユニットとして実現され得る。
さまざまな実施形態において、処理ユニット1204は、プログラムコードに応答してさまざまなプログラムを実行し得、複数の同時に実行されているプログラムまたはプロセスを維持し得る。任意の所与の時間において、実行されるべきプログラムコードのうちのいくつかまたはすべては、プロセッサ1204および/またはストレージサブシステム1218において存在し得る。好適なプログラミングを通じて、プロセッサ1204は上に記載されたさまざまな機能を提供し得る。コンピュータシステム1200はさらに、デジタル信号プロセッサ(DSP)および/または特殊目的プロセッサなどを含み得る処理加速ユニット1206を含み得る。
I/Oサブシステム1208は、ユーザインターフェイス入力デバイスおよびユーザインターフェイス出力デバイスを含み得る。ユーザインターフェイス入力デバイスは、キーボードと、マウスまたはトラックボールのようなポインティングデバイスと、ディスプレイに組み込まれるタッチパッドまたはタッチスクリーンと、スクロールホイールと、クリックホイールと、ダイヤルと、ボタンと、スイッチと、キーパッドと、音声コマンド認識システムを有する音声入力デバイスと、マイクロフォンと、他のタイプの入力デバイスとを含み得る。ユーザインターフェイス入力デバイスは、たとえば、ジェスチャおよび音声コマンドを使用する自然なユーザインターフェイスを通じて、ユーザがMicrosoft Xbox(登録商標)360ゲームコントローラのような入力デバイスを用いて制御および相互作用を行い得るMicrosoft Kinect(登録商標)モーションセンサのようなモーション感知および/またはジェスチャ認識デバイスを含み得る。ユーザインターフェイス入力デバイスはさらに、Google Glass(登録商標)まばたき検出器のようなアイジェスチャ(eye gesture)認識デバイスを含み得る。当該アイジェスチャ認識デバイスは、ユーザの目の活動(たとえば写真を撮る間またはメニューの選択をする間の「まばたき」)を検出し、入力デバイス(たとえば、Google Glass(登録商標))への入力としてアイジェスチャを変換する。さらに、ユーザインターフェイス入力デバイスは、ユーザが音声コマンドを通じて音声認識システム(たとえばSiri(登録商標)ナビゲータ)と相互作用することを可能にする音声認識検出デバイスを含み得る。
ユーザインターフェイス入力デバイスはさらに、3次元(3D)マウスと、ジョイスティックまたはポインティングスティックと、ゲームパッドおよびグラフィックタブレットと、スピーカ、デジタルカメラ、デジタルカムコーダ、ポータブルメディアプレイヤー、ウェブカメラ、イメージスキャナ、指紋スキャナ、バーコードリーダ3Dスキャナ、3Dプリンタ、レーザ距離測定器および視線トラッキングデバイスといったオーディオ/ビジュアルデバイスとを含み得るがこれらに限定されない。さらに、ユーザインターフェイス入力デバイスはたとえば、コンピュータ断層撮影デバイス、磁気共鳴映像デバイス、ポジトロン断層(position emission tomography)デバイス、医療超音波検査デバイスといった医療用画像入力デバイスを含み得る。ユーザインターフェイス入力デバイスはさらに、たとえばMIDIキーボードおよびデジタル楽器などのような音声入力デバイスを含み得る。
ユーザインターフェイス出力デバイスは、ディスプレイサブシステム、インジケータライト、または音声出力デバイスのような非視覚的ディスプレイを含み得る。ディスプレイサブシステムは、陰極線管(CRT)、液晶ディスプレイ(LCD)またはプラズマディスプレイを使用するもののようなフラットパネルデバイス、投写デバイス、およびタッチスクリーンなどであり得る。一般に、「出力デバイス」という用語の使用は、コンピュータシステム1200からユーザまたは他のコンピュータに情報を出力するためのすべての可能なタイプのデバイスおよびメカニズムを含むように意図される。たとえば、ユーザインターフェイス出力デバイスは、モニタ、プリンタ、スピーカ、ヘッドフォン、自動車ナビゲーションシステム、プロッタ、音声出力デバイスおよびモデムといった、テキスト、グラフィックスおよびオーディオ/ビデオ情報を視覚的に伝えるさまざまなディスプレイデバイスを含み得るがこれらに限定されない。
コンピュータシステム1200は、現在、システムメモリ1210内に位置するのが示されているソフトウェア要素を含むストレージサブシステム1218を含み得る。システムメモリ1210は、処理ユニット1204上でロード可能および実行可能であるプログラム命令と、これらのプログラムの実行の間に生成されるデータとを格納し得る。
コンピュータシステム1200の構成およびタイプに依存して、システムメモリ1210は、(ランダムアクセスメモリ(RAM)のように)揮発性および/または(リードオンリメモリ(ROM)、フラッシュメモリなどのように)不揮発性であり得る。RAMは典型的に、処理ユニット1204に直ちにアクセス可能であるか、または、処理ユニット1204によって現在動作および実行されているデータおよび/もしくはプログラムモジュールを含む。いくつかの実現例において、システムメモリ1210は、スタティックランダムアクセスメモリ(SRAM)またはダイナミックランダムアクセスメモリ(DRAM)のような複数の異なるタイプのメモリを含み得る。いくつかの実現例において、たとえば起動の間、コンピュータシステム1200内において要素間で情報を転送するのを補助する基本ルーチンを含む基本入出力システム(BIOS)は、典型的にROMに格納され得る。限定ではなく例として、システムメモリ1210はさらに、クライアントアプリケーション、ウェブブラウザ、中間層アプリケーション、リレーショナルデータベース管理システム(RDBMS:relational database management system)などを含み得るアプリケーションプログラム1212と、プログラムデータ1214と、オペレーティングシステム1216とを示す。例として、オペレーティングシステム1216は、Microsoft Windows(登録商標)、Apple Macintosh(登録商標)、および/またはLinuxオペレーティングシステム、さまざまな商業的に利用可能なUNIX(登録商標)またはUNIXライクのオペレーティングシステムのさまざまなバージョン(さまざまなGNU/LinuxオペレーティングシステムおよびGoogle Chrome(登録商標)OSなどを含むがこれらに限定されない)、および/または、iOS、Windows(登録商標)Phone、Android(登録商標)OS、BlackBerry(登録商標)10 OSおよびPalm(登録商標)OSオペレーティングシステムといったモバイルオペレーティングシステムを含み得る。
ストレージサブシステム1218はさらに、いくつかの実施形態の機能を提供する基本的なプログラミングおよびデータ構造を格納するための有形的なコンピュータ読取可能ストレージ媒体を提供し得る。プロセッサによって実行されると上記の機能を提供するソフトウェア(プログラム、コードモジュール、指示)がストレージサブシステム1218に格納され得る。これらのソフトウェアモジュールまたは命令は、処理ユニット1204によって実行され得る。ストレージサブシステム1218は、さらに本発明に従って使用されるデータを格納するためのリポジトリを提供し得る。
ストレージサブシステム1200はさらに、コンピュータ読取可能ストレージ媒体1222に接続され得るコンピュータ読取可能ストレージ媒体リーダ1220を含み得る。一緒および随意に、システムメモリ1210と組み合わせて、コンピュータ読取可能ストレージ媒体1222は、リモートストレージデバイス、ローカルストレージデバイス、固定ストレージデバイス、および/または、リムーバブルストレージデバイスに加え、コンピュータ読取可能な情報を一時的および/またはより永久的に包含、格納、送信、および抽出するためのストレージ媒体を包括的に表す。
コードまたはコードの部分を含むコンピュータ読取可能ストレージ媒体1222は、ストレージ媒体および通信媒体を含む当該技術において公知または使用される任意の適切な媒体を含み得、当該媒体の例としては、情報の格納および/または送信のための任意の方法または技術において実現される揮発性媒体、不揮発性媒体、リムーバブル媒体および非リムーバブル媒体があるが、これらに限定されない。これは、RAM、ROM、電気的消却プログラム可能型ROM(EEPROM:electronically erasable programmable ROM)、フラッシュメモリもしくは他のメモリ技術、CD−ROM、デジタルバーサタイルディスク(DVD)もしくは他の光学ストレージ、磁気カセット、磁気テープ、磁気ディスクストレージもしくは他の磁気ストレージデバイス、または他の有形的なコンピュータ読取可能媒体といった有形的なコンピュータ読取可能ストレージ媒体を含み得る。これはさらに、所望の情報を送信するために使用され得るとともにコンピューティングシステム1200によってアクセスされ得るデータ信号、データ伝送または任意の他の媒体といった非有形的なコンピュータ読取可能媒体を含み得る。
例として、コンピュータ読取可能ストレージ媒体1222は、非リムーバブル不揮発性磁気媒体に対して読出または書込を行うハードディスクドライブと、リムーバブル不揮発性磁気ディスクに対して読出または書込を行う磁気ディスクドライブと、CD ROM、DVDおよびBlu−Ray(登録商標)ディスクまたは他の光学媒体といったリムーバブル不揮発性光学ディスクに対して読出または書込を行う光学ディスクドライブとを含み得る。コンピュータ読取可能ストレージ媒体1222は、Zip(登録商標)ドライブ、フラッシュメモリカード、ユニバーサルシリアルバス(USB)フラッシュドライブ、セキュアデジタル(SD)カード、DVDディスク、およびデジタルビデオテープなどを含み得るがこれらに限定されない。コンピュータ読取可能ストレージメディア1222はさらに、フラッシュメモリベースのSSD、エンタープライズフラッシュドライブ、およびソリッドステートROMなどのような不揮発性メモリに基づいたソリッドステートドライブ(SSD)と、ソリッドステートRAM、ダイナミックRAM、スタティックRAM、DRAMベースのSSD、磁気抵抗RAM(MRAM:magnetoresistive RAM)SSD、ならびに、DRAMおよびフラッシュメモリベースのSSDの組合せを使用するハイブリッドSSDといった揮発性メモリに基づくSSDとを含み得る。ディスクドライブおよびそれらの関連付けられるコンピュータ読取可能媒体は、コンピュータ読取可能な指示、データ構造、プログラムモジュールおよびコンピュータシステム1200のための他のデータの不揮発性ストレージを提供し得る。
通信サブシステム1224は、他のコンピュータシステムおよびネットワークにインターフェイスを提供する。通信サブシステム1224は、コンピュータシステム1200からデータを受け取るとともに他のシステムにデータを送信するためのインターフェイスとして機能する。たとえば通信サブシステム1224は、コンピュータシステム1200がインターネットを介して1つ以上のデバイスに接続することを可能にし得る。いくつかの実施形態において、通信サブシステム1224は、(たとえば、携帯電話技術、3G、4GまたはEDGE(enhanced data rates for global evolution)のような高度なデータネットワーク技術、WiFi(IEEE 802.11ファミリ規格、他のモバイル通信技術、またはその任意の組合せを使用する)無線音声および/またはデータネットワークにアクセスするための無線周波数(RF)トランシーバコンポーネント、グローバルポジショニングシステム(GPS:global positioning system)受信コンポーネント、および/または、他のコンポーネントを含み得る。いくつかの実施形態において、通信サブシステム1224は、無線インターフェイスに加えてまたは無線インターフェイスの代わりに、有線ネットワーク接続(たとえばイーサネット)を提供し得る。
いくつかの実施形態において、通信サブシステム1224はさらに、コンピュータシステム1200を使用し得る1人以上のユーザに代わって、構造化されたデータおよび/または構造化されていないデータフィード1226、イベントストリーム1228およびイベント更新1230などの形態にある入力通信を受け取り得る。
例として、通信サブシステム1224は、Twitter(登録商標)フィード、Facebook(登録商標)更新、リッチサイトサマリ(RSS:Rich Site Summary)フィードのようなウェブフィード、および/または、1つ以上のサードパーティの情報ソースからのリアルタイム更新といったソーシャルネットワークおよび/または他の通信サービスのユーザからデータフィード1226をリアルタイムで受け取るように構成され得る。
さらに、通信サブシステム1224は、リアルタイムイベントのイベントストリーム1228および/またはイベント更新1230を含み得る連続的なデータストリームの形態でデータを受け取るように構成され得る。当該連続的なデータストリームは、性質において明示的な終わりを有さない連続的または無限であり得る。連続的なデータを生成するアプリケーションの例はたとえば、センサデータアプリケーション、金融相場表示器、ネットワークパフォーマンス測定ツール(たとえばネットワーク監視およびトラフィック管理アプリケーション)、クリックストリーム解析ツール、および自動車交通監視などを含み得る。
通信サブシステム1224はさらに、構造化されたおよび/または構造化されていないデータフィード1226、イベントストリーム1228、およびイベント更新1230などを、コンピュータシステム1200に結合された1つ以上のストリーミングデータソースコンピュータと通信する1つ以上のデータベースに出力するように構成され得る。
コンピュータシステム1200は、ハンドヘルドポータブルデバイス(たとえばiPhone(登録商標)携帯電話、iPad(登録商標)コンピューティングタブレット、PDA)、ウェアラブルデバイス(たとえばGoogle Glass(登録商標)ヘッドマウントディスプレイ)、PC、ワークステーション、メインフレーム、キオスク、サーバラック、または任意の他のデータ処理システムを含むさまざまなタイプのうちの1つであり得る。
コンピュータおよびネットワークの絶えず変化する性質により、図において示されるコンピュータシステム1200の記載は特定の例としてのみ意図される。当該図に示されたシステムよりも多くまたは少ないコンポーネントを有する多くの他の構成が可能である。たとえば、カスタマイズされたハードウェアも使用され得、および/または、特定の要素が、ハードウェア、ファームウェア、ソフトウェア(アプレットを含む)、または組合せで実現され得る。さらに、ネットワーク入出力デバイスのような他のコンピューティングデバイスへの接続も採用され得る。本願明細書において提供される開示および教示に基づいて、当業者は、さまざまな実施形態を実現する他の態様および/または方法を認識するであろう。
上記明細書において、本発明の局面はその特定の実施形態を参照して記載されるが、当業者は本発明がそれに限定されないことを認識するであろう。上記の発明のさまざまな特徴および局面は個々にまたは共同で使用され得る。さらに、実施形態は、明細書のより広い精神および範囲から逸脱することなく本願明細書において記載された環境および適用例を越えて、任意数の環境および適用例において利用され得る。したがって、明細書および図面は、限定ではなく例示であるとみなされるべきである。
その教示がこの開示内に示され得る1つ以上の発明のいずれかのさまざまな実施形態がソフトウェア、ファームウェア、ハードウェアまたはその組合せにおけるロジックの形で実現され得る。ロジックは、この開示において示された発明のさまざまな実施形態において開示され得るステップのセットを実行するために、ロジックマシンの中央処理装置(CPUまたはプロセッサ)を指示するように適合される命令のセットとして、マシンアクセス可能なメモリ、マシン読取可能な物品、有形的なコンピュータ読取可能媒体、コンピュータ読取可能ストレージ媒体、または他のコンピュータ/マシン読取可能媒体に格納され得る。ロジックは、この開示に示される発明のさまざまな実施形態における方法またはプロセスを行うよう実行される際に、コードモジュールがコンピュータシステムまたは情報処理デバイスのプロセッサにより作動状態になると、ソフトウェアプログラムまたはコンピュータプログラムプロダクトの一部を形成し得る。本願明細書において提供されるこの開示および教示に基づいて、示された発明の1つ以上のさまざまな実施形態の開示されたオペレーションまたは機能のいずれかをソフトウェア、ファームウェア、ハードウェアまたはその組合せで実現するための他の態様、変形例、修正例、代替例および/または方法を当業者は理解するであろう。
その教示がこの開示に示され得るそれらの発明のいずれか1つの開示された例、実現例およびさまざまな実施形態は、当業者にこの開示の教示を妥当な明瞭さで伝えるために単に例示的である。これらの実現例および実施形態は例示的な図または特定の図を参照して記載され得る際に、記載される方法および/または特定の構造のさまざまな修正例または適合例は当業者に明らかになり得る。本願明細書において発見されるこの開示およびこれらの教示に依存し、かつ、当該教示によって技術を進歩させたすべてのそのような修正例、適合例または変形例は、その教示がこの開示内に示され得る1つ以上の発明の範囲内に存在すると考えられるべきである。したがって、開示内に示された発明が具体的に示される実施形態にまったく限定されないということが理解されるので、この記載および図は限定的な意味で考えられるべきでない。
したがって、上記の記載および如何なる添付の図面、説明および図は、例示的であるが限定的ではないように意図される。したがって、この開示に示される如何なる発明の範囲も、上記の記載および図に示されるそれらの実施形態を単純に参照してではなく、それらの完全な範囲または均等物とともに係属中の請求項を参照して決定されるべきである。