(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2023052773
(43)【公開日】2023-04-12
(54)【発明の名称】延期型状態変更
(51)【国際特許分類】
G06F 8/30 20180101AFI20230404BHJP
G06F 11/36 20060101ALI20230404BHJP
【FI】
G06F8/30
G06F11/36 124
【審査請求】有
【請求項の数】11
【出願形態】OL
【外国語出願】
(21)【出願番号】P 2023012152
(22)【出願日】2023-01-30
(62)【分割の表示】P 2020517989の分割
【原出願日】2018-09-24
(31)【優先権主張番号】16/003,016
(32)【優先日】2018-06-07
(33)【優先権主張国・地域又は機関】US
(31)【優先権主張番号】62/564,943
(32)【優先日】2017-09-28
(33)【優先権主張国・地域又は機関】US
(31)【優先権主張番号】62/629,520
(32)【優先日】2018-02-12
(33)【優先権主張国・地域又は機関】US
(71)【出願人】
【識別番号】502303739
【氏名又は名称】オラクル・インターナショナル・コーポレイション
(74)【代理人】
【識別番号】110001195
【氏名又は名称】弁理士法人深見特許事務所
(72)【発明者】
【氏名】ストラウブ,クリスチャン
(57)【要約】 (修正有)
【課題】遅延状態の変更を提供する方法、設計時ツール及び記憶装置を提供する。
【解決手段】方法は、クライアントアプリケーションの一部を実装する動作チェーンを定義する情報を受信する。受信した情報は、各動作チェーンに関連付けられたグローバル状態を変更するための明示的なコンピュータ実行可能命令を含む。方法はまた、コンピュータ実行可能命令は、各動作チェーンに対して自動的に生成され、各動作チェーンのグローバル状態のプライベートビューを作成する。方法はさらに、各暗黙的なコンピュータ実行可能命令を、各明示的なコンピュータ実行可能命令に自動的に関連付け、暗黙的なコンピュータ実行可能命令は、クライアントアプリケーションの実行時に、対応する明示的なコンピュータ実行可能命令の代わりに実行される。
【選択図】
図8
【特許請求の範囲】
【請求項1】
遅延状態の変更を提供するための方法を実行させるための命令を含む非一時的なプロセッサ可読記憶装置であって、前記方法は、
クライアントアプリケーションの一部を実装する動作チェーンを定義する情報を受信することを含み、前記受信した情報は、各動作チェーンに関連付けられたグローバル状態を変更するための明示的なコンピュータ実行可能命令を含み、
各動作チェーンに対して、各動作チェーンのグローバル状態のプライベートビューを作成するためのコンピュータ実行可能命令を自動的に生成することと、
各々の明示的なコンピュータ実行可能命令に各々の暗黙的なコンピュータ実行可能命令を自動的に関連付けることとを含み、前記暗黙的なコンピュータ実行可能命令は、前記クライアントアプリケーションの実行時に、対応する明示的なコンピュータ実行可能命令の代わりに実行される、非一時的なプロセッサ可読記憶装置。
【請求項2】
前記方法は、実行時に、対応する明示的なコンピュータ実行可能命令の代わりに、暗黙的なコンピュータ実行可能命令を実行するようにクライアントアプリケーションを構成することをさらに含む、請求項1に記載の非一時的なプロセッサ可読記憶装置。
【請求項3】
前記方法は、
ユーザ要求を特定する信号に応答して、少なくとも1つの明示的なコンピュータ実行可能命令を表示することと、
前記少なくとも1つの明示的なコンピュータ実行可能命令に対応する暗黙的なコンピュータ実行可能命令を表示しないこととをさらに含む、請求項1に記載の非一時的なプロセッサ可読記憶装置。
【請求項4】
前記方法は、前記クライアントアプリケーションの実行時に、
前記クライアントアプリケーションと通信するクライアント装置のブラウザに、前記クライアントアプリケーションのウェブページを表示することと、
前記ウェブページに示されたユーザインターフェイスコントロールのユーザ選択の検出に応答してイベントを生成することと、
前記イベントに応答して、前記動作チェーンのうち特定の動作チェーンを開始することとをさらに含む、請求項1に記載の非一時的なプロセッサ可読記憶装置。
【請求項5】
前記方法は、
前記特定の動作チェーンの開始に応答して、前記特定の動作のグローバル変数のスナップショットを作成することを含み、前記スナップショットは、前記特定の動作チェーンのローカル変数を含み、
前記グローバル変数の値を前記ローカル変数に割り当てることを含み、各ローカル変数には、各グローバル変数の値が割り当てられる、請求項4に記載の非一時的なプロセッサ可読記憶装置。
【請求項6】
前記方法は、
各グローバル変数と各ローカル変数との間の関連付けを有するラッパーを作成することと、
前記関連付けに基づいて、前記グローバル変数の前記値を前記ローカル変数に割り当てることとをさらに含む、請求項5に記載の非一時的なプロセッサ可読記憶装置。
【請求項7】
前記方法は、前記動作チェーンの実行時に、対応するグローバル変数の代わりに、ローカル変数を変更することをさらに含む、請求項5に記載の非一時的なプロセッサ可読記憶装置。
【請求項8】
前記方法は、各動作チェーンおよび対応するローカル変数を各々の区画に隔離することをさらに含み、
各動作チェーンは、個別の区画に隔離される、請求項5に記載の非一時的なプロセッサ可読記憶装置。
【請求項9】
前記方法は、前記受信、前記自動生成および前記自動関連付けを実行した設計時ツールを用いて、前記クライアントアプリケーションを実行することをさらに含む、請求項1に記載の非一時的なプロセッサ可読記憶装置。
【請求項10】
前記方法は、スマートラッパーを用いて、明示的なコンピュータ実行可能命令のグローバル変数が書き込まれているときにローカル変数を作成し、前記グローバル変数が読み取られているときにローカル変数を作成しないことをさらに含む、請求項1に記載の非一時的なプロセッサ可読記憶装置。
【請求項11】
遅延状態の変更を提供するための方法であって、
クライアントアプリケーションの一部を実装する動作チェーンを定義する情報を受信することを含み、前記受信した情報は、各動作チェーンに関連付けられたグローバル状態を変更するための明示的なコンピュータ実行可能命令を含み、
各動作チェーンに対して、各動作チェーンのグローバル状態のプライベートビューを作成するためのコンピュータ実行可能命令を自動的に生成することと、
各々の明示的なコンピュータ実行可能命令に各々の暗黙的なコンピュータ実行可能命令を自動的に関連付けることとを含み、前記暗黙的なコンピュータ実行可能命令は、前記クライアントアプリケーションの実行時に、対応する明示的なコンピュータ実行可能命令の代わりに実行される、方法。
【請求項12】
前記方法は、実行時に、対応する明示的なコンピュータ実行可能命令の代わりに、暗黙的なコンピュータ実行可能命令を実行するようにクライアントアプリケーションを構成することをさらに含む、請求項11記載の方法。
【請求項13】
前記方法は、
ユーザ要求を特定する信号に応答して、少なくとも1つの明示的なコンピュータ実行可能命令を表示することと、
前記少なくとも1つの明示的なコンピュータ実行可能命令に対応する暗黙的なコンピュータ実行可能命令を表示しないこととをさらに含む、請求項11に記載の方法。
【請求項14】
前記方法は、前記クライアントアプリケーションの実行時に、
前記クライアントアプリケーションと通信するクライアント装置のブラウザに、前記クライアントアプリケーションのウェブページを表示することと、
前記ウェブページに示されたユーザインターフェイスコントロールのユーザ選択の検出に応答してイベントを生成することと、
前記イベントに応答して、前記動作チェーンのうち特定の動作チェーンを開始することとをさらに含む、請求項11に記載の方法。
【請求項15】
前記方法は、
前記特定の動作チェーンの開始に応答して、前記特定の動作のグローバル変数のスナップショットを作成することを含み、前記スナップショットは、前記特定の動作チェーンのローカル変数を含み、
前記グローバル変数の値を前記ローカル変数に割り当てることを含み、各ローカル変数には、各グローバル変数の値が割り当てられる、請求項14に記載の方法。
【請求項16】
前記方法は、
各グローバル変数と各ローカル変数との間の関連付けを有するラッパーを作成することと、
前記関連付けに基づいて、前記グローバル変数の前記値を前記ローカル変数に割り当てることとをさらに含む、請求項15に記載の方法。
【請求項17】
前記方法は、前記動作チェーンの実行時に、対応するグローバル変数の代わりに、ローカル変数を変更することをさらに含む、請求項15に記載の方法。
【請求項18】
前記方法は、各動作チェーンおよび対応するローカル変数を各々の区画に隔離することをさらに含み、
各動作チェーンは、個別の区画に隔離される、請求項15に記載の方法。
【請求項19】
前記方法は、スマートラッパーを用いて、明示的なコンピュータ実行可能命令のグローバル変数が書き込まれているときにローカル変数を作成し、前記グローバル変数が読み取られているときにローカル変数を作成しないことをさらに含む、請求項11に記載の方法。
【請求項20】
遅延状態の変更を提供するための設計時ツールであって、
1つ以上のプロセッサと、
命令を含む非一時的なプロセッサ可読記憶装置とを備え、前記命令は、
クライアントアプリケーションの一部を実装する動作チェーンを定義する情報を受信するための命令を含み、前記受信した情報は、各動作チェーンに関連付けられたグローバル状態を変更するための明示的なコンピュータ実行可能命令を含み、
各動作チェーンに対して、各動作チェーンのグローバル状態のプライベートビューを作成するためのコンピュータ実行可能命令を自動的に生成するための命令と、
各々の明示的なコンピュータ実行可能命令に各々の暗黙的なコンピュータ実行可能命令を自動的に関連付けるための命令とを含み、前記暗黙的なコンピュータ実行可能命令は、前記クライアントアプリケーションの実行時に、対応する明示的なコンピュータ実行可能命令の代わりに実行される、設計時ツール。
【発明の詳細な説明】
【技術分野】
【0001】
関連出願の相互参照
本願は、2018年6月7日に提出され、「遅延状態の変更」と題された米国特許出願第16/003016号(ORACP0207/ORACP180299-US-NP)、2017年9月28日に提出され、「遅延状態の変更」と題された米国仮特許出願第62/564943号(ORACP0207P-1/ORACP180299-US-PSP)、および2018年2月12日に提出され、「遅延状態の変更」と題された米国特許仮出願第62/629520号(ORACP0207P-2/ORACP180299-US-PSP-2)の優先権を主張し、これらの出願の内容の全体は、あらゆる目的のために参照によって本願に組み込まれる。
【背景技術】
【0002】
背景
共有変数または他のデータを使用するコンピューティング環境にプロセスを実行しているときに、他のプロセスも共有データを使用する場合、適切な動作を保証することが困難である。他の1つ以上のプロセスと並行して当該プロセスが動作する場合または当該プロセスの連続実行を保証できない場合に、競合が発生する可能性がある。共有データの競合が発生する可能性がある1つの領域は、ウェブアプリケーションの開発である。ウェブアプリケーションの一例として、HTML(HyperText Markup Language)、Javasc
ript(登録商標)などの言語を用いて、「ステートレス」実行方法を実装できるブラウザベースのアプリケーションが挙げられる。
【0003】
様々なプロトコルおよび標準、例えばSOA(Service Oriented Architecture)およ
びREST(Representational State Transfer)などをブラウザベースのアプリケーシ
ョンに使用することによって、複雑なシステムをウェブアプリケーションに設計することができる。ウェブアプリケーションにより多くの特徴、機能および複雑性を導入する場合、データの競合問題が発生する可能性が高くなる。また、このような断続的なエラーを再現して修正することは、困難である。このことは、複数の異なる開発者がウェブアプリケーション開発段階で機能を個別に作成し、個別のユーザが実行段階でこの機能を整合または統合した体験として実行する場合に特によくある。機能の例として、例えば、商品またはサービスのオンライン購入が挙げられる。この場合、ユーザは、特定の機能の完了を待たずに、商品の閲覧、比較、購入、記録および他の機能をほぼ同時に実行することができる。
【発明の概要】
【課題を解決するための手段】
【0004】
概要
一実施形態は、遅延状態の変更を提供する。クライアントアプリケーションの一部を実装する動作チェーンを定義する情報を受信する。受信した情報は、各動作チェーンに関連付けられたグローバル状態を変更するための明示的なコンピュータ実行可能命令を含む。コンピュータ実行可能命令は、各動作チェーンに対して自動的に生成され、各動作チェーンのグローバル状態のプライベートビューを作成する。各暗黙的なコンピュータ実行可能命令は、各明示的なコンピュータ実行可能命令に自動的に関連付けられる。暗黙的なコンピュータ実行可能命令は、クライアントアプリケーションの実行時に、対応する明示的なコンピュータ実行可能命令の代わりに実行される。
【0005】
一実施形態は、延状態の変更を提供するための方法を実行させるための命令を含む非一
時的なプロセッサ可読記憶装置を提供する。この方法は、クライアントアプリケーションの一部を実装する動作チェーンを定義する情報を受信することを含み、受信した情報は、各動作チェーンに関連付けられたグローバル状態を変更するための明示的なコンピュータ実行可能命令を含み、各動作チェーンに対して、各動作チェーンのグローバル状態のプライベートビューを作成するためのコンピュータ実行可能命令を自動的に生成することと、各々の明示的なコンピュータ実行可能命令に各々の暗黙的なコンピュータ実行可能命令を自動的に関連付けることとを含み、暗黙的なコンピュータ実行可能命令は、クライアントアプリケーションの実行時に、対応する明示的なコンピュータ実行可能命令の代わりに実行される。
【0006】
本明細書に開示された特定の実施形態の本質および利点のさらなる理解は、以下の説明および添付の図面を参照することによって実現され得る。
【図面の簡単な説明】
【0007】
【
図1】一実施形態に従って、並列に実行されている動作チェーンを示す図である。
【
図2】一実施形態に従って、システムを示すブロック図である。
【
図3】一実施形態に従って、スナップショットの実装を示す図である。
【
図4】一実施形態に従って、ユーザインターフェイスの一部であるボタンの動作チェーンを作成するページのスクリーンショットを示す図である。
【
図5】一実施形態に従って、開発者が動作チェーンに必要な入力パラメータをマッピングするために使用できるウェブページを示す図である。
【
図6】一実施形態に従って、未熟練開発者がUIコンポーネントをコンポーネントイベントに関連付けるために使用できるウェブページを示す図である。
【
図7】一実施形態に従って、イベントリストを含むウェブページを示す図である。
【
図8】一実施形態に従って、遅延状態の変更を提供するための方法を示すフローチャートである。
【
図9】一実施形態に従って、システムを示す図である。
【
図10】本明細書の図面に示された実施形態を実施するために使用可能なシステムおよび関連するコンピューティング環境を示す概略ブロック図である。
【
図11】本明細書に記載された実施形態を実施するために使用可能なコンピューティング装置を示す概略ブロック図である。
【発明を実施するための形態】
【0008】
実施形態の詳細な説明
高度並列化システムにおいて、複数のプロセスが共有状態を同時に更新する可能性があり、その結果潜在的な競合をもたらす。プロセスとは、所定の機能を行うために実行されるコードの一部である。ユーザがクライアントアプリケーションのユーザインターフェイスと対話するなど特定の機能を説明するが、本明細書に記載された機能は、必要に応じて他の機能と共に使用するように構成できることは明らかである。従来では、複数の並列プロセスが共有状態を同時に更新する問題は、まったく対処されなかった、またはロック、ミューテックスまたはクリティカルセクションなどの高度なプログラミングメカニズムを用いて対処された。このような高度なプログラミングメカニズムを使用するコードを作成することには、開発者が高度なプログラミングスキルを有する必要がある。様々な実施形態は、高度なプログラミングメカニズムを使用せず、未熟練開発者がコードを作成できるように、これらの問題に対処する。遅延状態の変更により、未熟練開発者は、潜在的な競合を回避すると共に、クライアントアプリケーション用のコンピュータ実行可能命令を作成することができる。これによって、各プロセスは、共有状態の矛盾のないビューを有し、対応するプロセスが完了したときに、共有状態を予測可能な方法で更新することができる。
【0009】
イベント駆動型アプリケーションにおいて、プロセスは、イベントに応答して特定の動作を実行する。イベントが同時に発生する可能性があり、イベントの処理が非同期に行われる可能性があるため、イベントに応答して変更される可能性のある状態は、競合する可能性があり、通常は競合する。
【0010】
イベントハンドラを設計および実装する場合、他の外部ハンドラが使用されている状態を同時に変更することを判断することは、非常に困難である。例えば、例示として以下の擬似コードを挙げる。
【0011】
【0012】
例えば、最初に状態Aの値が3であり、状態Bの値が2であり、「set result=sum(A, B)」(以下、「設定」と略す)という命令を実行するときに、5という結果を与えると仮定する。設定した後で出力する前に、別のハンドラまたはプロセスが、例えば、状態Aを3から2に変化または変更した場合、「print A, "+", B, "=", result」命令は、不正解「2+2=5」を出力してしまう。
【0013】
上記は、簡単な例で、2つ以上のプロセスまたはハンドラが共有変数Aを書き込む場合の問題を示している。第1の問題は、2つのプロセス(例えば、第1のプロセスがonAdditionButtonClickであり、第2のプロセスがAの書き込みである)が非同期に実行される
ため、Aの現在値を判断することである。第2の問題は、プロセスが誤りを検出した場合、すなわち、「3+2=5」ではなく「2+2=5」を出力した場合、処理を既知の開始点にロールバックできるように、擬似コードの開始時にAおよびBの初期値を判断することである。
【0014】
現在の開発環境において、非常に多くのプロセスが非同期に実行され、多くの共有変数にアクセスしている可能性がある。換言すれば、1つの変数が2つ以上のプロセスによって非同期に共有されている場合がある。したがって、デバッグという目的のために、変数が変更される前に、変数のスナップショットを作成する必要がある。一実施形態において、変更とは、読み取りではなく、書き込みを意味する。一実施形態において、変数のスナップショットは、元の共有変数の値を変更することなく、変数を変更しようとするプロセスのために、ローカルコピーを作成することによって達成できる。このように、元の共有変数の値を非同期に変更しようとする各プロセスに、ローカルコピーが作成される。デバッグを必要とする場合、プロセスのローカル変数を元の共有変数の値にロールバックすることができる。ある時点で、全てのローカルコピーは、最終値に決定され、この最終値は、元の共有変数の値を置換する。一実施形態において、ローカルコピーは、スマートラッパーによって作成される。スマートラッパーは、変数が読み取られているときにローカルコピーを作成せず、書き込まれているときのみローカルコピーを作成する。
【0015】
一実施形態によれば、イベントハンドラを実行する前に、状態を取得する。その後、取得した状態を他のハンドラから隔離することができる。一実施形態によれば、隔離した状態は、そのハンドラのみによって自由に変更され、得られた変更は、当該ハンドラの将来の動作に利用される。ハンドラが完了すると、状態は、より大きなシステムに合併される。合併中に競合が発生する可能性があるが、これらの競合は、論理処理が終了した後に発生するため、より容易に追跡および管理することができる。
【0016】
図1Aは、一実施形態に従って、並列に実行されている動作チェーン110、120、130を示す。関数または動作チェーンが「並列」に実行すると記載されるが、よく知られているように、並列実行という概念は、一般的に、マイクロ実行レベルで一度に1つのみの動作チェーンを実行するシングルプロセッサを用いて実行したタイムスライス処理を記述するときに使用される。しかしながら、より高いマクロ実行レベル、例えばアプリケーション命令レベルにおいて、動作チェーンが同時にまたは並列に動作するとみなされる。一般的に、本明細書に記載された実施形態は、任意の実行スキーム、例えば、シングルまたはマルチプロセッサアーキテクチャ、マルチスレッド処理、マルチパイプライン処理、時分割処理、分散処理またはネットワーク(例えば、クラウド)処理に適用することができる。
【0017】
動作チェーン110、120、130は、一連の動作111、112、121~125、および131~133を指す。ボックスは、動作111、112、121~125および131~133を表し、矢印は、各々の動作チェーンにおいて1つの動作から別の動作への制御の流れを表す。例えば、実行は、矢印の方向に沿って行われる。動作は、矢印で連結された第1のボックスおよび第2のボックスによって示されている動作チェーンにおいて、連続して実行することができる。第2の動作チェーン120の3つのボックス122~124によって示されているように、動作は、並列に実行することもできる。より具体的には、第2のチェーン120の第1の動作121は、3つの並列動作122~124に分岐して実行され、その後下位の動作125に結合されてもよい。代替的に、1つの動作チェーンを呼び出すときにチェーン内の全ての動作を実行しないように、条件付きで1つ以上の動作を実行することもできる。1つ以上の動作は、前の動作の子動作である。例えば、第2の動作チェーン120の第1の動作121は、親動作であり、そこから分岐した3つの動作122~124は、子動作である。他の例において、動作111は、動作112の親動作であり、動作131は、動作133の親動作である。
【0018】
動作は、様々な種類の処理を実行することができる。例えば、1つの動作は、変数から値を読み取ることができる。別の動作は、値を変数に書き込むことができる。別の例において、特定の閾値を下回るいくつかの株価を取得し、いずれかの株価が特定の閾値を下回る場合に警告を提供したい場合がある。この場合、動作は、いくつかの他の動作に分岐され、これらの動作の各々は、並列に株価を取得する。株価が取得されると、これらの動作は、1つの動作に結合され、閾値を下回る株価を決定し、その情報を警告として提供する。さらに別の例において、ユーザがリストとして表示された各々の歌の下方の「購入」ボタンを選択することによっていくつかの歌を購入できるように、ウェブページを設計することができる。「購入」ボタンを選択すると、動作を開始するイベントがトリガーされる。各動作は、購入を並列に処理することができる。
【0019】
様々な実施形態によれば、各々の動作チェーンは、動作チェーンを隔離する線によって示されたように、区画141、142、143(「隔離」とも呼ばれる)によって互いに隔離される。換言すれば、各動作チェーンは、動作時の状態のプライベートビューを有する。例えば、Yは、グローバル状態を表す。例示として、状態は、変数およびデータ流を含む。各動作チェーンは、実行を開始するときに、グローバル状態の独自のプライベートビューを有する。例えば、Y1は、Yの第1の動作チェーンのプライベートビューであり、Y2は、Yの第2の動作チェーンのプライベートビューであり、Y3は、Yの第3の動作チェーンのプライベートビューである。
【0020】
一実施形態において、ビューY1、Y2、Y3は、3つの動作チェーン110、120、130の隔離141、142、143の各々のローカル変数を用いて実現することができる。したがって、各々の動作チェーン110、120、130は、グローバル状態Yを変更せず、各ローカル変数Y1、Y2、Y3を変更することができる。事実上、作成され
たグローバル状態Yのスナップショットは、Y1、Y2、Y3の元の状態のスナップショットとなり、1つの動作チェーンにバグがある場合、デバッグのためにその動作チェーンの状態を開始状態に戻すことができる。ビューY1、Y2、Y3は、状態Yのバージョンを表し、各々の動作チェーンによって変更できるため、変更可能な状態の例である。動作チェーンは、プロセスの例である。Y3は、Y1およびY2とは別の時間に作成されている。したがって、第3の動作チェーン103の動作131において、Yのみが読み取られるため、グローバル変数Yの値が使用される。動作132において、グローバル変数Yを書き込む。グローバル変数Yを書き込む前に、ローカルコピーY3が作成されたため、YではなくY3が書き込まれる。したがって、一実施形態において、ローカル変数は、動的に作成される。一実施形態において、動作チェーンの終了160において、競合解決策170が実行され、Y1、Y2およびY3の最終値から、グローバル状態Yの新しい値を決定する。一実施形態において、最後に書き込まれた変数Y1、Y2またはY3は、グローバル状態Yの新しい値である。
【0021】
一実施形態によれば、未熟練開発者は、設計時ビジュアル開発ツールのユーザインターフェイスを用いて、動作チェーンのビジュアル表現を作成することができる。例えば、ユーザインターフェイスは、ボックスおよび矢印のアイコンを表示することができる。開発者は、ボックスおよび矢印のアイコンをドラッグおよびドロップしてボックスを連結することによって、動作チェーンのビジュアル表現を作成することができる。このツールは、動作チェーンのビジュアル表現に基づいて、クライアントアプリケーションのコンピュータ実行可能命令を生成する。通常、生成されたコンピュータ実行可能命令は、クライアントアプリケーションのユーザインターフェイスを実装する。このような動作チェーンは、矢印およびボックスを用いてアトミックボックス(atomic box)を相互に連結することによって簡単な動作を実行するように作成されたため、「宣言型システム」とも呼ばれている。宣言型システムは、並列処理に関する複雑性を含むコンピュータ命令の多くの複雑性を開発者から隠すことができる。これらの開発者は、「宣言型開発者」または「宣言型プログラマ」と呼ばれる。宣言型開発者は、ロック、ミューテックス、パーティションまたは(「保護セクション」とも呼ばれる)クリティカルセクションなどの高度なプログラミング技術を使用できない。
【0022】
様々な実施形態によれば、宣言型プログラマ(本明細書において、「未熟練開発者」および「未熟練人間開発者」とも呼ばれる)は、ツールを用いて動作チェーンを作成することによって、明示的なコンピュータ実行可能命令を指定する。しかしながら、様々な実施形態によれば、ツールは、少なくとも1つの暗黙的なコンピュータ実行可能命令を自動的に生成する。この少なくとも1つの暗黙的なコンピュータ実行可能命令は、実行時に実行され、設計時に指定された少なくとも1つの明示的なコンピュータ実行可能命令を置換する。例えば、共有状態Yに値を割り当てる明示的なコンピュータ実行可能命令を実行する代わりに、プライベートビューY1に同様の値を割り当てる暗黙的なコンピュータ実行可能命令が実行される。
【0023】
暗黙的なコンピュータ実行可能命令は、宣言型プログラマから隠されている。例えば、暗黙的な命令の実行が明示的な命令の実行を置換するが、宣言型プログラマは、作成した動作チェーンを表示する場合、明示的なコンピュータ実行可能命令しか見えない。
【0024】
ツールは、クライアントアプリケーションの命令を表示するように、異なるモードでクライアントアプリケーションの命令を構成することができる。例えば、第1のモードは、未熟練プログラマによって使用され、第2のモードは、高度なプログラマによって使用される。第1のモードは、未熟練プログラマに明示的な命令を表示するが、暗黙的な命令を隠す。第2のモードは、暗黙的な命令を含むクライアントアプリケーションの実際の命令を表示する。いずれかのモードを使用しても、クライアントアプリケーションのソースコ
ード命令を表示することができ、デバッグの一部として実行されている命令を表示することができる。
【0025】
説明のために、動作チェーンが150から開始するときに、Yの値が3であると仮定する場合、Y1、Y2およびY3の値は、3になる。第1の動作チェーンが、Yの値を4に変更すると仮定する。各々の動作チェーンは、変数Yを変更する明示的なコンピュータ実行可能命令を含む。この命令は、ツールによって、変数Y1、Y2およびY3を変更する各々の動作チェーンの暗黙的なコンピュータ実行可能命令に変更される。例えば、各動作チェーンの明示的な命令がYを変更する場合、実際の暗黙的な命令は、Yではなく、Y1、Y2およびY3をそれぞれ変更する。別の例において、動作チェーンの開始時にYの値が3であると仮定する。第1のチェーンの明示的なコンピュータ実行可能命令がYの値を4から変更するときに、暗黙的なコンピュータ命令は、YではなくY1を4に変更し、Yの値を3に維持する。さらに、Y2およびY3の値は、第1の動作チェーンから隔離されているため、3に維持される。
【0026】
動作チェーンの実行が終了すると、Y1、Y2およびY3の値が決定(「合併」または「合理化」とも呼ばれる)される。一実施形態によれば、最後の動作チェーンの値が保存される。例えば、第3の動作チェーンが最後に終了した場合、Y3の値をYに割り当てる。通常、Y1、Y2およびY3の値は、これ以上状態Yに使用されないため、重要ではない。
【0027】
「変更」(mutation)および「変化」(change)という用語は、互換的に使用することができる。例えば、状態の変更は、状態の変化を意味する。より具体的には、変数Yの値を3から4に変化することは、変数Yを変更または変化することの一例である。
【0028】
隔離141~143およびプライベートビューY1、Y2、Y3がない場合、1つの動作チェーン、例えば動作チェーン110の明示的なコンピュータ実行可能命令がYの値を4に変更するときに、他の動作チェーン、例えば動作チェーン120、130も、Yにアクセスして4という値を取得する。したがって、プライベートビューを実装する隔離141~143がない場合、1つの動作チェーンの操作は、予期しない方法で他の動作チェーンに影響を与える。問題をさらに複雑にすると、異なる開発者が異なる動作チェーンを作成する場合がある。したがって、各々の開発者は、グローバルビューを介して、他の動作チェーンによって実行されている操作を知ることができない。
【0029】
簡略化のために、
図1に示す動作チェーンは、同時に開始および終了するように見えるが、殆どの場合、これらの動作チェーンの開始時刻が異なり、実行時間も異なる。
【0030】
一実施形態は、実行対象のデータ空間または実行環境の一部または全ての「スナップショット」を取得する(すなわち、状態を保存する)。ウェブアプリケーションに関連する実施形態において、実行対象は、「動作チェーン」と呼ばれ、順次、分岐、条件付きまたは他の命令実行シーケンスなどの論理的な流れを伴う一連のプログラム動作である。動作チェーンは、ユーザインターフェイス(UI)コントロール、ブラウザタブ、ブラウザページ、または他の必要なアイテム、オブジェクトまたはイベントに関連付けることができる。
【0031】
一実施形態において、「遅延状態の変更」は、グローバル変数Yを変更する開発者指定コンピュータ実行可能命令、例えばY=Y+1を、ローカル変数Y1を変更するツール生成コンピュータ実行可能命令、例えばY1=Y1+1に自動的に変更する手法である。したがって、グローバル変数の変更は、グローバル変数を変更する動作チェーン110、120、130が170で実行を終了するまで延期される。これによって、動作チェーンが
グローバル変数を更新するときの競合が防止される。開発者指定コンピュータ実行可能命令は、本明細書において「明示的なコンピュータ実行可能命令」とも呼ばれ、ツール生成コンピュータ実行可能命令は、本明細書において「暗黙的なコンピュータ実行可能命令」とも呼ばれる。一実施形態によれば、開発者指定命令およびツール生成命令は、非一時的なプロセッサ可読記憶装置に記憶された非一時的なコンピュータ可読命令である。
【0032】
一実施形態において、動作チェーンを実行する前に、共有データ(すなわち、グローバル変数)が他の動作チェーンによって変更または使用されるか否かを判断する。共有データが他の動作チェーンによって変更または使用された場合、変更された共有データを保存する。共有データを変更または使用する他の動作チェーンのスナップショットを取得する。競合を引き起こす可能性のある動作チェーンの実行が終了した後、共有データの更新に実際に使用される競合値を判断する。この判断は、最初の値の変更または最後の値の変更という単純な基準で行われる。代わりに、他の基準を使用してもよい。好ましい実施形態において、競合の解決は、環境コードまたは命令によって対処される。環境コードは、実行の制御を提供する。これによって、開発環境によって作成された暗黙的な命令は、未熟練人間開発者によって指定された明示的な命令に置換する。環境コードが未熟練人間開発者により指定したコードの実行を制御するため、未熟練人間開発者は、クライアントアプリケーションの対応部分を書くときに、データの競合を心配する必要がない。本明細書に記載されたように、環境コードを用いて、170で、ローカル変数Y1、Y2、Y3の値を対応するグローバル変数Yに合併することができる。
【0033】
図2は、一実施形態に従って、システム100を示すブロック図である。
システム200は、設計時ビジュアル開発ツール210、クライアントアプリケーション250、サーバアプリケーション230、240、およびネットワーク220を含む。ツール210、クライアントアプリケーション250、およびサーバアプリケーション230、240は、ネットワーク230を介して通信する。一実施形態によれば、クライアントアプリケーション250は、ツール210によって実行される。
【0034】
ツール210は、未熟練開発者が動作チェーン251を作成するために使用できるユーザインターフェイス(UI)211を提供する。
図1に示された動作チェーン110、120、130は、
図2に示された動作チェーン251の例である。クライアントアプリケーション251は、ユーザインターフェイス211で作成された動作チェーン251によって実装されたユーザインターフェイス252を含む。ユーザインターフェイス211、252のウェブページは、ツール210およびクライアントアプリケーション250を実行するまたはそれらと通信する各々のコンピュータシステムに実行されているブラウザを介して表示することができる。動作チェーン251のコンピュータ命令は、1つ以上のサーバアプリケーション230、240から情報を要求および取得することができる。
【0035】
動作チェーン251は、イベントに応答して実行される。一実施形態によれば、動作チェーンの実行を開始させるイベントは、ユーザがユーザインターフェイス252からユーザインターフェイスコントロールを選択した直接的または間接的な結果である。ユーザインターフェイスコントロールの例は、ボタン、タブ、データ入力フィールド、ラジオボタン、選択可能なリスト内のアイテムを含む。イベントの例は、ユーザがクライアントアプリケーションのユーザインターフェイスのユーザインターフェイスコントロールを選択したことの検出を含む。ユーザインターフェイスコントロールの選択に応答して発生するイベントの他の例は、データを要求したこと、データを受信したこと、操作の開始または完了、または操作の開始または完了を示すフェーズの検出を含む。イベントは、当技術分野でよく知られている。
【0036】
さらに、動作チェーンを引き起こすイベントが、ユーザによるユーザインターフェイス
コントロールの選択に応答してトリガーされるため、クライアントアプリケーション250および動作チェーンの命令は、動作チェーンを開始するタイミングを制御しない。
【0037】
動作チェーンがイベント駆動型であるため、動作の直接的および間接的な結果の境界を明確に定義することができる。より具体的には、直接または間接的にイベントを処理するクライアントコンピュータ実行可能命令(「イベントハンドラ」とも呼ばれる)中の命令の境界は、決定可能である。開発者は、イベントハンドラをサブスクライブするコード(「サブスクライバー」とも呼ばれる)を作成することができる。動作の結果の境界が決定可能であり既知であるため、イベントチェーンによって直接的または間接的に使用されるグローバル変数を決定することもできる。
【0038】
本明細書に記載されたように、境界およびプライベートビューは、イベントチェーン間の隔離を提供する。
図1において、隔離141~143は、イベントチェーン110、120、130の間の線として示されている。
【0039】
動作チェーンの実行を開始するイベントは、ユーザによるユーザインターフェイスコントロールの選択によって直接的または間接的にトリガーされるため、動作チェーンの実行を開始するタイミングを予測することは不可能である。
【0040】
様々な実施形態は、クラウド機能を提供する。例えば、開発者は、ツール210を使用して、クラウド上でクライアントアプリケーション250を作成することができる。より具体的には、クライアントアプリケーション250、サーバアプリケーション230、240、およびツール210は、ネットワーク220を介して通信するウェブアプリケーションである。
【0041】
図3は、一実施形態に従って、スナップショットの実装を示す図である。
動作チェーンによって使用されるグローバル変数のスナップショットは、動作チェーンの実行を開始するときに取得される。
図3は、
図1に示された動作チェーン110、120、130の各々の3つのラッパー、すなわち、301、302および303a/303bの例を示す。グローバル変数がX、YおよびZであると仮定する。この例において、動作チェーン110、120、130の各々の場合、ラッパーまたはプロキシーを用いて、グローバル変数X、YおよびZとインターフェイスする。例えば、ラッパーまたはプロキシを用いて、グローバル状態Yから、3つの動作チェーンに対応するプライベートビューY1、Y2、Y3を隔離する。動作チェーン130の場合、ラッパー303aは、グローバル変数Xのローカルコピー、すなわち、ローカルコピーX3を作成するが、この時点においてYおよびZが読み取り専用であるため、グローバル変数YおよびZのコピーを作成しない。したがって、ラッパー303aは、YおよびZの値をパスする。その後、Yを書き込むときに、ラッパー303b(この実施形態において、ラッパー303aおよび303bは、異なる時点で実行された同様のラッパーコードである)ローカルコピーY3を作成する。動作チェーン130は、この時点(動作チェーン132)でXのローカルコピーX3を使用するが、Zが読み取り専用であるため、Zをパスする。ラッパーまたはプロキシは、共有されている変数YとプライベートビューY1、Y2、Y3との間の関連関係を提供する。この関連関係に基づき、クライアントアプリケーション250に対応する動作チェーン251のランタイム実行時に、Y1、Y2およびY3を変更するための暗黙的なコンピュータ実行可能命令を用いて、Yを変更するための明示的なコンピュータ実行可能命令を置換することができる。
【0042】
同様に、X1、X2およびX3は、各々の動作チェーンのプライベートビューをグローバル変数Xに提供する。Z1およびZ2は、各々の動作チェーンのプライベートビューをグローバル変数Zに提供する。
【0043】
説明のために、
図3は、3つのスナップショットに対して、3組の変数X、Y、Zを示している。X、Y、Zがクライアントアプリケーションのグローバル変数であるため、各組のXは、同様の変数であり、各組のYは、同様の変数であり、各組のZは、同様の変数である。
【0044】
スナップショットおよび関連するラッパーは、ネストすることができる。例えば、第1の動作チェーンが別の動作チェーンを開始する場合、2つのスナップショットが取得される。第1のスナップショットは、親動作チェーンのスナップショットであり、第2のスナップショットは、子動作チェーンのスナップショットである。第2のスナップショットは、第1のスナップショットにネストされる。一例として、動作チェーンが2つの他の動作チェーンを開始する場合、3つのスナップショットが取得される。
【0045】
動作チェーンは、クライアントアプリケーションの開発者が指定した明示的なコンピュータ実行可能命令を介して、グローバル変数X、YおよびZを読み書きすることができ、これらの操作を適切なプライベートビューにリダイレクトすることによって、適切な暗黙的なコンピュータ命令の実行を用いて、これらの明示的なコンピュータ命令の実行を置換することができる。例えば、ラッパーを作成し、ローカル保存されたプライベートビューY1を取得し、Yの値にY1を割り当て、Y1=Y1+1にすることによって、暗黙的なコンピュータ命令を用いて、明示的なコンピュータ実行可能命令Y=Y+1を置換することができる。
【0046】
一実施形態によれば、変更される変数のみのスナップショットは、取得されるが、読み取り専用の変数のスナップショットは、取得されない。
【0047】
一実施形態によれば、グローバル変数のプライベートビューは、グローバル変数が変更される直前に作成される。
【0048】
一実施形態によれば、グローバル変数をラッパーにコピーすることによって、プライベートビューを作成する。変数の変更を追跡することによって、変更された変数の状態を判断することができる。プライベートビューは、対応するグローバル変数が読み取られるまでまたは別のプロセスによって変更されるまで、詳細に作成することができる。
【0049】
図2を参照して、ツール210は、ビジュアルアプリケーション構築機能を提供することができ、開発者またはチームは、クラウドを介してビジュアルアプリケーション構築機能を用いて、クライアントアプリケーション250の一部を実装する動作チェーン251を構築することができる。ビジュアルビルダークラウドサービス(VBCS)を変更して、本明細書の実施形態に記載された様々なビジュアルアプリケーション構築機能を提供する。
【0050】
ツール210のユーザインターフェイス211は、設計時に、クライアントアプリケーション250を構築するためのコンピュータ実行可能命令を生成する。本明細書に記載されたように、ツールのユーザインターフェイスにより、未熟練人間開発者は、クライアントアプリケーションのために、遅延状態の変更機能を備えた動作チェーンを作成することができる。開発者は、遅延状態の変更機能を備えた動作チェーン251を作成するように、ツール210に指示するオプションを選択することができる。代替的には、ツール210は、ツール210を使用して動作チェーン251を作成したことに応答して、遅延状態の変更機能を提供するコンピュータ実行可能命令を自動的に作成することができる。
【0051】
一例において、開発者は、ツールのUI211を用いて、クライアントアプリケーショ
ンのユーザインターフェイス252のページをカスタマイズまたは作成することができる。一例として、ボタンを作成した。
図4は、一実施形態に従って、UI252の一部であるボタンの動作チェーンを作成するためのページ400を示している。「私の動作チェーンの開始」タブ480を選択することによって、ページ400を表示することができる。記述セクションを追加することができる。UI211のページ400は、左側において、動作チェーン440に追加できる動作のパレット410を含む。ページ400の中央セクション420は、動作チェーン440の1つ以上の動作シーケンスを表す流れ図を示している。菱形441は、動作チェーン440を実行するときに選択できる複数の代替経路を決定するための「IF」命令文または分岐条件を表す。
【0052】
図4に示すように、パレット410は、「全般」、「ロジック」および「ナビゲーション」として標記された3つのセクション450、460、470を有する。各セクション450、460、470は、動作チェーン440を作成するために、中央セクション420にドラッグしてドロップすることができる動作を表すアイコンを含む。
【0053】
全般セクション450は、3行のアイコンを有する。全般セクションの第1行の第1アイコン451は、変数の割り当てを表す。例えば、このアイコン451を使って、変数を異なる値に設定することできる。第1行の第2アイコン452は、動作チェーンの呼び出しを表す。開発者は、このアイコンを使って、当該動作から別の動作チェーンを呼び出すことができる。第1行の第3アイコン453は、コンポーネントメソッドの呼び出しを表す。開発者は、このアイコンを使って、UI252のために作成されるページ上で呼び出されるUIコンポーネント、例えばボタンを決定することができる。
【0054】
全般セクションの第2行は、3つのアイコンを含む。第2行の第1アイコン454は、「モジュール関数の呼び出し」アイコンである。開発者は、このアイコンを使って、UI252のために作成されるページのJavaScriptで独自の関数を定義することができる。開発者は、「モジュール関数の呼び出し」アイコンを使って、これらの関数を呼び出すコードを作成することができる。第2行の第2アイコン455は、「RESTエンドポイントの呼び出し」アイコンである。開発者は、このアイコンを使って、データを更新するまたはデータを要求するためのRESTエンドポイントを呼び出すコードを作成することができる。
【0055】
全般セクション450の第3行は、2つのアイコンを含む。第3行の第1アイコン457は、「始動通知」アイコンである。このアイコンを使って、動作チェーンが実装に使用されているメッセージをページに表示することができる。第3行の第2アイコン458は、「変数のリセット」アイコンである。このアイコンを使って、状態の値をデフォルト値にリセットすることができる。
【0056】
ロジックセクション460は、3つのアイコン461~463を含む。このセクションを使って、動作チェーンにロジックフローを作成することができる。ロジックセクションの第1アイコン461は、「IF」条件付き動作を表す。ロジックセクションの第2アイコン462は、スイッチを表す。ロジックセクションの第3アイコン463は、リターンを表す。第3アイコン463は、動作チェーンの終了時に使用され、特定の結果または値を返すことができる。第3アイコン463は、1つの動作チェーンから別の動作チェーンを呼び出すときに有用である。
【0057】
ナビゲーションセクション470は、3つのアイコン471~473を含む。開発者は、ナビゲーションセクションの第1アイコン471を使って、過去ページにナビゲートするコードを作成することができる。この場合、過去ページは、クライアントコンピュータ250のブラウザ履歴における過去のページである。開発者は、ナビゲーションセクショ
ンの第2アイコン472を使って、実行時にクライアントアプリケーション250のページにナビゲートするコードを作成することができる。例えば、アイコン472を使って、クライアントアプリケーションのUI252の経費報告ページからクライアントアプリケーションのUI252の従業員ページにナビゲートするコンピュータ実行可能なコードを作成することができる。開発者は、ナビゲーションセクションの第3アイコン473を使って、現在実行中のクライアントアプリケーション250に存在しないURLにナビゲートするコードを作成することができる。
【0058】
図5は、一実施形態に従って、開発者が動作チェーンに必要な入力パラメータをマッピングするために使用できるウェブページ500を示す。例えば、開発者は、
図5において、「私の動作チェーン」502の下方に示される「入力パラメータ」501をクリックして、入力パラメータをマッピングすることができる。
【0059】
ページ500を参照して、動作チェーンは、動作チェーンIDフィールド503で指定され得る識別子(ID)を有する。
【0060】
図6は、一実施形態に従って、未熟練開発者がUIコンポーネントをコンポーネントイベントに関連付けるために使用できるウェブページ600を示している。例えば、開発者は、左側のパレット610からUIコンポーネントを中央の区画620にドラッグすることができる。この例において、ドラッグされたUIコンポーネントは、ボタン621である。
【0061】
図7は、一実施形態に従って、イベントリスト710を含むウェブページ700を示す。開発者がページ600に示されている動作タブ630を選択すると、
図7に示されたようにイベントリスト710が表示される。開発者は、
図7に表示されているイベントから1つのイベントを選択して、中央の区画620に表示されているUIコンポーネント、例えばボタン621に関連付けることができる。
【0062】
また、開発者は、UIコンポーネントの表現、例えばボタン621をクリックして、当該UIコンポーネントの属性を表示することができる。
【0063】
開発者が
図6のページ600の動作タブ730をクリックすると、それに応答して
図7に示されているイベントリスト710が表示される。開発者は、表示されたリスト710から1つのイベントを選択して、UIコンポーネントに関連付けることができる。図示において、このUIコンポーネントは、開発者が以前にウェブページ600(
図6)から選択したボタン621である。
【0064】
イベントリスト710は、例えば、要素上で非主要ポインティング装置のボタンを押して離すときに発生する「クリック解除」イベント、要素にキーボードが集中しないときに発生する「ボケ」イベント、要素上で主要ポインティング装置のボタンを押して離すときに発生する「クリック」イベント、要素に関連するコンテキストメニューが呼び出されたときに発生する「コンテキストメニュー」イベント、要素上でポインティング装置のボタンを2回にクリックしときに発生する「ダブルクリック」(dbclick)イベント、要素ま
たはテキスト選択を継続的にドラッグしている間に発生する「ドラッグ」イベント、(ポインティングボタンを離すことまたはドラッグ操作をキャンセルしたことによって)要素またはテキスト選択のドラッグが終了したときに発生する「ドラッグ終了」イベント、およびドラッグされた要素またはテキスト選択を有効なドロップターゲット上に移動したときに発生する「ドラッグ確定」イベントなどを含む。
【0065】
図2を参照して、ツールのユーザインターフェイス211は、クライアントアプリケー
ション250のユーザインターフェイス252のボタンを作成すると図示されているが、実施形態は、ドロップダウンメニュー、タブ、メニュー、ラジオボタン、リストなどの他の種類のユーザインターフェイスのコントロールによく適している。本明細書に記載されたように、ユーザがユーザインターフェイスのコントロールと対話することによって、動作チェーンを直接にまたは間接にトリガーすることができる。
【0066】
例示的な方法
図8は、一実施形態に従って、遅延状態の変更を提供するための方法800を示すフローチャートである。
【0067】
方法は、ステップ810から開始する。
一実施形態によれば、開発者は、
図2に示されたツールのユーザインターフェイス211を介して、遅延状態の変更を有効にするか否かを選択することができる。別の実施形態によれば、遅延状態の変更は、開発者が指定する必要がなく、自動的に提供される。
【0068】
ステップ820において、
図1および2に示されたクライアントアプリケーション250の一部を実装する動作チェーン110、120、130、251を定義する情報を受信する。本明細書に記載されたように、動作チェーンを定義する情報は、設計時に受信される。例えば、本明細書に記載されたように、ツール210のユーザインターフェイス211(
図2)のウェブページ400(
図4)に示されたアイコンをドラッグおよびドロップして、動作チェーン440(
図4)の1つ以上の動作のシーケンスを表す流れ図を作成することができる。
【0069】
受信した情報は、各動作チェーンに関連付けられたグローバル状態(「グローバル変数」とも呼ばれる)を変更するための明示的なコンピュータ実行可能命令を含む。明示的なコンピュータ実行可能命令の例として、Y=Y+1を挙げることができる。式中、Yは、グローバル変数である。開発者は、明示的なコンピュータ命令「Y=Y+1」を入力することによって、明示的なコンピュータ実行命令を指定でき、または他のメカニズムを用いて、例えばビジュアル表現および矢印をドラッグおよびドロップして、ビジュアル表現を連結することによってまたはテキストを入力することによって、明示的なコンピュータ命令に相当するロジックを指定することができる。
【0070】
ツールのユーザインターフェイス211(
図2)のウェブページ400~700(
図4~7)は、本明細書に記載されたように、未熟練開発者が作成しているユーザインターフェイス252(
図2)に遅延状態の変更機能を与えることを可能にする他の特徴を提供する。
【0071】
ステップ830において、各動作チェーンに対して、各動作チェーンのグローバル状態のプライベートビューを作成するためのコンピュータ実行可能命令を自動的に生成する。例えば、
図1~3を参照して、グローバル変数Y、X、Zの各々のプライベートビューY1~Y3、X1~X3、Z1およびZ2を作成するためのコンピュータ実行可能命令が生成される。プライベートビューを作成するためのコンピュータ実行可能命令の例は、ラッパー301、302、303である。ラッパーがクライアントアプリケーション250の実行時に作成されるが、クライアントアプリケーションのユーザインターフェイス252のラッパーを作成する命令は、ツール210の一部であってもよく、設計時にツール210によって生成されてもよく、またはクライアントアプリケーション250の実行時にツール210からの指示に基づいて生成されてもよい。
【0072】
ステップ840において、各々の明示的なコンピュータ実行可能命令に各々の暗黙的なコンピュータ実行可能命令を自動的に関連付ける。暗黙的なコンピュータ実行可能命令は
、クライアントアプリケーションの実行時に、対応する明示的なコンピュータ実行可能命令の代わりに実行される。暗黙的なコンピュータ実行可能命令は、設計時に生成され、対応する明示的なコンピュータ実行可能命令に関連付けられる。暗黙的なコンピュータ実行可能命令は、クライアントアプリケーション250(
図2)の開発者によって指定された明示的なコンピュータ実行可能命令を置換するコンピュータ実行可能命令である。暗黙的なコンピュータ実行可能命令は、設計時ツール210(
図2)によって提供されるロジック(「自動コンピュータ実行可能命令作成」とも呼ばれる)によって作成することができる。このロジックは、設計時または実行時に実行することができる。このロジックは、設計時ツール210(
図2)、クライアントアプリケーション250(
図2)、または設計時ツール210(
図2)およびクライアントアプリケーション250(
図2)によって利用されるライブラリに常駐することができる。
【0073】
仮定として、ツールのUI211(
図2)を使用してクライアントアプリケーション250(
図2)を作成する開発者が、1つの動作チェーン、例えば動作チェーン110に対して明示的なコンピュータ実行可能命令Y=Y+1(Yは、グローバル変数である)を指定し、別の動作チェーン、例えば動作チェーン120(
図1)に対して明示的なコンピュータ実行可能命令C=Yを指定する。また、この例において、仮定として、Cは、第2の動作チェーン120(
図1)のローカル変数である。第1の動作チェーン110(
図1)の明示的なコンピュータ実行可能命令は、暗黙的なコンピュータ命令Y1=Y1+1に置換され、第2の動作チェーン120(
図1)の明示的なコンピュータ実行可能命令C=Yは、暗黙的なコンピュータ命令C=Y2に置換される。別の実施形態において、明示的なコンピュータ実行可能命令は、ランタイム実行時に検出され、実行は、暗黙的なコンピュータ実行可能命令にリダイレクトされる。
【0074】
さらに別の実施形態において、暗黙的なコンピュータ実行可能命令は、明示的なコンピュータ命令をテンプレートとして使用し、グローバル変数をローカル変数に置換することによって作成される。例えば、Y=Y+1の各グローバル変数Yは、ローカル変数Y1に置換される。さらに、明示的なコンピュータ実行可能命令を解析して、グローバル変数を特定することができる。グローバル変数は、ラッパーに入れることができ、対応するプライベートビューを決定することができる。その後、グローバル変数の代わりにプライベートビューにアクセスすることができる。次に、暗黙的なコンピュータ実行可能命令は、クライアントアプリケーション250の実行時に、対応する明示的なコンピュータ実行可能命令の代わりに実行される。
【0075】
方法は、ステップ850で終了する。
一実施形態は、実行時に、対応する明示的なコンピュータ実行可能命令の代わりに、暗黙的なコンピュータ実行可能命令を実行するようにクライアントアプリケーションを構成する。例えば、
図2を参照して、本明細書に記載されたように、ツール210は、明示的なコンピュータ実行可能命令の代わりに、暗黙的なコンピュータ実行可能命令を実行するようにクライアントアプリケーション250を構成する。
【0076】
一実施形態は、ユーザ要求を特定する信号に応答して、少なくとも1つの明示的なコンピュータ実行可能命令を表示し、少なくとも1つの明示的なコンピュータ実行可能命令に対応する暗黙的なコンピュータ実行可能命令を表示しない。
【0077】
一実施形態は、クライアントアプリケーションの実行時に、クライアントアプリケーションと通信するクライアント装置のブラウザに、クライアントアプリケーションのウェブページを表示し、ウェブページに示されたユーザインターフェイスコントロールのユーザ選択の検出に応答してイベントを生成し、イベントに応答して、動作チェーンのうち特定の動作チェーンを開始する。例えば、
図2および10を参照して、アプリケーションサー
バ1020上で動作するクライアントアプリケーション250のユーザインターフェイス252のウェブページは、クライアントアプリケーション250と通信するクライアント装置1085、1070、1070、1090のブラウザに表示される。イベントは、ユーザインターフェイス252のウェブページに示されたユーザインターフェイスコントロールのユーザ選択の検出に応答して生成される。このイベントに応答して、動作チェーン251内の特定の動作チェーンは、開始される。
【0078】
一実施形態は、特定の動作チェーンの開始に応答して、特定の動作のグローバル変数のスナップショットを作成し、スナップショットは、特定の動作チェーンのローカル変数を含み、グローバル変数の値をローカル変数に割り当てる。各ローカル変数には、各グローバル変数の値が割り当てられる。
図3のスナップショットおよびラッパーの例示を参照して、ローカル変数は、X1-X3、Y1-Y3、Z1およびZ3であり、グローバル変数は、X、Y、およびZである。
【0079】
一実施形態は、グ各グローバル変数と各ローカル変数との間の関連付けを有するラッパーを作成し、関連付けに基づいて、グローバル変数の値をローカル変数に割り当てる。
図3は、グローバル変数およびローカル変数を有するラッパー301~303を示し、特定のラッパーに対して、グローバル変数X、Y、Zとローカル変数とは、1対1で対応している。より具体的には、ラッパー301の場合、グローバル変数Xは、ローカル変数X1のみにマッピングされ、グローバル変数Yは、ローカル変数Y1のみにマッピングされ、グローバル変数Zは、Z1のみにマッピングされる。したがって、動作チェーンの実行中の任意の時点で、グローバル変数は、当該動作チェーンの1つのローカル変数のみにマッピングされる。
【0080】
一実施形態は、動作チェーンの実行時に、対応するグローバル変数の代わりに、ローカル変数を変更する。例えば、
図1を参照して、動作チェーン110の実行時に、対応するグローバル変数Yの代わりに、ローカル変数Y1が変更される。同様に、動作チェーン120の実行時に、対応するグローバル変数Yの代わりに、ローカル変数Y2が変更される。
【0081】
一実施形態は、各動作チェーンおよび対応するローカル変数を各々の区画に隔離する。各動作チェーンは、個別の区画に隔離される。例えば、
図1は、各々の動作チェーン110、120、130および対応するローカル変数Y1、Y2、Y3を隔離する区画141~143を示している。
【0082】
一実施形態は、受信、自動生成、および自動関連付けを実行した設計時ツールを用いて、クライアントアプリケーションを実行する。例えば、
図2および8を参照して、設計時ツール210は、
図8に示された受信820、自動生成830、および自動関連付け840を実行することができる。
【0083】
一実施形態は、クライアントブラウザアプリケーションの一部を実装する複数の並列動作チェーン110、120、130(
図1)を定義する情報を受信し、受信した情報は、1つ以上の動作チェーンに関連付けられたグローバル状態を変更するための明示的なコンピュータ実行可能命令を含み、グローバル状態の競合を解決するため、1つ以上の動作チェーンの各々のグローバル状態X、Y、およびZ(
図1)に対応するプライベートビューX1~X3、Y1~Y3、Z1およびZ2(
図1)を作成するように、開発フェーズで1つ以上の動作チェーン110、120、130、251(
図1および2)の各々の1つ以上の環境命令を自動的に生成する。クライアントブラウザアプリケーションの一例は、クライアントアプリケーション250(
図2)である。本明細書に記載されたように、クライアントアプリケーション250は、クライアント装置のブラウザに表示することができ
るウェブページのユーザインターフェイス252(
図2)を提供するため、クライアントブラウザアプリケーションである。グローバル状態の競合を解決する例としては、ローカル変数を作成し、作成したローカル変数を各々の区画に隔離し、対応する動作チェーンの実行時に、グローバル変数の代わりに対応するローカル変数を変更することによって、競合を防止する。さらに、本明細書に記載されたように、ローカル変数の値を結合する(170)ことができる(
図1)。
【0084】
一実施形態は、スマートラッパーを用いて、明示的なコンピュータ実行可能命令のグローバル変数が書き込まれているときにローカル変数を作成し、グローバル変数が読み取られているときにローカル変数を作成しない。例えば、
図3を参照して、未熟練人間開発者が明示的なコンピュータ実行可能命令を指定して、動作132でグローバル変数Yの値を変更するときに、動作132に関連付けられたスマートラッパー303bは、ローカル変数Y3を作成する。動作131が対応するグローバル変数Yに値を割り当てないため、ラッパー303aは、ローカル変数Y3を作成しない。
【0085】
例示的なシステム
図9は、一実施形態に従って、システム900を示す。
【0086】
ページライフサイクルマネージャ901は、ユーザが現在閲覧しているアプリケーションUIに応じて、状態の一部を初期化および破棄する。状態を破棄する場合、状態を永続性ストア(構成にあった場合)に保存することができ、状態を復元する場合、永続性ストア(persistence store)から状態をロードすることができる。
【0087】
永続性ストア902は、ユーザによるアプリケーションの呼び出しの間にアプリケーションの状態を(ディスク上に)保存する場所である。
【0088】
状態903は、アプリケーション(変数)によって利用されるアクティブ状態を提供する。
【0089】
コンポーネント904は、ユーザによって利用されるボタン、テキスト、画像などを含むUIを提供する。
【0090】
動作チェーン905は、アプリケーション(プロセス)を駆動するコアロジックのフローを提供する。
【0091】
RESTサービス906は、外部のREST APIを提供する。
コンピュータ/装置907は、UIを制御するブラウザまたは装置を提供する。
【0092】
以下、システム900に含まれるエンティティ901~907に関連する操作911~921の流れを説明する。
【0093】
操作911:永続性ストアは、ユーザがアプリケーションをアクティブに使用しているときの状態を初期化して、保存する。
【0094】
操作912:状態の変更をコンポーネントに反映させる。例えば、一部の状態に関連付けられたテキストフィールド。
【0095】
操作913:コンポーネントは、状態の変更をトリガーする。例えば、テキスト入力は、状態を直接に更新する。
【0096】
操作914:ユーザは、自分の装置907からUIと対話する。
操作915:動作チェーンは、例えば、マップをズームするようにUI上でメソッドを呼び出すことができる。
【0097】
操作916:UIは、ロジック(例えば、ボタンのクリック)を実行するように、動作チェーンを始動させることができる。
【0098】
操作917:動作チェーンを用いて、RESTサービスを呼び出し、これらのサービスを介してデータをシステムに書き込むまたはシステムからデータを読み取る。
【0099】
操作918:ユーザがアプリケーションおよび表示された異なるUIをにナビゲートするときに、ページライフサイクルマネージャは、状態を初期化して破棄する。
【0100】
操作919:ページライフサイクルマネージャは、ナビゲーションに応答して動作チェーンを実行することができる。例えば、装置907と対話しているユーザは、ページを開始させることができ、これに応じて動作チェーンを実行することができる。
【0101】
操作920:動作チェーンは、ナビゲーション、例えば、UIの様々な部分のアクティブ化を引き起こすことができる。
【0102】
操作921:動作チェーン905は、状態903と通信する。
一実施形態によれば、システム900によって作成されたユーザインターフェイスは、クライアントコンピュータ/装置907のブラウザに実行することができる。作成されたユーザインターフェイスを実行するクライアントコンピュータ/装置は、当該ユーザインターフェイスを作成するときに使用されたクライアントコンピュータ/装置907と同様であってもよく、異なってもよい。作成されたユーザインターフェイスは、複数のクライアントコンピュータ/装置上で異なるタイミングで実行されてもよく、同時に実行されてもよい。
【0103】
本明細書に記載されたように、設計時ツールを使って、ユーザインターフェイスを作成する。一実施形態によれば、JSONファイルは、ユーザインターフェイスの一部として作成される。作成されたJSONファイルは、よく知られた通信方法を介してクライアントコンピュータ/装置のブラウザに転送され、ランタイム実行によって解釈される。
【0104】
遅延状態の変更に関して、一実施形態によれば、実行の流れは、以下の通りである。
(通常、916によって)動作チェーンを呼び出す。動作チェーンは、921を介して状態をコピーする。動作チェーンが完了すると、921によって状態を合併する。
【0105】
例示的なコンピュータ環境
図10は、本明細書の図面に示された実施形態を実施するために使用可能なシステム1000および関連するコンピューティング環境を示す概略ブロック図である。例示的なシステム1000は、
図9を参照して説明した様々なハードウェアおよび/またはソフトウェアモジュールおよび関連する方法をサポートまたは実行することができる。なお、特定の実施形態は、1つ以上の(例えば、ユーザ装置に常駐する)スタンドアロンアプリケーションおよび/またはクライアント側コードとサーバ側コードの組み合わせを用いて実現された1つ以上のウェブベースアプリケーションを用いて、実装することができる。
【0106】
汎用システム1000は、ユーザ装置1060~1090、具体的には、デスクトップコンピュータ1060、ノートブックコンピュータ1070、スマートフォン1080、モバイルフォン1085、およびタブレット1090を含む。汎用システム1000は、
任意の種類のユーザ装置、例えば、シンクライアントコンピュータ、インターネット対応のモバイルフォン、インターネット接続モバイル装置、タブレット、電子書籍、またはウェブページ、他の種類の電子ドキュメントおよびUIを表示および閲覧できるおよび/またはアプリケーションを実行できるPDAとインターフェイスで接続することができる。図示では、システム1000は、5つのユーザ装置をサポートしているが、任意の数のユーザ装置をサポートすることができる。
【0107】
ウェブサーバ1010は、ウェブブラウザおよびスタンドアロンアプリケーションから、ウェブページ、電子文書、企業データまたは他のコンテンツ、およびユーザコンピュータからの他のデータを要求するリクエストを処理するために使用される。また、ウェブサーバ1010は、企業の運用に関連するデータのプッシュデータまたはシンジケートコンテンツ、例えばRSSフィードを提供することができる。
【0108】
アプリケーションサーバ1020は、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)、およびテンプレート言語およびパーサを含む他のウェブ技術を使用して作成するこ
とができる。
【0109】
アプリケーションサーバ1020上で動作するデータアプリケーションは、入力データおよびユーザコンピュータ要求を処理するように構成され、データ記憶装置またはデータベース1030からのデータを格納または取得することができる。データベース1030は、データアプリケーションによって作成および使用されるデータを格納する。一実施形態において、データベース1030は、SQLフォーマットコマンドまたは他のデータベースクエリ言語に応答して、データを格納、更新および取得するように構成された関係型データベースを含む。他の実施形態は、非構造化データ記憶アーキテクチャおよびNoSQL(Not Only SQL)データベースを使用することができる。
【0110】
一実施形態において、アプリケーションサーバ1020は、プログラムまたはスクリプトを実行することができる1つ以上の汎用コンピュータを含む。一実施形態において、ウェブサーバ1010は、1つ以上の汎用コンピュータ上で動作するアプリケーションとして実装される。ウェブサーバ1010およびアプリケーションサーバ1020は、合併されてもよく、同一のコンピュータ上で実行されてもよい。
【0111】
電子通信ネットワーク1040および1050は、ユーザコンピュータ1060~1090、ウェブサーバ1010、アプリケーションサーバ1020、およびデータベース1030の間の通信を可能にする。一実施形態において、ネットワーク1040および1050は、任意の電気通信装置または光通信装置、例えば有線ネットワーク1040および無線ネットワーク1050を含む。ネットワーク1040および1050は、イーサネット(登録商標)ネットワークなどの1つ以上のローカルエリアネットワーク、インターネットなどのワイドエリアネットワーク、セルラーキャリアデータネットワーク、仮想プライベートネットワークなどの仮想ネットワークを含むことができる。
【0112】
システム1000は、本発明の実施形態に従って、アプリケーションを実行するための
一例である。別の実施形態において、ウェブサーバ1010、アプリケーションサーバ1020、および必要に応じてデータベース1030を単一のサーバコンピュータアプリケーションおよびシステムに組み合わせることができる。さらなる実施形態において、仮想化および仮想マシンアプリケーションを用いて、ウェブサーバ1010、アプリケーションサーバ1020およびデータベース1030のうち1つ以上を実装することができる。
【0113】
さらに別の実施形態において、ウェブおよびアプリケーションの機能の全部または一部は、各々のユーザコンピュータ上で動作するアプリケーションに統合することができる。例えば、ユーザコンピュータ上のJavaScriptアプリケーションを用いて、データを取得または分析し、アプリケーションの一部を表示することができる。
【0114】
特定の例示的な実施形態において、ユーザコンピューティング装置1060~1090は、例えば、ユーザインターフェイスを表示するために使用されるブラウザを実行する。例えば、
図10に示されたデスクトップコンピュータ1060、ノートブックコンピュータ1070、スマートフォン1080、モバイルフォン1085およびタブレット1090などのクライアントコンピューティング装置および/または他のコンピューティング装置から、ユーザインターフェイスを見ることができる。
【0115】
特定の例示的な実施形態において、
図10のデスクトップコンピュータ1060、ノートブックコンピュータ1070、スマートフォン1080、モバイルフォン1085、タブレット1090のブラウザは、
図10に示された有線ネットワーク1040および/または無線ネットワーク1050によって表されたインターネットに接続して、
図9のモジュールによって表された1つ以上のネットワーク接続サーバ、データベース、および/または関連するクラウドベース機能を利用する。例えば、1つ以上のエンティティ901、904、905および906は、アプリケーションサーバ1020に常駐することができる。クライアントコンピュータ/装置907は、1つ以上のユーザコンピューティング装置1060~1090として実装することができる。
図10に示された1つ以上のデータベース1030を用いて、
図9の永続性ストア902および状態903などのデータをホストすることができる。
図9に使用されるネットワークは、ネットワーク1040として実装されてもよい。一実施形態において、ネットワーク1040を用いて、クライアントコンピュータ/装置907とコンポーネント904との間に通信することができる。
【0116】
図2のネットワーク220は、無線ネットワーク1050または有線ネットワーク1040またはその両方の一部を含むことができる。
図2のクライアントアプリケーション250は、アプリケーションサーバ1020上に常駐し、ユーザコンピューティング装置1060~1090からアクセスすることができる。ツール210およびサーバアプリケーション230、240は、サーバ1010または1020上に常駐することができる。ツールのユーザインターフェイス211およびクライアントアプリケーションのユーザインターフェイス252は、ユーザコンピューティング装置1060~1090上に表示されてもよい。ユーザインターフェイス211、252は、ユーザコンピューティング装置1060~1090上で動作するブラウザと共に表示されてもよい。
【0117】
一実施形態によれば、クライアントアプリケーション250は、ツール210によって実行される。この場合、クライアントアプリケーション250は、ツール210に常駐することができ、またはツール210によってアクセスされるメモリに常駐することができる。クライアントアプリケーション250は、1つ以上のユーザコンピューティング装置1060~1090からアクセスされてもよく、ユーザインターフェイス252のページは、対応するユーザコンピューティング装置1360~1390のブラウザ上に表示されてもよい。
【0118】
図11は、本明細書に記載された実施形態を実施するために使用可能なコンピューティングシステム1100を示す概略ブロック図である。
図11のコンピューティングシステム1100は、本明細書に記載された実施形態の1つ以上のステップを実行するとして説明されているが、他の実施形態において、コンピューティング装置1100の任意の適切なコンポーネントもしくはコンポーネントの組み合わせまたはシステム1100に関連する任意の適切なプロセッサもしくプロセッサの組み合わせは、ステップの実行を促進することができる。
【0119】
図11は、本明細書に記載された実施形態に使用され得る例示的なコンピューティングシステム1100のブロック図を示す。例えば、コンピューティングシステム1100を用いて、
図10のユーザ装置1060~1090、およびサーバ装置1010、1020を実装することができ、本明細書に記載された方法を実施することができる。いくつかの実装形態において、コンピューティングシステム1100は、プロセッサ1102、オペレーティングシステム1104、メモリ1106、および入出力(I/O)インターフェイス1108を含むことができる。様々な実装形態において、プロセッサ1102を用いて、本明細書に記載された様々な機能および特徴を実現することができ、本明細書に記載された方法を実施することができる。プロセッサ1102は、本明細書に記載された方法を実施すると説明されているが、システム1100の任意の適切なコンポーネントもしくはコンポーネントの組み合わせまたはシステム1100に関連する任意の適切なプロセッサもしくプロセッサの組み合わせまたは任意の適切なシステムは、本明細書に記載された方法を実施することができる。本明細書に記載された方法は、ユーザ装置、サーバ、または両方の組み合わせ上で実施されてもよい。
【0120】
また、コンピューティング装置1100は、メモリ1106または任意の他の適切な記憶装置もしくはコンピュータ可読媒体に記憶され得るソフトウェアアプリケーション1110を含む。ソフトウェアアプリケーション1110は、プロセッサ1102に、本明細書に記載された機能および他の機能を実行させる命令を提供する。コンピューティングシステム1100のコンポーネントは、1つ以上のプロセッサまたはハードウェア装置の任意の組み合わせ、およびハードウェア、ソフトウェア、ファームウェアなどの任意の組み合わせによって実装されてもよい。
【0121】
図示を簡単にするために、
図11は、ハードウェアプロセッサ1102、オペレーティングシステム1104、ハードウェアメモリ1106、I/Oインターフェイス1108、およびソフトウェアアプリケーション1110の各々を1つのブロックとして示している。これらのブロック1102、1104、1106、1108および1110は、複数のプロセッサ、複数のオペレーティングシステム、複数のメモリ、複数のI/Oインターフェイス、および複数のソフトウェアアプリケーションを表すことができる。様々な実装形態において、コンピューティングシステム1100は、図示された全てのコンポーネントを含まなくてもよく、および/または図示されたコンポーネントの代わりにまたは追加的に他のコンポーネントを含んでもよい。
【0122】
コンピュータ可読媒体および装置
特に明記しない限り、本明細書に記載された1つ以上の実施形態は、例えば、コンピュータシステムまたは類似する装置の非一時的なプロセッサ可読記憶装置に常駐するプロセッサ可読命令を用いて実施することができる。非一時的なプロセッサ可読記憶装置は、命令を格納することができる任意の物理メモリであってもよい。非一時的なプロセッサ可読記憶装置の例は、ディスク、コンパクトディスク(CD)、デジタル多用途装置(DVD)、読み取り専用メモリ(ROM)、フラッシュなどを含むがこれらに限定されない。上述したように、本発明の様々な実施形態のプロセスおよび動作の一部は、一実施形態において、コンピュータシステムの非一時的なプロセッサ可読記憶装置に常駐する一連のプロ
セッサ可読命令(例えば、ソフトウェアプログラム)として実現され、コンピュータシステムの1つ以上のプロセッサによって実行される。実行されると、命令は、コンピュータシステムに本発明の様々な実施形態の機能を実施させる。例えば、プロセッサは、命令を実行することができる。プロセッサは、コンピュータシステムに関連する中央処理装置などのハードウェアプロセッサである。非一時的なプロセッサ可読記憶装置は、ハードウェアメモリであり、1つ以上のプロセッサは、ハードウェアプロセッサである。一実施形態によれば、非一時的なプロセッサ可読記憶装置は、有形の物理装置である。
【0123】
一実施形態は、遅延状態の変更を提供するための設計時ツールを提供する。設計時ツールは、1つ以上のプロセッサと、命令を含む非一時的なプロセッサ可読記憶装置とを備える。これらの命令は、クライアントアプリケーションの一部を実装する動作チェーンを定義する情報を受信するための命令を含み、受信した情報は、各動作チェーンに関連付けられたグローバル状態を変更するための明示的なコンピュータ実行可能命令を含み、各動作チェーンに対して、各動作チェーンのグローバル状態のプライベートビューを作成するためのコンピュータ実行可能命令を自動的に生成するための命令と、各々の明示的なコンピュータ実行可能命令に各々の暗黙的なコンピュータ実行可能命令を自動的に関連付けるための命令とを含み、暗黙的なコンピュータ実行可能命令は、クライアントアプリケーションの実行時に、対応する明示的なコンピュータ実行可能命令の代わりに実行される。
【0124】
結論
C、C++、Java、アセンブリ言語などを含む任意の適切なプログラミング言語を用いて、特定の実施形態のルーチンを実装することができる。異なるプログラミング技術、例えば手続き型またはオブジェクト指向型プログラミング技術を使用することができる。ルーチンは、単一の処理装置または複数のプロセッサ上で実行することができる。ステップ、動作または演算は、特定の順序で記載されているが、この順序は、異なる特定の実施形態では変更されてもよい。いくつかの特定の実施形態において、本明細書に記載された順次に実行される複数のステップは、同時に実行されてもよい。
【0125】
特定の実施形態は、命令実行システム、機械、システムまたは装置によってまたはそれに関連して使用されるコンピュータ可読記憶媒体に実装されてもよい。特定の実施形態は、ソフトウェアまたはハードウェアまたは両方の組み合わせによる制御ロジックの形で実装されてもよい。この制御ロジックは、1つ以上のプロセッサによって実行されると、特定の実施形態に記載されたものを実行するように動作可能である。例えば、ハードウェア記憶装置などの非一時的な媒体を用いて、実行可能命令を含むことができる制御ロジックを格納することができる。
【0126】
特定の実施形態は、プログラムされた汎用デジタルコンピュータ、特定用途向け集積回路、プログラマブルロジック装置、フィールドプログラマブルゲートアレイ、光学的システム、化学的システム、生物学的システム、量子的またはナノ工学的システムなどを用いて、実装されてもよい。他のコンポーネントおよび機構を使用することができる。一般に、特定の実施形態の機能は、当技術分野で知られている任意の手段によって達成することができる。分散型またはネットワーク化システム、コンポーネントおよび/または回路を使用することができる。クラウドコンピューティングまたはクラウドサービスを使用することができる。データは、有線、無線、または他の手段で送信または転送することができる。
【0127】
また、図面に示された1つ以上の要素は、より離れたまたは集中した方法で配置されてもよく、動作可能に限り、特定の需要に応じて外してもよい。このように、コンピュータが上記の方法のいずれかを実行することを可能にするプログラムまたはコードを機械可読媒体に格納する実装も、本発明の精神および範囲内に含まれる。
【0128】
「プロセッサ」は、データ、信号または他の情報を処理する任意の適切なハードウェアおよび/またはソフトウェアシステム、メカニズムまたはコンポーネントを含む。プロセッサには、汎用中央処理装置、複数の処理装置、機能を実現するための専用回路を備えたシステムまたは他のシステムを含むことができる。処理は、地理的な場所または時間に限定されない。例えば、プロセッサは、例えば、「リアルタイム」、「オフライン」または「バッチモード」で機能を実行することができる。処理の一部は、異なる(または同様の)処理システムによって、異なる時間に異なる場所で実行することができる。処理システムの例は、サーバ、クライアント、エンドユーザ装置、ルータ、スイッチ、ネットワーク化装置などを含む。コンピュータは、メモリと通信する任意のプロセッサである。メモリは、任意の適切なプロセッサ可読記憶媒体、例えば、ランダムアクセスメモリ(RAM)、読み取り専用メモリ(ROM)、磁気または光ディスク、またはプロセッサによって実行される命令を格納する適切な他の非一時的な媒体であり得る。
【0129】
本明細書の説明および特許請求の範囲に使用された場合、「a」、「an」および「the」は、文脈から明確に指示しない限り、複数を含む。また、本明細書の説明および特許請求の範囲に使用された場合、「in」は、文脈から明確に指示しない限り、「in」および「on」を意味する。
【0130】
したがって、本明細書において特定の実施形態を説明したが、任意の修正、様々な変更、および置換は、本開示に含まれる。場合によって、特定の実施形態において、本発明の精神および範囲から逸脱することなく、対応する他の特徴を使用せず、いくつかの特徴を使用することができる。したがって、特定の状況または材料を本質的な範囲および精神に適合するように、多くの変更を加えることができる。
【手続補正書】
【提出日】2023-02-10
【手続補正1】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項1】
グローバル状態が変更されたか否かに応じて、明示的なコンピュータ実行可能命令に対して前記グローバル状態のローカル変数コピーを提供するための方法であって、前記方法は、
グローバル変数を変更する第1の明示的なコンピュータ実行可能命令を有する第1の動作チェーンを受信することと、
前記グローバル状態を変更せず、前記グローバル状態を読み取る第2の明示的なコンピュータ実行可能命令を有する第2の動作チェーンを受信することとを含み、前記第1の動作チェーンと前記第2の動作チェーンは、クライアントアプリケーションの一部を実装し、
前記第1の明示的なコンピュータ実行可能命令を第1のテンプレートとして用いて、前記グローバル状態の第1のローカル変数コピーを有する第1の暗黙的なコンピュータ実行可能命令を作成することと、
前記第1の動作チェーンおよび前記第2の動作チェーンを並行して実行することを含む前記クライアントアプリケーションを実行することとを含み、前記第2の明示的なコンピュータ実行可能命令は、前記グローバル状態を用いて実行され、前記第1の暗黙的なコンピュータ実行可能命令は、前記第1のローカル変数コピーを用いて実行される、方法。
【請求項2】
前記方法は、
前記グローバル変数を変更する前記第2の明示的なコンピュータ実行可能命令を有する第3の動作チェーンを受信することと、
前記第2の明示的なコンピュータ実行可能命令を第2のテンプレートとして用いて、前記グローバル状態の第2のローカル変数コピーを有する第2の暗黙的なコンピュータ実行可能命令を作成することとをさらに含み、前記第1のテンプレートは、前記第2のテンプレートとは異なり、
前記第1の動作チェーンおよび前記第2の動作チェーンと並行して第3の動作チェーンを含むクライアントアプリケーションを実行することをさらに含み、前記第2の暗示的なコンピュータ実行可能命令は、前記第2のローカル変数コピーを用いて実行される、請求項1に記載の方法。
【請求項3】
前記第1の動作チェーンは、前記グローバル状態を変更し、前記第1のテンプレートとは異なる第2のテンプレートを有する別の明示的なコンピュータ実行可能命令を有する、請求項1または2に記載の方法。
【請求項4】
第1の開発者が前記第1の動作チェーンを作成し、第2の開発者が前記第2の動作チェーンを作成する、請求項1~3のいずれかに記載の方法。
【請求項5】
前記方法は、ツールにユーザインターフェイスを提供することをさらに含み、
前記ユーザインターフェイスは、前記第1の動作チェーンおよび前記第2の動作チェーンを作成するための能力を未熟練開発者に提供する、請求項1~4のいずれかに記載の方法。
【請求項6】
前記方法は、ユーザインターフェイスコントロールの選択に基づいて、前記第1の動作チェーンおよび前記第2の動作チェーンの実行をトリガーすることをさらに含む、請求項1~5のいずれかに記載の方法。
【請求項7】
前記方法は、前記動作チェーンによって使用されるグローバル変数のスナップショットを取ることをさらに含み、各動作チェーンは、1つのスナップショットを有する、請求項1~6のいずれかに記載の方法。
【請求項8】
前記方法は、
第3の動作チェーンに関連するグローバル変数のスナップショットを取ることと、
前記第3の動作チェーンから第4の動作チェーンを開始することと、
前記第4の動作チェーンに関連するグローバル変数のスナップショットを取ることと、
前記第4の動作チェーンの前記スナップショットを第3の動作チェーンの前記スナップショットにネストすることとをさらに含む、請求項1~7のいずれかに記載の方法。
【請求項9】
前記方法は、前記グローバル状態が変更される直前に、前記グローバル状態の前記第1のローカル変数コピーを作成することをさらに含む、請求項1~8のいずれかに記載の方法。
【請求項10】
請求項1~9のいずれかに記載の方法をコンピュータに実行させるための、プログラム。
【請求項11】
グローバル状態が変更されたか否かに応じて、明示的なコンピュータ実行可能命令を実行するための装置であって、
前記装置は、
1つ以上のプロセッサと、
請求項10に記載のプログラムを含む非一時的なプロセッサ可読記憶装置とを備える、装置。
【手続補正3】
【補正対象書類名】明細書
【補正対象項目名】0001
【補正方法】変更
【補正の内容】
【0001】
関連出願の相互参照
本願は、2018年6月7日に提出され、「延期型状態変更」と題された米国特許出願第16/003016号(ORACP0207/ORACP180299-US-NP)、2017年9月28日に提出され、「延期型状態変更」と題された米国仮特許出願第62/564943号(ORACP0207P-1/ORACP180299-US-PSP)、および2018年2月12日に提出され、「延期型状態変更」と題された米国特許仮出願第62/629520号(ORACP0207P-2/ORACP180299-US-PSP-2)の優先権を主張し、これらの出願の内容の全体は、あらゆる目的のために参照によって本願に組み込まれる。
【手続補正4】
【補正対象書類名】明細書
【補正対象項目名】0004
【補正方法】変更
【補正の内容】
【0004】
概要
一実施形態は、延期型状態変更を提供する。クライアントアプリケーションの一部を実装する動作チェーンを定義する情報を受信する。受信した情報は、各動作チェーンに関連付けられたグローバル状態を変更するための明示的なコンピュータ実行可能命令を含む。コンピュータ実行可能命令は、各動作チェーンに対して自動的に生成され、各動作チェーンのグローバル状態のプライベートビューを作成する。各暗黙的なコンピュータ実行可能命令は、各明示的なコンピュータ実行可能命令に自動的に関連付けられる。暗黙的なコンピュータ実行可能命令は、クライアントアプリケーションの実行時に、対応する明示的なコンピュータ実行可能命令の代わりに実行される。
【手続補正5】
【補正対象書類名】明細書
【補正対象項目名】0005
【補正方法】変更
【補正の内容】
【0005】
一実施形態は、延期型状態変更を提供するための方法を実行させるための命令を含む非一時的なプロセッサ可読記憶装置を提供する。この方法は、クライアントアプリケーションの一部を実装する動作チェーンを定義する情報を受信することを含み、受信した情報は、各動作チェーンに関連付けられたグローバル状態を変更するための明示的なコンピュータ実行可能命令を含み、各動作チェーンに対して、各動作チェーンのグローバル状態のプライベートビューを作成するためのコンピュータ実行可能命令を自動的に生成することと、各々の明示的なコンピュータ実行可能命令に各々の暗黙的なコンピュータ実行可能命令を自動的に関連付けることとを含み、暗黙的なコンピュータ実行可能命令は、クライアントアプリケーションの実行時に、対応する明示的なコンピュータ実行可能命令の代わりに実行される。
【手続補正6】
【補正対象書類名】明細書
【補正対象項目名】0007
【補正方法】変更
【補正の内容】
【0007】
【
図1】一実施形態に従って、並列に実行されている動作チェーンを示す図である。
【
図2】一実施形態に従って、システムを示すブロック図である。
【
図3】一実施形態に従って、スナップショットの実装を示す図である。
【
図4】一実施形態に従って、ユーザインターフェイスの一部であるボタンの動作チェーンを作成するページのスクリーンショットを示す図である。
【
図5】一実施形態に従って、開発者が動作チェーンに必要な入力パラメータをマッピングするために使用できるウェブページを示す図である。
【
図6】一実施形態に従って、未熟練開発者がUIコンポーネントをコンポーネントイベントに関連付けるために使用できるウェブページを示す図である。
【
図7】一実施形態に従って、イベントリストを含むウェブページを示す図である。
【
図8】一実施形態に従って、
延期型状態変更を提供するための方法を示すフローチャートである。
【
図9】一実施形態に従って、システムを示す図である。
【
図10】本明細書の図面に示された実施形態を実施するために使用可能なシステムおよび関連するコンピューティング環境を示す概略ブロック図である。
【
図11】本明細書に記載された実施形態を実施するために使用可能なコンピューティング装置を示す概略ブロック図である。
【手続補正7】
【補正対象書類名】明細書
【補正対象項目名】0008
【補正方法】変更
【補正の内容】
【0008】
実施形態の詳細な説明
高度並列化システムにおいて、複数のプロセスが共有状態を同時に更新する可能性があり、その結果潜在的な競合をもたらす。プロセスとは、所定の機能を行うために実行されるコードの一部である。ユーザがクライアントアプリケーションのユーザインターフェイスと対話するなど特定の機能を説明するが、本明細書に記載された機能は、必要に応じて他の機能と共に使用するように構成できることは明らかである。従来では、複数の並列プロセスが共有状態を同時に更新する問題は、まったく対処されなかった、またはロック、ミューテックスまたはクリティカルセクションなどの高度なプログラミングメカニズムを用いて対処された。このような高度なプログラミングメカニズムを使用するコードを作成することには、開発者が高度なプログラミングスキルを有する必要がある。様々な実施形態は、高度なプログラミングメカニズムを使用せず、未熟練開発者がコードを作成できるように、これらの問題に対処する。延期型状態変更により、未熟練開発者は、潜在的な競合を回避すると共に、クライアントアプリケーション用のコンピュータ実行可能命令を作成することができる。これによって、各プロセスは、共有状態の矛盾のないビューを有し、対応するプロセスが完了したときに、共有状態を予測可能な方法で更新することができる。
【手続補正8】
【補正対象書類名】明細書
【補正対象項目名】0031
【補正方法】変更
【補正の内容】
【0031】
一実施形態において、「延期型状態変更」は、グローバル変数Yを変更する開発者指定コンピュータ実行可能命令、例えばY=Y+1を、ローカル変数Y1を変更するツール生成コンピュータ実行可能命令、例えばY1=Y1+1に自動的に変更する手法である。したがって、グローバル変数の変更は、グローバル変数を変更する動作チェーン110、120、130が170で実行を終了するまで延期される。これによって、動作チェーンがグローバル変数を更新するときの競合が防止される。開発者指定コンピュータ実行可能命令は、本明細書において「明示的なコンピュータ実行可能命令」とも呼ばれ、ツール生成コンピュータ実行可能命令は、本明細書において「暗黙的なコンピュータ実行可能命令」とも呼ばれる。一実施形態によれば、開発者指定命令およびツール生成命令は、非一時的なプロセッサ可読記憶装置に記憶された非一時的なコンピュータ可読命令である。
【手続補正9】
【補正対象書類名】明細書
【補正対象項目名】0050
【補正方法】変更
【補正の内容】
【0050】
ツール210のユーザインターフェイス211は、設計時に、クライアントアプリケーション250を構築するためのコンピュータ実行可能命令を生成する。本明細書に記載されたように、ツールのユーザインターフェイスにより、未熟練人間開発者は、クライアントアプリケーションのために、延期型状態変更機能を備えた動作チェーンを作成することができる。開発者は、延期型状態変更機能を備えた動作チェーン251を作成するように、ツール210に指示するオプションを選択することができる。代替的には、ツール210は、ツール210を使用して動作チェーン251を作成したことに応答して、延期型状態変更機能を提供するコンピュータ実行可能命令を自動的に作成することができる。
【手続補正10】
【補正対象書類名】明細書
【補正対象項目名】0066
【補正方法】変更
【補正の内容】
【0066】
例示的な方法
図8は、一実施形態に従って、
延期型状態変更を提供するための方法800を示すフローチャートである。
【手続補正11】
【補正対象書類名】明細書
【補正対象項目名】0067
【補正方法】変更
【補正の内容】
【0067】
方法は、ステップ810から開始する。
一実施形態によれば、開発者は、
図2に示されたツールのユーザインターフェイス211を介して、
延期型状態変更を有効にするか否かを選択することができる。別の実施形態によれば、
延期型状態変更は、開発者が指定する必要がなく、自動的に提供される。
【手続補正12】
【補正対象書類名】明細書
【補正対象項目名】0070
【補正方法】変更
【補正の内容】
【0070】
ツールのユーザインターフェイス211(
図2)のウェブページ400~700(
図4~7)は、本明細書に記載されたように、未熟練開発者が作成しているユーザインターフェイス252(
図2)に
延期型状態変更機能を与えることを可能にする他の特徴を提供する。
【手続補正13】
【補正対象書類名】明細書
【補正対象項目名】0104
【補正方法】変更
【補正の内容】
【0104】
延期型状態変更に関して、一実施形態によれば、実行の流れは、以下の通りである。(通常、916によって)動作チェーンを呼び出す。動作チェーンは、921を介して状態をコピーする。動作チェーンが完了すると、921によって状態を合併する。
【手続補正14】
【補正対象書類名】明細書
【補正対象項目名】0123
【補正方法】変更
【補正の内容】
【0123】
一実施形態は、延期型状態変更を提供するための設計時ツールを提供する。設計時ツールは、1つ以上のプロセッサと、命令を含む非一時的なプロセッサ可読記憶装置とを備える。これらの命令は、クライアントアプリケーションの一部を実装する動作チェーンを定義する情報を受信するための命令を含み、受信した情報は、各動作チェーンに関連付けられたグローバル状態を変更するための明示的なコンピュータ実行可能命令を含み、各動作チェーンに対して、各動作チェーンのグローバル状態のプライベートビューを作成するためのコンピュータ実行可能命令を自動的に生成するための命令と、各々の明示的なコンピュータ実行可能命令に各々の暗黙的なコンピュータ実行可能命令を自動的に関連付けるための命令とを含み、暗黙的なコンピュータ実行可能命令は、クライアントアプリケーションの実行時に、対応する明示的なコンピュータ実行可能命令の代わりに実行される。
【手続補正15】
【補正対象書類名】図面
【補正方法】変更
【補正の内容】
【手続補正16】
【補正対象書類名】図面
【補正方法】変更
【補正の内容】
【手続補正17】
【補正対象書類名】図面
【補正方法】変更
【補正の内容】
【手続補正18】
【補正対象書類名】図面
【補正方法】変更
【補正の内容】
【外国語明細書】