JP7220210B2 - 延期型状態変更 - Google Patents

延期型状態変更 Download PDF

Info

Publication number
JP7220210B2
JP7220210B2 JP2020517989A JP2020517989A JP7220210B2 JP 7220210 B2 JP7220210 B2 JP 7220210B2 JP 2020517989 A JP2020517989 A JP 2020517989A JP 2020517989 A JP2020517989 A JP 2020517989A JP 7220210 B2 JP7220210 B2 JP 7220210B2
Authority
JP
Japan
Prior art keywords
computer
chain
global
executable instructions
client application
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
JP2020517989A
Other languages
English (en)
Other versions
JP2020535551A (ja
JP2020535551A5 (ja
Inventor
ストラウブ,クリスチャン
Original Assignee
オラクル・インターナショナル・コーポレイション
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by オラクル・インターナショナル・コーポレイション filed Critical オラクル・インターナショナル・コーポレイション
Publication of JP2020535551A publication Critical patent/JP2020535551A/ja
Publication of JP2020535551A5 publication Critical patent/JP2020535551A5/ja
Priority to JP2023012152A priority Critical patent/JP2023052773A/ja
Application granted granted Critical
Publication of JP7220210B2 publication Critical patent/JP7220210B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/70Software maintenance or management
    • G06F8/71Version control; Configuration management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/30Creation or generation of source code
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/451Execution arrangements for user interfaces
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/52Program synchronisation; Mutual exclusion, e.g. by means of semaphores
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/01Input arrangements or combined input and output arrangements for interaction between user and computer
    • G06F3/048Interaction techniques based on graphical user interfaces [GUI]
    • G06F3/0481Interaction techniques based on graphical user interfaces [GUI] based on specific properties of the displayed interaction object or a metaphor-based environment, e.g. interaction with desktop elements like windows or icons, or assisted by a cursor's changing behaviour or appearance
    • G06F3/0483Interaction with page-structured environments, e.g. book metaphor
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Human Computer Interaction (AREA)
  • Computer Security & Cryptography (AREA)
  • Stored Programmes (AREA)
  • User Interface Of Digital Computer (AREA)
  • Debugging And Monitoring (AREA)

Description

関連出願の相互参照
本願は、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)の優先権を主張し、これらの出願の内容の全体は、あらゆる目的のために参照によって本願に組み込まれる。
背景
共有変数または他のデータを使用するコンピューティング環境にプロセスを実行しているときに、他のプロセスも共有データを使用する場合、適切な動作を保証することが困難である。他の1つ以上のプロセスと並行して当該プロセスが動作する場合または当該プロセスの連続実行を保証できない場合に、競合が発生する可能性がある。共有データの競合が発生する可能性がある1つの領域は、ウェブアプリケーションの開発である。ウェブアプリケーションの一例として、HTML(HyperText Markup Language)、Javascript(登録商標)などの言語を用いて、「ステートレス」実行方法を実装できるブラウザベースのアプリケーションが挙げられる。
様々なプロトコルおよび標準、例えばSOA(Service Oriented Architecture)およびREST(Representational State Transfer)などをブラウザベースのアプリケーションに使用することによって、複雑なシステムをウェブアプリケーションに設計することができる。ウェブアプリケーションにより多くの特徴、機能および複雑性を導入する場合、データの競合問題が発生する可能性が高くなる。また、このような断続的なエラーを再現して修正することは、困難である。このことは、複数の異なる開発者がウェブアプリケーション開発段階で機能を個別に作成し、個別のユーザが実行段階でこの機能を整合または統合した体験として実行する場合に特によくある。機能の例として、例えば、商品またはサービスのオンライン購入が挙げられる。この場合、ユーザは、特定の機能の完了を待たずに、商品の閲覧、比較、購入、記録および他の機能をほぼ同時に実行することができる。
概要
一実施形態は、延期型状態変更を提供する。クライアントアプリケーションの一部を実装する動作チェーンを定義する情報を受信する。受信した情報は、各動作チェーンに関連付けられたグローバル状態を変更するための明示的なコンピュータ実行可能命令を含む。コンピュータ実行可能命令は、各動作チェーンに対して自動的に生成され、各動作チェーンのグローバル状態のプライベートビューを作成する。各暗黙的なコンピュータ実行可能命令は、各明示的なコンピュータ実行可能命令に自動的に関連付けられる。暗黙的なコンピュータ実行可能命令は、クライアントアプリケーションの実行時に、対応する明示的なコンピュータ実行可能命令の代わりに実行される。
一実施形態は、延期型状態変更を提供するための方法を実行させるための命令を含む非一時的なプロセッサ可読記憶装置を提供する。この方法は、クライアントアプリケーションの一部を実装する動作チェーンを定義する情報を受信することを含み、受信した情報は、各動作チェーンに関連付けられたグローバル状態を変更するための明示的なコンピュータ実行可能命令を含み、各動作チェーンに対して、各動作チェーンのグローバル状態のプライベートビューを作成するためのコンピュータ実行可能命令を自動的に生成することと、各々の明示的なコンピュータ実行可能命令に各々の暗黙的なコンピュータ実行可能命令を自動的に関連付けることとを含み、暗黙的なコンピュータ実行可能命令は、クライアントアプリケーションの実行時に、対応する明示的なコンピュータ実行可能命令の代わりに実行される。
本明細書に開示された特定の実施形態の本質および利点のさらなる理解は、以下の説明および添付の図面を参照することによって実現され得る。
一実施形態に従って、並列に実行されている動作チェーンを示す図である。 一実施形態に従って、システムを示すブロック図である。 一実施形態に従って、スナップショットの実装を示す図である。 一実施形態に従って、ユーザインターフェイスの一部であるボタンの動作チェーンを作成するページのスクリーンショットを示す図である。 一実施形態に従って、開発者が動作チェーンに必要な入力パラメータをマッピングするために使用できるウェブページを示す図である。 一実施形態に従って、未熟練開発者がUIコンポーネントをコンポーネントイベントに関連付けるために使用できるウェブページを示す図である。 一実施形態に従って、イベントリストを含むウェブページを示す図である。 一実施形態に従って、延期型状態変更を提供するための方法を示すフローチャートである。 一実施形態に従って、システムを示す図である。 本明細書の図面に示された実施形態を実施するために使用可能なシステムおよび関連するコンピューティング環境を示す概略ブロック図である。 本明細書に記載された実施形態を実施するために使用可能なコンピューティング装置を示す概略ブロック図である。
実施形態の詳細な説明
高度並列化システムにおいて、複数のプロセスが共有状態を同時に更新する可能性があり、その結果潜在的な競合をもたらす。プロセスとは、所定の機能を行うために実行されるコードの一部である。ユーザがクライアントアプリケーションのユーザインターフェイスと対話するなど特定の機能を説明するが、本明細書に記載された機能は、必要に応じて他の機能と共に使用するように構成できることは明らかである。従来では、複数の並列プロセスが共有状態を同時に更新する問題は、まったく対処されなかった、またはロック、ミューテックスまたはクリティカルセクションなどの高度なプログラミングメカニズムを用いて対処された。このような高度なプログラミングメカニズムを使用するコードを作成することには、開発者が高度なプログラミングスキルを有する必要がある。様々な実施形態は、高度なプログラミングメカニズムを使用せず、未熟練開発者がコードを作成できるように、これらの問題に対処する。延期型状態変更により、未熟練開発者は、潜在的な競合を回避すると共に、クライアントアプリケーション用のコンピュータ実行可能命令を作成することができる。これによって、各プロセスは、共有状態の矛盾のないビューを有し、対応するプロセスが完了したときに、共有状態を予測可能な方法で更新することができる。
イベント駆動型アプリケーションにおいて、プロセスは、イベントに応答して特定の動作を実行する。イベントが同時に発生する可能性があり、イベントの処理が非同期に行われる可能性があるため、イベントに応答して変更される可能性のある状態は、競合する可能性があり、通常は競合する。
イベントハンドラを設計および実装する場合、他の外部ハンドラが使用されている状態を同時に変更することを判断することは、非常に困難である。例えば、例示として以下の擬似コードを挙げる。
Figure 0007220210000001
例えば、最初に状態Aの値が3であり、状態Bの値が2であり、「set result=sum(A, B)」(以下、「設定」と略す)という命令を実行するときに、5という結果を与えると仮定する。設定した後で出力する前に、別のハンドラまたはプロセスが、例えば、状態Aを3から2に変化または変更した場合、「print A, "+", B, "=", result」命令は、不正解「2+2=5」を出力してしまう。
上記は、簡単な例で、2つ以上のプロセスまたはハンドラが共有変数Aを書き込む場合の問題を示している。第1の問題は、2つのプロセス(例えば、第1のプロセスがonAdditionButtonClickであり、第2のプロセスがAの書き込みである)が非同期に実行されるため、Aの現在値を判断することである。第2の問題は、プロセスが誤りを検出した場合、すなわち、「3+2=5」ではなく「2+2=5」を出力した場合、処理を既知の開始点にロールバックできるように、擬似コードの開始時にAおよびBの初期値を判断することである。
現在の開発環境において、非常に多くのプロセスが非同期に実行され、多くの共有変数にアクセスしている可能性がある。換言すれば、1つの変数が2つ以上のプロセスによって非同期に共有されている場合がある。したがって、デバッグという目的のために、変数が変更される前に、変数のスナップショットを作成する必要がある。一実施形態において、変更とは、読み取りではなく、書き込みを意味する。一実施形態において、変数のスナップショットは、元の共有変数の値を変更することなく、変数を変更しようとするプロセスのために、ローカルコピーを作成することによって達成できる。このように、元の共有変数の値を非同期に変更しようとする各プロセスに、ローカルコピーが作成される。デバッグを必要とする場合、プロセスのローカル変数を元の共有変数の値にロールバックすることができる。ある時点で、全てのローカルコピーは、最終値に決定され、この最終値は、元の共有変数の値を置換する。一実施形態において、ローカルコピーは、スマートラッパーによって作成される。スマートラッパーは、変数が読み取られているときにローカルコピーを作成せず、書き込まれているときのみローカルコピーを作成する。
一実施形態によれば、イベントハンドラを実行する前に、状態を取得する。その後、取得した状態を他のハンドラから隔離することができる。一実施形態によれば、隔離した状態は、そのハンドラのみによって自由に変更され、得られた変更は、当該ハンドラの将来の動作に利用される。ハンドラが完了すると、状態は、より大きなシステムに合併される。合併中に競合が発生する可能性があるが、これらの競合は、論理処理が終了した後に発生するため、より容易に追跡および管理することができる。
図1Aは、一実施形態に従って、並列に実行されている動作チェーン110、120、130を示す。関数または動作チェーンが「並列」に実行すると記載されるが、よく知られているように、並列実行という概念は、一般的に、マイクロ実行レベルで一度に1つのみの動作チェーンを実行するシングルプロセッサを用いて実行したタイムスライス処理を記述するときに使用される。しかしながら、より高いマクロ実行レベル、例えばアプリケーション命令レベルにおいて、動作チェーンが同時にまたは並列に動作するとみなされる。一般的に、本明細書に記載された実施形態は、任意の実行スキーム、例えば、シングルまたはマルチプロセッサアーキテクチャ、マルチスレッド処理、マルチパイプライン処理、時分割処理、分散処理またはネットワーク(例えば、クラウド)処理に適用することができる。
動作チェーン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の親動作である。
動作は、様々な種類の処理を実行することができる。例えば、1つの動作は、変数から値を読み取ることができる。別の動作は、値を変数に書き込むことができる。別の例において、特定の閾値を下回るいくつかの株価を取得し、いずれかの株価が特定の閾値を下回る場合に警告を提供したい場合がある。この場合、動作は、いくつかの他の動作に分岐され、これらの動作の各々は、並列に株価を取得する。株価が取得されると、これらの動作は、1つの動作に結合され、閾値を下回る株価を決定し、その情報を警告として提供する。さらに別の例において、ユーザがリストとして表示された各々の歌の下方の「購入」ボタンを選択することによっていくつかの歌を購入できるように、ウェブページを設計することができる。「購入」ボタンを選択すると、動作を開始するイベントがトリガーされる。各動作は、購入を並列に処理することができる。
様々な実施形態によれば、各々の動作チェーンは、動作チェーンを隔離する線によって示されたように、区画141、142、143(「隔離」とも呼ばれる)によって互いに隔離される。換言すれば、各動作チェーンは、動作時の状態のプライベートビューを有する。例えば、Yは、グローバル状態を表す。例示として、状態は、変数およびデータ流を含む。各動作チェーンは、実行を開始するときに、グローバル状態の独自のプライベートビューを有する。例えば、Y1は、Yの第1の動作チェーンのプライベートビューであり、Y2は、Yの第2の動作チェーンのプライベートビューであり、Y3は、Yの第3の動作チェーンのプライベートビューである。
一実施形態において、ビュー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の新しい値である。
一実施形態によれば、未熟練開発者は、設計時ビジュアル開発ツールのユーザインターフェイスを用いて、動作チェーンのビジュアル表現を作成することができる。例えば、ユーザインターフェイスは、ボックスおよび矢印のアイコンを表示することができる。開発者は、ボックスおよび矢印のアイコンをドラッグおよびドロップしてボックスを連結することによって、動作チェーンのビジュアル表現を作成することができる。このツールは、動作チェーンのビジュアル表現に基づいて、クライアントアプリケーションのコンピュータ実行可能命令を生成する。通常、生成されたコンピュータ実行可能命令は、クライアントアプリケーションのユーザインターフェイスを実装する。このような動作チェーンは、矢印およびボックスを用いてアトミックボックス(atomic box)を相互に連結することによって簡単な動作を実行するように作成されたため、「宣言型システム」とも呼ばれている。宣言型システムは、並列処理に関する複雑性を含むコンピュータ命令の多くの複雑性を開発者から隠すことができる。これらの開発者は、「宣言型開発者」または「宣言型プログラマ」と呼ばれる。宣言型開発者は、ロック、ミューテックス、パーティションまたは(「保護セクション」とも呼ばれる)クリティカルセクションなどの高度なプログラミング技術を使用できない。
様々な実施形態によれば、宣言型プログラマ(本明細書において、「未熟練開発者」および「未熟練人間開発者」とも呼ばれる)は、ツールを用いて動作チェーンを作成することによって、明示的なコンピュータ実行可能命令を指定する。しかしながら、様々な実施形態によれば、ツールは、少なくとも1つの暗黙的なコンピュータ実行可能命令を自動的に生成する。この少なくとも1つの暗黙的なコンピュータ実行可能命令は、実行時に実行され、設計時に指定された少なくとも1つの明示的なコンピュータ実行可能命令を置換する。例えば、共有状態Yに値を割り当てる明示的なコンピュータ実行可能命令を実行する代わりに、プライベートビューY1に同様の値を割り当てる暗黙的なコンピュータ実行可能命令が実行される。
暗黙的なコンピュータ実行可能命令は、宣言型プログラマから隠されている。例えば、暗黙的な命令の実行が明示的な命令の実行を置換するが、宣言型プログラマは、作成した動作チェーンを表示する場合、明示的なコンピュータ実行可能命令しか見えない。
ツールは、クライアントアプリケーションの命令を表示するように、異なるモードでクライアントアプリケーションの命令を構成することができる。例えば、第1のモードは、未熟練プログラマによって使用され、第2のモードは、高度なプログラマによって使用される。第1のモードは、未熟練プログラマに明示的な命令を表示するが、暗黙的な命令を隠す。第2のモードは、暗黙的な命令を含むクライアントアプリケーションの実際の命令を表示する。いずれかのモードを使用しても、クライアントアプリケーションのソースコード命令を表示することができ、デバッグの一部として実行されている命令を表示することができる。
説明のために、動作チェーンが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に維持される。
動作チェーンの実行が終了すると、Y1、Y2およびY3の値が決定(「合併」または「合理化」とも呼ばれる)される。一実施形態によれば、最後の動作チェーンの値が保存される。例えば、第3の動作チェーンが最後に終了した場合、Y3の値をYに割り当てる。通常、Y1、Y2およびY3の値は、これ以上状態Yに使用されないため、重要ではない。
「変更」(mutation)および「変化」(change)という用語は、互換的に使用することができる。例えば、状態の変更は、状態の変化を意味する。より具体的には、変数Yの値を3から4に変化することは、変数Yを変更または変化することの一例である。
隔離141~143およびプライベートビューY1、Y2、Y3がない場合、1つの動作チェーン、例えば動作チェーン110の明示的なコンピュータ実行可能命令がYの値を4に変更するときに、他の動作チェーン、例えば動作チェーン120、130も、Yにアクセスして4という値を取得する。したがって、プライベートビューを実装する隔離141~143がない場合、1つの動作チェーンの操作は、予期しない方法で他の動作チェーンに影響を与える。問題をさらに複雑にすると、異なる開発者が異なる動作チェーンを作成する場合がある。したがって、各々の開発者は、グローバルビューを介して、他の動作チェーンによって実行されている操作を知ることができない。
簡略化のために、図1に示す動作チェーンは、同時に開始および終了するように見えるが、殆どの場合、これらの動作チェーンの開始時刻が異なり、実行時間も異なる。
一実施形態は、実行対象のデータ空間または実行環境の一部または全ての「スナップショット」を取得する(すなわち、状態を保存する)。ウェブアプリケーションに関連する実施形態において、実行対象は、「動作チェーン」と呼ばれ、順次、分岐、条件付きまたは他の命令実行シーケンスなどの論理的な流れを伴う一連のプログラム動作である。動作チェーンは、ユーザインターフェイス(UI)コントロール、ブラウザタブ、ブラウザページ、または他の必要なアイテム、オブジェクトまたはイベントに関連付けることができる。
一実施形態において、「延期型状態変更」は、グローバル変数Yを変更する開発者指定コンピュータ実行可能命令、例えばY=Y+1を、ローカル変数Y1を変更するツール生成コンピュータ実行可能命令、例えばY1=Y1+1に自動的に変更する手法である。したがって、グローバル変数の変更は、グローバル変数を変更する動作チェーン110、120、130が170で実行を終了するまで延期される。これによって、動作チェーンが
グローバル変数を更新するときの競合が防止される。開発者指定コンピュータ実行可能命令は、本明細書において「明示的なコンピュータ実行可能命令」とも呼ばれ、ツール生成コンピュータ実行可能命令は、本明細書において「暗黙的なコンピュータ実行可能命令」とも呼ばれる。一実施形態によれば、開発者指定命令およびツール生成命令は、非一時的なプロセッサ可読記憶装置に記憶された非一時的なコンピュータ可読命令である。
一実施形態において、動作チェーンを実行する前に、共有データ(すなわち、グローバル変数)が他の動作チェーンによって変更または使用されるか否かを判断する。共有データが他の動作チェーンによって変更または使用された場合、変更された共有データを保存する。共有データを変更または使用する他の動作チェーンのスナップショットを取得する。競合を引き起こす可能性のある動作チェーンの実行が終了した後、共有データの更新に実際に使用される競合値を判断する。この判断は、最初の値の変更または最後の値の変更という単純な基準で行われる。代わりに、他の基準を使用してもよい。好ましい実施形態において、競合の解決は、環境コードまたは命令によって対処される。環境コードは、実行の制御を提供する。これによって、開発環境によって作成された暗黙的な命令は、未熟練人間開発者によって指定された明示的な命令に置換する。環境コードが未熟練人間開発者により指定したコードの実行を制御するため、未熟練人間開発者は、クライアントアプリケーションの対応部分を書くときに、データの競合を心配する必要がない。本明細書に記載されたように、環境コードを用いて、170で、ローカル変数Y1、Y2、Y3の値を対応するグローバル変数Yに合併することができる。
図2は、一実施形態に従って、システム100を示すブロック図である。
システム200は、設計時ビジュアル開発ツール210、クライアントアプリケーション250、サーバアプリケーション230、240、およびネットワーク220を含む。ツール210、クライアントアプリケーション250、およびサーバアプリケーション230、240は、ネットワーク230を介して通信する。一実施形態によれば、クライアントアプリケーション250は、ツール210によって実行される。
ツール210は、未熟練開発者が動作チェーン251を作成するために使用できるユーザインターフェイス(UI)211を提供する。図1に示された動作チェーン110、120、130は、図2に示された動作チェーン251の例である。クライアントアプリケーション251は、ユーザインターフェイス211で作成された動作チェーン251によって実装されたユーザインターフェイス252を含む。ユーザインターフェイス211、252のウェブページは、ツール210およびクライアントアプリケーション250を実行するまたはそれらと通信する各々のコンピュータシステムに実行されているブラウザを介して表示することができる。動作チェーン251のコンピュータ命令は、1つ以上のサーバアプリケーション230、240から情報を要求および取得することができる。
動作チェーン251は、イベントに応答して実行される。一実施形態によれば、動作チェーンの実行を開始させるイベントは、ユーザがユーザインターフェイス252からユーザインターフェイスコントロールを選択した直接的または間接的な結果である。ユーザインターフェイスコントロールの例は、ボタン、タブ、データ入力フィールド、ラジオボタン、選択可能なリスト内のアイテムを含む。イベントの例は、ユーザがクライアントアプリケーションのユーザインターフェイスのユーザインターフェイスコントロールを選択したことの検出を含む。ユーザインターフェイスコントロールの選択に応答して発生するイベントの他の例は、データを要求したこと、データを受信したこと、操作の開始または完了、または操作の開始または完了を示すフェーズの検出を含む。イベントは、当技術分野でよく知られている。
さらに、動作チェーンを引き起こすイベントが、ユーザによるユーザインターフェイスコントロールの選択に応答してトリガーされるため、クライアントアプリケーション250および動作チェーンの命令は、動作チェーンを開始するタイミングを制御しない。
動作チェーンがイベント駆動型であるため、動作の直接的および間接的な結果の境界を明確に定義することができる。より具体的には、直接または間接的にイベントを処理するクライアントコンピュータ実行可能命令(「イベントハンドラ」とも呼ばれる)中の命令の境界は、決定可能である。開発者は、イベントハンドラをサブスクライブするコード(「サブスクライバー」とも呼ばれる)を作成することができる。動作の結果の境界が決定可能であり既知であるため、イベントチェーンによって直接的または間接的に使用されるグローバル変数を決定することもできる。
本明細書に記載されたように、境界およびプライベートビューは、イベントチェーン間の隔離を提供する。図1において、隔離141~143は、イベントチェーン110、120、130の間の線として示されている。
動作チェーンの実行を開始するイベントは、ユーザによるユーザインターフェイスコントロールの選択によって直接的または間接的にトリガーされるため、動作チェーンの実行を開始するタイミングを予測することは不可能である。
様々な実施形態は、クラウド機能を提供する。例えば、開発者は、ツール210を使用して、クラウド上でクライアントアプリケーション250を作成することができる。より具体的には、クライアントアプリケーション250、サーバアプリケーション230、240、およびツール210は、ネットワーク220を介して通信するウェブアプリケーションである。
図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を変更するための明示的なコンピュータ実行可能命令を置換することができる。
同様に、X1、X2およびX3は、各々の動作チェーンのプライベートビューをグローバル変数Xに提供する。Z1およびZ2は、各々の動作チェーンのプライベートビューをグローバル変数Zに提供する。
説明のために、図3は、3つのスナップショットに対して、3組の変数X、Y、Zを示している。X、Y、Zがクライアントアプリケーションのグローバル変数であるため、各組のXは、同様の変数であり、各組のYは、同様の変数であり、各組のZは、同様の変数である。
スナップショットおよび関連するラッパーは、ネストすることができる。例えば、第1の動作チェーンが別の動作チェーンを開始する場合、2つのスナップショットが取得される。第1のスナップショットは、親動作チェーンのスナップショットであり、第2のスナップショットは、子動作チェーンのスナップショットである。第2のスナップショットは、第1のスナップショットにネストされる。一例として、動作チェーンが2つの他の動作チェーンを開始する場合、3つのスナップショットが取得される。
動作チェーンは、クライアントアプリケーションの開発者が指定した明示的なコンピュータ実行可能命令を介して、グローバル変数X、YおよびZを読み書きすることができ、これらの操作を適切なプライベートビューにリダイレクトすることによって、適切な暗黙的なコンピュータ命令の実行を用いて、これらの明示的なコンピュータ命令の実行を置換することができる。例えば、ラッパーを作成し、ローカル保存されたプライベートビューY1を取得し、Yの値にY1を割り当て、Y1=Y1+1にすることによって、暗黙的なコンピュータ命令を用いて、明示的なコンピュータ実行可能命令Y=Y+1を置換することができる。
一実施形態によれば、変更される変数のみのスナップショットは、取得されるが、読み取り専用の変数のスナップショットは、取得されない。
一実施形態によれば、グローバル変数のプライベートビューは、グローバル変数が変更される直前に作成される。
一実施形態によれば、グローバル変数をラッパーにコピーすることによって、プライベートビューを作成する。変数の変更を追跡することによって、変更された変数の状態を判断することができる。プライベートビューは、対応するグローバル変数が読み取られるまでまたは別のプロセスによって変更されるまで、詳細に作成することができる。
図2を参照して、ツール210は、ビジュアルアプリケーション構築機能を提供することができ、開発者またはチームは、クラウドを介してビジュアルアプリケーション構築機能を用いて、クライアントアプリケーション250の一部を実装する動作チェーン251を構築することができる。ビジュアルビルダークラウドサービス(VBCS)を変更して、本明細書の実施形態に記載された様々なビジュアルアプリケーション構築機能を提供する。
ツール210のユーザインターフェイス211は、設計時に、クライアントアプリケーション250を構築するためのコンピュータ実行可能命令を生成する。本明細書に記載されたように、ツールのユーザインターフェイスにより、未熟練人間開発者は、クライアントアプリケーションのために、延期型状態変更機能を備えた動作チェーンを作成することができる。開発者は、延期型状態変更機能を備えた動作チェーン251を作成するように、ツール210に指示するオプションを選択することができる。代替的には、ツール210は、ツール210を使用して動作チェーン251を作成したことに応答して、延期型状態変更機能を提供するコンピュータ実行可能命令を自動的に作成することができる。
一例において、開発者は、ツールのUI211を用いて、クライアントアプリケーションのユーザインターフェイス252のページをカスタマイズまたは作成することができる。一例として、ボタンを作成した。図4は、一実施形態に従って、UI252の一部であるボタンの動作チェーンを作成するためのページ400を示している。「私の動作チェーンの開始」タブ480を選択することによって、ページ400を表示することができる。記述セクションを追加することができる。UI211のページ400は、左側において、動作チェーン440に追加できる動作のパレット410を含む。ページ400の中央セクション420は、動作チェーン440の1つ以上の動作シーケンスを表す流れ図を示している。菱形441は、動作チェーン440を実行するときに選択できる複数の代替経路を決定するための「IF」命令文または分岐条件を表す。
図4に示すように、パレット410は、「全般」、「ロジック」および「ナビゲーション」として標記された3つのセクション450、460、470を有する。各セクション450、460、470は、動作チェーン440を作成するために、中央セクション420にドラッグしてドロップすることができる動作を表すアイコンを含む。
全般セクション450は、3行のアイコンを有する。全般セクションの第1行の第1アイコン451は、変数の割り当てを表す。例えば、このアイコン451を使って、変数を異なる値に設定することできる。第1行の第2アイコン452は、動作チェーンの呼び出しを表す。開発者は、このアイコンを使って、当該動作から別の動作チェーンを呼び出すことができる。第1行の第3アイコン453は、コンポーネントメソッドの呼び出しを表す。開発者は、このアイコンを使って、UI252のために作成されるページ上で呼び出されるUIコンポーネント、例えばボタンを決定することができる。
全般セクションの第2行は、3つのアイコンを含む。第2行の第1アイコン454は、「モジュール関数の呼び出し」アイコンである。開発者は、このアイコンを使って、UI252のために作成されるページのJavaScriptで独自の関数を定義することができる。開発者は、「モジュール関数の呼び出し」アイコンを使って、これらの関数を呼び出すコードを作成することができる。第2行の第2アイコン455は、「RESTエンドポイントの呼び出し」アイコンである。開発者は、このアイコンを使って、データを更新するまたはデータを要求するためのRESTエンドポイントを呼び出すコードを作成することができる。
全般セクション450の第3行は、2つのアイコンを含む。第3行の第1アイコン457は、「始動通知」アイコンである。このアイコンを使って、動作チェーンが実装に使用されているメッセージをページに表示することができる。第3行の第2アイコン458は、「変数のリセット」アイコンである。このアイコンを使って、状態の値をデフォルト値にリセットすることができる。
ロジックセクション460は、3つのアイコン461~463を含む。このセクションを使って、動作チェーンにロジックフローを作成することができる。ロジックセクションの第1アイコン461は、「IF」条件付き動作を表す。ロジックセクションの第2アイコン462は、スイッチを表す。ロジックセクションの第3アイコン463は、リターンを表す。第3アイコン463は、動作チェーンの終了時に使用され、特定の結果または値を返すことができる。第3アイコン463は、1つの動作チェーンから別の動作チェーンを呼び出すときに有用である。
ナビゲーションセクション470は、3つのアイコン471~473を含む。開発者は、ナビゲーションセクションの第1アイコン471を使って、過去ページにナビゲートするコードを作成することができる。この場合、過去ページは、クライアントコンピュータ250のブラウザ履歴における過去のページである。開発者は、ナビゲーションセクションの第2アイコン472を使って、実行時にクライアントアプリケーション250のページにナビゲートするコードを作成することができる。例えば、アイコン472を使って、クライアントアプリケーションのUI252の経費報告ページからクライアントアプリケーションのUI252の従業員ページにナビゲートするコンピュータ実行可能なコードを作成することができる。開発者は、ナビゲーションセクションの第3アイコン473を使って、現在実行中のクライアントアプリケーション250に存在しないURLにナビゲートするコードを作成することができる。
図5は、一実施形態に従って、開発者が動作チェーンに必要な入力パラメータをマッピングするために使用できるウェブページ500を示す。例えば、開発者は、図5において、「私の動作チェーン」502の下方に示される「入力パラメータ」501をクリックして、入力パラメータをマッピングすることができる。
ページ500を参照して、動作チェーンは、動作チェーンIDフィールド503で指定され得る識別子(ID)を有する。
図6は、一実施形態に従って、未熟練開発者がUIコンポーネントをコンポーネントイベントに関連付けるために使用できるウェブページ600を示している。例えば、開発者は、左側のパレット610からUIコンポーネントを中央の区画620にドラッグすることができる。この例において、ドラッグされたUIコンポーネントは、ボタン621である。
図7は、一実施形態に従って、イベントリスト710を含むウェブページ700を示す。開発者がページ600に示されている動作タブ630を選択すると、図7に示されたようにイベントリスト710が表示される。開発者は、図7に表示されているイベントから1つのイベントを選択して、中央の区画620に表示されているUIコンポーネント、例えばボタン621に関連付けることができる。
また、開発者は、UIコンポーネントの表現、例えばボタン621をクリックして、当該UIコンポーネントの属性を表示することができる。
開発者が図6のページ600の動作タブ730をクリックすると、それに応答して図7に示されているイベントリスト710が表示される。開発者は、表示されたリスト710から1つのイベントを選択して、UIコンポーネントに関連付けることができる。図示において、このUIコンポーネントは、開発者が以前にウェブページ600(図6)から選択したボタン621である。
イベントリスト710は、例えば、要素上で非主要ポインティング装置のボタンを押して離すときに発生する「クリック解除」イベント、要素にキーボードが集中しないときに発生する「ボケ」イベント、要素上で主要ポインティング装置のボタンを押して離すときに発生する「クリック」イベント、要素に関連するコンテキストメニューが呼び出されたときに発生する「コンテキストメニュー」イベント、要素上でポインティング装置のボタンを2回にクリックしときに発生する「ダブルクリック」(dbclick)イベント、要素またはテキスト選択を継続的にドラッグしている間に発生する「ドラッグ」イベント、(ポインティングボタンを離すことまたはドラッグ操作をキャンセルしたことによって)要素またはテキスト選択のドラッグが終了したときに発生する「ドラッグ終了」イベント、およびドラッグされた要素またはテキスト選択を有効なドロップターゲット上に移動したときに発生する「ドラッグ確定」イベントなどを含む。
図2を参照して、ツールのユーザインターフェイス211は、クライアントアプリケーション250のユーザインターフェイス252のボタンを作成すると図示されているが、実施形態は、ドロップダウンメニュー、タブ、メニュー、ラジオボタン、リストなどの他の種類のユーザインターフェイスのコントロールによく適している。本明細書に記載されたように、ユーザがユーザインターフェイスのコントロールと対話することによって、動作チェーンを直接にまたは間接にトリガーすることができる。
例示的な方法
図8は、一実施形態に従って、延期型状態変更を提供するための方法800を示すフローチャートである。
方法は、ステップ810から開始する。
一実施形態によれば、開発者は、図2に示されたツールのユーザインターフェイス211を介して、延期型状態変更を有効にするか否かを選択することができる。別の実施形態によれば、延期型状態変更は、開発者が指定する必要がなく、自動的に提供される。
ステップ820において、図1および2に示されたクライアントアプリケーション250の一部を実装する動作チェーン110、120、130、251を定義する情報を受信する。本明細書に記載されたように、動作チェーンを定義する情報は、設計時に受信される。例えば、本明細書に記載されたように、ツール210のユーザインターフェイス211(図2)のウェブページ400(図4)に示されたアイコンをドラッグおよびドロップして、動作チェーン440(図4)の1つ以上の動作のシーケンスを表す流れ図を作成することができる。
受信した情報は、各動作チェーンに関連付けられたグローバル状態(「グローバル変数」とも呼ばれる)を変更するための明示的なコンピュータ実行可能命令を含む。明示的なコンピュータ実行可能命令の例として、Y=Y+1を挙げることができる。式中、Yは、グローバル変数である。開発者は、明示的なコンピュータ命令「Y=Y+1」を入力することによって、明示的なコンピュータ実行命令を指定でき、または他のメカニズムを用いて、例えばビジュアル表現および矢印をドラッグおよびドロップして、ビジュアル表現を連結することによってまたはテキストを入力することによって、明示的なコンピュータ命令に相当するロジックを指定することができる。
ツールのユーザインターフェイス211(図2)のウェブページ400~700(図4~7)は、本明細書に記載されたように、未熟練開発者が作成しているユーザインターフェイス252(図2)に延期型状態変更機能を与えることを可能にする他の特徴を提供する。
ステップ830において、各動作チェーンに対して、各動作チェーンのグローバル状態のプライベートビューを作成するためのコンピュータ実行可能命令を自動的に生成する。例えば、図1~3を参照して、グローバル変数Y、X、Zの各々のプライベートビューY1~Y3、X1~X3、Z1およびZ2を作成するためのコンピュータ実行可能命令が生成される。プライベートビューを作成するためのコンピュータ実行可能命令の例は、ラッパー301、302、303である。ラッパーがクライアントアプリケーション250の実行時に作成されるが、クライアントアプリケーションのユーザインターフェイス252のラッパーを作成する命令は、ツール210の一部であってもよく、設計時にツール210によって生成されてもよく、またはクライアントアプリケーション250の実行時にツール210からの指示に基づいて生成されてもよい。
ステップ840において、各々の明示的なコンピュータ実行可能命令に各々の暗黙的なコンピュータ実行可能命令を自動的に関連付ける。暗黙的なコンピュータ実行可能命令は、クライアントアプリケーションの実行時に、対応する明示的なコンピュータ実行可能命令の代わりに実行される。暗黙的なコンピュータ実行可能命令は、設計時に生成され、対応する明示的なコンピュータ実行可能命令に関連付けられる。暗黙的なコンピュータ実行可能命令は、クライアントアプリケーション250(図2)の開発者によって指定された明示的なコンピュータ実行可能命令を置換するコンピュータ実行可能命令である。暗黙的なコンピュータ実行可能命令は、設計時ツール210(図2)によって提供されるロジック(「自動コンピュータ実行可能命令作成」とも呼ばれる)によって作成することができる。このロジックは、設計時または実行時に実行することができる。このロジックは、設計時ツール210(図2)、クライアントアプリケーション250(図2)、または設計時ツール210(図2)およびクライアントアプリケーション250(図2)によって利用されるライブラリに常駐することができる。
仮定として、ツールの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に置換される。別の実施形態において、明示的なコンピュータ実行可能命令は、ランタイム実行時に検出され、実行は、暗黙的なコンピュータ実行可能命令にリダイレクトされる。
さらに別の実施形態において、暗黙的なコンピュータ実行可能命令は、明示的なコンピュータ命令をテンプレートとして使用し、グローバル変数をローカル変数に置換することによって作成される。例えば、Y=Y+1の各グローバル変数Yは、ローカル変数Y1に置換される。さらに、明示的なコンピュータ実行可能命令を解析して、グローバル変数を特定することができる。グローバル変数は、ラッパーに入れることができ、対応するプライベートビューを決定することができる。その後、グローバル変数の代わりにプライベートビューにアクセスすることができる。次に、暗黙的なコンピュータ実行可能命令は、クライアントアプリケーション250の実行時に、対応する明示的なコンピュータ実行可能命令の代わりに実行される。
方法は、ステップ850で終了する。
一実施形態は、実行時に、対応する明示的なコンピュータ実行可能命令の代わりに、暗黙的なコンピュータ実行可能命令を実行するようにクライアントアプリケーションを構成する。例えば、図2を参照して、本明細書に記載されたように、ツール210は、明示的なコンピュータ実行可能命令の代わりに、暗黙的なコンピュータ実行可能命令を実行するようにクライアントアプリケーション250を構成する。
一実施形態は、ユーザ要求を特定する信号に応答して、少なくとも1つの明示的なコンピュータ実行可能命令を表示し、少なくとも1つの明示的なコンピュータ実行可能命令に対応する暗黙的なコンピュータ実行可能命令を表示しない。
一実施形態は、クライアントアプリケーションの実行時に、クライアントアプリケーションと通信するクライアント装置のブラウザに、クライアントアプリケーションのウェブページを表示し、ウェブページに示されたユーザインターフェイスコントロールのユーザ選択の検出に応答してイベントを生成し、イベントに応答して、動作チェーンのうち特定の動作チェーンを開始する。例えば、図2および10を参照して、アプリケーションサーバ1020上で動作するクライアントアプリケーション250のユーザインターフェイス252のウェブページは、クライアントアプリケーション250と通信するクライアント装置1085、1070、1070、1090のブラウザに表示される。イベントは、ユーザインターフェイス252のウェブページに示されたユーザインターフェイスコントロールのユーザ選択の検出に応答して生成される。このイベントに応答して、動作チェーン251内の特定の動作チェーンは、開始される。
一実施形態は、特定の動作チェーンの開始に応答して、特定の動作のグローバル変数のスナップショットを作成し、スナップショットは、特定の動作チェーンのローカル変数を含み、グローバル変数の値をローカル変数に割り当てる。各ローカル変数には、各グローバル変数の値が割り当てられる。図3のスナップショットおよびラッパーの例示を参照して、ローカル変数は、X1-X3、Y1-Y3、Z1およびZ3であり、グローバル変数は、X、Y、およびZである。
一実施形態は、グ各グローバル変数と各ローカル変数との間の関連付けを有するラッパーを作成し、関連付けに基づいて、グローバル変数の値をローカル変数に割り当てる。図3は、グローバル変数およびローカル変数を有するラッパー301~303を示し、特定のラッパーに対して、グローバル変数X、Y、Zとローカル変数とは、1対1で対応している。より具体的には、ラッパー301の場合、グローバル変数Xは、ローカル変数X1のみにマッピングされ、グローバル変数Yは、ローカル変数Y1のみにマッピングされ、グローバル変数Zは、Z1のみにマッピングされる。したがって、動作チェーンの実行中の任意の時点で、グローバル変数は、当該動作チェーンの1つのローカル変数のみにマッピングされる。
一実施形態は、動作チェーンの実行時に、対応するグローバル変数の代わりに、ローカル変数を変更する。例えば、図1を参照して、動作チェーン110の実行時に、対応するグローバル変数Yの代わりに、ローカル変数Y1が変更される。同様に、動作チェーン120の実行時に、対応するグローバル変数Yの代わりに、ローカル変数Y2が変更される。
一実施形態は、各動作チェーンおよび対応するローカル変数を各々の区画に隔離する。各動作チェーンは、個別の区画に隔離される。例えば、図1は、各々の動作チェーン110、120、130および対応するローカル変数Y1、Y2、Y3を隔離する区画141~143を示している。
一実施形態は、受信、自動生成、および自動関連付けを実行した設計時ツールを用いて、クライアントアプリケーションを実行する。例えば、図2および8を参照して、設計時ツール210は、図8に示された受信820、自動生成830、および自動関連付け840を実行することができる。
一実施形態は、クライアントブラウザアプリケーションの一部を実装する複数の並列動作チェーン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)。
一実施形態は、スマートラッパーを用いて、明示的なコンピュータ実行可能命令のグローバル変数が書き込まれているときにローカル変数を作成し、グローバル変数が読み取られているときにローカル変数を作成しない。例えば、図3を参照して、未熟練人間開発者が明示的なコンピュータ実行可能命令を指定して、動作132でグローバル変数Yの値を変更するときに、動作132に関連付けられたスマートラッパー303bは、ローカル変数Y3を作成する。動作131が対応するグローバル変数Yに値を割り当てないため、ラッパー303aは、ローカル変数Y3を作成しない。
例示的なシステム
図9は、一実施形態に従って、システム900を示す。
ページライフサイクルマネージャ901は、ユーザが現在閲覧しているアプリケーションUIに応じて、状態の一部を初期化および破棄する。状態を破棄する場合、状態を永続性ストア(構成にあった場合)に保存することができ、状態を復元する場合、永続性ストア(persistence store)から状態をロードすることができる。
永続性ストア902は、ユーザによるアプリケーションの呼び出しの間にアプリケーションの状態を(ディスク上に)保存する場所である。
状態903は、アプリケーション(変数)によって利用されるアクティブ状態を提供する。
コンポーネント904は、ユーザによって利用されるボタン、テキスト、画像などを含むUIを提供する。
動作チェーン905は、アプリケーション(プロセス)を駆動するコアロジックのフローを提供する。
RESTサービス906は、外部のREST APIを提供する。
コンピュータ/装置907は、UIを制御するブラウザまたは装置を提供する。
以下、システム900に含まれるエンティティ901~907に関連する操作911~921の流れを説明する。
操作911:永続性ストアは、ユーザがアプリケーションをアクティブに使用しているときの状態を初期化して、保存する。
操作912:状態の変更をコンポーネントに反映させる。例えば、一部の状態に関連付けられたテキストフィールド。
操作913:コンポーネントは、状態の変更をトリガーする。例えば、テキスト入力は、状態を直接に更新する。
操作914:ユーザは、自分の装置907からUIと対話する。
操作915:動作チェーンは、例えば、マップをズームするようにUI上でメソッドを呼び出すことができる。
操作916:UIは、ロジック(例えば、ボタンのクリック)を実行するように、動作チェーンを始動させることができる。
操作917:動作チェーンを用いて、RESTサービスを呼び出し、これらのサービスを介してデータをシステムに書き込むまたはシステムからデータを読み取る。
操作918:ユーザがアプリケーションおよび表示された異なるUIをにナビゲートするときに、ページライフサイクルマネージャは、状態を初期化して破棄する。
操作919:ページライフサイクルマネージャは、ナビゲーションに応答して動作チェーンを実行することができる。例えば、装置907と対話しているユーザは、ページを開始させることができ、これに応じて動作チェーンを実行することができる。
操作920:動作チェーンは、ナビゲーション、例えば、UIの様々な部分のアクティブ化を引き起こすことができる。
操作921:動作チェーン905は、状態903と通信する。
一実施形態によれば、システム900によって作成されたユーザインターフェイスは、クライアントコンピュータ/装置907のブラウザに実行することができる。作成されたユーザインターフェイスを実行するクライアントコンピュータ/装置は、当該ユーザインターフェイスを作成するときに使用されたクライアントコンピュータ/装置907と同様であってもよく、異なってもよい。作成されたユーザインターフェイスは、複数のクライアントコンピュータ/装置上で異なるタイミングで実行されてもよく、同時に実行されてもよい。
本明細書に記載されたように、設計時ツールを使って、ユーザインターフェイスを作成する。一実施形態によれば、JSONファイルは、ユーザインターフェイスの一部として作成される。作成されたJSONファイルは、よく知られた通信方法を介してクライアントコンピュータ/装置のブラウザに転送され、ランタイム実行によって解釈される。
延期型状態変更に関して、一実施形態によれば、実行の流れは、以下の通りである。(通常、916によって)動作チェーンを呼び出す。動作チェーンは、921を介して状態をコピーする。動作チェーンが完了すると、921によって状態を合併する。
例示的なコンピュータ環境
図10は、本明細書の図面に示された実施形態を実施するために使用可能なシステム1000および関連するコンピューティング環境を示す概略ブロック図である。例示的なシステム1000は、図9を参照して説明した様々なハードウェアおよび/またはソフトウェアモジュールおよび関連する方法をサポートまたは実行することができる。なお、特定の実施形態は、1つ以上の(例えば、ユーザ装置に常駐する)スタンドアロンアプリケーションおよび/またはクライアント側コードとサーバ側コードの組み合わせを用いて実現された1つ以上のウェブベースアプリケーションを用いて、実装することができる。
汎用システム1000は、ユーザ装置1060~1090、具体的には、デスクトップコンピュータ1060、ノートブックコンピュータ1070、スマートフォン1080、モバイルフォン1085、およびタブレット1090を含む。汎用システム1000は、任意の種類のユーザ装置、例えば、シンクライアントコンピュータ、インターネット対応のモバイルフォン、インターネット接続モバイル装置、タブレット、電子書籍、またはウェブページ、他の種類の電子ドキュメントおよびUIを表示および閲覧できるおよび/またはアプリケーションを実行できるPDAとインターフェイスで接続することができる。図示では、システム1000は、5つのユーザ装置をサポートしているが、任意の数のユーザ装置をサポートすることができる。
ウェブサーバ1010は、ウェブブラウザおよびスタンドアロンアプリケーションから、ウェブページ、電子文書、企業データまたは他のコンテンツ、およびユーザコンピュータからの他のデータを要求するリクエストを処理するために使用される。また、ウェブサーバ1010は、企業の運用に関連するデータのプッシュデータまたはシンジケートコンテンツ、例えばRSSフィードを提供することができる。
アプリケーションサーバ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)、およびテンプレート言語およびパーサを含む他のウェブ技術を使用して作成することができる。
アプリケーションサーバ1020上で動作するデータアプリケーションは、入力データおよびユーザコンピュータ要求を処理するように構成され、データ記憶装置またはデータベース1030からのデータを格納または取得することができる。データベース1030は、データアプリケーションによって作成および使用されるデータを格納する。一実施形態において、データベース1030は、SQLフォーマットコマンドまたは他のデータベースクエリ言語に応答して、データを格納、更新および取得するように構成された関係型データベースを含む。他の実施形態は、非構造化データ記憶アーキテクチャおよびNoSQL(Not Only SQL)データベースを使用することができる。
一実施形態において、アプリケーションサーバ1020は、プログラムまたはスクリプトを実行することができる1つ以上の汎用コンピュータを含む。一実施形態において、ウェブサーバ1010は、1つ以上の汎用コンピュータ上で動作するアプリケーションとして実装される。ウェブサーバ1010およびアプリケーションサーバ1020は、合併されてもよく、同一のコンピュータ上で実行されてもよい。
電子通信ネットワーク1040および1050は、ユーザコンピュータ1060~1090、ウェブサーバ1010、アプリケーションサーバ1020、およびデータベース1030の間の通信を可能にする。一実施形態において、ネットワーク1040および1050は、任意の電気通信装置または光通信装置、例えば有線ネットワーク1040および無線ネットワーク1050を含む。ネットワーク1040および1050は、イーサネット(登録商標)ネットワークなどの1つ以上のローカルエリアネットワーク、インターネットなどのワイドエリアネットワーク、セルラーキャリアデータネットワーク、仮想プライベートネットワークなどの仮想ネットワークを含むことができる。
システム1000は、本発明の実施形態に従って、アプリケーションを実行するための一例である。別の実施形態において、ウェブサーバ1010、アプリケーションサーバ1020、および必要に応じてデータベース1030を単一のサーバコンピュータアプリケーションおよびシステムに組み合わせることができる。さらなる実施形態において、仮想化および仮想マシンアプリケーションを用いて、ウェブサーバ1010、アプリケーションサーバ1020およびデータベース1030のうち1つ以上を実装することができる。
さらに別の実施形態において、ウェブおよびアプリケーションの機能の全部または一部は、各々のユーザコンピュータ上で動作するアプリケーションに統合することができる。例えば、ユーザコンピュータ上のJavaScriptアプリケーションを用いて、データを取得または分析し、アプリケーションの一部を表示することができる。
特定の例示的な実施形態において、ユーザコンピューティング装置1060~1090は、例えば、ユーザインターフェイスを表示するために使用されるブラウザを実行する。例えば、図10に示されたデスクトップコンピュータ1060、ノートブックコンピュータ1070、スマートフォン1080、モバイルフォン1085およびタブレット1090などのクライアントコンピューティング装置および/または他のコンピューティング装置から、ユーザインターフェイスを見ることができる。
特定の例示的な実施形態において、図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との間に通信することができる。
図2のネットワーク220は、無線ネットワーク1050または有線ネットワーク1040またはその両方の一部を含むことができる。図2のクライアントアプリケーション250は、アプリケーションサーバ1020上に常駐し、ユーザコンピューティング装置1060~1090からアクセスすることができる。ツール210およびサーバアプリケーション230、240は、サーバ1010または1020上に常駐することができる。ツールのユーザインターフェイス211およびクライアントアプリケーションのユーザインターフェイス252は、ユーザコンピューティング装置1060~1090上に表示されてもよい。ユーザインターフェイス211、252は、ユーザコンピューティング装置1060~1090上で動作するブラウザと共に表示されてもよい。
一実施形態によれば、クライアントアプリケーション250は、ツール210によって実行される。この場合、クライアントアプリケーション250は、ツール210に常駐することができ、またはツール210によってアクセスされるメモリに常駐することができる。クライアントアプリケーション250は、1つ以上のユーザコンピューティング装置1060~1090からアクセスされてもよく、ユーザインターフェイス252のページは、対応するユーザコンピューティング装置1360~1390のブラウザ上に表示されてもよい。
図11は、本明細書に記載された実施形態を実施するために使用可能なコンピューティングシステム1100を示す概略ブロック図である。図11のコンピューティングシステム1100は、本明細書に記載された実施形態の1つ以上のステップを実行するとして説明されているが、他の実施形態において、コンピューティング装置1100の任意の適切なコンポーネントもしくはコンポーネントの組み合わせまたはシステム1100に関連する任意の適切なプロセッサもしくプロセッサの組み合わせは、ステップの実行を促進することができる。
図11は、本明細書に記載された実施形態に使用され得る例示的なコンピューティングシステム1100のブロック図を示す。例えば、コンピューティングシステム1100を用いて、図10のユーザ装置1060~1090、およびサーバ装置1010、1020を実装することができ、本明細書に記載された方法を実施することができる。いくつかの実装形態において、コンピューティングシステム1100は、プロセッサ1102、オペレーティングシステム1104、メモリ1106、および入出力(I/O)インターフェイス1108を含むことができる。様々な実装形態において、プロセッサ1102を用いて、本明細書に記載された様々な機能および特徴を実現することができ、本明細書に記載された方法を実施することができる。プロセッサ1102は、本明細書に記載された方法を実施すると説明されているが、システム1100の任意の適切なコンポーネントもしくはコンポーネントの組み合わせまたはシステム1100に関連する任意の適切なプロセッサもしくプロセッサの組み合わせまたは任意の適切なシステムは、本明細書に記載された方法を実施することができる。本明細書に記載された方法は、ユーザ装置、サーバ、または両方の組み合わせ上で実施されてもよい。
また、コンピューティング装置1100は、メモリ1106または任意の他の適切な記憶装置もしくはコンピュータ可読媒体に記憶され得るソフトウェアアプリケーション1110を含む。ソフトウェアアプリケーション1110は、プロセッサ1102に、本明細書に記載された機能および他の機能を実行させる命令を提供する。コンピューティングシステム1100のコンポーネントは、1つ以上のプロセッサまたはハードウェア装置の任意の組み合わせ、およびハードウェア、ソフトウェア、ファームウェアなどの任意の組み合わせによって実装されてもよい。
図示を簡単にするために、図11は、ハードウェアプロセッサ1102、オペレーティングシステム1104、ハードウェアメモリ1106、I/Oインターフェイス1108、およびソフトウェアアプリケーション1110の各々を1つのブロックとして示している。これらのブロック1102、1104、1106、1108および1110は、複数のプロセッサ、複数のオペレーティングシステム、複数のメモリ、複数のI/Oインターフェイス、および複数のソフトウェアアプリケーションを表すことができる。様々な実装形態において、コンピューティングシステム1100は、図示された全てのコンポーネントを含まなくてもよく、および/または図示されたコンポーネントの代わりにまたは追加的に他のコンポーネントを含んでもよい。
コンピュータ可読媒体および装置
特に明記しない限り、本明細書に記載された1つ以上の実施形態は、例えば、コンピュータシステムまたは類似する装置の非一時的なプロセッサ可読記憶装置に常駐するプロセッサ可読命令を用いて実施することができる。非一時的なプロセッサ可読記憶装置は、命令を格納することができる任意の物理メモリであってもよい。非一時的なプロセッサ可読記憶装置の例は、ディスク、コンパクトディスク(CD)、デジタル多用途装置(DVD)、読み取り専用メモリ(ROM)、フラッシュなどを含むがこれらに限定されない。上述したように、本発明の様々な実施形態のプロセスおよび動作の一部は、一実施形態において、コンピュータシステムの非一時的なプロセッサ可読記憶装置に常駐する一連のプロセッサ可読命令(例えば、ソフトウェアプログラム)として実現され、コンピュータシステムの1つ以上のプロセッサによって実行される。実行されると、命令は、コンピュータシステムに本発明の様々な実施形態の機能を実施させる。例えば、プロセッサは、命令を実行することができる。プロセッサは、コンピュータシステムに関連する中央処理装置などのハードウェアプロセッサである。非一時的なプロセッサ可読記憶装置は、ハードウェアメモリであり、1つ以上のプロセッサは、ハードウェアプロセッサである。一実施形態によれば、非一時的なプロセッサ可読記憶装置は、有形の物理装置である。
一実施形態は、延期型状態変更を提供するための設計時ツールを提供する。設計時ツールは、1つ以上のプロセッサと、命令を含む非一時的なプロセッサ可読記憶装置とを備える。これらの命令は、クライアントアプリケーションの一部を実装する動作チェーンを定義する情報を受信するための命令を含み、受信した情報は、各動作チェーンに関連付けられたグローバル状態を変更するための明示的なコンピュータ実行可能命令を含み、各動作チェーンに対して、各動作チェーンのグローバル状態のプライベートビューを作成するためのコンピュータ実行可能命令を自動的に生成するための命令と、各々の明示的なコンピュータ実行可能命令に各々の暗黙的なコンピュータ実行可能命令を自動的に関連付けるための命令とを含み、暗黙的なコンピュータ実行可能命令は、クライアントアプリケーションの実行時に、対応する明示的なコンピュータ実行可能命令の代わりに実行される。
結論
C、C++、Java、アセンブリ言語などを含む任意の適切なプログラミング言語を用いて、特定の実施形態のルーチンを実装することができる。異なるプログラミング技術、例えば手続き型またはオブジェクト指向型プログラミング技術を使用することができる。ルーチンは、単一の処理装置または複数のプロセッサ上で実行することができる。ステップ、動作または演算は、特定の順序で記載されているが、この順序は、異なる特定の実施形態では変更されてもよい。いくつかの特定の実施形態において、本明細書に記載された順次に実行される複数のステップは、同時に実行されてもよい。
特定の実施形態は、命令実行システム、機械、システムまたは装置によってまたはそれに関連して使用されるコンピュータ可読記憶媒体に実装されてもよい。特定の実施形態は、ソフトウェアまたはハードウェアまたは両方の組み合わせによる制御ロジックの形で実装されてもよい。この制御ロジックは、1つ以上のプロセッサによって実行されると、特定の実施形態に記載されたものを実行するように動作可能である。例えば、ハードウェア記憶装置などの非一時的な媒体を用いて、実行可能命令を含むことができる制御ロジックを格納することができる。
特定の実施形態は、プログラムされた汎用デジタルコンピュータ、特定用途向け集積回路、プログラマブルロジック装置、フィールドプログラマブルゲートアレイ、光学的システム、化学的システム、生物学的システム、量子的またはナノ工学的システムなどを用いて、実装されてもよい。他のコンポーネントおよび機構を使用することができる。一般に、特定の実施形態の機能は、当技術分野で知られている任意の手段によって達成することができる。分散型またはネットワーク化システム、コンポーネントおよび/または回路を使用することができる。クラウドコンピューティングまたはクラウドサービスを使用することができる。データは、有線、無線、または他の手段で送信または転送することができる。
また、図面に示された1つ以上の要素は、より離れたまたは集中した方法で配置されてもよく、動作可能に限り、特定の需要に応じて外してもよい。このように、コンピュータが上記の方法のいずれかを実行することを可能にするプログラムまたはコードを機械可読媒体に格納する実装も、本発明の精神および範囲内に含まれる。
「プロセッサ」は、データ、信号または他の情報を処理する任意の適切なハードウェアおよび/またはソフトウェアシステム、メカニズムまたはコンポーネントを含む。プロセッサには、汎用中央処理装置、複数の処理装置、機能を実現するための専用回路を備えたシステムまたは他のシステムを含むことができる。処理は、地理的な場所または時間に限定されない。例えば、プロセッサは、例えば、「リアルタイム」、「オフライン」または「バッチモード」で機能を実行することができる。処理の一部は、異なる(または同様の)処理システムによって、異なる時間に異なる場所で実行することができる。処理システムの例は、サーバ、クライアント、エンドユーザ装置、ルータ、スイッチ、ネットワーク化装置などを含む。コンピュータは、メモリと通信する任意のプロセッサである。メモリは、任意の適切なプロセッサ可読記憶媒体、例えば、ランダムアクセスメモリ(RAM)、読み取り専用メモリ(ROM)、磁気または光ディスク、またはプロセッサによって実行される命令を格納する適切な他の非一時的な媒体であり得る。
本明細書の説明および特許請求の範囲に使用された場合、「a」、「an」および「the」は、文脈から明確に指示しない限り、複数を含む。また、本明細書の説明および特許請求の範囲に使用された場合、「in」は、文脈から明確に指示しない限り、「in」および「on」を意味する。
したがって、本明細書において特定の実施形態を説明したが、任意の修正、様々な変更、および置換は、本開示に含まれる。場合によって、特定の実施形態において、本発明の精神および範囲から逸脱することなく、対応する他の特徴を使用せず、いくつかの特徴を使用することができる。したがって、特定の状況または材料を本質的な範囲および精神に適合するように、多くの変更を加えることができる。

