JP6661620B2 - モバイルアプリケーションのための効率的および直観的なデータ・バインディング - Google Patents

モバイルアプリケーションのための効率的および直観的なデータ・バインディング Download PDF

Info

Publication number
JP6661620B2
JP6661620B2 JP2017516340A JP2017516340A JP6661620B2 JP 6661620 B2 JP6661620 B2 JP 6661620B2 JP 2017516340 A JP2017516340 A JP 2017516340A JP 2017516340 A JP2017516340 A JP 2017516340A JP 6661620 B2 JP6661620 B2 JP 6661620B2
Authority
JP
Japan
Prior art keywords
data
application
user
user interface
services
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
JP2017516340A
Other languages
English (en)
Other versions
JP2017533503A (ja
JP2017533503A5 (ja
Inventor
ストラウブ,クリスチャン・デイビッド
リウ,ピーター・テーチュアン
ブロードベント,リザ・ライアンズ
Original Assignee
オラクル・インターナショナル・コーポレイション
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by オラクル・インターナショナル・コーポレイション filed Critical オラクル・インターナショナル・コーポレイション
Priority claimed from PCT/US2015/052637 external-priority patent/WO2016049626A1/en
Publication of JP2017533503A publication Critical patent/JP2017533503A/ja
Publication of JP2017533503A5 publication Critical patent/JP2017533503A5/ja
Application granted granted Critical
Publication of JP6661620B2 publication Critical patent/JP6661620B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/01Input arrangements or combined input and output arrangements for interaction between user and computer
    • G06F3/048Interaction techniques based on graphical user interfaces [GUI]
    • G06F3/0484Interaction techniques based on graphical user interfaces [GUI] for the control of specific functions or operations, e.g. selecting or manipulating an object, an image or a displayed text element, setting a parameter value or selecting a range
    • G06F3/04842Selection of displayed objects or displayed text elements
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/01Input arrangements or combined input and output arrangements for interaction between user and computer
    • G06F3/048Interaction techniques based on graphical user interfaces [GUI]
    • G06F3/0484Interaction techniques based on graphical user interfaces [GUI] for the control of specific functions or operations, e.g. selecting or manipulating an object, an image or a displayed text element, setting a parameter value or selecting a range
    • G06F3/04845Interaction techniques based on graphical user interfaces [GUI] for the control of specific functions or operations, e.g. selecting or manipulating an object, an image or a displayed text element, setting a parameter value or selecting a range for image manipulation, e.g. dragging, rotation, expansion or change of colour
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/01Input arrangements or combined input and output arrangements for interaction between user and computer
    • G06F3/048Interaction techniques based on graphical user interfaces [GUI]
    • G06F3/0484Interaction techniques based on graphical user interfaces [GUI] for the control of specific functions or operations, e.g. selecting or manipulating an object, an image or a displayed text element, setting a parameter value or selecting a range
    • G06F3/04847Interaction techniques to control parameter settings, e.g. interaction with sliders or dials
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/01Input arrangements or combined input and output arrangements for interaction between user and computer
    • G06F3/048Interaction techniques based on graphical user interfaces [GUI]
    • G06F3/0484Interaction techniques based on graphical user interfaces [GUI] for the control of specific functions or operations, e.g. selecting or manipulating an object, an image or a displayed text element, setting a parameter value or selecting a range
    • G06F3/0486Drag-and-drop
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/20Software design
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/30Creation or generation of source code
    • G06F8/34Graphical or visual programming
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/30Creation or generation of source code
    • G06F8/38Creation or generation of source code for implementing user interfaces
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/60Software deployment

Landscapes

  • Engineering & Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Human Computer Interaction (AREA)
  • Stored Programmes (AREA)
  • User Interface Of Digital Computer (AREA)
  • Information Transfer Between Computers (AREA)

Description

著作権表示
この特許文献の開示の一部は、著作権保護の対象となる題材を含んでいる。著作権の所有者は、特許商標庁の包袋または記録に掲載されるように特許文献または特許情報開示を誰でも複製できることに対して異議はないが、その他の点ではすべての如何なる(著作またはマスクワークの)権利をも保有する。
関連出願の相互参照
本願は、「モバイルアプリケーションのための効率的および直観的なデータ・バインディング(EFFICIENT AND INTUITIVE DATABINDING FOR MOBILE APPLICATIONS)」と題され2014年9月26日に提出された米国仮特許出願第62/055,988号と、「モバイルアプリケーションのための効率的および直観的なデータ・バインディング(EFFICIENT AND INTUITIVE DATABINDING FOR MOBILE APPLICATIONS)」と題され2015年9月25日に提出された米国特許出願第14/865,842号とについての優先権および利点を主張するものであって、いずれの添付の文書も含めそれらの開示全体があらゆる目的のために引用によりここに援用されている。
発明の分野
実施形態は、概して、アプリケーション開発システムに向けられ、特に、モバイルアプリケーションのための効率的および直観的なデータ・バインディングを提供するモバイルアプリケーション開発システムに向けられている。
発明の背景
アプリケーションは、ソフトウェアプログラムを指しており、実行されると、特定の所望のタスクを実行する。一般に、いくつかのアプリケーションは、関連技術において周知であるように、オペレーティングシステム、(たとえばJava(登録商標)プログラミング言語をサポートする)仮想マシン、デバイスドライバなどのうち1つ以上を含むランタイム環境において実行される。
開発者は、所望のアプリケーションを実装/開発するためのアプリケーション開発フレームワーク(Application Development Framework:ADF)(それ自体がアプリケーションである)を用いることができる。ADFは、アプリケーションの開発の際に直接的/間接的に用いることができる1セットの予め定義されたコード/データモジュールを提供する。ADFはまた、総合開発環境(integrated development environment:IDE)、コードジェネレータ、デバッガなどのツールを提供することもでき、これにより、開発者がアプリケーションの所望の論理をより高速/より単純に符号化/実現することが容易になる。
このように、ADFは、再使用可能なコンポーネントおよび総合開発環境を提供することによってアプリケーションの開発を単純にすることができ、アプリケーション開発者がこれを用いることにより、たとえば、所望のタスクを実行するようにコンポーネントを選択し、選択されたコンポーネントの外観、挙動および相互作用を定義することによって、ユーザインターフェイスおよびアプリケーション論理を定義することができる。いくつかのADFは、疎結合や、より容易なアプリケーションの開発およびメンテナンスを促進するモデル・ビュー・コントローラ設計パターンに基づいている。オラクルアプリケーション開発フレームワークは、この設計パターンを利用するADFの一例である。
このため、以前よりもさらに、ユビキタスのモバイルサービスおよび無線接続により、顧客/消費者にとって、さまざま個人的要望および業務上の要望のためにモバイルデバイスアプリケーションが必要となる。このような要求を満たして克服するために、非開発者によるモバイルアプリケーションの開発を単純化かつ促進するようなモバイルアプリケーション開発プラットフォーム/フレームワークに対する要望がますます増加している。同時に、高度なアプリケーション特徴をモバイルアプリケーションに容易に組込むことを可能にして、ビジネスセキュリティ基準が損なわれるのを確実に防止することが必要とされている。
したがって、モバイルアプリケーションのためのデータ・バインディングに関する問題(そのうちのいくつかがこの明細書中に記載され得る)を解決することが所望されている。加えて、モバイルアプリケーションに関する欠点(そのうちのいくつかがこの明細書中に記載され得る)を減らすことが所望されている。
発明の簡単な説明
この開示の以下の部分は、少なくとも、主題の基本的な理解を与える目的で、この開示内で見出される1つ以上の技術革新、実施形態および/または例についての簡略化された概要を提示する。この概要は、いずれかの特定の実施形態または例についての広汎な概略を提供することを企図するものではない。加えて、この概要は、実施形態もしくは例の主要/重要な要素を識別するように、または、この開示の主題の範囲を定めるように、意図されたものではない。したがって、この概要の目的は、後に提示されるさらなる詳細な説明の序文として、この開示内で見出されるいくつかの技術革新、実施形態および/または例を簡略的に提示することであり得る。
エンドユーザが、視覚的アフォーダンスによりバックエンド・サービスに機能コンポーネントを直観的にデータ・バインドすることを可能にするためのシステムおよび方法が提供される。各々のUIコンポーネントは、バックエンド・サービスのデータから得られる個々のプロパティに対して、UIのうちどのセクションを、独立してデータ・バインドすることができるかを知らせることができる。ユーザがUIコンポーネントをデータ・バインドすることを所望する場合、UIのうちその時点でデータ・バインドされ得るセクションを変換して、その特定のセクションの機能を記述する関連テキストを示す。ユーザがバインドできるすべての可能なデータからなるデータ・バインディング・インターフェイスと、視覚的プレビューにおけるスロットにマッピングする視覚的なスロットとが、ユーザに提示され得る。コンポーネントをデータ・バインドするために、ユーザは、特定のデータを有効リストからドラッグ・アンド・ドロップし、そのデータが適用されることが所望されているスロットにドロップすることができる。
この開示の主題の性質および同等例のさらなる理解(さらには、提供される如何なる本質的または明白な利点および改善)が、この開示の残りの部分、添付の図面および添付の特許請求の範囲を参照することによって、上述の段落部分の記載に加えて理解されるはずである。
図面の簡単な説明
この開示内で見出されたこれらの技術革新、実施形態および/または例を合理的に記載および例示するために、添付の1つ以上の図面が参照され得る。添付の1つ以上の図面を説明するために用いられる追加の詳細または例は、主張される発明のうちのいずれかの範囲、ここに記載されている実施形態および/もしくは例のいずれか、または、この開示内に提示されているいずれかの技術革新の現在理解されているベストモード、に限定されるものと見なされるべきではない。
本発明の一実施形態に従った、モバイルクラウドサービスを利用するアプリケーションを開発するためのシステムのブロック図である。 本発明のいくつかの実施形態に従った、モバイルコンピューティングデバイスとエンタープライズコンピュータシステムとの間の通信を容易にするコンピューティング環境を示すブロック図である。 本発明の一実施形態に従ったモバイルアプリケーションのスプリングボードを示す図である。 本発明の一実施形態に従ったモバイルアプリケーションユーザインターフェイスを示す図である。 本発明の一実施形態に従ったモバイルアプリケーションユーザインターフェイスを示す図である。 本発明の実施形態に従ったモバイルアプリケーションフレームワークのランタイムアーキテクチャを示すブロック図である。 本発明の実施形態に従ったモバイルクラウドインフラストラクチャにおけるモバイルアプリケーションを開発するためのシステムを示すブロック図である。 本発明の実施形態に従ったモバイルアプリケーションを構築するためのシステムにおけるネットワークコンポーネントを示すブロック図である。 本発明の実施形態に従ったモバイルセキュリティ・スーツ・コンポーネントを示すブロック図である。 一実施形態において図1のシステム環境のクラウドインフラストラクチャシステムのモバイルクラウドサービスを使用するアプリケーションを作成するためにアプリケーション開発フレームワークに含まれ得るモバイルアプリケーション開発ポータルを示す図である。 本発明の実施形態に従ったモバイルアプリケーション開発のための方法を示すフロー図である。 一実施形態におけるモバイルアプリケーション開発ポータルのアプリケーション定義ウィザードによって提示され得る1つ以上のユーザインターフェイスを示す図である。 一実施形態におけるモバイルアプリケーション開発ポータルのアプリケーション定義ウィザードによって提示され得る1つ以上のユーザインターフェイスを示す図である。 一実施形態におけるモバイルアプリケーション開発ポータルのアプリケーション定義ウィザードによって提示され得る1つ以上のユーザインターフェイスを示す図である。 一実施形態におけるモバイルアプリケーション開発ポータルのアプリケーション定義ウィザードによって提示され得る1つ以上のユーザインターフェイスを示す図である。 一実施形態におけるモバイルアプリケーション開発ポータルのアプリケーション定義ウィザードによって提示され得る1つ以上のユーザインターフェイスを示す図である。 一実施形態におけるモバイルアプリケーション開発ポータルのアプリケーション定義ウィザードによって提示され得る1つ以上のユーザインターフェイスを示す図である。 一実施形態における新しいモバイルアプリケーションの第1の画面を定義する1セットの画面タイプを開発者に与えるユーザインターフェイスを示す図である。 一実施形態における新しいモバイルアプリケーションの第1の画面を定義する1セットの画面タイプを開発者に与えるユーザインターフェイスを示す図である。 一実施形態における、予め選択された画面のタイプに特有の1セットのユーザインターフェイス要素を開発者に与えるユーザインターフェイスを示す図である。 一実施形態における、予め選択された画面のタイプに特有の1セットのユーザインターフェイス要素を開発者に与えるユーザインターフェイスを示す図である。 一実施形態における、予め選択された画面のタイプに特有の1セットの設計を開発者に与えるユーザインターフェイスを示す図である。 一実施形態における、予め選択された画面のタイプに特有の1セットの設計を開発者に与えるユーザインターフェイスを示す図である。 一実施形態における、新しいアプリケーションの詳細を完成させるために開発者に1つ以上のオプションを与えるユーザインターフェイスを示す図である。 一実施形態における、使用可能なコンポーネントのカタログを提供するユーザインターフェイスを示す図である。 一実施形態における、1つ以上のジェスチャを用いて、開発者が画面にコンポーネントを追加することができるユーザインターフェイスを示す図である。 一実施形態における、開発者が画面にマップコンポーネントを追加した後のユーザインターフェイスを示す図である。 一実施形態における、サービスのカタログを提供するユーザインターフェイスを示す図である。 一実施形態における、選択されたビジネスオブジェクトに基づいて開発者がUIモジュールを追加/作成することができるユーザインターフェイスを示す図である。 一実施形態における、開発者がUIモジュールを追加した後のユーザインターフェイスを示す図である。 本発明の実施形態に従った、モバイルアプリケーションのユーザインターフェイスをデータ・バインドするための方法を示すフロー図である。 一実施形態における、データ・バインディングを実行した後のユーザインターフェイスを示す図である。 一実施形態における、デプロイメントのためのモバイルアプリケーションを構成するためのユーザインターフェイスを示す図である。 一実施形態における、モバイルアプリケーションがデプロイメントのために利用可能になった後のユーザインターフェイスを示す図である。 一実施形態における、モバイルアプリケーションがデプロイメントのために利用可能になった後のユーザインターフェイスを示す図である。 一実施形態における、モバイルアプリケーションがデプロイメントのために利用可能になった後のユーザインターフェイスを示す図である。 実施形態のうちの1つを実現するための分散型システムを示す簡略図である。 本発明のさまざまな実施形態が実現され得る例示的なコンピュータシステムを示す図である。
発明の詳細な説明
以下の記載においては、説明の目的で、特定の詳細が、発明の実施形態についての充分な理解を与えるために述べられている。しかしながら、さまざまな実施形態がこれらの特定の詳細なしでも実施され得ることが明らかになるだろう。たとえば、これらの実施形態の詳細を不必要に曖昧にすることを避けるために、回路、システム、ネットワーク、プロセスおよび他のコンポーネントがブロック図においてコンポーネントとして図示され得る。他の場合においては、周知の回路、プロセス、アルゴリズム、構造および技術が、実施形態を不明瞭にするのを避けるために不必要な詳細なしで図示され得る。図面および記載は、限定するように意図されたものではない。むしろ、例示的な実施形態の以下の記載は、具体的な実施形態を実現するために、当業者に実施可能な記載を提供するだろう。添付の特許請求の範囲に記載されている本発明の精神および範囲から逸脱することなく、要素の機能および配置に対してさまざまな変更が実施され得ることが理解されるはずである。
さらに、個々の実施形態が、フローチャート、フロー図、データフロー図、構造図またはブロック図として示されるプロセスとして記載され得ることが注記される。フローチャートは動作を連続的なプロセスとして記載するかもしれないが、動作の多くは並列または同時に実行され得る。加えて、動作の順序は再構成されてもよい。プロセスは、その動作が完了されるときに終結されるが、図に含まれない追加のステップを含み得る。プロセスは、方法、関数、手順、サブルーチン、サブプログラムなどに対応し得る。プロセスが関数に対応する場合、その終了は、その関数が呼出し関数または主関数に戻ることに対応し得る。
「機械読取り可能媒体」または「コンピュータ読取り可能媒体」という語は、命令および/またはデータを記憶するか、含むか、または担持することができるポータブルまたは非ポータブルの記憶装置、光記憶装置、無線チャネル、およびさまざまな他の媒体を含むが、それらに限定はされない。コードセグメントまたは機械実行可能命令は手順、機能、サブプログラム、プログラム、ルーチン、サブルーチン、モジュール、ソフトウェアパッケージ、クラス、または命令、データ構造もしくはプログラムステートメントのいずれかの組合せを表現し得る。コードセグメントは、情報、データ、引数、パラメータ、またはメモリコンテンツを渡す、および/または受取ることによって、別のコードセグメントまたはハードウェア回路に結合されてもよい。情報、引数、パラメータ、データなどは、メモリ共有、メッセージ受渡し、トークン受渡し、ネットワーク伝送などを含む任意の好適な手段を介して渡されるか、転送されるか、または送信されてもよい。
さらに、実施形態は、ハードウェア、ソフトウェア、ファームウェア、ミドルウェア、マイクロコード、ハードウェア記述言語、またはそれらの任意の組合せによって実現されてもよい。ソフトウェア、ファームウェア、ミドルウェアまたはマイクロコードにおいて実現される場合には、必要なタスクを実行するプログラムコードまたはコードセグメントを機械読取り可能またはコンピュータ読取り可能媒体に記憶してもよい。1つ以上のプロセッサは必要なタスクを実行し得る。
図面のうちのいくつかにおいて示されるシステムは、さまざまな構成において提供され得る。いくつかの実施形態においては、当該複数のシステムは、1つのシステムの1つ以上のコンポーネントがクラウドコンピューティングシステムにおいて1つ以上のネットワークを介して分散されている分散型システムとして構成されてもよい。さらなる実施形態においては、当該複数のシステムは、1つのシステムの1つ以上のコンポーネントが単一の構造またはパッケージに組込まれている単一のシステムとして構成されてもよい。
導入
アプリケーションは、ソフトウェアプログラムを指しており、その実行時に、特定の所望のタスクを実行する。一般に、いくつかのアプリケーションは、1つ以上のオペレーティングシステム(operating system:「OS」)、仮想マシン(たとえばJavaプログラミング言語をサポートする)、デバイスドライバなどを含むランタイム環境において実行される。開発者は、しばしば、所望のアプリケーションを実現/開発するためのアプリケーション開発フレームワーク(Application Development Framework:「ADF」)(それ自体がアプリケーションである)を用いる。ADFは、アプリケーションの開発時に直接的/間接的に使用可能な1セットの予め定義されたコード/データモジュールを提供する。ADFはまた、総合開発環境(「IDE」)、コードジェネレータ、デバッガなどのツールを提供し得る。一般に、ADFは、たとえば、所望のタスクを実行するようにコンポーネント選択し、選択されたコンポーネントの外観、挙動および相互作用を定義することによって、ユーザインターフェイス(user interface:「UI」)およびアプリケーション論理を定義するために、アプリケーション開発者によって使用可能である再使用可能なコンポーネントを提供することによってアプリケーション開発を単純化する。オラクル社(Oracle Corp.)による「Oracle ADF」などのいくつかのADFは、疎結合や、より容易なアプリケーション開発およびメンテナンスを促進するモデル・ビュー・コントローラ(mobile-view-controller:「MVC」)設計パターンに基づいている。
概して、多くの企業は、出張中の従業員が、エンタープライズコンピュータシステム上に記憶されている情報にアクセスすることができるように、それらの従業員が、離れた位置からモバイルデバイスを用いてセキュアなエンタープライズアプリケーションにアクセスすることを可能にする必要性を表明してきた。このような能力があれば、たとえば、販売員は路上でも仕事ができ、サービス技術者はカスタマサイトで部品を調べることができ、従業員は自宅で仕事ができるかもしれない。いくつかの企業はまた、末端の顧客が、エンタープライズコンピュータシステムに存在するデータにアクセスすることが可能になることを所望するだろう。このようなアクセスは、顧客経験を向上させてコストを下げることにより、企業を競争相手から差別化し得る。たとえば、このようなアクセスを実現することにより、店舗は、都合が良いときにいつでも、顧客がアイテムについての店舗在庫を遠隔で検索して買い物をすることを許可し、これにより、顧客経験を向上させて販売員、オペレータおよび他のスタッフの必要性を低下させ得る。
さまざまなエンタープライズアプリケーションベンダーは、従来より、企業所有のセキュアなモバイルデバイスまたは顧客のモバイルアプリケーションと組合わせて特化されたポータルを提供することによって、この必要性を満たしてきた。しかしながら、現在、利用可能なパーソナルモバイルデバイスの多様性が爆発的に増加しているので、これらの従来のソリューションは急速に時代遅れになってきている。なぜなら、ベンダーが、単に、利用可能になる最新のすべてのOSおよびハードウェアに遅れずについていくことができないからである。
さらに、アプリケーションは、アプリケーションによって用いられるデータのタイプおよび/またはアプリケーションタイプに応じて、さまざまなエンタープライズコンピュータシステムに接続して同期する必要があるかもしれない。これらのエンタープライズコンピュータシステムは、アプリケーションタイプおよびデータタイプによっても異なる可能性のあるさまざまなバックエンドコンピュータシステムによってサポートされ得る。しかしながら、さまざまなバックエンドエンタープライズシステムは、さまざまな通信プロトコルおよびメカニズムを用いてデータを装置に伝達する可能性があり、これにより、さまざまなアプリケーションを実行するモバイルコンピューティングデバイスが、エンタープライズコンピュータシステムをサポートするさまざまなバックエンドコンピュータシステムと通信するための難題に直面する可能性がある。
さらには、セキュリティは企業の内部コンピュータシステムへのアクセスを許可する際に問題になる可能性がある。モバイルコンピューティングデバイスとエンタープライズコンピュータシステムとの間でサポートされている通信プロトコルに差があることで、さらに、モバイルコンピューティングデバイスとエンタープライズコンピュータシステムとの間の通信用のセキュリティアクセス管理が複雑になってしまう可能性がある。たとえば、さまざまなメカニズムは、プロプラエタリセキュリティプロトコルを有する特定のエンタープライズコンピュータシステムにアクセスするためのアプリケーションの認証を確実にするように実現され得る。いくつかの公知のシステムは、既製の消費者モバイルデバイスを企業のバックエンドエンタープライズシステムに関係付けることによってこの問題に対処しようと試みてきた。これらのデバイスは、エンタープライズバックエンドコンピュータシステムとの通信専用の特別なポータルを介してエンタープライズネットワークに接続するアプリケーションまたはOSを用いて構成され得る。しかしながら、モバイルデバイス、アプリケーション開発者および企業の製造業者は、アプリケーションを開発してモバイルデバイスをエンタープライズバックエンドコンピュータシステムに接続するための、よりフレキシブルでロバストな技術から利益を得るかもしれない。
公知のシステムとは対照的に、本発明の実施形態は、「クラウド」サービスにおける迅速でビジネスユーザフレンドリなモバイルアプリケーション構成のために宣言的ブラウザベースのクライアントアプリケーション開発ツールを提供する。一実施形態においては、クラウドサービスはオラクル社からの「モバイルクラウドサービス」(Mobile Cloud Service:「MCS」)である。実施形態は、バックエンド・サービスのためにクラウドサービスを用いる、予め定義されたテンプレートを用いてモバイルアプリケーションを構築することを可能にし、これにより、アプリケーション開発中に開発者にサービス定義を提示して、UI設計とバックエンド・サービスとの間の迅速な接続を可能にし得る。
MCS
MCSを用いる実施形態においては、MCSは、クラウドコンピュータシステムを介するモバイルコンピューティングデバイスとエンタープライズコンピュータシステムとの間の通信を容易にする。MCSは、モバイルデバイスと企業のエンタープライズネットワークとの間の第三者クラウドベースのインターフェイスを用いる。クラウドベースのインターフェイスは、さまざまなエンタープライズコンピュータシステムのためのセキュアなアダプタを集中化して、さまざまなプロトコルを、標準化されたレプレゼンテーショナル・ステート・トランスファ(Representational State Transfer:「REST」)アーキテクチャに翻訳する。企業は、本発明の実施形態を用いて、MCS上で利用可能なツールを用いて、それら自体のカスタムモバイルアプリケーションを作成することができ、このようなアプリケーションはモバイルユーザデバイス上に固有の形式でダウンロードすることができる。アプリケーションがインストールされると、そのアプリケーションは、MCSによって提供されるセキュアなアダプタを介してさまざまなエンタープライズコンピュータシステムに到達するように、MCSのクラウドベースのインターフェイスにアクセスすることができる。
MCSを用いる実施形態におけるアプリケーション開発のために、MCSは、モバイルバックエンド・アス・ア・サービス(Mobile Backend as a Service:MBaaS;「BaaS」とも称される)モデルのもとでバックエンド・サービスを提供する。MBaaSは、ウェブおよびモバイルアプリケーション開発者が、それらのアプリケーションを、バックエンド・アプリケーションによって公開されたバックエンド・クラウド・ストレージおよびAPIにリンクすることを可能にする一方で、ユーザ管理、プッシュ通知、ソーシャル・ネットワーキング・サービスとの統合を提供し得る。MBaaSモデル下でMCSにおいて提供されるバックエンド・サービスを用いることによって、実施形態は、符号化に精通していない専門外のユーザによってモバイルアプリケーション開発のために構成された宣言的なウェブベースのUIを提供する。
一実施形態においては、ユーザが新しいアプリケーションを開発し始めるときにウィザードが開始され、当該ユーザは、新しいアプリケーションについての名前および記述を与えるように要求される。次いで、ユーザは、第1頁目についてのUIに予めシード値を設定することができる1セットの予め定義されたテンプレート(たとえばタブ、下側タブ、ページ数など)から選択することによってアプリケーションの第1頁目を設計するように要求される。次いで、UIは、プレビューが変更を示すように自動的に更新されている間に、テンプレートにおける詳細を指定することによって完成させられる。UI設計が完成すると、ユーザはパレットを用いて、MCS(たとえばサービスカタログ)を介してモバイルアプリケーションにとって利用可能である入手可能なサービスおよびデータソースのカタログをブラウズすることができる。UIに追加されるカタログの各々のアイテムごとに、ユーザには属性のリストが提示され、さらに、1つ以上のジェスチャ(たとえばドラッグ・アンド・ドロップなど)を用いて、ユーザは属性をUI要素にバインドすることができる。ユーザは、モバイルアプリケーションを作成するために特徴定義およびデータ・バインディングのプロセスを繰返すことができる。マップ、グラフなどの他のUIコンポーネントもUIに追加することができる。アプリケーションのためにテストの準備ができると、ユーザは(iOS、アンドロイドまたは他の任意のモバイルデバイスOSのための固有の実行ファイルを構築して)対応するバイナリが作成され、その後、クイックレスポンス(Quick Response:「QR」)コードが生成され、ユーザに提供されるように、アプリケーションを公開し得る。ユーザがモバイルデバイスによってQRコード(登録商標)をスキャンすれば、アプリケーションがモバイルデバイス上に無線でインストールされる。
実施形態はADFにおいて予め構築されたコンポーネントを用いる。コンポーネントはデータ相互作用、データ視覚化およびカプセル化されたブラウザ側の動作を提供し、リッチクライアントプリケーション開発を単純化する。ADFはまた、カメラ、全地球測位システム(Global Positioning System:「GPS」)、コンタクトなどのようなデバイス特徴にアクセスするためにアパッチ・コルドバ(Apache Cordova)プラグインなどのプラグインを実現し得る。
一実施形態においては、ADFがモバイルデバイスのためのアプリケーションを構築するようにとの要求を受取ると、それは、既に開発された1つ以上のアプリケーションのうちツールキットを用いてプリコンパイルされた部分を決定し、それらの既存のアプリケーションに関連付けられた宣言的情報を修正する。次いで、この実施形態は、所望のオペレーティングシステム(iOS、アンドロイドなどの「OS」)のために要求されたアプリケーションを表現するバイナリアーティファクトをパッケージングすることによって、修正済みの宣言的情報と、既存のアプリケーションの1つ以上のバイナリアーティファクトとに基づいて、要求されたアプリケーションを構築する。ADFは、次いで、1つ以上のバイナリアーティファクトおよび1セットの定義ファイルを生成するように、要求されたアプリケーションをコンパイルする。エンドユーザ開発においては、アーティファクトは、プログラミング言語に精通していなくてもエンドユーザが作成できるアプリケーションまたは複合データオブジェクトである。
モバイルセキュリティ
いくつかの実施形態は、オラクル社による「オラクル・モバイル・セキュリティ・スーツ」(Oracle Mobile Security Suite:「OMSS」)などのモバイルセキュリティ・スーツによって提供されるセキュリティサービスを用いる。OMSSは、モバイルデバイスおよびモバイルアプリケーション・セキュリティ・ソリューションであって、従業員中心の包括的なエンタープライズモビリティマネジメント(Enterprise Mobility Management:「EMM」)ソリューションならびに消費者中心のモバイルおよびソーシャルサービスを提供する。EMMは、既存のユーザアイデンティティにシームレスに繋がって、モバイルアクセスのためのエンタープライズ・バックエンド・アイデンティティ・マネジメント・インフラストラクチャの拡張機能を利用することによって、モバイルデバイスマネジメント(mobile device management:「MDM」)、モバイルアプリケーションマネジメント(mobile application management:「MAM」)、モバイルコンテンツマネジメント(mobile content management:「MCM」)、およびモバイルアイデンティティポリシーを提供する。セキュリティポリシーは、企業ニーズに付随するものであって、(典型的には企業所有の装置のために)完成した装置をロックダウンさせるように、および/または、(個人所有の機器の持ち込み(bring your own device:BYOD)の場合に)セキュアな「コンテナ化された(containerized)」企業アプリケーションおよびデータからパーソナルアプリケーションを分離するように、定義することができる。モバイルおよびソーシャルサービスはソフトウェア開発キット(software development kit:「SDK」)を提供して、企業開発者がiOSおよびアンドロイド装置のためのカスタムのエンタープライズアプリケーションをセキュリティ保護することを可能にし、モバイルデバイスと、ソーシャルネットワークと、エンタープライズ・バックエンド・アイデンティティ・マネジメント・インフラストラクチャとの間の隙間を埋める。
OMSSは、アプリケーションおよびコンテンツのセキュリティのためにセキュアコンテナをモバイルデバイスに提供して、企業のアプリケーションおよびデータを分離、保護およびワイプする。モバイルデバイスとエンタープライズ・イントラネット・リソースとの間のすべての通信は、モバイルデバイスの綿密に調べられた(かまたは「コンテナ化された」)アプリケーションによってのみ使用可能である認証されたトランスポート層セキュリティ(transport layer security :「TLS」)/セキュアソケット層(secure socket layer:「SSL」)トンネル(「AppTunnel」)を通過する。AppTunnelは、企業の非武装地帯(demilitarized zone:「DMZ」)において位置するモバイルセキュリティ・アクセスサーバで終端となる。このサーバは、モバイルデバイスにセキュアなイントラネットアクセスを提供し、セキュアコンテナからAppTunnelだけを終端させ、これにより、不正アプリケーションのリスクを減らして、デバイスレベルVPNについて必要性を低減させる。
ADFによって提供されるものを利用することにより、実施形態は、ブラウザベースのアプリケーション開発を提供するが、これは、符号化を必要とせず、容易にビジネスサービスにマッピングされている。実施形態はまた、(アプリケーションが開発されているときに)アプリケーション・インラインをプレビューすること、さらには、アプリケーションを編集し、テストし、ブラウザから公開することを可能にする。したがって、専門開発者によって使用されるように構成されるオラクル社による「Jdeveloper」などのIDEではなく、実施形態は、ビジネスユーザ(たとえば専門外のユーザ)によって使用されるように構成されている。
サービスカタログ
MCSを用いる本発明の実施形態をサポートするために、MCSは、オラクル社から「オラクルAPIカタログ」(Oracle API Catalog:「OAC」)などのAPIカタログにアクセスを提供する。OACは、ある組織において利用可能なAPIに可視性を提供して、それらのAPIがアプリケーション開発のために再使用され得るようにする。OACは、APIアセット、OACにAPIをポピュレートするための自動化、およびユーザがAPIを求めてOACを検索するための能力を含み、それらのアプリケーションにおけるそれらの適合性を評価するためにAPIの詳細を理解している。OACは、OACにおいてAPIアセットを作成するハーベスタを含む。いくつかの実施形態においては、ハーベスティングがプロジェクトの構築時間に実行される。ハーベスタは、デプロイされたサービスをイントロスぺクション(introspection)し、プロジェクトにおいて発見されたサービスを表現するAPIアセットを作成する。これには、たとえば、サービス指向アーキテクチャ(service oriented architecture:「SOA」)サービスおよびサービスバスプロキシ、ウェブサービス記述言語(Web Services Description Language:「WSDL」)ベースのウェブサービス、およびウェブアプリケーション記述言語(Web Application Description Language:「WADL」)ベースのRESTサービスなどがある。作成されたアセットはOACにおいて収集される。
APIアセットがハーベスタによって作成された後、キュレータは、APIの発見および理解を容易にするための追加のメタデータを提供するように、単純なエディタを用いてAPIアセットを編集する。キュレータは、名前を変更するか、記述を追加するか、キーワードにタグ付けするか、またはOACにおけるAPIアセットにドキュメントリファレンス(reference:参照)を追加することができる。このメタデータは、ユーザによる各々のAPIアセットの発見および理解を単純化する。APIメタデータが編集された後、キュレータは、これをOACにおいてユーザにとって見えるようにすることによってAPIを公開する。公開されたアセットは、OACコンソールにおいて、かつオラクルのJDeveloperオラクル・エンタープライズ・リポジトリ・プラグインを介して利用可能である。ユーザは、OACを検索して、APIを発見し、キュレータによって提供されるメタデータを調査することによって、APIについてさらに学習することができる。
各々のOACユーザには、各々のユーザにとってどのOAC特徴およびコンテンツが利用可能であるかを決定する役割が割当てられている。開発者、キュレータおよび管理者を含む役割がOACにおいて予め定義されている。開発者役割を有するユーザは、公開されたAPIを求めてOACを検索し、APIをよりよく理解するためにAPIメタデータを調査し、APIへの関心を公表し、APIのためのレーティングおよびレビューを実行する能力を有する。開発者役割に利用可能な能力に加えて、キュレータの役割を有するユーザは、OACにおいて新しいAPIアセットを作成し、それらのメタデータを更新するようにAPIを編集し、それらを公開するために、ハーベスタを実行することができる。キュレータおよび開発者に利用可能な能力に加えて、管理者の役割を有するユーザは、システム設定を編集し、新しいユーザを作成し、新しい部門を作成し、セッションを管理し、インポート/エクスポート・ツールを用いることによって、OACにおける管理ページにアクセスしてOACのインフラストラクチャを管理する。管理者はまた、OACに含まれているセキュリティ特徴を構成することができる。
いくつかの実施形態においては、ネイティブアプリケーションまたはホストされたアプリケーションとしてアプリケーションが開発されてモバイルデバイスにデプロイされてもよい。ネイティブアプリケーションをデプロイする場合、完全なアプリケーションがデバイスにインストールされる。ホストされたアプリケーション開発のために、ユーザは、「アプリ・ストア」からホスティング・アプリケーションをダウンロードする必要があり、この場合、このようなホスティング・アプリケーションは、ホスティング・アプリケーション上に「特徴」としてインストールされ得るホストされたアプリケーションを「ホストする」。この実施形態は、サーバからの実行中のホスティング・アプリケーションを更新することを可能にし得ることで、宣言的メタデータをデバイスに送信し、既存のアプリケーションの上に重ねて、当該アプリケーションをこの新しいメタデータに対して実行させるように更新することができるようにする。
図1は、MCS122をバックエンド・サービスとして使用することを可能にする予め定義されたテンプレートを用いることによってアプリケーションを開発するためのシステム環境100のブロック図である。サービス定義は、UI設計とバックエンド・サービスとの間の迅速な接続を可能にするアプリケーション開発中にユーザに提示することができる。
図示される実施形態においては、システム環境100は、1つ以上のクライアントコンピューティングデバイス104、106および108にクラウドサービスを提供するクラウドインフラストラクチャシステム102を含む。クライアントコンピューティングデバイス104、106および108はクラウドインフラストラクチャシステム102と対話するためにユーザによって用いられてもよい。クライアントコンピューティングデバイス104、106および108は、クラウドインフラストラクチャシステム102によって提供されるサービスを使用するためにクラウドインフラストラクチャシステム102と対話するようにクライアントコンピューティングデバイスのユーザによって使用され得る、ウェブブラウザ、専有のクライアントアプリケーション(たとえばオラクルフォームズ)または他のアプリケーションなどのクライアントアプリケーションを動作させるように構成され得る。
クラウドインフラストラクチャシステム102が、示されている構成要素以外の他の構成要素を有し得る。さらに、図1に示されている実施形態は、本発明の実施形態を組込み得るクラウドインフラストラクチャシステムの一例に過ぎない。いくつかの他の実施形態においては、クラウドインフラストラクチャシステム102は、図1に示されているものよりも多いかまたは少ない数の構成要素を有していてもよく、2つ以上の構成要素を組合せてもよく、または構成要素の異なる構成または配置を有していてもよい。
クライアントコンピューティングデバイス104、106および108は、携帯可能な手持ち式の装置(たとえばiPhone(登録商標)、セルラー電話、iPad(登録商標)、計算タブレット、携帯情報端末(personal digital assistant:PDA))またはウェアラブルデバイス(たとえばGoogle Glass(登録商標)頭部装着型ディスプレイ)であってもよく、Microsoft Windows Mobile(登録商標)などのようなソフトウェア、および/もしくは、iOS、Windows Phone、Android、BlackBerry 10、Palm OSなどのようなさまざまなモバイルOSを動作させ、インターネット、電子メール、ショートメッセージサービス(short message service:SMS)、Blackberry(登録商標)または他の通信プロトコルで可能化される。クライアントコンピューティングデバイス104、106および108は汎用パーソナルコンピュータであってもよく、一例として、Microsoft Windows(登録商標)、Apple Macintosh(登録商標)および/またはLinux(登録商標) OSのさまざまなバージョンを動作させるパーソナルコンピュータおよび/またはラップトップコンピュータを含む。クライアントコンピューティングデバイス104、106および108は、たとえばGoogle Chrome OSなどのようなさまざまなGNU/Linux OSを含むがこれらに限定されない、さまざまな市販のUNIX(登録商標)またはUNIXライクOSのいずれをも動作させるワークステーションコンピュータであり得る。代替的に、または加えて、クライアントコンピューティングデバイス104、106および108は、ネットワーク110を介して通信することができる、シンクライントコンピュータ、インターネットにより可能化されるゲームシステム(たとえばKinect(登録商標)ジェスチャ入力装置付きの、または当該ジェスチャ入力装置なしのMicrosoft Xboxゲームコンソール)および/または個人メッセージ伝達装置などのような任意の他の電子装置であってもよい。
例示的なシステム環境100は3つのクライアントコンピューティングデバイスで示されているが、クライアントコンピューティングデバイスはいくつサポートされていてもよい。センサを有する装置などの他の装置がクラウドインフラストラクチャシステム102と対話してもよい。
ネットワーク110は、クライアント104、106、108とクラウドインフラストラクチャシステム102との間のデータの通信およびやりとりを容易にし得る。ネットワーク110は、伝送制御プロトコル/インターネットプロトコル(transmission control protocol/Internet protocol:「TCP/IP」)、システムネットワークアーキテクチャ(systems network architecture:「SNA」)、インターネットパケット交換(Internet packet exchange:「IPX」)、AppleTalkなどを含むがこれらに限定されない、市販のさまざまなプロトコルのうちのいずれを用いてもデータ通信をサポートすることができる、当業者が精通している任意のタイプのネットワークであり得る。単なる例示として、ネットワーク110は、イーサネット(登録商標)、トークンリングなどに基づくような、ローカルエリアネットワーク(LAN)であり得る。ネットワーク110はワイドエリアネットワークおよびインターネットであり得る。それは、仮想プライベート・ネットワーク(virtual private network:VPN)、イントラネット、エクストラネット、公衆交換電話網(public switched telephone network:PSTN)、赤外線ネットワーク、無線ネットワーク(たとえば、米国電気電子学会(Institute of Electrical and Electronics:IEEE)802.11のプロトコル一式、Bluetooth(登録商標)、および/もしくは任意の他の無線プロトコルのいずれかに従って動作するネットワーク)を含むがこれらに限定されない仮想ネットワーク、ならびに/または、これらの任意の組合せおよび/もしくは他のネットワークを含み得る。
クラウドインフラストラクチャシステム102は1つ以上のコンピュータおよび/またはサーバを含み得る。これらのコンピュータシステムまたはサーバは、1つ以上の汎用コンピュータ、特化されたサーバコンピュータ(たとえば、パーソナルコンピュータ(personal computer:「PC」)サーバ、UNIX(登録商標)サーバ、ミッドレンジサーバ、メインフレームコンピュータ、ラックマウント型サーバなどを含む)、サーバファーム、サーバクラスタ、または他の任意の適切な構成および/もしくは組合せからなってもよい。さまざまな実施形態においては、クラウドインフラストラクチャシステム102に関連付けられた1つ以上のコンピュータシステムまたはサーバは、前述の開示に記載される1つ以上のサービスまたはソフトウェアアプリケーションを実行するように適合されてもよい。たとえば、クラウドインフラストラクチャシステム102に関連付けられた1つ以上のコンピュータシステムまたはサーバは、本開示の実施形態に従ってこの明細書中に記載される処理を実行するためのサーバに対応してもよい。
クラウドインフラストラクチャシステム102に関連付けられた1つ以上のコンピュータシステムまたはサーバは、上に論じられたもののうちのいずれかを含むOS、および市販のいずれかのサーバOSを動作させ得る。クラウドインフラストラクチャシステム102に関連付けられた1つ以上のコンピュータシステムまたはサーバはまた、ハイパーテキスト・トランスポート・プロトコル(hypertext transport protocol:「HTTP」)サーバ、ファイル転送プロトコル(file transfer protocol:「FTP」)サーバ、コモンゲートウェイインターフェイス(common gateway interface:「CGI」)サーバ、JAVAサーバ、データベースサーバなどを含むさまざまな追加のサーバアプリケーションおよび/または中間層アプリケーションのうちいずれを動作させ得る。
特定の実施形態においては、クラウドインフラストラクチャシステム102によって提供されるサービスは、オンラインデータストレージおよびバックアップソリューション、ウェブに基づく電子メールサービス、ホストされるオフィススイートおよびドキュメントコラボレーションサービス、データベース処理、管理される技術サポートサービスなどのような、オンデマンドでクラウドインフラストラクチャシステム102のユーザに利用可能にされるサービスのホストを含んでもよい。クラウドインフラストラクチャシステム102によって提供されるサービスは動的にスケーリングしてそのユーザのニーズを満たすことができる。クラウドインフラストラクチャシステム102によって提供されるあるサービスのある具体的なインスタンス化は本明細書では「サービスインスタンス」と称される。一般的に、クラウドサービスプロバイダのシステムからインターネットなどの通信ネットワークを介してユーザに利用可能にされる如何なるサービスも「クラウドサービス」と称される。典型的には、パブリックなクラウド環境においては、クラウドサービスプロバイダのシステムを構成するサーバおよびシステムは顧客自身のオンプレミスのサーバおよびシステムとは異なる。たとえば、クラウドサービスプロバイダのシステムはアプリケーションをホストしてもよく、ユーザは、インターネットなどの通信ネットワークを介して、オンデマンドで、アプリケーションをオーダーし使用してもよい。
いくつかの例では、クラウドインフラストラクチャ102によってインスタンス化されるサービスインスタンスは、ストレージ、ホストされるデータベース、ホストされるウェブサーバ、ソフトウェアアプリケーション、またはクラウドベンダーによってユーザに提供されるかもしくは他の態様で当該技術分野において公知であるような他のサービスに対する保護されたコンピュータネットワークアクセスを含んでもよい。たとえば、クラウドインフラストラクチャ102によってインスタンス化されるサービスインスタンスは、クラウド上の遠隔ストレージに対する、インターネットを介する、パスワード保護されたアクセスを含み得る。別の例として、クラウドインフラストラクチャ102によってインスタンス化されるサービスインスタンスは、ネットワーク接続された開発者による個人的な使用のために、ウェブサービスに基づくホストされたリレーショナルデータベースおよびスクリプト言語ミドルウェアエンジンを含み得る。別の例として、クラウドインフラストラクチャ102によってインスタンス化されるサービスインスタンスは、クラウドベンダーのウェブサイトにおいてホストされる電子メールソフトウェアアプリケーションに対するアクセスを含み得る。
特定の実施形態では、クラウドインフラストラクチャシステム102は、セルフサービスの、サブスクリプションに基づく、順応性を持ってスケーラブルで、信頼性があり、非常に利用可能性があり、およびセキュリティ上安全な態様で顧客に対して配送されるアプリケーションの組、ミドルウェア、開発サービス、データベースサービス提供を含んでもよい。クラウドインフラストラクチャサービス102において具体化されるこのようなクラウドインフラストラクチャシステムの一例はオラクル社によって提供されるオラクル・パブリック・クラウド(Oracle Public Cloud)である。
クラウドインフラストラクチャシステム102はクラウドサービスをさまざまな展開モデルによって提供してもよい。たとえば、サービスは、クラウドインフラストラクチャシステム102が(たとえば、オラクル社によって所有される)クラウドサービスを販売する組織によって所有され、サービスが一般大衆またはさまざまな業界エンタープライズに対して利用可能にされるパブリッククラウドモデルの下で提供されてもよい。別の例として、サービスは、クラウドインフラストラクチャシステム102が単一の組織に対してのみ動作され、その組織内における1つ以上のエンティティに対してサービスを提供され得るプライベートクラウドモデルの下で提供されてもよい。クラウドサービスは、さらに、クラウドインフラストラクチャシステム102およびクラウドインフラストラクチャシステム102によって提供されるサービスが関連コミュニティにおけるいくつかの組織によって共有されているコミュニティクラウドモデルの下で提供されてもよい。クラウドサービスは、さらに、2つ以上の異なるモデルの組合せであるハイブリッドクラウドモデルの下で提供されてもよい。
いくつかの実施形態では、クラウドインフラストラクチャシステム102によって提供されるサービスは、ソフトウェア・アズ・ア・サービス(Software as a Service:SaaS)カテゴリ、プラットフォーム・アズ・ア・サービス(Platform as a Service:PaaS)カテゴリ、インフラストラクチャ・アズ・ア・サービス(Infrastructure as a Service:IaaS)カテゴリ、MBaasカテゴリ、またはハイブリッドサービスを含む他のサービスのカテゴリの下で提供される、1つ以上のサービスを含み得る。いくつかの実施形態では、クラウドインフラストラクチャシステム102によって提供されるサービスは、アプリケーションサービス、プラットフォームサービス、インフラストラクチャサービス、およびバックエンドサービスを含み得るが、これらに限定されない。いくつかの例では、アプリケーションサービスはクラウドインフラストラクチャシステムによってSaaSプラットフォームを介して提供されてもよい。SaaSプラットフォームは、SaaSカテゴリに入るクラウドサービスを提供するよう構成されてもよい。たとえば、SaaSプラットフォームは、一式のオンデマンドアプリケーションを統合された開発および展開プラットフォーム上で構築し配送する能力を提供してもよい。SaaSプラットフォームは、SaaSサービスを提供するための基礎をなすソフトウェアおよびインフラストラクチャを管理および制御し得る。SaaSプラットフォームによって提供されるサービスを利用することによって、顧客はクラウドインフラストラクチャシステムにおいて実行されるアプリケーションを利用することができる。顧客は、別のライセンスおよびサポートを購入する必要なくアプリケーションサービスを獲得することができる。さまざまな異なるSaaSサービスが提供されてもよい。例としては、大規模な組織に対する売上実績管理、エンタープライズ統合、および事業柔軟性に対するソリューションを提供するサービスを含むがこれらに限定されない。
いくつかの実施形態では、プラットフォームサービスはクラウドインフラストラクチャシステム102によってPaaSプラットフォームを介して提供されてもよい。PaaSプラットフォームはPaaSカテゴリの範疇にあるクラウドサービスを提供するように構成されてもよい。プラットフォームサービスの例は、(Oracleなどの)組織が既存のアプリケーションを共有される共通のアーキテクチャにおいて整理統合することができるサービス、およびプラットフォームによって提供される共有されるサービスを活用する新たなアプリケーションを構築する能力を含み得るが、これらに限定されない。PaaSプラットフォームはPaaSサービスを提供するための基礎をなすソフトウェアおよびインフラストラクチャを管理および制御してもよい。顧客は、クラウドインフラストラクチャシステム102によって提供されるPaaSサービスを、別のライセンスおよびサポートを購入する必要なく獲得することができる。プラットフォームサービスの例は、オラクル社による「Oracle Java Cloud Service(JCS)」、オラクル社による「Oracle Database Cloud Service(DBCS)」などを含むが、これらに限定されない。
PaaSプラットフォームによって提供されるサービスを利用することによって、顧客は、クラウドインフラストラクチャシステム102によってサポートされるプログラミング言語およびツールを使用することができ、展開されたサービスを制御することもできる。いくつかの実施形態では、クラウドインフラストラクチャシステム102によって提供されるプラットフォームサービスは、データベースクラウドサービス、ミドルウェアクラウドサービス(たとえばOracle Fusion Middlewareサービス)、およびJavaクラウドサービスを含んでもよい。一実施形態では、データベースクラウドサービスは、組織がデータベースリソースをプールし、顧客にデータベース・アズ・ア・サービス(Database as a Service)をデータベースクラウドの形式で提供することを可能にする、共有型のサービス展開モデルをサポートしてもよい。ミドルウェアクラウドサービスは、顧客のためのプラットフォームを提供してさまざまなビジネスアプリケーションを開発および展開してもよく、Javaクラウドサービスは顧客のためのプラットフォームを提供してJavaアプリケーションをクラウドインフラストラクチャシステムにおいて展開してもよい。
さまざまな異なるインフラストラクチャサービスがIaaSプラットフォームによってクラウドインフラストラクチャシステム102において提供されてもよい。インフラストラクチャサービスは、SaaSプラットフォームおよびPaaSプラットフォームによって提供されるサービスを利用する顧客に対するストレージ、ネットワーク、他の基礎的計算リソースなどの基礎をなす計算リソースの管理および制御を容易にする。
特定の実施形態においては、クラウドインフラストラクチャシステム102は、クラウドインフラストラクチャシステムにおいてクラウドサービス(たとえば、SaaSサービス、PaaSサービス、IaaSサービスおよびMBaaSサービス)の包括的な管理を提供し得る。一実施形態においては、クラウド管理機能は、クラウドインフラストラクチャシステム102によって受取られる顧客のサブスクリプションをプロビジョニングし、管理し、追跡するための能力などを含み得る。さまざまな実施形態においては、クラウドインフラストラクチャシステム102は、クラウドインフラストラクチャシステム102によって提供されたサービスに対する顧客のサブスクリプションを自動的にプロビジョニングし、管理し、かつ追跡するように適合され得る。顧客は、サブスクリプションオーダーによって、クラウドインフラストラクチャシステム102によって提供される1つ以上のサービスをオーダーしてもよい。クラウドインフラストラクチャシステム102は、次いで、顧客のサブスクリプションオーダーでサービスを提供するための処理を実行する。
一実施形態においては、クラウド管理機能は、オーダー管理および監視モジュール114などの1つ以上のモジュールによって提供され得る。これらのモジュールは、1つ以上のコンピュータおよび/もしくはサーバを含んでいてもよく、またはそれらを用いて提供されてもよく、それらは、汎用コンピュータ、専用サーバコンピュータ、サーバファーム、サーバクラスタ、または他の任意の適切な構成および/もしくは組合せであってもよい。
例示的な動作においては、クライアントコンピューティングデバイス104、106または108を用いる顧客は、クラウドインフラストラクチャシステム102によって提供される1つ以上のサービスを要求することによって、クラウドインフラストラクチャシステム102と対話し得る。顧客は、さまざまな手段を用いて、サービス要求134をクラウドインフラストラクチャシステム102に発行してもよい。サービス要求134は、クラウドインフラストラクチャシステム102によって提供された1つ以上のサービスについてのサブスクリプションのオーダーを出すこと;クラウドインフラストラクチャシステム102によって提供される1つ以上のサービスにアクセスすることなど;を含み得る。特定の実施形態においては、顧客は、クラウドUI132、134、138にアクセスして、これらのUIを介してサブスクリプションオーダーを出してもよい。顧客がオーダーを出したことに応じてクラウドインフラストラクチャシステム102によって受取られるオーダー情報は、顧客と、当該顧客がサブスクライブするつもりでありクラウドインフラストラクチャシステム102によって提供される1つ以上のサービスと、を識別する情報を含み得る。顧客によってオーダーが出された後、オーダー情報はクラウドUI132、134および/または138を介して受取られる。
この例においては、オーダー管理および監視モジュール112は、記憶された顧客にオーダーを出させるために、顧客から受取った情報をオーダーデータベースに送信する。オーダーデータベースは、クラウドインフラストラクチャシステム102によって動作されるとともに他のシステム要素と共に動作されるいくつかのデータベースのうちの1つであってもよい。オーダー管理および監視モジュール112は、オーダーデータベースに記憶されたオーダー情報のすべてまたは一部を含む情報をオーダー管理モジュールに転送し得る。場合によっては、オーダー管理モジュールは、オーダーを検証し、検証後にオーダーを予約するといった、オーダーに関連する請求および課金機能を実行するように構成されてもよい。
特定の実施形態においては、クラウドインフラストラクチャシステム100は、アイデンティティ管理モジュール114を含んでいてもよい。アイデンティティ管理モジュール114は、クラウドインフラストラクチャシステム102においてアクセス管理および認可サービスなどのアイデンティティサービスを提供するように構成されてもよい。いくつかの実施形態では、アイデンティティ管理モジュール114は、クラウドインフラストラクチャシステム102によって提供されるサービスを利用したい顧客についての情報を制御してもよい。そのような情報は、そのような顧客のアイデンティティを認証する情報と、それらの顧客がさまざまなシステムリソース(たとえば、ファイル、ディレクトリ、アプリケーション、通信ポート、メモリセグメントなど)に対してどのアクションを行なうことが認可されているかを記述する情報とを含み得る。アイデンティティ管理モジュール114はまた、各顧客についての記述的情報と、その記述的情報が誰によってどのようにアクセスされ、修正され得るかとの管理を含んでいてもよい。
特定の実施形態では、クラウドインフラストラクチャシステム102はまた、クラウドインフラストラクチャシステム102の顧客にさまざまなサービスを提供するために使用されるリソースを提供するためのインフラストラクチャリソース116を含んでいてもよい。一実施形態では、インフラストラクチャリソース116は、PaaSプラットフォームおよびSaaSプラットフォームによって提供されるサービスを実行するために、サーバ、ストレージ、およびネットワーキングリソースなどのハードウェアの予め統合され最適化された組合せを含んでいてもよい。
いくつかの実施形態では、クラウドインフラストラクチャシステム102におけるリソースは、複数のユーザによって共有され、要望ごとに動的に再割当てされてもよい。加えて、リソースは、異なる時間帯におけるユーザに割当てられてもよい。たとえば、クラウドインフラストラクチャシステム102は、第1の時間帯における第1の一組のユーザが、特定数の時間、クラウドインフラストラクチャシステムのリソースを利用することを可能にし、次いで、異なる時間帯に位置する別の一組のユーザへの同じリソースの再割当てを可能にして、それによりリソースの利用を最大化してもよい。
特定の実施形態では、クラウドインフラストラクチャシステム102のさまざまなコンポーネントまたはモジュールによって共有され、かつクラウドインフラストラクチャシステム102によって提供されるサービスによって共有される、いくつかの内部共有サービス118が提供されてもよい。これらの内部共有サービス118は、セキュリティおよびアイデンティティサービス、統合サービス、エンタープライズリポジトリサービス、エンタープライズマネージャサービス、ウイルススキャンおよびホワイトリストサービス、高可用性、バックアップおよび復元サービス、クラウドサポートを可能にするためのサービス、電子メールサービス、通知サービス、ファイル転送サービスなどを含み得るが、これらに限定されない。
特定の実施形態では、クラウドインフラストラクチャシステム102のさまざまなコンポーネントまたはモジュールによって共有され、かつクラウドインフラストラクチャシステム102によって提供されるサービスによって共有される、いくつかの外部共有サービス120が提供されてもよい。これらの外部共有サービス120は、セキュリティおよびアイデンティティサービス、統合サービス、エンタープライズリポジトリサービス、エンタープライズマネージャサービス、ウイルススキャンおよびホワイトリストサービス、高可用性、バックアップおよび復元サービス、クラウドサポートを可能にするためのサービス、電子メールサービス、通知サービス、ファイル転送サービスなどを含み得るが、これらに限定されない。
さまざまな実施形態においては、外部共有サービス120は、エンタープライズコンピュータシステム126に対してアクセス、データ変換、自動化などを提供する1つ以上のコンポーネントを含み得る。エンタープライズコンピュータシステム126へのアクセスは、クラウドインフラストラクチャシステム102のさまざまなコンポーネントまたはモジュールによって、およびクラウドインフラストラクチャシステム102によって提供されるサービスによって、共有され得る。いくつかの実施形態においては、エンタープライズコンピュータシステム126へのアクセスは、クラウドインフラストラクチャシステム102によって提供されて1つ以上のサブスクライバに限定されるサービスインスタンスによって共有されてもよい。
さらなる実施形態においては、外部共有サービス120は、クラウドインフラストラクチャシステム102のさまざまなコンポーネントまたはモジュールによって共有され、かつクラウドインフラストラクチャシステム102により提供されるサービスによって共有される、外部アプリケーション・プログラミング・インターフェース(application programming interface:「API」)サービス128を含み得る。これらの外部APIサービス128は、他の第三者サービスまたはエンティティによって提供されるAPIを含み得るがこれらに限定されない。
さまざまな異なるモバイルクラウドサービスはクラウドインフラストラクチャシステム102におけるMCS122によって提供され得る。MCS122は、本発明のいくつかの実施形態に従って、モバイルコンピューティングデバイスとエンタープライズコンピュータシステム(たとえばエンタープライズコンピュータシステム124および126)との間の通信を容易にする。MCS122は、エンタープライズデータおよび認証情報を記憶するために用いられる1つ以上のメモリ記憶装置(「ローカル・ストレージ」)を含み得る。エンタープライズデータは、エンタープライズコンピュータシステム126もしくはクライアントコンピューティングデバイス104、106、108から受取られてもよく、または、クラウドインフラストラクチャシステム102によって変換されるエンタープライズデータまたはそれらの組合せを含んでもよい。認証情報は、アイデンティティ管理システム116から受取られてもよく、および/または、クラウドインフラストラクチャシステム102によって生成されてもよい。いくつかの実施形態においては、認証情報は、サービスについての要求に関してユーザのセキュリティ認証を示す情報を含み得る。
エンタープライズコンピュータシステム126などのエンタープライズコンピュータシステムは、クラウドインフラストラクチャシステム102とは異なる地理的位置(たとえば離れた地理的位置)においてクラウドインフラストラクチャシステム102のファイアウォールの向こう側に物理的に位置していてもよい。いくつかの実施形態においては、エンタープライズコンピュータシステム126は1つ以上のさまざまなコンピュータまたはサーバを含み得る。いくつかの実施形態においては、エンタープライズコンピュータシステム126は単一のコンピュータシステムの一部であってもよい。
特定の実施形態においては、エンタープライズコンピュータシステム126は、1つ以上のさまざまなプロトコルを用いて、クラウドインフラストラクチャシステム102と通信し得る。各々のエンタープライズコンピュータシステム126は、さまざまな通信プロトコルを用いてクラウドインフラストラクチャシステム102と通信してもよい。エンタープライズコンピュータシステム126は同じセキュリティプロトコルまたは異なるセキュリティプロトコルをサポートし得る。いくつかの実施形態においては、MCS122は、エンタープライズコンピュータシステム126との通信を処理するためのエージェントシステムを含み得る。
プロトコルはSPeeDY(「SPDY」)などの通信プロトコルを含み得る。プロトコルは、HTTPベースのプロトコルなどのアプリケーションプロトコルを含み得る。いくつかの実施形態においては、エンタープライズコンピュータシステム126は、RESTまたは簡易オブジェクト・アクセス・プロトコル(Simple Object Access Protocol:「SOAP」)などの通信プロトコルを用いて、クラウドインフラストラクチャシステム102と通信してもよい。たとえば、RESTプロトコルは、ユニフォームリソース識別子(uniform resource identifier:「URI」)またはユニフォームリソースロケータ(uniform resource locator:「URL」)を含むフォーマットをサポートし得る。RESTプロトコルを用いる通信用にフォーマットされたエンタープライズデータは、JavaScriptオブジェクト表記(JavaScript Object Notation:JSON」)、コンマ区切り形式(comma-separated values:CSV)、およびRSS(really simple syndication)などのようなデータフォーマットに容易に変換されてもよい。エンタープライズコンピュータシステム126およびクラウドインフラストラクチャシステム102は遠隔手続呼出し(remote procedure call:RPC)(たとえば拡張マークアップ言語(extended markup language:XML))などの他のプロトコルを用いて通信してもよい。
いくつかの実施形態においては、MCS122は、クラウドインフラストラクチャサービス102によって提供される1つ以上のサービスとの通信をサポートするように構成されたアダプタインターフェイスを含み得るものであって、そのうちのいくらかが、通信のためのさまざまなプロトコルまたは技術をサポート得る。いくつかの実施形態においては、MCS122は、エンタープライズコンピュータシステム126との通信をサポートするように構成されたアダプタインターフェイスを含み得るものであって、そのうちのいくらかが、通信のためのさまざまなプロトコルまたは技術をサポート得る。MCS122は、1つ以上のアダプタを含んでもよく、その各々は、通信プロトコル、或るタイプのエンタープライズコンピュータシステム、或るタイプのアプリケーション、或るタイプのサービス、またはそれらの組合せに従って通信するように構成され得る。アダプタによってサポートされる通信プロトコルは、エンタープライズコンピュータシステム126のうち1つ以上のシステムのサービスに特有のものであり得る。
特定の実施形態においては、クライアントコンピューティングデバイス104、106および108は各々、MCS122と通信するための特定のUIを提供することができるアプリケーションを実現し得る。特定のUIは、特定の通信プロトコルを用いて通信するように構成され得る。いくつかの実施形態においては、特定のUIは、MCS122と通信するよう呼出され得る呼出し可能インターフェイス、機能、ルーチン、方法および/または動作を含んでもよい。特定のUIは、入力として、クラウドインフラストラクチャサービス102によって提供されるサービスと、または、エンタープライズデータのためのおよび/もしくはサービスを要求するためのエンタープライズコンピュータシステム126と、通信するためのパラメータを受付け得る。いくつかの実施形態においては、MCS122を介する通信がカスタム通信プロトコルを用いる通信用に変換されてもよい。いくつかの実施形態においては、特定のUIは、アプリケーションにおけるカスタムクライアントに対応し得る。
MCS122は、1つ以上の呼出し可能なインターフェイス(たとえばAPI)を含み得る。MCS122に関連付けられた呼出し可能なインターフェイスは、モバイルコンピューティングデバイス上のアプリケーションがMCS122に要求を伝えることを可能にし得る。MCS122に関連付けられた呼出し可能なインターフェイスは、共通または標準のインターフェイスをサポートし得るものであって、これは、それらのパラメータを含む要求が、標準化されたプロトコル、アーキテクチャスタイルおよび/またはフォーマット(たとえばRESTプロトコル)に従ったアプリから受取られることを可能にし得る。MCS122に関連付けられた呼出し可能なインターフェイスは、コンピューティングデバイス104、106または108のうちのいずれか1つのユーザによって構成可能であり得る。MCS122に関連付けられた呼出し可能なインターフェイスは、通信プロトコルに従ってサービスについての要求を受取り得る。デバイスアプリケーション開発者は彼らのカスタムアプリケーションのためにMCS122に接続することができる。いくつかの実施形態においては、MCS122に関連付けられた呼出し可能なインターフェイスは、アプリを開発するのと同じ人によって構成され得ることにより、その人がMCS122と通信するためにカスタムアプリケーションを実現することができるようにし得る。
MCS122に関連付けられた呼出し可能なインターフェイスは、さらに、エンタープライズコンピュータシステム126が、標準化されたプロトコルまたはフォーマットに従ってMCS122と通信することを可能にし得る。アプリケーション開発者と同様に、エンタープライズコンピュータシステムを管理する人々は、1つ以上の呼出し可能なインターフェイスを介してMCS122と通信するように構成されたコード(たとえばエージェントシステム)を実現することができる。MCS122に関連付けられた呼出し可能なインターフェイスは、或るタイプのコンピューティングデバイス、或るタイプのエンタープライズコンピュータシステム、アプリ、エージェントシステム、サービス、プロトコルまたは他の基準に基づいて実現されてもよい。いくつかの実施形態においては、MCS122に関連付けられた呼出し可能なインターフェイスは、認証、圧縮、暗号化、カーソルでのページ付け、クライアントに基づくスロットル、非否認、ロギング、およびメトリック収集を含むサービスに対する要求をサポートしてもよい。いくつかの実施形態においては、MCS122に関連付けられた呼出し可能なインターフェイスは、認証、ポリシー実施、応答のキャッシング、MCS122に対する呼出しのスロットル、非同期パターンと同期パターンと間の翻訳、基底サービスに対する呼出しのロギング、またはそれらの組合せなどの、カスタムのビジネス関連サービスのために実現されてもよい。いくつかの実施形態においては、MCS122に関連付けられた呼出し可能なインターフェイスは、ユーザが、クラウドインフラストラクチャシステム102によって実装されるカスタムコードをロードすることを可能にし得る。カスタムコードは、ユーザがカスタムサービスまたは他のエンタープライズコンピュータシステムにアクセスすることを可能にし得る、クラウドインフラストラクチャシステム102に対するMCS122に関連付けられた1つ以上の呼出し可能インターフェイス250を実現し得る。
MCS122に関連付けられたプロトコルトランスレータは、メッセージのための通信プロトコルを決定するように、および/または、メッセージを宛先に関する通信プロトコルに変換するように、メッセージを処理し得る。MCS122に関連付けられたプロトコルトランスレータは、クライアントコンピューティングデバイス104、106または108から受取られた要求を変換し得る。当該要求は、クライアントコンピューティングデバイス104、106、または108によってサポートされる通信プロトコルのフォーマットから、クラウドインフラストラクチャサービス102またはエンタープライズコンピュータシステム126によって提供されるサービスによってサポートされる通信プロトコルのフォーマットに変換されてもよい。MCS122に関連付けられたプロトコルトランスレータは、クラウドインフラストラクチャサービス102またはエンタープライズコンピュータシステム126によって提供されるサービスから受取られた応答を変換し得る。応答は、クラウドインフラストラクチャサービス102またはエンタープライズコンピュータシステム126によって提供されるサービスによってサポートされる通信プロトコルのフォーマットから、クライアントコンピューティングデバイス104、106または108によってサポートされる通信プロトコルのフォーマットに変換されてもよい。
MCS122に関連付けられたセキュリティサービスは、クライアントコンピューティングデバイス104、106または108のうちいずれかから受取られた要求についてのセキュリティ認証を管理し得る。MCS122に関連付けられたセキュリティサービスは、顧客処理およびエンタープライズデータの完全性を保護し得る。システムまたはデータが損なわれるのを防ぐために、要求がクライアントコンピューティングデバイス104、106または108から受取られると、セキュリティ認証が発生し得る。セキュリティ認証は、要求がクラウドインフラストラクチャシステム102による処理のために発送される前に、実行されてもよい。ユーザのために決定されたセキュリティ認証は、モバイルコンピューティングデバイスに関連付けられたユーザが、MCS122を介してサービスを要求するための認可を得ることを可能にし得る。セキュリティ認証は、ユーザがMCS122を介して要求されたさまざまなサービスおよび/または要求を認証するための労力を軽減し得る。MCS122に関連付けられたセキュリティサービスは、要求のセキュリティを認証するさまざまな動作を実行するように構成された1つ以上の機能ブロックまたはモジュールとして実現されてもよい。
MCS122に関連付けられた認証サービスは、クライアントコンピューティングデバイス104、106または108から受取られた要求についてのセキュリティ認証を管理し得る。MCS122に関連付けられた認証サービスは、MCS122に要求を送信するコンピューティングデバイスに関連付けられたユーザについてのセキュリティ認証を決定し得る。セキュリティ認証は、アプリケーションの動作、(たとえば、アプリケーションの開始)、要求、コンピューティングデバイス、エンタープライズコンピュータシステム、要求に関する他の基準、またはそれらの組合せに関連付けられ得る期間に基づいて決定されてもよい。セキュリティ認証は、個々の要求、1つ以上のエンタープライズコンピュータシステム、特定のサービス、サービスのタイプ、ユーザ、コンピューティングデバイス、セキュリティ認証を決定するための他の基準、または、それらの組合せなどのうちいずれか1つのために検証されて許可され得る。いくつかの実施形態においては、クラウドインフラストラクチャシステム102は、エンタープライズコンピュータシステムまたはエンタープライズコンピュータシステムをサポートする認証システムから受取られたユーザの認証情報を記憶し得る。クラウドインフラストラクチャシステム102は、要求に関連付けられたユーザのアイデンティティがこのような要求を行う権限を有してしているかどうかを判断するために、ルックアップ機能を実行することによって認証を決定してもよい。記憶された認証情報は、アクセスする権限がユーザに与えられ得るような情報、たとえば、要求のタイプ、機能、エンタープライズコンピュータシステム、エンタープライズデータなどを含み得る。いくつかの実施形態においては、インフラストラクチャシステム102は、認証を判断するために、要求を行なっているコンピューティングデバイスとの通信を開始し得る。
いくつかの実施形態においては、セキュリティ認証は、サービスを要求するユーザに関連付けられた役割に基づいて決定されてもよい。当該役割は、MCS122へのアクセスを要求するユーザに関連付けられてもよい。いくつかの実施形態においては、ユーザは、MCS122によって提供されるリソースおよび/またはサービスへのアクセスが許可され得るMCS122のサブスクライバまたはテナントとしてサービスを要求してもよい。認証は、サブスクライバとしてMCS122を介してサービスを要求する権限がユーザに与えられ得るように、MCS122に対するユーザのサブスクリプションに対応し得る。いくつかの実施形態においては、サブスクリプションはMCS122によって提供される特定のセットのリソースに限定されてもよい。セキュリティ認証は、MCS122のユーザにアクセス可能なリソースおよび/またはサービスに基づいていてもよい。いくつかの実施形態においては、要求は、「実行時環境」と呼ばれる実行中にテンプレートがプロビジョニングされてもよい。実行時環境は、要求、ユーザまたはデバイスに割当てられるリソースに関連付けられてもよい。
いくつかの実施形態においては、MCS122に関連付けられた認証サービスは、アイデンティティ管理システムに、ユーザについてのセキュリティ認証を判断するよう要求してもよい。アイデンティティ管理システムは、クラウドインフラストラクチャコンピュータシステム102によって(たとえばアイデンティティ管理114として)、またはクラウドインフラストラクチャシステム102に外付けの別のコンピュータシステムによって、実現されてもよい。アイデンティティ管理116は、ユーザの役割またはMCS212にアクセスするためのサブスクリプションに基づいてユーザのセキュリティ認証を判断してもよい。役割またはサブスクリプションは、エンタープライズコンピュータシステム、エンタープライズコンピュータシステムによって提供されるサービス、エンタープライズコンピュータシステムの機能もしくは特徴、エンタープライズコンピュータシステムへのアクセスを制御するための他の基準、またはそれらの組合せに関して特権および/または資格が割当てられていてもよい。
ADF
さまざまな異なるADF124がクラウドインフラストラクチャシステム102に提供され得る。ADF124は、アジャイルなSOAベースのアプリケーションを実装するためにインフラストラクチャコードを提供する。ADF124はさらに、1つ以上の開発ツール(たとえば「Oracle JDeveloper 11g」開発ツール)によって開発に視覚的および宣言的なアプローチを提供する。ADF124によって提供される1つ以上のフレームワークはMVC設計パターンを実現し得る。このようなフレームワークはオブジェクト/リレーショナルマッピング、データ持続性、再使用可能なコントローラ層、リッチ・ウェブUIフレームワーク、UIへのデータ・バインディング、セキュリティおよびカスタマイズのような分野に対するソリューションを用いてMVCアーキテクチャの層をすべてカバーする一体型ソリューションを提供する。このようなフレームワークはまた、コア・ウェブベースのMVCアプローチよりも拡張させると、完全な複合アプリケーションの作成を単純化するOracle SOAおよびウェブセンタ・ポータル・フレームワークと一体化される。
特定の実施形態においては、ADF124は、クラウドインフラストラクチャシステム102によって提供される組込み型ビジネスサービスにサービスインターフェイスを結合することによって、データをサービスとして公開するアジャイルなアプリケーションを開発することを容易にする。ビジネスサービスの実装詳細のこのような分離は、ADF124においてメタデータを介して行なわれる。このメタデータ駆動型アーキテクチャを使用することにより、アプリケーション開発者らは、サービスがどのようにアクセスされるかについての詳細にではなく、ビジネスロジックおよびユーザ経験に集中できるようになる。特定の実施形態においては、ADF124は、これらのサービスの実装詳細を、モデル層におけるメタデータに格納する。これにより、開発者らは、UIを修正することなくサービスを交換できるようになり、アプリケーションが非常にアジャイルになる。加えて、UIを作成する開発者は、ビジネスサービスアクセスの詳細に煩わされる必要がなくなる。代わりに、開発者らは、アプリケーションインターフェイスおよび対話論理の開発に集中することができる。ユーザ体験を発生させることは、ビジュアルページデザイナ上に所望のビジネスサービスをドラッグ・アンド・ドロップし、どのタイプのコンポーネントがそのデータを表わすべきかを示すのと同じくらい単純であり得る。
さまざまな実施形態においては、開発者らは、エンタープライズアプリケーションを形成するモジュールを作成するためにADF124と対話する。エンタープライズアプリケーションは、クラウドインフラストラクチャシステム102のコンテキスト内で実行することができる。さまざまな実施形態においては、開発者らは、モバイルアプリケーションを形成するモジュールを作成するためにADF124と対話する。モバイルアプリケーションは、クラウドインフラストラクチャシステム102のコンテキスト内で実行することができる。以下に説明される本発明の特徴は、ここに提供される開示を当業者が読めば明らかとなり得るように、プログラミング言語とアプリケーション開発フレームワークとのいずれかの所望の組合せを用いて実現され得る。
ADF124によって提供される1つ以上のフレームワークは、一例においてはOracle ADFとして具体化され得る。したがって、ADF124におけるフレームワークはMVC設計パターンに基づき得る。MVCアプリケーションは、以下に分離される:1)データソースとのやりとりを扱い、ビジネスロジックを実行するモデル層と;2)アプリケーションUIを扱うビュー層と;3)アプリケーションフローを管理し、モデル層とビュー層との間のインターフェイスとして作用するコントローラと;に分離される。アプリケーションをこれら3つの層に分離することにより、アプリケーション間にわたるコンポーネントの保守および再使用が簡略化される。各層を他の層から独立させることで、結果として、緩く結合されたSOAが得られる。
さまざまな実施形態においては、ADF124は、開発者がアプリケーションを複数層の形状で作成することを可能にするツールおよびリソースを提供する。各々の層は、予め定義された規格に従って所望の論理を実現するコードモジュール/ファイルを含んでいる。このため、一実施形態においては、ADF124は、アプリケーションを4層として開発することができる。4層とはすなわち、アプリケーションのUIを提供するコードモジュール/ファイルを含むビュー層;アプリケーションのフローを制御するコードモジュールを含むコントローラ層;基底層のために抽象化層を提供するデータ/コードモジュールを含むモデル層;および、さまざまなソースからのデータにアクセスを提供し、ビジネスロジックを処理するコードモジュールを含むビジネスサービス層;を含む。
特定の実施形態においては、ADF124は、当該層の各々を実装する際に開発者らが用いることを望む技術を当該開発者らに選択させる。エンタープライズJavaBean(Enterprise JavaBean:「EJB」)、ウェブサービス(Web Services)、JavaBeans、JPA/EclipseLink/TopLinkオブジェクト他の多くがすべて、ADF124のためのビジネスサービスとして使用可能である。ビュー層は、JSF(Java Server Faces)、デスクトップスイング(Desktop Swing)アプリケーション、およびMicrosoft Officeのフロントエンドを用いて実現されるウェブベースのインターフェイスと、モバイルデバイスのためのインターフェイスとを含み得る。
一局面においては、ビュー層は、開発中のアプリケーションのUIを表現する。ビュー層は、デスクトップビュー、モバイルビュー、およびブラウザベースのビューを含み得るものであって、それらの各々はUIのすべてまたは一部を提供するとともに、ビュータイプに対応するさまざまな態様でアクセス可能である。たとえば、ウェブページが、対応するURLを含むクライアント要求を受信することに応答して、アプリケーションによって送信されてもよい。ウェブページは次に、要求元クライアントシステムに関連付けられた表示部(図示せず)上にブラウザによって表示されてもよく、それにより、要求元クライアントシステムのユーザがエンタープライズアプリケーションとやりとりすることを可能にする。ADF124は、ビジネスサービスの再使用を可能にするビジネスサービスへのマルチチャネルアクセスと、ウェブクライアント、クライアント・サーバ・スイングデスクトップベースのアプリケーション(client-server swing desktop-based application)、マイクロソフト・エクセル・スプレッドシート、スマートフォンなどのモバイルデバイス、などからのアクセスとをサポートする。
(ウェブページなどの)ビュー層を形成するコードファイル/モジュールは、ハイパーテキストマークアップ言語(hypertext markup language:HTML)、Javaサーバページ(Java server page:JSP)、およびJSFのうちの1つ以上を用いて実現されてもよい。代替的には、UIは、スイング(Swing)などのJavaコンポーネントおよび/またはXMLを用いて実現されてもよい。さらに示されるように、UIは、マイクロソフトによるワードおよびエクセルなどのデスクトップアプリケーションについてのユーザの経験および熟知度を活用してもよい。
上述のように、ユーザが開発した関連するコード/データモジュールが、層の各々において提供される。しかしながら、各層は典型的には、ADF124によって提供された他の予め定義されたコード/データモジュールを含む。予め定義されたモジュールのうちのいくつかは、たとえば、ウェブページを開発するためのテンプレート、開発されたコードに所望の機能性を含めるためのテンプレートなどとして、開発中に使用されてもよい。(URL書換モジュールなどの)他の予め定義されたモジュールが、開発されたアプリケーションとともにデプロイされてもよく、エンタープライズアプリケーションの実行中に追加の機能性(要求されたURLの、内部名へのマッピング)をユーザに提供してもよい。
コントローラ層は、アプリケーションのフローを制御するコードモジュール/ファイルを含む。各コントローラオブジェクトは、ビュー層110において情報を提示する所望の態様に従って実現されたソフトウェア命令および/またはデータを含む。所望の態様は、別のウェブページにおけるリンクがユーザによってクリック/選択されると表示される特定のウェブページ、実行中にエラーが起こると表示される、格納/検索すべき特定のデータを示すページなどを含んでいてもよい。
一局面では、コントローラ層はアプリケーションフローを管理し、ユーザ入力を扱う。たとえば、ページ上でサーチボタンがクリックされると、コントローラは、どのアクションを行なうべきか(サーチを行なう)と、どこにナビゲートすべきか(結果ページ)とを判断する。JDeveloperでは、ウェブベースのアプリケーションについて、標準のJSFコントローラ、またはJSFコントローラ機能性を拡張するADFコントローラという2つのコントローラオプションがある。どちらのコントローラが使用されても、アプリケーションフローは典型的には、ページおよびナビゲーションルールをダイアグラム上にレイアウトすることによって設計される。アプリケーションのフローは、より小さい、再使用可能なタスクフローに分割可能であり、方法コールおよび決定ポイントなどの非視覚的コンポーネントをフローに含めることでき、単一の含有ページの領域内で実行される「ページフラグメント」フローを作成することができる。
コントローラ層を形成するコードモジュール/ファイルはしばしば、クライアント要求を受信するととともに対応する応答として所望のウェブページを送信するJavaサーブレットとして実現される。コントローラオブジェクトはまた、たとえば、アパッチジャカルタストラット(Apache Jakarta Struts)コントローラとして、またはJSF規格に従って実現されてもよい。
モデル層は、さまざまなビジネスサービスを、それらを他の層で使用するオブジェクトに、たとえば上述のコントローラオブジェクトに、または直接デスクトップアプリケーションに接続する、データ/コードモジュールを含む。モデル層の各抽象データオブジェクトは、任意のタイプのビジネスサービスにアクセスするために使用可能である対応するインターフェイスを提供し、基礎をなすビジネスサービス層で実行される。データオブジェクトは、クライアントからサービスのビジネスサービス実装詳細を抽象化し、および/または、データ制御方法/属性をビューコンポーネントに公開してもよく、こうして、ビュー層とデータ層とを分離させる。
一局面では、モデル層は、データ制御およびデータ結合という2つのコンポーネントからなり、それらは、インターフェイスを定義するためにメタデータファイルを利用する。データ制御は、クライアントからビジネスサービス実装詳細を抽象化する。データ結合は、データ制御方法および属性をUIコンポーネントに公開し、ビューとモデルとをクリーンに分離する。モデル層のメタデータアーキテクチャにより、開発者らは、任意のタイプのビジネスサービス層実装をビュー層およびコントローラ層に結合する際に、同じ開発経験を得る。
特定の実施形態においては、ADF124は、開発プロセス全体にわたって宣言的プログラミングパラダイムの使用を強調して、ユーザが、実現詳細に精通する必要なしに、アプリケーション作成のロジックに集中できるようにする。高レベルでは、フュージョン(Fusion)ウェブアプリケーションのための開発プロセスは、通常、アプリケーションワークスペースを作成することを伴う。ウィザードを使用して、開発者が選択した技術にとって必要なライブラリおよび構成が自動的に追加され、アプリケーションが、パッケージおよびディレクトリを有するプロジェクトへと構造化される。
データベースオブジェクトをモデル化することにより、オンラインデータベースまたは任意のデータベースのオフラインレプリカが作成可能であり、定義が編集可能であり、スキーマが更新可能である。統一モデリング言語(unified modeling language:「UML」)モデラーを使用して、使用事例が次に、アプリケーションのために作成され得る。アプリケーション制御およびナビゲーションもデザイン可能である。アプリケーション制御およびナビゲーションのフローを視覚的に判断するために、ダイアグラマ(diagrammer)が使用可能である。次に、フローを記述する根底的なXMLファイルが自動的に作成可能である。開発者が、インポートされたライブラリを、アプリケーションに単純にドラッグ・アンド・ドロップすることによって閲覧および使用することを可能にするために、リソースライブラリが使用可能である。データベーステーブルから、エンティティオブジェクトが、ウィザードまたはダイアログを使用して作成可能である。それらのエンティティオブジェクトから、ビューオブジェクトが、アプリケーションにおけるページによって使用されるように作成される。検証ルールおよび他のタイプのビジネスロジックが実現可能である。
この例では、ビジネスサービス層は、データ持続性層とのやりとりを管理する。それは、データ持続性、オブジェクト/リレーショナルマッピング、トランザクション管理、およびビジネスロジック実行などのサービスを提供する。ビジネスサービス層は、シンプルJavaクラス、EJB、ウェブサービス、JPAオブジェクト、およびオラクルADFビジネスコンポーネントといったオプションのうちのいずれかで実装可能である。加えて、データは、ファイル(XMLまたはCSV)およびRESTから直接消費され得る。このため、各ビジネスサービスは、対応するデータ持続性層とのやりとりを管理し、また、オブジェクト/リレーショナルマッピング、トランザクション管理、ビジネスロジック実行などのサービスを提供する。ビジネスサービス層は、シンプルJavaクラス、エンタープライズJava Beans、ウェブサービスなどのうちの1つ以上を使用して実装されてもよい。
ビジネスコンポーネントは、データベース、ウェブサービス、レガシーシステム、アプリケーションサーバなどとのやりとりを提供するために、たとえばオラクル社による「オラクルADFビジネスコンポーネント」を使用して実装されるビジネスサービスを表わす。一実施形態では、ビジネスサービス層のビジネスコンポーネントは、ビジネスサービス実装を提供するために協働するアプリケーションモジュール、ビュー/クエリーオブジェクト、およびエンティティオブジェクトの混合を含む。アプリケーションモジュールは、アプリケーション/トランザクションデータと連携するためにUIクライアントが通信するトランザクションコンポーネント/コードモジュールであり得る。アプリケーションモジュールは、更新可能なデータモデルを提供してもよく、また、ユーザトランザクションに関する手順/機能(一般にサービス方法と呼ばれる)を提供してもよい。
エンティティオブジェクトは、データベーステーブルにおける対応する行を表わしてもよく、対応する行に格納されたデータの操作(更新、削除など)を簡略化する。エンティティオブジェクトはしばしば、所望のビジネスルールが一貫して実施されることを確実にするために、対応する行のためのビジネスロジックをカプセル化する。エンティティオブジェクトはまた、根底的なデータベースに格納された行間に存在する関係を反映するように、他のエンティティオブジェクトに関連付けられてもよい。
図2は、本発明のいくつかの実施形態に従ってモバイルコンピューティングデバイスとエンタープライズコンピュータシステムとの間における通信を容易にするためのコンピューティング環境100のブロック図を示す。説明の目的のため、さまざまな例が、本明細書において、モバイルコンピューティングデバイス(たとえば、コンピューティングデバイス202)がクラウドエンタープライズコンピュータシステム240(たとえば、「serviceprovider.com」)およびオンプレミスのエンタープライズコンピュータシステム250などの1つ以上のエンタープライズコンピュータシステムと通信することを可能にするための技術を記載するよう、与えられる。そのような通信は、エンタープライズデータを交換もしくは転送すること、エンタープライズコンピュータシステムによって与えられるサービスを要求すること、メッセージを通信すること、またはそれらの組合せであってもよい。
メッセージは、サービス呼出しメッセージ、結果メッセージ、要求メッセージ、内部で通信される他のメッセージ、コンピューティングデバイスとエンタープライズコンピュータシステムとの間において通信される他のメッセージ、またはそれらの組合せを含んでもよい。メッセージは、メッセージタイプ(たとえば、1組の共有されるタイプ定数からのタイプ値)、相関id(たとえば、このメッセージを1つ以上の他のメッセージと相関付けるよう用いられるid)、優先順位に基づくメッセージキューについてサポートするための優先順位情報、タイムアウト、メッセージデータ分離をサポートする秘密度表示子、メッセージ源(たとえば、送信側のユニフォームリソース識別子)、メッセージ宛先(たとえば、宛先を一意に識別するユニフォームリソース識別子)、要求コンテキスト(たとえば、ディスパッチャからの要求情報)、および/またはメッセージペイロードを含んでもよい。ペイロードは、パラメータデータおよび結果データなどの、送信されているメッセージのタイプによって、異なる属性を有してもよい。
本明細書に記載されるエンタープライズデータは、エンタープライズコンピュータシステムから受信されるデータ、エンタープライズコンピュータシステムに送信されるデータ、エンタープライズコンピュータシステムによって処理されるデータ、またはそれらの組合せを含んでもよい。エンタープライズデータは、消費者アプリケーションおよび/またはサービスに対するデータとは区別可能であってもよい。いくつかの実施形態では、たとえば、エンタープライズデータはエンタープライズデータの適用または使用に基づいて変化してもよく、一方、消費者アプリケーションに対するデータ(たとえば、消費者データ)は使用を通して静的なままであってもよい。特定の実施形態では、エンタープライズデータは、エンタープライズデータを記憶、使用および/または管理することに関する基準を示すルールを含むかまたはそのようなルールと関連付けられてもよい。たとえば、エンタープライズデータは、エンタープライズデータを記憶、使用および/または管理することに関する1つ以上のポリシーを示すポリシー情報と関連付けられてもよい。特定の実施形態では、ポリシー情報は、エンタープライズデータに含まれてもよい。特定の実施形態では、エンタープライズデータは、エンタープライズコンピュータシステムにおいて実行されるアプリケーションまたはサービスによって処理、記憶、使用または通信されるデータを含んでもよい。たとえば、エンタープライズデータは、エンタープライズアプリケーションからのJSON(JavaScript(登録商標)Object表記法)フォーマット化データ、構造化されたデータ(たとえば、キー値ペア)、非構造化データ(たとえば、アプリケーションによって処理または用いられる内部データ、JSONフォーマットにおけるデータ、ソーシャルポスト、カンバセーションストリーム、アクティビティフィードなど)、バイナリラージオブジェクト(BLOB)、ドキュメント、システムフォルダ(たとえば、サンドボックス環境におけるアプリケーション関連フォルダ)、REST技術(本明細書では「RESTフルなデータ」と称される)を用いるデータ(たとえば、RESTエンドポイントによって利用可能にされる同期データ)、システムデータ、構成データ、同期データ、またはそれらの組合せなどのビジネスデータ(たとえば、ビジネスオブジェクト)を含んでもよい。いくつかの実施形態では、エンタープライズデータは、RESTフォーマット化されたエンタープライズデータを含んでもよい。RESTフォーマット化されたエンタープライズデータは、RESTフルなデータを含んでもよい。RESTフォーマット化されたデータは、エンタープライズコンピュータシステムによって実現されるREST技術に従ってフォーマットされるデータを含んでもよい。構成または同期データは、バージョン、履歴、統合データなどのようなエンタープライズデータの同期のために用いられるデータを含んでもよい。エンタープライズデータにおけるドキュメントは、XMLファイル、ビジュアルアセット、構成ファイル、メディアアセットなどを含んでもよい。BLOBは、画像、マルチメディアオブジェクト、もしくは実行可能コード、またはそれ以外の場合には当該技術分野において公知のような、データベース管理システムにおいて単一のエンティティとして記憶されるバイナリデータの収集物を含んでもよい。
エンタープライズコンピュータシステムは、エンティティまたはエンタープライズのために動作するように構成されるさまざまなコンピューティングシステムを含んでもよい。たとえば、エンタープライズコンピュータシステムは、サービスに対する要求を処理するよう、エンタープライズサーバコンピュータ(たとえば、バックエンドサーバコンピュータ)などの、1つ以上のコンピュータシステムを含んでもよい。エンタープライズコンピュータシステムは、エンタープライズデータを用いて処理および/または動作が可能なアプリケーションおよび/またはサービスを含んでもよい。たとえば、エンタープライズコンピュータシステム250は、エンタープライズを管理または動作させるための1つ以上のサービスおよび/またはアプリケーションを提供してもよい。サービスは、顧客関係性管理(customer relationship management:CRM)、人的資本管理(human capital management:HCM)、人的リソース(human resource:HR)管理、サプライチェーン管理、エンタープライズ通信、電子メール通信、業務サービス、他のエンタープライズ管理サービスもしくはアプリケーション、またはそれらの組合せを含んでもよい。エンタープライズコンピュータシステム250は、1つ以上のサービスを提供するための専用の1つ以上のコンピュータシステムを含み得るが、これらに限定されない。いくつかの実施形態では、あるサービスを提供する異なるコンピュータシステムは各々、エンタープライズのオンプレミスにあってもよく、またはエンタープライズから遠隔地にあってもよい。いくつかの実施形態では、異なるサービスをサポートする複数の異なるコンピュータシステムは、エンタープライズのオンプレミスなどのような、単一の地理的な位置にあってもよい。図2に示される例では、オンプレミスのエンタープライズコンピュータシステム250は、HRシステム254およびCRMシステム256を含んでもよく、それらの両方がエンタープライズのオンプレミスに位置してもよい。いくつかの実施形態では、エンタープライズコンピュータシステム250は、エージェントシステム252を含むかまたは実現することによって、クラウドコンピュータシステム210と1つ以上のエンタープライズシステム254,256との間における通信を容易にするかまたは処理してもよい。クラウドエンタープライズコンピュータシステム240およびオンプレミスエンタープライズコンピュータシステム250などのようなエンタープライズコンピュータシステムについて、以下にさらに詳細に記載する。
コンピュータ環境200は、コンピューティングデバイス202と1つ以上のエンタープライズコンピュータシステムとの間における通信を容易にし得るセキュアな仲介コンピューティング環境として動作するよう実現されるMCS212を含んでもよい。なぜならば、コンピューティングデバイス202は、そのようなエンタープライズコンピュータシステムと通信するようには構成されないかもしれないからである。たとえば、いくつかのエンタープライズコンピュータシステムは、レガシーまたはバックエンドコンピュータシステムによってサポートされてもよい。そのようなシステムは、異なる通信および/またはセキュリティプロトコルを用いて動作するよう構成されてもよい。そのようなエンタープライズコンピュータシステムによってサポートされるプロトコルは、モバイルコンピューティングデバイスによってサポートされるものとは異なってもよい。MCS212は、異なるタイプのモバイルコンピューティングデバイスとの通信をサポートしてもよい。したがって、MCS212は、エンタープライズコンピュータシステムとモバイルコンピューティングデバイスとの間における通信を容易にするよう、技術を実現して、それらが、フォーマットまたは通信プロトコル間における違いなどのような、それらの通信における非互換性にも係わらず、互いと通信できるようにしてもよい。たとえば、MCS212は、モバイルコンピューティングデバイスとエンタープライズコンピュータシステムとの間で通信プロトコルを翻訳し得る。
クラウドコンピュータシステム210はMCS212をサポートし得る。クラウドコンピュータシステム210は、ハードウェア、ソフトウェア、ファームウェア、またはそれらの組合せを用いて実現されてもよい。たとえば、クラウドコンピュータシステム210は、サーバコンピュータなどのような1つ以上のコンピューティングデバイスを含んでもよい。クラウドコンピュータシステム210は1つ以上のメモリ記憶装置および1つ以上のプロセッサを含んでもよい。メモリ記憶装置は、プロセッサにとってアクセス可能であり得、そこに記憶される命令を含むことができ、それらは、プロセッサによって実行されると、プロセッサに本明細書に開示される1つ以上の動作を実行させる。いくつかの実施形態では、メモリ記憶装置はローカルストレージ(たとえばキャッシュ)として動作してもよい。クラウドコンピュータシステム210は異なる種類のオペレーティングシステムを含んでもよい。メモリ記憶装置はプロセッサにとってアクセス可能であってもよく、そこに記憶される命令を含んでもよく、それらは、プロセッサによって実行されると、プロセッサに本明細書に開示される1つ以上の動作、方法またはプロセスを実行させる。メモリ記憶装置はローカルストレージとして動作してもよい。ローカルストレージは、メモリ記憶装置または他のコンピュータ読取可能記憶媒体などのような任意のタイプの永続的な記憶装置を用いて実現されてもよい。いくつかの実施形態では、ローカルストレージは、1つ以上のデータベース(たとえばドキュメントデータベース、リレーショナルデータベースまたは他のタイプのデータベース)、1つ以上のファイルストア、1つ以上のファイルシステム、またはそれらの組合せを含むかまたは実現してもよい。ローカルストレージはエンタープライズデータを記憶してもよい。
特定の実施形態では、クラウドコンピュータシステム210は、メタデータリポジトリ224、診断法ストア126および解析論ストア228などの1つ以上のデータストアを含んでもよい。データストア224,226,228は、クラウドコンピュータシステム210におけるいずれのコンポーネントによってアクセス可能であってもよい。
メタデータリポジトリ224は、MCS212に関連付けられるすべてのメタデータを記憶してもよい。この情報は、実行時データおよび設計時データの両方からで構成されてもよく、それらの各々は利用可能性および性能の両方においてそれら自身の要件を有する。MCS212のテナントまたはサブスクライバは任意の数のアプリケーションを有してもよい。各アプリケーションはバージョン化されてもよく、それらのリソースAPIが契約する、関連付けられる0以上のバージョン化されたリソースAPIおよび0以上のバージョン化されたサービスインプリメンテーションを有してもよい。これらのエンティティは、実行時が使用して仮想要求(mAPI)を具体的なサービスインプリメンテーション(サービス)にマッピングするものである。このマッピングは、モバイル開発者が自身のアプリケーションを設計および構築する際に実際のインプリメンテーションサービスを知る必要がないため、モバイル開発者にとって贅沢なものである。さらに、すべてのサービスバグ修正において新たなアプリケーションを再発行する必要もない。メタデータリポジトリ224は1つ以上の呼出し可能インターフェイスを記憶してもよく、それらはコンピューティングデバイス(たとえばコンピューティングデバイス202)によって呼出されてもよい。呼出し可能インターフェイスは、MCS212との通信を容易にするよう、アプリケーションのユーザ(たとえば開発者)によってカスタマイズ可能であってもよい。メタデータリポジトリ224は、呼出し可能インターフェイスの1つ以上の構成に対応するメタデータを記憶してもよい。メタデータリポジトリ224は、呼出し可能インターフェイスを実現するためのメタデータを記憶するように構成されてもよい。呼出し可能インターフェイスは、通信のための1つのフォーマット、プロトコルまたはアーキテクチャのスタイルと通信のための他のフォーマット、プロトコルまたはアーキテクチャのスタイルとの間において翻訳するよう実現されてもよい。メタデータリポジトリ224は、認証されたユーザによって、外部のネットワークを介して修正可能であってもよい。
診断法ストア226は、MCS212において生じる処理についての診断法情報を記憶してもよい。診断法ストア226は、MCS212を介して通信されるメッセージおよびログ情報を記憶してもよい。解析論ストア228は、システムにおける処理中に捕捉されたロギングおよび解析論データを記憶してもよい。
MCS212の代わりに、クラウドコンピュータシステム210はその計算リソースを利用してカスタムコード216(たとえば動作、アプリケーション、方法、ファンクション、ルーチンなど)の実行を可能にし得る。計算リソースは、使用のために、MCS212のサブスクライバまたはテナントとして関連付けられる特定のユーザに関して、割当てられてもよい。リソースは、ユーザ、デバイス、アプリケーション、またはサブスクライバに関係付けられる他の基準に関して割当てられてもよい。MCS212は、エンタープライズコンピュータシステムと通信することを求めるモバイルコンピューティングデバイスの要望に応じて、スケールインまたはスケールアウトされてもよい。MCS212は、モバイルコンピューティングデバイスとエンタープライズコンピュータシステムとの間における通常のトラフィックよりも高いサージおよび一時的な期間を処理するよう柔軟性をもつように構成され得る。いくつかの実施形態では、MCS212は、通信における要望を満足させるようコンポーネントが追加または置換され得るようにスケーラビリティをサポートする要素を含んでもよい。
コンピューティングデバイス202は、エンタープライズコンピュータシステムによって提供されるサービスを要求するようにMCS212と通信してもよい(たとえば要求メッセージを送信してもよい)。コンピューティングデバイス202(たとえばモバイルコンピューティングデバイス)は、ハードウェア、ファームウェア、ソフトウェアまたはそれらの組合せを用いて実現されてもよい。コンピューティングデバイス202は、MCS212を介してエンタープライズコンピュータシステム240,250と通信してもよい。コンピューティングデバイス202は、エンドポイントデバイス、PDA、タブレットコンピュータ、ラップトップコンピュータ、モバイルコンピューティングデバイス、デスクトップコンピュータ、ウェアラブルコンピュータ、ページャなどを含んでもよく、またはそれらとして実現されてもよい。コンピューティングデバイス202は、1つ以上のメモリ記憶装置および1つ以上のプロセッサを含んでもよい。コンピューティングデバイス202は、異なる種類のオペレーティングシステムを含んでもよい。メモリ記憶装置はプロセッサにとってアクセス可能であってもよく、そこに記憶される命令を含んでもよく、それらは、プロセッサによって実行されると、プロセッサに本明細書に開示される1つ以上の動作、方法またはプロセスを実行させる。メモリ記憶装置はローカルストレージとして動作してもよい。ローカルストレージは、メモリ記憶装置または他のコンピュータ読取り可能記憶媒体などの任意のタイプの永続的な記憶装置を用いて実現されてもよい。いくつかの実施形態では、ローカルストレージは、1つ以上のデータベース(たとえばドキュメントデータベース、リレーショナルデータベースまたは他のタイプのデータベース)、1つ以上のファイルストア、1つ以上のファイルシステム、またはそれらの組合せを含むかまたは実現してもよい。ローカルストレージはエンタープライズデータを記憶してもよい。
さまざまな実施形態では、コンピューティングデバイス202は、ウェブブラウザ、クライアントアプリケーション、所有権付きクライアントアプリケーションなどの1つ以上のアプリケーションを実行および動作させるよう構成されてもよい。アプリケーションは、エンタープライズコンピュータシステムによって提供されるエンタープライズデータおよび/またはサービスのために構成される特定のアプリケーションを含み得る。クライアントアプリケーションは1つ以上のネットワークを介してアクセス可能であるかまたは動作されてもよい。アプリケーションは、アプリケーションを動作させるためのグラフィカルUI(GUI)を含んでもよい。
コンピューティングデバイス202は、MCS212と、1つ以上の通信ネットワークを介して、無線通信を用いて通信してもよい。通信ネットワークの例は、モバイルネットワーク、無線ネットワーク、セルラーネットワーク、LAN、ワイドエリアネットワーク(WAN)、他の無線通信ネットワーク、またはそれらの組合せを含んでもよい。特定の実施形態では、コンピューティングデバイス202は、MCS212との通信接続114を、カスタム通信プロトコル(たとえばカスタムプロトコル)を用いて確立してもよい。接続214が、クラウドコンピュータシステム210を介してMCS212と確立されてもよい。カスタムプロトコルはHTTPベースのプロトコルであってもよい。カスタム通信プロトコルを利用することによって、コンピューティングデバイス202は任意のコンピューティングデバイスプラットフォーム上で動作してクラウドコンピュータシステム210と通信してもよい。
コンピューティングデバイス202は、たとえばAPIである、1つ以上の呼出し可能インターフェイスを介して、クラウドコンピュータシステム210と通信してもよい。呼出し可能インターフェイスはコンピューティングデバイス202上において実現されてもよい。呼出し可能インターフェイスは、MCS212と通信することができるカスタムアプリケーションに対して実現されてもよい。いくつかの実施形態では、呼出し可能インターフェイスはMCS212のために開発されてもよい。呼出し可能インターフェイスは、アプリケーションが、プロトコル(たとえば通信プロトコルもしくは開発プロトコル)および/またはアーキテクチャのスタイルもしくはフォーマットにおける違いに適合する必要なしに、MCS212と通信することを可能にしてもよい。
MCS212は、要求を処理しカスタムコード216を実行するようセキュリティ上安全な環境を与えるように1つ以上のファイアウォール204,230によって保護されてもよい。コンピューティングデバイス202とMCS212との間における通信は、外部通信ファイアウォール204によって分離されてもよい。ファイアウォール204は、MCS212へのセキュリティ上安全なアクセスを容易にするようにクラウドコンピュータシステム210と接続されてもよい。ファイアウォール204は、クラウドコンピュータシステム210とコンピューティングデバイス(たとえばコンピューティングデバイス202)との間におけるメッセージの通信を許可してもよい。そのようなメッセージ(たとえばHTTPメッセージまたはRESTメッセージ)は、呼出し可能インターフェイスによってサポートされ得る通信プロトコル(たとえば、HTTPまたはREST)に準拠し得る。別の例では、クラウドコンピュータシステム210とコンピューティングデバイス202との間におけるメッセージは、SPDYなどの通信プロトコルに準拠してもよい。MCS212は、クラウドコンピュータシステム210とエンタープライズコンピュータシステム240,250との間における通信をセキュリティ上安全にするようにファイアウォール230を管理してもよい。ファイアウォール230は、クラウドコンピュータシステム210とコンピューティングデバイス(たとえばコンピューティングデバイス202)との間におけるメッセージの通信を許可してもよい。そのようなメッセージ(たとえばSPDYメッセージ、HTTPメッセージまたはRESTメッセージ)は、通信プロトコル(たとえばSPDY、HTTPまたはREST)に準拠してもよい。コンピューティングデバイス202とエンタープライズコンピュータシステム240,250との間における通信はMCS212を介する二方向であってもよい。
コンピューティングデバイス202およびエンタープライズコンピュータシステム240,250との通信がセキュリティ上安全ではないパブリックなネットワークを介して行われる可能性があるので、ファイアウォール204,230は、MCS212へのおよびMCS212からの通信に対して追加の保護層を与える。ファイアウォール204,230は、MCS212が、その内部ネットワークと、コンピューティングデバイス202およびエンタープライズコンピュータシステム240,250を接続する外部ネットワークとを区別することを可能にし得る。いくつかの実施形態では、ファイアウォール204,230は、2つの別個のファイアウォールとして示されるが、MCS212を封入する単一のファイアウォールとして実現されてもよい。
クラウドコンピュータシステム210はさらに、一部が異なる通信プロトコルを有し得るエンタープライズコンピュータシステムと通信することによって仲介コンピューティング環境として動作してもよい。そのような通信プロトコルは、クラウドコンピュータシステム210との通信において、あるアプリケーションまたはサービスに対してカスタムであるかまたは特定であってもよい。さらにクラウドコンピュータシステム210は、エンタープライズコンピュータシステムと通信して、エンタープライズサービスを提供し、および/または、エンタープライズコンピュータシステムによってサポートされるフォーマットに従ってエンタープライズデータを交換してもよい。クラウドコンピュータシステム210は、エンタープライズデータのローカルストレージ(たとえば、ローカルキャッシュ)を維持してもよく、そのローカルストレージを用いてモバイルコンピューティングデバイスとエンタープライズコンピュータシステム240,250との間におけるエンタープライズデータの同期を管理してもよい。
コンピューティングデバイス202は、MCS212と通信(たとえば、要求メッセージを送信)して、エンタープライズコンピュータシステムによって提供されるサービスを要求してもよい。ファイアウォール204を介して受信された要求は、最初にセキュリティサービス232によって処理されてもよい。セキュリティサービス232は、要求に関連付けられるユーザに関してセキュリティ認証を管理してもよい。したがって、クラウドコンピュータシステムは、顧客通信およびエンタープライズデータの保全性を保護し得る、本明細書に記載されるセキュリティ機構を提供することを含む技術的利点を提供し得る。クラウドコンピュータシステムの技術的利点は、損なわれた通信および/またはデータが損なわれることを防止または低減することを含んでもよく、認証が最初に生じて、アクセスを、必要とされる資格情報を有するもののみに対して制限してもよい。クラウドコンピュータシステムの技術的利点は、サービスおよびサービス呼出しフローが、要求が入来するとそれらはそれらが承認されるサービスにアクセスすることのみが許可され得るように構造化されることを含んでもよい。システム処理の他の部分から承認を切り離すことによって、別の技術的利点は、「何が誰によってなされ得るか」を承認するタスクが、特定の法人顧客によって必要とされるさらなるカスタムセキュリティ手段が何であれ、それをサポートするよう拡張され得る専用のプロビジョニングされたセキュリティサブシステム(たとえばアイデンティティ管理システム)に委任されることを含んでもよい。いくつかの実施形態では、セキュリティ認証は、要求、セッション、ユーザ、デバイス、ユーザに関係付けられる他の基準、またはそれらの組合せに関して判断されてもよい。セキュリティ認証は、受信される要求ごとに実行されてもよい。いくつかの実施形態では、セキュリティサービス232は、以前の要求の検証に基づいて認証を判断してもよい。セキュリティ認証は、ユーザまたは装置に関して、異なるエンタープライズコンピュータシステム240,250に対する要求が単一のセキュリティ検証に基づいて認証され得るように、判断されてもよい。
本発明のさらなる技術的利点は、一部が異なったように実現され得るさまざまなエンタープライズコンピュータシステムとコンピューティングデバイスが通信することをクラウドコンピュータシステムが可能にすることを含み得る。たとえば、コンピューティングデバイス202、クラウドコンピュータシステム210およびエンタープライズコンピュータシステム250は、互いから物理的に分離された異なる地理的位置に位置してもよい。したがって、コンピューティングデバイス202は、エンタープライズコンピュータシステム250と、それらの位置にかかわらず、通信することができる。技術的利点は、1つ以上の別個のセキュリティプロトコルをサポートし得るエンタープライズコンピュータシステムにサービスに対する要求をコンピューティングデバイスが通信することをクラウドコンピュータシステムが可能にすることを含み得る。場合によっては、エンタープライズコンピュータシステムは、異なるセキュリティプロトコルに容易に適合可能ではないバックエンドシステムによってサポートされてもよい。場合によっては、アプリケーションの開発者が、そのようなセキュリティプロトコルの知識なしにサービスを要求することができるようにアプリケーションを実現できることが望ましいであろう。同様に、エンタープライズコンピュータシステムのユーザ(たとえば、管理者または設計者)が、異なるタイプのアプリケーション、セキュリティプロトコルおよび規格に対応することなく要求を受信できることも望ましいであろう。技術的利点は、要求されているさまざまなエンタープライズコンピュータシステムのセキュリティ対策を要求が満たすことができるように、セキュリティ認証を処理することができる本明細書に記載のクラウドコンピュータシステムを実現することによって、そのような要望が満たされることを可能にし得る。
いくつかの実施形態では、セキュリティサービス232は、要求されたエンタープライズコンピュータシステムについてのセキュリティプロトコルを判断して、それに応じて、そのようなセキュリティプロトコルに従ってセキュリティトークンを生成してもよい。セキュリティトークンは、生成されたセキュリティトークンに基づいてエンタープライズコンピュータシステムが認証を検証することを可能にするために、要求とともに当該エンタープライズコンピュータシステムに渡されてもよい。エンタープライズコンピュータシステムは、異なるセキュリティプロトコルをサポートしてもよい。セキュリティプロトコルは、セキュリティが判断される規格であってもよい。セキュリティは、セキュリティサービス232によって生成されるセキュリティトークンに基づいて検証されてもよい。セキュリティサービス232は、要求に対して識別されるエンタープライズコンピュータシステムのためのセキュリティプロトコルを判断してもよい。いくつかの実施形態では、エンタープライズコンピュータシステム250は、MCS212によってサポートされるカスタムまたは特定のセキュリティプロトコルに従って構成または実現され得るエージェントシステム252を有してもよい。したがって、MCS212は、そのようなカスタムセキュリティプロトコルに従ってセキュリティトークンを生成してもよい。
クラウドコンピュータシステム210は、1つ以上の負荷分散システム206,208を含み、実現し、および/またはそれ(ら)と通信してもよい。セキュリティ認証を判断すると、クラウドコンピュータシステム210は負荷分散システム206,208のうちのいずれか1つに対して、それが受信する要求を調べ、要求がどのサービスに向けられているかを検出するよう要求してもよい。MCS212は、負荷分散部206,208とともに構成されてもよく、起動されるリソースで更新されてもよく、したがって、要求が入来すると、負荷分散部206,208は要求される負荷を異なるリソースにわたって分散させることができる。
クラウドコンピュータシステム210は、要求を処理し、それらを適切なサービスに発送し得るディスパッチャ218を含んでもよい。要求は、発送されると適切なサービスにルーティングされ得る。いくつかの実施形態では、サービスそれ自体が、内部の要求を、MCS212またはエンタープライズコンピュータシステムにおける別の内部のサービスにルーティングしてもよい。いくつかの実施形態では、ディスパッチャ218は要求を解決して、その宛先を、要求のURIおよび/またはURLにおいて識別される宛先の位置(たとえばアドレス)に基づいて判断してもよい。ディスパッチャ218は要求およびそのヘッダを構文解析して、以下の情報:テナント識別子、サービス識別子、アプリケーション名、アプリケーションバージョン、要求リソース、動作およびパラメータなどの1つ以上を抽出してもよい。ディスパッチャ218は、構文解析された情報を用いて、メタデータリポジトリ224における参照を実行することができる。ディスパッチャ218は対応するアプリケーションメタデータを検索してもよい。ディスパッチャ218は、目標のサービスを、要求されたリソースおよびメタデータにおけるマッピングに基づいて判断してもよい。最初は非常に基本的なマッピングであるが、メタデータを向上させて、より洗練された、ルールに基づく発送を行うことができる。ディスパッチャ218は、任意のディスパッチャ特有のロギング、メトリック収集などを実行してもよい。ディスパッチャ218は、次いで、初期承認をアプリケーションメタデータに従って実行してもよい。ディスパッチャ218は、インバウンドの要求および任意の他の必要な情報をフォーマットし、メッセージをさらなる処理のためにルーティングバス220上に配置してもよい。ディスパッチャ218は、要求をキュー上に配置して、対応の応答を待ってもよい。ディスパッチャ218は、ルーティングバス220から受信される応答を処理し、応答をコンピューティングデバイス202に返してもよい。
外部の要求に対する発送を処理することに加えて、ディスパッチャ218は、さらに、内部の要求を発送する役割を果たしてもよい。そのような内部の要求は、サービスに対する合成サービスまたはカスタムコード呼出しの形式で受信することができる。両方の場合において、呼出し元は、アプリケーション内において定義される論理上のサービス名を用い得る。ディスパッチャ218は、現在の実行コンテキストを用いてアプリケーションを判断し、その論理名を用いて、呼出すべき適切なサービスを判断してもよい。
クラウドコンピュータシステム210は、ルーティングバス220に登録された宛先に対するメッセージの配送を管理するようルーティングバス220を含んでもよい。ルーティングバス220は、クラウドサービス212において通信を管理するための中央システムとして動作してもよい。ルーティングバス220を介して通信されるデータは、そのデータを捕捉および記憶するよう処理されてもよい。ルーティングバス220は、さらなる中央集中化されたサービス(さらなる承認、デバッグなど)が必要に応じて容易にプラグインされ得るように、フレームワークを与えてもよい。ルーティングバス220によって捕捉されたデータは診断法ストア226および/または解析論ストア228に記憶されてもよい。
ルーティングバス220はメッセージを1つ以上の宛先にルーティングしてもよい。いくつかの実施形態では、メッセージは、カスタムコード216を実行するようにとの要求を含み得る。そのような実施形態では、ルーティングバス120は、カスタムコード216を呼出すよう要求してもよい(234)。いくつかの実施形態では、ルーティングバス220は、要求における情報によって識別される宛先エンタープライズコンピュータシステムに要求を渡してもよい。ルーティングバス220は、必要であればアダプタインターフェイス222に対して翻訳を実行するよう要求して(236)、要求をエンタープライズコンピュータシステム、たとえばエンタープライズコンピュータシステム240またはエンタープライズコンピュータシステム250に渡してもよい。
特定の実施形態では、クラウドコンピュータシステム210は、アダプタインターフェイス222を含むかまたはそれを実現して、メッセージを、受信側エンタープライズコンピュータシステムによってサポートされるプロトコルに翻訳または変換してもよい。アダプタインターフェイス222は、エンタープライズコンピュータシステム240,250の各々と、別々の通信接続を確立してもよい。クラウドコンピュータシステム210は、エンタープライズコンピュータシステム240,250と、1つ以上のネットワーク(図示せず)を介して通信するよう構成されてもよい。通信ネットワークの例は、インターネット(登録商標)、モバイルネットワーク、パブリックネットワーク、無線ネットワーク、セルラーネットワーク、LAN、WAN、他の通信ネットワーク、またはそれらの組合せを含んでもよい。特定の実施形態では、通信接続は、高速通信トランクを用いて促進される高速通信接続であってもよい。エンタープライズコンピュータシステム240,250との通信はファイアウォール230を通過してもよく、それによって、外部ネットワークとの通信はそのような通信を介するMCS212に対する未承認アクセスを妨げるようセキュリティ上安全であることが確実とされる。
いくつかの実施形態では、クラウドコンピュータシステム210はコンピューティングデバイス202のユーザに対する通知を容易にし得る。クラウドコンピュータシステム210は、ユーザとのステートフルな対話をサポートする警報管理サービスを含んで、たとえば、ユーザの好みに基づく警報を1つ以上のチャネルを介して送り、応答を待ち、その応答に基づくアクションを取ってもよい。1つのチャネルで送られた警報に対する応答は、サービスが取扱うことができる必要のある別のチャネルを介して受信されてもよい。プラットフォームは、ポピュラーな対話パターンのための内蔵型の状態モデルとともに搭載され、新たな状態モデルで拡張可能であり得る。いくつかの警報チャネルは、一方向であれ二方向であれ、公知の通信リソースを含んでもよい。例は、SMS、ツイッター(登録商標)、プッシュ通知、およびGoogle Cloud Messaging(登録商標)を含む。
いくつかの実施形態では、クラウドコンピュータシステム210は、コンピューティングデバイスが、オブジェクトストアサービス、データベースサービス、アクセスウェブサービス、ソーシャルサービス、リソースサービス、またはそれらの組合せなどの1つ以上のサービスにアクセスするおよび/またはそれらを要求することを可能にし得る。
クラウドコンピュータシステム210は、BLOBのためのストレージファシリティを提供し得るオブジェクトストアサービスを提供してもよい。基本的な記憶の単位はテキストであり得、読取動作および書込動作を伴う。JSONオブジェクトに対する基本的なクエリーファシリティも提供され得る。
クラウドコンピュータシステム210は、データベースサービスを提供して、クエリまたは書込を実行するために、ホストされるデータベースへの接続性を可能にし得る。必要とされるパラメータ化は、データベースに対する十分な接続ストリング、実行すべきSQLストリングまたは記憶される手順、任意のパラメータ、および場合によっては資格情報を必要とする可能性もある。必要な情報は、実行時に与えられ得るか、またはアプリケーションメタデータにおいて予め構成され得る。
クラウドコンピュータシステム210は、SOAPウェブサービスなどのウェブサービスへのアクセスを提供し得る。クラウドコンピュータシステム210は、任意のRESTリソースへの接続性などのRESTサービスへのアクセスを提供し得る。
クラウドコンピュータシステム210は、ソーシャルサービスへのアクセスを提供してもよく、それは、フェースブック(登録商標)、ツイッター(登録商標)などのような人気のあるソーシャルサイトの多くとの基本的な統合をもたらし得る。これらのサービスは、それらのサイトからのユーザの資格情報を用いる第三者認証およびそれらのサービスに対するアクセスを可能にしてもよい。例は、ツィートを送信するかまたは貴方のステータスを更新することを含む。
クラウドコンピュータシステム210は、パブリッククラウドサービスを提供して、ユーザが通信を簡単にして最適化することを可能にし得る。たとえば、サービス開発者は、MCS212の包括的なウェブサービスを用いて、クラウドコンピュータシステム210のクラウドサービスを用いてホストされるリソースに話し掛けてもよい。
本明細書に記載されるものなどのクラウドコンピュータシステムは、コンピューティングリソースにおける違いにもかかわらずモバイルコンピューティングデバイスがエンタープライズコンピュータシステムと通信することを可能にし得る。クラウドコンピュータシステムは、頻繁に通信してエンタープライズデータを受信するために、より多くのリソースおよびエンタープライズコンピュータシステムとのより高速で信頼性のある接続を備えてもよい。クラウドコンピュータシステムは、エンタープライズコンピュータシステムからのサービスに対する要求を管理および調整してもよい。要求をメッセージの受信側によってサポートされるプロトコルに翻訳することによって、クラウドコンピュータシステムは、異なるタイプのバックエンドコンピュータシステムとの通信のためのアプリケーションを構成するための開発者に対する負担を低減する。エンタープライズは、モバイルデバイスについてサポートされる通信プロトコルの進歩または変化に対応する必要なく、それらのバックエンドシステムを維持することができる。異なるエンタープライズコンピュータシステムは、処理される要求のタイプおよび提供されるサービスのタイプに基づいて、異なるセキュリティプロトコルをサポートしてもよい。異なるエンタープライズコンピュータシステムへのアクセスについて中央集中化された態様でセキュリティ認証を管理することによって、エンタープライズコンピュータシステムは、セキュリティプロトコルにおける違いに適合する必要がなくなる。クラウドコンピュータシステムのユーザを認証することによって、処理要求はより効率的になり得る。なぜなら、認証はすべてのインスタンスでは実行されない可能性があるからである。
いくつかの実施形態においては、アプリケーションは、当該アプリケーションへのアクセスを制御し、オラクル社によるOracle MAFなどの極秘データの暗号化を確実にするために、内蔵型セキュリティを備えるモバイルアプリケーションフレームワーク(mobile application framework:「MAF」)の下でデプロイされてもよい。MAFは、ハイブリッドモバイルアーキテクチャであって、(ウェブビューにおいてUIをレンダリングするための)HTML5およびカスケーディング・スタイル・シート(Cascading Style Sheet:「CSS」)、(アプリケーション・ビジネスロジックのための)Java、および(GPSアクティビティおよび電子メールなどのデバイス特徴にアクセスするための)アパッチ・コルドバを用いる。MAFがこれらのクロスプラットフォーム技術を用いているので、如何なるプラットフォーム特有のツールを用いる必要なしに、アンドロイド装置およびiOS装置の両方のために同じアプリケーションを構築することができる。アプリケーションがデバイスにデプロイされた後、当該アプリケーションは、目標物CまたはアンドロイドSDKとしてこのようなプラットフォーム特有のツールを用いて作成されたアプリケーションとして機能する。さらに、MAFはスマートフォンまたはタブレットのために同じアプリケーションを構築することを可能にし、これにより、同じアプリケーションでのビジネスロジックを再利用し、さまざまなタイプの装置、画面サイズおよび能力をターゲットにすることが可能となる。
図3は、「重い(heavy)」アプリケーション(たとえば、アプリ・ストアから取得した通常のiPhoneアプリと同じ態様でモバイルデバイスに搭載されているモバイルアプリケーション)としてデプロイされる「WorkBetter」と称されるMAFアプリケーションを含むモバイルアプリケーション・スプリングボード300の一例を示す。MAFアプリケーションは、アプリケーション特徴として追加された1つ以上の埋込み型アプリケーションを含み得る。このような追加されたアプリケーション特徴は、メインアプリケーションのスプリングボードまたはナビゲーションバー内のアイコンとして表わされている。アプリケーション特徴は、本質的に、このようなモバイルアプリケーションの構築ブロックである。MAFアプリケーションに内蔵されているアプリケーション特徴は各々、特定セットのタスクを実行する。アプリケーション特徴は互いの機能を補完するために一緒にグループ化することができる。たとえば、顧客連絡先を提供するアプリケーション特徴は製品在庫についてのアプリケーション特徴と対にされてもよい。各々のアプリケーション特徴がそれ自体のクラスローダおよびウェブビューを有しているので、アプリケーション特徴は互いから独立しており、このため、単一のMAFアプリケーションはいくつかのさまざまな開発チームによって作成されたアプリケーション特徴からアセンブルすることができる。アプリケーション特徴も他のMAFアプリケーションにおいて再使用することができる。MAFアプリケーション自体は、別のアプリケーションのためのベースとして再使用することができ、独立系ソフトウェア会社(independent software vendor:「ISV」)が、特定の顧客によって構成可能なアプリケーションを作成することを可能にする。
デバイス上にローカルで実行されるハイブリッドモバイルアプリケーションに加えて、アプリケーション特徴は、モバイルアプリケーションおよび利用可能なリソースの要件に応じて、以下のモバイルアプリケーションタイプのいずれかとして実現されてもよい。
・サーバ上にホストされたモバイルウェブアプリケーション。これらのアプリケーションの場合、コードはプラットフォーム間でポータブルであり得るが、これらのアプリケーションがデバイスのブラウザによって管理されているので、デバイス特徴およびローカルストレージへのアクセスを制限することができる。
・Xcodeで、またはアンドロイドSDKによってオーサリングされ、このため、両方のプラットフォームのために機能するという点で制限されているネイティブアプリケーション。コードの再利用は同様に制限されている。
MAFは、或るアプリケーションにおける特徴レベルで、改良されたセキュリティのための認証およびアクセス制御をサポートする。このアプリケーションにおいては、開発者が、適切なログインサーバ、たとえば、基本的な認証で「オラクルアイデンティティ管理」および/または「Oracle WebLogic」を実行するサーバ、OAuthプロトコルをサポートするサーバなど、を指定することができる。実行時において、ユーザにログイン画面が提示され、適切なトークンがさらなるウェブサービス・コールにとってアクセス可能となる。MAFであれば、開発者は、さまざまな特権を有するユーザの必要性(たとえば、ユーザの役割または特権に基づいてコンポーネントを示す/隠す)を満たす単一のUIを構築することができる。
MAFは、SSL/TLS(HTTPセキュア(「HTTPS」))を用いる通信暗号化;オフライン認証をサポートする際に検証のために使用されるべき暗号化されたキーストアにおいてクレデンシャルを維持するためのデバイス上での暗号化;およびSQLite暗号化拡張を用いることによるSQLiteデータベース暗号化;を実施する。MAFで構築されたアプリケーションのためのSQLiteデータベースの暗号化は、アプリケーションが開発される際に、構成オプションによって実行されてもよい。いくつかの実施形態においては、MAFは、アプリケーションのための動作のオフラインモードおよびオンラインモードをサポートし、このため、自立型のアプリケーションを、接続モードでも、非接続モードでも、モバイルデバイス上で実行させることができる。データのアクセス/格納のために、このようなアプリケーションがローカルの暗号化されたSQLiteデータベースを利用してもよい。当該アプリケーションは、データに対する最初のアクセスがWebサービスを介してリモートサーバから実行され、次いで、データがオフラインアクセスのためにローカルのSQLiteデータベースに格納されるように、構築され得る。再び接続可能になると、データが複製されてサーバと同期させることができる。MAFはまた、保護されたアプリケーションに対するオフライン認証/認可を可能にするように、ユーザ認証クレデンシャルのローカルストレージをサポートする。
図3Aおよび図3Bは、本発明の一実施形態に従ったHRモバイルアプリケーションのUI302を示す。UI302は、図3のモバイルアプリケーションスプリングボード300などのスプリングボード上でアイコンを開くと提供され得る。図3Aにおいては、UI302は、従業員についてのさまざまなHR関連情報、たとえば、画像、タイトル、コンタクト情報、ソーシャル・ネットワーキング情報、性能/レーティング情報、補償情報、マネージャ、スキル、位置などを含む。図3Bは、UI302における情報が取得され得るさまざまなソース、たとえばオンプレミスまたはクラウドに位置するサービスなど、を示す。たとえば、基本的な従業員情報は、PeopleSoft、システム・アプリケーションおよび製品(Systems, Applications & Product:「SAP」)などのオンプレミスのコアHRサービスから取得されてもよく、位置情報はグーグルなどのマップサービスから取得される。同様に、性能情報は、TALEOなどの才能管理クラウドサービスから取得されてもよく、ソーシャル・ネットワーキング情報(たとえば、ツイッター(登録商標)、フェースブック(登録商標)、LinkedInなど)はウェブから取得されてもよい。一実施形態においては、これらのさまざまなソースからの情報が、モバイルデバイス上のアプリケーションまで送信される前にMCSを介して供給される。
図4は、デバイスにデプロイされる「薄型(thin)」の固有のコンテナを含む例示的なMAFランタイムアーキテクチャ400のブロック図である。ランタイムアーキテクチャ400は、モデル層およびコントローラ論理から表示を分離するMVC開発アプローチを表現する。細型の固有のコンテナは、ローカルのSQLiteデータベース、コルドバAPIおよびサーバ側リソースと対話することにより、MAFアプリケーションがさまざまなプラットフォーム(たとえばiOS、アンドロイドなど)上のネイティブアプリケーションとして機能することを可能にする。これによりプッシュ通知も可能になる。
デバイス固有のコンテナは、ウェブベースのコンテンツを表示して処理するためにモバイルデバイスのウェブエンジンを用いるウェブビューを含む。MAFアプリケーションにおいては、ウェブビューは、アプリケーションマークアップをHTML5としてレンダリングすることによりUIを提供する。UIは、以下のコンテンツタイプのうちのいずれかを実現することによってモバイルアプリケーション特徴のために作成され得る:すなわち、MAFアプリケーションモバイルXML(Application Mobile XML:「AMX」)ビュー、コントローラ、サーバHTMLまたはローカルHTMLである。さまざまなコンテンツタイプから実現されたアプリケーション特徴は、同じモバイルアプリケーション内で共存可能であり、かつ互いと対話することができる。
MAF AMXビューとして実現されるコンテンツを有するアプリケーションはデバイス上に常駐しており、デバイスのプラットフォームに特有の言語でオーサリングされるアプリケーションと同様に、最も信頼性のあるデバイス固有のユーザ経験を提供する。MAFは1セットのコードエディタを提供する。当該1セットのコードエディタは、ユーザが、モバイルデバイスのフォームファクタに適合されたコンポーネントから宣言的にUIを作成することを可能にする。これらのコンポーネントは、入力コンポーネント(たとえば入力フィールド)と同様にページレイアウト(たとえばリストビュー)を作成するために用いることができる。ユーザがMAF AMXビューを開発するとき、ユーザはデータ制御を利用することができる。これらのコンポーネントは、ユーザが、データにバインドされたUIコンポーネントを宣言的に作成し、ウェブサービスおよびモバイルデバイス(たとえばカメラ、GPSまたは電子メール)のサービスにアクセスすることを可能にする。実行時に、ウェブビューにおけるJavaScriptエンジンがMAF AMXビュー定義をHTML5およびJavaScriptにレンダリングする。
コントローラとして実現されているコンテンツを有するアプリケーションのために、コントローラは、モバイルアプリケーションにおけるページ間のフローを管理する。コントローラは、ユーザがアプリケーションのフローをより小さな再使用可能なタスクフローに分解し、メソッドコールおよび判定ポイントなどの非視覚的なコンポーネントを含むことを可能にする。
サーバHTMLとして実現されているコンテンツを有するアプリケーションのために、UIは、アプリケーション特徴のウェブビュー内で開くことができるサーバ生成型ウェブページから提供される。MAFのコンテキスト内では、このコンテンツタイプは遠隔URLと称される。これらのブラウザベースのアプリケーションのためのリソースはデバイス上に常駐していない。代わりに、UI、ページフローロジックおよびビジネスロジックはリモートサーバから提供される。遠隔でホストされたこれらのウェブアプリケーションのうちの1つがウェブビュー内で開くことが許可されると、それは、コルドバJavaScript APIを用いて、カメラまたはGPSの能力などの任意の指定されたデバイス固有の特徴またはサービスにアクセスすることができる。遠隔のURLコンテンツを用いてアプリケーションを実現する場合、ユーザは、モバイル用途のために最適化された既存のブラウザベースのアプリケーションを利用するか、または特定のタイプのモバイルデバイスについて具体的に書込まれたアプリケーションを使用することができる。デスクトップまたはタブレット上のブラウザ内で実行可能なアプリケーションの場合、ユーザは、オラクル社による「Oracle ADF Faces」によって提供されるようなリッチクライアントベースのコンポーネントを介して作成されたアプリケーションを用いて、遠隔のURLコンテンツを実現することができる。特に携帯電話をターゲットとしたアプリケーションの場合、遠隔のURLコンテンツは、MAFを用いて作成されたウェブページから提供することができる。MAFでオーサリングされたアプリケーションは、さまざまなスマートフォン上でレンダリングできるだけではなく、アパッチ・トリニダード(Apache Trinidad)JSFコンポーネントおよび動的に選択されたスタイル・シートで構築されたUIにより、フィーチャーフォン上で利用可能となる低い能力にまでグレースフルに質を低下させることができる。コンテンツが遠隔で供給されるので、アプリケーションは、サーバ接続がアクティブなままである限りにおいてのみ、利用可能である。
ローカルHTMLとして実現されているコンテンツを有するアプリケーションの場合、HTMLページはMAFアプリケーションの一部としてデバイス上で実行される。ローカルHTMLファイルは、コルドバおよびJavaScript APIによってデバイス固有の特徴サービスにアクセスすることができる。
デバイス固有のコンテナはさらにアパッチ・コルドバを含む。アパッチ・コルドバJavaScript APIは、デバイス固有の特徴およびサービスをモバイルアプリケーションに組込む。ユーザは、Javaコードからプログラムによって(または、ローカルHTMLとしてMAFモバイルアプリケーションを実現する場合にはJavaScriptを用いて)これらのAPIにアクセスすることができるが、ユーザは、MAF AMXページを作成する際にデバイスの組込みを宣言的に追加することができる。なぜなら、MAFが、これらのAPIを、データ制御に応じてパッケージングするからである。
デバイス固有のコンテナはさらにJava仮想マシン(Java Virtual Machine:「JVM」)を含む。JavaはMAFアプリケーションのためのJavaランタイム環境を提供する。このJVMは、デバイス固有のコードで実現され、固有のアプリケーションバイナリの一部としてMAFアプリケーションの各インスタンスに埋込まれる(またはコンパイルされる)。JVMはJavaME接続型装置構成(Connected Device Configuration:「CDC」)規格に基づいている。ランタイムアーキテクチャ400においては、JVMはビジネスロジック、モデルおよびJDBCを含む。Javaは、MAFアプリケーションにおいてビジネスロジックを可能にする。管理されたビーン(Managed Beans:「MBeans」)は、サーバから戻されたデータを処理するために追加のビジネスロジックを提供するなどの、MAFの能力を拡張するために作成することができるJavaクラスである。MBeansは埋込み型Javaサポートによって実行され、JavaME CDC規格に準拠する。モデルは、ビジネスロジック・コンポーネントをUIと接続するバインディング層を含む。加えて、バインディング層は、SOAPベースのウェブサービスを呼出すために実行論理を提供する。JDBCは、作成、読取り、更新、削除(Create, Read, Update and Delete:「CRUD」)動作によって、暗号化されたSQLiteデータベースにおけるデータにモデル層がアクセスすることを可能にするAPIである。
デバイス固有のコンテナが含んでいるアプリケーション構成はさらに、ウェブサービスまたは遠隔URL接続のためのURLエンドポイントなどの、複数のアプリケーション構成をダウンロードしてリフレッシュすることを可能にするサービスを参照する。アプリケーション構成サービスは、WebDavベースのサーバ側サービスから構成情報をダウンロードする。
デバイス固有のコンテナはさらに、クレデンシャル管理、シングルサインオン(Single Sign-on:「SSO」)およびアクセス制御を含む。MAFは、「オラクルアクセス管理モバイルおよびソーシャル」(Oracle Access Management Mobile and Social:「OAMMS」)IDM SDKによって、ユーザ認証およびクレデンシャル管理を処理する。MAFアプリケーションはオフライン認証を実行する。これは、接続中にユーザがアプリケーションにログインするとき、MAFがデバイス上でユーザ名およびパスワードをローカルに維持し、これにより、認証サーバへの接続が不可能になっていても、ユーザがアプリケーションにアクセスし続けることができることを意味している。MAFはローカルSQLiteデータベースに格納されたデータと同様にローカルに記憶されたユーザ情報も暗号化する。ログインサーバに対して認証した後、ユーザは、その接続によって保護されたアプリケーション特徴のすべてにアクセスすることができる。MAFはまた、ユーザの役割および特権を適用することによりアプリケーション特徴(またはアプリケーション特徴の特定の機能)へのアクセスを制限することによって、アクセス制御の概念をサポートする。ウェブ・コンテンツが遠隔で供給される場合、MAFは、意図したURIだけが、アプリケーション特徴のウェブビュー内で開き得ること(およびデバイス特徴にアクセスし得ること)を確実にするためにホワイトリストを用いる。
デバイス固有のコンテナはさらに、MAFアプリケーションがiOSまたはアンドロイドの通知サーバからイベントを受信することを可能にするプッシュハンドラを含む。Java層は通知処理に対処する。
ランタイムアーキテクチャ400においては、固有のコンテナと対話するリソースは、暗号化されたSQLiteデータベースおよびデバイスサービスを含む。埋込み型SQLiteデータベースは、ローカルに記憶されたデータを保護し、JDBCを用いて、モデル層によって呼出される。MAFアプリケーションはこの軽量のクロスプラットフォーム・リレーショナル・データベースを生成する。このデータベースが暗号化されているので、デバイスが紛失または盗難された場合でも、このデータベースはデータを保護する。正確なユーザ名およびパスワードを入力するユーザだけが、ローカルデータベースにおけるデータにアクセスすることができる。デバイスサービスは、デバイスに固有のサービスおよび特徴であって、コルドバAPIを介してアプリケーション特徴に組込まれている。
ランタイムアーキテクチャ400においては、デバイス固有のコンテナは、サーバ側リソース、たとえば、構成サーバ、サーバ生成型HTML、アップルプッシュ通知サービス(Apple Push Notification:「APN」)、グーグル・クラウド・メッセージ通信(Google Cloud Messaging:「GCM」)およびSOAPウェブサービスなどへのアクセスを可能にする。構成サーバは、アプリケーション構成サービスによって用いられる構成ファイルをホストするWebDavベースのサーバである。構成サーバは参照を実現するものとして提供される。J2EEサーバ上でホストされた如何なる共通のWebDavサービスもこの目的のための用いることができる。サーバ生成型HTMLは、ブラウザベースのアプリケーション特徴のために用いられるリモートサーバ上でホストされたウェブ・コンテンツを含む。APNおよびGCMプッシュサービスは、MAFアプリケーションに通知イベントを送信する通知プロバイダである。SOAPウェブサービスは遠隔でホストされたSOAPベースのウェブサービスである。これらのサービスはJava層を介してアクセスされる。MAF AMXにおいてオーサリングされたアプリケーション特徴は、データ制御によってSOAPベースのデータサービスにアクセスする。
図5は、本発明の実施形態に従った、モバイルクラウドインフラストラクチャにおけるモバイルアプリケーションを開発するためのシステム500のブロック図である。システム500においては、ユーザは、ユーザデバイス528を用いて、ウェブベースのツールを介してクラウドインフラストラクチャ506におけるアプリケーションを開発して構築してもよい。一実施形態においては、アプリケーションは無線でモバイルデバイス526上にダウンロードされ、これにより、アプリ・ストアの必要性を無くし得る。固有のアプリケーションはMCS502において作成されたバックエンド504と通信する。一実施形態においては、図4のMAFランタイムアーキテクチャ400はモバイルデバイス526にアプリケーションを提供するために用いられてもよい。一実施形態においては、アプリケーションの宣言的シンタックスが無線でモバイルデバイス526上にデプロイされ、この宣言的シンタックスは図4のMAFランタイムアーキテクチャ400によってモバイルデバイス526上で翻訳される。
クラウドインフラストラクチャ506は、アプリケーション開発が実行され得る管理(admin)UI516を提供するMCS502を含む。MCS502はさらに、モバイルアプリケーションが開発およびテストされ得る生産環境512およびテスト環境514をそれぞれ含む。これらの環境は、コネクタを介して対応するバックエンド504と通信することによって生産/テスト機能を提供する。アプリケーションは、環境514をテストする際に最初に開発される。当該アプリケーションは、公開されると、生産環境512に移動する。
一実施形態においては、モバイルアプリケーションは、セキュリティ層524を介してMCS管理(admin)UI516(ポータルとも称される)と通信するためにユーザデバイス528を用いることによって開発されている。MCS管理UI516は、MCS管理UI516を介してインターフェイス可能なアプリケーション開発サーバ518を含む。MCS管理UI516において開発されているアプリケーションは、生産環境512および/またはテスト環境514と通信することによって、ユーザデバイス528のブラウザ上でまたは、モバイルデバイス526上で、実行させることができる。一実施形態においては、アプリケーションがモバイルデバイス526上でデプロイされると、モバイルデバイス526はテスト環境514と通信する。しかしながら、アプリケーションがモバイルデバイス526上で更新される場合、このような更新はMCS管理UI516を介して実行される。
システム500において開発されているアプリケーションは、軽いアプリケーションまたは重いアプリケーションとして構築され得る。重いアプリケーションは、アプリ・ストアからダウンロードされるアプリなどの完全なアプリケーションである。軽いアプリケーションは、オラクルアプリなどの既にデプロイされている完全なアプリケーション(すなわちホスティング・アプリケーション)に追加された特徴としてデプロイされるアプリケーションである。ホスティング・アプリケーションは、軽いアプリケーションを保持するコンテナとして機能する。重いアプリケーションおよび軽いアプリケーションはともに、さらに、図7に関してこの明細書中に記載されたセキュリティコンテナによってコンテナ化され得る。
図6は、本発明の実施形態に従った、モバイルアプリケーションを構築するためのシステム600におけるネットワークコンポーネントのブロック図である。システム600においては、ユーザは、要求の構築を開始するためにMCSウェブサイトと対話する。モバイルデバイスは、固有のアプリケーションを無線でインストールするために、MCSポータルVMと通信する。これは、一般に、「.ipaファイル」をダウンロードするためのアプリケーションおよび位置を記述するplistファイルをダウンロードすることおよび「.ipaファイル」をダウンロードすることを含む2部プロセスである。
パブリックOHS/ウェブゲートは、トラフィックをファイアウォールの背後のMCSポータルVMに向けるパブリックフェイシングオラクルHTTPサーバ(Oracle HTTP Server:「OHS」)であり、また、ユーザを認証してユーザ・クレデンシャルをMCSポータルVMに渡す役割を担っている。パブリックOHSはSSL接続を終了させ、httpに関してポート443が用いられる。
MCSポータルVMは、スキーマ・アス・ア・サービスとして後援されているデータを有する標準的なウェブロジックサーバ(WebLogic Server:「WLS」)アプリケーションであり、その対応するアプリケーション開発クライアントはジェットフレームワークの上に書込まれている。これは単一のテナントであり、セキュリティはOWSMを介して提供される。MCSポータルVMは、信頼されたゾーンにおいてWLSを実行させる。これは、ユーザによる要求を処理し、BIG−IP機器を介してスキーマサービスおよび構築サーバファームに接続されている。これは、パブリックOHSへの/からの、BIG−IP機器への、および、サーバファームにおける個々のサーバからの、http通信のための開いているポート80(または同等物)を用いる。
スキーマサービスは、アプリケーションデータ、エンタープライズ署名証明書、テナントについてのプロビジョニングプロファイルを記憶する。それは単にMCSポータルVMと対話するだけである。
BIG−IPなどの負荷分散部は、(最初にラウンドロビン形式で)サーバファームにおけるサーバにファームタスクをルーティングする。これは開ポート80(または同等物)を用いて、冗長性を提供する。これは、MCSポータルVMへ/から接続され、サーバファームにおけるサーバに要求を転送する。
サーバファームは、構築ジョブを処理するいくつか(たとえば20個)のサーバを含む。これは、アプリケーションバイナリ(たとえば5TB)を記憶するためにファイラに接続される。接続は、サーバ上でローカルに実行されるローカルのTomcatインスタンスによって処理される。構築ツールおよびプロセスは、固有のOSXコールによって処理される。
アプリケーションの構築
一実施形態においては、ユーザがすでにアプリケーションを作成しており、固有のバイナリを生成することを所望している場合、ユーザは、(たとえばhttps://mcs-tenant-a.cloud.oracle.com/max/buildにおいて)UIに関する構築POST要求を開始する。ペイロードは、アプリケーションのためのアプリケーションidを含む。パブリックOHS/ウェブゲートは、要求を受取って、SSLを終了させ、(ユーザがログインすると想定して)OAMに対してユーザを認証および認可し、ユーザアイデンティティをhttpヘッダに配置し、これを、ファイアウォールを通りすぎてMCSポータルVMのWLSサーバ(たとえば、http://mcs-tenant-a.internal/max/buildにおいて実行される)に転送する。
MCSポータルVMは要求を受取り、アプリケーションデータ、テナント・エンタープライズ証明書、暗号化されたcertパスワードおよびテナントプロビジョニングプロファイルのためのテナントスキーマ・アズ・ア・サービスに対して、要求されたアプリケーションおよびクエリに関する特権を与えるようユーザを認可する。スキーマサービスが要求されたアイテムを戻すと、MCSポータルVMは、この試みを記録するために(スキーマサービスによって)BuildJobs表において新しいエントリを作成し、この新しい記録の主要キーをキャプチャする。MCSポータルVMはまた、(たとえばhttp://max-mini-farm.internal/build/initiateにおける)構築ファームのBIG−IP機器に対する新しいPOST要求を作成し、本体への3つのパラメータと、ジョブ完了のための(BuildJob記録の主要キーを符号化する)コールバックURLとを渡す。ペイロードの例は以下のとおりである:
applicationData: (app data)
signingCertificate: (cert) *
signingPassword: (password) *
provisioningProfile: (profile)
callbackUrl: http://mcs-tenant-a.internal:3000/maxbuild/complete?jobId=(BuildJobId)**
証明書およびパスワードは、この実施形態のためのユーザによって排他的に作成される(すなわち、他のサービスとは共有されない)。ポート3000はパブリックではアクセス不可能である。
BIG−IPは、サーバファームにおいて健全なサーバのリストを維持する。これは、数分ごとにサニティチェックを実行する健全性チェックによって行なわれる。これは、(たとえば複数のジョブが等しく複雑である場合にラウンドロビンを介して)健全なプールからサーバを選択し、ジョブ要求をそのサーバにルーティングする(たとえば、http://mac-mini1.internal/build/initiate)。
一実施形態においては、サーバファームにおけるサーバはサーバ上で実行されるTomcatを含む。それは、要求を受信し、外部プロセスを開始させる。これは、I/Oがスレッドプールの要求をブロックするのを防ぐために、非同期サーブレット上で実行される。
プロセスが完了すると、Tomcatは、要求ペイロードにおけるコールバックURLに対するPOST要求を作成する。この新しい要求のためのペイロードは以下を含む:
result: (success if successful, etc)
binaryKey: (jobId)
MCSポータルVMは要求を受取り、イベントが成功した場合には、所与のBuildJobs記録の行をペイロードからのbinaryKeyで更新する。これはまた、ジョブが完了した(たとえば、11g上のポーリングにより、サーブレットをプッシュするかまたは所定の12cと非同期させる)ことをクライアントに通知し、符号化されたリンクでQRコードを生成する(たとえば、https://mcs-tenant-a.cloud.oracle.com/max/native-application/(binaryKey))。
アプリケーションのインストール
一実施形態においては、ユーザがモバイルデバイス上のQRコードをスキャンすると、無線でのインストールが開始される。QRコードのスキャンにより、符号化されたURLが開かれる(たとえば、https://mcs-tenant-a.cloud.oracle.com/max/native-application/(binaryKey))。パブリックOHS/ウェブゲートは要求を受取り、SSLを終了させる。これは、(ユーザがログインすると想定して)OAMに対してユーザを認証および認可し、ユーザアイデンティティをhttpヘッダに配置し、これを、ファイアウォールを通過させてMCSポータルVMのWLSサーバに転送する(たとえば、http://mcs-tenant-a.internal/max/buildにおいて実行される)。
MCSポータルVMは要求を受取り、要求されたアプリケーションに対する特権についてユーザを認可する。これは、要求元デバイスのユーザ・エージェントを決定し、プラットフォーム(たとえばiOS)を識別し、対応するURL(たとえば、https://mcs-tenant-a.cloud.oracle.com/max/native-application/plist/(binaryKey))に転送する。これはまた、パブリックOHSに向けられ、これが、次いで、(この明細書中に記載される構築要求中に実行されるとおりに)最認可するようにMCSポータルVMに転送される。MCSポータルVMは要求を受取り、plistファイル(たとえばiOS plistファイル)を生成する。plistファイルは、対応するプラットフォーム(たとえばiPhone)についてのアプリケーション情報と、バイナリへのリンク(たとえば、https://mcs-tenant-a.cloud.oracle.com/max/native-application/ios/(binaryKey))とを含む。
デバイスは、次いで、アプリケーションをインストールすることを所望するかどうかをユーザに確認する。インストールすることを所望するのであれば、デバイスはバイナリリンクに追従する。これはまた、パブリックOHSに向けられ、これが、次いで、(この明細書中に記載される構築要求中に実行されるとおりに)再度認可するようにMCSポータルVMに転送される。MCSポータルVMは、要求を受取り、(たとえばhttp://max-mini-farm.internal/download/ios/(binaryKey)を介して)構築サーバファームに対する新しい要求を生成する。BIG−IPは、健全なプールから(たとえばラウンドロビンを介して)サーバファームにおけるサーバを選択し、そのサーバにジョブ要求をルーティングする(たとえばhttp://mac-mini1.internal/download/ios/(binaryKey))。そのサーバ上のアプリケーションサーバ(たとえば、Tomcat)が要求を受取り、コンテンツが存在するかどうかをチェックし、ネットワークからバイナリを配信する(たとえば、Filer:/filer_mnt/generated_binaries/(binaryKey)/result.ipa)。BIG−IPは、配信された応答をMCSポータルVMに戻し、当該MCSポータルVMは、その応答を受取り、デバイスに対するその要求の出力ストリームにコピーする。最後に、デバイスはバイナリを受取り、インストールを実行する。
図7は、OMSSなどのモバイルセキュリティ・スーツ700によって提供されるセキュリティサービスを用いる実施形態におけるモバイルセキュリティ・スーツ・コンポーネントのブロック図である。OMSSコンポーネントは、企業DMZおよびエンタープライズイントラネット(または企業ネットワーク)にわたって分散されており、オラクル社による「オラクルモバイル・セキュリティコンテナ」などのセキュリティコンテナがモバイルデバイスにインストールされる。セキュリティコンテナは、「コンテナ化された」アプリケーションを保持するように構成される。たとえば、これらのアプリケーションは、それらの特定のコンテナに安全にリンクされている。セキュリティコンテナは安全なブラウザ、ファイルマネージャ、文書エディタおよび任意のセキュアモバイルメールマネージャを含む。セキュアモバイルメールマネージャは、「Microsoft Exchange ActiveSync」(「EAS」)プロトコルを介して企業メールサーバと同期させるメールクライアント、カレンダ、連絡先、タスクおよび注記などの個人情報管理(personal information management:「PIM」)アプリケーションを含む。「オラクル・ビジネス・インテリジェンス」(Oracle Business Intelligence:「BI」)、「オラクル・フュージョン・タップ」、「オラクル・ソーシャル・ネットワーク」、「オラクル・エンタープライズ・マネージャ・クラウド制御」、「オラクル・ウェブセンター・スペース」などの多くのアプリケーション、および広範囲の第三者エンタープライズアプリケーションがセキュリティコンテナでコンテナ化することができる。モバイルデバイス上のコンテナ化されたアプリケーション内に残っているすべてのデータが暗号化される。暗号化されたデータストレージは、データベース、ファイルストア、キャッシュおよびユーザの好みを含む。一実施形態においては、AppTunnelを通じて移行されているデータが、連邦情報処理規格(Federal Information Processing Standard:「FIPS」)が認可したアルゴリズムでTLS/SSLを用いて暗号化される。
ウェブブラウザまたは他のクライアントプログラムがオラクル社による「オラクルモバイル・セキュリティ・アクセスサーバ」(Oracle Mobile Security Access Server:「MSAS」)などのセキュリティアクセスサーバに対して未認証の要求を行なう場合、セキュリティアクセスサーバは適切なセキュリティコンテナに対する転送でもって応答する。セキュリティコンテナは、データを保護するためにキー階層を用いる。すべてのキーは、記憶されていないユーザ・クレデンシャルから導き出される。キー階層は、データのさまざまな感度をサポートするための複数のキーを必要とする。たとえば、固有のキーは、ユーザの認証証明書のために用いられ、極短期間だけ開くことが許可される。異なるキーは、セッション全体について復号化されたままでなければならないブラウザキャッシュのために用いられる。主なセキュリティコンテナは、ユーザのセキュアなエンタープライズ・ワークスペースにおける一式のアプリのためのキーを分布させて管理する。
セキュアコンテナは、現在のモバイルの仮想プライベート・ネットワーク(virtual private network:「VPN」)ソリューションに勝る3つの特徴的な利点を有する。すなわち、デバイストラスト対ゲートウェイ;セキュアコンテナパスワード対デバイスパスワード;およびセキュアコンテナAppTunnel対デバイスレベルVPNである。OMSSは、DMZに搭載されているゲートウェイサーバで停止するのではなく、ユーザのデバイスまで直接的にネットワークのケルベロス認証トラストを延長する。OMSSはVPNプロバイダによって提供された、「制約付き委任」を実現する場合よりも著しく効率的でより安全である。制約付きの委任のソリューションは、安全性がより低いだけでなく、設定して維持するのがより面倒である。
さらに、消費者デバイスおよびBYODプログラムに対処する際に、有用性とセキュリティとの間の兼合いが拡大される。企業ITは、BYODデバイス上の企業データを保護するのに強力なパスワードを必要とする。逆に、ユーザは単純なパスワードを所望するか、または好ましくは、デバイスは全くパスワードを所望せず、このため、彼らユーザは、容易にソーシャルネットワークおよび他の消費者アプリケーションにアクセスすることができる。デバイスパスワードが必要になると、ユーザにとってはフラストレーションになる。なぜなら、彼らユーザは、常に、エンタープライズ認証を必要としない非エンタープライズ目的でデバイスを使用しているからである。実施形態は、企業アプリケーションにアクセスするためだけにパスワードを必要とすることによってBYODプログラムを扱う場合の、セキュリティと有用性との間に必要なバランスを提供する。
さらに、デバイスレベルのVPNは、ユーザのデバイスとエンタープライズのネットワークとの間に信頼できるセキュアなトンネルをもたらす。しかしながら、デバイスレベルのVPNソリューションは、消費者モバイルデバイスよりも、ラップトップなどの法人所有の保護されたエンドポイントデバイスにより適している。モバイルデバイスのVPNトンネルがネットワークに開通すると、デバイス上の如何なるアプリケーションもこのセキュアなトンネルにアクセスできる。これは巨大なセキュリティホールであって、危険につながる経路である。しかしながら、実施形態を用いる場合、モバイルデバイスからエンタープライズイントラネットまでの接続はセキュアコンテナとエンタープライズサーバとの間にのみ存在する。
MSASは、典型的には、企業DMZにおいてデプロイされており、複数のサーバインスタンスは、高い可用性およびスケーラビリティを得るために負荷分散部の背後にデプロイすることができる。MSASは、サーバとコンテナ化されたアプリとの間にトンネル接続を提供する。MSASは認証を仲介し(強力な認証は「オラクルアクセスマネージャ」(Oracle Access Manager:「OAM」)へのHTTPS接続またはケルベロス・ドメイン・コントローラへのケルベロス接続を利用する)、それらの宛先(企業イントラネットにおけるリソース)のためのSSOを認可し、監査し、使用可能にするとともに、それらの宛先に対する要求をプロキシする。MSASは、セキュリティコンテナおよびコンテナ化されたアプリケーションによって開始されたトンネル型接続の終端エンドポイントとして機能する。
オラクル社による「オラクルAPIゲートウェイ」(Oracle API Gateway:「OAG」)およびオラクル社による「オラクルウェブサービスマネージャ」(Oracle Web Services Manager:「OWSM」)は、組織のREST APIインフラストラクチャに対して、セキュリティ、脅威からの保護およびスロットリングポリシーを追加する。SSOは、OAuth、OAMトークン、ケルベロスおよびNT LANマネージャ(NT LAN Manager:「NTLM」)を介してサポートされる。SAMLは、オラクル(カリフォルニア州)などのSAMLアイデンティティ・プロバイダまたはPingアイデンティティに対してOAMまたはケルベロスを組込むことによってサポートされる。MSASは、OAMプラットフォームに組込まれ、OAM、OAGおよびOWSMによって保護されているバックエンドリソースに対するSSOのためのOAMおよびOAuthのトークンの検索をサポートする。MSASはまた、PINによって保護されているマイクロソフト・アクティブ・ディレクトリに対するPKI認証を実行することによって「仮想スマートカード」認証をサポートする。電子証明書はセキュリティコンテナアプリ内にプロビジョニングされ、PIN検証が成功した後にだけアクセスされる。OAMに組込まれたMSASはコンテキスト認識型でリスクベースのステップアップ認証を可能にする。
OWSMは、SOAスーツのコンポーネントであり、ウェブサービスベースのSOA保護および管理に対処する。SOAインフラストラクチャの目的は、消費者がプロバイダによって公開されたサービスを呼出すことを可能にすることである。OWSMは、このようなサービスインフラストラクチャのポリシー管理および保護のためのソリューションを提供する。それは、オラクル社から「オラクル・エンタープライズ・マネージャ」によって提供されている集中型管理インターフェイスによってポリシーの可視性および制御を提供する。OWSMは、企業が、(1)SOAインフラストラクチャを構成する複数のウェブサービスに適用された宣言的ポリシーを中心的に定義して記憶すること、(2)構成可能なエージェントを介して保護および管理ポリシーをローカルに実施すること、および、(3)失敗した認証または認可などの実行時セキュリティイベントを監視すること、を可能にする。それはまた、実行されているビジネスプロセスを中断する必要なしに、リアルタイムでポリシー変更を実施できるようにすることによって、セキュリティ脅威およびセキュリティ違反に対応するようなビジネスアジリティ(business agility)を提供する。
「オラクル・モバイル・セキュリティ・マネージャ」(Oracle Mobile Security Manager:「MSM」)は、オラクルLinuxまたはレッド・ハット・エンタープライズ(Red Hat Enterprise)Linux上で実行される「WebLogic」管理型サーバである。MSMはLDAPサーバと一体化されて、ユーザをプロビジョニングし、モバイルデバイス管理およびセキュリティコンテナへのアクセスのためのポリシーを割当てて管理し、アプリ・カタログを管理し、デバイスのリモートロックまたはワイプを制御し、ワークスペース・アプリをセキュリティ保護し(コンテナをワイプすることによって、ワークスペース・アプリのためのデータおよび構成をすべて削除し)、セキュリティコンテナのためのアクセス制御ポリシーを設定する。ポリシーは、ユーザおよびユーザ群にポリシーテンプレートを関連付けることによってユーザに割当てられる。利用可能なポリシー制御は、デバイス制限、認証(認証の頻度、失敗した試みのしきい値、PKIのためのPIN強度);カタログ(アプリ、URL、ファイル共有);コンテナ/アプリ(損なわれたプラットフォーム、位置サービス、オフライン状態、非活動期間、データリークの防止(data leak prevention:「DLP」));時間アクセス(時間窓外の場合にはロックする);地理的アクセス(Geo Access)(地理上フェンス(たとえば都市、州、国)外の場合にはロックする);デバイス(特定のデバイスモデルをホワイトリストに載せて、最小のOSレベルを指定する);ブラウザ(アドレスバーを使用不能にし、ダウンロード不能にする);ファイルブラウザ;(ダウンロードを許可/却下し、不能にし、ファイルサーバURLを指定する);PIM(メールサーバURL);プロビジョニング(テンプレートおよびPKI詳細を促す)を含む。ユーザが複数のグループ内にいて複数のポリシーを有する場合、ポリシーの組合せは以下の特定のルールに従って決定される。
MSMは、ディレクトリにおける1つ以上のユーザ群に関連付けられたEMMポリシーを維持する。MSMは、如何なるユーザまたはグループ管理をも実行せず、ディレクトリ・ストアからのこれらのアイデンティティおよびグループを直接(同期なしで)利用する。MSMは、HTTPSに関してAPNSおよびCGNを用いてデバイスに通知を送信する。MSMはまた、内部のCIFS/SMB対応のファイルシステムまたは「マイクロソフトシェアポイント(SharePoint)サーバ」にWebDAVフロント・エンドを公開し、クライアントからのブラウジング・イントラネット・ファイルの共有を可能にする。
ソーシャルネットワーク上にますます多くの組織の存在が確立されると、IT部門は、ソーシャルアイデンティティのためのサポートを必要とする。これは、エンタープライズ・アイデンティティよりも重みの少ないセキュリティ基準に依拠したものであるが、ソーシャルネットワークの要件により適切に適合されている。たとえば、いくつかのウェブサイトでは、ユーザが、それらのサービスに認証されるために、フェースブックまたはグーグルから得られたアクセストークンを提供することを要求される可能性がある。OAMMSは、既存のバックエンド・アイデンティティ管理インフラストラクチャとインターフェイスをとるサーバを含む。サーバは、サポートされたモバイルクライアント・アプリとバックエンドのアイデンティティサービスとの間の仲介物として機能する。これにより、バックエンド・インフラストラクチャからのクライアント・アプリが分離され、これにより、モバイルクライアントプログラムを更新する必要なしに、バックエンド・インフラストラクチャを修正できるようになる。OAMMSは以下の機能を含む:
・OAuth規格を利用する委任された認可。
・エンタープライズ・アイデンティティ管理インフラストラクチャ、典型的には「オラクルアクセス管理プラットフォーム」にブラウザベース(HTML5)および固有のモバイルアプリを接続するモバイルサービス。
・グーグル、Yahoo、フェースブック、ツイッターまたはLinkedInなどのポピュラーなクラウドベースのアイデンティティ認証および認可サービスと対話する際に、OAMMSを信頼する関係者として使用させる機能を提供するインターネットアイデンティティサービス。OAMMSをデプロイすることによって、各々のアイデンティティ・プロバイダ毎にアクセス機能を個々に実現する必要なしにユーザに複数のログインオプションが提供される。LDAP CRUD動作のためのRESTインターフェイスを提供するユーザ・プロファイル・サービス(顧客がアプリ用のグラフィカルUIを構築するために同じRESTインターフェイスを用いる);自己登録、プロファイルメンテナンス、パスワード管理およびアカウント削除などのユーザのセルフサービス機能。ユーザ・プロファイル・サービスはOAuthリソースとしても利用可能である。
・エージェントSDKによって提供されるランタイムRESTインターフェイスによってオラクルアクセス管理を利用するためのアクセス管理統合サービス。
モバイルアプリケーションのためのデータ・バインディング
図8は、一実施形態において、図1のシステム環境100のクラウドインフラストラクチャシステム102のモバイルクラウドサービス122を使用するアプリケーションを作成するためのアプリケーション開発フレームワーク124に含まれ得るモバイルアプリケーション開発ポータル800の一例である。図8は、モバイルアプリケーション開発ポータル800の実施形態または実現例を単に例示するだけであり、特許請求の範囲に記載されるように如何なる発明の範囲をも限定するべきではない。当業者であれば、この明細書中に提示されているこの開示および教示によって、添付の図に示されているそれらの実施形態または実現例についての他の変形例、変更例および/または代替例を認識し得る。
この例においては、モバイルアプリケーション開発ポータル800は、モバイルクラウドサービス122の基礎コンポーネントにアクセスするアプリケーション開発フレームワーク124によって開発者がモバイルアプリケーションを作成することを可能にするハードウェア要素および/またはソフトウェア要素を含む。モバイルバックエンド・サービスモジュール810は、任意の数またはタイプのバックエンド・サービスを設計し、テストし、実装し、デプロイし、かつ管理するために、1つ以上のツール、ユーザインターフェイス、ウィザードなどを開発者に提供する。バックエンド・サービスのいくつかの例は、プッシュ通知サービス、ストレージサービス、ユーザ管理サービスなどを含む。開発者は、モバイルアプリケーションがどのようにこれらのバックエンド・サービスにアクセスするかまたはこれらのバックエンド・サービスを利用するかを指定することができる。バックエンド・サービスが作成されると、バックエンド・サービスは、アプリケーション作成中に開発者に自動的に提示することができ、これにより、開発者は、モバイルアプリケーションに搭載するかまたはこれを使用するために1セットの予め定められたバックエンド・サービスの中から選択することができるようになる。
アプリケーションプログラムインターフェイスモジュール820は、モバイル・バックエンド・サービス間で使用できるようにアプリケーション・プログラム・インターフェース(application program interface:「API」)を設計し、テストし、実装し、デプロイし、管理するために、開発者に1つ以上のツール、ユーザインターフェイス、ウィザードなどを提供する。開発者は、モバイルアプリケーションが、モバイルバックエンドサービスモジュール810を用いてデプロイされたバックエンド・サービスと対話することを可能にする1つ以上のソフトウェア中間仲介物を作成することができる。一例においては、開発者は、バックエンド・サービスの残りを保護しながらも、特定の機能を公開するレプレゼンテーショナル・ステート・トランスファ(Representational State Transfer:「REST」)を実現することができる。別の例においては、開発者は、ユーザアイデンティティ、モバイルデバイスタイプ、データタイプなどの予め定められた基準に従ってバックエンド・サービスの機能を公開するAPIを作成することができる。APIが作成されると、APIは、アプリケーション作成中に開発者に自動的に提示することができ、これにより、開発者は、モバイルアプリケーションに搭載するかまたはこれを使用するために1セットの予め定められたAPIの中から選択することができるようになる。
コネクタモジュール830は、他のデータベース、アプリケーション、クラウドベースのアプリケーションおよびサービスまたは外部APIとの接続を設計し、テストし、実装し、デプロイし、管理するために、開発者に1つ以上のツール、ユーザインターフェイス、ウィザードなどを提供する。開発者は、モバイルアプリケーションが他のタイプのサービス、外部アプリケーションまたはデータベース、ならびに第三者APIなどと対話することを可能にする1つ以上の接続を作成することができる。開発者は、RESTまたは単純にオブジェクト・アクセス・プロトコル(object access protocol:「SOAP」))などのさまざまな技術を用いて、コネクタがこれらのサービスにアクセスすることを指定することができる。コネクタが作成されると、これらのコネクタは、アプリケーション作成中に開発者に自動的に提示することができ、これにより、開発者は、モバイルアプリケーションに搭載するかまたはこれを使用するために1セットの予め定められたコネクタの中から選択することができるようになる。
記憶モジュール810は、モバイル・バックエンド・サービス間で用いられるストレージを設計し、テストし、実装し、デプロイし、かつ管理するために、1つ以上のツール、ユーザインターフェイス、ウィザードなどを開発者に提供する。開発者は、モバイルアプリケーションがモバイル・バックエンド・サービスを用いてデータを検索して記憶することを可能にする1つ以上の記憶集合体を作成することができる。ユーザ管理モジュール850は、モバイル・バックエンド・サービスへのユーザのアクセスを管理するために、開発者に1つ以上のツール、ユーザインターフェイス、ウィザードなどを提供する。開発者は、モバイルアプリケーションがモバイル・バックエンド・サービスのためのユーザアクセス制限を順守し得るように1つ以上のユーザ集合、ユーザ役割、ユーザ群などを作成することができる。
アプリケーションコンポーザモジュール860は、モバイルアプリケーションを設計し、テストし、実装し、デプロイし、かつ管理するために、1つ以上のツール、ユーザインターフェイス、ウィザードなどを開発者に提供する。モバイルアプリケーションは、IOS、アンドロイド、ブラックベリーなどのさまざまなターゲットプラットホームおよびデバイスのために作成することができる。さまざまな実施形態においては、アプリケーションコンポーザモジュール860は、エンタープライズモバイルアプリケーションを構築するためにクラウドベースの高速アプリケーション開発環境を提供する。アプリケーションコンポーザモジュール860は固有のアプリとしてモバイルアプリケーションをパッケージ化してデプロイすることができる。アプリケーションコンポーザモジュール860は、カリフォルニア州(California)のレッドウッドショアズ(Redwood Shores)にあるオラクル社によって提供されるオラクル・パブリック・クラウド上にホストされたマルチテナントアプリケーション開発環境として具体化され得る。したがって、アプリケーションコンポーザモジュール860は、完全なアプリケーションライフサイクル管理をクラウドベースのサービスで提供することができる。
特定の実施形態においては、アプリケーションコンポーザモジュール860はさまざまなユーザペルソナに適用可能な特徴を提供する。たとえば、ビジネス分析者は、顧客関係性管理(customer relationship management:「CRM」)、人的資本管理(human capital management:「HCM」)などのようなターゲットとなるバックエンドシステムについての十分な機能知識を有するユーザであってもよい。ビジネス分析者は、彼らのビジネス対象関係についての理解および一般的なプログラミング概念についての彼らの精通度によってアプリケーションコンポーザモジュール860を用いて、モバイルアプリケーションを速やかに開発することができる。このタイプのユーザは、典型的には、CRMアプリケーションコンポーザ、WebCenterレイアウト・コンポーザ、SOAビジネスプロセスコンポーザ、SFDCアプリケーション構成ツールなどのようなツールを快適に用いることにより、開発者がアプリケーションコンポーザモジュール860を用いて新しいモバイルのアプリケーションを効率的に作成することを可能にする。
別の例においては、アプリケーション開発者は、JDeveloperのようなIDEを用いてコードを容易に書込むことができるユーザであって、かつ、エンタープライズアプリケーションを拡張してカスタマイズするためにADF、OAFwk、スプリング、J2EEなどのようなアプリケーション開発フレームワークを用いるユーザであり得る。このタイプのユーザは、これらの原理を適用して、アプリケーションコンポーザモジュール860を用いて、新しいモバイルアプリケーションを効率的に作成することができる。さらに別の例においては、アプリケーションアドミニストレータは、アプリケーションの構成、デプロイメント、プロビジョニング、パッチングおよび一般的メンテナンス、ならびにアプリケーション開発環境に関わりのあるユーザであり得る。このタイプのユーザは、さらにこれらの原理を適用して、アプリケーションコンポーザモジュール860を用いて効率的に新しいモバイルアプリケーションを作成することができる。
特定の実施形態においては、図1のクラウドインフラストラクチャサービス102の顧客は、バックエンドとしてオンプレミスeBusinessスーツ(e-Business suite:EBS)サービスを用いてカスタムのモバイルアプリケーションを構築するためにアプリケーションコンポーザモジュール860を利用する。ビジネス分析者は、MCS122を用いて、EBSバックエンド上に、モバイルフレンドリなREST APIを公開することができる。次いで、ビジネス分析者は、モバイルアプリケーション開発ポータル800のコンポーネントを用いて、モバイルアプリケーションを構築することができる。
いくつかの実施形態においては、パートナは、CRM製品を拡張させて、この拡張部およびCRMサービスをバックエンドとして用いてカスタムのモバイルアプリケーションを作成することを要求し得る。アプリケーション開発者は、JCSにおけるカスタムオブジェクトでCRMを拡張することができ、MCS122を用いて、CRMおよびカスタムオブジェクトのためのモバイルフレンドリなAPIマッシュアップを公開する。次いで、ビジネス分析者は、マッシュアップMCS APIを組込むために、モバイルアプリケーション開発ポータル800のコンポーネントを用いて、モバイルアプリケーションを構築することができる。
さらなる実施形態においては、SIEBEL顧客は、LinkedInとの統合およびSIEBELバックエンドのためにMCS APIカバーを用いて、カスタムのモバイルアプリケーションを構築してもよい。アプリケーション開発者は、JDevにおけるADFモバイルLinkedIn特徴を構築し、モバイルアプリケーション開発ポータル800のコンポーネントを用いて特徴をデプロイすることができる。次いで、ビジネス分析者は、SIEBELのためのMCS APIおよびリンクされた特徴を有するモバイルアプリケーション開発ポータル800のコンポーネントを用いて、モバイルアプリケーションを構築することができる。
特定の実施形態においては、予め定義されたテンプレートを用いてモバイルアプリケーションを構築するためのシステムおよび方法が提供される。予め定義されたテンプレートは、バックエンド・サービスとしてMCS122を使用することを可能にする。アプリケーション開発中にサービス定義を開発者に提示して、UI設計とバックエンド・サービスとの間に迅速な接続を可能にし得る。
図9は、本発明の実施形態に従ったモバイルアプリケーション開発のための方法のフロー図である。一実施形態においては、図9のフロー図の機能は、メモリまたは他のコンピュータ読取り可能媒体もしくは有形媒体に記憶され、プロセッサによって実行されるソフトウェアよって実現される。他の実施形態においては、機能は、ハードウェアによって(たとえば特定用途向け集積回路(application specific integrated circuit:「ASIC」)、プログラマブルゲートアレイ(programmable gate array:「PGA」)、フィールドプログラマブルゲートアレイ(field programmable gate array:「FPGA」)などを用いることによって)、またはハードウェアとソフトウェアとの如何なる組合せによっても、実行され得る。
910において、アプリケーション定義ウィザードが生成される。この明細書中において用いられるアプリケーション定義ウィザードは、1つ以上の予め定義されたクラウドアクセス可能なサービスを利用するモバイルアプリケーションの定義プロセス中にユーザをガイド(誘導)する1セットの1つ以上のUIを表現する。アプリケーション定義ウィザードは1つ以上のワークフローを実現することができ、これら1つ以上のワークフローの各々はアプリケーション定義プロセスの一部に関連付けられている。一実施形態においては、アプリケーション定義ウィザードは、アプリケーション識別子プレフィックス、デフォルトアイコン、スプラッシュスクリーン、デフォルトアプリケーション/特徴テンプレート、設定エンタープライズプロビジョニングプロファイル/キーストアなどのアプリケーションデフォルトを指定するようにユーザを促すかまたはガイドすることができる。
特定の実施形態においては、アプリケーション定義ウィザードは、アプリケーション名、フォームファクタ(電話またはタブレットデバイスなど)、ナビゲーションタイプ(たとえば、スプリングボード、ナビゲーションバー(navigation bar:「NavBar」)、スプリング/Navコンボなどとしての、単一の特徴またはUIを意味しないもの)、および任意のアプリケーションプリファレンスを指定するようにユーザを促すかまたはガイドすることができる。
920において、アプリケーション定義が受取られる。この明細書中に記載されるように、アプリケーション定義は、少なくとも最小限機能的なモバイルアプリケーションを作成するために必要とされる如何なる情報をも含み得る。930において、モバイルアプリケーションがアプリケーション定義に基づいて生成される。一実施形態においては、モバイルアプリケーションは、ターゲットデバイスのシミュレータにおいて表現され、翻訳されたときにコンパイルされたモバイルアプリケーションとして機能する1セットの定義を含み得る。
940において、特徴選択ウィザードが生成される。この明細書中において使用される特徴選択ウィザードは、1つ以上の予め定義されたクラウドアクセス可能なサービスを利用するモバイルアプリケーションの開発プロセス中にユーザをガイドする1セットの1つ以上のUIを表現する。特徴選択ウィザードは、1つ以上のワークフローを実現することができ、これら1つ以上のワークフローは各々、アプリケーション開発プロセスの一部に関連付けられている。一実施形態においては、特徴選択ウィザードは、モバイルアプリケーションとともに用いることができる特徴、UIモジュール、ビジネスオブジェクトなどを指定するようにユーザを促すかまたはガイドすることができる。
特定の実施形態においては、特徴選択ウィザードは、モバイルアプリケーションの第1の画面のコンポーネントを指定するようにユーザを促すかまたはガイドすることができる。コンポーネントは、複数のコンポーネントのカタログから選択することができる。
特定の実施形態においては、特徴選択ウィザードは、モバイルアプリケーションの他の画面のコンポーネントを指定するようにユーザを促すかまたはガイドすることができる。これらの他の画面は、1つ以上のUIモジュールの一部を形成することができる。特定の実施形態においては、特徴選択ウィザードは、モバイルアプリケーションの1つ以上のUIモジュールを指定するようにユーザを促すかまたはガイドすることができる。UIモジュールは、モバイルアプリケーションに関して実行することができるプロセッサ、タスクまたはフローを表現する。UIモジュールは、UI要素およびページフローの凝集性の高い集合を提供する1セットのテンプレートまたはUIモジュールのカタログから選択することができる。UIモジュールのいくつかの例は、許可ワークフロー、ワーカータスク、データ入力タスク、レポートビルダなどである。テンプレートは、1セットのUI要素からなる予め設定された配置/バインディングを提供するので、ユーザは、個々のUI要素を配置およびバインドする必要なしに、それらのUI要素を構成してテンプレートをバインドするだけでよい。一実施形態においては、ユーザが、自身のテンプレートを別のユーザに利用可能なテンプレートのセットに提供してもよい。ユーザは、UIモジュールを表現する一連のページを構成するかまたは指定することができる。各々のページごとに、ユーザに、従来と同様に、1セットのレイアウトテンプレートを提示することができる。各々のレイアウトテンプレートは、二次的テンプレートを選択するなどのいくつかの局面を有してもよい。
いくつかの実施形態においては、特徴選択ウィザードは、予め定義されたビジネスオブジェクトなどのモバイルアプリケーションの追加特徴を指定するようにユーザを促すかまたはガイドすることができる。ユーザは、バックエンド・サービス、APIまたはコネクタのうちのどのリソースが用いられるべきか、または各々のコンポーネント、画面、UIモジュールなどのUI要素に関連付けられるべきかを指定することができる。
950において、特徴定義が受取られ、960において、データ・バインディング・ウィザードが生成される。この明細書中において使用されるデータ・バインディング・ウィザードは、1つ以上の予め定義されたクラウドアクセス可能なサービスを利用するモバイルアプリケーションのデータ・バインディングプロセス中にユーザをガイドする1セットの1つ以上のUIまたは既存のUIからなるUI要素を表現する。データ・バインディング・ウィザードは、1つ以上のワークフローを実現することができ、これら1つ以上のワークフローは各々、アプリケーション開発プロセスの一部に関連付けられている。一実施形態においては、データ・バインディング・ウィザードは、特徴、画面、UIモジュールなどが、モバイルアプリケーションとともに使用可能であるビジネスオブジェクト、サービス、APIなどに如何にバインドされるかを指定するようにユーザを促すかまたはガイドすることができる。特定の実施形態においては、データ・バインディング・ウィザードは、モバイルアプリケーションのビジネスオブジェクトを指定するようにユーザを促すかまたはガイドすることができる。ビジネスオブジェクトは、モバイルアプリケーションにとって利用可能なサービス、APIなどのカタログまたはセットから選択することができる。
970において、データ・バインディング定義が受取られる。さまざまな実施形態においては、ステップ940〜870は、連続して、または並行に実行することができる。940〜870における個々のステップは、モバイルアプリケーションの個々の要素上で、または1グループの要素に対して実行することができる。図示されるように、ユーザは、モバイルアプリケーションを作成するために特徴定義およびデータ・バインディングのプロセスを繰返すことができる。さまざまな実施形態においては、1セットのテンプレートを開発者に提示することができる。テンプレートは一組の凝集性の高いユーザインターフェイスコンポーネントを含む。開発者がデータを個々のユーザインターフェイス要素にバインドする必要なしに、開発者は、データをテンプレートにバインドすることができ、次いでデータがテンプレートを用いて如何に提示されるかをマッピングすることができる。
980において、モバイルアプリケーションがデプロイされる。ユーザは、ターゲットデバイス上にデプロイされたテスト用アプリケーションを用いて、またはターゲットデバイス上にデプロイされた固有のアプリケーションとして、アプリケーションをテストすることができる。
図10〜図13は、アプリケーション定義ウィザードによって提示され得る1つ以上のユーザインターフェイスを例示する。図10においては、ユーザインターフェイス1000はユーザインターフェイス要素1010を含む。このユーザインターフェイス要素1010において、開発者が新しいモバイルアプリケーションのための名前を指定する。ユーザインターフェイス要素1020は、新しいモバイルアプリケーションの作成を開始する機能に関連付けられている。図11および図12は、ユーザインターフェイス1100および1200を示す。ユーザインターフェイス1100および1200は、新しいアプリケーションを作成するために、1つ以上のオプションまたはユーザインターフェイス要素だけでなく、開発者によって予め作成されたアプリケーション対するリンクを含み得るワークスペースを、開発者に提供する。図13が例示するユーザインターフェイス1300は、開発者に新しいアプリケーションの作成を開始させるために、開発者に映像チュートリアルまたは他のヘルプ情報を提供することができる。
図14Aおよび図14Bは、新しいモバイルアプリケーションを定義する1セットの属性1410を開発者に与えるユーザインターフェイス1400を示す。図14Aに示されるように、属性1410はアプリケーション名、記述、ターゲットデバイスタイプ(たとえば電話、タブレットなど)、アイコンを含む。アプリケーション定義を形成するために他の属性が提示および収集され得る。図14Bは、一実施形態における属性1410のために指定された1セットの値を示す。
特定の実施形態においては、アプリケーション定義ウィザードは、モバイルアプリケーションのための或るタイプの第1の画面を指定するように開発者に促すかまたはガイドすることができる。一局面においては、開発者には、単純な画面、上側タブを有する画面、下側タブを有する画面、ページ数を有する画面などの1セットの画面タイプを提示することができる。図15Aおよび図15Bは、新しいモバイルアプリケーションの第1の画面を定義する1セットの画面タイプ1510を開発者に与えるユーザインターフェイス1500を示す。図15Aは、第1の画面のデフォルト選択を単純な画面タイプとして示す。図15Bは、開発者が上側タブを有する画面を選択したことを例示する。
特定の実施形態においては、アプリケーション定義ウィザードは、モバイルアプリケーションの第1の画面の詳細を指定するように開発者を促すかまたはガイドすることができる。一局面においては、開発者には、予め選択された画面のタイプに特有の1セットのユーザインターフェイス要素を提示することができる。図16Aおよび図16Bは、予め選択された画面のタイプに特有の1セットのユーザインターフェイス要素1610を開発者に提供するユーザインターフェイス1600を示す。図16Aは、上側タブを有する画面の選択に基づいて、画面のタイトルおよび任意タブの名前またはラベルを定義するために開発者にユーザインターフェイス要素1610が提示されることを例示する。図16Bは、開発者が所望の情報をユーザインターフェイス要素1610にポピュレートしたことを例示する。
特定の実施形態においては、アプリケーション定義ウィザードは、モバイルアプリケーションの第1の画面の設計を指定するように開発者を促すかまたはガイドすることができる。一局面においては、開発者には、予め選択された画面のタイプに特有の1セットの画面設計を提示することができる。設計のいくつかの例は、画面項目を含まないブランク設計;画面項目が定義済みのリストレイアウトに従って配置されているリストベースの設計;アイテムが定義済みのギャラリーレイアウトに従って配置されているギャラリーベースの設計;画面項目が定義済みのマップ上に配置されているマップベースの設計;などを含み得る。図17Aおよび図17Bは、予め選択された画面のタイプに特有の1セットの設計1710を開発者に与えるユーザインターフェイス1700を示す。図17Aは、上側タブの第1の画面のデフォルト設計を付加的な要素を持たないものとして例示する(たとえば、開発者によって後でポピュレートされるべきブランクのキャンバス)。図17Bは、開発者がリストベースの設計を選択したことを例示する。
特定の実施形態においては、アプリケーション定義ウィザードは、新しいアプリケーションの詳細を終了させるように開発者を促すかまたはガイドすることができる。図18は、新しいアプリケーションの詳細を終了させるために開発者に1つ以上のオプションを与えるユーザインターフェイス1800を示す。特定の実施形態においては、開発者のデバイスにテストアプリケーションをインストールするQRコードが開発者に提示されてもよい。このテストアプリケーションは新しく作成された異なるアプリケーションであるが、開発者のデバイス上でアプリケーションをテストするためにアプリケーション情報で更新することができる。
図19は、一実施形態における使用可能なコンポーネントのカタログを提供するユーザインターフェイス1900の例である。開発者は、一実施形態において1つ以上のジェスチャを用いて画面にコンポーネントを追加することができる。たとえば、開発者は、ドラッグ・アンド・ドロップ・ジェスチャを用いてカタログからコンポーネントを追加することができる。図20は、一実施形態における、1つ以上のジェスチャを用いて開発者が画面にコンポーネントを追加することができるユーザインターフェイス2000の一例である。図21は、一実施形態における、開発者が画面にマップコンポーネントを追加した後のユーザインターフェイス2100の一例である。この例においては、ガイド付きカスタマイザ2110を開くことができ、これにより、開発者が追加された要素を構成することを可能にする。
図22は、一実施形態におけるサービスのカタログを提供するユーザインターフェイス2200の一例である。図23は、一実施形態における、選択されたビジネスオブジェクトに基づいて開発者がUIモジュールを追加/作成することができるユーザインターフェイス2200の一例である。たとえば、開発者は、ワーカー(Workers)サービスビジネスオブジェクトを追加し、ワーカー(Worker)UIモジュールを作成することができる。図24は、一実施形態における、開発者がUIモジュールを追加した後のユーザインターフェイス2200の一例である。上述のとおり、開発者は、UIモジュールのページからなる1つ以上の画面についてのテンプレートを指定することができる。各々のテンプレートは、ユーザインターフェイスの要素にバインドするために利用可能な選択されたビジネスオブジェクトのどんな属性をも駆動することができる。この例においては、ガイド付きカスタマイザ2410を開くことができ、これにより、開発者がテンプレートを選択することを可能にする。
図25は、本発明の実施形態に従ったモバイルアプリケーションのユーザインターフェイスをデータ・バインドするための方法2500のフロー図である。一実施形態においては、図25のフロー図の機能は、メモリまたは他のコンピュータ読取り可能媒体もしくは有形媒体に記憶され、プロセッサによって実行されるソフトウェアよって実現される。他の実施形態においては、機能は、ハードウェアによって(たとえば特定用途向け集積回路(application specific integrated circuit:「ASIC」)、プログラマブルゲートアレイ(programmable gate array:「PGA」)、フィールドプログラマブルゲートアレイ(field programmable gate array:「FPGA」)などを用いることによって)、またはハードウェアとソフトウェアとの如何なる組合せによっても、実行され得る。
ステップ2510において、データソースをモバイルアプリケーションのユーザインターフェイスにバインドする第1のジェスチャが受取られる。第1のジェスチャはスワイプ、クリックなどユーザインターフェイスイベントであってもよい。上述のように、データソースはサービスカタログから選択することができる。さまざまな実施形態においては、モバイルアプリケーションは、(通常、HTTPを介してバックエンド/ミドルウェアサーバによって提供される)バックエンド・サービスにバインドされるデータを有するUIコンポーネントの画面を有し得る。これらのアプリケーションを構築するために、ユーザは、これらの個々のコンポーネントをそのデータのうち特定の部分にバインドする必要がある。
さまざまな実施形態においては、アプリケーションコンポーザモジュール860によって提供されるウェブベースのモバイルアプリケーション開発ツールにおいては、各々のUIコンポーネントは、UIのうちいずれのセクションが、バックエンド・サービスのデータから得られる個々のプロパティに独立してデータ・バインドされ得るかを通知している。
一実施形態においては、デバイス上で実施されるとおりに実行されるモバイルアプリケーションの高忠実度UIプレビューがレンダリングされる。このプレビューにおけるコンポーネントが予めバインドされている場合、プレビューは、デバイス上で実行されているかのように本物のデータまたは模擬データを含むこととなるだろう。
ユーザがUIコンポーネントをデータ・バインドすることを要望する場合、特別のデータ・バインディングモードが入力される。これが行なわれると、モバイルアプリケーションのUIプレビューは、高忠実度プレビューからそのデータ・バインディングモードに切換わる。UIのうちデータ・バインドされ得るセクションは、その特定のセクションの機能を記述する関連テキストを示すようにここで変換される。たとえば、UIコンポーネントがユーザ画像を示すものと想定する。このUIは、ユーザの写真と、この写真の下にユーザのファーストネームとを有する。ユーザがこのUIコンポーネントをデータ・バインドしていない場合、アプリケーションのプレビューは、代表的な(模造の)写真または本物の写真と、その下に偽名または本名のファーストネームとを示すだろう。
ユーザがこのUIプロファイルコンポーネントをデータ・バインドすることを所望する場合、ユーザは、データ・バインディングモードを始動させ、プレビューは、写真が存在していた(この時点でテキスト「ユーザプロファイル写真」を含むこととなる)空きスロットと、ファーストネームが存在していた(この時点でテキスト「ファーストネーム」を含むこととなる)空きスロットとを示すように変化する。次いで、ユーザに、データ・バインディング・インターフェイスが提示される。これは、ユーザがバインドすることができる実現可能なすべてのデータ(たとえば、フェースブック・フィードは、ユーザ自身の写真を含むこのユーザのすべてのプロファイル情報を含み得る)と;電話の視覚的プレビュー(上述の場合には、「ユーザプロファイル写真」および「ファーストネーム」)におけるスロットにマップされている(電話プレビューとは別個である)視覚的スロットと;一致している。
このコンポーネントをデータ・バインドするために、ユーザは、入手可能なリストから特定のデータをドラッグ・アンド・ドロップし、彼らがそのデータを適用したいと考えているスロットにドロップする必要がある。上述の例においては、ユーザは、「ファーストネーム」が1個のデータとして利用可能であることを知る。ユーザは、それを「ファーストネーム」スロット上にまでドラッグして、そのスロットをそれらユーザのファーストネームにバインドすることができる。
ユーザが(当該ユーザがデータをドラッグした)これらのスロット上にとどまっていると、電話のUIプレビューの対応する部分がハイライト表示されて、UIにおいてこのスロットが影響を及ぼしている箇所(支援のためにテキストをプレビューに有している)がユーザに通知される。ユーザがデータ・バインドし終えると、電話UIプレビューがその高忠実度モードに戻り、ここで、模擬データまたは現実データがユーザに示される。こうして、データ・バインディング外では常に、ユーザは、アプリケーションを、それがターゲットデバイス上に表示され得るとおりに視認することとなる。
ステップ2520において、1セットのデータポイントがデータソースにおいて利用可能となる。ステップ2530において、ユーザインターフェイスのうち1セットのデータ・バインド可能エリアが、ユーザインターフェイスによって提供される情報に基づいて決定される。たとえば、データ・バインディングモードを入力したときに支援のためにスロットによってユーザに提示することができる。先のアプローチは、コンポーネントをデータ・バインドするためにユーザウィザードまたは一般的形式を提示することであるだろう。これは、どんな視覚的プレビューも提供しないだけでなく、そのコンポーネントがどのように機能するか、およびそれがどのように技術的にデータにバインドされるかについての複雑な詳細をユーザが認識していることを必要とする。
ステップ2540において、データソースにおいて利用可能なデータポイントをユーザインターフェイスのデータ・バインド可能エリアにリンクする第2のジェスチャが受取られる。したがって、特定の実施形態においては、各々のUIコンポーネントは、発見することが可能なスロットの標準的リストを提示することとなる。ユーザがこれらのスロットにデータを追加すると、UIコンポーネントにとっては、そのデータの意図およびセマンティックを決定することと、UIコンポーネント自体をそれらデータにバインドするように適切に構成することとが責務となる。
このアプローチにより、モバイルデバイスのためのコンポーネントをデータ・バインドすることがかなり容易になる。これにより、ユーザが、UIコンポーネントがどのように技術的にバインドされるのかについての詳細な知識を有する必要がなくなり、かつ、基礎コードを調査したり理解したりする必要もなくなる。これにより、ターゲットとなる技術ユーザをより減らすことができ、それでも依然として、著しく複雑なUIを簡略的にバインドすることができる。さまざまな実施形態においては、各々のUIコンポーネントツーリング(tooling)は以下を提供する。コンポーネントにおけるデータ・バインド可能なエリアのリスト。データに対応可能なこれらのエリアの(異なっている可能性もあるので)各々についてのプログラマティックAPI。これらのデータ・バインディングエリアの各々についての視覚的プレビューを構成可能であること。
ステップ2550においては、データ・バインド可能なエリアの予め定められた表現は、データソースにおいて利用可能なデータポイントを参照して修正される。一実施形態においては、各々のUIテンプレートは、UIコンポーネントを何らかの予めセットされた「開始」データまたは模擬データにバインドする何らかの表現言語で開始される。ユーザがUIコンポーネントをデータ・バインドすると、共通インターフェイスは、ユーザにさまざまなデータ・バインディングスロットを示すとともに、プレビューをデータ・バインドするためにそれ自体を構成するようにUIコンポーネントに伝えることとなる(表現言語が指し示すものを模擬データからスロットに対応するテキストに変更することにより実行することができる)。
ユーザがデータを各々のスロットにドラッグすると、その構造のうちその特定のスロットに関連する部分がUIコンポーネントに通知され、ハイライト表示されなければならない。データがドロップされると、UIコンポーネントにはそのデータのコンテキストについての情報(それがどんなAPIから得られたか、それがどんなプロパティであったか、結果セットのどこにあるか、および、どんなタイプのデータであるか)が与えられる。UIコンポーネントは、次いで、その特定のデータに応答してそれ自体をプログラムによって構成する役割を果たす。
ユーザがデータ・バインディングモードを終了すると、UIコンポーネントは、このとき、それが高忠実度プレビューを生成するようにバインドされているサービスから模擬データまたは現実データを取ってくる役割を果たす。
図26は、一実施形態における、データ・バインディングを実行した後のユーザインターフェイス2600の一例である。したがって、開発者には、選択されたビジネスオブジェクトの属性のリストを提示することができ、かつ、この開発者は、1つ以上のジェスチャを用いて、属性をユーザインターフェイス要素にバインドすることができる。
結論
図27は、一実施形態における、デプロイメントのためにモバイルアプリケーションを構成するためのユーザインターフェイス2700の一例である。この例においては、開発者は、モバイルアプリケーションがデプロイされ得る1つ以上のモバイルオペレーティングシステムを選択することができる。図28は、一実施形態における、モバイルアプリケーションがデプロイメントのために利用可能になった後のユーザインターフェイス2700の一例である。この例においては、デプロイメントダイアログ2810が1セットのデプロイメントオプションを提供する。さまざまな実施形態においては、デプロイメントオプションを選択することにより、QRコードが生成されて、ターゲットデバイスがモバイルアプリケーションを受取ってその固有のフォーマットでインストールすることが可能となる。
図29は、一実施形態における、モバイルアプリケーションがデプロイメントのために利用可能になった後のユーザインターフェイス2900の一例である。この例においては、ダイアログ2910は、さまざまな装置上にモバイルアプリケーションをその固有のフォーマットでインストールすることをトリガするために生成されたQRコードを含む。図30は、一実施形態における、開発者ワークスペースにおいて新しくデプロイされたモバイルアプリケーションを示すユーザインターフェイス3000の一例である。この例においては、ダイアログ3010は、開発者がアプリケーションプロジェクトに関して1つ以上のアクションを実行することを可能にする。
図31は、実施形態のうちの1つを実現するための分散型システム3100の簡略図を示す。図示される実施形態においては、分散型システム3100は、1つ以上のネットワーク3110を介して、ウェブブラウザ、プロプライエタリクライアント(たとえばオラクルフォームズ)などのクライアントアプリケーションを実行して動作させるように構成される1つ以上のクライアントコンピューティングデバイス3102、3104、3106および3108を含む。サーバ3112は、ネットワーク3110を介してリモートクライアントコンピューティングデバイス3102、3104、3106および3108と通信可能に結合されてもよい。
さまざまな実施形態では、サーバ3112は、システムのコンポーネントのうち1つ以上によって提供される1つ以上のサービスまたはソフトウェアアプリケーションを実行するように適合されてもよい。いくつかの実施形態では、これらのサービスは、ウェブに基づくサービスもしくはクラウドサービスとして、またはソフトウェア・アズ・ア・サービス(Software as a Service:SaaS)モデルもしくはプラットフォーム・アズ・ア・サーブ(Platform as a Serve:PaaS)モデルの下で、クライアントコンピューティングデバイス3102,3104,3106および/または3108のユーザに対して提供されてもよい。クライアントコンピューティングデバイス3102,3104,3106および/または3108を動作させるユーザは、次いで、1つ以上のクライアントアプリケーションを利用してサーバ3112と対話して、これらのコンポーネントによって提供されるサービスを利用してもよい。
図31に示される構成では、システム3100のソフトウェアコンポーネント3118、3120および3122はサーバ3112上において実現されるものとして示される。他の実施形態では、システム3100のコンポーネントのうち1つ以上および/またはこれらのコンポーネントによって提供されるサービスは、クライアントコンピューティングデバイス3102,3104,3106および/または3108のうち1つ以上によって実現されてもよい。クライアントコンピューティングデバイスを動作させるユーザは、次いで、1つ以上のクライアントアプリケーションを利用して、これらのコンポーネントによって提供されるサービスを用いてもよい。これらのコンポーネントは、ハードウェア、ファームウェア、ソフトウェア、またはそれらの組合せにおいて実現されてもよい。分散型システム3100とは異なり得るさまざまな異なるシステム構成が実現可能であることが理解されるべきである。図に示される実施形態は、したがって、実施形態のシステムを実現するための分散型システムの一例であり、限定的であるようには意図されない。
クライアントコンピューティングデバイス3102、3104、3106および/または3108は、携帯可能な手持ち式の装置(たとえばiPhone(登録商標)、セルラー電話、iPad(登録商標)、計算タブレット、携帯情報端末(PDA))またはウェアラブルデバイス(たとえばGoogle Glass(登録商標)頭部装着型ディスプレイ)であってもよく、Microsoft Windows Mobile(登録商標)などのソフトウェア、および/もしくは、iOS、Windows Phone、Android、BlackBerry 29、Palm OSなどのようなさまざまなモバイルオペレーティングシステムを動作させ、インターネット、電子メール、ショートメッセージサービス(SMS)、Blackberry(登録商標)または他の通信プロトコルで可能化される。クライアントコンピューティングデバイス3102、3104、3106および/または3108は汎用パーソナルコンピュータであってもよく、たとえば、Microsoft Windows(登録商標)、Apple Macintosh(登録商標)および/またはLinuxオペレーティングシステムのさまざまなバージョンを動作させるパーソナルコンピュータおよび/またはラップトップコンピュータを含む。クライアントコンピューティングデバイス3102、3104、3106および3108は、たとえばGoogle Chrome OSなどのさまざまなGNU/Linuxオペレーティングシステムを限定なく含む、市場で入手可能なさまざまなUNIX(登録商標)またはUNIXライク・オペレーティングシステムのいずれかを実行させるワークステーションコンピュータであり得る。代替的に、または加えて、クライアントコンピューティングデバイス3102、3104、3106および/または3108は、ネットワーク3110を介して通信することができる、シンクライントコンピュータ、インターネットにより可能化されるゲームシステム(たとえばKinect(登録商標)ジェスチャ入力装置付きまたは無しのMicrosoft Xboxゲームコンソール)および/または個人メッセージ伝達装置などのような他の任意の電子装置であってもよい。
例示的な分散型システム3100は4つのクライアントコンピューティングデバイスとともに示されているが、任意の数のクライアントコンピューティングデバイスがサポートされ得る。センサを備えるデバイスなどの他のデバイスがサーバ3112と対話してもよい。
分散型システム3100におけるネットワーク3110は、TCP/IP(transmission control protocol/Internet protocol:伝送制御プロトコル/インターネットプロトコル)、SNA(systems network architecture:システムネットワークアーキテクチャ)、IPX(Internet packet exchange:インターネットパケット交換)、AppleTalkなどを限定なしに含む、市場で入手可能なさまざまなプロトコルのうちのいずれかを用いてデータ通信をサポートすることができる、当業者が精通している如何なるタイプのネットワークであってもよい。単なる例示として、ネットワーク3110は、イーサネット(登録商標)、トークンリングなどに基づくものなどの、ローカルエリアネットワーク(LAN)であり得る。ネットワーク3110はワイドエリアネットワークおよびインターネットであり得る。それは、仮想プライベート・ネットワーク(VPN)、イントラネット、エクストラネット、公衆交換電話網(PSTN)、赤外線ネットワーク、無線ネットワーク(たとえば米国電気電子学会(IEEE)802.11のプロトコル一式、Bluetooth(登録商標)、および/もしくは他の任意の無線プロトコルのいずれかの下で動作するネットワーク)を限定なしに含む仮想ネットワーク;ならびに/またはこれらの任意の組合せおよび/もしくは他のネットワークを含み得る。
サーバ3112は、1つ以上の汎用コンピュータ、特化されたサーバコンピュータ(たとえばPC(パーソナルコンピュータ)サーバ、UNIX(登録商標)サーバ、ミッドレンジ・サーバ、メインフレームコンピュータ、ラックマウント型サーバなどを含む)、サーバファーム、サーバクラスタ、または任意の他の適切な構成および/もしくは組合せからなってもよい。さまざまな実施形態において、サーバ3112は、前述の開示に記載される1つ以上のサービスまたはソフトウェアアプリケーションを実行するように適合されてもよい。たとえば、サーバ3112は、本開示の実施形態に従って上記の処理を実行するためのサーバに対応してもよい。
サーバ3112は、上に論じられたもののうちいずれかを含むオペレーティングシステム、および市場で入手可能な如何なるサーバオペレーティングシステムをも実行させ得る。サーバ3112は、さらに、HTTP(hypertext transport protocol:ハイパーテキスト・トランスポート・プロトコル)サーバ、FTP(file transfer protocol:ファイル転送プロトコル)サーバ、CGI(コモンゲートウェイインターフェイス)サーバ、JAVAサーバ、データベースサーバなどを含むさまざまな付加的サーバアプリケーションおよび/または中間層アプリケーションのうちのいずれかを動作させ得る。例示的なデータベースサーバは、Oracle、Microsoft、Sybase、IBM(インターナショナルビジネスマシンズ)などから市場で入手可能なものを含むが、これらに限定されない。
いくつかの実現例では、サーバ3112は、クライアントコンピューティングデバイス3102,3104,3106および3108のユーザから受信されるデータフィードおよび/またはイベント更新を解析および整理統合するために1つ以上のアプリケーションを含み得る。一例として、データフィードおよび/またはイベント更新は、センサデータアプリケーション、金融株式相場表示板、ネットワーク性能計量ツール(たとえばネットワーク監視およびトラフィック管理アプリケーション)、クリックストリーム解析ツール、自動車交通監視などに関係する実時間イベントを含み得る1つ以上の第三者情報源および連続的なデータストリームから受信される、ツイッター(登録商標)フィード、フェースブック(登録商標)更新または実時間更新を含み得るが、それらに限定されない。サーバ3112は、さらに、データフィードおよび/または実時間イベントをクライアントコンピューティングデバイス3102,3104,3106および3108の1つ以上の表示装置を介して表示するために1つ以上のアプリケーションを含み得る。
分散型システム3100は、さらに、1つ以上のデータベース3114および3116を含んでもよい。データベース3114および3116はさまざまな位置にあってもよい。例として、データベース3114および3116のうち1つ以上はサーバ3112に局在する(および/またはサーバ3112に常駐する)非一時的な記憶媒体にあってもよい。代替的に、データベース3114および3116は、サーバ3112から遠隔にあってもよく、ネットワークに基づくかまたは専用の接続を介してサーバ3112と通信し得る。1組の実施形態では、データベース3114および3116は記憶域ネットワーク(SAN)にあってもよい。同様に、サーバ3112に帰する機能を実行するための任意の必要なファイルが、適切に、サーバ3112上においてローカルに、および/または遠隔で記憶されてもよい。1組の実施形態では、データベース3114および3116はOracleによって提供されるデータベースなどの、SQLフォーマットされたコマンドに応答してデータを記憶、更新および検索取得するように適合されるリレーショナルデータベースを含んでもよい。
図32は、本発明のさまざまな実施形態が実現され得る例示的なコンピュータシステム3200を示す。システム3200は、上述のコンピュータシステムのいずれかを実現するよう用いられてもよい。図32に示されるように、コンピュータシステム3200は、バスサブシステム3202と、バスサブシステム3202を介していくつかの周辺サブシステムと通信する処理ユニット3204とを含む。これらの周辺サブシステムは、処理加速ユニット3206、I/Oサブシステム3208、ストレージサブシステム3218および通信サブシステム3224を含んでもよい。ストレージサブシステム3218は有形のコンピュータ読取可能記憶媒体3222およびシステムメモリ3210を含む。
バスサブシステム3202は、コンピュータシステム3200のさまざまなコンポーネントおよびサブシステムに意図されるように互いと通信させるための機構を提供する。バスサブシステム3202は概略的に単一のバスとして図示されているが、バスサブシステムの代替的実施形態は複数のバスを利用してもよい。バスサブシステム3202は、さまざまなバスアーキテクチャのうちいずれかを用いるメモリバスまたはメモリコントローラ、周辺バスおよびローカルバスを含むいくつかのタイプのバス構造のうちのいずれかであり得る。たとえば、そのようなアーキテクチャは、産業標準アーキテクチャ(Industry Standard Architecture:ISA)バス、マイクロチャネルアーキテクチャ(Micro Channel Architecture:MCA)バス、エンハンストISA(Enhanced ISA:EISA)バス、ビデオエレクトロニクス標準組織(Video Electronics Standards Association:VESA)ローカルバス、および周辺コンポーネントインターコネクト(Peripheral Component Interconnect:PCI)バスを含んでもよく、IEEE P1386.1規格に従って製造されるメザニンバスとして実現され得る。
処理ユニット3204は、1つ以上の統合された回路(たとえば従来のマイクロプロセッサまたはマイクロコントローラ)として実現可能であり、コンピュータシステム3200の動作を制御する。1つ以上のプロセッサが処理ユニット3204に含まれてもよい。これらのプロセッサは単一コアまたはマルチコアプロセッサを含んでもよい。特定の実施形態では、処理ユニット3204は、1つ以上の独立した処理ユニット3232および/または3234として、単一または複数コアのプロセッサが各処理ユニットに含まれる状態で実現されてもよい。他の実施形態では、処理ユニット3204は、さらに、2つのデュアルコアプロセッサを単一のチップに統合することによって形成されるクワッドコア処理ユニットとして実現されてもよい。
さまざまな実施形態では、処理ユニット3204はさまざまなプログラムをプログラムコードに応答して実行することができ、複数の同時に実行されるプログラムまたはプロセスを維持することができる。任意の所与の時間において、実行されるべきプログラムコードの一部またはすべてがプロセッサ3204および/またはストレージサブシステム3218に常駐することができる。好適なプログラミングによって、プロセッサ3204は上記のさまざまな機能を提供することができる。コンピュータシステム3200はさらに処理加速ユニット3206を含んでもよく、処理加速ユニット3206はデジタル信号プロセッサ(digital signal processor:DSP)、特殊用途のプロセッサなどを含み得る。
I/Oサブシステム3208はユーザインターフェイス入力装置およびユーザインターフェイス出力装置を含んでもよい。ユーザインターフェイス入力装置は、キーボード、マウスまたはトラックボールなどのポインティングデバイス、ディスプレイに組み込まれるタッチパッドまたはタッチスクリーン、スクロールホイール、クリックホイール、ダイアル、ボタン、スイッチ、キーパッド、音声コマンド認識システムを伴う音声入力装置、マイクロフォン、および他のタイプの入力装置を含み得る。ユーザインターフェイス入力装置は、たとえば、ユーザがジェスチャおよび話し言葉コマンドを用いて自然なユーザインターフェイスを介してMicrosoft Xbox(登録商標)360ゲームコントローラなどの入力装置を制御しそれと対話することを可能にするMicrosoft Kinect(登録商標)モーションセンサなどのモーション感知および/またはジェスチャ認識装置を含んでもよい。ユーザインターフェイス入力装置は、さらに、ユーザから目の活動(たとえば写真を撮る、および/またはメニュー選択を行なっている間の「瞬き」)を検出し、目の動きを入力装置(たとえばGoogle Glass(登録商標))への入力として変換するGoogle Glass(登録商標)瞬き検出器などの目のジェスチャ認識装置を含んでもよい。さらに、ユーザインターフェイス入力装置は、ユーザが音声コマンドを介して音声認識システム(たとえばSiri(登録商標)ナビゲータ)と対話することを可能にする音声認識感知装置を含んでもよい。
ユーザインターフェイス入力装置は、さらに、三次元(3D)マウス、ジョイスティックまたはポインティングスティック、ゲームパッドおよびグラフィックタブレット、ならびにスピーカ、デジタルカメラ、デジタルカムコーダ、ポータブルメディアプレーヤ、ウェブカム、画像スキャナ、指紋スキャナ、バーコードリーダ3Dスキャナ、3Dプリンタ、レーザレンジファインダ、および視線追跡装置などの聴覚/視覚装置を含み得るが、これらに限定されない。加えて、ユーザインターフェイス入力装置は、たとえば、コンピュータ断層撮影、磁気共鳴撮像、ポジションエミッショントモグラフィー、医療超音波検査装置などの医療画像化入力装置を含んでもよい。ユーザインターフェイス入力装置は、さらに、たとえば、MIDIキーボード、デジタル音楽機器などの音声入力装置を含んでもよい。
ユーザインターフェイス出力装置は、ディスプレイサブシステム、インジケータライト、または音声出力装置のような非ビジュアルディスプレイなどを含んでもよい。ディスプレイサブシステムは、陰極線管(CRT)、フラットパネルデバイス、たとえば液晶ディスプレイ(LCD)またはプラズマディスプレイを用いたものなど、投影装置、タッチスクリーンなどであってもよい。一般に、「出力装置」という語の使用は、コンピュータシステム3200からユーザまたは他のコンピュータに情報を出力するためのすべての考えられ得るタイプの装置および機構を含むよう意図される。たとえばユーザインターフェイス出力装置は、モニタ、プリンタ、スピーカ、ヘッドフォン、自動車ナビゲーションシステム、プロッタ、音声出力装置およびモデムなどの、テキスト、グラフィックスおよび音声/映像情報を視覚的に伝えるさまざまな表示装置を含み得るが、これらに限定されない。
コンピュータシステム3200は、その時点でシステムメモリ3210内に位置するものとして示される、ソフトウェア要素を含むストレージサブシステム3218を含んでもよい。システムメモリ3210は、処理ユニット3204においてロード可能および実行可能であるプログラム命令、ならびにこれらのプログラムの実行中に生成されるデータを記憶してもよい。
コンピュータシステム3200の構成およびタイプによっては、システムメモリ3210は揮発性(ランダムアクセスメモリ(RAM)など)であってもよく、および/または不揮発性(リードオンリメモリ(ROM)、フラッシュメモリなど)であってもよい。RAMは典型的には、処理ユニット3204に即座にアクセス可能であり、および/もしくは処理ユニット3204によって現在動作および実行されている、データならびに/またはプログラムモジュールを含む。いくつかの実現例では、システムメモリ3210は、スタティックランダムアクセスメモリ(SRAM)またはダイナミックランダムアクセスメモリ(DRAM)などの複数の異なるタイプのメモリを含んでもよい。いくつかの実現例では、起動中などのように、コンピュータシステム3200内における要素間において情報の転送を助ける基本的なルーチンを含む基本的な入力/出力システム(BIOS)が、典型的にはROMに記憶されてもよい。限定するものではなく一例として、システムメモリ3210はさらにアプリケーションプログラム3212を示し、アプリケーションプログラム3212は、クライアントアプリケーション、ウェブブラウザ、中間層アプリケーション、リレーショナルデータベース管理システム(RDBMS)など、プログラムデータ3214およびオペレーティングシステム3216を含んでもよい。例として、オペレーティングシステム3216は、Microsoft Windows(登録商標)、Apple Macintosh(登録商標)および/もしくはLinuxオペレーティングシステムのさまざまなバージョン、市場で入手可能なさまざまなUNIX(登録商標)またはUNIXライク・オペレーティングシステム(さまざまなGNU/Linuxオペレーティングシステム、Google Chrome(登録商標)OSなどを含むが、これらに限定されない)、ならびに/またはiOS、Windows(登録商標) Phone、Android(登録商標) OS、BlackBerry(登録商標) 29 OS、およびPalm(登録商標) OSなどのモバイルオペレーティングシステムを含んでもよい。
ストレージサブシステム3218は、さらに、いくつかの実施形態の機能を提供する基本的なプログラミングおよびデータ構造を記憶するための有形のコンピュータ読取可能記憶媒体を提供してもよい。プロセッサによって実行されると上記の機能を提供するソフトウェア(プログラム、コードモジュール、命令)がストレージサブシステム3218に記憶されてもよい。これらのソフトウェアモジュールまたは命令は処理ユニット3204によって実行されてもよい。ストレージサブシステム3218は、さらに、本発明に従って用いられるデータを記憶するためのリポジトリを提供してもよい。
ストレージサブシステム3200は、さらに、コンピュータ読取可能記憶媒体3222にさらに接続され得るコンピュータ読取可能記憶媒体リーダ3220を含んでもよい。システムメモリ3210とともに、およびオプションとしてシステムメモリ3210との組合せで、コンピュータ読取可能記憶媒体3222は、コンピュータ読取可能情報を一時的および/またはより永続的に含み、記憶し、送信し、および検索取得するための、遠隔の、ローカルな、固定された、および/またはリムーバブルな記憶装置に記憶媒体を加えたものを包括的に表現してもよい。
コードまたはコードの一部を含むコンピュータ読取可能記憶媒体3222は、さらに、情報の記憶および/または送信のための任意の方法または技術において実現される揮発性および不揮発性の、リムーバブルおよび非リムーバブルな媒体などであるがそれらに限定はされない、記憶媒体および通信媒体を含む、当該技術分野において公知であるかまたは用いられる任意の適切な媒体を含み得る。これは、RAM、ROM、電子的に消去可能なプログラマブルROM(EEPROM)、フラッシュメモリもしくは他のメモリ技術、CD−ROM、デジタル多用途ディスク(DVD)、もしくは他の光記憶装置、磁気カセット、磁気テープ、磁気ディスク記憶もしくは他の磁気記憶装置、または他の有形のコンピュータ読取可能媒体などの、有形のコンピュータ読取可能記憶媒体を含み得る。これは、さらに、所望の情報を送信するよう使用可能であり、コンピューティングシステム3200によってアクセス可能である、データ信号、データ伝送または任意の他の媒体などの、非有形のコンピュータ読取可能媒体を含み得る。
一例として、コンピュータ読取可能記憶媒体3222は、非リムーバブルの、不揮発性磁気媒体において読出または書込を行なうハードディスクドライブ、リムーバブルの不揮発性磁気ディスクにおいて読出または書込を行なう磁気ディスクドライブ、およびCD ROM、DVD、およびブルーレイ(登録商標)ディスク、もしくは他の光媒体などのようなリムーバブルの不揮発性光ディスクにおいて読出または書込を行なう光ディスクドライブを含んでもよい。コンピュータ読取可能記憶媒体3222は、Zip(登録商標)ドライブ、フラッシュメモリカード、ユニバーサルシリアルバス(USB)フラッシュドライブ、セキュアデジタル(SD)カード、DVDディスク、デジタルビデオテープなどを含み得るがそれらに限定はされない。コンピュータ読取可能記憶媒体3222は、さらに、フラッシュメモリに基づくSSDなどの不揮発性メモリ、エンタープライズフラッシュドライブ、ソリッドステートROMなどに基づくソリッドステートドライブ(SSD)、ソリッドステートRAM、ダイナミックRAM、スタティックRAM、DRAMに基づくSSD、磁気抵抗RAM(MRAM)SSDなどの揮発性メモリに基づくSSD、ならびにDRAMとフラッシュメモリに基づくSSDとの組合せを用いるハイブリッドSSDを含んでもよい。ディスクドライブおよびそれらの関連のコンピュータ読取可能媒体は、コンピュータシステム3200のためのコンピュータ読取可能命令、データ構造、プログラムモジュールおよび他のデータの不揮発性ストレージを提供してもよい。
通信サブシステム3224は、他のコンピュータシステムおよびネットワークへのインターフェイスを与える。通信サブシステム3224は、他のシステムとコンピュータシステム3200との間のデータの送受のためのインターフェイスとして働く。たとえば、通信サブシステム3224は、コンピュータシステム3200がインターネットを介して1つ以上の装置に接続することを可能にしてもよい。いくつかの実施形態では、通信サブシステム3224は、(たとえばセルラー電話技術、3G、4GもしくはEDGE(グローバル進化のための高速データレート)などの先進データネットワーク技術、WiFi(IEEE802.11ファミリー規格、もしくは他のモバイル通信技術、またはそれらの任意の組合せを用いて)無線音声および/またはデータネットワークにアクセスするための無線周波数(radio frequency:RF)送受信機コンポーネント、グローバルポジショニングシステム(global positioning system:GPS)受信機コンポーネント、ならびに/または他のコンポーネントを含み得る。いくつかの実施形態では、通信サブシステム3224は無線インターフェイスに加えて、またはそれに代わって、有線ネットワーク接続(たとえばイーサネット)を提供することができる。
いくつかの実施形態では、通信サブシステム3224は、さらに、コンピュータシステム3200を用い得る1人以上のユーザのために、入力通信を、構造化されたデータフィードおよび/または構造化されないデータフィード3226、イベントストリーム3228、イベント更新3230などの形式で受信してもよい。
例として、通信サブシステム3224は、データフィード3226を、実時間で、ツイッター(登録商標)フィード、フェースブック(登録商標)更新、Rich Site Summary(RSS)フィードなどのウェブフィード、および/もしくは1つ以上の第三者情報源からの実時間更新などのソーシャルネットワークおよび/または他の通信サービスのユーザから受信するよう構成されてもよい。
加えて、通信サブシステム3224は、さらに、データを、明示的な端部を有さない本質的に連続的または無限であり得る、実時間イベントのイベントストリーム3228および/またはイベント更新3230を含み得る、連続データストリームの形式で受信するよう構成されてもよい。連続データを生成するアプリケーションの例は、たとえば、センサデータアプリケーション、金融株式相場表示板、ネットワーク性能測定ツール(たとえばネットワーク監視およびトラフィック管理アプリケーション)、クリックストリーム解析ツール、自動車交通監視などを含んでもよい。
通信サブシステム3224は、さらに、構造化されたデータフィードおよび/または構造化されないデータフィード3226、イベントストリーム3228、イベント更新3230などを、コンピュータシステム3200に結合される1つ以上のストリーミングデータソースコンピュータとの通信状態にあり得る1つ以上のデータベースに出力するよう構成されてもよい。
コンピュータシステム3200は、手持ち式の携帯装置(たとえばiPhone(登録商標)セルラー電話、iPad(登録商標)コンピューティングタブレット、PDA)、ウェアラブルデバイス(たとえばGoogle Glass(登録商標)頭部装着型ディスプレイ)、PC、ワークステーション、メインフレーム、キオスク、サーバラック、または他の任意のデータ処理システムを含む、さまざまなタイプのもののうちの1つであり得る。
コンピュータおよびネットワークが常に変化する性質であるため、図に示されるコンピュータシステム3200の記載は具体的な例としてのみ意図される。図に示されるシステムより多いかまたは少ないコンポーネントを有する数多くの他の構成が可能である。たとえば、カスタマイズされたハードウェアが用いられてもよく、および/または、特定の要素がハードウェア、ファームウェア、ソフトウェア(アプレットを含む)、またはある組合せにおいて実現されてもよい。さらに、ネットワーク入力/出力装置などの他のコンピューティングデバイスへの接続が用いられてもよい。ここに与えられる開示および教示に基づいて、当業者はさまざまな実施形態を実現するための他の態様および/または方法を理解するだろう。
前述の明細書において、本発明の局面はその特定の実施形態を参照して記載されているが、当業者は本発明がそれに限定されないことを認識するだろう。上記の発明のさまざまな特徴および局面は個別に、または併せて用いられてもよい。さらに、実施形態は、明細書のより広い精神および範囲から逸脱することなく、本明細書に記載されるものを超えて、任意の数の環境および適用例において利用することができる。明細書および図面は、したがって、限定的ではなく、例示的なものとして見なされるべきである。
その教示がこの開示において提示され得る1つ以上の発明のうちのいずれかのさまざまな実施形態が、ソフトウェア、ファームウェア、ハードウェアにおいて、またはそれらを組合せてロジックの形で実現され得る。ロジックは、この開示において提示された発明のさまざまな実施形態において開示され得る一組のステップを行なうように、ロジックマシンの中央処理装置(CPUまたはプロセッサ)に指示するように適合された一組の命令として、マシンアクセス可能なメモリ、マシン読取可能な物品(article)、有形のコンピュータ読取可能媒体、コンピュータ読取可能記憶媒体、または他のコンピュータ/マシン読取可能媒体に格納されてもよい。ロジックは、コードモジュールが、この開示において提示された発明のさまざまな実施形態において方法またはプロセスを行なうために実行される際に、コンピュータシステムまたは情報処理装置のプロセッサにより動作可能になると、ソフトウェアプログラムまたはコンピュータプログラム製品の一部を形成し得る。ここに提供されたこの開示および教示に基づいて、当業者であれば、提示された発明のうちの1つ以上の発明のさまざまな実施形態の開示された動作または機能性のいずれかを、ソフトウェア、ファームウェア、ハードウェア、またはそれらの組合せで実現するための他のやり方、変形例、修正例、代替例、および/または方法を理解するであろう。
その教示がこの開示において提示され得るそれらの発明のうちのいずれか1つの開示された例、実現化例、およびさまざまな実施形態は、この開示の教示を適正な明確性で当業者に伝えるために例示されているに過ぎない。これらの実現化例および実施形態は例示的な図解または特定の図を参照して説明され得るため、説明された方法および/または特定の構造のさまざまな修正例または適合例が、当業者に明らかとなり得る。ここに見出されたこの開示およびこれらの教示に依存し、かつ、教示が技術を進歩させた際に経た、すべてのそのような修正例、適合例、または変形例は、その教示がこの開示において提示され得る1つ以上の発明の範囲内にあると考えられるべきである。よって、開示において提示された発明は、具体的に示された実施形態にまったく限定されないということが理解されるため、本説明および図面は限定的な意味で考えられるべきでない。
したがって、上述の説明およびいずれの添付図面、図解、および図も、限定的ではなく例示的であるよう意図されている。したがって、この開示内において提示されたいずれの発明の範囲も、上述の説明および図に示されたそれらの実施形態を単に参照するのではなく、係属中の請求項をそれらの完全な範囲または均等物とともに参照して、判断されるべきである。

Claims (18)

  1. 方法であって、
    アプリケーション開発フレームワークのユーザによってなされた第1のジェスチャをコンピュータにおいて受取るステップを含み、前記第1のジェスチャは、前記アプリケーション開発フレームワークで開発されるモバイルアプリケーションのユーザインターフェイスにデータソースをバインドするものであり、前記方法はさらに、
    前記データソースにおいて利用可能な1セットのデータポイントを前記コンピュータによって決定するステップと、
    前記ユーザインターフェイスによって提供される情報に基づいて前記ユーザインターフェイスのうち1セットのデータ・バインド可能なエリアを前記コンピュータによって決定するステップと、
    前記アプリケーション開発フレームワークの前記ユーザによってなされた第2のジェスチャを前記コンピュータにおいて受取るステップとを含み、前記第2のジェスチャは、前記データソースにおいて利用可能なデータポイントを前記ユーザインターフェイスのデータ・バインド可能なエリアにリンクするものであり、
    前記方法はさらに、
    前記第2のジェスチャに従って前記データポイントによって影響される前記データ・バインド可能なエリアの決定に基づいて前記ユーザインタフェースの前記データ・バインド可能なエリアを前記コンピュータによってハイライトするステップと、
    前記データソースにおいて利用可能な前記データポイントを参照して前記データ・バインド可能なエリアの予め定められた表現を、前記コンピュータによって修正するステップを含む、方法。
  2. 前記アプリケーション開発フレームワークの前記ユーザによってなされた前記第1のジェスチャを前記コンピュータにおいて受取るステップは、前記データソースの視覚的表現をサービスのカタログから前記ユーザインターフェイスの視覚的表現上にドラッグする前記ユーザを示す情報を受取るステップを含む、請求項1に記載の方法。
  3. 前記データソースにおいて利用可能な前記1セットのデータポイントを前記コンピュータによって決定するステップは、RESTまたはSOAP定義にアクセスするステップを含む、請求項1または2に記載の方法。
  4. 前記データソースにおいて利用可能な前記1セットのデータポイントを前記コンピュータによって決定するステップは、ハーベスタから情報を受取るステップを含み、前記ハーベスタは、デプロイされたサービスをイントロスペクションし、1つ以上のクラウドベースのプロジェクトにおいて発見されたサービスを表現するAPIアセットを作成する、請求項1または2に記載の方法。
  5. 前記ユーザインターフェイスによって提供される前記情報に基づいて前記ユーザインターフェイスのうち前記1セットのデータ・バインド可能なエリアを前記コンピュータによって決定するステップは、
    前記ユーザインターフェイスに関連付けられたテンプレートを識別するステップと、
    前記テンプレートに基づいて、前記1セットのデータ・バインド可能なエリアに対応する1セットのユーザインターフェイス要素を決定するステップとを含む、請求項1から4のいずれかに記載の方法。
  6. 前記アプリケーション開発フレームワークの前記ユーザによってなされた前記第2のジェスチャを前記コンピュータにおいて受取るステップは、前記データソースにおいて利用可能な前記データポイントの視覚的表現を、前記データソースにおいて利用可能な前記1セットのデータポイントの視覚的表現から、前記データ・バインド可能なエリアの視覚的表現上にドラッグする前記ユーザを示す情報を受取るステップを含む、請求項1から5のいずれかに記載の方法。
  7. 前記データソースにおいて利用可能な前記データポイントを参照して前記データ・バインド可能なエリアの前記予め定められた表現を前記コンピュータによって修正するステップは、前記データソースにおいて利用可能な前記データポイントを参照して前記ユーザインターフェイスをプレビューするときに用いられる第1のデータについての参照を更新するステップを含む、請求項1から6のいずれかに記載の方法。
  8. 前記データソースにデータを要求するために必要な1セットのパラメータを前記コンピュータによって決定するステップと、
    前記ユーザインターフェイスによって提供される前記情報に基づいて1セットのパラメータ・ソースを前記コンピュータによって決定するステップと、
    前記アプリケーション開発フレームワークの前記ユーザによってなされた第3のジェスチャを前記コンピュータにおいて受取るステップとを含み、前記第3のジェスチャは、パラメータをパラメータ・ソースにリンクするものである、請求項1から7のいずれかに記載の方法。
  9. コンピュータ読取り可能プログラムであって、前記コンピュータ読取り可能プログラムは、コンピュータのプロセッサによって実行されると、前記プロセッサに、
    アプリケーション開発フレームワークのユーザによってなされた第1のジェスチャを受取らせ、前記第1のジェスチャは、前記アプリケーション開発フレームワークで開発されるモバイルアプリケーションのユーザインターフェイスにデータソースをバインドするものであり、前記プロセッサにさらに、
    前記データソースにおいて利用可能な1セットのデータポイントを決定させ、
    前記ユーザインターフェイスによって提供される情報に基づいて前記ユーザインターフェイスのうち1セットのデータ・バインド可能なエリアを決定させ、
    前記アプリケーション開発フレームワークの前記ユーザによってなされた第2のジェスチャを受取らせ、前記第2のジェスチャは、前記データソースにおいて利用可能なデータポイントを前記ユーザインターフェイスのデータ・バインド可能なエリアにリンクするものであり、
    前記プロセッサにさらに、
    前記第2のジェスチャに従って前記データポイントによって影響される前記データ・バインド可能なエリアの決定に基づいて前記ユーザインタフェースの前記データ・バインド可能なエリアをハイライトさせ、
    前記データソースにおいて利用可能な前記データポイントを参照して前記データ・バインド可能なエリアの予め定められた表現を修正させる、コンピュータ読取り可能プログラム。
  10. システムであって、
    ハードウェアプロセッサと、
    1セットの命令を記憶するメモリとを含み、前記1セットの命令は、前記プロセッサによって実行されると、前記プロセッサに、
    アプリケーション開発フレームワークのユーザによってなされた第1のジェスチャを受取らせ、前記第1のジェスチャは、前記アプリケーション開発フレームワークで開発されるモバイルアプリケーションのユーザインターフェイスにデータソースをバインドするものであり、前記プロセッサにさらに、
    前記データソースにおいて利用可能な1セットのデータポイントを決定させ、
    前記ユーザインターフェイスによって提供される情報に基づいて前記ユーザインターフェイスのうち1セットのデータ・バインド可能なエリアを決定させ、
    前記アプリケーション開発フレームワークの前記ユーザによってなされた第2のジェスチャを受取らせ、前記第2のジェスチャは、前記データソースにおいて利用可能なデータポイントを前記ユーザインターフェイスのデータ・バインド可能なエリアにリンクするものであり、
    前記プロセッサにさらに、
    前記第2のジェスチャに従って前記データポイントによって影響される前記データ・バインド可能なエリアの決定に基づいて前記ユーザインタフェースの前記データ・バインド可能なエリアをハイライトさせ、
    前記データソースにおいて利用可能な前記データポイントを参照して前記データ・バインド可能なエリアの予め定められた表現を修正させる、システム。
  11. 前記アプリケーション開発フレームワークの前記ユーザによってなされた前記第1のジェスチャを受取るために、前記プロセッサに、前記データソースの視覚的表現をサービスのカタログから前記ユーザインターフェイスの視覚的表現上にドラッグする前記ユーザを示す情報を受取らせる、請求項10に記載のシステム。
  12. 前記データソースにおいて利用可能な前記1セットのデータポイントを決定するために、前記プロセッサに、RESTまたはSOAP定義にアクセスさせる、請求項10または11に記載のシステム。
  13. 前記データソースにおいて利用可能な前記1セットのデータポイントを決定するために、前記プロセッサに、ハーベスタからの情報を受取らせ、前記ハーベスタは、デプロイされたサービスをイントロスペクションし、1つ以上のクラウドベースのプロジェクトにおいて発見されたサービスを表現するAPIアセットを作成する、請求項10から12のいずれかに記載のシステム。
  14. 前記ユーザインターフェイスによって提供される前記情報に基づいて前記ユーザインターフェイスのうち前記1セットのデータ・バインド可能なエリアを決定するために、前記プロセッサに、
    前記ユーザインターフェイスに関連付けられたテンプレートを識別させ、
    前記テンプレートに基づいて、前記1セットのデータ・バインド可能なエリアに対応する1セットのユーザインターフェイス要素を決定させる、請求項10から13のいずれかに記載のシステム。
  15. 前記アプリケーション開発フレームワークの前記ユーザによってなされた前記第2のジェスチャを受取るために、前記プロセッサに、前記データソースにおいて利用可能な前記データポイントの視覚的表現を、前記データソースにおいて利用可能な前記1セットのデータポイントの視覚的表現から前記データ・バインド可能なエリアの視覚的表現上にドラッグする前記ユーザを示す情報を受取らせる、請求項10から14のいずれかに記載のシステム。
  16. 前記データソースにおいて利用可能な前記データポイントを参照して前記データ・バインド可能なエリアの前記予め定められた表現を修正するために、前記プロセッサに、前記データソースにおいて利用可能な前記データポイントを参照して前記ユーザインターフェイスをプレビューするときに用いられる第1のデータについての参照を更新させる、請求項10から15のいずれかに記載のシステム。
  17. 前記プロセッサにさらに、
    前記データソースにデータを要求するために必要な1セットのパラメータを決定させ、
    前記ユーザインターフェイスによって提供される前記情報に基づいて1セットのパラメータ・ソースを決定させ、
    前記アプリケーション開発フレームワークの前記ユーザによってなされた第3のジェスチャを受取らせ、前記第3のジェスチャは、パラメータをパラメータ・ソースにリンクするものである、請求項10から16のいずれかに記載のシステム。
  18. プロセッサによって実行されると、当該プロセッサに請求項1〜8のいずれか1項に記載の方法を実行させる、コンピュータ読取可能プログラム。
JP2017516340A 2014-09-26 2015-09-28 モバイルアプリケーションのための効率的および直観的なデータ・バインディング Active JP6661620B2 (ja)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US201462055988P 2014-09-26 2014-09-26
US62/055,988 2014-09-26
US14/865,842 2015-09-25
US14/865,842 US10073679B2 (en) 2014-09-26 2015-09-25 Efficient and intuitive databinding for mobile applications
PCT/US2015/052637 WO2016049626A1 (en) 2014-09-26 2015-09-28 Efficient and intuitive databinding for mobile applications

Publications (3)

Publication Number Publication Date
JP2017533503A JP2017533503A (ja) 2017-11-09
JP2017533503A5 JP2017533503A5 (ja) 2018-08-16
JP6661620B2 true JP6661620B2 (ja) 2020-03-11

Family

ID=55584453

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2017516340A Active JP6661620B2 (ja) 2014-09-26 2015-09-28 モバイルアプリケーションのための効率的および直観的なデータ・バインディング

Country Status (4)

Country Link
US (1) US10073679B2 (ja)
EP (1) EP3198416B1 (ja)
JP (1) JP6661620B2 (ja)
CN (1) CN107408042B (ja)

Families Citing this family (120)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9753700B2 (en) * 2013-05-29 2017-09-05 Sap Se Application building blocks for on demand and on premise usage
US10290133B2 (en) 2014-09-26 2019-05-14 Oracle International Corporation High fidelity interactive screenshots for mobile applications
US9851968B2 (en) * 2014-09-26 2017-12-26 Oracle International Corporation High performant iOS template based application build system
US9826045B2 (en) 2014-09-26 2017-11-21 Oracle International Corporation Efficient means to test server generated applications on mobile device
US10073679B2 (en) 2014-09-26 2018-09-11 Oracle International Corporation Efficient and intuitive databinding for mobile applications
US9858174B2 (en) * 2014-09-26 2018-01-02 Oracle International Corporation Updatable native mobile application for testing new features
US10025758B2 (en) * 2015-04-27 2018-07-17 Microsoft Technology Licensing, Llc Support for non-native file types in web application environment
US10459600B2 (en) * 2015-06-24 2019-10-29 Microsoft Technology Licensing, Llc Conversion of platform-independent accessibility logic into platform-specific accessibility functionality
US11102313B2 (en) 2015-08-10 2021-08-24 Oracle International Corporation Transactional autosave with local and remote lifecycles
US10582001B2 (en) 2015-08-11 2020-03-03 Oracle International Corporation Asynchronous pre-caching of synchronously loaded resources
US10013668B2 (en) 2015-08-14 2018-07-03 Oracle International Corporation Secure storage of enterprise certificates for cloud services
US10452497B2 (en) 2015-08-14 2019-10-22 Oracle International Corporation Restoration of UI state in transactional systems
US10419514B2 (en) 2015-08-14 2019-09-17 Oracle International Corporation Discovery of federated logins
US9898261B1 (en) * 2015-09-30 2018-02-20 Open Text Corporation Method and system for configuring processes of software applications using activity fragments
US10073583B2 (en) * 2015-10-08 2018-09-11 Adobe Systems Incorporated Inter-context coordination to facilitate synchronized presentation of image content
US10582012B2 (en) 2015-10-16 2020-03-03 Oracle International Corporation Adaptive data transfer optimization
US20170177706A1 (en) * 2015-12-16 2017-06-22 Quixey, Inc. Category-Based Search System and Method for Providing Application Related Search Results
US10581820B2 (en) 2016-05-11 2020-03-03 Oracle International Corporation Key generation and rollover
US10341410B2 (en) 2016-05-11 2019-07-02 Oracle International Corporation Security tokens for a multi-tenant identity and data security management cloud service
US10878079B2 (en) 2016-05-11 2020-12-29 Oracle International Corporation Identity cloud service authorization model with dynamic roles and scopes
US10425386B2 (en) 2016-05-11 2019-09-24 Oracle International Corporation Policy enforcement point for a multi-tenant identity and data security management cloud service
US9838377B1 (en) 2016-05-11 2017-12-05 Oracle International Corporation Task segregation in a multi-tenant identity and data security management cloud service
US10454940B2 (en) 2016-05-11 2019-10-22 Oracle International Corporation Identity cloud service authorization model
US11314546B2 (en) * 2016-11-18 2022-04-26 Data Accelerator Ltd Method and system for executing a containerized stateful application on a stateless computing platform using machine learning
US9959099B2 (en) * 2016-07-25 2018-05-01 Sap Se Framework for on demand functionality
US10585682B2 (en) 2016-08-05 2020-03-10 Oracle International Corporation Tenant self-service troubleshooting for a multi-tenant identity and data security management cloud service
US10735394B2 (en) 2016-08-05 2020-08-04 Oracle International Corporation Caching framework for a multi-tenant identity and data security management cloud service
US10263947B2 (en) 2016-08-05 2019-04-16 Oracle International Corporation LDAP to SCIM proxy service
US10255061B2 (en) 2016-08-05 2019-04-09 Oracle International Corporation Zero down time upgrade for a multi-tenant identity and data security management cloud service
US10516672B2 (en) 2016-08-05 2019-12-24 Oracle International Corporation Service discovery for a multi-tenant identity and data security management cloud service
US10530578B2 (en) 2016-08-05 2020-01-07 Oracle International Corporation Key store service
US10721237B2 (en) 2016-08-05 2020-07-21 Oracle International Corporation Hierarchical processing for a virtual directory system for LDAP to SCIM proxy service
US10484382B2 (en) 2016-08-31 2019-11-19 Oracle International Corporation Data management for a multi-tenant identity cloud service
US10594684B2 (en) 2016-09-14 2020-03-17 Oracle International Corporation Generating derived credentials for a multi-tenant identity cloud service
US10846390B2 (en) 2016-09-14 2020-11-24 Oracle International Corporation Single sign-on functionality for a multi-tenant identity and data security management cloud service
US10511589B2 (en) 2016-09-14 2019-12-17 Oracle International Corporation Single logout functionality for a multi-tenant identity and data security management cloud service
US10791087B2 (en) 2016-09-16 2020-09-29 Oracle International Corporation SCIM to LDAP mapping using subtype attributes
WO2018053258A1 (en) 2016-09-16 2018-03-22 Oracle International Corporation Tenant and service management for a multi-tenant identity and data security management cloud service
US10484243B2 (en) 2016-09-16 2019-11-19 Oracle International Corporation Application management for a multi-tenant identity cloud service
US10445395B2 (en) 2016-09-16 2019-10-15 Oracle International Corporation Cookie based state propagation for a multi-tenant identity cloud service
US10341354B2 (en) 2016-09-16 2019-07-02 Oracle International Corporation Distributed high availability agent architecture
US10567364B2 (en) 2016-09-16 2020-02-18 Oracle International Corporation Preserving LDAP hierarchy in a SCIM directory using special marker groups
US10904074B2 (en) 2016-09-17 2021-01-26 Oracle International Corporation Composite event handler for a multi-tenant identity cloud service
CN106502730B (zh) * 2016-10-10 2020-01-14 Oppo广东移动通信有限公司 一种多开应用的关联管理方法、装置及终端
US10341420B1 (en) * 2016-10-14 2019-07-02 Amazon Technologies, Inc. Approaches for preparing and delivering bulk data to clients
CN106648796A (zh) * 2016-12-29 2017-05-10 宇龙计算机通信科技(深圳)有限公司 一种应用处理方法及装置
US10545811B2 (en) * 2017-01-11 2020-01-28 International Business Machines Corporation Automatic root cause analysis for web applications
US10915303B2 (en) * 2017-01-26 2021-02-09 Sap Se Run time integrated development and modification system
CN107678778B (zh) * 2017-03-14 2019-12-13 平安科技(深圳)有限公司 基于Hybrid的兼容方法、适配件、运行装置及系统
US10261836B2 (en) 2017-03-21 2019-04-16 Oracle International Corporation Dynamic dispatching of workloads spanning heterogeneous services
US10454915B2 (en) 2017-05-18 2019-10-22 Oracle International Corporation User authentication using kerberos with identity cloud service
US20200272292A1 (en) * 2017-09-13 2020-08-27 Schlumberger Technology Corporation Workflow driven workspace using exploration and/or production data in the cloud
US10348858B2 (en) 2017-09-15 2019-07-09 Oracle International Corporation Dynamic message queues for a microservice based cloud service
US10831789B2 (en) 2017-09-27 2020-11-10 Oracle International Corporation Reference attribute query processing for a multi-tenant cloud service
US10834137B2 (en) 2017-09-28 2020-11-10 Oracle International Corporation Rest-based declarative policy management
US11271969B2 (en) 2017-09-28 2022-03-08 Oracle International Corporation Rest-based declarative policy management
US10705823B2 (en) 2017-09-29 2020-07-07 Oracle International Corporation Application templates and upgrade framework for a multi-tenant identity cloud service
JP7202369B2 (ja) * 2017-09-30 2023-01-11 オラクル・インターナショナル・コーポレイション マルチテナントapiゲートウェイにおいてテナント分離を提供するためのマイクロサービスコンテナの活用
CN110020367B (zh) * 2017-12-15 2022-07-12 阿里巴巴集团控股有限公司 一种页面渲染方法及装置
CN107896230B (zh) * 2017-12-26 2020-04-10 车智互联(北京)科技有限公司 一种支持高并发命令执行通道的系统
US10394627B2 (en) * 2017-12-28 2019-08-27 Schneider Electric Software, Llc Asynchronous C#-JS data binding bridge
US10607021B2 (en) 2018-01-26 2020-03-31 Bank Of America Corporation Monitoring usage of an application to identify characteristics and trigger security control
US10715564B2 (en) 2018-01-29 2020-07-14 Oracle International Corporation Dynamic client registration for an identity cloud service
JP6954191B2 (ja) * 2018-03-12 2021-10-27 オムロン株式会社 制御システム、開発支援装置、および開発支援プログラム
US10931656B2 (en) 2018-03-27 2021-02-23 Oracle International Corporation Cross-region trust for a multi-tenant identity cloud service
US10798165B2 (en) 2018-04-02 2020-10-06 Oracle International Corporation Tenant data comparison for a multi-tenant identity cloud service
US11165634B2 (en) 2018-04-02 2021-11-02 Oracle International Corporation Data replication conflict detection and resolution for a multi-tenant identity cloud service
US11258775B2 (en) 2018-04-04 2022-02-22 Oracle International Corporation Local write for a multi-tenant identity cloud service
CN108762905B (zh) * 2018-05-24 2020-12-11 苏州乐麟无线信息科技有限公司 一种多任务事件的处理方法和装置
US11012444B2 (en) 2018-06-25 2021-05-18 Oracle International Corporation Declarative third party identity provider integration for a multi-tenant identity cloud service
US10764273B2 (en) 2018-06-28 2020-09-01 Oracle International Corporation Session synchronization across multiple devices in an identity cloud service
CN109144508A (zh) * 2018-07-23 2019-01-04 北京科东电力控制系统有限责任公司 生成、定制告警画面的方法及装置
US11693835B2 (en) 2018-10-17 2023-07-04 Oracle International Corporation Dynamic database schema allocation on tenant onboarding for a multi-tenant identity cloud service
US11321187B2 (en) 2018-10-19 2022-05-03 Oracle International Corporation Assured lazy rollback for a multi-tenant identity cloud service
US11741196B2 (en) 2018-11-15 2023-08-29 The Research Foundation For The State University Of New York Detecting and preventing exploits of software vulnerability using instruction tags
US11651357B2 (en) 2019-02-01 2023-05-16 Oracle International Corporation Multifactor authentication without a user footprint
US11061929B2 (en) 2019-02-08 2021-07-13 Oracle International Corporation Replication of resource type and schema metadata for a multi-tenant identity cloud service
US11321343B2 (en) 2019-02-19 2022-05-03 Oracle International Corporation Tenant replication bootstrap for a multi-tenant identity cloud service
US11669321B2 (en) 2019-02-20 2023-06-06 Oracle International Corporation Automated database upgrade for a multi-tenant identity cloud service
US11423111B2 (en) 2019-02-25 2022-08-23 Oracle International Corporation Client API for rest based endpoints for a multi-tenant identify cloud service
US11792226B2 (en) 2019-02-25 2023-10-17 Oracle International Corporation Automatic api document generation from scim metadata
US11250202B2 (en) * 2019-03-19 2022-02-15 Servicenow, Inc. System and method for large volume data streaming as a service
US11586750B2 (en) * 2019-03-21 2023-02-21 Blackberry Limited Managing access to protected data file content
US11625162B2 (en) 2019-03-27 2023-04-11 Schlumberger Technology Corporation Geologic formation operations framework
EP3742381A1 (en) * 2019-05-22 2020-11-25 Dr.Ing. h.c. F. Porsche Aktiengesellschaft System for providing a travel experience to a car owner
CN110308902B (zh) * 2019-06-28 2023-10-03 百度在线网络技术(北京)有限公司 文件生成方法、装置、设备和存储介质
CN110286896B (zh) * 2019-06-28 2023-03-31 百度在线网络技术(北京)有限公司 可视化编辑方法、装置、设备及存储介质
US11635990B2 (en) 2019-07-01 2023-04-25 Nutanix, Inc. Scalable centralized manager including examples of data pipeline deployment to an edge system
US11501881B2 (en) 2019-07-03 2022-11-15 Nutanix, Inc. Apparatus and method for deploying a mobile device as a data source in an IoT system
CN110377283B (zh) * 2019-07-08 2022-10-11 北京亚鸿世纪科技发展有限公司 Web前后端分离开发时前端有效数据的实现及同步方法
US10904355B1 (en) 2019-07-26 2021-01-26 International Business Machines Corporation Enterprise workspaces
US11206249B2 (en) 2019-07-26 2021-12-21 International Business Machines Corporation Enterprise workspaces
US11228575B2 (en) 2019-07-26 2022-01-18 International Business Machines Corporation Enterprise workspaces
JP7233342B2 (ja) * 2019-08-08 2023-03-06 株式会社日立製作所 サービス連携支援システムおよびその方法
US11687378B2 (en) 2019-09-13 2023-06-27 Oracle International Corporation Multi-tenant identity cloud service with on-premise authentication integration and bridge high availability
US11870770B2 (en) 2019-09-13 2024-01-09 Oracle International Corporation Multi-tenant identity cloud service with on-premise authentication integration
US11611548B2 (en) 2019-11-22 2023-03-21 Oracle International Corporation Bulk multifactor authentication enrollment
US11290464B2 (en) * 2019-12-18 2022-03-29 Voya Services Company Systems and methods for adaptive step-up authentication
CN111813403A (zh) * 2020-07-09 2020-10-23 北京亚鸿世纪科技发展有限公司 大屏数据可视化开发中拖拽组件数据管理的方法和装置
US10963272B1 (en) * 2020-07-09 2021-03-30 Coupang Corp. Systems and methods for deploying low-application-impact user interfaces
CN111597484B (zh) * 2020-07-22 2020-10-27 成都新希望金融信息有限公司 一种ui动态生成方法
US11522869B2 (en) * 2020-08-19 2022-12-06 Lenovo (Singapore) Pte. Ltd. User approval of application communication based on location or domain name for device
US11726764B2 (en) 2020-11-11 2023-08-15 Nutanix, Inc. Upgrade systems for service domains
US11665221B2 (en) 2020-11-13 2023-05-30 Nutanix, Inc. Common services model for multi-cloud platform
US11652828B1 (en) 2021-01-11 2023-05-16 Wells Fargo Bank, N.A. Systems and methods for automated anomalous behavior detection and risk-scoring individuals
US11113077B1 (en) 2021-01-20 2021-09-07 Sergio Pérez Cortés Non-Invasively integrated main information system modernization toolbox
CN112764732B (zh) * 2021-01-25 2024-03-08 百果园技术(新加坡)有限公司 一种应用于加载目标资源的代码生成方法及装置
CN112817977A (zh) * 2021-01-28 2021-05-18 山东浪潮通软信息科技有限公司 一种移动端展示和管理SaaS应用的方法
US11797638B2 (en) 2021-02-24 2023-10-24 Salesforce.Com, Inc. Aggregate component for parallel browser-initiated actions
US11736585B2 (en) 2021-02-26 2023-08-22 Nutanix, Inc. Generic proxy endpoints using protocol tunnels including life cycle management and examples for distributed cloud native services and applications
US20220283791A1 (en) * 2021-03-08 2022-09-08 Charles Amashta Systems and Methods For Cascading Style Sheets in Native Mobile Applications
US11321422B1 (en) * 2021-03-09 2022-05-03 Salesforce.Com, Inc. User-configurable aggregate web components
CN113312656B (zh) * 2021-07-29 2022-04-15 阿里云计算有限公司 数据轮转方法、装置、设备及系统
CN113608895B (zh) * 2021-08-06 2024-04-09 湖南快乐阳光互动娱乐传媒有限公司 一种web后端数据的接入方法及系统
US11868711B2 (en) 2021-08-16 2024-01-09 Google Llc Creating dynamic data-bound container hosted views and editable forms
US20230084581A1 (en) * 2021-09-16 2023-03-16 Voyetra Turtle Beach Inc. Video game controller with a graphical user interface
US12003512B2 (en) * 2021-10-21 2024-06-04 Cisco Technology, Inc. Limiting discovery of a protected resource in a zero trust access model
US20230409992A1 (en) * 2022-06-15 2023-12-21 Sap Se User interface and implementation for application service custom logic
CN116382835B (zh) * 2023-06-06 2023-08-01 天津市天河计算机技术有限公司 基于集群的应用可视化方法、系统、设备和介质
CN117435661A (zh) * 2023-12-21 2024-01-23 深圳竹云科技股份有限公司 数据库连接配置方法、装置、计算机设备和存储介质

Family Cites Families (98)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5550971A (en) * 1993-06-30 1996-08-27 U S West Technologies, Inc. Method and system for generating a user interface adaptable to various database management systems
US6097382A (en) * 1998-05-12 2000-08-01 Silverstream Software, Inc. Method and apparatus for building an application interface
US7116310B1 (en) * 1999-04-06 2006-10-03 Microsoft Corporation Application programming interface that maps input device controls to software actions
US6631497B1 (en) * 1999-07-19 2003-10-07 International Business Machines Corporation Binding data from data source to cells in a spreadsheet
US8032634B1 (en) 1999-08-23 2011-10-04 Oracle America, Inc. Approach for allocating resources to an apparatus based on resource requirements
US7111307B1 (en) 1999-11-23 2006-09-19 Microsoft Corporation Method and system for monitoring and verifying software drivers using system resources including memory allocation and access
US6631519B1 (en) * 2000-03-30 2003-10-07 Microsoft Corporation Automated schema and interface generation
US7203678B1 (en) * 2001-03-27 2007-04-10 Bea Systems, Inc. Reconfigurable query generation system for web browsers
US7062502B1 (en) * 2001-12-28 2006-06-13 Kesler John N Automated generation of dynamic data entry user interface for relational database management systems
US20040111424A1 (en) 2002-08-21 2004-06-10 Roman Kendyl A. Data-driven web application generator and server
US7412658B2 (en) * 2002-11-14 2008-08-12 Sap Ag Modeling system for graphic user interface
US7337434B2 (en) 2003-04-29 2008-02-26 Sony Ericsson Mobile Communications Ab Off-device class/resource loading methods, systems and computer program products for debugging a Java application in a Java micro device
US20040250257A1 (en) 2003-06-04 2004-12-09 Oleg Koutyrine System and method for generator state object validation
US20050172261A1 (en) 2004-01-30 2005-08-04 Yuknewicz Paul J. Architecture for creating a user interface using a data schema
US20050188350A1 (en) * 2004-02-20 2005-08-25 Microsoft Corporation Data binding
US7577938B2 (en) * 2004-02-20 2009-08-18 Microsoft Corporation Data association
WO2005093607A1 (en) * 2004-02-27 2005-10-06 Ebay Inc. Method and system to monitor a diverse heterogeneous application environment
US7650594B2 (en) 2004-05-27 2010-01-19 National Instruments Corporation Graphical program analyzer with framework for adding user-defined tests
US7757207B2 (en) * 2004-08-20 2010-07-13 Microsoft Corporation Form skin and design time WYSIWYG for .net compact framework
US7523129B1 (en) * 2004-09-15 2009-04-21 Microsoft Corporation Data-binding enhancements
US7926027B2 (en) * 2004-10-19 2011-04-12 Microsoft Corporation Binding to business objects and web services
US7464297B2 (en) 2005-06-23 2008-12-09 Microsoft Corporation System and method for testing software using data-driven test variations
US7849447B1 (en) 2005-11-21 2010-12-07 Verizon Laboratories Inc. Application testing and evaluation
US7735068B2 (en) * 2005-12-01 2010-06-08 Infosys Technologies Ltd. Automated relationship traceability between software design artifacts
US7707553B2 (en) 2005-12-08 2010-04-27 International Business Machines Corporation Computer method and system for automatically creating tests for checking software
US7730427B2 (en) * 2005-12-29 2010-06-01 Sap Ag Desktop management scheme
US8578282B2 (en) * 2006-03-15 2013-11-05 Navisense Visual toolkit for a virtual user interface
US7577909B2 (en) * 2006-05-16 2009-08-18 Microsoft Corporation Flexible management user interface from management models
JP2008269554A (ja) * 2007-03-29 2008-11-06 Hitachi Software Eng Co Ltd ソースコード生成装置
US20080253544A1 (en) * 2007-04-12 2008-10-16 Microsoft Corporation Automatically aggregated probabilistic personal contacts
US8739131B2 (en) 2007-05-04 2014-05-27 International Business Machines Corporation Completing functional testing
US8037135B2 (en) 2007-06-29 2011-10-11 Microsoft Corporation Automatic distributed downloading
US20090037452A1 (en) 2007-07-31 2009-02-05 Ahmad Baitalmal System and Method for Synchronizing Applications
US8132113B2 (en) 2007-09-14 2012-03-06 Oracle America, Inc. REST application exploration
US20090320004A1 (en) * 2007-11-02 2009-12-24 Kirk Fertitta Test Instrument Graphical User Interface
WO2009110725A2 (ko) 2008-03-04 2009-09-11 주식회사 코드에스이 3차원 응용프로그램 프레임워크 구조 및 이를 기반으로 하는 응용프로그램 구현 방법과, 3차원 응용소프트웨어 프레임워크 기반의 자동 테스트 시스템 및 그 방법
US8452567B1 (en) 2008-06-06 2013-05-28 Keithley Instruments, Inc. Test recipe distribution method and system
EP2307962A1 (en) 2008-06-06 2011-04-13 Sapient Corporation Systems and methods for visual test authoring and automation
US8166387B2 (en) * 2008-06-20 2012-04-24 Microsoft Corporation DataGrid user interface control with row details
US8769553B2 (en) 2008-07-18 2014-07-01 Sybase, Inc. Deploy anywhere framework for heterogeneous mobile application development
US8407661B2 (en) * 2008-07-28 2013-03-26 Abb Research Ltd. Method and system for creating HMI applications for an automation process
US8473854B2 (en) 2008-08-19 2013-06-25 Rockwell Automation Technologies, Inc. Visualization profiles and templates for auto-configuration of industrial automation systems
US8959000B2 (en) 2008-09-16 2015-02-17 Verizon Patent And Licensing Inc. Integrated testing systems and methods
US20100281475A1 (en) 2009-05-04 2010-11-04 Mobile On Services, Inc. System and method for mobile smartphone application development and delivery
US8788946B2 (en) 2009-11-03 2014-07-22 Oracle International Corporation Application agnostic UI integration framework for web based applications
EP2524304A1 (en) 2010-01-13 2012-11-21 Tata Consultancy Services Ltd. A computationally efficient system for developing configurable, extensible business application product lines using model-driven techniques
US8631390B2 (en) 2010-04-02 2014-01-14 Apple Inc. Archiving a build product
US9448790B2 (en) 2010-04-26 2016-09-20 Pivotal Software, Inc. Rapid updating of cloud applications
US20110302516A1 (en) 2010-06-02 2011-12-08 Oracle International Corporation Mobile design patterns
US20110314159A1 (en) 2010-06-22 2011-12-22 Iwatchlife System and method of local resource delivery
CN102063306A (zh) * 2011-01-06 2011-05-18 夏春秋 一种通过电子表单进行应用开发的技术实现方法
US9047414B1 (en) 2011-03-15 2015-06-02 Symantec Corporation Method and apparatus for generating automated test case scripts from natural language test cases
US9170917B2 (en) * 2011-04-01 2015-10-27 Paypal, Inc. Flow tracing though diverse logical and physical application and infrastructure layers/dependencies
US20120317172A1 (en) 2011-06-13 2012-12-13 International Business Machines Corporation Mobile web app infrastructure
US20120323553A1 (en) 2011-06-16 2012-12-20 Microsoft Corporation Mobile Emulator Integration
TWI476586B (zh) 2011-07-13 2015-03-11 Inst Information Industry 以雲端技術為基礎之測試系統、方法以及其電腦可讀取記錄媒體
US8745641B1 (en) 2011-07-14 2014-06-03 Google Inc. Automatic verification and anomaly detection in a representational state transfer (REST) application programming interface
US9105046B1 (en) 2011-08-05 2015-08-11 Google Inc. Constraining ad service based on app content
US9047166B2 (en) 2011-11-04 2015-06-02 MEDIASEEK, inc. System for generating application software installed on a mobile terminal
WO2013109860A1 (en) 2012-01-18 2013-07-25 Smart Online, Inc. Software builder
US20140053126A1 (en) 2012-02-13 2014-02-20 Mark A. Watson Integrated mobile application development platform
CA2786095A1 (en) 2012-03-26 2013-09-26 Quickmobile Inc. System and method for a user to dynamically update a mobile application from a generic or first application within a class of applications to create a specific or second application with said class of applications
EP2704037A3 (en) * 2012-08-31 2014-07-09 Sitecore A/S A method for generating or updating an interactive webpage
EP2909715B1 (en) 2012-10-16 2022-12-14 Citrix Systems, Inc. Application wrapping for application management framework
US9817615B2 (en) * 2012-12-03 2017-11-14 Monotype Imaging Inc. Network based font management for imaging devices
US20140173454A1 (en) * 2012-12-18 2014-06-19 Logic Studio, S.A. Method and system for designing, deploying and executing transactional multi-platform mobile applications
US9811233B2 (en) * 2013-02-12 2017-11-07 Ab Initio Technology Llc Building applications for configuring processes
US9047404B1 (en) 2013-03-13 2015-06-02 Amazon Technologies, Inc. Bridge to connect an extended development capability device to a target device
US20140282285A1 (en) * 2013-03-14 2014-09-18 Cellco Partnership D/B/A Verizon Wireless Modifying a user interface setting based on a vision ability of a user
US10607299B2 (en) * 2013-03-15 2020-03-31 Tomorrowish Llc Displaying social media content
US20140282398A1 (en) 2013-03-15 2014-09-18 Wolters Kluwer U.S. Corporation Platform for developing and distributing mobile applications
US9158534B2 (en) 2013-03-15 2015-10-13 Wolters Kluwer United States Inc. Smart endpoint architecture
US9161156B2 (en) 2013-07-31 2015-10-13 Sap Se Tiles in a mobile application framework
US20150089403A1 (en) * 2013-09-20 2015-03-26 Jin You ZHU Dynamic generation of user interface
US9223684B2 (en) 2013-09-25 2015-12-29 Microsoft Technology Licensing, Llc Online application testing across browser environments
US9251261B2 (en) * 2013-09-30 2016-02-02 Symantec Corporation Method and system for metadata driven testing of malware signatures
US10104082B2 (en) 2013-11-06 2018-10-16 William P. Jones Aggregated information access and control using a personal unifying taxonomy
US9152812B2 (en) 2013-12-03 2015-10-06 Paypal, Inc. Sensitive data protection during user interface automation testing systems and methods
KR102247410B1 (ko) 2014-02-07 2021-05-04 오라클 인터내셔날 코포레이션 모바일 클라우드 서비스 아키텍처
GB2523134A (en) * 2014-02-13 2015-08-19 Spatineo Oy Service level monitoring for geospatial web services
US10924554B2 (en) 2014-05-05 2021-02-16 Citrix Systems, Inc. Application customization
US10909552B2 (en) 2014-08-15 2021-02-02 International Business Machines Corporation Mobile application analytics framework
US9514031B2 (en) 2014-09-22 2016-12-06 International Business Machines Corporation Auto-deployment and testing of system application test cases in remote server environments
US11036933B2 (en) * 2014-09-25 2021-06-15 Oracle International Corporation User interface component autowiring
US10073679B2 (en) 2014-09-26 2018-09-11 Oracle International Corporation Efficient and intuitive databinding for mobile applications
US9851968B2 (en) 2014-09-26 2017-12-26 Oracle International Corporation High performant iOS template based application build system
US10290133B2 (en) 2014-09-26 2019-05-14 Oracle International Corporation High fidelity interactive screenshots for mobile applications
WO2016049626A1 (en) 2014-09-26 2016-03-31 Oracle International Corporation Efficient and intuitive databinding for mobile applications
US9826045B2 (en) 2014-09-26 2017-11-21 Oracle International Corporation Efficient means to test server generated applications on mobile device
US9858174B2 (en) 2014-09-26 2018-01-02 Oracle International Corporation Updatable native mobile application for testing new features
US9886244B2 (en) 2014-10-01 2018-02-06 Oracle International Corporation Rich tooling for rest application development
US9760343B2 (en) 2014-11-28 2017-09-12 Sap Se Application builder based on metadata
US10198348B2 (en) 2015-08-13 2019-02-05 Spirent Communications, Inc. Method to configure monitoring thresholds using output of load or resource loadings
US9851953B2 (en) 2015-06-29 2017-12-26 Oracle International Corporation Cloud based editor for generation of interpreted artifacts for mobile runtime
US9959100B2 (en) 2015-08-12 2018-05-01 Oracle International Corporation Efficient storage and transfer of iOS binary files
US10013668B2 (en) 2015-08-14 2018-07-03 Oracle International Corporation Secure storage of enterprise certificates for cloud services
US10277582B2 (en) 2015-08-27 2019-04-30 Microsoft Technology Licensing, Llc Application service architecture
TWI624783B (zh) 2015-09-17 2018-05-21 長茂科技股份有限公司 整合動態連結功能函式的行動裝置應用程式之建置系統及方法

Also Published As

Publication number Publication date
CN107408042B (zh) 2021-09-28
JP2017533503A (ja) 2017-11-09
CN107408042A (zh) 2017-11-28
US20160092176A1 (en) 2016-03-31
EP3198416A1 (en) 2017-08-02
EP3198416B1 (en) 2022-04-20
US10073679B2 (en) 2018-09-11

Similar Documents

Publication Publication Date Title
US11127178B2 (en) High fidelity interactive screenshots for mobile applications
JP6661620B2 (ja) モバイルアプリケーションのための効率的および直観的なデータ・バインディング
US10841385B2 (en) Efficient means to test server generated applications on mobile device
US9851968B2 (en) High performant iOS template based application build system
US9858174B2 (en) Updatable native mobile application for testing new features
US10419514B2 (en) Discovery of federated logins
US9851953B2 (en) Cloud based editor for generation of interpreted artifacts for mobile runtime
JP6679711B2 (ja) トランザクションシステムにおけるui状態の復元
US10582001B2 (en) Asynchronous pre-caching of synchronously loaded resources
US9959100B2 (en) Efficient storage and transfer of iOS binary files
US10013668B2 (en) Secure storage of enterprise certificates for cloud services
WO2016049626A1 (en) Efficient and intuitive databinding for mobile applications
US11102313B2 (en) Transactional autosave with local and remote lifecycles
CA2931750C (en) Cloud service custom execution environment
US10586061B2 (en) Federated search
US10592684B2 (en) Automatic operation detection on protected field
US20170118268A1 (en) Self describing configuration
EP3365832B1 (en) Self describing configuration with support for sharing data tables
JP7165715B2 (ja) 統合検索のためのサポートを伴う保護されたフィールド上の自動動作検出

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20180704

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20180704

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20190626

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20190702

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20190910

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20200114

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20200212

R150 Certificate of patent or registration of utility model

Ref document number: 6661620

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250