JP2023511942A - モバイルクライアントアプリケーションにおけるデータプロバイダに依存しない変更取扱い - Google Patents

モバイルクライアントアプリケーションにおけるデータプロバイダに依存しない変更取扱い Download PDF

Info

Publication number
JP2023511942A
JP2023511942A JP2022544792A JP2022544792A JP2023511942A JP 2023511942 A JP2023511942 A JP 2023511942A JP 2022544792 A JP2022544792 A JP 2022544792A JP 2022544792 A JP2022544792 A JP 2022544792A JP 2023511942 A JP2023511942 A JP 2023511942A
Authority
JP
Japan
Prior art keywords
service provider
remote service
data
action
remote
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.)
Pending
Application number
JP2022544792A
Other languages
English (en)
Other versions
JPWO2021150341A5 (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 JP2023511942A publication Critical patent/JP2023511942A/ja
Publication of JPWO2021150341A5 publication Critical patent/JPWO2021150341A5/ja
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/25Integrating or interfacing systems involving database management systems
    • G06F16/252Integrating or interfacing systems involving database management systems between a Database Management System and a front-end application
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/02Protocols based on web technology, e.g. hypertext transfer protocol [HTTP]
    • H04L67/025Protocols based on web technology, e.g. hypertext transfer protocol [HTTP] for remote control or remote monitoring of applications
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/42Syntactic analysis
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/60Software deployment
    • G06F8/65Updates
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L12/00Data switching networks
    • H04L12/28Data switching networks characterised by path configuration, e.g. LAN [Local Area Networks] or WAN [Wide Area Networks]
    • H04L12/2854Wide area networks, e.g. public data networks
    • H04L12/2856Access arrangements, e.g. Internet access
    • H04L12/2869Operational details of access network equipments
    • H04L12/287Remote access server, e.g. BRAS
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/34Network arrangements or protocols for supporting network services or applications involving the movement of software or configuration parameters 
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04WWIRELESS COMMUNICATION NETWORKS
    • H04W4/00Services specially adapted for wireless communication networks; Facilities therefor
    • H04W4/50Service provisioning or reconfiguring

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Software Systems (AREA)
  • General Physics & Mathematics (AREA)
  • Physics & Mathematics (AREA)
  • Databases & Information Systems (AREA)
  • Computer Security & Cryptography (AREA)
  • Data Mining & Analysis (AREA)
  • Computer And Data Communications (AREA)
  • Telephonic Communication Services (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

一実施形態では、モバイルクライアントアプリケーションにおける変更取扱いは、データプロバイダに依存しない変更オブジェクトスキーマを使用する変更の中間格納によって容易にされ得る。リモートデータストアに格納されたデータオブジェクトに対する作成、更新または削除アクションを示す、モバイルデバイスに対する入力が、受信される。入力の受信に応答して、データオブジェクトに対するアクションの記述が、リモートデータストアと対話するために使用されるリモートサービスプロバイダのタイプに関して依存しないシンタックスで作成される。アクションの記述は、第1のリモートサービスプロバイダにアクションを実行させるように構成されたコマンドを作成するために、第1のリモートサービスプロバイダのシンタックスに変換される。コマンドは、アクションがリモートデータストアにおけるデータオブジェクトに対して行なわれるようにするために、ネットワークを通して第1のリモートサービスプロバイダへ送信される。

Description

背景
モバイルクライアントデバイス上でホストされるソフトウェアアプリケーション(「モバイルアプリケーション」)は一般に、バックエンドサーバ上でホストされるバックエンド(または、さもなければリモート)データプロバイダとネットワークを通して対話し、バックエンドデータベースに格納されたアプリケーションデータにアクセスしてそれを操作する。たとえば、(i)クライアントデバイスとバックエンドサーバとの間のネットワーク接続性が不良であるかまたは存在しない場合、あるいは(ii)バックエンドサーバが無反応であるかまたは利用不能である場合、モバイルアプリケーションはバックエンドデータプロバイダと対話できない。
モバイルアプリケーションがバックエンドデータプロバイダと対話できない場合に、モバイルアプリケーションのユーザがアプリケーションデータにアクセスしてそれを操作することを望むことが、しばしばある。アプリケーション機能はしたがって、モバイルアプリケーションがバックエンドデータプロバイダと接続していない間にモバイルクライアントデバイス上でローカルにアプリケーションデータにアクセスしてそれを操作することを可能にする「オフラインモード」で動作する能力を含み得る。アプリケーションデータへの変更は、モバイルクライアントデバイス上でローカルに持続され、バックエンドデータプロバイダとの対話が再開するとバックエンドデータベースと同期される。これは、「オフライン書込み」または「延期された書込みアクセス」と呼ばれ得る。
現在、オフラインモード中にモバイルアプリケーションがデータを更新しようとすると、変更は、バックエンドデータプロバイダに特有のスキーマと密結合されるやり方で、オフライン(ローカル)データストレージ内で保持される。このモデルが機能する間、それは、エンティティの相違する多様な構造表現を有するそのようなバックエンドデータプロバイダが複数あるのはいつかを推定しない。バックエンドデータプロバイダのスキーマに厳密に従うやり方で変更を格納するモバイルアプリケーションは、オブジェクトを表現するために一意スキーマを各々有する複数のデータプロバイダに接続することができない。それらはまた、業務プロセスに合わせてカスタマイズされる新たなエンティティ、関係、および機能に対応するように実行時に変更されることができない。また、モバイルアプリケーションがオフライン中にリモートシステムが更新され、更新が変更のためにスキーマまたは構造を変更する場合、格納された変更が無効となって同期を失敗させることがある。リモートプロバイダに特有のスキーマまたは構造で変更を格納することはしばしば損失を伴い、元の変更を再構成すること、または、格納された変更を異なるフォーマットに変換することが可能ではないかもしれない。このため、1つの特定のリモートプロバイダに特有のスキーマまたは構造で格納されたオフライン変更は、明らかな欠点を有する。
概要
一実施形態では、コンピュータにより実現される方法は、リモートデータストアに格納されたデータオブジェクトに対する作成、更新または削除アクションを示す、モバイルデバイスに対する入力を受信するステップと、入力を受信するステップに応答して、データオブジェクトに対するアクションの記述を、リモートデータストアと対話するために使用されるリモートサービスプロバイダのタイプに関して依存しないシンタックスで作成するステップと、第1のリモートサービスプロバイダにアクションを実行させるように構成されたコマンドを作成するために、アクションの記述を第1のリモートサービスプロバイダのシンタックスに変換するステップと、アクションがリモートデータストアにおけるデータオブジェクトに対して行なわれるようにするために、コマンドをネットワークを通して第1のリモートサービスプロバイダへ送信するステップとを含む。
一実施形態では、コンピュータにより実現される方法は、第1のリモートサービスプロバイダがコマンドを受信するために利用不能であると判定するステップと、モバイルデバイスに対するアクションの記述を格納するステップと、第1のリモートサービスプロバイダが利用可能であるという指示がモバイルデバイスによって受信される後まで、コマンドを作成することを遅らせるステップとをさらに含む。
一実施形態では、コンピュータにより実現される方法は、第2のリモートサービスプロバイダがコマンドを受信するために利用不能であると判定するステップをさらに含み、第2のリモートサービスプロバイダはコマンドを受信するために利用不能であるという判定に応答して、コマンドを第1のリモートサービスプロバイダのシンタックスで作成することと、コマンドを第1のリモートサービスプロバイダへ送信することとが行なわれる。
一実施形態では、コンピュータにより実現される方法は、リモートデータストアへのアクセスを各々有する1組の2つ以上のリモートサービスプロバイダの中から、第1のリモートサービスプロバイダを選択するステップをさらに含み、選択は、第1のリモートサービスプロバイダが、(i)リモートサービスプロバイダの現在の利用可能性、および(ii)アクションの複雑性、のうちの少なくとも1つを含む1つ以上の基準を満たすことに基づいている。
一実施形態では、コンピュータにより実現される方法において、データオブジェクトに対するアクションの記述の依存しないシンタックスは、アクションが変更するデータオブジェクトの各属性について、(i)その属性への変更が「更新」、「削除」または「作成」アクションのうちの1つであるという指示と、(ii)変更が「更新」または「作成」アクションである場合、その属性についての新たな値の指示とを含み、アクションが変更するデータオブジェクトの各子オブジェクトについて、(i)子オブジェクトが子オブジェクトであるという指示と、(ii)子オブジェクトへの変更が「更新」、「削除」または「作成」アクションのうちの1つであるという指示と、(iii)子のための主キーの値の指示と、(iv)その子オブジェクトへの変更の指示とを含み、変更の指示は、依存しないシンタックスを使用して記述される。
一実施形態では、コンピュータにより実現される方法であって、第1のリモートサービスプロバイダのシンタックスがモバイルデバイスに格納され、第1のリモートサービスプロバイダからデータオブジェクトのタイプについての意味論の記述を検索するステップをさらに含み、アクションの記述を第1のリモートサービスプロバイダのシンタックスに変換するステップは、意味論の検索された記述に基づいている。
一実施形態では、コンピュータ実行可能命令を格納する、非一時的コンピュータ読取可能媒体であって、コンピュータ実行可能命令は、コンピュータの少なくともプロセッサによって実行されると、コンピュータに、リモートデータストアに格納されたデータオブジェクトに対する作成、更新または削除アクションを示す、モバイルデバイスに対する入力を受信することと、入力を受信することに応答して、データオブジェクトに対するアクションの記述を、リモートデータストアと対話するために使用されるリモートサービスプロバイダのタイプに関して依存しないシンタックスで作成することと、第1のリモートサービスプロバイダにアクションを実行させるように構成されたコマンドを作成するために、アクションの記述を第1のリモートサービスプロバイダのシンタックスに変換することと、アクションがリモートデータストアにおけるデータオブジェクトに対して行なわれるようにするために、コマンドをネットワークを通して第1のリモートサービスプロバイダへ送信することと、を行なわせる。
一実施形態では、非一時的コンピュータ読取可能媒体は、少なくともプロセッサによって実行されると、コンピュータに、第1のリモートサービスプロバイダがコマンドを受信するために利用不能であると判定することと、モバイルデバイスに対するアクションの記述を格納することと、第1のリモートサービスプロバイダが利用可能であるという指示がモバイルデバイスによって受信される後まで、コマンドを作成することを遅らせることと、を行なわせる命令をさらに含む。
一実施形態では、非一時的コンピュータ読取可能媒体は、少なくともプロセッサによって実行されると、コンピュータに、第2のリモートサービスプロバイダがコマンドを受信するために利用不能であると判定することを行なわせる命令をさらに含み、第2のリモートサービスプロバイダはコマンドを受信するために利用不能であるという判定に応答して、コマンドを第1のリモートサービスプロバイダのシンタックスで作成することと、コマンドを第1のリモートサービスプロバイダへ送信することとが行なわれる。
一実施形態では、非一時的コンピュータ読取可能媒体は、少なくともプロセッサによって実行されると、コンピュータに、リモートデータストアへのアクセスを各々有する1組の2つ以上のリモートサービスプロバイダの中から、第1のリモートサービスプロバイダを選択することを行なわせる命令をさらに含み、選択は、第1のリモートサービスプロバイダが、(i)リモートサービスプロバイダの現在の利用可能性、および(ii)アクションの複雑性、のうちの少なくとも1つを含む1つ以上の基準を満たすことに基づいている。
一実施形態では、非一時的コンピュータ読取可能媒体において、データオブジェクトに対するアクションの記述の依存しないシンタックスは、アクションが変更するデータオブジェクトの各属性について、(i)その属性への変更が「更新」、「削除」または「作成」アクションのうちの1つであるという指示と、(ii)変更が「更新」または「作成」アクションである場合、その属性についての新たな値の指示とを含み、アクションが変更するデータオブジェクトの各子オブジェクトについて、(i)子オブジェクトが子オブジェクトであるという指示と、(ii)子オブジェクトへの変更が「更新」、「削除」または「作成」アクションのうちの1つであるという指示と、(iii)子のための主キーの値の指示と、(iv)その子オブジェクトへの変更の指示とを含み、変更の指示は、依存しないシンタックスを使用して記述される。
一実施形態では、非一時的コンピュータ読取可能媒体であって、第1のリモートサービスプロバイダのシンタックスがモバイルデバイスに格納され、少なくともプロセッサによって実行されると、コンピュータに、第1のリモートサービスプロバイダからデータオブジェクトのタイプについての意味論の記述を検索することを行なわせる命令をさらに含み、アクションの記述を第1のリモートサービスプロバイダのシンタックスに変換することは、意味論の検索された記述に基づいている。
一実施形態では、コンピューティングシステムであって、プロセッサと、プロセッサに動作可能に接続されたメモリと、プロセッサおよびメモリに動作可能に接続され、コンピュータ実行可能命令を格納する、非一時的コンピュータ読取可能媒体とを含み、コンピュータ実行可能命令は、少なくともプロセッサによって実行されると、コンピューティングシステムに、リモートデータストアに格納されたデータオブジェクトに対する作成、更新または削除アクションを示す、モバイルデバイスに対する入力を受信することと、入力を受信することに応答して、データオブジェクトに対するアクションの記述を、リモートデータストアと対話するために使用されるリモートサービスプロバイダのタイプに関して依存しないシンタックスで作成することと、第1のリモートサービスプロバイダにアクションを実行させるように構成されたコマンドを作成するために、アクションの記述を第1のリモートサービスプロバイダのシンタックスに変換することと、アクションがリモートデータストアにおけるデータオブジェクトに対して行なわれるようにするために、コマンドをネットワークを通して第1のリモートサービスプロバイダへ送信することと、を行なわせる。
一実施形態では、コンピューティングシステムにおいて、請求項の非一時的コンピュータ読取可能媒体は、少なくともプロセッサによって実行されると、コンピューティングシステムに、第1のリモートサービスプロバイダがコマンドを受信するために利用不能であると判定することと、モバイルデバイスに対するアクションの記述を格納することと、第1のリモートサービスプロバイダが利用可能であるという指示がモバイルデバイスによって受信される後まで、コマンドを作成することを遅らせることと、を行なわせる命令をさらに含む。
一実施形態では、コンピューティングシステムにおいて、請求項の非一時的コンピュータ読取可能媒体は、少なくともプロセッサによって実行されると、コンピューティングシステムに、第2のリモートサービスプロバイダがコマンドを受信するために利用不能であると判定することを行なわせる命令をさらに含み、第2のリモートサービスプロバイダはコマンドを受信するために利用不能であるという判定に応答して、コマンドを第1のリモートサービスプロバイダのシンタックスで作成することと、コマンドを第1のリモートサービスプロバイダへ送信することとが行なわれる。
一実施形態では、コンピューティングシステムにおいて、請求項の非一時的コンピュータ読取可能媒体は、少なくともプロセッサによって実行されると、コンピューティングシステムに、リモートデータストアへのアクセスを各々有する1組の2つ以上のリモートサービスプロバイダの中から、第1のリモートサービスプロバイダを選択することを行なわせる命令をさらに含み、選択は、第1のリモートサービスプロバイダが、(i)リモートサービスプロバイダの現在の利用可能性、および(ii)アクションの複雑性、のうちの少なくとも1つを含む1つ以上の基準を満たすことに基づいている。
一実施形態では、コンピューティングシステムにおいて、データオブジェクトに対するアクションの記述の依存しないシンタックスは、アクションが変更するデータオブジェクトの各属性について、(i)その属性への変更が「更新」、「削除」または「作成」アクションのうちの1つであるという指示と、(ii)変更が「更新」または「作成」アクションである場合、その属性についての新たな値の指示とを含み、アクションが変更するデータオブジェクトの各子オブジェクトについて、(i)子オブジェクトが子オブジェクトであるという指示と、(ii)子オブジェクトへの変更が「更新」、「削除」または「作成」アクションのうちの1つであるという指示と、(iii)子のための主キーの値の指示と、(iv)その子オブジェクトへの変更の指示とを含み、変更の指示は、依存しないシンタックスを使用して記述される。
一実施形態では、コンピューティングシステムであって、第1のリモートサービスプロバイダのシンタックスがモバイルデバイスに格納され、少なくともプロセッサによって実行されると、コンピューティングシステムに、第1のリモートサービスプロバイダからデータオブジェクトのタイプについての意味論の記述を検索することを行なわせる命令をさらに含み、アクションの記述を第1のリモートサービスプロバイダのシンタックスに変換することは、意味論の検索された記述に基づいている。
図面の簡単な説明
明細書において援用され、その一部を構成する添付図面は、この開示のさまざまなシステム、方法、および他の実施形態を図示する。図面における図示された要素境界(たとえばボックス、ボックスのグループ、または他の形状)は、当該境界の一実施形態を表わすということが理解されるであろう。いくつかの実施形態では、1つの要素が複数の要素として実現されてもよく、または、複数の要素が1つの要素として実現されてもよい。いくつかの実施形態では、別の要素の内部構成要素として示された要素が外部構成要素として実現されてもよく、逆もまた同様である。さらに、要素は縮尺通りに図示されていない場合がある。
モバイルクライアントアプリケーションにおけるデータプロバイダに依存しない変更取扱いに関連付けられたシステムの一実施形態を示す図である。 システムが動作し得る、モバイルクライアントアプリケーションにおけるデータプロバイダに依存しない変更取扱いに関連付けられた環境の一実施形態を示す図である。 モバイルクライアントアプリケーションにおけるデータプロバイダに依存しない変更取扱いに関連付けられた、データプロバイダに依存しない変更オブジェクトのためのスキーマの一実施形態を示す図である。 例示的な行オブジェクトインスタンスに加えられたさまざまな変更を記述する、例示的なデータプロバイダに依存しない変更オブジェクトインスタンスを示す図である。 モバイルクライアントアプリケーションにおけるデータプロバイダに依存しない変更取扱いに関連付けられた方法の一実施形態を示す図である。 モバイルクライアントアプリケーションにおけるデータプロバイダに依存しない変更取扱いを使用する延期された書込みアクセスに関連付けられた方法の一実施形態を示す図である。 モバイルクライアントアプリケーションにおけるデータプロバイダに依存しない変更取扱いを使用する、複数のリモートサービスプロバイダを通した延期された書込みアクセスに関連付けられた方法の一実施形態を示す図である。 モバイルクライアントアプリケーションにおけるデータプロバイダに依存しない変更取扱いを使用する、選択可能な代替サービスプロバイダを通した延期された書込みアクセスに関連付けられた方法の一実施形態を示す図である。 開示された例示的なシステムおよび/または方法を用いて構成されたコンピューティングシステムの一実施形態を示す図である。 開示された例示的なシステムおよび/または方法を用いて構成されたモバイルデバイスの一実施形態を示す図である。
詳細な説明
モバイルクライアントアプリケーションにおけるデータプロバイダに依存しない変更取扱いを提供するシステムおよび方法を、ここに説明する。データプロバイダに依存しない変更取扱いは、オフライン書込みのためのデータをバックエンドデータプロバイダのスキーマに準拠するスキーマでキャッシュに入れるという制限を克服する。代わりに、一実施形態では、データプロバイダに依存しない変更オブジェクトが、モバイルアプリケーションから更新をとらえるために実現される。(データプロバイダに依存しない変更オブジェクトは便宜上、ここでは単に「変更オブジェクト」と呼ばれ得る。)
データプロバイダに依存しない変更オブジェクトは、クライアントデバイス上のモバイルアプリケーションが、それがバックエンドサーバ上で接続しているリモートサービスプロバイダから独立してデータおよび特徴を調節し、再編成し、訂正し、合併させるためのアクセスを提供することを可能にする。データプロバイダに依存しない変更オブジェクトは、モバイルアプリケーションが、(i)ローカルデータの論理的に一貫したビューをユーザに提示すること、および(ii)個々のユーザアクションを、個々に追跡され、適用され、軽減され得るトランザクションとして維持することを可能にする。
一実施形態では、モバイルアプリケーションは、バックエンドサーバへの接続がない間、データおよび特徴を格納してそれらにアクセスするためにクライアントデバイスによって解釈され使用され得るデータストレージモデルを含むように定義される。加えて、モバイルアプリケーションは、一意的でありかつプロバイダ自体に依存しないやり方でこのデータへの変更をストレージモデルに格納するためのアルゴリズムを実現する。一例では、これは、データプロバイダに依存しない変更オブジェクトであり得る。また、モバイルアプリケーションは、変更が同期されるときに、更新されたデータをデータプロバイダのフォーマットに変換する変更解決器を実現する。
データストレージモデルは、要求上で特定された一意識別子を含み、それらは、サーバからの応答に含まれ、そのコンポーネントフラグメントをローカルストアに格納するために使用され、変更された集合から特定の記録を識別するために使用される。
一実施形態では、オフライン同期モデル内でオブジェクトおよびデータプロバイダに依存しない変更取扱いメカニズムを定義するための方法およびシステムが提示される。モバイルデバイスは、接続中または切断中に加えられたユーザ変更を格納し、その後、リモートサーバと同期する。モバイルデバイスは、データストレージおよびリアルタイムのシームレスなデータ合併を最適化するやり方で、メモリで定義された表の組合せを更新する。要求は、第1のユニバーサル識別子によって識別された位置としてメモリに格納される。要求は、カスタムのデータプロバイダに依存しないスキーマに従う変更を構成しており、変更自体とともに行なわれた動作を各々記述するキーの集合を含むであろう。ローカルクライアントによって検索されると、修正されたデータは、オブジェクトの元の状態と合併されて、別々に適用され、取消され、または軽減され得る個々のトランザクションを記録された順序で維持しつつ、アプリケーションにおける一貫したローカルビューを提供する。リモートサーバへのサブミッションに先立って、変更データは、リモートサービスプロバイダによって定められたフォーマットに変換され、このため、モデルがリモートシステムと疎結合されるようにする。
ここに説明されるシステムおよび方法に従って構成されたモバイルアプリケーションは、以前のモバイルアプリケーション実現化例に比べ、著しい改良を提示する。ここに説明されるシステムおよび方法に従って構成されたモバイルアプリケーションの多形挙動は、データ変更の記録(変更オブジェクト)が、オブジェクトが作成されるときに特定のスキーマに結び付けられないことを可能にする。代わりに、データ変更の記録は包括的なスキーマを用いて表わされ、オブジェクトが実行時に同期されているときに、アプリケーション定義への変更とオンザフライで連動するように、異なるスキーマに変換される。これは、オブジェクトをオブジェクトの状態に持続させるために予め定義された静的モデルを使用する既存のアプリケーションと比べて、独特である。
ここに説明されるシステムおよび方法に従って構成されたモバイルアプリケーションは、著しい利点も提示する。ユーザが変更を加えると作成される変更データオブジェクトは、リモートサーバ上のオブジェクトのスキーマから独立している。一例では、システムは、複数の異なるタイプのバックエンドデータプロバイダまたは他のサーバから検索された情報に基づいて、最新状態に保たれ得る。たとえば、あるデータプロバイダはデータを複雑なグラフとして表わし、一方、別のデータプロバイダはデータを過度に単純化された階層的エンティティ間関係として表わし得る。一般に、クライアントに対する修正は、明確に定義された特定の形状に準拠して、そのままキャッシュに入れられる。この問題は、アプリケーションから更新をとらえるためにデータプロバイダに依存しない変更オブジェクトを定義するための方法およびシステムを使用して対処される。このモデルは、クライアントアプリケーションが、それがサーバ上で接続しているリモートプロバイダから独立してデータおよび特徴を調整し、再編成し、訂正し、合併させるためのアクセスを提供することを可能にする。このモデルは、ローカルデータの論理的に一貫したビューをユーザに提示し、個々のユーザアクションを、個々に追跡され、適用され、軽減され得るトランザクションとして維持することができる。
一実施形態では、変更オブジェクトは、変更自体とともに行なわれた動作を各々記述するキーの集合を含む。リモートサーバへのサブミッションに先立って、変更データは、リモートサービスプロバイダによって定められたフォーマットに変換され、このため、モデルがリモートシステムと疎結合されるようにする。
データプロバイダに依存しない変更取扱いのための例示的なシステム
図1は、モバイルクライアントアプリケーションにおけるデータプロバイダに依存しない変更取扱いに関連付けられたシステム100の一実施形態を示す。クライアント側105では、システム100は、モバイルアプリケーション110を含む。モバイルアプリケーション110は、ユーザインターフェイス115と、トランザクションハンドラ120と、持続性マネージャ125とを含む。モバイルアプリケーション110はまた、サーバ側135のさまざまなリモートサービスプロバイダ131とインターフェイス接続するための1つ以上のデータプロバイダ130を含む。データプロバイダ130は、リモートXMLプロバイダ141とインターフェイス接続するためのXMLデータプロバイダ140を含み得る。データプロバイダ130は、リモートグラフクエリプロバイダ146とインターフェイス接続するためのグラフクエリデータプロバイダ145を含み得る。データプロバイダ130は、リモートRESTプロバイダ151とインターフェイス接続するためのRESTデータプロバイダ150を含み得る。データプロバイダ130は、リモートエラスティックプロバイダ156とインターフェイス接続するためのエラスティックデータプロバイダ155を含み得る。データプロバイダ130はまた、他のリモートサービスプロバイダ161とインターフェイス接続するように構成された他のデータプロバイダ160を含み得る。データプロバイダ130は、さまざまなネットワーク通信プロトコルを使用するネットワークを介した電子通信によって、リモートサービスプロバイダ131とインターフェイス接続する。リモートサービスプロバイダ131は、モバイルアプリケーション110に関連付けられたデータストア165に接続される。トランザクションハンドラ120は、データマネージャ170と、変更データコンストラクタ175と、トランザクションプロセッサ180とを含む。一実施形態では、システム100のコンポーネントの各々は、モジュールとして実現され得る。
一実施形態では、モバイルアプリケーション110は、データストア165に格納されたデータにアクセスしてそれを操作するためのクライアントアプリケーションである。たとえば、モバイルアプリケーション110は、データストア165上のデータをホストし、リモートサービスプロバイダ131を通して1つ以上のサービスを提供する企業セールスおよびサービスツールのためのクライアントアプリケーションであり得る。一実施形態では、モバイルアプリケーション110は、Oracle(登録商標)CXモバイルクライアントである。クライアントアプリケーションは、Google(登録商標)プレイストアまたはApple(登録商標)ストアなどのモバイルアプリケーションの第3者販売業者からダウンロードされるか、または、セールスツールの事業者に関連付けられたシステムからダウンロードされ得る。モバイルアプリケーション110はその場合、たとえば、セールススタッフまたはサービススタッフがセールス機会またはサービス要求を閲覧し、ツールにおいて新たなセールス機会を生み出し、ツールにおいてサービス要求をサブミットし、連絡先情報に関連するセールス機会またはサービス要求を調べ、もしくは、データストア165における情報を作成し、読出し、更新し、または削除する他の動作を行なうために、使用され得る。
一実施形態では、モバイルアプリケーション110は、リモートサービスプロバイダ131へのアプリケーションプログラミングインターフェイス(application programming interface:API)要求により、ツールにおけるデータ動作の実行を要求する。一実施形態では、これらの要求は、リモートグラフクエリプロバイダ146、RESTプロバイダ151、およびリモートエラスティックプロバイダ156の場合と同様に、ウェブサーバへの、およびウェブサーバからの要求(データ交換フォーマットとしてJavaScriptオブジェクト表記法(JavaScript object notation:JSON)を使用するリモートリプレゼンテーショナルステートトランスファー(representational state transfer:REST)要求など)である。一実施形態では、これらの要求は、リモートxmlプロバイダ141などのXMLサーバへの、およびXMLサーバからのSOAP要求である。モバイルアプリケーション110は、モバイルアプリケーション110とデータストア165との間の接続性が制限されているかまたは存在しない場合に、オフライン書込みまたは延期された書込みアクセスをサポートする動作を行なうように構成される。モバイルアプリケーション110は、データストア165から検索されたデータを、持続性マネージャ125を使用してローカルキャッシュに格納し得る。ローカルキャッシュ内のデータは、クライアント側105とサーバ側135との間の接続性が制限されているかまたは存在しない間はモバイルアプリケーション110のユーザによって操作され、その後、接続性が回復されるとサーバ側と同期され得る。
一実施形態では、ユーザインターフェイス115は、モバイルアプリケーション110へのグラフィカルユーザインターフェイス(graphical user interface :GUI)である。GUIは、画像、コンテナウィンドウ、ブラウザウィンドウ、テキストターミナルウィンドウ、ダイアログボックス、ドロップダウンメニュー、グラフィカルユーザインターフェイスを用いたユーザとの対話に応答して視認可能になるコンテキストメニュー、アイコン、ボタン、ラジオボタン、チェックボックスといった、ユーザインターフェイス要素を含み得る。GUIは、たとえばマウスクリック、またはタッチスクリーン上でのタップ、物理的または仮想キーボードからのキーストローク、または音声のテキストへの変換による、モバイルアプリケーション110のユーザからの入力を受け付け得る。ユーザによる入力は、ユーザインターフェイス要素を通して受け付けられ得る。ユーザによる入力は、データオブジェクト(行オブジェクトなど)のための作成、読出し、更新または削除動作を記述または示し得る。データオブジェクトの内容のうちのいくつかまたはすべてが、ユーザインターフェイス115を通して読出され、ユーザに表示され得る。入力によって記述された動作またはアクションは、データストア165にリモートで格納された、または、持続性マネージャ125によってローカルに格納されたデータオブジェクトについてのものであり得る。ユーザインターフェイス115を通したユーザ入力によって記述された作成、更新または削除動作は、さらなる処置のためにデータマネージャ170に提示される。
一実施形態では、トランザクションハンドラ120は、ユーザによって入力された作成、更新または削除動作を完結させるようにデータマネージャに命令する「コミット」または「保存」機能を含む。一実施形態では、ユーザインターフェイス115は、ユーザによる選択に応答してトランザクションハンドラ120の「コミット」または「保存」機能を起動するボタンまたは他のインターフェイス要素を含む。
一実施形態では、変更データコンストラクタ175は、(作成、更新または削除データ動作を含む)特定のトランザクションを記述するために、データプロバイダに依存しない変更オブジェクトを作成するように動作する。トランザクションは、ユーザインターフェイス115を通したユーザ入力によって記述されたものであり得る。一実施形態では、変更データコンストラクタ175は、(たとえば、「コミット」または「保存」機能の選択を示すユーザ入力に応答して実行される)「コミット」または「保存」機能の実行に応答して、データプロバイダに依存しない変更オブジェクトを作成する。
一実施形態では、データマネージャ170は、トランザクションがどこでルーティングされるか、ローカルにルーティングされるかまたはリモートプロバイダへルーティングされるかに関して、さらには、どのプロバイダが使用されるかに関して判定を下す。たとえば、クライアント側105とサーバ側135との間に接続性がある場合、データマネージャ170は、「コミット」または「保存」機能によって作成された変更オブジェクトをサーバ側135へルーティングして、変更オブジェクトによって記述された変更をデータストア165において有効にするであろう。データマネージャ170は、ルーティングにとって適切なデータプロバイダ130を選択し、そのデータプロバイダ130へ変更オブジェクトを、関連付けられたリモートサービスプロバイダ131に特有のスキーマへの変換のために送信する。または、たとえば、クライアント側105とサーバ側135との間の接続性が制限されているかまたはない場合、データマネージャ170は、「コミット」または「保存」機能によって作成された変更オブジェクトを持続性マネージャ125へルーティングして、接続性が回復されるまでローカルに格納されるようにするであろう。また、別の例では、トランザクションがルーティングされることになっているリモートサービスプロバイダ131が低い利用可能性を有するかまたは要求を処理する能力を有していない場合、データマネージャ170は、「コミット」または「保存」機能によって作成された変更オブジェクトを持続性マネージャ125へルーティングして、利用可能性が回復されるまでローカルに格納されるようにするであろう。さらに別の例では、トランザクションがルーティングされることになっているリモートサービスプロバイダ131が低い利用可能性を有するかまたは要求を処理する能力を有していない場合、データマネージャ170は、「コミット」または「保存」機能によって作成された変更オブジェクトを、異なるデータプロバイダ130を通して、同様にトランザクションを処理することができる異なる関連付けられたリモートサービスプロバイダへルーティングするであろう。
一実施形態では、(i)クライアント側105とサーバ側135との間の接続性が利用不能であるかまたは制限されている間、もしくは、(ii)1つ以上のリモートサービスプロバイダ131が低い利用可能性を有するかまたは要求を処理する能力を有していない間、トランザクションは、データストア165とのその後の同期のために、データプロバイダに依存しない変更オブジェクトとして持続性マネージャ125にローカルに格納される。トランザクションプロセッサ180は、ローカルに格納されたデータプロバイダに依存しない各変更オブジェクトのリストを、たとえばデータ構造としてメモリで維持する。リストは、変更オブジェクトの時間的順序を維持する。接続性または利用可能性が回復されると、トランザクションプロセッサ180は、ローカルに格納された変更オブジェクトを持続性マネージャ125から検索する。トランザクションプロセッサは、競合状態エラーを防ぐために、同じ行オブジェクトに影響を与える変更オブジェクトの時間的順序を守らせる。トランザクションプロセッサ180は、変更オブジェクトによって記述された変更をデータストア165において有効にするために、トランザクション要求をサーバ側135へどのようにルーティングするかを判定する。トランザクションプロセッサ180は、ルーティングにとって適切なデータプロバイダ130を選択し、そのデータプロバイダ130へ変更オブジェクトを、関連付けられたリモートサービスプロバイダ131に特有のスキーマへの変換のために送信する。
一実施形態では、各データプロバイダ130は、データプロバイダのそれぞれのリモートプロバイダ131に特有のスキーマまたは構造を使用して、受信された変更オブジェクトによって記述された変更を有効にするための命令を作成するように動作する。各データプロバイダ130は、データプロバイダのそれぞれのリモートプロバイダ131と対話するためのシンタックスのコピーを維持する。各データプロバイダ130は、データプロバイダのそれぞれのリモートプロバイダ131によって受け付けられるデータタイプの定義のコピーを維持する。一実施形態では、シンタックスおよび定義は、持続性マネージャ125を通してローカルストレージで維持される。各データプロバイダ130は、データプロバイダのそれぞれのリモートプロバイダ131にとって適切なシンタックスおよびデータタイプを使用して、変更を有効にするための命令を作成するように動作する。
たとえば、データマネージャ170またはトランザクションプロセッサ180から変更オブジェクトを受信したことに応答して、RESTデータプロバイダ150は、トランザクションのリモートRESTプロバイダに特有の記述を使用して、変更オブジェクトによって記述された変更を有効にするための命令を作成する。たとえば、リモートrestプロバイダ151によるRESTデータプロバイダ150に特有のスキーマで変更を記述するペイロードを有するREST要求が作成され得る。RESTデータプロバイダ150は、リモートRESTプロバイダのために定義によって記述されたデータタイプのオブジェクトを修正するために、変更オブジェクトによって記述されたアクションを、リモートRESTプロバイダと対話するためのシンタックスでの命令へ変換する。REST要求は次に、RESTデータプロバイダ150によって、システム100のクライアント側105とサーバ側135との間のネットワーク接続を通して、リモートRESTプロバイダ151へ送信され得る。
一実施形態では、リモートサービスプロバイダ131は、システム100のデータベースまたはデータストア165の上のインターフェイス(APIなど)である。リモートサービスプロバイダは、(データプロバイダ130からの)API要求を受け付け、これらの要求を有効にするためにデータストア165に対してクエリを実行する。リモートサービスプロバイダ131はまた、データストア165から検索された情報を、ユーザインターフェイス115による表示といったさまざまな目的のために、データプロバイダ130を通してリモートアプリケーション110へ戻すことができる。
一実施形態では、リモートサービスプロバイダ131はすべて、システム100上で(データストア165からの)同じデータへのアクセスを有する。しかし、異なるリモートサービスプロバイダ131は、同じ能力を共有しない場合がある。投稿を全く受け付けないものもあれば、ある変更についての投稿は受け付けるものの、他の変更についての投稿は受け付けないものもあり得る。リモートサービスプロバイダ131の中には、場合によって、性能をより重視するものがあり得る。
一実施形態では、データストア165は、リモートプロバイダ131のインターフェイスのうちの1つ以上をネットワークに公開するアプリケーションサーバに接続されたOracle(登録商標)データベースである。一実施形態では、アプリケーションサーバは、Oracle(登録商標)WebLogic(登録商標)アプリケーションサーバである。
一実施形態では、サーバ側135は、クライアント側105からリモートに位置し得る。上述のように、クライアント側105とサーバ側135との間の接続は、断続的であり得る。データプロバイダ130およびリモートサービスプロバイダ131は、クライアント側105がサーバ側135と通信しなかった場合に、モバイルアプリケーション110によって行なわれたデータ動作(作成、更新および削除動作など)を同期させるように動作する。
データプロバイダに依存しない変更取扱いのための例示的な環境
図2は、システム100が動作し得る、モバイルクライアントアプリケーションにおけるデータプロバイダに依存しない変更取扱いに関連付けられた環境200の一実施形態を示す。モバイルアプリケーション105は、クライアント計算デバイス205のいずれかにインストールされ得る。モバイルアプリケーション105のインストールにより、クライアント計算デバイス205は、データプロバイダに依存しない変更取扱いロジックを含むようになる。クライアント計算デバイス205は、サーバ210、ワークステーション215、ラップトップ220、スマートフォン225、タブレットコンピュータまたは携帯情報端末(personal digital assistant:PDA)230、または他のコンピューティングデバイスといった、デバイスを含み得る。クライアント計算デバイス205は、インターネットなどの電子通信ネットワーク235に、有線または無線接続によって接続される。ネットワーク235はさらに、クラウドアプリケーションインフラストラクチャ240に、有線または無線接続によって接続される。クラウドアプリケーションインフラストラクチャは、ローカルネットワーク255によって各々相互接続された、1つ以上のサーバ245と、1つ以上のデータストレージデバイス250とを含む。
一実施形態では、図1を参照してクライアント側105に属するとして示され説明された特徴は、1つ以上のクライアント計算デバイス205によって実現され、サーバ側135に属するとして示され説明された特徴は、クラウドアプリケーションインフラストラクチャによって実現される。
一実施形態では、サーバ245は、リモートサービスプロバイダ131の機能性を実行するためのスタックとして構成され得る。たとえば、1つ以上のリモートサービスプロバイダ131がコンテナとして実現されてもよく、または、1つ以上のリモートサービスプロバイダ131は、コンテナとして実現されるウェブアプリケーションのコンポーネントである。ここでは、サーバ245は、コンテナ化されたリモートサービスプロバイダ131を実行するためのスタックとして構成される。あるいは、たとえば、1つ以上のリモートサービスプロバイダ131が仮想マシン上で実現されてもよく、または、1つ以上のリモートサービスプロバイダは、仮想マシン上で実現され得るウェブアプリケーションのコンポーネントである。ここでは、サーバ245は、リモートサービスプロバイダ131を実現する仮想マシンをホストするためのスタックとして構成される。あるいは、別の例では、1つ以上のリモートサービスプロバイダが、サーバ245のうちの1つ以上によって直接実行され得る。
ストレージデバイス250は、ソリッドステートメモリドライブ、ハードドライブディスク、ネットワーク接続ストレージ(network attached storage:NAS)デバイス、または他のストレージデバイスを含み得る。一実施形態では、ストレージデバイス250は、サーバ245のコンポーネントである。一実施形態では、データストア165に関連付けられたデータ構造が、ストレージデバイス250によってホストされる。
例示的なデータプロバイダに依存しない変更の仕様
一実施形態では、データオブジェクトとは、表データ構造における行を表わす行オブジェクトであり得る。行オブジェクトは、1つ以上の属性を含み得る。行オブジェクトはまた、「子」、すなわち、より高レベルの行オブジェクトの下位にある1つ以上の追加の行オブジェクトの集合への1つ以上のリンクを含み得る。行オブジェクトがインスタンス化されると、それには、各属性の番号および各属性についての記述を示す定義と、(利用可能であれば)各属性についての初期値とが提供される。
行オブジェクトにおける各属性について、行オブジェクトは、その属性についての元の値と、その属性についての更新値とを含む。モバイルアプリケーション110によってシステム100のサーバ側135のデータストア165から最初に検索されたデータは、持続性マネージャ125によって行オブジェクトの1つ以上のインスタンスとしてローカルストレージに格納される。データストア165から検索された属性の値は、行オブジェクトインスタンスの各属性についての元の値として格納される。モバイルアプリケーション110は、たとえばユーザインターフェイス115を通したユーザ入力に応答して、行オブジェクトインスタンスにおける1つ以上の属性の値を操作し得る。モバイルアプリケーション110はさらには、属性を追加するか、属性を削除するか、または、行オブジェクトインスタンス全体を削除し得る。行オブジェクトインスタンスへの変更は、属性についての更新値として格納される。モバイルアプリケーション110は、行オブジェクトインスタンスへの変更を、「保存」または「コミット」機能を実行することによって保存またはコミットし、これらの変更が行オブジェクトに適用されるべきであることを示し得る。
たとえば、属性の元の値がモバイルアプリケーション110によって変更された場合、属性の更新値は変更を格納するであろう。いかなる以前の更新値も、変更によって上書きされるであろう。別の例では、元の値が削除されることになっている場合、ヌル値またはブランク値が更新値に格納され得る。別の例では、属性自体が削除されることになっている場合、属性についての更新値は、削除を示す特殊値に変更され得る。別の例では、行オブジェクトインスタンス全体が削除されることになっている場合、行オブジェクトインスタンスのための一意キーである属性が、削除を示す特殊値に変更され得る。行オブジェクトインスタンスの元の値および更新値を追跡する他の方法も採用され得る。
一実施形態では、行オブジェクトインスタンスのための「保存」または「コミット」機能の実行は、その行オブジェクトインスタンスに対する、および、その行オブジェクトインスタンスからリンクされるすべての子行オブジェクトインスタンスに対する、変更データコンストラクタ175の実行を起動する。変更データコンストラクタ175は、行オブジェクトインスタンスにおけるすべての属性の元の値および更新値を解析して比較する。変更データコンストラクタ175は、行オブジェクトインスタンスへのすべての変更を記述する、データプロバイダに依存しない変更オブジェクトインスタンスを生成する。
一実施形態では、変更データコンストラクタ175は、表、表の列、または他のデータ構造を表わすオブジェクトといった、他のデータオブジェクトに適用され得る。
図3は、モバイルクライアントアプリケーションにおけるデータプロバイダに依存しない変更取扱いに関連付けられた、データプロバイダに依存しない変更オブジェクトのためのスキーマ300の一実施形態を示す。変更オブジェクトスキーマ300は、スキーマ300のライン02、列06~ライン05、列26で示されるような、行オブジェクトインスタンスにおけるすべての変更された属性(もしあれば)の属性入力305を含む。変更オブジェクトは、スキーマ300のライン02、列06~24で示されるような、0~n個の属性を含み得る。変更オブジェクトスキーマ300は、それらの属性への変更を記述する。変更オブジェクトスキーマ300はまた、スキーマ300のライン06、列06~ライン14、列22で示されるような、行オブジェクトインスタンスのすべての変更された子(もしあれば)の子入力310を含む。変更オブジェクトはまた、スキーマ300のライン06、列06~19で示されるような、0~m個の子を含み得る。変更オブジェクトスキーマ300は、これらの子の属性への変更を記述する。変更オブジェクトはこれらの変更を、データプロバイダに依存せず、データオブジェクトに依存しないフォーマットで記述する。
変更オブジェクトスキーマ300は、各属性入力305についての属性名315を含む。属性名315は、属性入力305がそのために生成される変更された行オブジェクト属性の名前である。一実施形態では、変更データコンストラクタ175は、行オブジェクトインスタンスのための変更オブジェクトインスタンスを生成する際に、属性入力305を生成する。変更データコンストラクタ175は、行オブジェクトインスタンスを解析して、変更された行オブジェクト属性の名前を識別する。変更データコンストラクタ175は、識別された名前を、スキーマ300のライン02、列06~18で示されるような、変更された行オブジェクト属性についての属性入力305の属性名(AttributeName)315として、変更オブジェクトインスタンスに追加する。
属性入力305は、スキーマ300のライン03、列31~66で示されるような、変更された行オブジェクト属性への変更の種類を示す変更のタイプ320を含む。変更のタイプ320は、「updated」(更新された)、「deleted」(削除された)、または「created」(作成された)のうちの1つであり得る。一実施形態では、変更データコンストラクタは、行オブジェクトインスタンスのための変更オブジェクトインスタンスを生成する際に、変更のタイプ320を提供する。変更データコンストラクタ175は、変更された属性の更新値を解析して、変更された行オブジェクト属性に加えられた変更のタイプを識別する。変更データコンストラクタ175は、識別されたタイプを、スキーマ300のライン03、列31~66で示されるような変更のタイプ320として、変更オブジェクトインスタンスに追加する。
「updated」というタイプは、変更された属性の元の値と更新値とが異なっており、その属性についての値の変更を示すことを意味する。変更のタイプが「updated」というタイプである場合、属性入力305は、スキーマ300のライン04、列31~48で示されるような、変更された属性の更新値を反映する値325をさらに含む。一実施形態では、変更データコンストラクタ175は、行オブジェクトインスタンスのための変更オブジェクトインスタンスを生成する際に、値325を抽出する。変更データコンストラクタ175は、変更された行オブジェクト属性の更新値を解析して、その値を識別する。変更データコンストラクタ175は、識別された値を、スキーマ300のライン04、列31~48で示されるような、値325についての「new value」(新たな値)として、変更オブジェクトインスタンスに追加する。
「created」というタイプは、変更された属性が行オブジェクトインスタンスに追加されたことを意味する。変更のタイプが「created」というタイプである場合、属性入力305は、スキーマ300のライン04、列31~48で示されるような、変更された属性(提供される場合)の更新値を反映する値325をさらに含む。一実施形態では、行オブジェクトインスタンスのための変更オブジェクトインスタンスを生成する際、変更データコンストラクタ175は、変更された(新たに作成された)行オブジェクト属性の更新値があるかどうかを判定する。更新値がある場合、変更データコンストラクタ175は、変更された(新たに作成された)属性の更新値を解析してその値を識別し、識別された値を、スキーマ300のライン04、列31~48で示されるような、値325についての「new value」として、変更オブジェクトインスタンスに追加する。特殊な事例では、属性名315が属性のための一意識別子または一意キーを示す場合、「created」というタイプは、行オブジェクトインスタンス全体が新たに作成されたことを意味する。一実施形態では、変更データコンストラクタ175は、変更された行オブジェクト属性の名前または属性名315を解析して、特殊な「行インスタンス生成」事例が当てはまるかどうかを判定し得る。
「deleted」というタイプは、315で命名された属性が行オブジェクトインスタンスから除去されたことを意味する。特殊な事例では、属性名315が属性のための一意識別子または一意キーを示す場合、「deleted」というタイプは、行オブジェクトインスタンス全体が削除されたことを意味する。一実施形態では、変更データコンストラクタ175は、変更された行オブジェクト属性の名前または属性名315を解析して、特殊な「行インスタンス削除」事例が当てはまるかどうかを判定し得る。
変更オブジェクトスキーマ300は、各子入力310についての子名330(またはトップレベルの属性)を含む。子名330は、子入力310がそのために生成される変更された行オブジェクト子の名前である。一実施形態では、変更データコンストラクタ175は、行オブジェクトインスタンスのための変更オブジェクトインスタンスを生成する際に、子入力310を生成する。変更データコンストラクタ175は、行オブジェクトインスタンスを解析して、変更された行オブジェクト子の名前を識別する。変更データコンストラクタ175は、識別された名前を、スキーマ300のライン06、列06~14で示されるような、変更された行オブジェクト子についての子入力310の子名(ChildName)330として、変更オブジェクトインスタンスに追加する。変更データコンストラクタ175はまた、スキーマ300のライン07、列26~39で示されるような、子310が属性構造ではなく子構造であることを示す構造のタイプ335を追加する。
各子入力310は、スキーマ300のライン8、列26~ライン13、列36で示されるような、行オブジェクトに関連付けられたサブオブジェクト、すなわち、「children」(子)340の集合を含む。行オブジェクトと子との間の関連付けは、「密結合される」として記述され得る。なぜなら、子によって格納された情報は、行オブジェクトから分離されれば意味がなくなり得るためである。たとえば、発注書のためのライン項目などの子は、発注書を記述する行オブジェクトインスタンスのコンテキスト以外では意味をなさず、アドレス行などの子は、連絡先を記述する行オブジェクトインスタンスのコンテキスト以外では有益でない。
子340の集合の各構成要素は、変更タイプ345(変更のタイプ320と同様)と、主キー350と、変更355のリストとを有する。一実施形態では、変更データコンストラクタ175は、行オブジェクトインスタンスを解析して、子340の集合の各構成要素の変更タイプおよび主キーを識別する。変更データコンストラクタ175は、識別された変更タイプを、スキーマ300のライン09、列41~74で示されるような変更タイプ345として、変更オブジェクトインスタンスに追加する。変更データコンストラクタ175は、識別された主キーを、スキーマ300のライン10、列41~68で示されるような主キー(primaryKey)350として、変更オブジェクトインスタンスに追加する。変更データコンストラクタ175は主キー値350を使用して、たとえば主キーによってサブ行(子340の集合の構成要素)を持続性マネージャ125から要求することにより、サブ行をローカルストレージから検索する。変更データコンストラクタ175は次に、検索されたサブ行を、上述されたような変更がないか解析して、サブ行への変更355の記述を作成する。これは、スキーマ300のライン11、列41~ライン12、列78で述べられるような、サブ行のためのスキーマ300のフォーマットに従う変更オブジェクトであり得る。子(サブ行)のための変更オブジェクトインスタンスのこの生成は、子をもう有していないサブ行に達するまで、子の連続層を通して再帰的に起こり得る。
変更オブジェクトは、データプロバイダに依存しない。なぜなら、それは、変更が最終的に向けられ得る任意のサービスプロバイダについてのプロバイダ定義の特定の詳細を含んでおらず、また、当該サービスプロバイダが更新のために必要とすることの単なる記述ではなく、ユーザによってオブジェクトに対して行なわれたアクションの記述をとらえるためである。このため、変更オブジェクトは、任意のサービスプロバイダのそれぞれのデータプロバイダ130を通して、当該サービスプロバイダ131へ損失なくルーティングされ得る。これは、複数のサービスプロバイダを通した「オフライン書込み」または「延期された書込みアクセス」を可能にする。これはまた、書込みアクセスが再開する前にプロバイダ定義が修正される場合に「オフライン書込み」または「延期された書込みアクセス」を可能にする。
変更オブジェクトは、データオブジェクトに依存しない。なぜなら、それは、それが記述しているデータオブジェクトのインスタンスについてのデータオブジェクト定義の特定の詳細を含んでいないためである。このため、変更オブジェクトは、行オブジェクトインスタンスを記述する定義への変更をサポートすることができる。たとえば、変更オブジェクトは、値を更新または削除するだけでなく、属性自体の追加または削除を可能にする。
図4は、例示的な行オブジェクトインスタンスに加えられたさまざまな変更を記述する、例示的なデータプロバイダに依存しない変更オブジェクトインスタンス400を示す。例示的な行オブジェクトインスタンス、および、変更オブジェクトインスタンス400によって記述されるその例示的な行オブジェクトインスタンスへの変更は、ここに説明されるさまざまな特徴を示すよう意図される。
例示的な変更オブジェクトインスタンス400は、モバイルアプリケーション110によって例示的な行オブジェクトに対して行なわれた変更の記録である。記録された変更は次に、データプロバイダ130によって読出されて、記録された変更をデータストア165において有効にするように対応するリモートサービスプロバイダ131に命令するフォーマットに変換され得る。例示的な変更オブジェクトインスタンス400によって記述された例示的な行オブジェクトへの変更は、以下のとおりである。
ライン02の405で、例示的な行オブジェクトインスタンスから「SrNumber」という属性が削除される。
ライン03の410で、例示的な行オブジェクトインスタンスにおける「Title」(タイトル)という属性が、「new title」(新タイトル)という値を有するように更新される。
ライン04の415で、「ABC」という属性が例示的な行オブジェクトインスタンスに追加され、「123」という値を割り当てられる。
ライン05~33の420は、「contacts」(連絡先)と呼ばれる子セットに対する動作を記述する。
ライン08~15の425で、「111」という主キーを有する第1の子オブジェクトインスタンスが更新される。ライン12の430で、第1の子オブジェクトインスタンスの「JobTitle」(仕事の役職)という属性が、「New Title」(新役職)という値を有するように更新される。ライン13の435で、「XYZZY」という属性が第1の子オブジェクトインスタンスに追加され、「345」という値を割り当てられる。
ライン16~22の440で、「222」という主キーを有する第2の子オブジェクトインスタンスが更新される。ライン20の445で、第2の子オブジェクトインスタンスから「PhoneNumber」(電話番号)という属性が削除される。なお、変更が第2の子オブジェクトインスタンスから「PhoneNumber」という属性を削除するにもかかわらず、第2の子オブジェクトインスタンスに対するアクションのタイプは「deleted」ではなく「updated」である。以下のライン31の450を参照して同様に示されるように、「deleted」というタイプのアクションは、オブジェクトインスタンスを削除するために動作する。
ライン23~29の455で、「777」という主キーを有する第3の子オブジェクトインスタンスが作成される。ライン27の460で、第3の子オブジェクトインスタンスの「MemberID」(メンバーID)という属性が、「777」という値を有するように更新される。ライン28の460で、第3の子オブジェクトインスタンスの「Title」という属性が、「Support Level 1」(サポートレベル1)という値を有するように更新される。
ライン31の450で、123という主キーを有する第4の子オブジェクトインスタンスが削除される。
このため、一実施形態では、(データオブジェクトに対するアクションの記述の依存しないシンタックスとして記述され得る)変更オブジェクトは、アクションが変更するデータオブジェクトの各属性について、(i)その属性への変更が「更新」、「削除」または「作成」アクションのうちの1つであるという指示と、(ii)変更が「更新」または「作成」アクションである場合、その属性についての新たな値の指示とを含む。変更オブジェクトはまた、アクションが変更するデータオブジェクトの各子オブジェクトについて、(i)子オブジェクトが子オブジェクトであるという指示と、(ii)子オブジェクトへの変更が「更新」、「削除」または「作成」アクションのうちの1つであるという指示と、(iii)子のための主キーの値の指示と、(iv)その子オブジェクトへの変更の指示とを含み得る。ここで、変更の指示は、依存しないシンタックスを使用して記述され得る。
データプロバイダに依存しない変更取扱いのための例示的な方法
一実施形態では、ここに説明されるコンピュータにより実現される方法の各ステップは、(i)メモリ(図9を参照して示され説明されるメモリ915および/または他のコンピューティングデバイスコンポーネントなど)にアクセスし、(ii)システムに方法のステップを実行させるためのロジック(図9を参照して示され説明される未達成デマンド最小化ロジック930など)を用いて構成された、1台以上のコンピューティングデバイスのプロセッサ(図9を参照して示され説明されるようなプロセッサ910など)によって行なわれ得る。たとえば、プロセッサは、ここに説明されるコンピュータにより実現される方法のステップを行なうために、メモリにアクセスし、メモリから読出すかまたはメモリに書込む。これらのステップは、(i)任意の必要な情報を検索することと、(ii)任意のデータを計算し、求め、生成し、分類し、または他の態様で作成することと、(iii)計算され、求められ、生成され、分類され、または他の態様で作成された任意のデータを格納することとを含み得る。ストレージまたは格納への言及は、コンピューティングデバイスのメモリまたはストレージ/ディスク(図9を参照して示され説明されるコンピューティングデバイス905またはリモートコンピュータ965のメモリ915またはストレージ/ディスク935など)におけるデータ構造としてのストレージを示す。一実施形態では、プロセッサは、図10を参照して示され説明されるモバイルデバイス1000などのモバイルデバイスの信号処理および/または制御回路1020である。
一実施形態では、方法の次のステップの各々は、前のステップが少なくとも次のステップが始まるのに必要な程度まで行なわれたことを示す受信された信号または検索された格納されたデータを解析したことに応答して、始まる。一般に、受信された信号または検索された格納されたデータは、前のステップの完了を示す。方法の各ステップは複数のサブステップを含み得るが、それらはここで説明される場合もあれば説明されない場合もある。
一実施形態では、ここに説明される方法のステップは、(図2を参照して示され説明されたような)クライアント計算デバイス205によって行なわれる。一実施形態では、クライアント計算デバイス205は、データプロバイダに依存しない変更取扱いロジックを用いて構成された専用コンピューティングデバイス(コンピューティングデバイス905など)である。
図5は、モバイルクライアントアプリケーションにおけるデータプロバイダに依存しない変更取扱いに関連付けられた方法500の一実施形態を示す。方法500は、(i)システム100のユーザ(またはアドミニストレータ)が方法500を起動したこと、(ii)モバイルアプリケーション110のユーザが「変更を保存する」または「変更をコミットする」という動作を起動したこと、(iii)(モバイルアプリケーション110を実行する)クライアント計算デバイス205がクラウドアプリケーションインフラストラクチャ240へのネットワーク接続性を有していないかまたはネットワーク接続性が不良であること、もしくは、(iv)モバイルアプリケーション110に関連付けられた1つ以上のリモートサービスプロバイダ131が低い利用可能性を有するかまたは要求を処理する能力を有していないことを示す、信号をネットワークを通して受信すること、または格納されたデータを解析することといったさまざまなトリガに基づいて、起動され得る。方法500は、受信された信号または検索された格納されたデータを解析することと、信号または格納されたデータが方法500を始めるべきであることを示すと判定することとに応答して、開始ブロック505で起動する。処理は、処理ブロック510へ続く。
処理ブロック510で、プロセッサは、リモートデータストアに格納されたデータオブジェクトに対する作成、更新または削除アクションを示す、モバイルデバイスに対する入力を受信する。
一実施形態では、クライアント計算デバイス205のプロセッサは、データオブジェクトに対する1つ以上の作成、更新または削除動作を記述する、ユーザインターフェイス115を通して受信された1つ以上の入力を受け付ける。データオブジェクトは、アプリケーション110に関連付けられ得る。データオブジェクトは、行オブジェクトの特定のインスタンスであり得る。
一実施形態では、プロセッサは入力を解析して、作成、更新または削除動作と、作成、更新または削除されることになっているデータオブジェクトの属性と、その属性についての値(任意の値が提供される場合)とを識別する。(一実施形態では、データオブジェクトの複数の属性が、入力に基づいて作成、更新および/または削除されることになっている。単一の属性に関して説明されるステップは、データオブジェクトの複数の属性のために適用され得る。)プロセッサは、識別された作成、更新または削除動作を、クライアント計算デバイス205上にローカルに格納されたデータオブジェクトのローカルコピーに適用する。
たとえば、動作が更新動作である場合、プロセッサは、属性についての値を、データオブジェクトのローカルコピーにおけるその属性のための更新フィールドに書込む。または、たとえば、動作が作成動作である場合、プロセッサは、作成されることになっている属性をデータオブジェクトに付加し、属性についての値を、その属性のための更新フィールドに書込む。または、別の例では、動作が削除動作である場合、プロセッサは、属性の削除を示す特殊値を、その属性のための更新フィールドに書込む。
一実施形態では、プロセッサは入力を解析して、データオブジェクト全体が作成されることになっていると判定する。プロセッサは、クライアント計算デバイス205上にローカルに格納されたデータオブジェクトのローカルインスタンスを作成し、入力において検出された属性についての任意の値を、それぞれの属性のための更新フィールドに書込む。プロセッサは、新しい主キーを、主キー属性のための更新フィールドに書込む。
一実施形態では、プロセッサは入力を解析して、データ全体が削除されることになっていると判定する。プロセッサは、主キー(または一意識別子)の削除を示す特殊値を、主キーのための更新フィールドに書込む。
一実施形態では、プロセッサは、持続性マネージャ125の1つ以上の機能を実行することによって、更新フィールドへの書込みを含む、ローカルストレージとの対話を行なう。
プロセッサが、リモートデータストアに格納されたデータオブジェクトに対する作成、更新または削除アクションを示す、モバイルデバイスに対する入力を受信することをこのようにいったん完了すると、処理ブロック510での処理は完了し、処理は処理ブロック515へ続く。
処理ブロック515で、入力の受信に応答して、プロセッサは、データオブジェクトに対するアクションの記述を、リモートデータストアと対話するために使用されるリモートサービスプロバイダのタイプに関して依存しないシンタックスで作成する。
一実施形態では、クライアント計算デバイスのプロセッサは、入力によって示されたデータオブジェクトへの変更が保存またはコミットされることになっていることを示す入力を解析する。これに応答して、プロセッサは、データオブジェクトのローカルコピーを解析して、各属性のための元のフィールドおよび更新フィールドに格納された値を識別する。プロセッサは、各属性について、更新フィールド値を元のフィールド値と比較する。これらの値が異なる場合、プロセッサは、属性についての元のフィールド値と更新フィールド値との間の変更の記述を生成し、それを、ローカルストレージにおけるデータオブジェクトのためのデータプロバイダに依存しない変更オブジェクトに書込む。変更オブジェクトは、データオブジェクトに特有である。一実施形態では、プロセッサは、変更データコンストラクタ175の1つ以上の機能を実行することによって、変更オブジェクトの作成を行なう。
たとえば、属性が主キーであり、その属性についての更新フィールド値が削除を示す特殊値である場合、変更データコンストラクタ175は、例示的な変更オブジェクトインスタンス400のライン31の450で示された記述と同様に、元のフィールド値の主キーについて変更のタイプが「deleted」であることを示す記述を書込むであろう。または、たとえば、属性が主キーではなく、更新フィールド値が削除を示す特殊値である場合、変更データコンストラクタ175は、例示的な変更オブジェクトインスタンス400のライン02の405で示された記述と同様に、その属性について変更のタイプが「deleted」であることを示す記述を書込むであろう。または、別の例では、更新フィールド値が削除を示す特殊値ではないものの、元のフィールド値とは異なる場合、変更データコンストラクタ175は、例示的な変更オブジェクトインスタンス400のライン03の410で示された記述と同様に、その属性についての変更のタイプが「updated」であることと、その属性についての値が更新フィールド値であることと示す記述を書込むであろう。または、さらに別の例では、属性が主キーではなく、元のフィールド値がヌルであるかまたはこの属性について以前の値がなかったことを他の態様で示し、かつ、更新フィールド値が代入される場合、変更データコンストラクタ175は、属性についての変更のタイプが「created」であることと、その属性についての値が更新フィールド値であることとを示す記述を書込むであろう。または、さらに別の例では、属性が主キーであり、元のフィールド値がヌルであるかまたは主キーが以前なかったことを他の態様で示し、かつ、更新フィールド値が代入される場合、変更データコンストラクタ175は、更新フィールド値の主キーについて変更のタイプが「created」であることを示す記述を書込むであろう。
一実施形態では、プロセッサは、データオブジェクトのローカルコピーの属性の更新フィールドに格納された値が、1つ以上の子データ構造へのポインタ、リンク、または他の接続であると判定する。プロセッサは属性を解析して子データ構造の位置を判定し、それらをストレージから検索する。プロセッサは次に子データ構造を解析して、何らかの変更がそれらに加えられたかどうかを判定する。変更が加えられた場合、変更データコンストラクタ175は、例示的な変更オブジェクトインスタンス400のライン05~33の420で示された子入力と同様に、データオブジェクトのローカルコピーが子データ構造を有することを示す子入力を変更データオブジェクトに書込むであろう。この子入力は、例示的な変更オブジェクトインスタンス400のライン05で示された「contacts」という名前といった、子構造のためのトップレベルの属性名を含み得る。この子入力は、たとえば例示的な変更オブジェクトインスタンス400のライン06で示されるように、子入力が属性構造ではなく子構造であることを示す構造のタイプを含み得る。子入力は、たとえば例示的な変更オブジェクトインスタンス400のライン09および10で示されるように、子入力に含まれる子データ構造についての変更のタイプと、子入力に含まれる子データ構造を識別するための主キーとを含み得る。子入力は、たとえば例示的な変更オブジェクトインスタンス400のライン12の430およびライン13の435で示されるように、親変更オブジェクトと同じスキーマ300に再帰的に従う子データ構造の属性への変更のリストを含み得る。
プロセッサが、入力の受信に応答して、データオブジェクトに対するアクションの記述を、リモートデータストアと対話するために使用されるリモートサービスプロバイダのタイプに関して依存しないシンタックスで作成することをこのようにいったん完了すると、処理ブロック515での処理は完了し、処理は処理ブロック520へ続く。
処理ブロック520で、プロセッサは、第1のリモートサービスプロバイダにアクションを実行させるように構成されたコマンドを作成するために、アクションの記述を第1のリモートサービスプロバイダのシンタックスに変換する。
一実施形態では、クライアント計算デバイス205のプロセッサは、リモートRESTプロバイダ151といった第1のリモートサービスプロバイダによって受け付けられるデータタイプについての1つ以上の定義と、第1のリモートサービスプロバイダと対話するためのシンタックスのコピーとをすでに受信している。これらの定義およびシンタックスは、RESTデータプロバイダ150といった、第1のリモートサービスプロバイダに対応するローカルの第1のデータプロバイダによって、ローカルストレージで維持される。データプロバイダ130とリモートサービスプロバイダ131との各ペアリングは、そのペアに特有の定義およびシンタックスを有し得る。
一実施形態では、変更のタイプが更新である場合、プロセッサは、行オブジェクトのローカルコピーのデータタイプに対応する定義を求めて、これらの定義をサーチする。プロセッサは次に、変更オブジェクトにおいて順番にリストされた各属性入力の属性名を求めて、その定義をサーチする。その定義で属性名が見つかると、プロセッサはシンタックスにアクセスして、その属性入力がその属性入力によって記録された変更を有効にするための命令を作成する。プロセッサは、第1のリモートサービスプロバイダが新たな値をデータストア165におけるデータオブジェクトの属性に割り当てるようにするために、「更新」タイプ変更のためのシンタックスに従って電子メッセージを作成するであろう。
たとえば、例示的な変更オブジェクトインスタンス400のライン03の410で示された「Title」という属性についての属性入力を解析したことに応答して、プロセッサは、「Title」という属性についての行オブジェクトのこの特定のタイプに対応する定義をサーチするであろう。プロセッサは、「更新」タイプの変更動作のためのシンタックスを検索するであろう。プロセッサは、第1のリモートサービスプロバイダが「New Title」という値をデータストア165におけるデータオブジェクトのタイトル属性に割り当てるようにするために、「更新」タイプ変更のためのシンタックスに従って電子メッセージを作成するであろう。
一実施形態では、変更のタイプが作成である場合、プロセッサは、「作成」タイプの変更動作のためのシンタックスを検索する。プロセッサは、第1のリモートサービスプロバイダがデータストア165におけるデータオブジェクトの新たな属性を作成する(または、特殊な事例では、新たなデータオブジェクト全体を作成する)ようにするために、「作成」タイプ変更のためのシンタックスに従って電子メッセージを作成するであろう。
一実施形態では、変更のタイプが削除である場合、プロセッサは、「削除」タイプの変更動作のためのシンタックスを検索する。プロセッサは、第1のリモートサービスプロバイダがデータストア165におけるデータオブジェクトの属性を削除する(または、特殊な事例では、データオブジェクト全体を削除する)ようにするために、「削除」タイプ変更のためのシンタックスに従って電子メッセージを作成するであろう。
変更オブジェクトによって示され得る各タイプの変更動作ごとに、電子メッセージを作成する意味論が、データオブジェクトのためのデータタイプの定義によって定められる。また、フィールドが必須であり、編集のためにロックされ、削除不能であるかどうか、および、フィールドがデータオブジェクトに追加され得るかどうかも、データタイプの定義によって定められる。
一実施形態では、プロセッサは、データプロバイダ130の1つ以上の機能を実行することによって、電子メッセージの作成を行なう。
一実施形態では、プロセッサは、シンタックスおよび/または定義を更新する。たとえば、プロセッサは、(i)第1のリモートサービスプロバイダへのネットワーク接続性が回復されたとの判定、または(ii)第1のリモートサービスプロバイダがトランザクションを処理するために利用可能性を再開したとの判定に応答して、シンタックスおよび/または定義をダウンロードする。一例では、プロセッサがそうし得るのは、それが、サービスプロバイダのネットワーク接続性が中断されたかまたは利用不能である間に、定義またはシンタックスの新バージョンが第1のリモートサービスプロバイダによって実現されたことを検出した場合である。
一実施形態では、第1のリモートサービスプロバイダのシンタックスがモバイルデバイスに格納され、第1のリモートサービスプロバイダからデータオブジェクトのタイプについての意味論の記述を検索することをさらに含む。アクションの記述を第1のリモートサービスプロバイダのシンタックスに変換することは、意味論の検索された記述に基づいている。
プロセッサが、第1のリモートサービスプロバイダにアクションを実行させるように構成されたコマンドを作成するために、アクションの記述を第1のリモートサービスプロバイダのシンタックスに変換することをこのようにいったん完了すると、処理ブロック520での処理は完了し、処理は処理ブロック525へ続く。
処理ブロック525で、プロセッサは、アクションがリモートデータストアにおけるデータオブジェクトに対して行なわれるようにするために、コマンドをネットワークを通して第1のリモートサービスプロバイダへ送信する。
一実施形態では、クライアント計算デバイス205のプロセッサは、生成されたメッセージを第1のデータプロバイダを使用してローカルメモリから検索し、それを第1のデータプロバイダに対応する第1のリモートサービスプロバイダにアドレス指定し、それをコマンドとしてネットワークを通して第1のリモートサービスプロバイダへ送信して、アクションがリモートデータストアにおけるデータオブジェクトに対して行なわれるようにする。
プロセッサが、アクションがリモートデータストアにおけるデータオブジェクトに対して行なわれるようにするために、コマンドをネットワークを通して第1のリモートサービスプロバイダへ送信することをこのようにいったん完了すると、処理ブロック525での処理は完了し、処理は終了ブロック530へ続き、そこで方法500は終了する。
コマンドの受信に応答して、第1のリモートサービスプロバイダはコマンドを解析して、データストア165などのデータストアにおけるデータオブジェクトに対してアクションを有効にするようにデータベースコマンドを作成する。データベースコマンドは、リレーショナルデータベースなどのデータベースと対話するための構造化クエリ言語(structured query language:SQL)または他の言語で作成され得る。第1のリモートサービスプロバイダは、データベースコマンドをデータストア165へ送信し、それは、データオブジェクトに対してアクションを実行する。
延期された書込みアクセスの状況への適用
図6は、モバイルクライアントアプリケーションにおけるデータプロバイダに依存しない変更取扱いを使用する延期された書込みアクセスに関連付けられた方法600の一実施形態を示す。方法600は、(i)システム100のユーザ(またはアドミニストレータ)が方法600を起動したこと、(ii)モバイルアプリケーション110のユーザが「変更を保存する」または「変更をコミットする」という動作を起動したこと、(iii)(モバイルアプリケーション110を実行する)クライアント計算デバイス205がクラウドアプリケーションインフラストラクチャ240へのネットワーク接続性を有していないかまたはネットワーク接続性が不良であること、もしくは、(iv)モバイルアプリケーション110に関連付けられた1つ以上のリモートサービスプロバイダ131が低い利用可能性を有するかまたは要求を処理する能力を有していないことを示す、信号をネットワークを通して受信すること、または格納されたデータを解析することといったさまざまなトリガに基づいて、起動され得る。方法600は、受信された信号または検索された格納されたデータを解析することと、信号または格納されたデータが方法600を始めるべきであることを示すと判定することとに応答して、開始ブロック605で起動する。処理は、処理ブロック610および615を通って、延期された書込みアクセスループ620へ続く。処理ブロック610および615はそれぞれ、図5に関して示され説明されたような処理ブロック510および515についての説明と同様の態様で実行される。
処理は、判定ブロック625で続く。一実施形態では、判定ブロック625で、クライアント計算デバイス205のプロセッサは、第1のリモートサービスプロバイダが利用不能であるかどうかを検出する。たとえば、プロセッサは、第1のリモートサービスプロバイダをホストするサーバ245のインターネットプロトコル(internet protocol:IP)アドレスをピング(ping)して、クライアント計算デバイス205とサーバ245との間のネットワーク待ち時間を判定し得る。プロセッサは次に、検出されたネットワーク待ち時間を、クライアント計算デバイス205とサーバ245との間のネットワーク接続が遅いか、不良であるか、または他の態様で制限されていることを示すしきい値と比較する。別の例では、プロセッサは、サーバ245のIPアドレスをピングし、サーバから応答が受信されないと判定することによって、クライアント計算デバイス205とサーバ245との間でネットワークが切断されていることを検出し得る。別の例では、プロセッサは、第1のリモートサービスプロバイダから、それがオフラインまたは使用中であるというメッセージを受信して解析することによって、第1のリモートサービスプロバイダが低い利用可能性を有するかまたは利用可能性を有していないことを検出し得る。しきい値を上回る場合、または、ネットワークが切断されている場合、または、第1のリモートサービスプロバイダがそれはダウンしているかまたは使用中である(高い処理負荷を有する)と報告する場合、第1のリモートサービスプロバイダは利用不能であり(「いいえ」)、処理は処理ブロック630へ進む。そうではない場合、第1のリモートサービスプロバイダは利用可能であり(「はい」)、処理は処理ブロック635へ続く。
処理ブロック630で、プロセッサは、モバイルデバイスに対するアクションの記述を格納する。一実施形態では、プロセッサは、変更オブジェクトをローカルメモリに書込むために持続性マネージャ125を実行する。処理ブロック630での処理は完了し、判定ブロック640へ進む。
判定ブロック640で、プロセッサは、判定ブロック625と同様の態様で、それが、第1のリモートサービスプロバイダが利用可能であるという指示を受信したかどうかを判定する。たとえば、プロセッサはサーバ245をピングして、ネットワーク待ち時間がしきい値を下回ったと判定し得る。または、プロセッサはサーバ245をピングして、ネットワーク接続が復旧されたと判定し得る。または、プロセッサは、第1のリモートサービスプロバイダから、それが利用可能であるか、あるいは、もはやオフラインまたは使用中でないというメッセージを受信して解析し得る。プロセッサがこれらの指示のうちのいずれかを受信する場合(「はい」)、第1のリモートサービスプロバイダは利用可能であり、処理は処理ブロック635へ続く。そうではない場合(「いいえ」)、処理は処理ブロック645へ続く。処理ブロック645で、プロセッサは、設定された時間間隔、たとえば1~10分間待ってから、判定ブロック640へ戻り、第1のリモートサービスプロバイダが利用可能であるという指示があるかどうかを判定する。これは、第1のリモートサービスプロバイダが利用可能であるという指示がモバイルデバイスによって受信される後まで、処理ブロック635で説明されるコマンドの作成を遅らせる効果がある。
処理は、処理ブロック635および650を通って終了ブロック655へ続き、そこで方法600は終了する。処理ブロック635および650はそれぞれ、図5に関して示され説明されたような処理ブロック520および525についての説明と同様の態様で実行される。
複数のリモートサービスプロバイダへの適用
図7は、モバイルクライアントアプリケーションにおけるデータプロバイダに依存しない変更取扱いを使用する、複数のリモートサービスプロバイダを通した延期された書込みアクセスに関連付けられた方法700の一実施形態を示す。方法700は、(i)システム100のユーザ(またはアドミニストレータ)が方法700を起動したこと、(ii)モバイルアプリケーション110のユーザが「変更を保存する」または「変更をコミットする」という動作を起動したこと、(iii)(モバイルアプリケーション110を実行する)クライアント計算デバイス205がクラウドアプリケーションインフラストラクチャ240へのネットワーク接続性を有していないかまたはネットワーク接続性が不良であること、もしくは、(iv)モバイルアプリケーション110に関連付けられた1つ以上のリモートサービスプロバイダ131が低い利用可能性を有するかまたは要求を処理する能力を有していないことを示す、信号をネットワークを通して受信すること、または格納されたデータを解析することといったさまざまなトリガに基づいて、起動され得る。方法700は、受信された信号または検索された格納されたデータを解析することと、信号または格納されたデータが方法700を始めるべきであることを示すと判定することとに応答して、開始ブロック705で起動する。処理は、処理ブロック710および715を通って、延期された書込みアクセスループ720へ続く。処理ブロック710および715はそれぞれ、図5に関して示され説明されたような処理ブロック510および515についての説明と同様の態様で実行される。
処理は、判定ブロック725で続く。一実施形態では、判定ブロック725で、クライアント計算デバイス205のプロセッサは、たとえば、図6を参照して示され説明されたような、第1のリモートサービスプロバイダに関して判定ブロック625で行なわれた分析と同様の分析を行なうことによって、第1のリモートサービスプロバイダが利用不能であるかどうかを検出する。第1のリモートサービスプロバイダが利用可能である場合(「いいえ」)、処理は、処理ブロック730および735を通って終了ブロック740へ進み、そこで方法700は終了する。処理ブロック730および735はそれぞれ、図5に関して示され説明されたような処理ブロック520および525についての説明と同様の態様で、第1のリモートサービスプロバイダに関して実行される。
判定ブロック745を再度参照して、第1のリモートサービスプロバイダが利用不能である場合(「はい」)、処理は判定ブロック745へ続く。一実施形態では、判定ブロック745で、クライアント計算デバイス205のプロセッサは、たとえば、図6を参照して示され説明されたような、第1のリモートサービスプロバイダに関して判定ブロック625で行なわれた分析と同様の分析を行なうことによって、第2のリモートサービスプロバイダが利用不能であるかどうかを検出する。第2のリモートサービスプロバイダが利用可能である場合(「いいえ」)、処理は、処理ブロック750および755を通って終了ブロック740へ進み、そこで方法700は終了する。処理ブロック750および755はそれぞれ、図5に関して示され説明されたような処理ブロック520および525についての説明と同様の態様で、第2のリモートサービスプロバイダに関して実行される。このため、第1のリモートサービスプロバイダが何らかの理由で利用不能である場合、第2のリモートサービスプロバイダが変更を取扱い得る。一実施形態では、第1のリモートサービスプロバイダがコマンドを受信するために利用不能であると判定した後で、第1のリモートサービスプロバイダはコマンドを受信するために利用不能であるという判定に応答して、コマンドを第2のリモートサービスプロバイダのシンタックスで作成することと、コマンドを第2のリモートサービスプロバイダへ送信することが行なわれる。一実施形態では、第2のリモートサービスプロバイダは、第1のリモートサービスプロバイダとは異なるタイプのプロバイダである。たとえば、第1のリモートサービスプロバイダは、リモートRESTタイプのサービスプロバイダ151であってもよく、一方、第2のリモートサービスプロバイダは、リモートエラスティックタイプのサービスプロバイダ156であるか、または他のタイプのリモートサービスプロバイダである。
判定ブロック745を再度参照して、第2のリモートサービスプロバイダが利用不能である場合(「はい」)、処理は判定ブロック760へ続く。一実施形態では、判定ブロック760で、クライアント計算デバイス205のプロセッサは、たとえば、図6を参照して示され説明されたような、第1のリモートサービスプロバイダに関して判定ブロック625で行なわれた分析と同様の分析を行なうことによって、第Nのリモートサービスプロバイダが利用不能であるかどうかを検出する。第Nのリモートサービスプロバイダが利用可能である場合(「いいえ」)、処理は、処理ブロック765および770を通って終了ブロック740へ進み、そこで方法700は終了する。処理ブロック765および770はそれぞれ、図5に関して示され説明されたような処理ブロック520および525についての説明と同様の態様で、第2のリモートサービスプロバイダに関して実行される。このため、任意の数の利用可能なリモートサービスプロバイダが、延期された書込みアクセスループ720におけるフェイルオーバーシーケンスに含まれ得る。この事例はしたがって、第1のN-1個のリモートサービスプロバイダがコマンドを受信するために利用不能であると判定した後で、N-1個のリモートサービスプロバイダはコマンドを受信するために利用不能であるという判定に応答して、コマンドを第Nのリモートサービスプロバイダのシンタックスで作成することと、コマンドを第Nのリモートサービスプロバイダへ送信することとが行なわれる、ということに一般化され得る。
判定ブロック760を再度参照して、第Nのリモートサービスプロバイダが利用不能である場合(「はい」)、処理は処理ブロック775へ続く。処理ブロック775で、プロセッサは、プロセッサは、モバイルデバイスに対するアクションの記述を格納し、処理は判定ブロック780で続く。判定ブロック780で、プロセッサは、第1~第Nのリモートサービスプロバイダのいずれかが利用可能であるという指示があるかどうかを判定する。利用可能である場合(「はい」)、処理は判定ブロック725に戻り、利用可能なリモートサービスプロバイダを使用し続ける。利用可能でない場合(「いいえ」)、処理は処理ブロック785へ続き、そこでプロセスはある期間の間待ち、それから判定ブロック780へ戻る。プロセス要素775、780、および785は、図6を参照して示され説明されたようなプロセス要素630、640、および645と同様の態様で行なわれる。
複数のリモートサービスプロバイダからの選択
図8は、モバイルクライアントアプリケーションにおけるデータプロバイダに依存しない変更取扱いを使用する、選択可能な代替サービスプロバイダを通した延期された書込みアクセスに関連付けられた方法800の一実施形態を示す。方法800は、(i)システム100のユーザ(またはアドミニストレータ)が方法800を起動したこと、(ii)モバイルアプリケーション110のユーザが「変更を保存する」または「変更をコミットする」という動作を起動したこと、(iii)(モバイルアプリケーション110を実行する)クライアント計算デバイス205がクラウドアプリケーションインフラストラクチャ240へのネットワーク接続性を有していないかまたはネットワーク接続性が不良であること、もしくは、(iv)モバイルアプリケーション110に関連付けられた1つ以上のリモートサービスプロバイダ131が低い利用可能性を有するかまたは要求を処理する能力を有していないことを示す、信号をネットワークを通して受信すること、または格納されたデータを解析することといったさまざまなトリガに基づいて、起動され得る。方法800は、受信された信号または検索された格納されたデータを解析することと、信号または格納されたデータが方法800を始めるべきであることを示すと判定することとに応答して、開始ブロック805で起動する。処理は、処理ブロック810および815を通って、判定ブロック820へ続く。処理ブロック810および815はそれぞれ、図5に関して示され説明されたような処理ブロック510および515についての説明と同様の態様で実行される。
判定ブロック820で、プロセッサは、リモートデータストアへのアクセスを各々有する1組の2つ以上のリモートサービスプロバイダの中から、1つのリモートサービスプロバイダを選択する。リモートサービスプロバイダ1~Nという2つ以上のリモートサービスプロバイダの中からの選択は、リモートサービスプロバイダが1つ以上の基準を満たすことに基づいている。プロセッサは、1つ以上の基準をローカルストレージから検索する。基準は、たとえば、(i)リモートサービスプロバイダの現在の利用可能性、および(ii)リモートサービスプロバイダに提供されることになっているアクションの複雑性、のうちの1つ以上であり得る。
現在の利用可能性に関し、プロセッサは、図6を参照して示され説明されたような判定ブロック625および640と同様のプロセスで、リモートサービスプロバイダの各々の利用可能性を評価し、各リモートサービスプロバイダがどの程度利用可能であるかを判定し得る。プロセッサは、たとえば、ネットワーク接続性、ネットワーク待ち時間、および、リモートサービスプロバイダへの負荷のうちの1つ以上に基づいて、リモートサービスプロバイダの相対的な利用可能性を比較する。プロセッサは、プロセッサによって採用された利用可能性メトリックに基づいて、最も利用可能なサービスプロバイダを選択する。
アクションの複雑性に関し、リモートエラスティックプロバイダ156およびリモートグラフクエリプロバイダ146は、リモートRESTプロバイダ151またはリモートXMLプロバイダ141と比べて性能優位性を有し得る。たとえば、リモートグラフクエリプロバイダ146は、(GraphQLで書かれた)複雑な統一されたクエリを処理することができ、一方、リモートRESTプロバイダ151またはリモートXMLプロバイダ141は、同じ結果を達成するために複数の対話を必要とし得る。また、たとえば、リモートエラスティックプロバイダ156は、クエリをより迅速に処理することができる。なぜなら、それは、リモートRESTプロバイダ151またはリモートXMLプロバイダ141との対話に応答してデータストア165からデータを断片的にクエリするのではなく、サーバ245で永続的データストアを保持するためである。一実施形態では、プロセッサは、アクションに含まれる変更の数に基づいて、アクションが複雑であるかどうかを評価する。変更の数が、単純なアクションを示すしきい値を下回る場合、たとえば10個未満である場合、プロセッサは、利用可能なリモートサービスプロバイダの中から、リモートRESTプロバイダ151またはリモートXMLプロバイダ141といった、単純なアクションを取扱うためのリモートサービスプロバイダを選択する。しきい値を満たすかまたは上回る場合、プロセッサは、利用可能なリモートサービスプロバイダの中から、リモートエラスティックプロバイダ156またはリモートグラフクエリプロバイダ146といった、複雑なアクションを取扱うことができるリモートサービスプロバイダを選択する。
例示的な使用事例
一実施形態では、モバイルアプリケーション110は、電子商取引システムの一環として発注書を提示して編集するためのアプリケーションである。データストア165は、発注書を表わす多くの行オブジェクトを含む。例示的な発注書を表わす例示的な行オブジェクトが、モバイルアプリケーション110によってデータストア165からデータプロバイダおよびその対応するリモートサービスプロバイダを通して検索され、持続性マネージャ125を使用してクライアント側105のクライアントデバイス205のローカルストレージに格納される。モバイルアプリケーション110のユーザが、ユーザインターフェイス115を通して入力を入力して、例示的な発注書を操作する。ユーザインターフェイス115は、例示的な行オブジェクトに変更を加える。ユーザは次に、ユーザインターフェイス115によって提示されるオプションを選択して、例示的な発注書に加えられた変更を保存またはコミットする。
保存またはコミット動作に応答して、変更データコンストラクタ175は、例示的な行オブジェクトに加えられた変更を解析して、例示的な行オブジェクトへのすべての変更を、データプロバイダに依存しない変更オブジェクトに記録する。たとえば、例示的な行への変更は、「購入者名」という属性の更新を含み得る。また、たとえば、例示的な行への変更は、発注書におけるライン項目の「数量」という属性の「5」から「10」への更新を含み得る。変更データコンストラクタ175は、変更オブジェクトにおいて購入者名値を「ジョン・スミス」(John Smith)に更新する、購入者名属性についての属性入力を生成する。変更データコンストラクタ175はまた、数量値の「10」への更新を含む、トップレベルの属性ライン項目についての子入力を生成する。
一実施形態では、データマネージャ170は、変更オブジェクトをデータプロバイダ150へ送信してリモートRESTプロバイダ151のためのAPIフォーマットのメッセージに変換し、生成されたメッセージをリモートRESTプロバイダ151へ送信する。一実施形態では、プロセッサは、リモートRESTサービスプロバイダ151が、(i)サーバ245とのネットワーク接続性の欠如、または(ii)プロバイダ151にかかる高負荷に起因して、利用可能ではないということを検出する。リモートRESTサービスプロバイダ151の利用不能性がネットワーク接続性の欠如に起因する場合、データマネージャ170は、変更オブジェクトを持続性マネージャ125へ送信して、ローカルに格納されるようにする。接続性が回復されると、トランザクションプロセッサ180は、変更オブジェクトを検索し、変換および送信を再試行するであろう。リモートRESTプロバイダ151の利用不能性がプロバイダ151にかかる高負荷に起因する場合、データマネージャは、変更オブジェクトをグラフクエリデータプロバイダへ送信してリモートグラフクエリプロバイダ146のためのAPIフォーマットのメッセージに変換し、生成されたメッセージをリモートグラフクエリプロバイダ146へ送信する。リモートグラフクエリプロバイダ146は、メッセージのAPIペイロードを実行して、変更がデータストア165における例示的な行オブジェクトのサーバ側コピーに適用されるようにする。なお、変更オブジェクトは、ローカルストレージのための、および、データプロバイダへのサブミッションのためのフォーマットとして、広く使用され得る。
クラウドまたは企業の実施形態
一実施形態では、ここに示され説明された自動スコーピングツール103および/他のシステムは、データベースアプリケーションまたは分散型データベースアプリケーションの集合を含むコンピューティング/データ処理システムである。アプリケーションおよびデータ処理システムは、クラウドベースのネットワーキングシステム、ソフトウェア・アズ・ア・サービス(software-as-a-service:SaaS)アーキテクチャ、プラットホーム・アズ・ア・サービス(platform-as-a-service:PaaS)アーキテクチャ、インフラストラクチャ・アズ・ア・サービス(infrastructure-as-a-service:IaaS)アーキテクチャ、または他のタイプのネットワーク化されたコンピューティングソリューションを用いて動作するように構成され、もしくは、当該システム等として実現され得る。一実施形態では、クラウドコンピューティングシステム100は、少なくともここに開示された機能を提供し、コンピュータネットワークを通して(サーバとして機能する)クラウドコンピューティングシステム100と通信するコンピューティングデバイス/端末を介して多くのユーザによってアクセス可能である、サーバ側システムである。
ソフトウェアモジュールの実施形態
一般に、ソフトウェア命令は、好適にプログラムされたプロセッサによって実行されるように設計されている。これらのソフトウェア命令は、たとえば、コンピュータ実行可能コードと、コンピュータ実行可能コードへとコンパイルされ得るソースコードとを含み得る。これらのソフトウェア命令はまた、スクリプト言語などのインタープリタ型プログラミング言語で書かれた命令を含み得る。
複雑なシステムでは、そのような命令は典型的には、プログラムモジュールへと構成され、そのようなモジュールは各々、特定のタスク、プロセス、機能、または動作を行なう。1組のモジュール全体は、それらの動作が、オペレーティングシステム(operating system:OS)または他の形式の組織的プラットホームによって制御または調整され得る。
一実施形態では、ここに説明されるコンポーネント、機能、方法、またはプロセスのうちの1つ以上が、非一時的コンピュータ読取可能媒体に格納されたモジュールとして構成される。モジュールは、少なくとも、メモリまたはストレージにアクセスするプロセッサによって実行されると、コンピューティングデバイスにここに説明されるような対応する機能を行なわせる、格納されたソフトウェア命令を用いて構成される。
一実施形態では、モバイルアプリケーション110、ユーザインターフェイス115、トランザクションハンドラ120、持続性マネージャ125、データプロバイダ130、リモートサービスプロバイダ131、データマネージャ170、変更データコンストラクタ175、およびトランザクションプロセッサ180のうちの1つ以上が、非一時的コンピュータ読取可能媒体に格納されたモジュールとして構成される。
コンピューティングデバイスの実施形態
図9は、ここに説明される例示的なシステムならびに方法、および/または同等物のうちの1つ以上を用いて構成および/またはプログラムされた例示的なコンピューティングデバイスを示す。例示的なコンピューティングデバイスは、バス925によって動作可能に接続されたプロセッサ910とメモリ915と入力/出力ポート920とを含むコンピュータ900であり得る。一例では、コンピュータ900は、図1~8を参照して示され説明されたロジック、システム、および方法と同様に、モバイルクライアントアプリケーションにおけるデータプロバイダに依存しない変更取扱いを容易にするように構成された、データプロバイダに依存しない変更取扱いロジック930を含み得る。異なる例では、ロジック930は、ハードウェア、格納された命令を有する非一時的コンピュータ読取可能媒体、ファームウェア、および/またはそれらの組合せで実現され得る。ロジック930はバス925に取り付けられたハードウェアコンポーネントとして示されているが、他の実施形態では、ロジック930はプロセッサ910で実現されてもよく、メモリ915に格納されてもよく、または、ディスク935に格納されてもよいということが理解されるべきである。
一実施形態では、ロジック930またはコンピュータは、説明されたアクションを行なうための手段(たとえば、構造:ハードウェア、非一時的コンピュータ読取可能媒体、ファームウェア)である。いくつかの実施形態では、コンピューティングデバイスは、クラウドコンピューティングシステムで動作するサーバ、ソフトウェア・アズ・ア・サービス(SaaS)アーキテクチャで構成されたサーバ、スマートフォン、ラップトップ、タブレットコンピューティングデバイスなどであり得る。
これらの手段は、たとえば、モバイルクライアントアプリケーションにおけるデータプロバイダに依存しない変更取扱いを容易にするようにプログラムされたASICとして実現され得る。これらの手段はまた、メモリ915に一時的に格納され、その後プロセッサ910によって実行されるデータ940としてコンピュータ900に提示される、格納されたコンピュータ実行可能命令として実現され得る。
ロジック930はまた、モバイルクライアントアプリケーションにおけるデータプロバイダに依存しない変更取扱いを行なうための手段(たとえば、ハードウェア、実行可能命令を格納する非一時的コンピュータ読取可能媒体、ファームウェア)を提供し得る。
コンピュータ900の例示的な構成を概して説明すると、プロセッサ910は、デュアルマイクロプロセッサおよび他のマルチプロセッサアーキテクチャを含む多種多様のプロセッサであり得る。メモリ915は、揮発性メモリおよび/または不揮発性メモリを含み得る。不揮発性メモリは、たとえばROM、PROMなどを含み得る。揮発性メモリは、たとえばRAM、SRAM、DRAMなどを含み得る。
ストレージディスク935は、たとえば入力/出力(I/O)インターフェイス(たとえばカード、デバイス)945および入力/出力ポート920を介して、コンピュータ900に動作可能に接続され得る。ディスク935は、たとえば磁気ディスクドライブ、ソリッドステートディスクドライブ、フロッピー(登録商標)ディスクドライブ、テープドライブ、ジップドライブ、フラッシュメモリカード、メモリスティックなどであり得る。さらに、ディスク935は、CD-ROMドライブ、CD-Rドライブ、CD-RWドライブ、DVD ROMなどであり得る。メモリ915は、たとえばプロセス950および/またはデータ940を格納することができる。ディスク935および/またはメモリ915は、コンピュータ900のリソースを制御して割り当てるオペレーティングシステムを格納することができる。
コンピュータ900は、I/Oインターフェイス945および入力/出力ポート920を介して、入力/出力(I/O)デバイスと対話し得る。入力/出力デバイスは、たとえばキーボード、マイクロホン、ポインティングおよび選択デバイス、カメラ、ビデオカード、ディスプレイ、ディスク935、ネットワークデバイス955などであり得る。入力/出力ポート920は、たとえばシリアルポート、パラレルポート、およびUSBポートを含み得る。
コンピュータ900はネットワーク環境で動作可能であり、このため、I/Oインターフェイス945および/またはI/Oポート920を介してネットワークデバイス955に接続され得る。ネットワークデバイス955を通して、コンピュータ900はネットワークと対話し得る。ネットワークを通して、コンピュータ900は、リモートコンピュータに論理的に接続され得る。コンピュータ900が対話し得るネットワークは、LAN、WAN、および他のネットワークを含むものの、それらに限定されない。
モバイルデバイスの実施形態
ここで、ここに説明される例示的なシステムならびに方法、および/または同等物のうちの1つ以上を用いて構成および/またはプログラムされた例示的なモバイルデバイス1000を示す図10を参照する。一例では、モバイルデバイス1000は、図1~8を参照して示され説明されたロジック、システム、および方法と同様に、モバイルクライアントアプリケーションにおけるデータプロバイダに依存しない変更取扱いを容易にするように構成された、データプロバイダに依存しない変更取扱いロジック1005を含み得る。モバイルデバイス1000は、セルラーアンテナ1010を含み得る。例示的な実施形態は、図10で概して1020で識別された信号処理および/または制御回路を実現し得る。いくつかの実現化例では、モバイルデバイス1000は、マイクロホン1030、スピーカおよび/または音声出力ジャックなどの音声出力1040、ディスプレイ1050、ならびに/もしくは、キーパッド、ポインティングデバイス、音声作動および/または他の入力デバイスなどの入力デバイス1060を含む。モバイルデバイス1000における信号処理および/または制御回路1020ならびに/もしくは他の回路(図示せず)は、データを処理し、符号化および/または暗号化を行ない、計算を行ない、データをフォーマット化し、および/または、他の携帯電話機能を行ない得る。
モバイルデバイス1000は、たとえばHDDおよび/またはDVDを含む光学および/または磁気記憶装置などにおいて不揮発性の態様でデータを格納するマスデータストレージ1070と通信し得る。HDDは、約1.8インチよりも小さい直径を有するプラッタを1つ以上含むミニHDDであり得る。携帯電話1000は、RAM、ROM、フラッシュメモリなどの低遅延不揮発性メモリ、および/または他の好適な電子データストレージといったメモリ1080に接続され得る。モバイルデバイス1000はまた、WLANネットワークインターフェイス1090を介したWLANとの接続をサポートし得る。モバイルデバイス1000は、WLANアンテナ1095を含み得る。この例示的な実施形態では、例示的なシステムおよび方法はこのWLANネットワークインターフェイス1090を使用して実現され得るが、他の構成も可能である。
定義および他の実施形態
別の実施形態では、説明された方法および/またはそれらの同等物は、コンピュータ実行可能命令を用いて実現され得る。このため、一実施形態では、マシンによって実行されると当該マシン(および/または関連コンポーネント)に方法を行なわせるアルゴリズム/実行可能アプリケーションのコンピュータ実行可能命令が格納された、非一時的コンピュータ読取可能/記憶媒体が構成される。例示的なマシンは、プロセッサ、コンピュータ、クラウドコンピューティングシステムで動作するサーバ、ソフトウェア・アズ・ア・サービス(SaaS)アーキテクチャで構成されたサーバ、スマートフォンなどを含むものの、それら限定されない。一実施形態では、コンピューティングデバイスは、開示された方法のうちのいずれかを行なうように構成された1つ以上の実行可能アルゴリズムを用いて実現される。
1つ以上の実施形態では、開示された方法またはそれらの同等物は、方法を行なうように構成されたコンピュータハードウェアか、または、非一時的コンピュータ読取可能媒体に格納されたモジュールで具現化されたコンピュータ命令のいずれかによって行なわれ、命令は、コンピューティングデバイスの少なくともプロセッサによって実行されると方法を行なうように構成された実行可能アルゴリズムとして構成される。
説明を簡潔にするために、図面の図示された方法論はアルゴリズムの一連のブロックとして示され説明されているが、これらの方法論はブロックの順序によって限定されないということが理解されるべきである。ブロックの一部は、示され説明されたものとは異なる順序で、および/または、他のブロックと同時に起こる場合がある。また、例示的な方法論を実現するために、図示されたブロックがすべて使用されなくてもよい。ブロックは組合されてもよく、または、複数のアクション/コンポーネントに分離されてもよい。さらに、追加のおよび/または代替的な方法論が、ブロックに図示されていない追加のアクションを採用してもよい。
下記は、ここに採用された、選択された用語の定義を含む。これらの定義は、用語の範囲に該当し、実現のために使用され得る、構成要素のさまざまな例および/または形態を含む。これらの例は、限定的であるよう意図されてはいない。用語の単数形および複数形は双方とも、これらの定義の範囲内にあり得る。
「一実施形態」、「実施形態」、「一例」、「例」などへの言及は、そのように記載された実施形態または例が特定の機能、構造、特徴、特性、要素、または制限を含み得るものの、すべての実施形態または例が必ずしもその特定の機能、構造、特徴、特性、要素、または制限を含むとは限らないということを示す。さらに、「一実施形態では」という句の反復使用は、必ずしも同じ実施形態を指すとは限らないものの、同じ実施形態を指す場合もある。
ASIC(application specific integrated circuit):特定用途向け集積回路。
CD(compact disk):コンパクトディスク。
CD-R(CD recordable):記録可能CD。
CD-RW(CD rewriteable):書換可能CD。
DVD:デジタルバーサタイルディスク(digital versatile disk)および/またはデジタルビデオティスク(digital video disk)。
HTTP(hypertext transfer protocol):ハイパーテキスト転送プロトコル。
LAN(local area network):ローカルエリアネットワーク。
RAM(random access memory):ランダムアクセスメモリ。
DRAM(dynamic RAM):ダイナミックRAM。
SRAM(synchronous RAM):同期RAM。
ROM(read only memory):読出専用メモリ。
PROM(programmable ROM):プログラマブルROM。
EPROM(erasable PROM):消去可能PROM。
EEPROM(electrically erasable PROM):電気的消去可能PROM。
SQL(structured query language):構造化クエリ言語。
USB(universal serial bus):ユニバーサルシリアルバス。
XML(extensible markup language):拡張マークアップ言語。
WAN(wide area network):ワイドエリアネットワーク。
WLAN(Wireless LAN):無線LAN。
ここに使用されるような「データ構造」とは、メモリ、ストレージデバイス、または他のコンピュータ化システムに格納された、コンピューティングシステムにおけるデータの編成である。データ構造は、たとえば、データフィールド、データファイル、データアレイ、データオブジェクト、データレコード、データベース、データテーブル、データ行、データ列、グラフ、ツリー、リンクリストなどのうちのいずれか1つであり得る。データ構造は、多くの他のデータ構造から形成され、それらを含み得る(たとえば、データベースは多くのデータレコードを含む)。他の実施形態によれば、データ構造の他の例も同様に可能である。
ここに使用されるような「コンピュータ読取可能媒体」または「コンピュータ記憶媒体」とは、実行されると開示された機能のうちの1つ以上を行なうように構成された命令および/またはデータを格納する非一時的媒体を指す。いくつかの実施形態では、データは、命令として機能し得る。コンピュータ読取可能媒体は、不揮発性媒体および揮発性媒体を含むもののそれらに限定されない形態をとり得る。不揮発性媒体は、たとえば光ディスク、磁気ディスクなどを含み得る。揮発性媒体は、たとえば半導体メモリ、ダイナミックメモリなどを含み得る。コンピュータ読取可能媒体の一般的な形態は、フロッピーディスク、フレキシブルディスク、ハードディスク、磁気テープ、他の磁気媒体、特定用途向け集積回路(ASIC)、プログラマブルロジックデバイス、コンパクトディスク(CD)、他の光学媒体、ランダムアクセスメモリ(RAM)、読出専用メモリ(ROM)、メモリチップまたはカード、メモリスティック、ソリッドステートストレージデバイス(SSD)、フラッシュドライブ、および、コンピュータ、プロセッサまたは他の電子デバイスがともに機能できる他の媒体を含み得るものの、それらに限定されない。各タイプの媒体は、一実施形態における実現のために選択された場合、開示および/または請求された機能のうちの1つ以上を行なうように構成されたアルゴリズムの格納された命令を含み得る。
ここに使用されるような「ロジック」とは、ここに開示されるような機能またはアクションのうちのいずれかを行なうために、ならびに/もしくは、別のロジック、方法および/またはシステムからの機能またはアクションがここに開示されるように行なわれるようにするために、コンピュータまたは電気的ハードウェア、実行可能アプリケーションまたはプログラムモジュールの命令が格納された非一時的媒体、および/またはそれらの組合せを用いて実現されるコンポーネントを表わす。同等のロジックは、ファームウェア、アルゴリズムを用いてプログラムされたマイクロプロセッサ、個別ロジック(たとえばASIC)、少なくとも1つの回路、アナログ回路、デジタル回路、プログラムドロジックデバイス、アルゴリズムの命令を含むメモリデバイスなどを含んでいてもよく、それらのいずれも、開示された機能のうちの1つ以上を行なうように構成され得る。一実施形態では、ロジックは、開示された機能のうちの1つ以上を行なうように構成された1つ以上のゲート、ゲートの組合せ、または他の回路部品を含み得る。複数のロジックが説明される場合、それら複数のロジックを1つのロジックに組み込むことが可能であり得る。同様に、単一のロジックが説明される場合、その単一のロジックを複数のロジック間で分散させることが可能であり得る。一実施形態では、これらのロジックのうちの1つ以上は、開示および/または請求された機能を行なうことに関連付けられた対応する構造である。どのタイプのロジックを実現するかについての選択は、所望のシステム条件または仕様に基づき得る。たとえば、より早い速度が考慮事項である場合には、機能を実現するために、ハードウェアが選択されるであろう。より低いコストが考慮事項である場合には、機能を実現するために、格納された命令/実行可能アプリケーションが選択されるであろう。
「動作可能な接続」、または、エンティティが「動作可能に接続される」接続とは、信号、物理的通信、および/または論理的通信が送信および/または受信され得る接続である。動作可能な接続は、物理的インターフェイス、電気的インターフェイス、および/またはデータインターフェイスを含み得る。動作可能な接続は、動作可能な制御を可能にするのに十分なインターフェイスおよび/または接続の異なる組合せを含み得る。たとえば、2つのエンティティが、直接、または1つ以上の中間エンティティ(たとえば、プロセッサ、オペレーティングシステム、ロジック、非一時的コンピュータ読取可能媒体)を通して互いに信号を通信するために、動作可能に接続され得る。動作可能な接続を作り出すために、論理的および/または物理的通信チャネルが使用され得る。
ここに使用されるような「ユーザ」とは、1人以上の人間、1つ以上のコンピュータまたは他のデバイス、もしくはそれらの組合せを含むものの、それらに限定されない。
開示された実施形態をかなり詳細に例示し説明してきたが、添付された請求の範囲をそのような詳細に制限すること、または何らかのやり方で限定することは、意図されていない。主題のさまざまな局面を説明するために、構成要素または方法論の考えられるすべての組合せを説明することは、もちろん不可能である。したがって、この開示は、示され説明された特定の詳細または例示的な例に限定されない。
詳細な説明または請求項で「含む」または「含んでいる」という用語が使用される限りにおいて、それは、「備える」という用語が請求項で移行句として使用される際に解釈される場合と同様の態様で、包括的であるよう意図されている。
詳細な説明または請求項で「または」という用語(たとえば、AまたはB)が使用される限りにおいて、それは、「AまたはBまたはそれら双方」を意味するよう意図されている。出願人が「AまたはBのみであって、それら双方ではない」ことを示すよう意図している場合、「AまたはBのみであって、それら双方ではない」という句が使用されるであろう。このため、ここでの「または」という用語の使用は、排他的使用ではなく、包括的使用である。

Claims (15)

  1. コンピュータが実現する方法であって、
    リモートデータストアに格納されたデータオブジェクトに対する作成、更新または削除アクションを示す、モバイルデバイスに対する入力を受信するステップと、
    前記入力を受信するステップに応答して、前記データオブジェクトに対する前記アクションの記述を、前記リモートデータストアと対話するために使用されるリモートサービスプロバイダのタイプに関して依存しないシンタックスで作成するステップと、
    第1のリモートサービスプロバイダに前記アクションを実行させるように構成されたコマンドを作成するために、前記アクションの前記記述を前記第1のリモートサービスプロバイダのシンタックスに変換するステップと、
    前記アクションが前記リモートデータストアにおける前記データオブジェクトに対して行なわれるようにするために、前記コマンドをネットワークを通して前記第1のリモートサービスプロバイダへ送信するステップとを備える、方法。
  2. 前記第1のリモートサービスプロバイダが前記コマンドを受信するために利用不能であると判定するステップと、
    前記モバイルデバイスに対する前記アクションの前記記述を格納するステップと、
    前記第1のリモートサービスプロバイダが利用可能であるという指示が前記モバイルデバイスによって受信される後まで、前記コマンドを作成することを遅らせるステップとをさらに備える、請求項1に記載のコンピュータが実現する方法。
  3. 第2のリモートサービスプロバイダが前記コマンドを受信するために利用不能であると判定するステップをさらに備え、
    前記第2のリモートサービスプロバイダは前記コマンドを受信するために利用不能であるという判定に応答して、前記コマンドを前記第1のリモートサービスプロバイダの前記シンタックスで作成することと、前記コマンドを前記第1のリモートサービスプロバイダへ送信することとが行なわれる、請求項1に記載のコンピュータが実現する方法。
  4. 前記リモートデータストアへのアクセスを各々有する1組の2つ以上のリモートサービスプロバイダの中から、前記第1のリモートサービスプロバイダを選択するステップをさらに備え、
    選択は、前記第1のリモートサービスプロバイダが、(i)前記リモートサービスプロバイダの現在の利用可能性、および(ii)前記アクションの複雑性、のうちの少なくとも1つを含む1つ以上の基準を満たすことに基づいている、請求項1に記載のコンピュータが実現する方法。
  5. 前記データオブジェクトに対する前記アクションの前記記述の依存しない前記シンタックスは、
    前記アクションが変更する前記データオブジェクトの各属性について、(i)その属性への変更が「更新」、「削除」または「作成」アクションのうちの1つであるという指示と、(ii)前記変更が「更新」または「作成」アクションである場合、その属性についての新たな値の指示とを含み、
    前記アクションが変更する前記データオブジェクトの各子オブジェクトについて、(i)前記子オブジェクトが子オブジェクトであるという指示と、(ii)前記子オブジェクトへの変更が「更新」、「削除」または「作成」アクションのうちの1つであるという指示と、(iii)子のための主キーの値の指示と、(iv)その子オブジェクトへの前記変更の指示とを含み、前記変更の前記指示は、依存しない前記シンタックスを使用して記述される、請求項1に記載のコンピュータが実現する方法。
  6. コンピュータ実行可能命令を格納する、非一時的コンピュータ読取可能媒体であって、前記コンピュータ実行可能命令は、コンピュータの少なくともプロセッサによって実行されると、前記コンピュータに、
    リモートデータストアに格納されたデータオブジェクトに対する作成、更新または削除アクションを示す、モバイルデバイスに対する入力を受信することと、
    前記入力を受信することに応答して、前記データオブジェクトに対する前記アクションの記述を、前記リモートデータストアと対話するために使用されるリモートサービスプロバイダのタイプに関して依存しないシンタックスで作成することと、
    第1のリモートサービスプロバイダに前記アクションを実行させるように構成されたコマンドを作成するために、前記アクションの前記記述を前記第1のリモートサービスプロバイダのシンタックスに変換することと、
    前記アクションが前記リモートデータストアにおける前記データオブジェクトに対して行なわれるようにするために、前記コマンドをネットワークを通して前記第1のリモートサービスプロバイダへ送信することと、
    を行なわせる、非一時的コンピュータ読取可能媒体。
  7. 少なくとも前記プロセッサによって実行されると、前記コンピュータに、
    前記第1のリモートサービスプロバイダが前記コマンドを受信するために利用不能であると判定することと、
    前記モバイルデバイスに対する前記アクションの前記記述を格納することと、
    前記第1のリモートサービスプロバイダが利用可能であるという指示が前記モバイルデバイスによって受信される後まで、前記コマンドを作成することを遅らせることと、
    を行なわせる命令をさらに備える、請求項6に記載の非一時的コンピュータ読取可能媒体。
  8. 少なくとも前記プロセッサによって実行されると、前記コンピュータに、第2のリモートサービスプロバイダが前記コマンドを受信するために利用不能であると判定することを行なわせる命令をさらに備え、
    前記第2のリモートサービスプロバイダは前記コマンドを受信するために利用不能であるという判定に応答して、前記コマンドを前記第1のリモートサービスプロバイダの前記シンタックスで作成することと、前記コマンドを前記第1のリモートサービスプロバイダへ送信することとが行なわれる、請求項6に記載の非一時的コンピュータ読取可能媒体。
  9. 少なくとも前記プロセッサによって実行されると、前記コンピュータに、前記リモートデータストアへのアクセスを各々有する1組の2つ以上のリモートサービスプロバイダの中から、前記第1のリモートサービスプロバイダを選択することを行なわせる命令をさらに備え、
    選択は、前記第1のリモートサービスプロバイダが、(i)前記リモートサービスプロバイダの現在の利用可能性、および(ii)前記アクションの複雑性、のうちの少なくとも1つを含む1つ以上の基準を満たすことに基づいている、請求項6に記載の非一時的コンピュータ読取可能媒体。
  10. 前記データオブジェクトに対する前記アクションの前記記述の依存しない前記シンタックスは、
    前記アクションが変更する前記データオブジェクトの各属性について、(i)その属性への変更が「更新」、「削除」または「作成」アクションのうちの1つであるという指示と、(ii)前記変更が「更新」または「作成」アクションである場合、その属性についての新たな値の指示とを含み、
    前記アクションが変更する前記データオブジェクトの各子オブジェクトについて、(i)前記子オブジェクトが子オブジェクトであるという指示と、(ii)前記子オブジェクトへの変更が「更新」、「削除」または「作成」アクションのうちの1つであるという指示と、(iii)子のための主キーの値の指示と、(iv)その子オブジェクトへの前記変更の指示とを含み、前記変更の前記指示は、依存しない前記シンタックスを使用して記述される、請求項6に記載の非一時的コンピュータ読取可能媒体。
  11. コンピューティングシステムであって、
    プロセッサと、
    前記プロセッサに動作可能に接続されたメモリと、
    前記プロセッサおよび前記メモリに動作可能に接続され、コンピュータ実行可能命令を格納する、非一時的コンピュータ読取可能媒体とを備え、前記コンピュータ実行可能命令は、少なくとも前記プロセッサによって実行されると、前記コンピューティングシステムに、
    リモートデータストアに格納されたデータオブジェクトに対する作成、更新または削除アクションを示す、モバイルデバイスに対する入力を受信することと、
    前記入力を受信することに応答して、前記データオブジェクトに対する前記アクションの記述を、前記リモートデータストアと対話するために使用されるリモートサービスプロバイダのタイプに関して依存しないシンタックスで作成することと、
    第1のリモートサービスプロバイダに前記アクションを実行させるように構成されたコマンドを作成するために、前記アクションの前記記述を前記第1のリモートサービスプロバイダのシンタックスに変換することと、
    前記アクションが前記リモートデータストアにおける前記データオブジェクトに対して行なわれるようにするために、前記コマンドをネットワークを通して前記第1のリモートサービスプロバイダへ送信することと、
    を行なわせる、コンピューティングシステム。
  12. 請求項の前記非一時的コンピュータ読取可能媒体は、少なくとも前記プロセッサによって実行されると、前記コンピューティングシステムに、
    前記第1のリモートサービスプロバイダが前記コマンドを受信するために利用不能であると判定することと、
    前記モバイルデバイスに対する前記アクションの前記記述を格納することと、
    前記第1のリモートサービスプロバイダが利用可能であるという指示が前記モバイルデバイスによって受信される後まで、前記コマンドを作成することを遅らせることと、
    を行なわせる命令をさらに備える、請求項11に記載のコンピューティングシステム。
  13. 請求項の前記非一時的コンピュータ読取可能媒体は、少なくとも前記プロセッサによって実行されると、前記コンピューティングシステムに、第2のリモートサービスプロバイダが前記コマンドを受信するために利用不能であると判定することを行なわせる命令をさらに備え、
    前記第2のリモートサービスプロバイダは前記コマンドを受信するために利用不能であるという判定に応答して、前記コマンドを前記第1のリモートサービスプロバイダの前記シンタックスで作成することと、前記コマンドを前記第1のリモートサービスプロバイダへ送信することとが行なわれる、請求項11に記載のコンピューティングシステム。
  14. 請求項の前記非一時的コンピュータ読取可能媒体は、少なくとも前記プロセッサによって実行されると、前記コンピューティングシステムに、前記リモートデータストアへのアクセスを各々有する1組の2つ以上のリモートサービスプロバイダの中から、前記第1のリモートサービスプロバイダを選択することを行なわせる命令をさらに備え、
    選択は、前記第1のリモートサービスプロバイダが、(i)前記リモートサービスプロバイダの現在の利用可能性、および(ii)前記アクションの複雑性、のうちの少なくとも1つを含む1つ以上の基準を満たすことに基づいている、請求項11に記載のコンピューティングシステム。
  15. 前記データオブジェクトに対する前記アクションの前記記述の依存しない前記シンタックスは、
    前記アクションが変更する前記データオブジェクトの各属性について、(i)その属性への変更が「更新」、「削除」または「作成」アクションのうちの1つであるという指示と、(ii)前記変更が「更新」または「作成」アクションである場合、その属性についての新たな値の指示とを含み、
    前記アクションが変更する前記データオブジェクトの各子オブジェクトについて、(i)前記子オブジェクトが子オブジェクトであるという指示と、(ii)前記子オブジェクトへの変更が「更新」、「削除」または「作成」アクションのうちの1つであるという指示と、(iii)子のための主キーの値の指示と、(iv)その子オブジェクトへの前記変更の指示とを含み、前記変更の前記指示は、依存しない前記シンタックスを使用して記述される、請求項1に記載のコンピューティングシステム。
JP2022544792A 2020-01-24 2020-12-22 モバイルクライアントアプリケーションにおけるデータプロバイダに依存しない変更取扱い Pending JP2023511942A (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US16/751,351 US11044298B1 (en) 2020-01-24 2020-01-24 Data provider agnostic change handling in mobile client applications
US16/751,351 2020-01-24
PCT/US2020/066533 WO2021150341A1 (en) 2020-01-24 2020-12-22 Data provider agnostic change handling in mobile client applications

Publications (2)

Publication Number Publication Date
JP2023511942A true JP2023511942A (ja) 2023-03-23
JPWO2021150341A5 JPWO2021150341A5 (ja) 2023-10-05

Family

ID=74175971

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2022544792A Pending JP2023511942A (ja) 2020-01-24 2020-12-22 モバイルクライアントアプリケーションにおけるデータプロバイダに依存しない変更取扱い

Country Status (5)

Country Link
US (1) US11044298B1 (ja)
EP (1) EP4094162A1 (ja)
JP (1) JP2023511942A (ja)
CN (1) CN114746854A (ja)
WO (1) WO2021150341A1 (ja)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP3933612A1 (en) * 2020-06-30 2022-01-05 Atlassian Pty Ltd Systems and methods for creating and managing tables
US20220114333A1 (en) * 2020-10-14 2022-04-14 Salesforce.Com, Inc. Workbooks for online tools

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7797286B2 (en) * 2004-05-21 2010-09-14 Sap Ag System and method for externally providing database optimizer statistics
US10411954B2 (en) * 2015-10-13 2019-09-10 International Business Machines Corporation Pattern based network configuration
US10846283B2 (en) 2017-06-13 2020-11-24 Oracle International Corporation Method and system for defining an adaptive polymorphic data model
US10691694B2 (en) 2017-06-13 2020-06-23 Oracle International Corporation Method and system for defining an object-agnostic offlinable synchronization model
CN109756542A (zh) 2017-11-06 2019-05-14 北京航天长峰科技工业集团有限公司 一种基于web api的rest框架数据服务系统

Also Published As

Publication number Publication date
CN114746854A (zh) 2022-07-12
EP4094162A1 (en) 2022-11-30
US11044298B1 (en) 2021-06-22
WO2021150341A1 (en) 2021-07-29

Similar Documents

Publication Publication Date Title
JP7271734B2 (ja) 分散イベント処理システムにおけるデータシリアライズ
US11394767B2 (en) Central repository of configuration files and two-way replication of search node configuration files
US10810229B2 (en) Database replication based on data access scores
JP6266630B2 (ja) アーカイブされたリレーションを有する連続クエリの管理
US8751437B2 (en) Single persistence implementation of business objects
US9208212B2 (en) Field extensibility in a multi-tenant environment with columnar database support
US9684565B2 (en) Plural architecture master data management
US11514004B2 (en) Providing a simple and flexible data access layer
US8892677B1 (en) Manipulating objects in hosted storage
JP2019503525A (ja) 連続クエリ処理におけるイベントバッチ処理、出力シーケンス化、およびログベースの状態記憶
US11336588B2 (en) Metadata driven static determination of controller availability
US20200097503A1 (en) Method and apparatus for a mechanism for event replay when a reroute of recordation of the event occurred in a multiplexed event recordation system
JP2023511942A (ja) モバイルクライアントアプリケーションにおけるデータプロバイダに依存しない変更取扱い
US11531525B2 (en) System and method for packaging standalone application modules into re-usable application and infrastructure resources
US10827035B2 (en) Data uniqued by canonical URL for rest application
CN111949441A (zh) 用于可扩展备份搜索的系统和方法
US11789971B1 (en) Adding replicas to a multi-leader replica group for a data set
US11914575B2 (en) Data persistency models for software applications
US11386115B1 (en) Selectable storage endpoints for a transactional data storage engine
US10853419B2 (en) Database with time-dependent graph index
CN117827835A (zh) 数据库管理方法、装置、设备和介质

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20230927

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20230927