(57)【要約】【課題】Ｗｅｂアプリケーションのメタデータ駆動型ユーザインタフェースを提供する方法及びシステムを開示する。【解決手段】システムは、ホストコンポーネント、メタデータ・インタープリタ、レンダリング・エンジン及び応答コンポーネントを含む。ホストコンポーネントはクライアントからＷｅｂアプリケーションの少なくとも一部に対する要求を受信するように構成される。メタデータ・インタープリタは、Ｗｅｂアプリケーションのユーザインタフェースを記述するメタデータを検索するように構成される。レンダリング・エンジンはメタデータに基づいて初期画面をレンダリングするように構成される。初期画面は、Ｗｅｂアプリケーションのアクティビティと関連してクライアントによって表示されるためのものである。応答コンポーネントはメタデータ及び初期画面をクライアントに送信するように構成される。【選択図】図２
2018500613.tif 000002
【特許請求の範囲】
【請求項１】
システムであって、
クライアントから、Ｗｅｂアプリケーションの少なくとも一部に対する要求を受信するように構成されたホストコンポーネントと、
前記Ｗｅｂアプリケーションのユーザインタフェースを記述したメタデータを検索するように構成されたメタデータ・インタープリタと、
前記メタデータに基づき、前記Ｗｅｂアプリケーションのアクティビティに関連して、前記クライアントによって表示される初期画面をレンダリングするように構成されたレンダリング・エンジンと、
前記メタデータ及び前記初期画面を前記クライアントに送信するように構成された応答コンポーネントとを備えるシステム。
【請求項２】
請求項１に記載のシステムにおいて、前記ホストコンポーネントは前記要求が最初の要求を含むか否かを決定するように更に構成され、前記レンダリング・エンジンは、前記要求が前記最初の要求を含むという決定に応じて、レンダリングによって前記初期画面を表示するように構成されたシステム。
【請求項３】
請求項１に記載のシステムにおいて、前記Ｗｅｂアプリケーションはメタデータ駆動型ランタイムを備え、前記メタデータ・インタープリタは、前記Ｗｅｂアプリケーションのランタイム・オペレーションを示すメタデータを含む、前記Ｗｅｂアプリケーションと関連する前記メタデータを検索するシステム。
【請求項４】
請求項１に記載のシステムにおいて、前記Ｗｅｂアプリケーションは動的に生成されたユーザインタフェースを備え、該ユーザインタフェースは前記メタデータに基づいて生成されるシステム。
【請求項５】
請求項１に記載のシステムにおいて、前記レンダリング・エンジンは、前記クライアントによる表示のため、前記初期画面に対応するユーザインタフェースアセットを生成することによって、前記初期画面をレンダリングするように構成されたシステム。
【請求項６】
請求項１に記載のシステムにおいて、前記メタデータは、前記Ｗｅｂアプリケーションの前記ユーザインタフェース内のナビゲーションを定義するシステム。
【請求項７】
請求項１に記載のシステムにおいて、前記応答コンポーネントは前記要求に応答する、前記Ｗｅｂアプリケーションに対応する全てのメタデータを含む前記メタデータを送信するように構成されたシステム。
【請求項８】
請求項１に記載のシステムにおいて、前記メタデータ・インタープリタは１つ又は複数のアクティビティタイプに対応するメタデータを検索し、前記クライアントに対応するテナントに固有のメタデータを検索するシステム。
【請求項９】
システムであって、 
Ｗｅｂアプリケーションの少なくとも一部に対する要求をサーバに送信するように構成された要求コンポーネントと、
前記サーバから前記要求への応答を受信するように構成された受信側コンポーネントであって、前記要求は、前記Ｗｅｂアプリケーションのユーザインタフェースを記述するメタデータ及び初期画面のユーザインタフェースアセットを含む受信側コンポーネントと、
前記初期画面を表示部に表示するように構成された表示コンポーネントと、
前記メタデータを処理して前記Ｗｅｂアプリケーションのランタイム・オペレーションを提供するように構成されたメタデータ・インタープリタとを備えるシステム。
【請求項１０】
請求項９に記載のシステムにおいて、前記メタデータは前記Ｗｅｂアプリケーションのアクティビティの１つ又は複数のアクティビティタイプを示し、前記アクティビティは実行される１つ又は複数のプロシージャを示すシステム。
【請求項１１】
請求項１０に記載のシステムにおいて、前記メタデータは、前記１つ又は複数のアクティビティタイプに対応するメタデータと、テナントに固有のメタデータとを備えるシステム。
【請求項１２】
請求項１１に記載のシステムにおいて、前記１つ又は複数のアクティビティタイプはカスタムアクティビティタイプを含み、該カスタムのアクティビティタイプは前記テナントに固有に定義されるシステム。
【請求項１３】
請求項１１に記載のシステムにおいて、前記１つ又は複数のアクティビティタイプを有する１つ又は複数のアクティビティを実行するためのコードを検索するように構成されたメタデータ・インタープリタを更に備えるシステム。
【請求項１４】
請求項１０に記載のシステムにおいて、前記メタデータは、前記アクティビティ及び前記１つ又は複数のアクティビティタイプを有する１つ又は複数の付加的なアクティビティの階層を更に示すシステム。
【請求項１５】
請求項１４に記載のシステムにおいて、前記画面のビジュアルコンテキストを構築するために、アクティビティ及び任意の子アクティビティを再帰的に評価する、及び前記ビジュアルコンテキストの構築の完成に応じて前記画面を表示することにより、前記ユーザインタフェースの画面をレンダリングするように構成されたレンダリング・エンジンを更に備えるシステム。
【請求項１６】
請求項１４に記載のシステムにおいて、前記要求は前記Ｗｅｂアプリケーション内の要求されたアクティビティを示し、該アクティビティは、該アクティビティの前記階層内のルートアクティビティより下位のアクティビティを備えるシステム。
【請求項１７】
請求項１６に記載のシステムにおいて、前記応答における前記初期画面は、前記要求されたアクティビティに対応する画面を含むシステム。
【請求項１８】
方法を実行するための、コンピュータシステムのコンピュータ可読命令コードを格納する非一時的コンピュータ可読記憶媒体であって、前記方法は、
Ｗｅｂアプリケーションの少なくとも一部に対する要求をサーバに送信するステップと、
前記要求に対する応答を前記サーバから受信するステップであって、前記応答は、前記Ｗｅｂアプリケーションのユーザインタフェースアセットを記述するメタデータと、初期画面のユーザインタフェースアセットとを含むステップと、
前記初期画面を表示部に表示するステップと、
前記メタデータを処理して、前記Ｗｅｂアプリケーションのランタイム・オペレーションを提供するステップとを含む非一時的コンピュータ可読記憶媒体。
【請求項１９】
請求項１８に記載の非一時的コンピュータ可読記憶媒体において、前記方法は、前記メタデータに基づいて、１つ又は複数の後続する画面にレンダリングするステップを更に含む媒体。
【請求項２０】
請求項１８に記載の非一時的コンピュータ可読記憶媒体において、前記メタデータは、 前記Ｗｅｂアプリケーションの２つ以上のアクティビティの１つ又は複数のアクティビティタイプ及び前記１つ又は複数のアクティビティの階層を示し、前記要求は前記Ｗｅｂアプリケーション内の要求されたアクティビティを示し、該アクティビティは、該アクティビティの階層内のルートアクティビティよりも下位のアクティビティを含む媒体。
【発明の詳細な説明】
【関連出願の相互参照】
【０００１】
本出願は、２０１４年９月１０日に出願された、「メタデータ駆動型ユーザインタフェースフレームワークのシステム及び方法」と題された、米国特許出願第14/482,437号明細書の優先権を主張するものであり、その内容全体を本明細書に参照として援用する。
【技術分野】
【０００２】
本出願は、メタデータを使ってＷｅｂアプリケーションユーザインタフェース（ＵＩ：User Interface）を生成するためのシステム及び方法に関する。
【背景技術】
【０００３】
Ｗｅｂアプリケーションによってソフトウェアはサーバ上にホストされ、クライアントデバイス上でアクセスされ、動作させることができる。例えば、Ｗｅｂアプリケーションは、一般に、ウェブブラウザで動作させることのできるソフトウェアを含んでいる。Ｗｅｂアプリケーションは、ソフトウェアを任意のポテンシャルクライアントデバイスに配布及びインストールするのが困難、又は面倒である場合、特に有用である。例えば、Ｗｅｂアプリケーションは、任意のクライアントがブラウザでＷｅｂアプリケーションにアクセスして使用することができるように、単一の場所（例えばサーバ）で維持、更新することができる。
【発明の概要】
【発明が解決しようとする課題】
【０００４】
従来のＷｅｂアプリケーションユーザインタフェース（ＵＩ）は、ウェブアプリケーションソースコード又はファイルへのアクセスを有する開発者によってのみ変更できるという意味において、静的である。 例えば、開発者はＷｅｂアプリケーションＵＩをハードコード化する必要がある。場合によって、異なるテナント（例えば、異なる企業体又はクライアント）において、ＵＩナビゲーション、プロシージャ又はプロセスのグルーピングなどを含む、固有のＵＩが要求される。固有のＵＩを提供するために、プログラマ又は開発者はコードを修正しなければならず、これはユーザにとって新しいウェブアプリケーションとなることがある。場合によって、各テナントに固有のルック・アンド・フィールは、拡張コーディングせずに可能である。しかしながら、多くのテナントは異なるプロシージャのグループ化、プロシージャの異なる順序での実行、Ｗｅｂアプリケーションの異なるナビゲーション又はフロー、又はその他の審美的というよりもむしろ機能的な、ＷｅｂアプリケーションＵＩに対する変更を望んでいる。機能及びナビゲーションの変更の実行は特に費用がかかり、ホスティングコスト及びプログラミングコストの増加につながる。従って、コストが非常に高い場合、テナントは、開発者が最も潜在的なテナント又はクライアントのニーズを最も良く満たすと判断したＵＩの機能に固執することがよくある。
【課題を解決するための手段】
【０００５】
出願人は、ＵＩ修正のハードコーディングを必要としない、ＷｅｂアプリケーションのＵＩを生成するシステム及び方法への必要性を認識し、本明細書に開示する。本出願は、メタデータに基づいてＷｅｂアプリケーションＵＩを生成するためのシステム、方法及び装置を開示する。一実施形態によれば、サービングシステムは、ホストコンポーネント、メタデータ・インタープリタ、レンダリング・エンジン及び応答コンポーネントを有する。ホストコンポーネントは、クライアントから、Ｗｅｂアプリケーションの少なくとも一部に対する要求を受信するように構成される。メタデータ・インタープリタは、ＷｅｂアプリケーションのＵＩを記述するメタデータを検索するように構成される。レンダリング・エンジンは、メタデータに基づいて初期画面をレンダリングするように構成される。初期画面は、Ｗｅｂアプリケーションのアクティビティに関連してクライアントによって表示される画面を含む。応答コンポーネントは、メタデータ及び初期画面をクライアントに送信するように構成される。
【０００６】
別の実施形態によれば、クライアントシステムは要求コンポーネント、受信側コンポーネント、表示コンポーネント及びメタデータ・インタープリタを含む。要求コンポーネントはＷｅｂアプリケーションの少なくとも一部に対する要求をサーバに送信するように構成される。受信側コンポーネントはサーバからの要求に対する応答を受信するように構成される。応答には、ＷｅｂアプリケーションのＵＩ及び初期画面のＵＩアセットを記述するメタデータが含まれる。表示コンポーネントは表示部に初期画面を表示するように構成され、メタデータ・インタープリタはメタデータを処理してＷｅｂアプリケーションにランタイム動作を提供するように構成される。
【０００７】
本開示の実施形態は、類似の構成要素が数字によって表示される図面を参照することによって十分に理解されるであろう。以下の説明において、本明細書に記載される実施形態を十分に理解するために、多くの具体的詳細を提供する。しかしながら当業者であれば、具体的詳細のうちの１つ又は複数を削除できる、又は他の方法、コンポーネント又は材料を使用できることが理解できるだろう。 本開示のより重要な態様が曖昧にならないように、動作を詳細にわたって表示しない、又は説明しない場合もある。
【０００８】
更に、記載した特長、動作又は特徴は任意の適切なやり方によって、１つ又は複数の実施形態に組み合わせることができる。また、開示された実施形態と関連して記載された方法のステップ又はアクションの順番を、当業者に明らかであるように変更可能であることも容易に理解できるであろう。従って、図面内の任意の順番又は詳細な説明は、説明の目的のみに提供されるものであり、順番が必要であると明記されていない限り、必要とされる順番を示すものではない。
【０００９】
実施形態は種々のステップを含み、これは、コンピュータシステムによって実行されるマシン実行可能命令に具現化され得る。コンピュータシステムは、１つ又は複数の汎用又は専用コンピュータ（又はその他の電子デバイス）を備える。あるいは、コンピュータシステムは、ステップを実行するための特定のロジックを含むハードウェアコンポーネント、又はハードウェア、ソフトウェア及び／又はファームウェアの組み合わせを備え得る。
【００１０】
また、実施形態は、コンピュータシステムをプログラムするために使用され得る命令の格納されたコンピュータ可読媒体を有するコンピュータプログラム製品、又は本明細書に記載したプロセスを実行するためのその他の電子デバイスとして提供することができる。コンピュータ可読媒体には、ハードドライブ、フロッピーディスケット、光ディスク、ＣＤ-ＲＯＭ、ＤＶＤ-ＲＯＭ、ＲＯＭ、ＲＡＭ、ＥＰＲＯＭ、ＥＥＰＲＯＭ、磁気又は光カード、固体メモリ装置又は電子説明を格納するのに適切なその他のタイプの媒体／コンピュータ可読媒体が含まれるが、これらに制限されない。
【００１１】
コンピュータシステム及びコンピュータシステム内のコンピュータは、ネットワークを介して接続することができる。本明細書に記載される構成及び／又は使用に適切なネットワークには、１つ又は複数のローカルエリアネットワーク、広域ネットワーク、メトロポリタン・エリア・ネットワーク、及び／又は、ワールド・ワイド・ウェブ、プライベートインターネット、セキュアインターネット、付加価値通信網、仮想プライベート・ネットワーク、エクストラネット、イントラネットなどのインターネット又はＩＰネットワーク、若しくは媒体の物理的輸送（いわゆるスニーカーネット）によって他のマシンと通信するスタンドアローンマシンも含まれる。具体的には、適切なネットワークは、異種のハードウェア及びネットワーク通信技術を利用するネットワークを含む、２つ以上のその他のネットワークの一部又は全体から形成することができる。
【００１２】
１つの適切なネットワークはサーバ及びいくつかのクライアントを含み、その他の適切なネットワークは、サーバ、クライアント及び／又はピアツーピアノードのその他の組み合わせを含むことができ、特定のコンピュータシステムはクライアント及びサーバのどちらとしても機能し得る。各ネットワークは、少なくとも２つのコンピュータ又はサーバ及び／又はクライアントなどのコンピュータシステムを含む。コンピュータシステムは、ワークステーション、ラップトップコンピュータ、接続解除可能なモバイルコンピュータ、サーバ、メインフレーム、クラスター、いわゆる「ネットワークコンピュータ」又は「シン・クライアント」、タブレット、スマートフォン、携帯端末又はその他の携帯コンピューター・デバイス、「スマート」家庭用電子機器又は装置、医療機器又はこれらの組み合わせを含み得る。
【００１３】
ネットワークは、Ｎｏｖｅｌｌ、Ｍｉｃｒｏｓｏｆｔ、Ａｒｔｉｓｏｆｔ及びその他のベンダーから入手可能なソフトウェアなどの通信ソフト又はネットワークソフトを含み、ツイストペア、同軸又は光ファイバーケーブル、電話線、衛生、マイクロ波中継装置、変調交流電力線、物理的移動媒体、及び／又は当業者に周知のその他のデータ伝送「ワイヤ」によって、ＴＣＰ／ＩＰ，ＳＰＸ，ＩＰＸ及びその他のプロトコルを使って動作させることができる。ネットワークはより小さなネットワークを包囲し得る、及び／又はゲートウェイ又は同様のメカニズムによって接続可能である。
【００１４】
各コンピュータシステムは、少なくともプロセッサ及びメモリを含む。また、コンピュータシステムは種々の入力装置及び／又は出力装置も含み得る。プロセッサには、Ｉｎｔｅｌ（登録商標）、ＡＭＤ（登録商標）などの汎用デバイス、又はその他の「既製の」マイクロプロセッサがある。プロセッサには、ＡＳＩＣ，ＳｏＣ，ＳｉＰ，ＦＰＧＡ，ＰＡＬ，ＰＬＡ，ＦＰＬＡ，ＰＬＤなどの専用処理装置、又はその他のカスタマイズされた、若しくはプログラム可能な装置がある。メモリには、スタティックＲＡＭ、ダイナミックＲＡＭ、フラッシュメモリ、１つ又は複数のフリップフロップ、ＲＯＭ、ＣＤ−ＲＯＭ、ディスク、テープ、磁気メモリ、光メモリ、又はその他のコンピュータ記憶媒体がある。入力装置には、キーボード、マウス、タッチスクリーン、ライトペン、タブレット、マイクロホン、センサ又はファームウェア及び／又はソフトウェアを備えるその他のハードウェアがある。出力装置には、モニタ又はその他の表示部、プリンタ、音声又はテキスト合成装置、スイッチ、信号線又はファームウェア及び／又はソフトウェアを備えるその他のハードウェアがある。
【００１５】
コンピュータシステムは、フロッピードライブ、テープドライブ、光ドライブ、光磁気ドライブ、又は記憶媒体を読み取るその他の手段を使用することが可能である。適切な記憶媒体には、特定の物理的構成を有する、磁気、光、又はその他のコンピュータ可読記憶装置がある。適切な記憶装置には、フロッピーディスク、ハードディスク、テープ、ＣＤ−ＲＯＭ、ＤＶＤ、ＰＲＯＭ、ＲＡＭ、フラッシュメモリ及びその他のコンピュータシステム記憶装置がある。物理的構成は、本明細書に記載する様な特定の決まった方法でコンピュータシステムを動作させるデータ及び命令を表す。
【００１６】
発明の実行を補助する適切なソフトウェアは、本明細書に呈示する教示、Ｊａｖａ、Ｐａｓｃａｌ、Ｃ＋＋、Ｃなどのプログラミング言語及びツール、データベース言語、ＡＰＩ、ＳＤＫ、アセンブリ、ファームウェア、マイクロコード及び／又はその他の言語及びツールを使用して、当業者によって容易に提供される。適切な信号フォーマットは、エラー検出及び／又は訂正ビット、パケットヘッダ、特定のフォーマットのネットワークアドレス、及び／又は当業者によって容易に提供されるその他の支持データを含む、又は含まない、アナログ又はデジタル形式に具現化され得る。
【００１７】
記載する実施形態のいくつかの態様は、ソフトウェアモジュール又はコンポーネントとして説明される。本明細書で使用するソフトウェアモジュール又はコンポーネントには、記憶装置内に位置する、任意のタイプのコンピュータ命令又はコンピュータ実行可能コードが含まれ得る。ソフトウェアモジュールは、例えば、１つ又は複数のタスクを実行する、又は特別の抽象データ型を実行する、ルーチン、プログラム、オブジェクト、コンポーネント、データ構造体などとして体系化される、コンピュータ命令の１つ又は複数の物理的又は論理的ブロックを備えることができる。
【００１８】
ある実施形態において、特定のソフトウェアモジュールは、記憶装置の異なる場所、異なる記憶装置、又は異なるコンピュータに記憶された異なる命令を含み、これらは共にモジュールの記述された機能を実行する。実際にモジュールは１つの命令又は多数の命令を含み、異なるコードセグメント、異なるプログラム間、及びいくつかの記憶装置に分散させることができる。いくつかの実施形態は、通信ネットワークでリンクされたリモート処理装置によってタスクが実行される、分散コンピューティング環境において実行され得る。分散コンピューティング環境において、ソフトウェアモジュールはローカル及び／又は記憶保存装置に配置され得る。更に、データベースレコードにつなげられた、又は表示されたデータは、同じ記憶装置、又はいくつかの記憶装置に常駐させてもよく、ネットワークを介してデータベースの記録領域につなげることができる。
【００１９】
汎用コンピュータ、コンピュータプログラミングツール及び技術、コンピュータネットワーク及びネットワーキングテクノロジー、デジタル記憶媒体並びに公開鍵、暗号化、ファイアウォール及び／又はその他の手段によって提供される認証、アクセス制御及びその他のセキュリティツール、テクノロジーなどの、本発明によって使用することのできるインフラストラクチャーのほとんどは、既に入手可能である。
【図面の簡単な説明】
【００２０】
【図１】一実施形態による、メタデータ駆動ＵＩを提供するシステムのブロック図である。
【図２】一実施形態による、メタデータ駆動ＵＩを提供するサーバシステムの略ブロック図である。
【図３】一実施形態による、メタデータ駆動ＵＩを提供するクライアントの略ブロック図である。
【図４】一実施形態による、アクティビティ階層を示すブロック図である。
【図５】一実施形態による、メタデータ駆動ＵＩを提供する方法のフローチャートである。
【図６】一実施形態による、メタデータ駆動ＵＩを提供する別の方法のフローチャートである。
【発明を実施するための形態】
【００２１】
図１はメタデータ駆動ＵＩを提供するシステム１００を示す略図である。システム１００は、ネットワーク１０６を介して通信するサーバシステム１０２及びクライアント１０４を含む。一実施形態において、ネットワーク１０６は、ローカルエリアネットワーク（ＬＡＮ：Local Area Network）、広域ネットワーク（ＷＡＮ：Wide Area Network）、インターネット、又は別のネットワーク若しくは通信接続のうちの１つ又は複数を含む、複数のネットワークを含み得る。一実施形態において、システム１００は、ＵＩの挙動がメタデータに基づいて生成される、Ｗｅｂアプリケーションのメタデータ駆動型ＵＩを提供するために使用され得る。
【００２２】
サーバシステム１０２はＷｅｂアプリケーションをホストするコンピューティングデバイス又はコンピューティングシステムを含み得る。サーバシステム１０２は、ネットワーク１０６を介して１つ又は複数のクライアント１０４によってアクセスされ得る、ラックマウントサーバ又はその他のコンピューティングデバイスを含み得る。例えば、サーバシステム１０２はインターネットでアクセス可能である。一実施形態において、サーバシステム１０２はＷｅｂアプリケーションへのアクセスが許可される前に認可される必要がある。
【００２３】
一実施形態において、サーバシステム１０２は、プログラミングコード、ＷｅｂアプリケーションのＵＩを記述したメタデータなどを含むＷｅｂアプリケーションに関する情報を格納する。一実施形態において、サーバシステム１０２は、ウェブブラウザによって解釈することのできるコードなどを生成するために、メタデータを解釈することのできるメタデータ・インタープリタのコードを格納する。サーバシステム１０２は、Ｗｅｂアプリケーションの表示画面又はその他のビジュアルインターフェイスのための、ＵＩアセットなどの視覚表示エレメントをレンダリングすることのできる、レンダリング・エンジンのコードも格納することができる。サーバシステム１０２は、 Ｗｅｂアプリケーションに対するクライアント１０４からの要求に応じて、Ｗｅｂアプリケーションに対応するコード、メタデータなどをクライアント１０４に提供し得る。一実施形態において、サーバシステム１０２は、クライアント１０４において初期画面の表示が加速されるように、Ｗｅｂアプリケーションの初期画面をレンダリングし得る。
【００２４】
クライアント１０４は、サーバシステム１０２にアクセスすることのできる任意のタイプのコンピューティングデバイス又はシステムを含み得る。例えば、クライアント１０４は、ラップトップコンピュータ、デスクトップコンピュータ、タブレットコンピュータ、スマートフォン、ネットブック、又はコンピュータネットワークにアクセス可能なその他の任意のコンピューティングデバイスとすることができる。一実施形態において、クライアント１０４はウェブサイトにアクセスしてＷｅｂアプリケーションを実行するブラウザを含み得る。一実施形態において、クライアント１０４は、クライアント１０４のブラウザ内で実行するための、Ｗｅｂアプリケーションに対応するメタデータ、コード又はその他の情報をサーバシステム１０２から受信し得る。一実施形態において、メタデータ・インタープリタ及び／又はレンダリング・エンジンのインスタンスは、クライアント１０４及びサーバシステム１０２上に配置され得る。複数のクライアント１０４はサーバシステム１０２に接続及びアクセス可能であり得る。
【００２５】
図２はメタデータ駆動ＵＩによってＷｅｂアプリケーションを提供する、サーバシステム１０２の略ブロック図である。サーバシステム１０２は、ホストコンポーネント２０２、メタデータ・インタープリタ２０４、レンダリング・エンジン２０６、応答コンポーネント２０８、ＷｅｂアプリケーションＵＩメタデータストア２１０及びコアアクティビティタイプストア２１２を含んでいる。コンポーネント２０２〜２１２は例として設けたものであり、これら全てが全実施形態に含まれるわけではない。
【００２６】
ホストコンポーネント２０２は、Ｗｅｂアプリケーションの少なくとも一部に対する要求をクライアントから受信するように構成される。例えば、ホストコンポーネント２０２は、サーバシステム１０２によってホストされるＷｅｂアプリケーションに対応する、ユニフォーム・リソース・ロケータ（ＵＲＬ：Uniform Resource Locator）のユーザによるタイピング又は選択に応じて要求を受信し得る。要求は、特定のＷｅｂアプリケーション又は機能を示し得る。要求は、クライアント１０４又はユーザのＩＤを示す情報を含み得る。例えば、要求はクライアント１０４の対応するテナント又はエンティティを示し得る。一実施形態において、ホストコンポーネント２０２は要求がＷｅｂアプリケーションに対する最初の要求であるか否かを決定し得る。例えば、ホストコンポーネント２０２は、クライアント１０４が全てのアプリケーションを要求しているのか、又はＷｅｂアプリケーションのリソース又はアセットのみを要求しているのかに基づいて、要求が最初の要求を含んでいることを決定し得る。一実施形態において、要求は、当該要求が最初の要求であるか否かを示し得る、又はクライアント１０４におけるＷｅｂアプリケーションの現在の状況を示し得る。例えば、要求は、ウェブアプリケーションが現在クライアント１０４において特定の状態（例えば、特定のアクティビティの処理中）であることを示し得る。
【００２７】
一実施形態において、ホストコンポーネント２０２は、Ｗｅｂアプリケーションのどの部分をクライアント１０４に送信するかを決定し得る。例えば、ホストコンポーネント２０２はＷｅｂアプリケーションに対する一般的な要求に応答して、全てのＷｅｂアプリケーション（及び関連する任意のメタデータ又はコード）をクライアント１０４に送信することを決定し得る。一実施形態において、要求は、要求されているＷｅｂアプリケーションの特定のアクティビティ又はプロシージャを示し得る。一実施形態において、下記に示すように、ホストコンポーネント２０２は「ディープリンキング」をサポートし、この場合、ユーザはアクティビティ階層内でアクティビティに関連するリソース又はアクティビティを要求することができる。例えば、ユーザの要求に対するＵＲＬのローカルパスは、ＵＩフロー内のユーザの位置を記述するアクティビティ階層、又はＵＩフロー内の所望の開始点を表し得る。ホストコンポーネント２０２は、（例えば、対応する子アクティビティへのＵＲＬパスによって示されるような）要求されるアクティビティに必要とされるのであれば、アクティビティ階層のルートアクティビティに対応するいくつかの情報もクライアント１０４に送信することを決定し得る。
【００２８】
メタデータ・インタープリタ２０４は、Ｗｅｂアプリケーションに対応するメタデータを検索及び／又は解釈するように構成される。一実施形態において、メタデータ・インタープリタ２０４は、要求されるＷｅｂアプリケーションに対応するメタデータを検索する。例えば、各Ｗｅｂアプリケーションは、ＷｅｂアプリケーションのＵＩを記述した、対応するメタデータを有し得る。メタデータはデータに関するデータ、より具体的には、一実施形態において、要求されたＷｅｂアプリケーションのＵＩに関する宣言的な情報を含む。メタデータは必要とされるフォーマットのパラメータ又はデータを含み得る。メタデータのデータフォーマットの例には、ジャバスクリプト・オブジェクト・ノーテーション（ＪＳＯＮ：JavaScript Object Notation）フォーマット、エクステンシブル・マークアップ・ランゲージ（ＸＭＬ：Extensible Markup Language）フォーマット、カンマ・セパレーテッド・バリュー（ＣＳＶ：comma separated values）フォーマット又はその他のデータ若しくはメタデータフォーマットがある。一実施形態において、 メタデータフォーマットはブラウザによって読取り可能なフォーマット又はコードランゲージを含んでいない。例えば、メタデータはクライアント１０４によって実行することのできるコードを取得するために、検索及びインタプリタ／変換される必要があり得る。
【００２９】
メタデータはＷｅｂアプリケーションＵＩメタデータストア２１０に格納され、ここから検索され得る。一実施形態において、メタデータはＷｅｂアプリケーションのランタイム・オペレーション又はランタイム・オペレーションの順番を示し、Ｗｅｂアプリケーションはメタデータ駆動ランタイムを有する。例えば、メタデータをランタイム中に使用して画面を動的に生成したり、どのプロシージャを次に行うかなどを決定したりすることができる。一実施形態において、 Ｗｅｂアプリケーションは動的に生成されたＵＩを含み、この場合、ＵＩインターフェースはメタデータに基づいて生成される。一実施形態において、メタデータはＷｅｂアプリケーションのＵＩ内で許可されるナビゲーションを定義する。例えば、メタデータは次に実行されるプロシージャ及び／又はプロシージャに必要とされるユーザからの入力を示し得る。
【００３０】
一実施形態において、メタデータ・インタープリタ２０４はクライアント１０４に特有のメタデータを検索し得る。例えば、クライアント１０４からの要求は対応するテナントを示し、メタデータ・インタープリタ２０４はそのテナント用のカスタムメタデータがあるか否かを確認し得る。いくつかの実施形態において、ワークフロー及びアクティビティ構成をテナントベースで修正して、各テナントにカスタムＵＩの外観及び挙動を提供し得る。修正は、サーバシステム１０２により、別のメタデータとしてＷｅｂアプリケーションＵＩメタデータストア２１０に格納され得る。関連ＵＩメタデータがメタデータ・インタープリタ２０４によって識別されると、処理される前に、テナントに特有の修正がデフォルトＵＩメタデータに適用され得る。クライアント固有のメタデータでデフォルトメタデータを修正することにより、 Ｗｅｂアプリケーションを再展開又は再起動せずに、テナントベースで、Ｗｅｂアプリケーションの全てのＵＩを変更することが可能となり得る。そして組み合わせられた、又は修正されたメタデータは、応答コンポーネント２０８によってクライアント１０４に提供され得る、又は、ＵＩ生成のために、ブラウザ又はレンダリング・エンジン２０６に提供され得る。
【００３１】
メタデータ・インタープリタ２０４はメタデータを解釈し、レンダリング・エンジン２０６によって使用されることのできるコード又は情報を生成して、ブラウザに視覚画面を生成し、Ｗｅｂアプリケーション又はＷｅｂアプリケーションのＵＩの挙動を制御することができる。一実施形態において、メタデータは、Ｗｅｂアプリケーション内の１つ又は複数のアクティビティ又はアクティビティタイプを示す情報を含む。本明細書で使用するアクティビティという用語は、ＷｅｂアプリケーションのＵＩなどの、Ｗｅｂアプリケーションの異なる部分を表すメタデータを意味する。例えば、アクティビティは、ユーザからの入力を受信するフォーム、チャート又はグラフ、サーバへの呼び出し、見る／編集する記録のリストを呈示する動作、ブール論理を実行する動作、又はその他の動作を表すために使用され得る。各アクティビティはアクティビティタイプに対応する。アクティビティタイプは、そのタイプのアクティビティを実行するクラス又はモジュールに結びつけられる。アクティビティは、各アクティビティが子アクティビティを含むように構成可能でもある。例えば、任意のタイプのアクティビティは任意の他のタイプのアクティビティを含み得る、又は参照し得る。
【００３２】
一実施形態において、コアアクティビティタイプに関する情報は、コアアクティビティタイプストア２１２に格納することができる。一実施形態において、任意のウェブアプリケーションによって使用することできるいくつかのビルトインアクティビティタイプをシステムで構築し、コアアクティビティタイプストア２１２によって格納することができる。コアアクティビティタイプとして含まれ得るアクティビティタイプの例として、ワークフローアクティビティタイプ、ステップアクティビティタイプ、リストアクティビティタイプ、「コンポーズ」アクティビティタイプ、「ｉｆ」アクティビティタイプ、アプリケーションアクティビティタイプ、モーダルアクティビティタイプ及びガードアクティビティタイプがある。このリストは例としてのみ提供するものであり、異なる実施形態において大幅に修正され得るものである。
【００３３】
ワークフローアクティビティタイプは連続フロー制御に使用されるアクティビティである。ワークフローは複数のステップアクティビティタイプを含み得る。各ステップアクティビティタイプはワークフロー内のアクティビティの論理グルーピングを含み得る。ステップアクティビティはワークフロー内のユーザ進捗を表示するのに有益である。各ステップアクティビティは１つ又は複数のアクティビティより成る。一実施形態において、ステップアクティビティ内の少なくとも１つのアクティビティは、従来、ビジュアルコンポーネントを有し、それによってＵＩナビゲーションフローにおける離散点を表すことができる。例えば、要求は、Ｗｅｂアプリケーションにおいてクライアント１０４が飛び込みたい、ワークフローの任意の特定のステップアクティビティを示し得る。
【００３４】
リストアクティビティタイプは、ユーザに記録リストを呈示し、ユーザによる記録の編集を可能にするアクティビティである。例えば、ビジュアルリストが画面上に呈示され、ユーザはリスト内の記録を修正する入力を行い、記録の削除、記録の追加、リストの並べ替えなどを行うことができる。
【００３５】
コンポーズアクティビティタイプにより、ユーザ又は開発者は複数のアクティビティの合成であるアクティビティを生成することができる。一実施形態において、コンポーズアクティビティの構成は、メインアクティビティの前に実行される、１つ又は複数のアクティビティのリストを含む、「ｂｅｆｏｒｅ」プロパティであるメインアクティビティ、及び／又はメインアクティビティの後に実行される、１つ又は複数のアクティビティのリストを含む、「ａｆｔｅｒ」プロパティを特定する。コンポーズアクティビティは任意の前後の動作を、フォームアクティビティなどのビジュアルコンポーネントを有するアクティビティにバンドルすることができる。一実施形態において、メインアクティビティはビジュアルコンポーネントを含む必要があり、セクションの前後にリストされたアクティビティは、ビジュアルコンポーネントを有することから制限され得る。
【００３６】
ｉｆアクティビティタイプによってユーザは分岐論理を生成することができる。一実施形態において、ｉｆアクティビティの構成は、表現式である「ｔｈｅｎ」アクティビティ及び任意選択で「ｅｌｓｅ」アクティビティを特定する。評価する場合、表現式はブール値 （例えば、真又は偽）を生成する。ｉｆアクティビティが実行されると、表現式は評価される。表現式がブール値を真と評価すると、ｔｈｅｎアクティビティが実行される。表現式がブール値を偽と評価すると、ｅｌｓｅアクティビティが指定されていれば実行される。
【００３７】
アプリケーションアクティビティタイプは、非連続フロー制御に使用することができる。アプリケーションアクティビティの例として表形式レイアウト（tabular layout）があり、アプリケーションアクティビティの構成に記載された各アクティビティは、ビジュアルタブコンポーネントに対応する。ユーザがビジュアルコンポーネントを選択すると、タブに対応する子アクティビティが実行され得る。尚、アプリケーションアクティビティは、ＵＩを実行するためにメタデータ駆動型ＵＩフレームワークを利用することのできる包括的アプリケーションである、Ｗｅｂアプリケーションと同じではない。
【００３８】
モーダルなアクティビティタイプを使用して、１つの子アクティビティを実行し、これをモーダルダイアログボックスにレンダリングすることができる。アクティビティは任意の子アクティビティ階層を含むことができ、モーダルアクティビティは、複合ＵＩコンポーネントをモーダルに呈示するために使用することができる。
【００３９】
ガードアクティビティは通過できないアクティビティを含む。例えば、ガードアクティビティタイプは、ユーザから必要とされる情報が受信されたか否かを確認する、見えない アクティビティを含むことができる。例えば、ユーザからのデータ入力を収集するフォームアクティビティの後に、ガードアクティビティを続けることができる。ユーザがフォームアクティビティ上で次のオプションを選択すると、ガードアクティビティは必要とされる情報が全て提供されたか否かの決定を実行し得る。ガードアクティビティが必要とされる情報が全て入力されたと決定すると、ガードアクティビティはクライアント１０４にＷｅｂアプリケーション内で次のアクティビティを続けることを許可する。ガードアクティビティがいくつかの必要とされる情報が提供されていないと決定すると、ガードアクティビティはナビゲーションの転送をブロックし、フォーム上に、記入する必要のあるフィールド、又は選択する必要のあるオプションの表示を提供し得る。
【００４０】
フォームアクティビティタイプは、ユーザに呈示するためのビジュアルフォームを定義し得る。フォームアクティビティの構成は、ユーザが入力を提供することのできる１つ又は複数のフィールドを示し得る。フィールドの例として、チェックボックス、ラジオボタン、ドロップダウンリスト、テキストフィールドなどがある。一実施形態において、アクティビティはフィールドタイプとして使用することができる。例えば、フィールドは別のアクティビティに対応し得る。フォームアクティビティは、Ｗｅｂアプリケーションによって利用又は格納されるように、ユーザからの入力を受け入れるために使用することができる。
【００４１】
上述のアクティビティタイプは例としてのみ示すものである。特定のアプリケーションはそれぞれ 、アプリケーション内で所望の機能及び動作を提供するその他のアクティビティタイプを有する複数のアクティビティを有し得る。コア又はビルトインアクティビティタイプに加え、ユーザ又は開発者はアクティビティを拡張したり、カスタムアクティビティタイプを生成したりすることが許可される。例えば、Ｗｅｂアプリケーションの開発者は彼ら自身のカスタムアクティビティタイプを生成することができる。カスタムアクティビティタイプは全く新しいものであってもよいし、予め存在するアクティビティタイプを拡張したものであってもよい。一実施形態において、開発者は予め存在するアクティビティタイプに適用することのできる拡張を生成し得る。このため、開発者は基礎となるコードを修正せずに、ストックアクティビティタイプの挙動をカスタマイズすることが可能となる。一実施形態において、既存のアクティビティタイプの拡張は、拡張されたアクティビティタイプの挙動をオーバーライドするために使用される、新しいメタデータ及びコードを定義することによって達成される。一実施形態において、拡張された、又はカスタムのアクティビティタイプは、テナント特有に格納され得る。例えば、あるテナントに関連して新しいアクティビティタイプが生成されると、新しいアクティビティタイプ及び任意の対応するコードは、その特定のテナントに関連してのみ使用されるよう、別途に格納することができる。
【００４２】
一実施形態において、各アクティビティはアクティビティタイプを参照する。一実施形態において、アクティビティタイプは、そのタイプのアクティビティを実行するための、システムによって実行されるコードを含むモジュールである。アクティビティタイプはそのアクティビティタイプのコードの挙動を修正するために使用することのできる、１つ又は複数の入力特性を公開することができる。アクティビティがこれらの入力特性に提供する値をまとめてアクティビティの構成と称する。アクティビティの構成はアクティビティメタデータの一部である。一実施形態において、メタデータは、データを、アクティビティのための入力として、それをメタデータの一部として明示的に含めずに参照することができる。アクティビティタイプは、そのタイプのアクティビティ（例えばメタデータ）がそれ自身の構成を定義しない場合に使用されるデフォルト構成を定義することができる。
【００４３】
各アクティビティはシステムによって行われるべき動作を表している。アクティビティは、大抵、システムにＵＩアセットを生成し、それらをブラウザに提出するように命令するビジュアルコンポーネントを含んでいる。しかしながらアクティビティは、サービスの呼び出し及び応答の格納などの、ビジュアルコンポーネントを有していない動作を表すことができる。
【００４４】
ＵＩによるユーザのナビゲーションをフローと称する。一実施形態において、メタデータは、ＵＩイベントに応じてどのアクティビティを実行するかを決定することにより、システムによってユーザのフローを制御する。特定のアクティビティタイプは特にＵＩによってユーザのフローを制御するように設計されている。これらのフロー制御アクティビティの例として、ワークフローアクティビティ、アプリケーションアクティビティ、リストアクティビティ、モーダルアクティビティ及びガードアクティビティがある。ユーザがナビゲーションを必要とするＵＩイベントをトリガすると、アクティブフロー制御アクティビティはどのアクティビティを次に実行するのかを決定する。例えば、特定のＵＩが一連の子フォームアクティビティを有するワークフローアクティビティと定義されると、そのＵＩはシーケンス中の第１フォームアクティビティを実行し、これによってフォームの視覚的表示がユーザに提供される。ユーザがフォームを提出するＵＩイベントをトリガすると、一旦フォームが処理された場合、第１フォームアクティビティはその実行が完了したという信号を送る。この時点で、ワークフローアクティビティはシーケンス内の第２フォームアクティビティを実行することができる。
【００４５】
また、アクティビティはＵＩイベントに応じてトリガされるがＵＩナビゲーションを構成しない、１つ又は複数のアクションを有し得る。一実施形態において、アクティビティタイプはデフォルトアクションを定義することができるが、アクティビティのアクションはオーバーライドされ得る。アクティビティのアクションは別のアクティビティを実行することができる。
【００４６】
一実施形態において、（フォームアクティビティなどの）ビジュアルコンポーネントを有する各アクティビティは、ＵＩフロー内の個別の点を表す。ビジュアルコンポーネントを持たないアクティビティは実行されるが、ナビゲーションを中断しない。例えば、特定のＵＩが２つの子アクティビティ、フォームアクティビティ、及びサービス前アクティビティを実行し、次にメインフォームアクティビティを実行するように構成されたコンポーズアクティビティを有するワークフローアクティビティとして定義されると仮定すると、一実施形態において、ワークフローアクティビティが最初に実行されると、子フォームアクティビティが実行され、これによってフォームの視覚的表示がユーザに呈示され、ナビゲーション動作が中断される。ユーザがフォームを提出するためにＵＩイベントをトリガすると、フォームは一旦処理され、第１フォームアクティビティはその実行が完了したという信号を送る。この時点で、ワークフローアクティビティは子コンポーズアクティビティを実行する。コンポーズアクティビティは最初にサービス前アクティビティを実行する。サービスアクティビティはビジュアルコンポーネントを持ってないので、その実行によってナビゲーション動作が中断されることはない。その後、コンポーズアクティビティはメインフォームアクティビティを実行し、これによってフォームの視覚的表示がユーザに呈示され、ナビゲーション動作は中断される。
【００４７】
本開示に基づいて理解されるように、メタデータ及びアクティビティは、ＷｅｂアプリケーションのＵＩ及び動作を制御するアクティビティの階層を生成し得る。例えば、ルート階層はＷｅｂアプリケーションの起動インターフェース又は画面に対応し、サブアクティビティはいくつかのアクティビティがその他のアクティビティの下位におかれる分岐階層を形成し得る。一実施形態において、アクティビティを組み合わせる柔軟性により、単にメタデータに基づいた、ＷｅｂアプリケーションのＵＩの複合的な変形が可能になる。従って、ユーザはコードの修正又は生成を行わずに、複合的なＵＩナビゲーション及びフローを定義することができる。
【００４８】
図４はＷｅｂアプリケーションＵＩのアクティビティ階層４００の例を示している。階層４００はＷｅｂアプリケーション中に実行され得る、複数のビジュアルアクティビティ４０４〜４１６を含んでいる。階層４００はメタデータによって定義され得る。階層４００は、ルートアクティビティであるアクティビティＡ４０２と、子アクティビティとを含み、子アクティビティには、アクティビティＢ４０４，アクティビティＣ４０６及びアクティビティＤ４０８が含まれる。一実施形態において、メタデータは、アクティビティＢ４０４、アクティビティＣ４０６及びアクティビティＤ４０８がアクティビティＡ４０２の子アクティビティであることを示す構成情報を含む、アクティビティＡ４０２の構成を定義し得る。アクティビティＢ４０４のメタデータ構成は、子アクティビティをアクティビティＥ４１０及びアクティビティＦ４１２として定義し得る。同様に、アクティビティＥ４１０のメタデータ構成は、子アクティビティＨ４１６を定義し、アクティビティＣ４０６のメタデータ構成は、子アクティビティＧ４１４を定義し得る。よって、メタデータにより、ユーザはメタデータに基づいて、ＵＩナビゲーション又はフローを含む階層を特定することができる。例えば、あるテナントはアクティビティＧをアクティビティＨの子アクティビティとして実行することを所望し、この変更を行うメタデータを特定することができる。従ってこのテナントは所望のカスタマイズＵＩを取得することができ、一方で他のテナントにはその変更がわからない。
【００４９】
図２に戻るが、メタデータ・インタープリタ２０４は、メタデータに対応するコードを検索することによって、メタデータを解釈し得る。例えば、メタデータ・インタープリタ２０４はアクティビティタイプに対応するコードを検索し得る。メタデータ・インタープリタ２０４は、アクティビティ（すなわちアクティビティ構成）のためにメタデータ内で定義されたコード及び任意のパラメータを、任意の処理又は実行のために、ブラウザ又はレンダリング・エンジン２０６に提供し得る。一実施形態において、メタデータ・インタープリタ２０４はデフォルトアクティビティタイプによって示されるような、現在のアクティビティのコードを取得し、メタデータを修正して、デフォルトアクティビティタイプ及び／又はカスタムアクティビティタイプを修正することができる。例えば、デフォルトメタデータは、アクティビティに対してどのコードを検索するべきかを決定する前に、テナント固有のメタデータと組み合わせることができる。
【００５０】
一実施形態によると、メタデータによって特定される各アクティビティは、Ｗｅｂアプリケーションの動作中、２つの段階、すなわちセットアップ段階及びランタイム段階を含み得る。セットアップ段階は、メタデータを検索し、このメタデータに対応するコードを取得して、そのコードへの入力を取得するメタデータ・インタープリタ２０４を含むことができ、一方でランタイム段階は任意の入力に基づくコードの実行を含むことができる。一実施形態において、メタデータ・インタープリタ２０４は、アクティビティベースでメタデータを処理し得る。例えば、メタデータ・インタープリタ２０４は、現在のアクティビティ、又は現在のアクティビティの後にくる所定の数のアクティビティのコードのみを検索し得る。検索されたコードは、表示／実行のため、レンダリング・エンジン又はウェブアプリケーションに提供され得る。例えば、サーバシステム１０２において、検索されたコードはレンダリング・エンジン２０６に提供されるが、サーバシステム１０２の表示部にはレンダリングされない。
【００５１】
レンダリング・エンジン２０６はメタデータ・インタープリタ２０４によって検索されたメタデータ及び／又はその他の情報をＵＩアセットに変換して、ＵＩインターフェースの画面の一部として表示するように構成される。ＵＩアセットはブラウザによって解釈することのできる情報又はコードを含み得る。レンダリング・エンジン２０６によって生成されたＵＩアセットは、ハイパーテキスト・マークアップ言語（ＨＴＭＬ：hypertext markup language）プロトコルに準拠するテキスト又はシンボルなどのマークアップを含み得る。また、ＵＩアセットは、JavaScriptなどの、ブラウザによって解釈され得るコードも含み得る。ＵＩアセットは、ウェブページ又はインターフェースの一部として表示するための、画像ファイル、テキストファイル、映像ファイル、音響ファイル、又はその他のファイルなどのリソースファイル又はリソースファイルへのリファレンスを含み得る。
【００５２】
ＵＩをレンダリングするために、システムはＵＩメタデータを解釈し、必要なＵＩアセット（例えば、マークアップ、コード及びリソースファイルへのリファレンス）を動的に生成し、これらをユーザのブラウザに提出して処理する。一実施形態において、レンダリング・エンジン２０６は、メタデータ・インタープリタ２０４によって検索されたメタデータ又はコードに基づいて、画面にレンダリングする。
【００５３】
一実施形態によれば、レンダリング・エンジン２０６のインスタンスは、サーバシステム１０２及びクライアント１０４のウェブブラウザの両方で動作される。ユーザが第１リクエストをホストのサーバに提出すると、ホストのサーバ上で動作しているレンダリング・エンジン２０６は初期画面のレンダリングを行う。その後、生成されたＵＩアセットは、ユーザの要求に応じて、アプリケーション用のＵＩメタデータと共にユーザのブラウザに送信される。ホストのサーバとの通信が更に必要とされない場合もある。クライアントのブラウザ内で動作しているレンダリング・エンジン２０６は、ＵＩメタデータを残りの画面にレンダリングし、生成されたＵＩアセットをブラウザに提出する。ブラウザの応答処理が済み次第、見ることのできる内容がユーザに呈示されるように、初期画面がサーバに表示される。初期画面がブラウザにレンダリングされない場合、クライアント側のレンダリング・エンジンが初期画面のＵＩメタデータを処理するまで、ユーザには空白の画面が呈示され得る。従って初期画面はより早く表示される、というのも、クライアント１０４はメタデータ・インタープリタ２０４及び／又はレンダリング・エンジン２０６が画面のためにＵＩアセットを生成するのを待つ必要がないからである。一実施形態において、サーバシステム１０２のレンダリング・エンジン２０６は、要求がＷｅｂアプリケーションにとって最初の要求であると決定したホストコンポーネント２０２に応じて、初期画面をレンダリングする。一実施形態において、その他の画面をクライアント１０４にレンダリングすることができる。
【００５４】
一実施形態において、初期画面は最初の視覚的呈示に携わる全てのアクティビティの組み合わせである。例えば、第１アクティビティのアクティビティ構成が一連のいくつかのフォームアクティビティを定義するワークフローアクティビティである場合、初期画面はシーケンス内の第１フォームアクティビティの視覚的表示と共に、ワークフローハウジング（制御、タイトル、テキスト）を含む。
【００５５】
一実施形態において、（メタデータに定義された）各アクティビティ構成は、それがどのビジュアルコンポーネントをユーザに呈示するのかを示す。一実施形態において、その現状のアクティビティの視覚的表示は、アクティビティの子アクティビティ階層の再帰的なナビゲーション及びアクティビティツリー全体のビジュアルコンテキストを構築することによって決定される。結果として生じるビジュアルコンテキストはレンダリングされ、ブラウザに提出されるＵＩアセットを生成することができる。例えば、レンダリング・エンジン２０６は、アクティビティ及び任意の子アクティビティを再帰的に評価して、画面のビジュアルコンテキストを構築し、ビジュアルコンテキストの構築の完了に応じて画面を表示することにより、ＵＩの画面に表示するように構成され得る。
【００５６】
ビジュアルコンテキストを再帰的に構築してそれを一旦レンダリングする技術は、各子アクティビティを再帰的にレンダリングするよりも一般的に速い、というのも、ブラウザの文書オブジェクト・モデル（ＤＯＭ：document object model）の更新は一回のみ行われるからである。子アクティビティが個々にレンダリングされるのであれば、それによってブラウザのＤＯＭに対する複数の更新がトリガされ、このため、レンダリングが著しく減速されてしまう。レンダリング・エンジン２０６は、クライアントによる表示のため、初期画面に対応するＵＩアセットを生成することによって初期画面をレンダリングするように構成される。
【００５７】
応答コンポーネント２０８は、要求されるＷｅｂアプリケーションに対応するメタデータを含む応答をクライアント１０４に送信するように構成される。一実施形態において、応答コンポーネント２０８は、ホストコンポーネント２０２によって決定された情報をクライアント１０４に送信する。例えば、応答はＷｅｂアプリケーション全体のメタデータを含み得る。一実施形態において、応答は、レンダリング・エンジン２０６によってレンダリングされるような初期画面を含み得る。例えば、応答がＷｅｂアプリケーションの最初の要求に応じて送信される場合、その応答は初期画面のＵＩアセットを含み得る。一実施形態によれば、典型的なケースでは、アプリケーションの全てのＵＩメタデータは、最初の要求に応じてホストサーバからクライアント１０４に送信される。しかしながらこれに続く要求を、最初の要求に続く付加的なＵＩメタデータのホストのサーバ（又は第三者サーバ）に送信することも可能である。
【００５８】
図３はクライアント１０４の略ブロック図である。クライアント１０４は、要求コンポーネント３０２、受信側コンポーネント３０４、表示コンポーネント３０６及びウェブブラウザ３０８を含む。また、クライアント１０４は、メタデータ・インタープリタ２０４、レンダリング・エンジン２０６及びコアアクティビティタイプストア２１２を含む。一実施形態において、メタデータ・インタープリタ２０４、レンダリング・エンジン２０６及びコアアクティビティタイプストア１１２は、サーバシステム１０２によって、クライアント１０４のウェブブラウザ３０８内などの、クライアント１０４上で動作するように設けられる。
【００５９】
要求コンポーネント３０２は、Ｗｅｂアプリケーションの少なくとも一部に対する要求を送信するように構成される。要求コンポーネント３０２は、リンクを選択し、ＵＲＬを入力し、又はサーバシステム１０２によってホストされるＷｅｂアプリケーションを動作させるための入力を提供するユーザに応じて、要求を送信し得る。要求はＷｅｂアプリケーションに対応するＵＲＬを含み得る。要求は特定のＷｅｂアプリケーション又は機能を示し得る。要求は、クライアント１０４又はユーザのＩＤを示す情報を含み得る。例えば、要求はクライアント１０４に対応するテナント又はエンティティを示し得る。要求コンポーネント３０２は、要求が最初の要求である表示を含む要求を送信し得る。一実施形態において、要求コンポーネント３０２は、ウェブアプリケーションがすでにクライアント１０４上で動作している場合、そのウェブアプリケーションの現状を示し得る。
【００６０】
一実施形態において、システムは、ユーザがアクティビティ階層内のアクティビティに関連するリソースを要求することのできる、ディープリンクの設定をサポートする。例えば、クライアント１０４はルートアクティビティ以外のアクティビティを要求することができる。図４を参照すると、ディープリンクの設定には、アクティビティＢ４０４、すなわちアクティビティ階層４００におけるルートアクティビティＡ４０２以外の任意の他のアクティビティの要求が含まれ得る。一実施形態において、ユーザの要求に対するＵＲＬのローカルパスは、ＷｅｂアプリケーションのＵＩフロー内のユーザの位置を記述する、アクティビティ階層４００内の特定のアクティビティを表す。一実施形態において、非ルートアクティビティが要求されると、ルートアクティビティ（又はアクティビティ階層内のその他のアクティビティ）は、ＵＲＬパスの関連部分を対応する子アクティビティに伝える。子アクティビティは関連パスを使ってその視覚的表示を決定し、その子アクティビティで処理を反復する。このディープリンクの設定により、ワークフロー又はＷｅｂアプリケーションの任意のアクティビティをシステム挙動のエントリ・ポイントにすることが可能になる。例えば、ワークフローアクティビティそれ自身がアクティビティタイプとなる。アクティビティタイプとして特徴付けられたワークフローによって、ワークフローに依存し得るレガシー・システムとの統合がより容易になり得る。
【００６１】
いくつかの実施形態において、要求コンポーネント３０２は、最初の要求に続けて要求を送信し得る。例えば、要求コンポーネント３０２は付加的なＵＩメタデータに対する要求を、サーバシステム１０２（又は第三者サーバ）に送信し得る。
【００６２】
受信側コンポーネント３０４は、要求されたＷｅｂアプリケーションに対応するサーバシステム１０２から応答を受信するように構成される。応答は、サーバシステム１０２に関連して上述した情報のうちの任意のものを含み得る。応答は、Ｗｅｂアプリケーション全体のメタデータを含み得る。 一実施形態において、応答は、サーバシステム１０２においてレンダリング・エンジン２０６によってレンダリングされる初期画面を含み得る。例えば、応答がＷｅｂアプリケーションの最初の要求に応じて送信されるのであれば、この応答は初期画面のＵＩアセットを含み得る。一実施形態において、応答は、メタデータ・インタープリタ２０４、レンダリング・エンジン２０６及び／又はコアアクティビティタイプストア２１２を含み得る。
【００６３】
表示コンポーネント３０６はＵＩの１つ又は複数のビジュアルコンポーネントを表示するように構成される。一実施形態において、表示コンポーネント３０６は、レンダリング・エンジン２０６によってブラウザウィンドウにレンダリングされるような画面を表示する。例えば、表示コンポーネント３０６は、サーバシステム１０２からの応答で受信した初期画面を表示し得る。一実施形態において、表示コンポーネント３０６は、クライアント１０４のレンダリング・エンジン２０６によってレンダリングされるような画面を表示し得る。一実施形態において、表示コンポーネント３０６はクライアント１０４の物理的表示を含む。
【００６４】
ウェブブラウザ３０８は、ネットワーキングプロトコルに基づいてファイル及びウェブサイトにアクセスするように構成されたアプリケーション又はコンポーネントを含み得る。例えば、ウェブブラウザ３０８は、Ｗｅｂアプリケーション、ウェブサイトなどで使用される通信プロトコル、マークアップ言語、ファイルタイプなどのうちの１つ又は複数に基づいて、ウェブサイト及びファイルをブラウズ及びアクセスするように構成され得る。ブラウザの例として、Internet Explorer（登録商標）、Safari（登録商標）、Mozilla Firefox（登録商標）、Google Chrome（登録商標）などのモバイル版又はデスクトップ版がある。
【００６５】
メタデータ・インタープリタ２０４は、図２に関連して説明したメタデータ・インタープリタを含み得る。例えば、クライアント１０４上のメタデータ・インタープリタ２０４は、サーバシステム１０２上のメタデータ・インタープリタ２０４の別のインスタンスを含み得る。一実施形態において、メタデータ・インタープリタ２０４はクライアント１０４においてメタデータを解釈し、Ｗｅｂアプリケーション、制御ナビゲーションなどのＵＩを生成するために使用され得る。
【００６６】
レンダリング・エンジン２０６は図２に関連して説明したレンダリング・エンジンを含み得る。例えば、クライアント１０４上のレンダリング・エンジン２０６はサーバシステム１０２上のレンダリング・エンジン２０６の別のインスタンスを含み得る。一実施形態において、レンダリング・エンジン２０６はサーバシステム１０２でレンダリングされない任意の画面をレンダリングするために使用され得る。例えば、初期画像がサーバシステム１０２によってレンダリングされたのであれば、レンダリング・エンジン２０６は初期画像をレンダリングするために使用されない。初期画像に続く画像は、クライアント１０４にローカル接続されたレンダリング・エンジン２０６によってレンダリングされ得る。
【００６７】
また、クライアント１０４は、コア又はビルトインアクティビティタイプに関する情報を格納するための、コアアクティビティタイプストア２１２を含み得る。例えば、コアアクティビティタイプストア２１２はメタデータによって構成されるアクティビティタイプ又はアクティビティに対応するコードを含み得る。
【００６８】
本明細書に開示される教示に基づき、そしてクライアント１０４に配置されたメタデータ・インタープリタ２０４、レンダリング・エンジン２０６及びコアアクティビティタイプストア２１２を使って、クライアント１０４はメタデータを解釈して、対応するＷｅｂアプリケーションのＵＩを動的に生成することができる。よって、クライアント１０４はメタデータを使って、ＵＩレイアウト及びコンテント、並びにＵＩ挙動及びナビゲーションを定義することができる。更に、開発者及びユーザはＵＩメタデータを編集及び拡張することにより、ＵＩを拡張及びカスタマイズすることができる。本発明において、アリケーションサーバを再展開又は再起動せずに、ＵＩの変更を自動的に適用することができる。更に、特定のテナントに関して行なわれた変更を隔離し、これらのＵＩ変更が、テナントに対応するユーザなどのエンドユーザの特定のグループの経験のみに影響を与えるようにすることができる。
【００６９】
図５は、Ｗｅｂアプリケーションのメタデータ駆動ＵＩを提供する方法５００を示す、略的なフローチャート図である。一実施形態において、方法５００は、図２のサーバシステム１０２によって実行される。
【００７０】
方法５００が開始されると、５０２において、ホストコンポーネント２０２はクライアント１０４から要求を受信する。この要求は、サーバシステム１０２によってホストされるＷｅｂアプリケーションの少なくとも一部に対する要求を示し得る。メタデータ・インタープリタ２０４は、５０４において、要求されたＷｅｂアプリケーションに関連するＵＩメタデータを検索する。例えば、メタデータ・インタープリタ２０４は、Ｗｅｂアプリケーションのデフォルトアクティビティに対応するメタデータを検索し得る。一実施形態において、メタデータ・インタープリタ２０４はテナント固有のメタデータを検索し得る。メタデータ・インタープリタ２０４はテナント固有のメタデータに基づき、デフォルトメタデータを修正し得る。
【００７１】
５０６において、ホストコンポーネント２０２は、５０２においてクライアント１０４から受信した要求が最初の要求を含んでいるか否かを決定し、要求が最初の要求の場合（５０６でＹｅｓの場合）、レンダリング・エンジン２０６は、５０４においてメタデータ・インタープリタ２０４によって検索されたメタデータに基づき、５０８において、初期画面をレンダリングする。応答コンポーネント２０８は、５１０において、５０８においてレンダリング・エンジン２０６でレンダリングされたＵＩアセット、及びメタデータ・インタープリタ２０４によって検索されたＵＩメタデータを含む応答をクライアント１０４に送信し、方法５００を終了する。要求が最初の要求でない（５０６でＮｏ）場合、応答コンポーネント２０８は、５１２において、メタデータ・インタープリタ２０４によって検索されたＵＩメタデータを送信し、方法５００を終了する。一実施形態において、応答コンポーネント２０８は、Ｗｅｂアプリケーションの状況コンポーネントを含む応答を送信し得る。例えば、状況は、初期画面がすでにレンダリングされたか否かを示し得る。状況コンポーネントにより、クライアント１０４は、初期画面を再レンダリングせずに、サーバシステム１０２が中断したところから再度始めることができる。
【００７２】
図６はＷｅｂアプリケーションのメタデータ駆動ＵＩを提供する方法６００を説明する略的なフローチャートである。一実施形態において、方法６００は図３のクライアント１０４によって実行される。一実施形態において、クライアント１０４は図５の方法５００を実行するサーバシステム１０２と連携して方法６００を行い得る。
【００７３】
方法６００が開始されると、要求コンポーネント３０２は、６０２において、Ｗｅｂアプリケーションの少なくとも一部に対する要求をサーバシステム１０２に送信する。受信側コンポーネント３０４は、６０４において、（方法５００中、５１０又は５１２で送信された応答などの）要求への応答を受信する。応答にはＷｅｂアプリケーションのＵＩメタデータ及び／又は初期画面のＵＩアセットが含まれ得る。ＵＩアセットはサーバシステム１０２上にレンダリング・エンジン２０６によってレンダリングされるアセットを含み得る。
【００７４】
受信側コンポーネント３０４は、６０６において、要求コンポーネント３０２によって、６０２において送信された要求が最初の要求か否かを決定する。例えば、 受信側コンポーネント３０４は、６０６において、６０４で受信側コンポーネント３０４によって受信された応答が初期画面のＵＩアセットを含んでいるか否かを決定し得る。別の例として、受信側コンポーネント３０４は、応答における状況情報に基づき、要求が最初の要求だったか否かを決定し得る。例えば、クライアント１０４は、応答に示される状況情報に基づき、Ｗｅｂアプリケーションの実行を継続し得る。
【００７５】
要求が最初の要求でない（６０６でＮｏ）場合、レンダリング・エンジン２０６は、６０８において、初期画面（例えば、ＵＩメタデータの視覚的表示）をレンダリングし、６１０においてレンダリングされた初期画面のＵＩアセットを表示のためにウェブブラウザ３０８に提出して、方法６００を終了する。要求が最初の要求（６０６でＹｅｓ）の場合、レンダリング・エンジン２０６は、６１０において、６０４でウェブブラウザ３０８に応じて表示のために受信したＵＩアセットを提出し、方法６００を終了する。
【００７６】
上述の実施形態の詳細に関して、本開示の根本的な原理から逸脱することなく多くの変更を行うことができることは当業者にとって明らかであろう。従って本開示の範囲は以下の請求項によってのみ決定される。
【図１】
2018500613.tif 000003
【図２】
2018500613.tif 000004
【図３】
2018500613.tif 000005
【図４】
2018500613.tif 000006
【図５】
2018500613.tif 000007
【図６】
2018500613.tif 000008
【国際調査報告】
2018500613.tif 000009
2018500613.tif 000010