特許第6684778号(P6684778)IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ オラクル・インターナショナル・コーポレイションの特許一覧

特許6684778ユーザセッション間にわたる操作のアンドゥサポートを用いた自動保存
<>
  • 特許6684778-ユーザセッション間にわたる操作のアンドゥサポートを用いた自動保存 図000002
  • 特許6684778-ユーザセッション間にわたる操作のアンドゥサポートを用いた自動保存 図000003
  • 特許6684778-ユーザセッション間にわたる操作のアンドゥサポートを用いた自動保存 図000004
  • 特許6684778-ユーザセッション間にわたる操作のアンドゥサポートを用いた自動保存 図000005
  • 特許6684778-ユーザセッション間にわたる操作のアンドゥサポートを用いた自動保存 図000006
  • 特許6684778-ユーザセッション間にわたる操作のアンドゥサポートを用いた自動保存 図000007
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】6684778
(24)【登録日】2020年4月1日
(45)【発行日】2020年4月22日
(54)【発明の名称】ユーザセッション間にわたる操作のアンドゥサポートを用いた自動保存
(51)【国際特許分類】
   G06F 11/34 20060101AFI20200413BHJP
   G06F 11/14 20060101ALI20200413BHJP
【FI】
   G06F11/34 138
   G06F11/14 671