Claims (11)

  1. 延期型状態変更を提供するための方法であって、
    クライアントアプリケーションの一部を実装する動作チェーンを定義する情報を受信することを含み、前記受信した情報は、各動作チェーンに関連付けられたグローバル状態を変更するための明示的なコンピュータ実行可能命令を含み、
    各動作チェーンに対して、各動作チェーンのグローバル状態のプライベートビューを作成するためのコンピュータ実行可能命令を自動的に生成することと、
    各々の明示的なコンピュータ実行可能命令に各々の暗黙的なコンピュータ実行可能命令を自動的に関連付けることとを含み、前記暗黙的なコンピュータ実行可能命令は、前記クライアントアプリケーションの実行時に、対応する明示的なコンピュータ実行可能命令の代わりに実行される、方法。
  2. 前記方法は、対応する明示的なコンピュータ実行可能命令の代わりに、前記クライアントアプリケーションの前記実行時に暗黙的なコンピュータ実行可能命令を実行するようにクライアントアプリケーションを構成することをさらに含む、請求項1記載の方法。
  3. 前記方法は、
    ユーザ要求を特定する信号に応答して、少なくとも1つの明示的なコンピュータ実行可能命令を表示することと、
    前記少なくとも1つの明示的なコンピュータ実行可能命令に対応する暗黙的なコンピュータ実行可能命令を表示しないこととをさらに含む、請求項1または2に記載の方法。
  4. 前記方法は、前記クライアントアプリケーションの実行時に、
    前記クライアントアプリケーションと通信するクライアント装置のブラウザに、前記クライアントアプリケーションのウェブページを表示することと、
    前記ウェブページに示されたユーザインターフェイスコントロールのユーザ選択の検出に応答してイベントを生成することと、
    前記イベントに応答して、前記動作チェーンのうち特定の動作チェーンを開始することとをさらに含む、請求項1~3のいずれかに記載の方法。
  5. 前記方法は、
    前記特定の動作チェーンの開始に応答して、前記特定の動作のグローバル変数のスナップショットを作成することを含み、前記スナップショットは、前記特定の動作チェーンのローカル変数を含み、
    前記グローバル変数の値を前記ローカル変数に割り当てることを含み、各ローカル変数には、各グローバル変数の値が割り当てられる、請求項4に記載の方法。
  6. 前記方法は、
    各グローバル変数と各ローカル変数との間の関連付けを有するラッパーを作成することと、
    前記関連付けに基づいて、前記グローバル変数の前記値を前記ローカル変数に割り当てることとをさらに含む、請求項5に記載の方法。
  7. 前記方法は、前記動作チェーンの実行時に、対応するグローバル変数の代わりに、ローカル変数を変更することをさらに含む、請求項5に記載の方法。
  8. 前記方法は、各動作チェーンおよび対応するローカル変数を各々の区画に隔離することをさらに含み、
    各動作チェーンは、個別の区画に隔離される、請求項5に記載の方法。
  9. 前記方法は、スマートラッパーを用いて、明示的なコンピュータ実行可能命令のグローバル変数が書き込まれているときにローカル変数を作成し、前記グローバル変数が読み取られているときにローカル変数を作成しないことをさらに含む、請求項1~8のいずれかに記載の方法。
  10. 請求項1~9のいずれかに記載の方法を1つ以上のプロセッサに実行させるためのプログラム。
  11. 請求項10に記載のプログラムを格納するメモリと、
    前記プログラムを実行するための1つ以上のプロセッサとを備える、設計時ツール。
