(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2024-02-09
(45)【発行日】2024-02-20
(54)【発明の名称】状態管理永続性
(51)【国際特許分類】
G06F 8/38 20180101AFI20240213BHJP
G06F 9/451 20180101ALI20240213BHJP
【FI】
G06F8/38
G06F9/451
【外国語出願】
(21)【出願番号】P 2022104905
(22)【出願日】2022-06-29
(62)【分割の表示】P 2020517945の分割
【原出願日】2018-09-24
【審査請求日】2022-07-08
(32)【優先日】2018-02-12
(33)【優先権主張国・地域又は機関】US
(32)【優先日】2018-06-07
(33)【優先権主張国・地域又は機関】US
(32)【優先日】2017-09-28
(33)【優先権主張国・地域又は機関】US
(32)【優先日】2017-09-28
(33)【優先権主張国・地域又は機関】US
(32)【優先日】2018-02-12
(33)【優先権主張国・地域又は機関】US
(73)【特許権者】
【識別番号】502303739
【氏名又は名称】オラクル・インターナショナル・コーポレイション
(74)【代理人】
【識別番号】110001195
【氏名又は名称】弁理士法人深見特許事務所
(72)【発明者】
【氏名】ストラウブ,クリスチャン
【審査官】坂庭 剛史
(56)【参考文献】
【文献】特開2005-070830(JP,A)
【文献】特表2014-526733(JP,A)
【文献】特開2012-063826(JP,A)
【文献】米国特許出願公開第2005/0203958(US,A1)
【文献】米国特許出願公開第2007/0073750(US,A1)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 8/20-8/38
G06F 9/44-9/451
(57)【特許請求の範囲】
【請求項1】
状態管理永続性を提供するための方法をコンピュータに実行させるためのプログラムであって、前記方法は、
表示されているアプリケーションの部分に応じて、前記アプリケーションの異なる状態に対して異なる
永続的ライフサイクルを提供することと、
前記
永続的ライフサイクルにおいて状態の作成および破棄に影響を及ぼすようにブラウザ挙動を模倣することとを含む、プログラム。
【請求項2】
前記方法は、コンテナを前記
永続的ライフサイクルに
関連付けることをさらに含む、請求項1に記載のプログラム。
【請求項3】
前記方法は、前記アプリケーションの作成物が
開始されるときに、前記作成物の状態を作成することをさらに含む、請求項1または2に記載のプログラム。
【請求項4】
前記作成物は、ページである、請求項3に記載のプログラム。
【請求項5】
前記方法は、前記作成物が終了するときに、前記作成物の状態を破棄することをさらに含む、請求項
3または4に記載のプログラム。
【請求項6】
前記方法は、前記異なる状態に
永続性を提供することをさらに含む、請求項1~5のいずれか1項に記載のプログラム。
【請求項7】
前記
永続性は、作成物が入力されるときに、前記異なる状態をどのように前記作成物に呼び戻すかを決める、請求項6に記載のプログラム。
【請求項8】
状態管理永続性を提供するためにコンピュータで実行される方法であって、
表示されているアプリケーションの部分に応じて、前記アプリケーションの異なる状態に対して異なる永続的ライフサイクルを提供することと、
前記永続的ライフサイクルにおいて状態の作成および破棄に影響を及ぼすようにブラウザ履歴を模倣することとを含む、方法。
【請求項9】
コンテナを前記永続的ライフサイクルに関連付けることをさらに含む、請求項8に記載の方法。
【請求項10】
前記アプリケーションの作成物が開始されると、前記作成物の状態を作成することをさらに含む、請求項8または9に記載の方法。
【請求項11】
前記作成物は、ページである、請求項10に記載の方法。
【請求項12】
前記作成物が終了すると、前記作成物の状態を破棄することをさらに含む、請求項10または11に記載の方法。
【請求項13】
前記方法は、前記異なる状態に永続性を提供することをさらに含む、請求項7~12のいずれか1項に記載の方法。
【請求項14】
前記永続性は、作成物が入力されるときに、前記異なる状態をどのように前記作成物に呼び戻すかを決める、請求項13に記載の方法。
【請求項15】
請求項1~7のいずれかに記載のプログラムを格納したメモリと、
前記プログラムを実行するプロセッサとを備える、システム。
【発明の詳細な説明】
【技術分野】
【0001】
関連出願の相互参照
本願は、2018年6月7日に提出され、「状態管理永続性」と題された米国特許出願第16/003023号、2017年9月28日に提出され、「状態管理永続性」と題された米国仮特許出願第62/564945号(参照番号ORACP0208P-1/ORA180300-US-PSP)および2018年2月12日に提出され、「状態管理永続性」と題された米国仮特許出願第62/629523号(参照番号ORACP0208P-2/ORA180300-US-PSP-2)、並びに2017年9月28日に提出され、「ルータ設定」と題された米国仮特許出願第62/564946号(参照番号ORACP0209-1/ORA180301-US-PSP)および2018年2月12日に提出され、「ルータ設定」と題された米国仮特許出願第62/629526号(参照番号ORACP0209P-2/ORA180301-US-PSP-2)の優先権を主張し、これらの出願の内容の全体は、あらゆる目的のために参照によって本願に組み込まれる。
【背景技術】
【0002】
背景
プロセスとは、機能を実現するために実行されるコードの一部である。並列処理システムにおいて、複数のプロセスを同時に実行することができる。これらのプロセスのうち2つ以上のプロセスは、共有している状態(「共有状態」とも呼ばれる)を更新することができる。2つ以上のプロセスが共有状態を同時にまたはほぼ同時に更新する場合、競合を引き起こす可能性がある。例えば、2つのプロセスが変数Yを共有しており、第1のプロセスが変数Yの値を4に更新し、第2のプロセスが変数Yの値を5に更新した場合、第1のプロセスの更新は、消去される。
【0003】
従来では、複数の並列プロセスが共有状態を同時に更新するという問題は、まったく対処されなかった、またはロック、ミューテックスまたはクリティカルセクションなどの高度なプログラミングメカニズムを使用して対処された。例えば、従来では、高度なプログラミングメカニズムは、第1のプロセスおよび第2のプロセスに対応する命令の同時実行を防止する。したがって、第1のプロセスおよび第2のプロセスの実行は、相互に排他的である。しかしながら、このような高度なプログラミングメカニズムを使用するコードを作成するために、開発者は、高度なプログラミングスキルを有する必要がある。
【発明の概要】
【課題を解決するための手段】
【0004】
概要
設コンテナ階層は、計時ツールのユーザインターフェイスで受信される。コンテナ階層は、1つ以上の他のコンテナの内部にネストされたコンテナを包含する。各コンテナは、ウェブクライアントアプリケーションの異なる部分を含む。設計時ツールは、コンテナ階層中の各コンテナに状態を関連付ける。各コンテナのライフサイクルは、ユーザインターフェイスで受信される。設計時ツールは、ウェブクライアントアプリケーションにおいて、階層に従って、各コンテナのライフサイクルに基づいて、各コンテナの状態を作成および破棄することを可能にするコンピュータ実行可能命令を作成する。設計時ツールは、各コンテナに関連付けられたライフサイクルイベントに基づいて、各コンテナ自体の状態および当該コンテナを包含するコンテナの状態に対するアクセスを各コンテナに提供する。
【0005】
一実施形態は、状態管理永続性を提供するための方法を実行させるための命令を含む非
一時的なプロセッサ可読記憶装置を提供する。方法は、設計時ツールのユーザインターフェイスで、1つ以上の他のコンテナの内部にネストされたコンテナを包含するコンテナ階層を受信することを含み、各コンテナは、ウェブクライアントアプリケーションの異なる部分を含み、設計時ツールを用いて、コンテナ階層内の各コンテナに状態を関連付けることと、設計時ツールのユーザインターフェイスで、各コンテナのライフサイクルを受信することと、設計時ツールを用いて、階層に従って、各コンテナのライフサイクルに基づいて、各コンテナの状態を作成および破棄することを可能にするコンピュータ実行可能命令をウェブクライアントアプリケーションに作成することと、設計時ツールを用いて、各コンテナに関連付けられたライフサイクルイベントに基づいて、各コンテナ自体の状態および当該コンテナを包含するコンテナの状態に対するアクセスを各コンテナに提供することとを含む。
【0006】
本明細書に開示された特定の実施形態の本質および利点のさらなる理解は、以下の説明および添付の図面を参照することによって実現され得る。
【図面の簡単な説明】
【0007】
【
図1】様々な実施形態に従って、URLを示す図である。
【
図2】一実施形態に従って、コンテナ階層を示すブロック図である。
【
図3】様々な実施形態に従って、コンテナの構成を示す図である。
【
図4】様々な実施形態に従って、システムを示す図である。
【
図5A】一実施形態に従って、並列に実行されている動作チェーンを示す図である。
【
図5B】一実施形態に従って、スナップショットの実装を示す図である。
【
図6】一実施形態に従って、クライアントアプリケーションのUIの一部であるボタンの動作チェーンを作成するためのページを示す図である。
【
図7】一実施形態に従って、設定パネルページのスクリーンショットを示す図である。
【
図8】一実施形態に従って、ライフサイクルイベントをユーザインターフェイスコンポーネントに関連付けるためのウェブページを示す図である。
【
図9】一実施形態に従って、検証コードを生成するためのウェブページを示す図である。
【
図10】一実施形態に従って、動作チェーンを選択するためのウェブページを示す図である。
【
図11】一実施形態に従って、開発者がページを使用する動作チェーンに必要な入力パラメータをマッピングするために使用できるウェブページを示す図である。
【
図12】一実施形態に従って、未熟練開発者がユーザインターフェイス(UI)コンポーネントをコンポーネントイベントに関連付けるために使用できるウェブページを示す図である。
【
図13】一実施形態に従って、イベントリストを含むウェブページを示す図である。
【
図14】一実施形態に従って、入力パラメータを指定するためのプロパティインスペクタを示す図である。
【
図15】一実施形態に従って、ページ選択ボタンを備えたプロパティインスペクタを示す図である。
【
図16】一実施形態に従って、開発者が作成しているクライアントアプリケーション内のページリストを示すページ選択ダイアログボックスを示す図である。
【
図17】一実施形態に従って、動作の名前を指定するためのプロパティインスペクタを示す図である。
【
図18】一実施形態に従って、変数をパラメータにマッピングするためのダイアログボックスを示す図である。
【
図19】一実施形態に従って、状態管理永続性を提供するための方法を示すフローチャートである。
【
図20】一実施形態に従って、ルータ設定を示すフローチャートである。
【
図21】一実施形態に従って、システムを示す図である。
【
図22】本明細書の図面に示された実施形態を実施するために使用可能なシステムおよび関連するコンピューティング環境を示す概略ブロック図である。
【
図23】本明細書に記載された実施形態を実施するために使用可能なコンピューティング装置を示す概略ブロック図である。
【発明を実施するための形態】
【0008】
実施形態の詳細な説明
1つのコンピュータ実行可能命令が状態、例えば変数を変更している間に、別のコンピュータ実行可能命令がその状態を読み取ると、問題が発生する。従来では、この問題は、まったく対処されなかった、またはロック、ミューテックスまたはクリティカルセクションなどの高度なプログラミングメカニズムを用いて対処された。しかしながら、このような高度なプログラミングメカニズムを使用するコードを作成するために、開発者は、高度なプログラミングスキルを有する必要がある。状態管理永続性(state management persistence)の様々な実施形態は、未熟練開発者が、高度なプログラミングメカニズムを使用せず、コードを作成できるように、これらの問題に対処する。
【0009】
様々な実施形態は、アプリケーション状態の一部を作成、復元および破棄するときの自動処理を提供する。永続性ライフサイクルを用いて、ブラウザの挙動、例えばセッション永続性(session persistence)および履歴状態を模倣することができる。
【0010】
様々な実施形態は、状態管理の少なくとも2つの特徴、すなわち、コンテナシップ(containership)および存続期間(lifetime)を提供する。
【0011】
(「スコープ」とも呼ばれる)コンテナシップは、状態の一部がアクティブであるときに作用する。例えば、ページスコープの状態は、ページに含まれる。一実施形態によれば、ページスコープの状態は、ページが閲覧されているときのみ利用可能であり、ユーザがページから離れると利用できなくなる。
【0012】
永続性とは、システムがその状態を維持する期間を指す。例としてウェブを使用する場合、状態は、ウェブセッションの全体に維持されてもよく(ユーザがブラウザのタブを閉じるまで、状態が存在する)、ウェブセッションの間に維持されてもよく(ユーザがブラウザのタブを閉じて戻ってきた場合に、状態が存在する)、またはブラウザの履歴を模倣するために使用されてもよい(ユーザが「戻る」ボタンを押した場合に、状態が存在するが、ユーザがユーザインターフェイスの一部に直接にナビゲートした場合に、状態が存在しない)。
【0013】
状態は、コンテナシップと永続性の組み合わせで管理することができる。例えば、ユーザがUIと対話してページを表示させる場合、そのページに含まれている全ての状態が初期化され、使用可能になる。永続性の設定によって、状態は、初期化の時にデフォルト値に設定され、保存される。
【0014】
従来では、URL(uniform resource locator)のみを用いて、ページを表示するための経路を指定した。したがって、ブラウザ内のウェブアプリケーション、モジュール、ページおよびURLまたはリソースと他のページとは、アプリケーションの構造内に存在するのに拘わらず、互いに独立している。様々な実施形態は、URLの一部(本明細書では「ルータ設定」とも呼ばれる)に基づいて、アプリケーション、モジュールおよびページ
の状態に対する管理を提供する。
【0015】
様々な実施形態は、アプリケーションを構成するための高度にモジュール化された方法を提供する。この場合、URLの各下位経路は、各自の開始/破棄ライフサイクルを含むモジュールを表す。
【0016】
(本明細書では「スコープ」とも呼ばれる)コンテナシップは、状態の一部がアクティブであるときに作用する。例えば、ページスコープの状態は、ページに含まれる。一実施形態によれば、ページスコープの状態は、ページが閲覧されているときのみ利用可能であり、ユーザがページから離れると利用できなくなる。
【0017】
例示的なシステム内のコンテナは、ページ(ユーザが閲覧しているUIの一頁)、フロー(複数のページ)、アプリケーション(複数のフロー)などであり得る。本明細書に記載された各コンテナは、独立に管理されている各自の状態群を有する。
【0018】
説明のために、以下のURLを例として挙げる。
https://mycompany.com/sales/accounts/contact
このURLは、「mycompany」、「sales」、「accounts」、および「contact」部分に
分解することができる。「mycompany.com」は、アプリケーションの全体を表す。「sales」部分および「accounts」部分は、ネストしているフローを各々表す。最後の「contact
」は、ウェブブラウザにロードするページを表す。
【0019】
このURLの場合、まず、アプリケーションの状態を作成し、次に「sales」フロー、
その後「accounts」フロー、最後に「contact」ページの状態を作成することができる。
【0020】
一例として、ユーザが次のURLにナビゲートすると仮定する。
https://mycompany.com/sales/opportunity/detail
この場合、ユーザは、同一のアプリケーション、すなわち「mycompany.com」、および
「sales」フローに位置している。「accounts」フローおよび「contact」ページから離れた。したがって、一実施形態によれば、システムは、アプリケーションおよび「sales」
フローの状態を維持すると共に、「accounts」フローおよび「contact」ページの状態を
破棄し、その後、「opportunity」フローおよび「detail」ページの状態を初期化する。
【0021】
図1は、様々な実施形態に従って、URLを示す図である。
各URL110、120および130は、バックスラッシュで区切られた部分101~103、122、123および133を含む。各URLの最初のバックラッシュ100は、アプリケーションを表す。URL110、120および130の最後の部分103、123および133は、対応するアプリケーション内のウェブページを表す。各々のURL110、120および130の最初のバックスラッシュ100との間に存在する部分101、120および122は、モジュールを表す。
【0022】
一実施形態によれば、アプリケーション、モジュールおよびページの各々は、各自のコンテナに位置する。URLの各部分を用いて、アプリケーション、モジュールおよびページにおけるナビゲーションを決定し、各コンテナの変数、例えば状態を作成および破棄するタイミングを決定する。
【0023】
URL110、120または130をブラウザに入力すると、ブラウザは、対応するページを表示する。例えば、URL110を入力すると、「ExpenseReports」ページが表示される。URL120を入力すると、「Employee」ページが表示される。
【0024】
図2は、一実施形態に従って、コンテナ階層を示すブロック図である。
アプリケーションコンテナ210は、SaaSクラウドモジュールコンテナ220、モジュール250、およびページ211、212を含む。SaaSクラウドモジュールコンテナ220は、人事モジュールコンテナ230および財務モジュールコンテナ240を含む。人事モジュールコンテナは、従業員ページコンテナ231を含む。財務モジュールコンテナ240は、経費報告ページコンテナ241および領収書ページコンテナ242を含む。モジュールコンテナ250は、ページコンテナ251および252を含む。
【0025】
コンテナは、コンテナ階層200に編成される。階層200内のコンテナは、ネストすることができる。各コンテナに対応する階層の経路(「階層経路」とも呼ばれる)は、当該コンテナを含む複数のコンテナおよび含まれた複数のコンテナの順序によって定義される。例えば、領収書ページコンテナ242の階層経路261は、アプリケーションコンテナ210内部のSaaSクラウドモジュールモジュールコンテナ220内部の財務モジュールコンテナ240内部の領収書ページコンテナ242によって定義される。
図2は、ネストされた様々なコンテナに沿った他の階層経路262~267を示している。一実施形態によれば、各コンテナは、関連する階層経路を有することができる。
【0026】
図3は、様々な実施形態に従って、コンテナの構成を示している。
モジュールコンテナ310は、スコープ320およびJavaScript(登録商標)コード330を含む。スコープ320は、モジュールコンテナ310によって使用される変数321、コンテナ310のモジュールの一部として実行される動作チェーン(action chain)322、およびモジュールコンテナ310のライフサイクル323を含む。
【0027】
ページコンテナ340は、HTML(HyperText Markup Language)341、スコープ
350、およびJavaScript360を含む。スコープ350は、ページコンテナ340によって使用される変数351、コンテナ340のページの一部として実行される動作チェーン352、およびページコンテナ340のライフサイクル353を含む。
【0028】
アプリケーションコンテナは、1つ以上のモジュールコンテナおよび/または1つ以上のページコンテナを包含することができる。
図2に示すように、コンテナは、任意の深度で他のコンテナにネストすることによって、様々な階層経路を有するコンテナ階層を形成することができる。
【0029】
各コンテナ310、340は、関連するライフサイクル323、353を有する。ライフサイクルは、フェーズを含む。フェーズは、例示として、「beforeEnter」ページ、「enter」ページ、「interactable」ページ、ページを終了できることを意味する「canExit
」、およびページを終了する前に発生する「beforeExit」フェーズを含む。フェーズは、相互に排他的である。換言すれば、コンテナのライフサイクルにおいて、一度に1つのフェーズしか動作できない。さらに、フェーズは、順番に動作する。より具体的には、「beforeEnter」フェーズの後に「Enter」フェーズが続き、その後に「interactable」フェーズが続き、最後に「beforeExit」フェーズである。
【0030】
ライフサイクルフェーズは、動作チェーンを開始するために使用できるイベントである。
【0031】
図4は、様々な実施形態に従ってシステム400を示す。
システム400は、ツール410、ハードウェアメモリ420、データベース430、サーバアプリケーション450、サーバアプリケーション460、クライアントアプリケーション440、および要素410、420、430、450、460と要素440との間に通信を行うためのネットワーク470を含む。設計時ツール410は、ユーザインタ
ーフェイス411を提供する。クライアントアプリケーション440は、コード441およびユーザインターフェイス442を含む。
【0032】
一実施形態によれば、クライアントアプリケーション440は、ツール410でまたはツール410によって実行される。ツール410およびクライアントアプリケーション440は、同一のコンピュータまたは互いに通信する別個のコンピュータ上で実行することができる。
【0033】
設計時ツール410は、クライアントアプリケーション440を作成するための、例えばウェブページのユーザインターフェイス411を含む。ツール440は、開発者または開発チームがクライアントアプリケーション440を作成するためにクラウドを介して使用するビジュアルアプリケーション構築機能を提供することができる。ビジュアルビルダークラウドサービス(VBCS)は、本明細書に記載された様々なビジュアルアプリケーション構築機能の実施形態を提供するように変更されている。コード441は、開発者または開発チームがユーザインターフェイス411に入力したものに基づいて、ツール440によって作成されたコンピュータ実行可能命令を含む。
【0034】
クライアントアプリケーション440を設計するときに、ユーザは、ユーザインターフェイス411を介して、コード441のコンピュータ実行可能命令の作成方法を指定することができる。より具体的には、ユーザインターフェイス411を用いて、コンテナ階層200、
図3に示されたコンテナ情報、および本明細書に記載された様々な実施形態を定義および実装するコード441を作成することができる。コンテナ階層200、
図3に示されたコンテナ情報、および本明細書に記載された様々な実施形態を定義する情報は、クライアントアプリケーションおよび関連するコードの設計の一部として、ハードウェアメモリ420、データベース430、クライアントアプリケーション440を実行するコンピュータ、および/またはコンピュータ実行ツール410に保存することができる。ランタイム実行中に作成されたコード441は、上記の情報にアクセスして、様々な実施形態を提供することができる。また、クライアントアプリケーション440および関連するコード441は、実行中に1つ以上のサーバアプリケーションと通信し、1つ以上のサーバアプリケーションを実行する。コンテナ231、241および242のページは、コード441の実行結果として、ユーザインターフェイス442に表示される。本明細書に記載されたように、コンテナ231、241および242のページは、例えば、ユーザがクライアントアプリケーション440と通信するコンピュータ上で動作するブラウザに入力したURLに応答して、ブラウザに表示される。
【0035】
ツール410は、例えば、ドラッグおよびドロップすることができるボックスおよび矢印並びにデータ入力フィールドを提供することによって、コード441のコンピュータ命令を作成する多くの複雑性を隠す「宣言型システム」を提供する。宣言機能により、未熟練プログラマーは、コンテナ、コンテナ階層、動作チェーンおよびイベントを作成することができ、ボックスおよび矢印などのビジュアル表現を用いて、特定のイベントによってトリガーされる動作チェーンを指定することができる。より具体的には、データ入力フィールドに入力されたボックスおよび名前を用いて、コンテナを表すことができる。
図2に示すように、ボックスの内部にネストされたボックスを用いて、コンテナの内部にネストされたコンテナを表すことができる。線または矢印を用いて、動作チェーンをトリガーする特定のコンテナのライフサイクルのフェーズを指定することができる。これらは、設計時に行うことができる。その後、クライアントアプリケーションの実行中に、基礎となるコンピュータ実行可能なコード441を実行することができる。これらの開発者は、「宣言型開発者」または「宣言型プログラマ」と呼ばれる。宣言型開発者は、高度なプログラミング技術を使用できない。
【0036】
状態は、コンテナシップと永続性の組み合わせで管理される。コンテナの構成は、
図3に示されている。コンテナは、(「状態」とも呼ばれる)変数がアクティブであるときに作用する。永続性とは、変数を維持する期間を指す。様々な種類のスコープは、永続性のレベルまたは種類を決定する。本明細書に記載されたように、スコープは、例示として、セッションスコープ、装置スコープ、履歴スコープを含む。
【0037】
セッションスコープの場合、同一のブラウザタブ内のページを終了すると、ページの変数が破棄される。しかしながら、同一のブラウザタブに存在する限り、そのページに戻ると、同様の変数が復元される。変数は、ブラウザのセッションストレージに保存することができる。したがって、ブラウザが開いている限り、変数は、存続する。
【0038】
装置スコープの場合、ブラウザタブを終了すると、ページの変数が破棄される。数日後に同様のページに戻って来る場合、これらの変数が復元される。変数は、ブラウザのローカルストレージに保存することができる。したがって、ブラウザが閉じられても、変数は、アプリケーションを実行する装置上に存続する。装置スコープは、「ローカルスコープ」とも呼ばれる。
【0039】
履歴スコープの場合、ユーザは、クライアントアプリケーションのページ間にナビゲートしながら、変数の値を表示させることができる。例えば、変数値は、ブラウザの履歴に保存される。ブラウザの「戻る」ボタンを使用してブラウザ履歴のページに戻る場合またはページを更新する場合に、変数値は、アプリケーションをページから離れたときの値に復元される。
【0040】
様々な実施形態に従って、スコープを用いて、ブラウザの挙動、例えばセッション永続性、履歴状態などを模擬することができる。例えば、セッションスコープを用いて、セッション永続性を提供することができ、履歴スコープを用いて、履歴状態を提供することができる。
【0041】
図2を参照して、領収書ページが領収書ページコンテナ242と他のコンテナとの間で共有されているコンテナの変数を変更する場合、他のコンテナは、これらの変更にアクセスすることができる。例えば、領収ページコンテナ242がSaaSクラウドモジュールコンテナ220の変数Xおよびアプリケーションコンテナ210の変数Yを変更する場合、従業員ページコンテナ231も変数XおよびYの変更にアクセスすることができる。この例示の場合、その理由は、領収書ページコンテナ242および従業員ページコンテナ231の両方がコンテナ220および210に存在しており、コンテナ220および210が領収書ページコンテナ242および従業員ページコンテナ231の両方の階層経路261および262に関連付けられているからである。
【0042】
一実施形態によれば、1つのクライアントアプリケーションは、一度に1つのみのページを表示する。したがって、1つの階層経路に関連付けられている変数値の変更は、別の階層経路に関連付けられている変数値の変更と競合しない。より具体的には、
図2を参照して例を続けると、ページ242および231の両方がコンテナ220および210に各々属する変数XおよびYにアクセスするが、一度にページ242、231のうち1つのみが表示されるため、競合は発生しない。したがって、ページ242、231は、変数XおよびYの値を同時に変更することができない。
【0043】
クライアントアプリケーションの2つの異なるコピーは、各々異なるページを表示することができる。例えば、
図4を参照して、クライアントアプリケーション440の2つのコピーがあり、2つのコピーの各々が各々のページを表示すると仮定する。2つのページの両方がSaaSクラウドモジュールコンテナの変数Xの値を変更する場合、データベー
ス430は、変更をデータベース430に送信する一環として競合を解決する。
【0044】
各コンテナは、1つ以上の動作チェーンを開始することができる。また、1つのライフサイクルフェーズにおいて、1つ以上の動作チェーンを並列に開始および実行することができる。例えば、
図2を参照して、SaaSクラウドモジュールコンテナ220および財務モジュールコンテナ240の動作チェーンを同時に実行することができる。
【0045】
特定のコンテナの各ライフサイクルフェーズが相互に排他的に実行されるため、特定のコンテナの異なるライフサイクルフェーズの動作チェーンは、並列に実行されない。より具体的には、
図2を参照して、領収書ページコンテナ242が「beforeEnter」ライフサ
イクルフェーズ中に20個の動作チェーンを開始した場合、これらの20個の動作チェーンは、領収書ページコンテナ242の「enter」ライフサイクルフェーズの前に終了する
。
【0046】
コンテナの動作チェーンは、同一コンテナの別の動作チェーンの実行を開始することができ、引き起こすことができる。また、1つのコンテナ内の動作チェーンは、階層経路に沿ったコンテナ内の動作チェーンの実行を開始することができ、引き起こすことができる。例えば、
図2を参照して、受信ページコンテナ242の動作チェーンは、階層経路261に沿ったコンテナ252、240、220、210に関連付けられた動作チェーンの実行を開始することができ、引き起こすことができる。
【0047】
ライフサイクルフェーズは、イベントであるため、動作チェーンをトリガーすることができる。例えば、特定のコンテナのライフサイクルフェーズ「Enter」は、1つ以上の動
作チェーンをトリガーすることができる。
【0048】
動作チェーンは、並列に実行する複数の子動作チェーンを開始することができる。その後、複数の子動作チェーンを結合することができる。
【0049】
一実施形態によれば、階層経路は、クライアントアプリケーション440のユーザインターフェイスにページを表示するようにユーザがブラウザに入力したURLに対応する。例えば、
図2および
図4を参照して、階層経路261は、「/SaaSCloud/Financials/receipts」を指定するURLに対応する。より具体的には、ユーザがこのURLをブラウザに入力すると、最初のバックスラッシュにより、コード441のコンピュータ実行可能命令は、アプリケーションコンテナ210を開始する。URLの「SaaSCloud」部分により、
コード441のコンピュータ実行可能命令は、SaaSクラウドモジュールコンテナ220を開始し、URLの「Financials」部分により、コード441のコンピュータ実行可能命令は、財務モジュールコンテナ240を開始し、URLの「receipts」部分により、コード441のコンピュータ実行可能命令は、領収書ページコンテナ242を開始し、対応する領収書ページをロードする。同様に、階層経路262は、「/SaasCloud/HumanResources/Employee」を指定するURLに対応し、階層経路263は、「/SaaSCloud/Financials/ExpenseReport」を指定するURLに対応する。
【0050】
各コンテナの状態は、各コンテナに関連付けられたライフサイクルに基づいて、作成および破棄される。開発者は、ツール410の設計時ユーザインターフェイス411を用いて、各コンテナの状態の作成および破棄をトリガーするライフサイクルイベントを指定することができる。例えば、「beforeEnter」ライフサイクルイベントは、経費報告ページ
コンテナ141の状態の作成をトリガーすることができ、「beforeExit」ライフサイクルイベントは、経費報告ページコンテナ241の状態の破棄をトリガーすることができる。状態の作成をトリガーするライフサイクルイベントは、コンテナによって異なってもよい。例えば、あるコンテナの状態の作成は、「beforeEnter」によってトリガーされるが、
別のコンテナの状態の作成は、「Enter」によってトリガーされる。また、状態の破棄を
トリガーするライフサイクルイベントは、コンテナによって異なってもよい。
【0051】
さらに、各コンテナの状態の作成および破棄は、階層経路に従って行われる。例えば、
図2および4を参照して、ユーザがクライアントアプリケーション440を実行するコンピュータのブラウザに「/SaaSCloud/Financials/ExpenseReport」というURLを入力し
た場合、バックスラッシュは、アプリケーションコンテナ210を開始する。アプリケーションコンテナ210の状態は、開発者が設計時ユーザインターフェイス411を用いて指定したライフサイクルイベントに応答して作成される。URLの「SaasCloud」部分は
、SaaSクラウドモジュールコンテナ220を開始する。SaaSクラウドモジュールコンテナ220の状態は、開発者が設計時ユーザインターフェイス411を用いてコンテナ220に指定したライフサイクルイベントに応答して作成される。同様に、財務モジュールコンテナ240および経費報告ページコンテナ241に対応する状態は、開発者が対応するコンテナ240、241に指定したライフサイクルイベントに応答して作成される。また、ユーザが「/SaasCloud/HumanResources/Employee」というURLを入力した場合、経費報告ページコンテナ241の状態および財務コンテナ240の状態の破棄は、開発者が設計時ユーザインターフェイス331を用いて対応するコンテナ241、240に指定したライフサイクルイベントに応答してトリガーされる。人事モジュールコンテナ230および従業員ページコンテナ231の状態の作成は、開発者が対応するコンテナ230、231に指定したライフサイクルイベントに応答してトリガーされる。URLに対応する階層経路262、263の両方がアプリケーションコンテナ210およびSaaSクラウドコンテナ220を共有しているため、コンテナ210、220の状態は、維持される。各コンテナは、当該コンテナを包含するコンテナの状態にアクセスすることができる。例えば、コンテナ220は、コンテナ210の状態にアクセスすることができる。コンテナ240は、コンテナ220および210の状態にアクセスすることができる。コンテナ241は、コンテナ240、220および210の状態にアクセスすることができる。しかしながら、各コンテナは、当該コンテナを包含していないコンテナの状態にアクセスすることができない。例えば、コンテナ240および241は、コンテナ230および231の状態にアクセスするこができず、その逆も同様である。
【0052】
動作チェーンによって使用されたグローバル変数のスナップショットは、各動作チェーンの開始時に取得される。例えば、1つの親動作チェーンが2つの子動作チェーンを開始する場合、3つのスナップショットが取得される。
【0053】
動作チェーンによって使用されたグローバル変数のスナップショットは、動作チェーンの実行を開始するときに取得される。例えば、各動作チェーンの3つのスナップショットが
図5Aに示されている。
【0054】
図5Aは、一実施形態に従って、並列に実行されている動作チェーン510、520、530を示す。関数または動作チェーンが「並列」に実行すると記載されるが、よく知られているように、並列実行という概念は、一般的に、マイクロ実行レベルで一度に1つのみの動作チェーンを実行するシングルプロセッサを用いて実行したタイムスライス処理を記述するときに使用される。しかしながら、より高いマクロ実行レベル、例えばアプリケーション命令レベルにおいて、動作チェーンが同時にまたは並列に動作するとみなされる。一般的に、本明細書に記載された実施形態は、任意の実行スキーム、例えば、シングルまたはマルチプロセッサアーキテクチャ、マルチスレッド処理、マルチパイプライン処理、時分割処理、分散処理またはネットワーク(例えば、クラウド)処理に適用することができる。
【0055】
動作チェーン510、520、30は、一連の動作511、512、521~525、
および531~533を指す。ボックスは、動作511、512、521~525および531~533を表し、矢印は、各々の動作チェーンにおいて1つの動作から別の動作への制御の流れを表す。例えば、実行は、矢印の方向に沿って行われる。動作は、矢印で連結された第1のボックスおよび第2のボックスによって示されている動作チェーンにおいて、連続して実行することができる。第2の動作チェーン520の3つのボックス522~524によって示されているように、動作は、並列に実行することもできる。より具体的には、第2のチェーン520の第1の動作521は、3つの並列動作522~524に分岐して実行され、その後下位の動作525に結合されてもよい。代替的に、1つの動作チェーンを呼び出すときにチェーン内の全ての動作を実行しないように、条件付きで1つ以上の動作を実行することもできる。1つ以上の動作は、前の動作の子動作である。例えば、第2の動作チェーン120の第1の動作521は、親動作であり、そこから分岐した3つの動作522~524は、子動作である。他の例において、動作511は、動作512の親動作であり、動作531は、動作533の親動作である。
【0056】
動作は、様々な種類の処理を実行することができる。例えば、1つの動作は、変数から値を読み取ることができる。別の動作は、値を変数に書き込むことができる。別の例において、特定の閾値を下回るいくつかの株価を取得し、いずれかの株価が特定の閾値を下回る場合に警告を提供したい場合がある。この場合、動作は、いくつかの他の動作に分岐され、これらの動作の各々は、並列に株価を取得する。株価が取得されると、これらの動作は、1つの動作に結合され、閾値を下回る株価を決定し、その情報を警告として提供する。さらに別の例において、ユーザがリストとして表示された各々の歌の下方の「購入」ボタンを選択することによっていくつかの歌を購入できるように、ウェブページを設計することができる。「購入」ボタンを選択すると、動作を開始するイベントがトリガーされる。各動作は、購入を並列に処理することができる。
【0057】
様々な実施形態によれば、各々の動作チェーンは、動作チェーンを隔離する線によって示されたように、区画541、542、543(「隔離」とも呼ばれる)によって互いに隔離される。換言すれば、各動作チェーンは、動作時の状態のプライベートビューを有する。例えば、Yは、グローバル状態を表す。例示として、状態は、変数およびデータ流を含む。各動作チェーンは、実行を開始するときに、グローバル状態の独自のプライベートビューを有する。例えば、Y1は、Yの第1の動作チェーンのプライベートビューであり、Y2は、Yの第2の動作チェーンのプライベートビューであり、Y3は、Yの第3の動作チェーンのプライベートビューである。
【0058】
一実施形態において、ビューY1、Y2、Y3は、3つの動作チェーン510、520、530の隔離541、542、543の各々のローカル変数を用いて実現することができる。したがって、各々の動作チェーン510、520、530は、グローバル状態Yを変更せず、各ローカル変数Y1、Y2、Y3を変更することができる。事実上、作成されたグローバル状態Yのスナップショットは、Y1、Y2、Y3の元の状態のスナップショットとなり、1つの動作チェーンにバグがある場合、デバッグのためにその動作チェーンの状態を開始状態に戻すことができる。ビューY1、Y2、Y3は、状態Yのバージョンを表し、各々の動作チェーンによって変更できるため、変更可能な状態の例である。動作チェーンは、プロセスの例である。Y3は、Y1およびY2とは別の時間に作成されている。したがって、第3の動作チェーン503の動作531において、Yのみが読み取られるため、グローバル変数Yの値が使用される。動作532において、グローバル変数Yを書き込む。グローバル変数Yを書き込む前に、ローカルコピーY3が作成されたため、YではなくY3が書き込まれる。したがって、一実施形態において、ローカル変数は、動的に作成される。一実施形態において、動作チェーンの終了560において、競合解決策570が実行され、Y1、Y2およびY3の最終値から、グローバル状態Yの新しい値を決定する。一実施形態において、最後に書き込まれた変数Y1、Y2またはY3は、グロー
バル状態Yの新しい値である。
【0059】
図5Bは、一実施形態に従って、スナップショットの実装を示す図である。
動作チェーンによって使用されるグローバル変数のスナップショットは、動作チェーンの実行を開始するときに取得される。
図5Bは、
図5Bに示された動作チェーン510、520、530の各々の3つのラッパー、すなわち、501、502および503a/503bの例を示す。グローバル変数がX、YおよびZであると仮定する。この例において、動作チェーン510、520、130の各々の場合、ラッパーまたはプロキシーを用いて、グローバル変数X、YおよびZとインターフェイスする。例えば、ラッパーまたはプロキシを用いて、グローバル状態Yから、3つの動作チェーンに対応するプライベートビューY1、Y2、Y3を隔離する。動作チェーン30の場合、ラッパー3053aは、グローバル変数Xのローカルコピー、すなわち、ローカルコピーX3を作成するが、この時点においてYおよびZが読み取り専用であるため、グローバル変数YおよびZのコピーを作成しない。したがって、ラッパー503aは、YおよびZの値をパスする。その後、Yを書き込むときに、ラッパー503b(この実施形態において、ラッパー503aおよび503bは、異なる時点で実行された同様のラッパーコードである)ローカルコピーY3を作成する。動作チェーン530は、この時点(動作チェーン532)でXのローカルコピーX3を使用するが、Zが読み取り専用であるため、Zをパスする。ラッパーまたはプロキシは、共有されている変数YとプライベートビューY1、Y2、Y3との間の関連関係を提供する。この関連関係に基づき、クライアントアプリケーション250に対応する動作チェーン251のランタイム実行時に、Y1、Y2およびY3を変更するための暗黙的なコンピュータ実行可能命令を用いて、Yを変更するための明示的なコンピュータ実行可能命令を置換することができる。
【0060】
同様に、X1、X2およびX3は、各々の動作チェーンのプライベートビューをグローバル変数Xに提供する。Z1およびZ2は、各々の動作チェーンのプライベートビューをグローバル変数Zに提供する。
【0061】
説明のために、
図5Bは、3つのスナップショットに対して、3組の変数X、Y、Zを示している。X、Y、Zがクライアントアプリケーションのグローバル変数であるため、各組のXは、同様の変数であり、各組のYは、同様の変数であり、各組のZは、同様の変数である。
【0062】
スナップショットおよび関連するラッパーは、ネストすることができる。例えば、第1の動作チェーンが別の動作チェーンを開始する場合、2つのスナップショットが取得される。第1のスナップショットは、親動作チェーンのスナップショットであり、第2のスナップショットは、子動作チェーンのスナップショットである。第2のスナップショットは、第1のスナップショットにネストされる。一例として、動作チェーンが2つの他の動作チェーンを開始する場合、3つのスナップショットが取得される。
【0063】
動作チェーンは、クライアントアプリケーションの開発者が指定した明示的なコンピュータ実行可能命令を介して、グローバル変数X、YおよびZを読み書きすることができ、これらの操作を適切なプライベートビューにリダイレクトすることによって、適切な暗黙的なコンピュータ命令の実行を用いて、これらの明示的なコンピュータ命令の実行を置換することができる。例えば、ラッパーを作成し、ローカル保存されたプライベートビューY1を取得し、Yの値にY1を割り当て、Y1=Y1+1にすることによって、暗黙的なコンピュータ命令を用いて、明示的なコンピュータ実行可能命令Y=Y+1を置換することができる。
【0064】
一実施形態によれば、変更される変数のみのスナップショットは、取得されるが、読み
取り専用の変数のスナップショットは、取得されない。
【0065】
一実施形態によれば、グローバル変数のプライベートビューは、グローバル変数が変更される直前に作成される。
【0066】
一実施形態によれば、グローバル変数をラッパーにコピーすることによって、プライベートビューを作成する。変数の変更を追跡することによって、変更された変数の状態を判断することができる。プライベートビューは、対応するグローバル変数が読み取られるまでまたは別のプロセスによって変更されるまで、詳細に作成することができる。
【0067】
図6~18に示されているページは、ツールのUI411の一部である。状態管理永続性のユーザインターフェイスは、ツールのユーザインターフェイス411の一部である。ルータ設定のユーザインターフェイスも、ツールのユーザインターフェイス411の一部である。ユーザインターフェイス411は、設計時に、クライアントアプリケーションの実行時に実行されるコード441の一部であるコンピュータ実行可能命令を生成する。
【0068】
開発者は、設計ツール410のUI411を用いて、ページをカスタマイズする。
図6は、一実施形態に従って、UI442の一部であるボタンの動作チェーンを作成するためのページ600のスクリーンショットを示している。記述セクションを追加することができる。
【0069】
「私の動作チェーンの開始」タブ680を選択することによって、ページ600を表示することができる。UI411のページ600は、左側において、動作チェーン640に追加できる動作のパレット610を含む。ページ600の中央セクション620は、動作チェーン640の1つ以上の動作のシーケンスを表す流れ図を示している。菱形641は、動作チェーン640を実行するときに選択できる複数の代替経路を決定するための「IF」命令文または分岐条件を表す。
【0070】
図6に示すように、パレット610は、「全般」、「ロジック」および「ナビゲーション」として標記された3つのセクション650、660、670を有する。各セクション650、660、670は、動作チェーン640を作成するために、中央セクション620にドラッグして、ドロップすることができる動作を表すアイコンを含む。
【0071】
全般セクション650は、3行のアイコンを有する。全般セクションの第1行の第1アイコン651は、変数の割り当てを表す。例えば、このアイコン651を使って、変数を異なる値に設定することできる。第1行の第2アイコン652は、動作チェーンの呼び出しを表す。開発者は、このアイコンを使って、当該動作から別の動作チェーンを呼び出すことができる。第1行の第3アイコン653は、コンポーネントメソッドの呼び出しを表す。開発者は、このアイコンを使って、UI442のために作成されるページ上で呼び出されるUIコンポーネント、例えばボタンを決定することができる。
【0072】
全般セクションの第2行は、3つのアイコンを含む。第2行の第1アイコン654は、「モジュール関数の呼び出し」アイコンである。開発者は、このアイコンを使って、UI442のために作成されるページのJavaScriptで独自の関数を定義することができる。開発者は、「モジュール関数の呼び出し」アイコンを使って、これらの関数を呼び出すコードを作成することができる。第2行の第2アイコン655は、「RESTエンドポイントの呼び出し」アイコンである。開発者は、このアイコンを使って、データを更新するまたはデータを要求するためのRESTエンドポイントを呼び出すコードを作成することができる。
【0073】
全般セクション650の第3行は、2つのアイコンを含む。第3行の第1アイコン657は、「始動通知」アイコンである。このアイコンを使って、動作チェーンが実装に使用されているメッセージをページに表示することができる。第3行の第2アイコン658は、「変数のリセット」アイコンである。このアイコンを使って、状態の値をデフォルト値にリセットすることができる。
【0074】
ロジックセクション660は、3つのアイコン661~663を含む。このセクションを使って、動作チェーンにロジックフローを作成することができる。ロジックセクションの第1アイコン661は、「IF」条件付き動作を表す。ロジックセクションの第2アイコン662は、スイッチを表す。ロジックセクションの第3アイコン663は、リターンを表す。第3アイコン663は、動作チェーンの終了時に使用され、特定の結果または値を返すことができる。第3アイコン663は、1つの動作チェーンから別の動作チェーンを呼び出すときに有用である。
【0075】
ナビゲーションセクション670は、3つのアイコン671~673を含む。開発者は、ナビゲーションセクションの第1アイコン671を使って、過去ページにナビゲートするコードを作成することができる。この場合、過去ページは、クライアントコンピュータ450のブラウザ履歴における過去のページである。開発者は、ナビゲーションセクションの第2アイコン672を使って、実行時にクライアントアプリケーション650のページにナビゲートするコードを作成することができる。例えば、アイコン672を使って、クライアントアプリケーションのUI442の経費報告ページからクライアントアプリケーションのUI442の従業員ページにナビゲートするコンピュータ実行可能なコードを作成することができる。開発者は、ナビゲーションセクションの第3アイコン673を使って、現在実行中のクライアントアプリケーション450に存在しないURLにナビゲートするコードを作成することができる。
【0076】
ウェブアプリケーション、ページおよび動作チェーンなどの項目を表すタブを選択することによって、動作をコンテナのフェーズに関連付けることができる。その後、開発者は、ページ内の設定パネルに移動することができる。
図7は、一実施形態に従って、設定パネルページ700のスクリーンショットを示す。
【0077】
図8は、一実施形態に従って、ライフサイクルイベントをユーザインターフェイスコンポーネントに関連付けるためのウェブページ800を示している。開発者は、ページ800のスクリーンショットに示されているリスト810から、ライフサイクルイベント、例えば「beforeEnter」801を選択して、ライフサイクルイベントを関連付けることがで
きる。
【0078】
図9は、一実施形態に従って、検証コードを生成するためのウェブページ900を示す。開発者は、ページ900を使って、作成中のクライアントアプリケーションのユーザインターフェイス442に実行されるときに、ページを閲覧できるユーザを検証するためのコードを生成することができる。ユーザは、オプション901を選択して、検証コードを入力することができる。
【0079】
図10は、一実施形態に従って、動作チェーンを選択するためのウェブページ1000を示す。開発者は、ウェブページ800(
図8)から選択されたライフサイクルイベントに応答して呼び出される動作チェーンを選択することができる。例えば、ページ1000は、「ページ動作チェーン」タブ1002の下方に、開発者が選択できる「私の動作チェーン」1001を示している。ページ1000は、「アプリケーション動作チェーン」タブ1003を提供している。
【0080】
図11は、一実施形態に従って、開発者がページを使用する動作チェーンに必要な入力パラメータをマッピングするために使用できるウェブページ1100を示す。例えば、開発者は、「私の動作チェーン」1103の下方に示される「入力パラメータ」1101をクリックして、フィールド1101(
図11)および1001(
図10)の上方に「私の動作チェーン」として示されている選択された動作チェーンに入力パラメータをマッピングすることができる。
【0081】
ページ1100を参照して、動作チェーンは、動作チェーンIDフィールド1102で指定され得る識別子(ID)を有する。
【0082】
図12は、一実施形態に従って、未熟練開発者がUIコンポーネントをコンポーネントイベントに関連付けるために使用できるウェブページ1200を示している。例えば、開発者は、左側のパレット1210からUIコンポーネントを中央の区画1220にドラッグすることができる。この例において、ドラッグされたUIコンポーネントは、ボタン1221である。開発者が
図12に示されている動作タブ1230を選択すると、それに応答してイベントのリストが表示される。開発者は、1つのイベントを選択して、中央の区画1220に表示されているUIコンポーネント1221に関連付けることができる。
【0083】
また、開発者は、UIコンポーネントの表現、例えばボタン1221をクリックして、当該UIコンポーネントの属性を表示することができる。
【0084】
図13は、一実施形態に従って、イベントリスト1310を含むウェブページ1300を示す。開発者がページ1200に示されている動作タブ1230を選択すると、
図13に示されたようにイベントリスト1310が表示される。開発者は、
図13に表示されているイベントから1つのイベントを選択して、中央の区画1220に表示されているUIコンポーネント、例えばボタン1221に関連付けることができる。
【0085】
また、開発者は、UIコンポーネントの表現、例えばボタン1221をクリックして、当該UIコンポーネントの属性を表示することができる。
【0086】
開発者が
図12のページ1200の動作タブ1230をクリックすると、それに応答して
図13に示されているイベントリスト1310が表示される。開発者は、表示されたリスト1310から1つのイベントを選択して、UIコンポーネントに関連付けることができる。図示において、このUIコンポーネントは、開発者が以前にウェブページ1200(
図12)から選択したボタン1221である。
【0087】
イベントリスト1310は、例えば、要素上で非主要ポインティング装置のボタンを押して離すときに発生する「クリック解除」イベント、要素にキーボードが集中しないときに発生する「ボケ」イベント、要素上で主要ポインティング装置のボタンを押して離すときに発生する「クリック」イベント、要素に関連するコンテキストメニューが呼び出されたときに発生する「コンテキストメニュー」イベント、要素上でポインティング装置のボタンを2回にクリックしときに発生する「ダブルクリック」(dbclick)イベント、要素
またはテキスト選択を継続的にドラッグしている間に発生する「ドラッグ」イベント、(ポインティングボタンを離すことまたはドラッグ操作をキャンセルしたことによって)要素またはテキスト選択のドラッグが終了したときに発生する「ドラッグ終了」イベント、およびドラッグされた要素またはテキスト選択を有効なドロップターゲット上に移動したときに発生する「ドラッグ確定」イベントなどを含む。
【0088】
図4を参照して、ツールのユーザインターフェイス411は、クライアントアプリケーション450のユーザインターフェイス452のボタンを作成すると図示されているが、
実施形態は、ドロップダウンメニュー、タブ、メニュー、ラジオボタン、リストなどの他の種類のユーザインターフェイスのコントロールによく適している。本明細書に記載されたように、ユーザがユーザインターフェイスのコントロールと対話することによって、動作チェーンを直接にまたは間接にトリガーすることができる。
【0089】
図14は、一実施形態に従って、入力パラメータ1401を指定するためのプロパティインスペクタ1400を示す。プロパティインスペクタ1400を介して、ユーザは、識別子(ID)1404およびページ1405を提供することができる。
【0090】
開発者が、作成されているアプリケーションの複数のページに動作チェーンを使用する可能性がある。例えば、開発者は、スタートページにナビゲートするときに、アプリケーションスコープの動作チェーンを作成することができる。
【0091】
開発者は、「ページナビゲーション」動作を動作チェーン640(
図6)、1403(
図14)に追加する場合、入力パラメータ1401(
図14)を指定して、レコードのIDを指定することができる。開発者は、次のことを行うことによって、「ページナビゲーション」動作を動作チェーンに追加することができる:
1.ページの動作エディタを開き、
2.リスト内の動作チェーンをクリックして、当該動作チェーンを動作エディタに開き、
3.動作パレットから「ページナビゲーション」アイコン672(
図6)を動作チェーン640(
図6)、1403(
図14)にドラッグする。
【0092】
開発者は、動作チェーン640(
図6)、1403(
図14)内の追加(+)アイコン681(
図6)、1402(
図14)上に動作をドラッグすることができる。通常、この動作は、チェーンの最後の動作である。開発者が「ページナビゲーション」動作を動作チェーンに追加すると、プロパティインスペクタ1400は、それをエディタに開く。
【0093】
図15は、一実施形態に従って、ページ選択ボタン1501を有するプロパティインスペクタ1500を示す。
【0094】
4.プロパティインスペクタ1500で「ページ選択」ボタン1501をクリックする。
【0095】
図16は、一実施形態に従って、開発者が作成しているアプリケーション440(
図4)内のページリスト1601を示す「ページ選択」ダイアログボックス1600を示す。ダイアログボックス1600は、開発者がプロパティインスペクタ1500(
図15)の「ページ選択」ボタン1501をクリックすることに応答して表示される。
【0096】
5.リスト1601からページを選択する。「選択」ボタン1602をクリックする。開発者が選択したページに入力変数がある場合、開発者は、ページ変数を動作の入力パラメータにマッピングすることができる。
【0097】
図17は、一実施形態に従って、動作の名前を指定するためのプロパティインスペクタ1700を示す。
【0098】
6.プロパティインスペクタ1700のIDフィールド1701に動作の名前を入力する。キャンバスから動作を選択すると、開発者は、プロパティインスペクタで当該動作のプロパティを編集することができる。
【0099】
7.必要に応じて、ページに入力パラメータを使用する場合、入力パラメータの矢印(+)アイコン1702をクリックすることによって、入力値のページ変数を動作のパラメータにマッピングし、「保存」をクリックする。
【0100】
図18は、一実施形態に従って、変数をパラメータにマッピングするダイアログボックス1800を示す。「変数をパラメータにマッピングする」ダイアログボックス1800において、開発者は、「ソース」パネル1810内の変数を「ターゲット」パネル1820のパラメータにドラッグすることによって、ソースをターゲットにマッピングすることができる。開発者は、パラメータ名をクリックして、マッピングされた変数の式を表示することができる。線1830は、「ソース」パネル1810の「私の連絡先ID」と「ターゲット」パネル1820の「連絡先ID」との間のマッピングを表している。図示は、「私の連絡先ID」と「連絡先ID」との間のマッピングを示しているが、実施形態は、他の変数を他のパラメータにマッピングすることにも適している。
【0101】
適切な変数が存在しない場合、開発者は、変数エディタで変数を作成し、その後動作を編集することができる。
【0102】
8.必要に応じて、動作に使用され得る他のパラメータを指定する。
「ページナビゲーション」動作に関して(
図6のアイコン672を参照)、この動作の動作モジュールは、「vb/action/builtin/navigateToPageAction」である。この動作は、クライアントアプリケーションのUI442(
図4)をナビゲートし、パラメータの受け渡しを実行して、そのページをアクティブにする。一実施形態によれば、この動作のパラメータは、以下の通りである。
【0103】
【0104】
一実施形態によれば、ページパラメータは、入力としてマークされた変数と同様である。動作を呼び出す場合、宛先ページの変数は、内部で渡されてもよく、またはURLを介して渡されてもよい。フレームワークは、パラメータを最終的に正しい場所に配置し、宛先ページに渡すように調整する。
【0105】
以下のコードは、UI411を介して入力され、コード441の一部になる。
【0106】
【0107】
ナビゲーション中にエラーがなかった場合、「成功」という結果が返される。ナビゲーションが正常に終了した場合、「true」という結果が返され、そうではない場合、「false」という結果が返される。エラーが発生した場合、エラーを含むペイロードと共に「失
敗」という結果が返される。
【0108】
例示的な方法
図19は、一実施形態に従って、状態管理永続性を提供するための方法を示すフローチャートである。以下、
図19の方法および従属請求項を説明する。これは、状態管理永続性のためである。特許請求の範囲は、本願の最後に記載される。
【0109】
方法1900は、ステップ1910から開始する。
ステップ1920において、設計時ツールのユーザインターフェイスで、1つ以上の他のコンテナの内部にネストされたコンテナを包含するコンテナ階層を受信し、各コンテナは、ウェブクライアントアプリケーションの異なる部分を含む。
【0110】
例えば、未熟練開発者は、コンテナ階層200(
図2)を設計時ツール410のユーザインターフェイス411に入力することができる。コンテナ階層200内の各コンテナは、1つ以上の他のコンテナの内部にネストされ、ウェブクライアントアプリケーション440の異なる部分を含む。
【0111】
ステップ1930において、設計時ツールを用いて、コンテナ階層内の各コンテナに状態を関連付ける。
【0112】
例えば、未熟練開発者は、変数321および351(
図3)をツールのUI411に入力することができ、ツール410(
図4)は、変数321および351(
図3)を対応するコンテナ310および340(
図3)に関連付けることができる。
【0113】
ステップ1940において、設計時ツールのユーザインターフェイスで、各コンテナの
ライフサイクルを受信する。
【0114】
例えば、未熟練開発者は、
図2に示された各コンテナに、ライフサイクル323および353(
図3)を設計時ツール410のユーザインターフェイス411(
図4)に入力することができる。
【0115】
ステップ1950において、設計時ツールを用いて、階層に従って、各コンテナのライフサイクルに基づいて、各コンテナの状態を作成および破棄することを可能にするコンピュータ実行可能命令をウェブクライアントアプリケーションのために作成する。
【0116】
例えば、本明細書に記載されたように、
図2に示された各コンテナの状態321および351を作成および破棄することを可能にするコンピュータ実行可能命令410は、階層200に従って、各コンテナのライフサイクル323および353に基づいて、ウェブクライアントアプリケーション440のために作成される。
【0117】
より具体的には、一実施形態によれば、階層経路は、クライアントアプリケーション440のユーザインターフェイスにページを表示するようにユーザがブラウザに入力することができるURLに対応する。例えば、
図1、2および4を参照して、階層経路261は、「/SaaSCloud/Financials/receipts」を指定するURL130に対応している。ユーザがURL130をブラウザに入力すると、最初のバックスラッシュ100により、コード441内のコンピュータ実行可能命令は、アプリケーションコンテナ210を開始する。URL130の「SaaSCloud」部分101により、コード441のコンピュータ実行可能
命令は、SaaSクラウドモジュールコンテナ220を開始し、URL130の「Financials」部分102により、コード441のコンピュータ実行可能命令は、財務モジュールコンテナ240を開始し、URL130の「receipts」部分133により、コード441のコンピュータ実行可能命令は、領収書ページコンテナ242を開始し、対応する領収書ページをロードする。同様に、階層経路262は、「/SaasCloud/HumanResources/Employee」を指定するURLに対応し、階層経路263は、「/SaaSCloud/Financials/ExpenseReport」を指定するURLに対応する。
【0118】
各コンテナの状態は、各コンテナに関連付けられたライフサイクルに基づいて、作成および破棄される。開発者は、ツール410の設計時ユーザインターフェイス411を用いて、各コンテナの状態の作成および破棄をトリガーするライフサイクルイベントを指定することができる。例えば、「beforeEnter」ライフサイクルイベントは、経費報告ページ
コンテナ241の状態351の作成をトリガーすることができ、「beforeExit」ライフサイクルイベントは、経費報告ページコンテナ241の状態351の破棄をトリガーすることができる。状態の作成をトリガーするライフサイクルイベントは、コンテナによって異なってもよい。例えば、あるコンテナの状態の作成は、「beforeEnter」によってトリガ
ーされるが、別のコンテナの状態の作成は、「Enter」によってトリガーされる。また、
状態の破棄をトリガーするライフサイクルイベントは、コンテナによって異なってもよい。
【0119】
さらに、各コンテナの状態の作成および破棄は、階層経路に従って行われる。例えば、
図1、2および4を参照して、ユーザがクライアントアプリケーション440と通信するコンピュータのブラウザに「/SaaSCloud/Financials/ExpenseReport」というURL11
0を入力した場合、バックスラッシュ100は、アプリケーションコンテナ210を開始する。アプリケーションコンテナ210の状態321の作成は、開発者が設計時ユーザインターフェイス411を用いて指定したライフサイクルイベントに応答してトリガーされる。URL110の「SaasCloud」部分101は、SaaSクラウドモジュールコンテナ
220を開始する。SaaSクラウドモジュールコンテナ220の状態321の作成は、
開発者が設計時ユーザインターフェイス411を用いてコンテナ220に指定したライフサイクルイベントに応答してトリガーされる。同様に、財務モジュールコンテナ240および経費報告ページコンテナ241に対応する状態321、351の作成は、開発者が対応するコンテナ240、241に指定したライフサイクルイベントに応答してトリガーされる。また、ユーザが「/SaasCloud/HumanResources/Employee」というURL120を入力した場合、経費報告ページコンテナ241の状態351および財務コンテナ240の状態321の破棄は、開発者が設計時ユーザインターフェイス411を用いて対応するコンテナ241、240に指定したライフサイクルイベントに応答してトリガーされる。人事モジュールコンテナ230および従業員ページコンテナ231の状態321、351の作成は、開発者が対応するコンテナ230、231に指定したライフサイクルイベントに応答してトリガーされる。URL120、110に対応する階層経路262、263の両方がアプリケーションコンテナ210およびSaaSクラウドコンテナ220を共有しているため、コンテナ210、220の状態は、維持される。
【0120】
各コンテナは、当該コンテナを包含するコンテナの状態にアクセスすることができる。例えば、コンテナ220は、コンテナ210の状態にアクセスすることができる。コンテナ240は、コンテナ220および210の状態にアクセスすることができる。コンテナ241は、コンテナ240、220および210の状態にアクセスすることができる。しかしながら、各コンテナは、当該コンテナを包含していないコンテナの状態にアクセスすることができない。例えば、コンテナ240および241は、コンテナ230および231の状態にアクセスするこができず、その逆も同様である。
【0121】
ステップ1960において、設計時ツールを用いて、各コンテナに関連付けられたライフサイクルイベントに基づいて、各コンテナ自体の状態および当該コンテナを包含するコンテナの状態に対するアクセスを各コンテナに提供する。
【0122】
例えば、コンテナ220は、コンテナ210の状態にアクセスすることができる。コンテナ240は、コンテナ220および210の状態にアクセスすることができる。コンテナ241は、コンテナ240、220および210の状態にアクセスすることができる。しかしながら、各コンテナは、当該コンテナを包含していないコンテナの状態にアクセスすることができない。例えば、コンテナ240および241は、コンテナ230および231の状態にアクセスするこができず、その逆も同様である。
【0123】
さらに、コンテナは、対応するライフサイクルイベントに基づいて、これらの状態にアクセスすることができる。本明細書に記載されたように、例えば、コンテナ241は、開発者が指定した「beforeExit」または「canExit」などのライフサイクルイベントが発生
するまで、自身の状態および当該コンテナを含む他のコンテナの状態にアクセスすることができる。
【0124】
方法は、ステップ1970で終了する。
一実施形態は、ユーザインターフェイスで、第1のコンテナの第1のライフサイクルにおける第1のイベントの詳細を受信することと、第1のイベントを第1のコンテナの状態の作成に関連付けることと、ユーザインターフェイスで、第2のコンテナの第2のライフサイクルにおける第2のイベントの詳細を受信することと、第2のイベントを第2のコンテナの状態の作成に関連付けることとを提供する。
【0125】
例えば、一実施形態は、ユーザインターフェイス411で、第1のコンテナ241の第1のライフサイクル353における「beforeEnter」などの第1のイベントの詳細を受信
することと、第1のイベントを第1のコンテナの状態351の作成に関連付けることと、ユーザインターフェイスで、第2のコンテナ242の第2のライフサイクル353におけ
る「Enter」などの第2のイベントの詳細を受信することと、第2のイベントを第2のコ
ンテナの状態の作成に関連付けることとを提供する。状態の作成をトリガーするライフサイクルイベントは、コンテナによって異なってもよい。例えば、あるコンテナの状態の作成は、「beforeEnter」によってトリガーされるが、別のコンテナの状態の作成は、「Enter」によってトリガーされる。また、状態の破棄をトリガーするライフサイクルイベントは、コンテナによって異なってもよい。
【0126】
一実施形態において、第1のイベントと第2のイベントとは、異なる種類のイベントである。一例として、第1のイベントは、「beforeEnter」であり、第2のイベント「Enter」とは異なる。両方のイベントは、異なるコンテナ241、242の状態の作成をトリガーすることができる。
【0127】
一実施形態は、ユーザインターフェイスで、第1のコンテナの第1のライフサイクルにおける第1のイベントの詳細を受信することと、第1のコンテナの状態の破棄を第1のイベントに関連付けることと、ユーザインターフェイスで、第2のコンテナの第2のライフサイクルにおける第2のイベントの詳細を受信することと、第2のコンテナの状態の破棄を第2のイベントに関連付けることとを提供する。例えば、一実施形態は、ユーザインターフェイス241で、第1のコンテナ241の第1のライフサイクル353における「beforeExit」などの第1のイベントの詳細を受信することと、第1のコンテナ241の状態351の破棄を第1のイベントに関連付けることと、ユーザインターフェイスで、第2のコンテナ242の第2のライフサイクル353における「canExit」などの第2のイベン
トの詳細を受信することと、第2のコンテナ242の状態351の破棄を第2のイベントに関連付けることとを提供する。「beforeExit」ライフサイクルイベントは、経費報告ページコンテナ241の状態の破棄をトリガーする。「canExit」ライフサイクルイベント
は、領収書ページ242の状態の破棄をトリガーする。
【0128】
一実施形態において、第1のイベントと第2のイベントとは、異なる種類のイベントである。一例として、「beforeExit」と「canExit」とは、2つの異なる種類のイベントで
ある。
【0129】
一実施形態は、ウェブクライアントアプリケーションの実行中に第1のコンテナから第2のコンテナにナビゲートしたことに応答して、第1のコンテナの状態を破棄することと、第3のコンテナの状態を保存することと、第2のコンテナの状態を作成することと、保存された第3のコンテナの状態に対するアクセスを第2のコンテナに提供することとを提供する。第1のコンテナと第2のコンテナの両方は、第3のコンテナに含まれ、ナビゲーションは、第1のコンテナのライフサイクルイベントをトリガーする。
【0130】
例えば、一実施形態は、ウェブクライアントアプリケーション210の実行中に第1のコンテナ240から第2のコンテナ230にナビゲートしたことに応答して、第1のコンテナ240の状態を破棄することと、第3のコンテナ220の状態を保存することと、第2のコンテナ230の状態を作成することと、保存された第3のコンテナ240の状態に対するアクセスを第2のコンテナ230に提供することとを提供する。第1のコンテナ240と第2のコンテナ230の両方は、第3のコンテナ220に含まれ、ナビゲーションは、第1のコンテナ240のライフサイクルイベントをトリガーする。これは、一例のみであり、別の例は、第1のコンテナ220、第2のコンテナ250、および第3のコンテナアプリケーション210である。
【0131】
一実施形態は、コンテナをユニフォームリソースロケータ(URL)パターンの部分に関連付けることを提供し、URLパターンの各部分は、各コンテナに関連付けられる。
図2は、
図1に示されているURLパターンの部分に関連付けられたコンテナを示している
。
【0132】
一実施形態において、URLパターンの各部分は、対応するライフサイクルを維持する。例えば、ライフサイクル323、353(
図3)は、URL110(
図1)の各部分100、101、102、103に関連付けられている。ライフサイクルは、各URLの各部分に関連付けられている。
【0133】
一実施形態は、URLパターンに関連付けられた階層経路に従って、コンテナの一部を実行することと、URLパターンに基づいて、コンテナの変数を作成することと、URLパターンに基づいて、コンテナの変数を破棄することとを提供する。
【0134】
説明のために、階層経路が263であると仮定する。階層経路263に関連付けられたコンテナの一部は、241、240、220および210である。各コンテナの変数は、実行が階層経路263に沿って外部から内部へ進むことにつれて、作成される。例えば、コンテナ210、220、240、241の変数は、URL110に基づいて、順番に作成される。各コンテナの変数は、実行が階層経路263に沿って内部から外部へ進むことにつれて、URL110に基づいて破棄される。例えば、コンテナ210、220、240、241の変数は、順番に破棄される。
【0135】
一実施形態は、特定のコンテナの変数に対するアクセスおよび特定のコンテナに対応する階層経路に従って特定のコンテナを包含するコンテナの変数に対するアクセスを特定のコンテナに提供する。例えば、コンテナ242は、自身の変数にアクセスすることができ、コンテナ240、220および210(
図2)の変数にアクセスすることができる。
【0136】
図20は、一実施形態に従って、ルータ設定を示すフローチャートである。
方法は、ステップ2010から開始する。
【0137】
ステップ220において、ユニフォームリソースロケータ(URL)パターンを提供する。一実施形態によれば、階層経路は、クライアントアプリケーション440のユーザインターフェイスにページを表示するように、ユーザがブラウザに入力することができるURLに対応する。例えば、
図1および2を参照して、階層経路263は、URL110に対応し、階層経路262は、URL120に対応し、階層経路261は、URL130に対応する。より具体的には、ユーザがURL130をブラウザに入力すると、バックスラッシュ100により、コード441のコンピュータ実行可能命令は、アプリケーションコンテナ210を開始し、URL130の「SaaSCloud」部分101により、コード441
のコンピュータ実行可能命令は、SaaSクラウドモジュールコンテナ220を開始し、URL130の「Financials」部分102により、コード441のコンピュータ実行可能命令は、財務モジュールコンテナ240を開始し、URL130の「receipts」部分133により、コード441のコンピュータ実行可能命令は、領収書ページコンテナ242を開始し、対応する領収書ページをロードする。
【0138】
ステップ2030において、URLパターンに基づいて、アプリケーションの関連部分を作成する。例えば、
図1および2を参照して、説明のために、ユーザがクライアントアプリケーション440と通信するコンピュータのブラウザにURL110を入力したと仮定する。ブラウザは、URL110に対応する経費報告ページをロードして表示する。コード441は、URL110に対応する階層経路263に沿ったコンテナのライフサイクルを用いて、これらのコンテナの変数を作成および破棄するタイミングを決定する。
【0139】
例えば、アプリケーションコンテナ210の変数は、ブラウザがバックスラッシュ100を検出したことに応答してアプリケーション440を開始したときに作成される。Sa
aSクラウドモジュールコンテナ220の変数は、ブラウザがURL110の「SaasCloud」部分101を検出したことに応答してSaaSクラウドモジュールを開始したときに
作成される。財務モジュールコンテナ240の変数は、ブラウザがURL110の「Financials」部分102を検出したときに作成される。経費報告ページコンテナ242の変数は、ブラウザがURL110の「ExpenseReports」部分103を検出したときに作成される。
【0140】
ステップ2040において、URLパターンに基づいて、アプリケーション440の関連部分を破棄する。例えば、ユーザがクライアントアプリケーション440(
図4)と通信するコンピュータのブラウザにURL120(
図1)を入力したと仮定する。
図2を参照して、領収書ページコンテナ242および財務モジュール240の変数は、破棄される。人事コンテナ230および従業員ページコンテナ231の変数は、作成される。
【0141】
一実施形態によれば、各コンテナは、対応するライフサイクルを有する。例えば、コンテナに関連付けられたライフサイクルのフェーズに応答して、変数を作成および破棄することができる。例えば、ページの変数は、ページのライフサイクルのフェーズ「beforeEnter」に応答して作成され、同一ページのライフサイクルのフェーズ「beforeExit」に応
答して破棄される。
【0142】
ルータ設定の方法は、ステップ2050で終了する。
一実施形態は、コンテナをURLパターンの部分に関連付けることを提供し、URLの各部分は、各々のコンテナを有する。例えば、本明細書に記載されたように、
図2に示された各コンテナは、
図1に示されたURLパターンの部分に関連付けられている。
【0143】
一実施形態は、特定のコンテナを包含するコンテナおよび特定のコンテナを包含するコンテナの順序によって定義された階層経路を対応する各コンテナに提供する。例えば、
図2に示されている各コンテナは、階層経路261~267に関連付けられている。特定の例において、コンテナ241の階層経路263は、コンテナ241を包含するコンテナ240、220、210および特定のコンテナ241を包含するコンテナの順序によって定義される。この図において、コンテナの順序は、コンテナ241は、コンテナ210の内部に位置するコンテナ220の内部に位置するコンテナ240の内部に位置する。
【0144】
一実施形態は、特定のコンテナの変数に対するアクセスおよび当該特定のコンテナを含む階層経路に従ったコンテナの変数に対するアクセスを当該特定のコンテナに提供する。例えば、コンテナ241は、自身の変数にアクセスすることができ、コンテナ240、220、210の変数にアクセスすることもできる。コンテナ240は、自身の変数にアクセスすることができ、コンテナ220および210にアクセスすることもできる。しかしながら、コンテナ240は、例えば、コンテナ241、242、230および231などの変数にアクセスすることができない。
【0145】
一実施形態において、ライフサイクルは、フェーズを含み、フェーズは、「beforeEnter」ページ、「enter」ページ、「interactable」ページ、ページを終了できることを意味する「canExit」、およびページを終了する前に発生する「beforeExit」フェーズを含む
。
【0146】
一実施形態において、フェーズは、相互に排他的である。換言すれば、コンテナのライフサイクルにおいて、一度に1つのフェーズしか動作できない。
【0147】
一実施形態において、少なくとも1つのフェーズは、動作チェーンを開始するためのイベントである。
【0148】
一実施形態は、設計時ツールで、アプリケーションの一部を定義するユーザ入力を受信することと、この入力に基づいて、コンピュータ実行可能命令をアプリケーションに生成することとを提供する。例えば、設計時ツール410のUI411を用いて、ユーザ入力を受信することができ、受信した入力を用いて、コンピュータ実行可能命令441を生成することができる。
【0149】
一実施形態は、アプリケーションの実行時に生成されたコンピュータ実行可能命令を実行することを提供する。例えば、生成されたコンピュータ実行可能命令441は、アプリケーション440の実行中に実行される。
【0150】
また、分かるように、変数の破棄および作成は、階層経路に関連している。例えば、コンテナの変数は、実行が階層経路の最外部から最内部に進むときに作成され、実行が階層経路の最内部から最外部に進むときに破棄される。
【0151】
図1および2を参照して、コンテナに対応するコンピュータ実行可能なコードは、当該コンテナの変数および当該コンテナの階層経路に沿ったコンテナの変数にアクセスすることができる。例えば、領収書ページコンテナ242は、自身の変数および階層経路261に沿ったコンテナ240、220および210の変数にアクセスすることができる。
【0152】
一実施形態によれば、コンテナのライフサイクルは、当該コンテナに対応するURLの一部に関連付けられる。例えば、領収書ページコンテナ242のライフサイクルは、URL110の「ExpenseReports」部分103に関連付けられている。財務モジュールコンテナ240のライフサイクルは、URL110の「Financials」部分102に関連付けられている。
【0153】
ルータ設定のユーザインターフェイスは、ツールのユーザインターフェイス411の一部である。ルータ設定のユーザインターフェイスは、設計時に、クライアントアプリケーションの実行時に実行されるコード441の一部であるコンピュータ実行可能命令を生成する。
【0154】
図6を参照して、ナビゲーションセクション670の下方の第1アイコン671および第2アイコン672は、本明細書に記載された方法に従って、ルータ設定に使用することができる。
【0155】
動作チェーンは、開発者がコンポーネントの挙動を定義するために作成することができる一連の動作である。動作チェーンは、開発者がページコンポーネントに追加した「click」イベント、「OnValueChanged」イベントおよび「focus」イベントなどによってトリガーされる。
図6に示すように、「動作エディタ」で作成された動作チェーンは、作成されている特定のページのみに使用することができる。
【0156】
例示的なシステム
図21は、一実施形態に従って、システム2100を示す。
【0157】
ページライフサイクルマネージャ2101は、ユーザが現在閲覧しているアプリケーションUIに応じて、状態の一部を初期化および破棄する。状態を破棄する場合、状態を永続性ストア(構成にあった場合)に保存することができ、状態を復元する場合、永続性ストア(persistence store)から状態をロードすることができる。
【0158】
永続性ストア2102は、ユーザによるアプリケーションの呼び出しの間にアプリケー
ションの状態を(ディスク上に)保存する場所である。
【0159】
状態2103は、アプリケーション(変数)によって利用されるアクティブ状態を提供する。
【0160】
コンポーネント2104は、ユーザによって利用されるボタン、テキスト、画像などを含むUIを提供する。
【0161】
動作チェーン2105は、アプリケーション(プロセス)を駆動するコアロジックのフローを提供する。
【0162】
RESTサービス2106は、外部のREST APIを提供する。
コンピュータ/装置2107は、UIを制御するブラウザまたは装置を提供する。
【0163】
以下、システム2100に含まれるエンティティ2101~2107に関連する操作2111~2121の流れを説明する。
【0164】
操作2111:永続性ストアは、ユーザがアプリケーションをアクティブに使用しているときの状態を初期化して、保存する。
【0165】
操作2112:状態の変更をコンポーネントに反映させる。例えば、一部の状態に関連付けられたテキストフィールド。
【0166】
操作2113:コンポーネントは、状態の変更をトリガーする。例えば、テキスト入力は、状態を直接に更新する。
【0167】
操作2114:ユーザは、自分の装置507からUIと対話する。
操作2115:動作チェーンは、例えば、マップをズームするようにUI上でメソッドを呼び出すことができる。
【0168】
操作2116:UIは、ロジック(例えば、ボタンのクリック)を実行するように、動作チェーンを始動させることができる。
【0169】
操作2117:動作チェーンを用いて、RESTサービスを呼び出し、これらのサービスを介してデータをシステムに書き込むまたはシステムからデータを読み取る。
【0170】
操作2118:ユーザがアプリケーションおよび表示された異なるUIをにナビゲートするときに、ページライフサイクルマネージャは、状態を初期化して破棄する。
【0171】
操作2119:ページライフサイクルマネージャは、ナビゲーションに応答して動作チェーンを実行することができる。例えば、装置2107と対話しているユーザは、ページを開始させることができ、これに応じて動作チェーンを実行することができる。
【0172】
操作2120:動作チェーンは、ナビゲーション、例えば、UIの様々な部分のアクティブ化を引き起こすことができる。
【0173】
一実施形態によれば、システム2100によって作成されたユーザインターフェイスは、クライアントコンピュータ/装置2107のブラウザに実行することができる。作成されたユーザインターフェイスを実行するクライアントコンピュータ/装置は、当該ユーザインターフェイスを作成するときに使用されたクライアントコンピュータ/装置2107
と同様であってもよく、異なってもよい。作成されたユーザインターフェイスは、複数のクライアントコンピュータ/装置上で異なるタイミングで実行されてもよく、同時に実行されてもよい。
【0174】
本明細書に記載されたように、設計時ツールを使って、ユーザインターフェイスを作成する。一実施形態によれば、JSONファイルは、ユーザインターフェイスの一部として作成される。作成されたJSONファイルは、よく知られた通信方法を介してクライアントコンピュータ/装置のブラウザに転送され、ランタイム実行によって解釈される。
【0175】
遅延状態の変更に関して、一実施形態によれば、実行の流れは、以下の通りである。
(通常、2116によって)動作チェーンを呼び出す。動作チェーンは、2121を介して状態をコピーする。動作チェーンが完了すると、2121によって状態を合併する。
【0176】
状態管理永続性に関して、一実施形態によれば、実行の流れは、以下の通りである。
UIの一部が(2116および2120を介して)開始されると、ページライフサイクルマネージャ(2101)は、状態(2118)を初期化する。ページライフサイクルマネージャは、永続性ストア(2111)を参照して状態を初期化することができる。
【0177】
ルータ設定に関して、一実施形態によれば、実行の流れは、以下の通りである。
UIの一部が(2116および2120を介して)開始されると、ページライフサイクルマネージャは、示されたUIの一部に従って、2118を介して状態を初期化する。
【0178】
一実施形態によれば、ルータは、「ページナビゲーション」動作と呼ばれる動作によって、
図21に示された動作チェーン2105に実装される。本明細書に記載されたように、ルータは、URLを用いて、コンテナの(「状態」とも呼ばれる)変数をURLの部分にマッピングする。
【0179】
例示的なコンピュータ環境
図22は、本明細書の図面に示された実施形態を実施するために使用可能なシステム2200および関連するコンピューティング環境を示す概略ブロック図である。例示的なシステム2200は、
図21を参照して説明した様々なハードウェアおよび/またはソフトウェアモジュールおよび関連する方法をサポートまたは実行することができる。なお、特定の実施形態は、1つ以上の(例えば、ユーザ装置に常駐する)スタンドアロンアプリケーションおよび/またはクライアント側コードとサーバ側コードの組み合わせを用いて実現された1つ以上のウェブベースアプリケーションを用いて、実装することができる。
【0180】
汎用システム2200は、ユーザ装置2260~2290、具体的には、デスクトップコンピュータ2260、ノートブックコンピュータ2270、スマートフォン2280、モバイルフォン2285、およびタブレット2290を含む。汎用システム2200は、任意の種類のユーザ装置、例えば、シンクライアントコンピュータ、インターネット対応のモバイルフォン、インターネット接続モバイル装置、タブレット、電子書籍、またはウェブページ、他の種類の電子ドキュメントおよびUIを表示および閲覧できるおよび/またはアプリケーションを実行できるPDAとインターフェイスで接続することができる。図示では、システム2200は、5つのユーザ装置をサポートしているが、任意の数のユーザ装置をサポートすることができる。
【0181】
ウェブサーバ2210は、ウェブブラウザおよびスタンドアロンアプリケーションから、ウェブページ、電子文書、企業データまたは他のコンテンツ、およびユーザコンピュータからの他のデータを要求するリクエストを処理するために使用される。また、ウェブサーバ2210は、企業の運用に関連するデータのプッシュデータまたはシンジケートコン
テンツ、例えばRSSフィードを提供することができる。
【0182】
アプリケーションサーバ2220は、1つ以上のアプリケーションを作動させる。アプリケーションは、Java(登録商標)、C、C++、C#などのプログラミング言語、またはJavaScript(登録商標)またはECMAScript(European Computer Manufacturers Association Script)、Perl、PHP(Hypertext Preprocessor)、Python、Ruby、またはTCL(Tool Command Language)などのスクリプ
ト言語で記述された1つ以上のスクリプトまたはプログラムとして実装することができる。アプリケーションは、Rails、Enterprise Java(登録商標)Beans、.NETなどのライブ
ラリまたはアプリケーションフレームワークを使用して構築することができる。ウェブコンテンツは、HTML(HyperText Markup Language)、CSS(Cascading Style Sheets)、およびテンプレート言語およびパーサを含む他のウェブ技術を使用して作成するこ
とができる。
【0183】
アプリケーションサーバ2220上で動作するデータアプリケーションは、入力データおよびユーザコンピュータ要求を処理するように構成され、データ記憶装置またはデータベース2230からのデータを格納または取得することができる。データベース2230は、データアプリケーションによって作成および使用されるデータを格納する。一実施形態において、データベース2230は、SQLフォーマットコマンドまたは他のデータベースクエリ言語に応答して、データを格納、更新および取得するように構成された関係型データベースを含む。他の実施形態は、非構造化データ記憶アーキテクチャおよびNoSQL(Not Only SQL)データベースを使用することができる。
【0184】
一実施形態において、アプリケーションサーバ2220は、プログラムまたはスクリプトを実行することができる1つ以上の汎用コンピュータを含む。一実施形態において、ウェブサーバ2210は、1つ以上の汎用コンピュータ上で動作するアプリケーションとして実装される。ウェブサーバ2210およびアプリケーションサーバ2220は、合併されてもよく、同一のコンピュータ上で実行されてもよい。
【0185】
電子通信ネットワーク2240および2250は、ユーザコンピュータ2260~2290、ウェブサーバ2210、アプリケーションサーバ2220、およびデータベース2230の間の通信を可能にする。一実施形態において、ネットワーク2240および2250は、任意の電気通信装置または光通信装置、例えば有線ネットワーク2240および無線ネットワーク2250を含む。ネットワーク2240および2250は、イーサネット(登録商標)ネットワークなどの1つ以上のローカルエリアネットワーク、インターネットなどのワイドエリアネットワーク、セルラーキャリアデータネットワーク、仮想プライベートネットワークなどの仮想ネットワークを含むことができる。
【0186】
システム2200は、本発明の実施形態に従って、アプリケーションを実行するための一例である。別の実施形態において、ウェブサーバ2210、アプリケーションサーバ2220、および必要に応じてデータベース2230を単一のサーバコンピュータアプリケーションおよびシステムに組み合わせることができる。さらなる実施形態において、仮想化および仮想マシンアプリケーションを用いて、ウェブサーバ2210、アプリケーションサーバ2220およびデータベース2230のうち1つ以上を実装することができる。
【0187】
さらに別の実施形態において、ウェブおよびアプリケーションの機能の全部または一部は、各々のユーザコンピュータ上で動作するアプリケーションに統合することができる。例えば、ユーザコンピュータ上のJavaScriptアプリケーションを用いて、データを取得または分析し、アプリケーションの一部を表示することができる。
【0188】
特定の例示的な実施形態において、ユーザコンピューティング装置260~2290は、例えば、ユーザインターフェイスを表示するために使用されるブラウザを実行する。例えば、
図22に示されたデスクトップコンピュータ2260、ノートブックコンピュータ2270、スマートフォン2280、モバイルフォン2285およびタブレット2290などのクライアントコンピューティング装置および/または他のコンピューティング装置から、ユーザインターフェイスを見ることができる。
【0189】
特定の例示的な実施形態において、
図2のデスクトップコンピュータ2260、ノートブックコンピュータ2270、スマートフォン2280、モバイルフォン2285、タブレット2290のブラウザは、
図22に示された有線ネットワーク2240および/または無線ネットワーク2250によって表されたインターネットに接続して、
図21のモジュールによって表された1つ以上のネットワーク接続サーバ、データベース、および/または関連するクラウドベース機能を利用する。例えば、1つ以上のエンティティ2101、2104、2105および2106は、アプリケーションサーバ2220に常駐することができる。クライアントコンピュータ/装置2107は、1つ以上のユーザコンピューティング装置2260~2290として実装することができる。
図22に示された1つ以上のデータベース2230を用いて、
図21の永続性ストア2102および状態2103などのデータをホストすることができる。
図21に使用されるネットワークは、ネットワーク2240として実装されてもよい。一実施形態において、ネットワーク2240を用いて、クライアントコンピュータ/装置2107とコンポーネント2104との間に通信することができる。
【0190】
図4および22を参照して、ネットワーク470は、無線ネットワーク2250または有線ネットワーク2240であってもよく、無線ネットワーク2250および有線ネットワーク2240の両方を含んでもよい。ハードウェアメモリ420および/またはデータベース430は、データ記憶装置/データベース2230として実装されてもよい。1つ以上のアプリケーション440、450、460およびツール410は、1つ以上のウェブサーバ2210またはアプリケーションサーバ2220上に常駐、それらによって実行されてもよい。UI411および442のページは、ユーザコンピューティング装置2260~2290上で動作しているブラウザによってロードされ、表示されてもよい。クライアントアプリケーション440は、ツール410内で実行されてもよく、ツール410によって実行されてもよい。ツール410およびアプリケーション440は、同一のコンピュータ上で実行されてもよく、または互いに通信する別々のコンピュータ上で実行されてもよい。
【0191】
図23は、本明細書に記載された実施形態を実施するために使用可能なコンピューティングシステム2300を示す概略ブロック図である。
図23のコンピューティングシステム2300は、本明細書に記載された実施形態の1つ以上のステップを実行するとして説明されているが、他の実施形態において、コンピューティング装置2300の任意の適切なコンポーネントもしくはコンポーネントの組み合わせまたはシステム2300に関連する任意の適切なプロセッサもしくプロセッサの組み合わせは、ステップの実行を促進することができる。
【0192】
図23は、本明細書に記載された実施形態に使用され得る例示的なコンピューティングシステム2300のブロック図を示す。例えば、コンピューティングシステム2300を用いて、
図22のユーザ装置2260~2290、およびサーバ装置2210、2220を実装することができ、本明細書に記載された方法を実施することができる。いくつかの実装形態において、コンピューティングシステム2300は、プロセッサ2302、オペレーティングシステム2304、メモリ2306、および入出力(I/O)インターフェイス2308を含むことができる。様々な実装形態において、プロセッサ2302を用い
て、本明細書に記載された様々な機能および特徴を実現することができ、本明細書に記載された方法を実施することができる。プロセッサ2302は、本明細書に記載された方法を実施すると説明されているが、システム2300の任意の適切なコンポーネントもしくはコンポーネントの組み合わせまたはシステム2300に関連する任意の適切なプロセッサもしくプロセッサの組み合わせまたは任意の適切なシステムは、本明細書に記載された方法を実施することができる。本明細書に記載された方法は、ユーザ装置、サーバ、または両方の組み合わせ上で実施されてもよい。
【0193】
また、コンピューティング装置2300は、メモリ2306または任意の他の適切な記憶装置もしくはコンピュータ可読媒体に記憶され得るソフトウェアアプリケーション2310を含む。ソフトウェアアプリケーション2310は、プロセッサ2302に、本明細書に記載された機能および他の機能を実行させる命令を提供する。コンピューティングシステム2300のコンポーネントは、1つ以上のプロセッサまたはハードウェア装置の任意の組み合わせ、およびハードウェア、ソフトウェア、ファームウェアなどの任意の組み合わせによって実装されてもよい。
【0194】
図示を簡単にするために、
図23は、プロセッサ2302、オペレーティングシステム2304、メモリ2306、I/Oインターフェイス2308、およびソフトウェアアプリケーション2310の各々を1つのブロックとして示している。これらのブロック2302、2304、2306、2308および2310は、複数のプロセッサ、複数のオペレーティングシステム、複数のメモリ、複数のI/Oインターフェイス、および複数のソフトウェアアプリケーションを表すことができる。様々な実装形態において、コンピューティングシステム2300は、図示された全てのコンポーネントを含まなくてもよく、および/または図示されたコンポーネントの代わりにまたは追加的に他のコンポーネントを含んでもよい。
【0195】
コンピュータ可読媒体および装置
特に明記しない限り、本明細書に記載された1つ以上の実施形態は、例えば、コンピュータシステムまたは類似する装置の非一時的なプロセッサ可読記憶装置に常駐するプロセッサ可読命令を用いて実施することができる。非一時的なプロセッサ可読記憶装置は、命令を格納することができる任意の物理メモリであってもよい。非一時的なプロセッサ可読記憶装置の例は、ディスク、コンパクトディスク(CD)、デジタル多用途装置(DVD)、読み取り専用メモリ(ROM)、フラッシュなどを含むがこれらに限定されない。上述したように、本発明の様々な実施形態のプロセスおよび動作の一部は、一実施形態において、コンピュータシステムの非一時的なプロセッサ可読記憶装置に常駐する一連のプロセッサ可読命令(例えば、ソフトウェアプログラム)として実現され、コンピュータシステムの1つ以上のプロセッサによって実行される。実行されると、命令は、コンピュータシステムに本発明の様々な実施形態の機能を実施させる。例えば、プロセッサは、命令を実行することができる。プロセッサは、コンピュータシステムに関連する中央処理装置などのハードウェアプロセッサである。非一時的なプロセッサ可読記憶装置は、ハードウェアメモリであり、1つ以上のプロセッサは、ハードウェアプロセッサである。一実施形態によれば、非一時的なプロセッサ可読記憶装置は、有形の物理装置である。
【0196】
結論
C、C++、Java、アセンブリ言語などを含む任意の適切なプログラミング言語を用いて、特定の実施形態のルーチンを実装することができる。異なるプログラミング技術、例えば手続き型またはオブジェクト指向型プログラミング技術を使用することができる。ルーチンは、単一の処理装置または複数のプロセッサ上で実行することができる。ステップ、動作または演算は、特定の順序で記載されているが、この順序は、異なる特定の実施形態では変更されてもよい。いくつかの特定の実施形態において、本明細書に記載され
た順次に実行される複数のステップは、同時に実行されてもよい。
【0197】
特定の実施形態は、命令実行システム、機械、システムまたは装置によってまたはそれに関連して使用されるコンピュータ可読記憶媒体に実装されてもよい。特定の実施形態は、ソフトウェアまたはハードウェアまたは両方の組み合わせによる制御ロジックの形で実装されてもよい。この制御ロジックは、1つ以上のプロセッサによって実行されると、特定の実施形態に記載されたものを実行するように動作可能である。例えば、ハードウェア記憶装置などの非一時的な媒体を用いて、実行可能命令を含むことができる制御ロジックを格納することができる。
【0198】
特定の実施形態は、プログラムされた汎用デジタルコンピュータ、特定用途向け集積回路、プログラマブルロジック装置、フィールドプログラマブルゲートアレイ、光学的システム、化学的システム、生物学的システム、量子的またはナノ工学的システムなどを用いて、実装されてもよい。他のコンポーネントおよび機構を使用することができる。一般に、特定の実施形態の機能は、当技術分野で知られている任意の手段によって達成することができる。分散型またはネットワーク化システム、コンポーネントおよび/または回路を使用することができる。クラウドコンピューティングまたはクラウドサービスを使用することができる。データは、有線、無線、または他の手段で送信または転送することができる。
【0199】
また、図面に示された1つ以上の要素は、より離れたまたは集中した方法で配置されてもよく、動作可能に限り、特定の需要に応じて外してもよい。このように、コンピュータが上記の方法のいずれかを実行することを可能にするプログラムまたはコードを機械可読媒体に格納する実装も、本発明の精神および範囲内に含まれる。
【0200】
「プロセッサ」は、データ、信号または他の情報を処理する任意の適切なハードウェアおよび/またはソフトウェアシステム、メカニズムまたはコンポーネントを含む。プロセッサには、汎用中央処理装置、複数の処理装置、機能を実現するための専用回路を備えたシステムまたは他のシステムを含むことができる。処理は、地理的な場所または時間に限定されない。例えば、プロセッサは、例えば、「リアルタイム」、「オフライン」または「バッチモード」で機能を実行することができる。処理の一部は、異なる(または同様の)処理システムによって、異なる時間に異なる場所で実行することができる。処理システムの例は、サーバ、クライアント、エンドユーザ装置、ルータ、スイッチ、ネットワーク化装置などを含む。コンピュータは、メモリと通信する任意のプロセッサである。メモリは、任意の適切なプロセッサ可読記憶媒体、例えば、ランダムアクセスメモリ(RAM)、読み取り専用メモリ(ROM)、磁気または光ディスク、またはプロセッサによって実行される命令を格納する適切な他の非一時的な媒体であり得る。
【0201】
本明細書の説明および特許請求の範囲に使用された場合、「a」、「an」および「the」は、文脈から明確に指示しない限り、複数を含む。また、本明細書の説明および特許請求の範囲に使用された場合、「in」は、文脈から明確に指示しない限り、「in」および「on」を意味する。
【0202】
したがって、本明細書において特定の実施形態を説明したが、任意の修正、様々な変更、および置換は、本開示に含まれる。場合によって、特定の実施形態において、本発明の精神および範囲から逸脱することなく、対応する他の特徴を使用せず、いくつかの特徴を使用することができる。したがって、特定の状況または材料を本質的な範囲および精神に適合するように、多くの変更を加えることができる。