【請求項の数】13
【全頁数】23
(21)【出願番号】特願2017-508982(P2017-508982)
(86)(22)【出願日】2015年8月21日
(65)【公表番号】特表2017-527901(P2017-527901A)
(43)【公表日】2017年9月21日
(86)【国際出願番号】US2015046288
(87)【国際公開番号】WO2016029111
(87)【国際公開日】20160225
【審査請求日】2018年3月19日
(31)【優先権主張番号】62/040,505
(32)【優先日】2014年8月22日
(33)【優先権主張国】US
(31)【優先権主張番号】14/667,260
(32)【優先日】2015年3月24日
(33)【優先権主張国】US
【前置審査】
(73)【特許権者】
【識別番号】502303739
【氏名又は名称】オラクル・インターナショナル・コーポレイション
(74)【代理人】
【識別番号】110001195
【氏名又は名称】特許業務法人深見特許事務所
(72)【発明者】
【氏名】ストラウブ,クリスチャン・デイビッド
【審査官】 三坂 敏夫
(56)【参考文献】
【文献】 国際公開第2013/066889(WO,A1)
【文献】 米国特許出願公開第2011/0106776(US,A1)
【文献】 特表2011−509489(JP,A)
【文献】 米国特許出願公開第2005/0081105(US,A1)
【文献】 池上 輝哉 他,「システム運用管理におけるUNDO操作ユーザインタフェース」,情報処理学会研究報告,日本,社団法人情報処理学会,2004年11月12日,第2004巻 第115号,第79頁-第86頁
【文献】 荒井 大輔 他,「オペレーション誤りから迅速に復旧するネットワーク単位の切戻しによる運用管理手法」,電子情報通信学会論文誌,日本,社団法人電子情報通信学会,2010年 4月 1日,第J93-B巻 第4号,第614頁-第624頁
(58)【調査した分野】(Int.Cl.,DB名)
G06F 11/07
11/28−11/36
11/14
(57)【特許請求の範囲】
【請求項1】
方法であって、
サーバ上で実行されるサーバアプリケーションのクライアントアプリケーションとの間の第1のユーザセッション内で行なわれたユーザの1つ以上のアクションを、クライアントコンピューティング装置が受信するステップと、
前記第1のユーザセッション内で行なわれた前記1つ以上のアクションを、前記サーバアプリケーションの履歴に、前記クライアントコンピューティング装置が記録するステップと、
前記サーバアプリケーションの前記クライアントアプリケーションとの間の第2のユーザセッションを、前記クライアントコンピューティング装置がインスタンス化するステップと、
前記サーバが生成した前記クライアントアプリケーションに関連付けられた現在の状態を、前記クライアントコンピューティング装置が受信するステップとを含み、前記現在の状態は、前記第1のユーザセッションに関連付けられたスナップショットに対して、前記サーバが前記サーバアプリケーションの前記履歴に含まれるアクションを実行することで、当該履歴を反映したものであり、
前記サーバアプリケーションの前記クライアントアプリケーションとの間の前記第1のユーザセッション内で行なわれた前記1つ以上のアクションのうちの1つ以上を、前記第2のユーザセッション内でアンドゥするようにという要求を、前記クライアントコンピューティング装置が生成するステップと、
前記要求を前記サーバアプリケーションに送信することで、受信された前記現在の状態に基づいて、前記サーバアプリケーションの前記クライアントアプリケーションとの間の前記第2のユーザセッション内のデータを、前記第1のユーザセッション内のデータの状態を反映するように、前記クライアントコンピューティング装置が修正するステップを含む、方法。
【請求項2】
前記第1のユーザセッション内で行なわれた前記1つ以上のアクションを、前記サーバアプリケーションの前記履歴に、前記クライアントコンピューティング装置が記録するステップは、前記サーバアプリケーションの現在の状態のスナップショットを生成するステップを含む、請求項1に記載の方法。
【請求項3】
前記第1のユーザセッション内で行なわれた前記1つ以上のアクションを、前記サーバアプリケーションの前記履歴に、前記クライアントコンピューティング装置が記録するステップは、前記サーバアプリケーションの以前の状態のチェックサムを用いて、前記サーバアプリケーションの現在の状態のスナップショットを生成するステップを含む、請求項1または2に記載の方法。
【請求項4】
前記第1のユーザセッション内で行なわれた前記1つ以上のアクションを、前記サーバアプリケーションの前記履歴に、前記クライアントコンピューティング装置が記録するステップは、アンドゥ命令を用いて、前記サーバアプリケーションの現在の状態のスナップショットを生成するステップを含む、請求項1〜3のいずれか1項に記載の方法。
【請求項5】
前記第1のユーザセッション内で行なわれた前記1つ以上のアクションを、前記サーバアプリケーションの前記履歴に、前記クライアントコンピューティング装置が記録するステップは、前記サーバアプリケーションの現在の状態のスナップショットを、前記現在の状態と以前の状態との違いに基づいて生成することを含む、請求項1〜4のいずれか1項に記載の方法。
【請求項6】
前記クライアントアプリケーションに関連付けられた前記現在の状態を、前記クライアントコンピューティング装置が受信するステップは、前記現在の状態を決定するために以前のスナップショットおよびデルタを評価することを含む、請求項1〜のいずれか1項に記載の方法。
【請求項7】
プロセッサと一組の命令を格納するメモリとを含むクライアントコンピューティング装置を備えたシステムであって、
前記一組の命令は、前記プロセッサによって実行されると、前記クライアントコンピューティング装置に、
サーバ上で実行されるサーバアプリケーションのクライアントアプリケーションとの間の第1のユーザセッション内で行なわれたユーザの1つ以上のアクションを受信するステップと、
前記第1のユーザセッション内で行なわれた前記1つ以上のアクションを、前記サーバアプリケーションの履歴に記録するステップと、
前記サーバアプリケーションの前記クライアントアプリケーションとの間の第2のユーザセッションをインスタンス化するステップと、
前記サーバが生成した前記クライアントアプリケーションに関連付けられた現在の状態を受信するステップとを実行させ、前記現在の状態は、前記第1のユーザセッションに関連付けられたスナップショットに対して、前記サーバが前記サーバアプリケーションの前記履歴に含まれるアクションを実行することで、当該履歴を反映したものであり、
前記サーバアプリケーションの前記クライアントアプリケーションとの間の前記第1のユーザセッション内で行なわれた前記1つ以上のアクションのうちの1つ以上を、前記第2のユーザセッション内でアンドゥするようにという要求を生成するステップと、
前記要求を前記サーバアプリケーションに送信することで、受信された前記現在の状態に基づいて、前記サーバアプリケーションの前記クライアントアプリケーションとの間の前記第2のユーザセッション内のデータを、前記第1のユーザセッション内のデータの状態を反映するように修正するステップとを実行させる、システム。
【請求項8】
前記第1のユーザセッション内で行なわれた前記1つ以上のアクションを、前記サーバアプリケーションの前記履歴に記録するために、前記クライアントコンピューティング装置は、前記サーバアプリケーションの現在の状態のスナップショットを生成するように構成される、請求項に記載のシステム。
【請求項9】
前記第1のユーザセッション内で行なわれた前記1つ以上のアクションを、前記サーバアプリケーションの前記履歴に記録するために、前記クライアントコンピューティング装置は、前記サーバアプリケーションの以前の状態のチェックサムを用いて、前記サーバアプリケーションの現在の状態のスナップショットを生成するように構成される、請求項またはに記載のシステム。
【請求項10】
前記第1のユーザセッション内で行なわれた前記1つ以上のアクションを、前記サーバアプリケーションの前記履歴に記録するために、前記クライアントコンピューティング装置は、アンドゥ命令を用いて、前記サーバアプリケーションの現在の状態のスナップショットを生成するように構成される、請求項のいずれか1項に記載のシステム。
【請求項11】
前記第1のユーザセッション内で行なわれた前記1つ以上のアクションを、前記サーバアプリケーションの前記履歴に記録するために、前記クライアントコンピューティング装置は、前記サーバアプリケーションの現在の状態のスナップショットを、前記現在の状態と以前の状態との違いに基づいて生成するように構成される、請求項10のいずれか1項に記載のシステム。
【請求項12】
コンピュータ実行可能コードを含むコンピュータプログラムであって、
サーバ上で実行されるサーバアプリケーションのクライアントアプリケーションとの間の第1のユーザセッション内で行なわれた1つ以上のユーザの1つ以上のアクションを受信するためのコードと、
前記第1のユーザセッション内で行なわれた前記1つ以上のアクションを、前記サーバアプリケーションの履歴に記録するためのコードと、
前記サーバアプリケーションの前記クライアントアプリケーションとの間の第2のユーザセッションをインスタンス化するためのコードと、
前記サーバが生成した前記クライアントアプリケーションに関連付けられた現在の状態を受信するためのコードとを含み、前記現在の状態は、前記第1のユーザセッションに関連付けられたスナップショットに対して、前記サーバが前記サーバアプリケーションの前記履歴に含まれるアクションを実行することで、当該履歴を反映したものであり、
前記サーバアプリケーションの前記クライアントアプリケーションとの間の前記第1のユーザセッション内で行なわれた前記1つ以上のアクションのうちの1つ以上を、前記第2のユーザセッション内でアンドゥするようにという要求を生成するためのコードと、
前記要求を前記サーバアプリケーションに送信することで、受信された前記現在の状態に基づいて、前記サーバアプリケーションの前記クライアントアプリケーションとの間の前記第2のユーザセッション内のデータを、前記第1のユーザセッション内のデータの状態を反映するように修正するためのコードを含む、コンピュータプログラム。
【請求項13】
方法であって、
サーバ上で実行されるサーバアプリケーションのクライアントアプリケーションとの間の第1のユーザセッション内で行なわれたユーザの1つ以上のアクションを、前記サーバが受信するステップと、
前記第1のユーザセッション内で行なわれた前記1つ以上のアクションを、前記サーバアプリケーションの履歴に、クライアントコンピューティング装置が記録するステップと、
前記サーバが前記クライアントアプリケーションに関連付けられた現在の状態を生成するステップとを含み、前記現在の状態は、前記第1のユーザセッションに関連付けられたスナップショットに対して、前記サーバが前記サーバアプリケーションの前記履歴に含まれるアクションを実行することで、当該履歴を反映したものであり、
前記サーバが前記現在の状態を前記クライアントコンピューティング装置に送信するステップと、
前記サーバアプリケーションの前記クライアントアプリケーションとの間の前記第1のユーザセッション内で行なわれた前記1つ以上のアクションのうちの1つ以上を、インスタンス化された第2のユーザセッション内でアンドゥするようにという要求を、前記サーバが前記クライアントコンピューティング装置から受信するステップとを含む、方法。
【発明の詳細な説明】
【技術分野】
【0001】
発明の背景
アプリケーション開発フレームワーク(Application Development Framework:ADF)は、アプリケーションの開発において直接的/間接的に使用され得る一組の予め定義されたコード/データモジュールを提供する。ADFはまた、開発者がアプリケーションの所望のロジックをより迅速/より単純な態様でコード化/実現することを容易にする、IDE(integrated development environment:統合開発環境)、コード生成器、デバッガなどのツールを提供してもよい。
【背景技術】
【0002】
一般に、ADFは、再使用可能なコンポーネントおよび統合開発環境を提供することによって、アプリケーションの開発を簡略化する。アプリケーション開発者らは、たとえば所望のタスクを行なうためのコンポーネントを選択し、選択されたコンポーネントの外観、挙動、およびやりとりを定義することによって、ユーザインターフェイスおよびアプリケーションロジックを定義するために、再使用可能なコンポーネントおよび統合開発環境を使用できる。ADFの中には、緩い結合とより簡単なアプリケーション開発および保守とを促進するモデル・ビュー・コントローラデザインパターンに基づくものもある。オラクルアプリケーション開発フレームワークは、このデザインパターンを利用するADFの一例である。
【0003】
オラクルADFは、ビルトインのHTML5およびエイジャックス(Ajax)機能性を有する標準ベースのJava(登録商標)サーバフェイス(Java Server Face:JSF)コンポーネントのライブラリを含む。これらのコンポーネントにより、ウェブにデプロイされたユーザインターフェイスを、以前にシッククライアントアプリケーション用に確保された機能性およびやりとり性能のレベルを有するように開発することができる。コンポーネントは、リッチクライアントアプリケーション開発をこれまでよりも簡単にする一組の使いやすいコンポーネントにおいて、データやりとり、データ視覚化、およびカプセル化されたブラウザ側操作を提供する。オラクルADFはさらに、IDEにおける単純なドラッグアンドドロップ操作を通してビジネスサービスへのUIの結合を簡略化するデータ結合フレームワークを提供する。これは、インターフェイスへの注力からのビジネスサービスの独立を依然として保ちながら行なわれる。このフレームワークにより、UI開発者は、ビジネスサービス層の根底的実装から隔離される。これは、UIを構築するプロセスをビジネスサービス層の実装から真に切り離し、アプリケーションをサービス指向アーキテクチャでの実装のためにより良好に位置付ける。
【0004】
オラクルADFを含む多くの現代のコンピュータアプリケーションは、ユーザの直接呼び出しではない態様で実行されるアクションを取り入れている。一例は、ユーザが行なった作業をアプリケーションが周期的に保存する自動保存(またはオートセーブ)機能である。自動保存機能により、ユーザは、ユーザがデータの明確な保存を行なう機会を有する前にユーザのコンピュータシステムまたはアプリケーション自体が故障した場合にユーザの作業の大半が保護されるであろうということをより確信して、作業を続けることができる。
【0005】
これらの自律的アクションは、たとえば、システム故障時に失われるかもしれない作業を保護したり、またはユーザの追加のキーストロークを省いたり、またはスクリーンディスプレイが不必要にごちゃごちゃにならないようにする上で有用であるものの、それらは他の点で欠点を有する場合がある。自動保存に関する1つの主な問題は、その呼び出しが、ユーザが操作をアンドゥする、または操作をリドゥする能力を取り除くことである。多くのコンピュータアプリケーションでは、ユーザが行なったアクションの履歴をアプリケーションが維持することはよくあることであり、そのため、アクションを逆行させることができる。アンドゥオプションを繰り返し使用することによって多数のアクションを後戻りさせることが、これらの環境において可能であるときもある。ユーザアクションをアンドゥするこの機能は有用であるが、現在の方法は典型的には、アンドゥ履歴におけるある数のアンドゥ操作に制限されている。さらに、アンドゥ履歴の寿命は通常、ユーザセッションの間のみである。
【0006】
したがって、望まれるのは、自動保存を採用するアプリケーションにおけるアンドゥ履歴に関する問題を解決することであり、それらのうちのいくつかをここに説明する。加えて、望まれるのは、自動保存機能性を採用する現代のクラウドベースのアプリケーションに関する欠点を減らすことであり、それらのうちのいくつかをここに説明する。
【発明の概要】
【課題を解決するための手段】
【0007】
発明の簡単な概要
この開示の以下の部分は、この開示において見出された1つ以上の革新、実施形態、および/または例の簡略化された概要を、少なくとも主題の基本的理解を提供するという目的のために提示する。この概要は、任意の特定の実施形態または例の広範な概要を提供することを試みていない。加えて、この概要は、実施形態または例の主要/重要要素を識別するよう、またはこの開示の主題の範囲を定めるよう意図されてはいない。したがって、この概要の1つの目的は、この開示において見出されたいくつかの革新、実施形態、および/または例を、後に提示されるより詳細な説明の前置きとして、簡略化された形で提示することであり得る。
【0008】
さまざまな実施形態において、データセットを作成した完全なアクション履歴(ユーザアクション)を記録するシステムおよび方法が開示される。アクション履歴は次に、データセットの一部として取り入れられ得る。保存されたオブジェクトを与えられて、初期状態(たとえばコンテンツのないもの)と最終状態(たとえば保存されたコンテンツ)との間に経路が構築され得る。アクション履歴において後向きに進むことにより、ユーザは、初期状態までずっと、アクションをアンドゥし続けることができる。
【0009】
この開示の主題の性質および均等物(ならびに、提供されたあらゆる固有のまたは明白な利点および改良)についてのさらなる理解が、この開示の残りの部分、あらゆる添付図面、および請求項を参照することにより、上述の区分に加えて実現されるはずである。
【0010】
図面の簡単な説明
この開示において見出されたそれらの革新、実施形態、および/または例を適正に説明し図示するために、1つ以上の添付図面を参照してもよい。1つ以上の添付図面を説明するために使用される追加の詳細または例は、請求される発明のうちのいずれか、現在説明されている実施形態および/または例のうちのいずれか、もしくは、この開示において提示されたいずれかの革新の現在理解されている最良の形態への範囲の限定として考えられるべきでない。
【図面の簡単な説明】
【0011】
図1】この発明に従った一実施形態におけるアプリケーション開発フレームワーク(ADF)を示すブロック図である。
図2】この発明に従った一実施形態におけるユーザセッション間にわたる履歴を生成するための方法のフローチャートである。
図3】この発明に従った一実施形態におけるユーザセッション間にわたる履歴を検索するための方法のフローチャートである。
図4】この発明に従った一実施形態におけるセッション履歴における不一致を解消するための方法のフローチャートである。
図5】実施形態のうちの1つを実現するための分散型システムの簡略図である。
図6】この発明のさまざまな実施形態が実現され得る例示的なコンピュータシステムを示す図である。
【発明を実施するための形態】
【0012】
発明の詳細な説明
以下の記載では、説明の目的のため、この発明の実施形態の完全な理解を提供するために特定の詳細が述べられる。しかしながら、これらの特定の詳細がなくてもさまざまな実施形態は実践され得る、ということは明らかであろう。図および説明は、限定的であるよう意図されてはいない。
【0013】
はじめに
JavaEEは、今日の企業アプリケーションの多くにとっての基盤を形成する、標準の頑強でスケーラブルでセキュアなプラットフォームである。JavaEEは、Java言語を使用して、多層アプリケーションを構築するための一組の仕様を提供する。過去においては、アプリケーションの頑強な性質と、それを達成するために必要とされる複雑性との間には、直接相関があった。しかしながら、オラクルADFなどのADFの出現により、極めてリッチなJavaEEアプリケーションの実装が、標準パターンおよびプラクティスを守ることによって、大幅に減少した労力で提供され得る。
【0014】
サービス指向アーキテクチャ(Service Oriented Architecture:SOA)原理を利用する複合アプリケーションを組織が構築する必要性の増加により、開発者らは、極めてアジャイルなアプリケーションを作成することを強いられる。これらのベストプラクティスをアジャイルなアプリケーションで実現することは通常、かなりの量のインフラストラクチャコードを書くことを伴い、自分たちの最初のJavaEEアプリケーションを構築する開発者らにとって別の障害を追加する。頑強で高性能で保守可能なアプリケーションを提供することに加えて、オラクルADFは、アジャイルなSOAベースのアプリケーションを実装するためにインフラストラクチャコードを提供し、それにより、組織が「自作する」ことに伴う労力を取り除く。
【0015】
オラクルADFはさらに、オラクルJDeveloper 11g開発ツールを通して、JavaEE開発への視覚的および宣言的アプローチを提供する。オラクルADFはモデル・ビュー・コントローラデザインパターンを実装して、このアーキテクチャのすべての層を、オブジェクト/リレーショナルマッピング、データ持続性、再使用可能なコントローラ層、リッチなウェブユーザインターフェイスフレームワーク、UIへのデータ結合、セキュリティおよびカスタム化などのエリアに対する解決策でカバーする統合的解決策を提供する。コアウェブベースのMVCアプローチを超えて、ADFはまた、オラクルSOAおよびウェブセンターポータル(WebCenter Portal)フレームワークと統合されて、完全な複合アプリケーションの作成を簡略化する。
【0016】
たとえば、オラクルADFは、ADFにおけるビルトインビジネスサービスにサービスインターフェイスを結合することによって、サービスとしてデータを公開するアジャイルなアプリケーションを開発することを容易にする。ビジネスサービス実装詳細のこの分離は、オラクルADFにおいてメタデータを介して行なわれる。このメタデータ駆動型アーキテクチャの使用により、アプリケーション開発者らは、サービスがどのようにアクセスされるかの詳細にではなく、ビジネスロジックおよびユーザ体験に集中できるようになる。
【0017】
オラクルADFは、これらのサービスの実装詳細を、ADFモデル層におけるメタデータに格納する。これにより、開発者らは、ユーザインターフェイスを修正することなくサービスを交換できるようになり、アプリケーションが非常にアジャイルになる。加えて、ユーザインターフェイスを作成する開発者は、ビジネスサービスアクセス詳細に悩まされる必要がない。代わりに、開発者らは、アプリケーションインターフェイスおよびやりとりロジックの開発に集中することができる。ユーザ体験を作り出すことは、ビジュアルページデザイナ上に所望のビジネスサービスをドラッグアンドドロップし、どのタイプのコンポーネントがそのデータを表わすべきかを示すのと同じくらい単純であり得る。
【0018】
図1は、この発明に従った一実施形態におけるアプリケーション開発フレームワーク(ADF)100を示すブロック図である。図1は、この開示において提示された1つ以上の発明のさまざまな実施形態または実現化例を取り入れ得るシステムの簡略図である。図1は、ここに開示された発明の実施形態または実現化例が、請求項に記載されるような発明の範囲を限定すべきではないことを例示しているに過ぎない。当業者であれば、ここに提示されたこの開示および教示を通して、図に示された実施形態または実現化例に対する他の変形例、修正例、および/または代替例を認識するであろう。
【0019】
ADF100は、一例ではオラクルADFとして具現化され得る。したがって、ADF100は、モデル・ビュー・コントローラ(Model-View-Controller:MVC)デザインパターンに基づく。MVCアプリケーションは、1)データソースとのやりとりを扱い、ビジネスロジックを実行するモデル層と、2)アプリケーションユーザインターフェイスを扱うビュー層と、3)アプリケーションフローを管理し、モデル層とビュー層との間のインターフェイスとして作用するコントローラとに分離される。これら3つの層にアプリケーションを分離することは、アプリケーション間にわたるコンポーネントの保守および再使用を簡略化する。各層の他の層からの独立は、緩く結合されたサービス指向アーキテクチャ(SOA)をもたらす。
【0020】
この実施形態では、企業アプリケーションを形成するモジュールがADF100内にあるとして示されており、それらのモジュールはADFを使用して開発され、次にADF100のコンテキストにおいて実行されることが表わされている。簡潔にするために、JAVAプログラミング言語と、オラクル・コーポレイションから入手可能な開発ツールであるJDeveloper 10.1.3の一部として利用可能なオラクルADFとを使用してアプリケーションが開発されると仮定して、ADFのさまざまな内部詳細は示されない。しかしながら、以下に説明される本発明の特徴は、ここに提供される開示を当業者が読めば明らかであるように、プログラミング言語とアプリケーション開発フレームワークとのあらゆる所望の組合せを用いて実現され得る。
【0021】
さまざまな実施形態では、ADF100は、アプリケーションが多層の形で開発されることを可能にし、各層は、予め定義された仕様に従って所望のロジックを実現するコードモジュール/ファイルを含む。このため、一実施形態では、ADF100は、アプリケーションが、アプリケーションのユーザインターフェイスを提供するコードモジュール/ファイルを含むビュー層110と、アプリケーションのフローを制御するコードモジュールを含むコントローラ層120と、根底的データのための抽象化層を提供するデータ/コードモジュールを含むモデル層130と、さまざまなソースからのデータへのアクセスを提供し、ビジネスロジックを扱うコードモジュールを含むビジネスサービス層140という4つの層として開発されることを可能にする。
【0022】
オラクルADFは、開発者らに、層の各々を実装する際に自分たちが使用したい技術を選択させる。図1は、オラクルADFアプリケーションを構築する際に開発者らが利用できるさまざまなオプションを示す。JavaEEアプリケーションのさまざまなコンポーネントを統合して開発を非常にフレキシブルにする接着剤が、オラクルADFモデル層である。EJB、ウェブサービス(Web Services)、JavaBeans、JPA/エクリプスリンク(EclipseLink)/トップリンク(TopLink)オブジェクト、および他の多くがすべて、オラクルADFモデルのためのビジネスサービスとして使用可能である。ビュー層は、JSF、デスクトップスイング(Desktop Swing)アプリケーション、およびMSオフィスフロントエンドを用いて実現されるウェブベースのインターフェイスと、モバイル装置のためのインターフェイスとを含み得る。
【0023】
そのような層状アプローチを使用するアプリケーションの開発はしばしば、さまざまなアプリケーション間にわたるコンポーネント/コードモジュールの保守および再使用を簡略化する、ということが理解され得る。また、各層の他の層からの独立は、緩く結合されたサービス指向アーキテクチャ(SOA)をもたらし、それは、開発されたビジネス/企業アプリケーションを複数の/異なるシステム上にデプロイする際に望ましい場合がある。
【0024】
一局面では、ビュー層110は、開発中のアプリケーションのユーザインターフェイスを表わす。ビュー層110は、デスクトップビュー、モバイルビュー、およびブラウザベースのビューを有して示されており、それらの各々はユーザインターフェイスのすべてまたは一部を提供するとともに、ビュータイプに対応するさまざまな態様でアクセス可能である。たとえば、ウェブページが、対応するURLを含むクライアント要求を受信することに応答して、アプリケーションによって送信されてもよい。ウェブページは次に、要求元クライアントシステムに関連付けられた表示部(図示せず)上にブラウザによって表示されてもよく、それにより、要求元クライアントシステムのユーザが企業アプリケーションとやりとりすることを可能にする。オラクルADFは、ビジネスサービスの再使用を可能にするビジネスサービスへのマルチチャネルアクセスと、ウェブクライアント、クライアント・サーバ・スイングデスクトップベース・アプリケーション(client-server swing desktop-based application)、マイクロソフトエクセルスプレッドシート、スマートフォンなどのモバイル装置、などからのアクセスとをサポートする。
【0025】
(ウェブページなどの)ビュー層を形成するコードファイル/モジュールは、ハイパーテキストマークアップ言語(hypertext markup language:HTML)、Javaサーバページ(Java server page:JSP)、およびJavaサーバフェイス(JSF)のうちの1つ以上を使用して実現されてもよい。これに代えて、ユーザインターフェイスは、スイング(Swing)などのJavaコンポーネントおよび/または拡張マークアップ言語(extensible markup language:XML)を使用して実現されてもよい。さらに示されるように、ユーザインターフェイスは、マイクロソフトによるワードおよびエクセルなどのデスクトップアプリケーションについてのユーザの経験および習熟を活用してもよい。
【0026】
上述のように、ユーザが開発した関連するコード/データモジュールが、層の各々において提供される。しかしながら、各層は典型的には、ADF100によって提供された他の予め定義されたコード/データモジュールを含む。予め定義されたモジュールのうちのいくつかは、たとえば、ウェブページを開発するためのテンプレート、開発されたコードに所望の機能性を含めるためのテンプレートなどとして、開発中に使用されてもよい。(URL書換モジュールなどの)他の予め定義されたモジュールが、開発されたアプリケーションとともにデプロイされてもよく、企業アプリケーションの実行中に追加の機能性(要求されたURLの、内部名へのマッピング)をユーザに提供してもよい。
【0027】
コントローラ層120は、アプリケーションのフローを制御するコードモジュール/ファイルを含む。各コントローラオブジェクトは、ビュー層110において情報を提示する所望の態様に従って実現されたソフトウェア命令および/またはデータを含む。所望の態様は、別のウェブページにおけるリンクがユーザによってクリック/選択されると表示される特定のウェブページ、実行中にエラーが起こると表示される、格納/検索すべき特定のデータを示すページなどを含んでいてもよい。
【0028】
一局面では、コントローラ層120はアプリケーションフローを管理し、ユーザ入力を扱う。たとえば、ページ上でサーチボタンがクリックされると、コントローラは、どのアクションを行なうべきか(サーチを行なう)と、どこにナビゲートすべきか(結果ページ)とを判断する。JDeveloperでは、ウェブベースのアプリケーションについて、標準のJSFコントローラ、またはJSFコントローラ機能性を拡張するADFコントローラという2つのコントローラオプションがある。どちらのコントローラが使用されても、アプリケーションフローは典型的には、ページおよびナビゲーションルールをダイアグラム上にレイアウトすることによってデザインされる。アプリケーションのフローは、より小さい、再使用可能なタスクフローに分割可能であり、方法コールおよび決定ポイントなどの非視覚的コンポーネントをフローに含めることでき、単一の含有ページの領域内で実行される「ページフラグメント」フローを作成することができる。
【0029】
コントローラ層120を形成するコードモジュール/ファイルはしばしば、クライアント要求を受信するととともに対応する応答として所望のウェブページを送信するJavaサーブレットとして実現される。コントローラオブジェクトはまた、たとえば、アパッチジャカルタストラット(Apache Jakarta Struts)コントローラとして、またはJSF規格に従って実現されてもよい。
【0030】
モデル層130は、図示されるように、さまざまなビジネスサービスを、それらを他の層で使用するオブジェクトに、たとえば上述のコントローラオブジェクトに、または直接デスクトップアプリケーションに接続する、データ/コードモジュールを含む。モデル層130の各抽象データオブジェクトは、任意のタイプのビジネスサービスにアクセスするために使用可能である対応するインターフェイスを提供し、根底的なビジネスサービス層140で実行される。データオブジェクトは、クライアントからサービスのビジネスサービス実装詳細を抽象化し、および/または、データ制御方法/属性をビューコンポーネントに公開してもよく、ビュー層とデータ層との分離を提供する。
【0031】
一局面では、モデル層130は、データ制御およびデータ結合という2つのコンポーネントからなり、それらは、インターフェイスを定義するためにメタデータファイルを利用する。データ制御は、クライアントからビジネスサービス実装詳細を抽象化する。データ結合は、データ制御方法および属性をUIコンポーネントに公開し、ビューとモデルとのクリーンな分離を提供する。モデル層のメタデータアーキテクチャにより、開発者らは、任意のタイプのビジネスサービス層実装をビュー層およびコントローラ層に結合する際に、同じ開発経験を得る。
【0032】
オラクルADFは、開発プロセス全体にわたって宣言的プログラミングパラダイムの使用を強調して、ユーザが、実現詳細に手をつける必要なく、アプリケーション作成のロジックに集中できるようにする。高レベルでは、フュージョン(Fusion)ウェブアプリケーションのための開発プロセスは通常、アプリケーションワークスペースを作成することを伴う。ウィザードを使用して、開発者が選択した技術にとって必要なライブラリおよび構成が自動的に追加され、アプリケーションが、パッケージおよびディレクトリを有するプロジェクトへと構造化される。
【0033】
データベースオブジェクトをモデル化することにより、オンラインデータベースまたは任意のデータベースのオフラインレプリカが作成可能であり、定義が編集可能であり、スキーマが更新可能である。UMLモデラーを使用して、使用事例が次に、アプリケーションのために作成可能である。アプリケーション制御およびナビゲーションもデザイン可能である。アプリケーション制御およびナビゲーションのフローを視覚的に判断するために、ダイアグラマ(diagrammer)が使用可能である。次に、フローを記述する根底的なXMLファイルが自動的に作成可能である。開発者が、インポートされたライブラリを、アプリケーションに単純にドラッグアンドドロップすることによって閲覧および使用することを可能にするために、リソースライブラリが使用可能である。データベーステーブルから、エンティティオブジェクトが、ウィザードまたはダイアログを使用して作成可能である。それらのエンティティオブジェクトから、ビューオブジェクトが、アプリケーションにおけるページによって使用されるように作成される。検証ルールおよび他のタイプのビジネスロジックが実現可能である。
【0034】
この例では、ビジネスサービス層140は、データ持続性層とのやりとりを管理する。それは、データ持続性、オブジェクト/リレーショナルマッピング、トランザクション管理、およびビジネスロジック実行などのサービスを提供する。オラクルADFにおけるビジネスサービス層は、シンプルJavaクラス、EJB、ウェブサービス、JPAオブジェクト、およびオラクルADFビジネスコンポーネントといったオプションのうちのいずれかで実装可能である。加えて、データは、ファイル(XMLまたはCSV)およびRESTから直接消費され得る。
【0035】
このため、各ビジネスサービスは、対応するデータ持続性層とのやりとりを管理し、また、オブジェクト/リレーショナルマッピング、トランザクション管理、ビジネスロジック実行などのサービスを提供する。ビジネスサービス層は、シンプルJavaクラス、エンタープライズJavaBeans、ウェブサービスなどのうちの1つ以上を使用して実装されてもよい。
【0036】
ビジネスコンポーネントは、データベース、ウェブサービス、レガシーシステム、アプリケーションサーバなどとのやりとりを提供するために、たとえばオラクルADFビジネスコンポーネントを使用して実装されるビジネスサービスを表わす。一実施形態では、ビジネスサービス層140のビジネスコンポーネントは、ビジネスサービス実装を提供するために協働するアプリケーションモジュール、ビュー/クエリーオブジェクト、およびエンティティオブジェクトの混合を含む。アプリケーションモジュールは、アプリケーション/トランザクションデータと連携するためにUIクライアントが通信するトランザクションコンポーネント/コードモジュールであり得る。アプリケーションモジュールは、更新可能なデータモデルを提供してもよく、また、ユーザトランザクションに関する手順/機能(一般にサービス方法と呼ばれる)を提供してもよい。
【0037】
エンティティオブジェクトは、データベーステーブルにおける対応する行を表わしてもよく、対応する行に格納されたデータの操作(更新、削除など)を簡略化する。エンティティオブジェクトはしばしば、所望のビジネスルールが一貫して実施されることを確実にするために、対応する行のためのビジネスロジックをカプセル化する。エンティティオブジェクトはまた、根底的なデータベースに格納された行間に存在する関係を反映するように、他のエンティティオブジェクトに関連付けられてもよい。
【0038】
ユーザセッション間にわたるサポートを用いた自動保存
さまざまな実施形態において、データセットを作成した完全なアクション履歴(ユーザアクション)を記録するシステムおよび方法が開示される。アクション履歴は次に、データセットの一部として取り入れられ得る。保存されたオブジェクトを与えられて、初期状態(たとえばコンテンツのないもの)と最終状態(たとえば保存されたコンテンツ)との間に経路が構築され得る。アクション履歴において後向きに進むことにより、ユーザは、初期状態までずっと、アクションをアンドゥし続けることができる。
【0039】
開示された手法は、アンドゥ状態がメモリに保持される従来のアプローチに少なくともいくつかの利点を提供する。これは通常、アンドゥ操作を予め定められた数のアンドゥに制限する。これは、厳密な数(たとえば、最新の15個のアクションを記憶する)であるか、またはセッションベースである(たとえば、オンラインサービスは一般に、ブラウザを閉じるまでアンドゥ操作を可能にする)ことが多い。しかしながら、これらは双方とも制限されており、ユーザが以前のアクションをさらにアンドゥしたい場合、ユーザは制限される。
【0040】
ユーザがコンテンツの状態を明確にフリーズさせ、または自動チェックポイントをイネーブルにすることができても、これらの解決策は、ユーザが自分のデータについてある時点に戻ることを可能にするだけである。この点は、ずっと以前かもしれず、ずっと先かもしれず、またはアクション間の開きが広すぎて、これらの解決策は、ユーザが自分のデータを検索したい時点にユーザを十分に連れていかない。
【0041】
さまざまな実施形態では、ユーザの作業の自動保存は、ユーザが望ましくない作業を(それがどれほど以前に生成されたものであっても)捨てたり、または以前の操作を再度行なう能力を犠牲にしない。より複雑なクラウドベースのアプリケーション(すなわち、オンラインコードエディタが典型例である)が開発されるにつれて、作業を任意の時点に戻す能力は非常に貴重である。
【0042】
図2は、この発明に従った一実施形態におけるユーザセッション間にわたる履歴を生成するための方法200のフローチャートである。図2に示す方法200における実現または処理は、コンピュータシステムまたは情報処理装置などのロジックマシンの中央処理装置(CPUまたはプロセッサ)によって実行される際にソフトウェア(たとえば命令またはコードモジュール)によって行なわれてもよく、電子装置または特定用途向け集積回路のハードウェアコンポーネントによって行なわれてもよく、または、ソフトウェア要素とハードウェア要素との組合せによって行なわれてもよい。図2に示す方法200は、ステップ210で開始する。
【0043】
ステップ220で、ユーザアクションを示す情報が受信される。いくつかのパーソナルコンピューティング装置を含む多種多様のコンピューティング装置は、イベント/アクションを追跡して記録するシステム(たとえばユーザインターフェイスシステム)を含むコンピューティング能力を含む。そのようなイベント/アクションは典型的には、ユーザによって直接行なわれたアクション(たとえば、キーストロークおよびポインタ(マウスまたはペン)移動)、ユーザによって間接的に起動されたアクション(たとえば、ユーザによって呼び出されたマクロまたはスクリプトによって行なわれたアクション)、自動的に呼び出されたアクション、などを含む。イベント/アクションは、それら自体の対応するイベント/アクションコードを有し得る。さまざまな実施形態では、イベント/アクションデータを格納するために、バッファを使用することができる。アプリケーションがユーザアクションの表示を受信し、適切なバッファからイベント/アクションデータを検索してもよい。
【0044】
ステップ230で、ユーザアクションに基づいてアンドゥ情報が生成される。一実施形態では、任意のユーザアクションが起こると、そのアクションのために、以前の状態のチェックサム、現在の状態、およびアンドゥ命令が、タイムスタンプ情報とともに記録される。一局面では、以前の状態と現在の状態との違いに基づいて、現在の状態のスナップショットが記録される。さらに、その保存セッション中に行なわれたアクションを記録することができる。
【0045】
ステップ240で、アンドゥ情報およびデータがサーバで記録される。一実施形態では、クライアント装置で自動保存が起こると、その保存セッション中に作成されたすべてのアクションが、サーバ(または保存サービス)に送信される。図2はステップ250で終了する。
【0046】
図3は、この発明に従った一実施形態におけるユーザセッション間にわたる履歴を検索するための方法300のフローチャートである。図3に示す方法300における実現または処理は、コンピュータシステムまたは情報処理装置などのロジックマシンの中央処理装置(CPUまたはプロセッサ)によって実行される際にソフトウェア(たとえば命令またはコードモジュール)によって行なわれてもよく、電子装置または特定用途向け集積回路のハードウェアコンポーネントによって行なわれてもよく、または、ソフトウェア要素とハードウェア要素との組合せによって行なわれてもよい。図3に示す方法300は、ステップ310で開始する。
【0047】
ステップ320で、現在の状態への要求が受信される。たとえば、セッションを再開すると、ユーザは、現在のセッションをまたぐ1つ以上のアンドゥ操作を要求してもよい。アプリケーションがユーザアクションの表示を受信し、サーバから現在の状態のデータを要求してもよい。サーバは要求を受信し、セッション状態情報をどのように生成するかを判断してもよい。
【0048】
ステップ330で、現在の状態を生成するために、1つ以上のアクションがリプレイ(replay)される。たとえば、現在の状態を生成するために、1つ以上の以前のセッション中に行なわれた、1つ以上の記録されたアクションがリプレイされ得る。サーバは、現在の状態を判断するために、以前のスナップショットおよびデルタを評価してもよい。現在の状態を生成するために、命令がサーバ上でリプレイされ得る(状態とアクションとが整合することを確実にする)。アクションはまた、データとともに記録される。データを復元することは最適化であり、そのため、チップデータを迅速に読むことができる。
【0049】
ステップ340で、現在の状態はクライアント装置に送信される。図3はステップ350で終了する。
【0050】
図4は、この発明に従った一実施形態におけるセッション履歴における不一致を解消するための方法400のフローチャートである。図4に示す方法400における実現または処理は、コンピュータシステムまたは情報処理装置などのロジックマシンの中央処理装置(CPUまたはプロセッサ)によって実行される際にソフトウェア(たとえば命令またはコードモジュール)によって行なわれてもよく、電子装置または特定用途向け集積回路のハードウェアコンポーネントによって行なわれてもよく、または、ソフトウェア要素とハードウェア要素との組合せによって行なわれてもよい。図4に示す方法400は、ステップ410で開始する。
【0051】
ステップ420で、セッション履歴に不一致が存在するかどうかについて判断が下される。たとえば、記録のためにアクションが送信されてもよいが、初期状態がアクションの以前の状態のチェックサムと整合しない。ステップ430で不一致が存在しないという判断が下されると、ステップ470で現在の状態を生成するために1つ以上のアクションがリプレイされる。ステップ430で不一致が存在するという判断が下されると、ステップ440で、ユーザは、不一致を解消するよう促される。さまざまな実施形態では、ユーザは、別の編集が起こったと通知され得る。ユーザは次に、自分のアクションを破棄して自分のデータを不一致のデータと置き替えるか、または自分のデータでオーバーライドするかを選択できる。
【0052】
ステップ450でユーザが自分のアクションを破棄して自分のデータを不一致のデータと置き替えると決心すると、ステップ470で現在の状態を生成するために1つ以上のアクションがリプレイされる。サーバは、最新の以前の状態のチェックサムを新規アクションと整合させ、次に、他のアクションをそれらのクライアント上でリプレイするであろう。ステップ450でユーザがデータを自分のデータでオーバーライドすると決心すると、ステップ460で以前の状態は新規アクションと整合される。ステップ470で現在の状態を生成するために、サーバは、整合する最新の以前の状態のチェックサムを見つけ、次に、ユーザのアクションをリプレイすることができる。図4はステップ450で終了する。
【0053】
結論
図のいくつかに示されたシステムは、さまざまな構成で提供されてもよい。いくつかの実施形態では、システムは、システムの1つ以上のコンポーネントが1つ以上のネットワークを通してクラウドコンピューティングシステムに分散される分散型システムとして構成されてもよい。
【0054】
図5は、実施形態のうちの1つを実現するための分散型システム500の簡略図を示す。図示された実施形態では、分散型システム500は1つ以上のクライアントコンピューティング装置502、504、506、および508を含み、それらは、1つ以上のネットワーク510を通して、ウェブブラウザ、専用クライアント(たとえば、オラクル・フォームズ(Oracle Forms))などのクライアントアプリケーションを実行し、動作させるように構成される。サーバ512は、ネットワーク510を介して、リモートクライアントコンピューティング装置502、504、506、および508と通信可能に結合されてもよい。
【0055】
さまざまな実施形態では、サーバ512は、システムのコンポーネントのうちの1つ以上によって提供される1つ以上のサービスまたはソフトウェアアプリケーションを実行するように適合されてもよい。いくつかの実施形態では、これらのサービスは、ウェブベースのサービスまたはクラウドサービスとして、もしくはソフトウェア・アズ・ア・サービス(Software as a Service:SaaS)モデルの下で、クライアントコンピューティング装置502、504、506、および/または508のユーザに提供されてもよい。クライアントコンピューティング装置502、504、506、および/または508を動作させるユーザは次に、これらのコンポーネントによって提供されるサービスを利用するためにサーバ512とやりとりするために、1つ以上のクライアントアプリケーションを利用してもよい。
【0056】
図に示す構成では、システム500のソフトウェアコンポーネント518、520および522は、サーバ512上で実現されるとして図示されている。他の実施形態では、システム500のコンポーネントおよび/またはこれらのコンポーネントによって提供されるサービスのうちの1つ以上も、クライアントコンピューティング装置502、504、506、および/または508のうちの1つ以上によって実現されてもよい。クライアントコンピューティング装置を動作させるユーザは次に、これらのコンポーネントによって提供されるサービスを使用するために、1つ以上のクライアントアプリケーションを利用してもよい。これらのコンポーネントは、ハードウェア、ファームウェア、ソフトウェア、またはそれらの組合せで実現されてもよい。分散型システム500とは異なり得るさまざまな異なるシステム構成が可能であることが理解されるべきである。図に示す実施形態はこのため、実施形態システムを実現するための分散型システムの一例であり、限定的であるよう意図されてはいない。
【0057】
クライアントコンピューティング装置502、504、506、および/または508は、携帯型ハンドヘルド装置(たとえば、iPhone(登録商標)、携帯電話、iPad(登録商標)、コンピューティングタブレット、携帯情報端末(PDA))またはウェアラブル装置(たとえば、グーグル・グラス(Google Glass)(登録商標)頭部装着型ディスプレイ)であってもよく、マイクロソフト・ウィンドウズ・モバイル(Microsoft Windows Mobile)(登録商標)などのソフトウェア、および/または、iOS、ウィンドウズ(登録商標)フォン、アンドロイド(登録商標)、ブラックベリー(登録商標)10、パームOSなどのさまざまなモバイルオペレーティングシステムを実行し、インターネット、電子メール、ショートメッセージサービス(short message service:SMS)、ブラックベリー(登録商標)、または他の通信プロトコルに対応している。クライアントコンピューティング装置は、マイクロソフト・ウィンドウズ(登録商標)、アップル・マッキントッシュ(登録商標)、および/またはLinux(登録商標)オペレーティングシステムのさまざまなバージョンを実行するパーソナルコンピュータおよび/またはラップトップコンピュータを例として含む、汎用パーソナルコンピュータであり得る。クライアントコンピューティング装置は、たとえばグーグル・クロームOSなどのさまざまなGNU/Linuxオペレーティングシステムを何ら限定されることなく含む、商業的に入手可能なさまざまなUNIX(登録商標)またはUNIX様オペレーティングシステムのうちのいずれかを実行するワークステーションコンピュータであり得る。それに代えて、またはそれに加えて、クライアントコンピューティング装置502、504、506、および508は、ネットワーク510を通して通信可能である、シンクライアントコンピュータ、インターネット対応ゲーミングシステム(たとえば、Kinect(登録商標)ジェスチャー入力装置を有する、または有さない、マイクロソフトXboxゲーミングコンソール)、および/またはパーソナルメッセージング装置といった、任意の他の電子装置であってもよい。
【0058】
例示的な分散型システム500は4つのクライアントコンピューティング装置を有して図示されているが、任意の数のクライアントコンピューティング装置がサポートされてもよい。センサを有する装置などの他の装置が、サーバ512とやりとりしてもよい。
【0059】
分散型システム500におけるネットワーク510は、TCP/IP(transmission control protocol/Internet protocol:伝送制御プロトコル/インターネットプロトコル)、SNA(systems network architecture:システム・ネットワーク・アーキテクチャ)、IPX(Internet packet exchange:インターネットパケット交換)、アップル・トーク(Apple Talk)などを何ら限定されることなく含む、商業的に入手可能なさまざまなプロトコルのうちのいずれかを使用してデータ通信をサポートできる、当業者にはよく知られた任意のタイプのネットワークであってもよい。単なる例として、ネットワーク510は、イーサネット(登録商標)、トークンリング(Token-Ring)などに基づくものといった、ローカルエリアネットワーク(local area network:LAN)であり得る。ネットワーク510は、ワイドエリアネットワークおよびインターネットであり得る。それは、仮想プライベートネットワーク(virtual private network:VPN)を何ら限定されることなく含む仮想ネットワーク、イントラネット、エクストラネット、公衆交換電話網(public switched telephone network:PSTN)、赤外線ネットワーク、無線ネットワーク(たとえば、電気電子技術者協会(the Institute of Electrical and Electronics:IEEE)802.11プロトコルスイート、Bluetooth(登録商標)、および/または任意の他の無線プロトコルのうちのいずれかの下で動作するネットワーク)、ならびに/もしくは、これらのおよび/または他のネットワークの任意の組合せを含み得る。
【0060】
サーバ512は、1つ以上の汎用コンピュータ、専用サーバコンピュータ(PC(パーソナルコンピュータ)サーバ、UNIX(登録商標)サーバ、ミッドレンジサーバ、メインフレームコンピュータ、ラックマウントサーバなどを例として含む)、サーバファーム、サーバクラスタ、もしくは任意の他の適切な構成および/または組合せで構成されてもよい。さまざまな実施形態では、サーバ512は、前述の開示で説明された1つ以上のサービスまたはソフトウェアアプリケーションを実行するように適合されてもよい。たとえば、サーバ512は、この開示の一実施形態に従った上述の処理を行なうためのサーバに対応していてもよい。
【0061】
サーバ512は、上述のもののうちのいずれかを含むオペレーティングシステム、および商業的に入手可能な任意のサーバオペレーティングシステムを実行してもよい。サーバ512はまた、さまざまな追加のサーバアプリケーションおよび/または中間層アプリケーションのうちのいずれかを実行してもよく、HTTP(hypertext transport protocol:ハイパーテキスト伝送プロトコル)サーバ、FTP(file transfer protocol:ファイル転送プロトコル)サーバ、CGI(common gateway interface:コモンゲートウェイインターフェイス)サーバ、JAVA(登録商標)サーバ、データベースサーバなどを含む。例示的なデータベースサーバは、オラクル、マイクロソフト、サイベース(Sybase)、IBM(International Business Machines:インターナショナル・ビジネス・マシーンズ)などから商業的に入手可能なものを何ら限定されることなく含む。
【0062】
いくつかの実現化例では、サーバ512は、クライアントコンピューティング装置502、504、506、および508のユーザから受信されたデータフィードおよび/またはイベント更新を分析して統合するための1つ以上のアプリケーションを含んでいてもよい。一例として、データフィードおよび/またはイベント更新は、センサデータアプリケーション、金融ティッカー、ネットワーク性能測定ツール(たとえば、ネットワーク監視およびトラフィック管理アプリケーション)、クリックストリーム分析ツール、自動車交通監視などに関連するリアルタイムイベントを含み得る、1つ以上の第三者情報源および連続データストリームから受信されたツイッター(登録商標)フィード、フェースブック(登録商標)更新またはリアルタイム更新を含んでいてもよいが、それらに限定されない。サーバ512はまた、クライアントコンピューティング装置502、504、506、および508の1つ以上の表示装置を介してデータフィードおよび/またはリアルタイムイベントを表示するための1つ以上のアプリケーションを含んでいてもよい。
【0063】
分散型システム500はまた、1つ以上のデータベース514および516を含んでいてもよい。データベース514および516は、さまざまな場所に存在していてもよい。例として、データベース514および516のうちの1つ以上は、サーバ512に対してローカルな(および/または、サーバ512内にある)非一時的記憶媒体上に存在していてもよい。それに代えて、データベース514および516は、サーバ512からリモートであってもよく、ネットワークベースの接続または専用接続を介してサーバ512と通信してもよい。一組の実施形態では、データベース514および516は、ストレージエリアネットワーク(storage-area network:SAN)に存在していてもよい。同様に、サーバ512に帰する機能を行なうための任意の必要なファイルが適宜、サーバ512上にローカルに格納されてもよく、および/またはリモートに格納されてもよい。一組の実施形態では、データベース514および516は、SQLフォーマットのコマンドに応答してデータを格納し、更新し、検索するように適合された、オラクルによって提供されるデータベースなどのリレーショナルデータベースを含んでいてもよい。
【0064】
図6は、この発明のさまざまな実施形態が実現され得る例示的なコンピュータシステム600を示す。システム600は、上述のコンピュータシステムのうちのいずれかを実現するために使用されてもよい。図に示すように、コンピュータシステム600は、バスサブシステム602を介して多くの周辺サブシステムと通信する処理部604を含む。これらの周辺サブシステムは、処理加速部606と、I/Oサブシステム608と、記憶サブシステム618と、通信サブシステム624とを含んでいてもよい。記憶サブシステム618は、有形のコンピュータ読取可能記憶媒体622と、システムメモリ610とを含む。
【0065】
バスサブシステム602は、コンピュータシステム600のさまざまなコンポーネントおよびサブシステムを意図されるように互いに通信させるためのメカニズムを提供する。バスサブシステム602は単一のバスとして概略的に図示されているが、バスサブシステムの代替的な実施形態は複数のバスを利用してもよい。バスサブシステム602は、さまざまなバスアーキテクチャのうちのいずれかを使用するメモリバスまたはメモリコントローラ、周辺バス、およびローカルバスを含む、いくつかのタイプのバス構造のうちのいずれかであってもよい。たとえば、そのようなアーキテクチャは、IEEE P1386.1規格で製造されるメザニンバスとして実現可能な、産業標準アーキテクチャ(Industry Standard Architecture:ISA)バス、マイクロチャネルアーキテクチャ(Micro Channel Architecture:MCA)バス、強化ISA(EISA)バス、ビデオエレクトロニクス標準組織(Video Electronics Standards Association:VESA)ローカルバス、および周辺コンポーネント相互接続(Peripheral Component Interconnect:PCI)バスを含んでいてもよい。
【0066】
1つ以上の集積回路(たとえば、従来のマイクロプロセッサまたはマイクロコントローラ)として実現され得る処理部604は、コンピュータシステム600の動作を制御する。処理部604には、1つ以上のプロセッサが含まれていてもよい。これらのプロセッサは、シングルコアまたはマルチコアプロセッサを含んでいてもよい。ある実施形態では、処理部604は、各処理部にシングルまたはマルチコアプロセッサが含まれた、1つ以上の独立した処理部632および/または634として実現されてもよい。他の実施形態では、処理部604はまた、2つのデュアルコアプロセッサをシングルチップへと集積することによって形成されるクアッドコア処理部として実現されてもよい。
【0067】
さまざまな実施形態では、処理部604は、プログラムコードに応答してさまざまなプログラムを実行でき、同時に実行される複数のプログラムまたはプロセスを維持できる。任意の所与の時間において、実行されるべきプログラムコードのうちのいくつかまたはすべては、プロセッサ604に、および/または記憶サブシステム618にあり得る。好適なプログラミングを通して、プロセッサ604は、上述のさまざまな機能性を提供できる。コンピュータシステム600は加えて処理加速部606を含んでいてもよく、それは、デジタル信号プロセッサ(digital signal processor:DSP)、専用プロセッサなどを含み得る。
【0068】
I/Oサブシステム608は、ユーザインターフェイス入力装置と、ユーザインターフェイス出力装置とを含んでいてもよい。ユーザインターフェイス入力装置は、キーボード、マウスまたはトラックボールなどのポインティング装置、ディスプレイに組込まれたタッチパッドまたはタッチスクリーン、スクロールホイール、クリックホイール、ダイヤル、ボタン、スイッチ、キーパッド、音声コマンド認識システム付き音声入力装置、マイクロホン、および他のタイプの入力装置を含んでいてもよい。ユーザインターフェイス入力装置は、たとえば、ジェスチャーおよび口頭コマンドを使用したナチュラルユーザインターフェイスを通して、マイクロソフトXbox(登録商標)460ゲームコントローラなどの入力装置をユーザが制御し、それとやりとりすることを可能にする、マイクロソフトKinect(登録商標)運動センサなどの運動感知および/またはジェスチャー認識装置を含んでいてもよい。ユーザインターフェイス入力装置はまた、ユーザから目の活動(たとえば、写真撮影中および/またはメニュー選択中の「まばたき」)を検出し、アイジェスチャーを入力装置(たとえば、グーグル・グラス(登録商標))への入力として変換する、グーグル・グラス(登録商標)まばたき検出器などのアイジェスチャー認識装置を含んでいてもよい。加えて、ユーザインターフェイス入力装置は、ユーザが音声コマンドを通して音声認識システム(たとえば、Siri(登録商標)ナビゲータ)とやりとりできるようにする音声認識感知装置を含んでいてもよい。
【0069】
ユーザインターフェイス入力装置はまた、3次元(3D)マウス、ジョイスティックまたはポインティングスティック、ゲームパッドおよびグラフィックタブレット、ならびに、スピーカ、デジタルカメラ、デジタルビデオカメラ、携帯型メディアプレイヤー、ウェブカメラ、画像スキャナ、指紋スキャナ、バーコードリーダ4Dスキャナ、4Dプリンタ、レーザー測距器、および視線追跡装置などの音声/視覚装置を、何ら限定されることなく含んでいてもよい。加えて、ユーザインターフェイス入力装置は、たとえば、コンピュータ断層撮影装置、磁気共鳴撮像装置、ポジトロン放出断層撮影装置、医療用超音波検査装置などの医療用撮像入力装置を含んでいてもよい。ユーザインターフェイス入力装置はまた、たとえば、MIDIキーボード、デジタル楽器などの音声入力装置を含んでいてもよい。
【0070】
ユーザインターフェイス出力装置は、表示サブシステム、表示灯、または、音声出力装置などの非視覚的ディスプレイを含んでいてもよい。表示サブシステムは、陰極線管(cathode ray tube:CRT)、液晶ディスプレイ(liquid crystal display:LCD)またはプラズマディスプレイを使用するものなどのフラットパネル装置、投影装置、タッチスクリーンなどであってもよい。一般に、「出力装置」という用語の使用は、コンピュータシステム600からユーザまたは他のコンピュータに情報を出力するためのあらゆる可能なタイプの装置およびメカニズムを含むよう意図されている。たとえば、ユーザインターフェイス出力装置は、モニタ、プリンタ、スピーカ、ヘッドホン、自動車ナビゲーションシステム、プロッタ、音声出力装置、およびモデムといった、テキスト、グラフィックスおよび音声/映像情報を視覚的に伝えるさまざまな表示装置を、何ら限定されることなく含んでいてもよい。
【0071】
コンピュータシステム600は、現在システムメモリ610内に位置するとして図示された、ソフトウェア要素を含む記憶サブシステム618を含んでいてもよい。システムメモリ610は、処理部604上でロード可能および実行可能なプログラム命令と、これらのプログラムの実行中に生成されたデータとを格納してもよい。
【0072】
コンピュータシステム600の構成およびタイプに依存して、システムメモリ610は揮発性(ランダムアクセスメモリ(random access memory:RAM)など)であってもよく、および/または不揮発性(読出専用メモリ(read-only memory:ROM)、フラッシュメモリなど)であってもよい。RAMは典型的には、処理部604に直ちにアクセス可能であり、および/または処理部604によって現在動作および実行中のデータおよび/またはプログラムモジュールを含む。いくつかの実現化例では、システムメモリ610は、スタティックランダムアクセスメモリ(static random access memory:SRAM)またはダイナミックランダムアクセスメモリ(dynamic random access memory:DRAM)などの複数の異なるタイプのメモリを含んでいてもよい。いくつかの実現化例では、起動中などにコンピュータシステム600内の要素間で情報を転送するのに役立つ基本ルーチンを含む基本入力/出力システム(basic input/output system:BIOS)が、典型的にはROMに格納されていてもよい。限定のためではなく例として、システムメモリ610はまた、クライアントアプリケーション、ウェブブラウザ、中央層アプリケーション、リレーショナルデータベース管理システム(relational database management system:RDBMS)などを含み得るアプリケーションプログラム612と、プログラムデータ614と、オペレーティングシステム616とを示す。例として、オペレーティングシステム616は、マイクロソフト・ウィンドウズ(登録商標)、アップル・マッキントッシュ(登録商標)、および/またはLinuxオペレーティングシステムのさまざまなバージョン、商業的に入手可能なさまざまなUNIX(登録商標)またはUNIX様オペレーティングシステム(さまざまなGNU/Linuxオペレーティングシステム、グーグル・クローム(登録商標)OSなどを何ら限定されることなく含む)、および/または、iOS、ウィンドウズ(登録商標)フォン、アンドロイド(登録商標)OS、ブラックベリー(登録商標)10OS、パーム(登録商標)OSオペレーティングシステムなどのモバイルオペレーティングシステムを含んでいてもよい。
【0073】
記憶サブシステム618はまた、いくつかの実施形態の機能性を提供する基本プログラミングおよびデータ構造を格納するための有形のコンピュータ読取可能記憶媒体を提供してもよい。プロセッサによって実行されると上述の機能性を提供するソフトウェア(プログラム、コードモジュール、命令)が、記憶サブシステム618に格納されてもよい。これらのソフトウェアモジュールまたは命令は、処理部604によって実行されてもよい。記憶サブシステム618はまた、この発明に従って使用されるデータを格納するためのリポジトリを提供してもよい。
【0074】
記憶サブシステム600はまた、コンピュータ読取可能記憶媒体622にさらに接続され得るコンピュータ読取可能記憶媒体リーダ620を含んでいてもよい。システムメモリ610とともに、およびオプションでシステムメモリ610と組合わされて、コンピュータ読取可能記憶媒体622は、リモート、ローカル、固定および/またはリムーバブルの記憶装置に加えて、コンピュータ読取可能情報を一時的におよび/またはより永続的に含み、格納し、送信し、検索するための記憶媒体を包括的に表わしてもよい。
【0075】
コードまたはコードの一部を含むコンピュータ読取可能記憶媒体622はまた、情報の格納および/または送信のためのあらゆる方法または技術で実現される揮発性および不揮発性でリムーバブルおよび非リムーバブルの媒体を含むがそれらに限定されない記憶媒体および通信媒体を含む、当該技術分野において公知であるかまたは使用されるあらゆる適切な媒体を含み得る。これは、RAM、ROM、電子的消去可能プログラマブルROM(electronically erasable programmable ROM:EEPROM)、フラッシュメモリまたは他のメモリ技術、CD−ROM、デジタル多用途ディスク(digital versatile disk:DVD)または他の光学ストレージ、磁気カセット、磁気テープ、磁気ディスクストレージまたは他の磁気記憶装置、もしくは他の有形のコンピュータ読取可能媒体といった、有形のコンピュータ読取可能記憶媒体を含み得る。これは、所望の情報を送信するために使用可能であり、コンピューティングシステム600によってアクセスされ得るデータ信号、データ送信、または任意の他の媒体といった、非有形のコンピュータ読取可能媒体も含み得る。
【0076】
例として、コンピュータ読取可能記憶媒体622は、非リムーバブルで不揮発性の磁気媒体から読出し、またはそれに書込むハードディスクドライブ、リムーバブルで不揮発性の磁気ディスクから読出し、またはそれに書込む磁気ディスクドライブ、ならびに、CD ROM、DVD、およびBlu−Ray(登録商標)ディスク、または他の光学媒体といった、リムーバブルで不揮発性の光ディスクから読出し、またはそれに書込む光ディスクドライブを含んでいてもよい。コンピュータ読取可能記憶媒体622は、Zip(登録商標)ドライブ、フラッシュメモリカード、ユニバーサルシリアルバス(universal serial bus:USB)フラッシュドライブ、セキュアデジタル(secure digitalSD)カード、DVDディスク、デジタルビデオテープなどを含んでいてもよいが、それらに限定されない。コンピュータ読取可能記憶媒体622はまた、フラッシュメモリベースのソリッドステートドライブ(solid-state drive:SSD)、企業フラッシュドライブ、ソリッドステートROMといった、不揮発性メモリに基づいたSSD、ソリッドステートRAM、ダイナミックRAM、スタティックRAM、DRAMベースのSSD、磁気抵抗RAM(MRAM)SSDといった、揮発性メモリに基づいたSSD、および、DRAMベースのSSDとフラッシュメモリベースのSSDとの組合せを使用するハイブリッドSSDを含んでいてもよい。ディスクドライブおよびそれらの関連付けられたコンピュータ読取可能媒体は、コンピュータ読取可能命令、データ構造、プログラムモジュールおよび他のデータの不揮発性ストレージをコンピュータシステム600に提供してもよい。
【0077】
通信サブシステム624は、他のコンピュータシステムおよびネットワークへのインターフェイスを提供する。通信サブシステム624は、コンピュータシステム600とは別のシステムからデータを受信し、別のシステムにデータを送信するためのインターフェイスとして機能する。たとえば、通信サブシステム624は、コンピュータシステム600がインターネットを介して1つ以上の装置に接続できるようにしてもよい。いくつかの実施形態では、通信サブシステム624は、(たとえば、4G、4G、またはEDGE(enhanced data rates for global evolution:エンハンスト・データレート・フォー・グローバル・エボリューション)、WiFi(IEEE802.11ファミリー規格)、または他の移動通信技術、またはそれらの任意の組合せといった携帯電話技術、高度なデータネットワーク技術を使用した)無線音声および/またはデータネットワークにアクセスするための無線周波数(radio frequency:RF)トランシーバコンポーネント、全地球測位システム(global positioning system:GPS)受信機コンポーネント、および/または他のコンポーネントを含み得る。いくつかの実施形態では、通信サブシステム624は、無線インターフェイスに加えて、またはその代わりに、有線ネットワーク接続(たとえば、イーサネット)を提供できる。
【0078】
いくつかの実施形態では、通信サブシステム624はまた、コンピュータシステム600を使用し得る1人以上のユーザのために、構造化および/または非構造化データフィード626、イベントストリーム628、イベント更新630などの形をした入力通信を受信してもよい。
【0079】
例として、通信サブシステム624は、ツイッター(登録商標)フィード、フェースブック(登録商標)更新、リッチ・サイト・サマリー(Rich Site Summary:RSS)フィードなどのウェブフィード、および/または1つ以上の第三者情報源からのリアルタイム更新といった、ソーシャルネットワークおよび/または他の通信サービスのユーザからのデータフィード626をリアルタイムで受信するように構成されてもよい。
【0080】
加えて、通信サブシステム624はまた、リアルタイムイベントのイベントストリーム628および/またはイベント更新630を含み得る、明確な終わりがなく本質的に連続的または無限であり得る連続データストリームの形をしたデータを受信するように構成されてもよい。連続データを生成するアプリケーションの例は、たとえば、センサデータアプリケーション、金融ティッカー、ネットワーク性能測定ツール(たとえば、ネットワーク監視およびトラフィック管理アプリケーション)、クリックストリーム分析ツール、自動車交通監視などを含んでいてもよい。
【0081】
通信サブシステム624はまた、構造化および/または非構造化データフィード626、イベントストリーム628、イベント更新630などを、コンピュータシステム600に結合された1つ以上のストリーミングデータソースコンピュータと通信し得る1つ以上のデータベースに出力するように構成されてもよい。
【0082】
コンピュータシステム600は、ハンドヘルド携帯装置(たとえば、iPhone(登録商標)携帯電話、iPad(登録商標)コンピューティングタブレット、PDA)、ウェアラブル装置(たとえば、グーグル・グラス(登録商標)頭部装着型ディスプレイ)、PC、ワークステーション、メインフレーム、キオスク、サーバラック、または任意の他のデータ処理システムを含む、さまざまなタイプのうちの1つであり得る。
【0083】
コンピュータおよびネットワークの絶えず変化する性質により、図に示すコンピュータシステム600の説明は、単に特定の一例として意図される。図に示すシステムよりも多い、または少ないコンポーネントを有する多くの他の構成が可能である。たとえば、カスタマイズされたハードウェアも使用されてもよく、および/または、特定の要素が、ハードウェア、ファームウェア、ソフトウェア(アプレットを含む)、または組合せで実現されてもよい。また、ネットワーク入力/出力装置などの他のコンピューティング装置への接続が採用されてもよい。ここに提供される開示および教示に基づいて、当業者であれば、さまざまな実施形態を実現するための他のやり方および/または方法を理解するであろう。
【0084】
前述の明細書では、この発明の局面がその特定の実施形態に関して説明されているが、当業者であれば、この発明がそれらに限定されないことを認識するであろう。上述の発明のさまざまな特徴および局面は、個々にまたはともに使用されてもよい。また、実施形態は、明細書のより広範な精神および範囲から逸脱することなく、ここに説明されたものを超えるあらゆる数の環境および用途において利用され得る。したがって、明細書および図面は、限定的ではなく例示的であるとみなされるべきである。
【0085】
その教示がこの開示において提示され得る1つ以上の発明のうちのいずれかのさまざまな実施形態が、ソフトウェア、ファームウェア、ハードウェア、またはそれらの組合せにおけるロジックの形で実現され得る。ロジックは、この開示において提示された発明のさまざまな実施形態において開示され得る一組のステップを行なうように、ロジックマシンの中央処理装置(CPUまたはプロセッサ)に指示するように適合された一組の命令として、マシンアクセス可能なメモリ、マシン読取可能な物品(article)、有形のコンピュータ読取可能媒体、コンピュータ読取可能記憶媒体、または他のコンピュータ/マシン読取可能媒体に格納されてもよい。ロジックは、コードモジュールが、この開示において提示された発明のさまざまな実施形態において方法またはプロセスを行なうために実行される際に、コンピュータシステムまたは情報処理装置のプロセッサにより動作可能になると、ソフトウェアプログラムまたはコンピュータプログラム製品の一部を形成してもよい。ここに提供されたこの開示および教示に基づいて、当業者であれば、提示された発明の1つ以上のさまざまな実施形態の開示された動作または機能性のいずれかを、ソフトウェア、ファームウェア、ハードウェア、またはそれらの組合せで実現するための他のやり方、変形例、修正例、代替例、および/または方法を理解するであろう。
【0086】
その教示がこの開示において提示され得るそれらの発明のうちのいずれか1つの開示された例、実現化例、およびさまざまな実施形態は、この開示の教示を適正な明確性で当業者に伝えるように例示的であるに過ぎない。これらの実現化例および実施形態は例示的な図解または特定の図を参照して説明され得るため、説明された方法および/または特定の構造のさまざまな修正例または適合例が、当業者には明らかとなり得る。ここに見出されたこの開示およびこれらの教示に依存し、かつ、教示が技術を進歩させた際に経た、すべてのそのような修正例、適合例、または変形例は、その教示がこの開示において提示され得る1つ以上の発明の範囲内にあると考えられるべきである。よって、開示において提示された発明は、具体的に示された実施形態にまったく限定されないということが理解されるため、本説明および図面は限定的な意味で考えられるべきでない。
【0087】
したがって、上述の説明およびあらゆる添付図面、図解、および図は、限定的ではなく例示的であるよう意図されている。この開示において提示されたあらゆる発明の範囲はしたがって、上述の説明および図に示されたそれらの実施形態を単純に参照するのではなく、係属中の請求項をそれらの完全な範囲または均等物とともに参照して、判断されるべきである。
図1
図2
図3
図4
図5
図6