JP2020517989A 2017-09-28 2018-09-24 延期型状態変更 Active JP7220210B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2023012152A JP2023052773A (ja) 2017-09-28 2023-01-30 延期型状態変更

Applications Claiming Priority (7)

Application Number Priority Date Filing Date Title
US201762564943P 2017-09-28 2017-09-28
US62/564,943 2017-09-28
US201862629520P 2018-02-12 2018-02-12
US62/629,520 2018-02-12
US16/003,016 2018-06-07
US16/003,016 US10922074B2 (en) 2017-09-28 2018-06-07 Deferred state mutation
PCT/US2018/052474 WO2019067368A1 (en) 2017-09-28 2018-09-24 MUTATION IN THE DELAYED STATE

Related Child Applications (1)

Application Number Title Priority Date Filing Date
JP2023012152A Division JP2023052773A (ja) 2017-09-28 2023-01-30 延期型状態変更

Publications (3)

Publication Number Publication Date
JP2020535551A JP2020535551A (ja) 2020-12-03
JP2020535551A5 JP2020535551A5 (ja) 2021-05-20
JP7220210B2 true JP7220210B2 (ja) 2023-02-09

Family

ID=65807672

Family Applications (2)

Application Number Title Priority Date Filing Date
JP2020517989A Active JP7220210B2 (ja) 2017-09-28 2018-09-24 延期型状態変更
JP2023012152A Pending JP2023052773A (ja) 2017-09-28 2023-01-30 延期型状態変更

Family Applications After (1)

Application Number Title Priority Date Filing Date
JP2023012152A Pending JP2023052773A (ja) 2017-09-28 2023-01-30 延期型状態変更

Country Status (5)

Country Link
US (2) US10922074B2 (ja)
EP (1) EP3688587A1 (ja)
JP (2) JP7220210B2 (ja)
CN (1) CN111095214B (ja)
WO (1) WO2019067368A1 (ja)

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20060225031A1 (en) 2001-09-28 2006-10-05 Petersen Paul M Method and apparatus for accessing thread-privatized global storage objects
JP2007531946A (ja) 2004-04-07 2007-11-08 ローベルト ボッシュ ゲゼルシャフト ミット ベシュレンクテル ハフツング データ処理装置におけるデータ整合性
JP2008539515A (ja) 2005-04-29 2008-11-13 マイクロソフト コーポレーション トランザクショントランスフォーム
JP2010061522A (ja) 2008-09-05 2010-03-18 Internatl Business Mach Corp <Ibm> 共有データへの排他的アクセスを許すためのコンピュータ・システム、並びにその方法及びコンピュータ読み取り可能な記録媒体

Family Cites Families (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH05204656A (ja) * 1991-11-30 1993-08-13 Toshiba Corp スレッド固有データ保持方法
JP2002099312A (ja) * 2000-09-22 2002-04-05 Mitsubishi Electric Corp プログラマブルコントローラおよび制御プログラム開発支援装置
US20030217190A1 (en) * 2002-05-03 2003-11-20 Geoffrey Devine Service description and development processes
US20050273757A1 (en) * 2004-06-07 2005-12-08 Anderson Craig D Methods, systems, and computer program products for summarizing operational behavior of a computer program
US7761843B2 (en) * 2005-07-01 2010-07-20 Ronald Ortscheid Computer source code generator
US20070283282A1 (en) * 2006-04-18 2007-12-06 Collabnet, Inc. Systems and methods for on-demand deployment of software build and test environments
US20130086551A1 (en) * 2010-05-27 2013-04-04 International Business Machines Corporation Providing A User With A Graphics Based IDE For Developing Software For Distributed Computing Systems
US9104795B2 (en) * 2011-06-28 2015-08-11 International Business Machines Corporation Integrating compiler warnings into a debug session
US9239878B2 (en) * 2012-12-19 2016-01-19 Amazon Technologies, Inc. Interactivity analyses of web resources based on reload events
US10078575B2 (en) * 2013-03-13 2018-09-18 Microsoft Technology Licensing, Llc Diagnostics of state transitions
US20150052400A1 (en) * 2013-08-19 2015-02-19 Concurix Corporation Breakpoint Setting Through a Debugger User Interface
US20150149745A1 (en) * 2013-11-25 2015-05-28 Markus Eble Parallelization with controlled data sharing
WO2015134611A2 (en) * 2014-03-04 2015-09-11 Michael Manthey Distributed computing systems and methods
US10649756B2 (en) * 2014-11-26 2020-05-12 Ebay Inc. Centralized client application management
US10101976B2 (en) * 2015-04-30 2018-10-16 OpenMethods, Inc. Method, system and apparatus for visual programming of interaction workflows for omni-channel customer contact centers with integrated customer relationship management

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20060225031A1 (en) 2001-09-28 2006-10-05 Petersen Paul M Method and apparatus for accessing thread-privatized global storage objects
JP2007531946A (ja) 2004-04-07 2007-11-08 ローベルト ボッシュ ゲゼルシャフト ミット ベシュレンクテル ハフツング データ処理装置におけるデータ整合性
JP2008539515A (ja) 2005-04-29 2008-11-13 マイクロソフト コーポレーション トランザクショントランスフォーム
JP2010061522A (ja) 2008-09-05 2010-03-18 Internatl Business Mach Corp <Ibm> 共有データへの排他的アクセスを許すためのコンピュータ・システム、並びにその方法及びコンピュータ読み取り可能な記録媒体

Also Published As

Publication number Publication date
WO2019067368A1 (en) 2019-04-04
CN111095214A (zh) 2020-05-01
JP2023052773A (ja) 2023-04-12
CN111095214B (zh) 2023-07-28
US20190095198A1 (en) 2019-03-28
US20210109749A1 (en) 2021-04-15
JP2020535551A (ja) 2020-12-03
US10922074B2 (en) 2021-02-16
EP3688587A1 (en) 2020-08-05

Similar Documents

Publication Publication Date Title
JP7434431B2 (ja) 状態管理永続性
US8943424B2 (en) Dynamic interface component control support
US8527939B2 (en) GUI modeling of knowledge base in a modeling environment
US11003424B2 (en) Method and system for implementing custom UI actions in a web application using hidden containers
US8924845B2 (en) Web application code decoupling and user interaction performance
WO2015042551A2 (en) Method and system for selection of user interface rendering artifacts in enterprise web applications using a manifest mechanism
CN114816401A (zh) 界面元素的定位方法、电子设备及存储介质
US11853752B2 (en) Migration of web applications between different web application frameworks
US20150370542A1 (en) Drag-and-drop functionality for scalable vector graphics
Zhan Selenium WebDriver Recipes in C#
JP7220210B2 (ja) 延期型状態変更
Au-Yeung Vue. js 3 By Example: Blueprints to learn Vue web development, full-stack development, and cross-platform development quickly
US11797638B2 (en) Aggregate component for parallel browser-initiated actions
Nguyen Full-stack crud application: User management system
Gaas MAUI and Blazor Frameworks Possibilities for Creating Cross-platform Applications
Ahammad Google Web Toolkit 2 Application Development Cookbook
Singh Programming Web Applications Declaratively A Qualitative Study
Korepanov Development of web interface for working with tabular data
Freeman et al. Services for REST
Mukherjee Courseware for developing mobile and cloud application
Cafferky et al. Writing Scripts
Albert et al. A REST Framework for Dynamic Client Environments
Pande et al. Event Handling

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20200709

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20210408

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20210408

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20220322

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20220420

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20220516

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20220802

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20220912

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

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20230110

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20230130

R150 Certificate of patent or registration of utility model

Ref document number: 7220210

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150