(57)【要約】【課題】  オフラインブリーフケース同期を提供する【解決手段】  オフラインブリーフケースを同期させるシステム、方法、及びコンピュータプログラムプロダクトの実施形態が本願で開示される。一実施形態が、アプリケーションにおいてオフラインでアクセス可能なユーザグループに対するオフラインブリーフケースを定義することにより動作する。実施形態は、オフラインブリーフケースのコンポーネントに対する変更を検出する。実施形態は、コンポーネントに対する検出された変更に基づいてプッシュ通知をアプリケーションに送信する。実施形態は、送信されたプッシュ通知に応答してアプリケーションから同期要求を受信する。実施形態は次いで、同期要求に基づいて、変更されたコンポーネントをアプリケーションに送信する。【選択図】  図１
2020053044.tif 000002
【特許請求の範囲】
【請求項１】
コンピュータにより実現される方法であって、
少なくとも１つのプロセッサにより、アプリケーションにおいてオフラインでアクセス可能なユーザグループに対するオフラインブリーフケースを定義するステップであり、前記オフラインブリーフケースは、レコードデータとレコードメタデータとを含むコンポーネントを含む、ステップと、
前記少なくとも１つのプロセッサにより、前記コンポーネントに対する変更を検出するステップと、
前記少なくとも１つのプロセッサにより、前記コンポーネントに対する前記検出された変更に基づいてプッシュ通知を前記アプリケーションに送信するステップと、
前記少なくとも１つのプロセッサにより、前記送信されたプッシュ通知に応答して前記アプリケーションから同期要求を受信するステップと、
前記少なくとも１つのプロセッサにより、前記同期要求に基づいて前記変更されたコンポーネントを前記アプリケーションに送信するステップと、
を含む方法。
【請求項２】
前記レコードデータはオブジェクトを表し、前記レコードメタデータは前記アプリケーションにおいて前記オブジェクトを表示する方法を定義する、請求項１に記載の方法。
【請求項３】
前記コンポーネントに対する前記検出された変更に基づいて前記ユーザグループのユーザについての前記コンポーネントの同期ステータスを更新するステップ、
をさらに含む請求項１に記載の方法。
【請求項４】
前記オフラインブリーフケースのデータサイズを算出するステップと、
前記データサイズを前記プッシュ通知に追加するステップと、
をさらに含む請求項１に記載の方法。
【請求項５】
前記コンポーネントに関連する第２のコンポーネントを決定するステップと、
前記第２のコンポーネントを前記オフラインブリーフケースに追加するステップと、
をさらに含む請求項１に記載の方法。
【請求項６】
前記定義するステップは、
前記コンポーネントをクエリ条件に基づいて前記オフラインブリーフケースに追加するステップ
をさらに含む請求項１に記載の方法。
【請求項７】
前記同期要求は、前記プッシュ通知に基づいてモバイルオペレーティングシステムが前記アプリケーションを起動したことに応答して受信される、請求項１に記載の方法。
【請求項８】
前記モバイルオペレーティングシステムは、接続タイプ、バッテリレベル、使用パターン、データ割当量、又はジオフェンス基準に基づいて、前記アプリケーションを起動すべき時間を決定する、請求項７に記載の方法。
【請求項９】
メモリと、
前記メモリに結合され、
アプリケーションにおいてオフラインでアクセス可能なユーザグループに対するオフラインブリーフケースを定義し、前記オフラインブリーフケースは、レコードデータとレコードメタデータとを含むコンポーネントを含み、
前記コンポーネントに対する変更を検出し、
前記コンポーネントに対する前記検出された変更に基づいてプッシュ通知を前記アプリケーションに送信し、
前記送信されたプッシュ通知に応答して前記アプリケーションから同期要求を受信し、
前記同期要求に基づいて前記変更されたコンポーネントを前記アプリケーションに送信する
ように構成された少なくとも１つのプロセッサと、
を含むシステム。
【請求項１０】
前記レコードデータはオブジェクトを表し、前記レコードメタデータは前記アプリケーションにおいて前記オブジェクトを表示する方法を定義する、請求項９に記載のシステム。
【請求項１１】
前記少なくとも１つのプロセッサは、
前記コンポーネントに対する前記検出された変更に基づいて前記ユーザグループのユーザについての前記コンポーネントの同期ステータスを更新する
ようにさらに構成される、請求項９に記載のシステム。
【請求項１２】
前記少なくとも１つのプロセッサは、
前記コンポーネントに関連する第２のコンポーネントを決定し、
前記第２のコンポーネントを前記オフラインブリーフケースに追加する
ようにさらに構成される、請求項９に記載のシステム。
【請求項１３】
定義するために、前記少なくとも１つのプロセッサは、
前記コンポーネントをクエリ条件に基づいて前記オフラインブリーフケースに追加する
ようにさらに構成される、請求項９に記載のシステム。
【請求項１４】
前記同期要求は、前記プッシュ通知に基づいてモバイルオペレーティングシステムが前記アプリケーションを起動したことに応答して受信され、前記モバイルオペレーティングシステムは、接続タイプ、バッテリレベル、使用パターン、データ割当量、又はジオフェンス基準に基づいて、前記アプリケーションを起動すべき時間を決定する、請求項９に記載のシステム。
【請求項１５】
命令を記憶させた非一時的コンピュータ読取可能デバイスであって、前記命令は少なくとも１つのコンピューティングデバイスにより実行されたときに前記少なくとも１つのコンピューティングデバイスに、
アプリケーションにおいてオフラインでアクセス可能なユーザグループに対するオフラインブリーフケースを定義することであり、前記オフラインブリーフケースは、レコードデータとレコードメタデータとを含むコンポーネントを含む、ことと、
前記コンポーネントに対する変更を検出することと、
前記コンポーネントに対する前記検出された変更に基づいてプッシュ通知を前記アプリケーションに送信することと、
前記送信されたプッシュ通知に応答して前記アプリケーションから同期要求を受信することと、
前記同期要求に基づいて前記変更されたコンポーネントを前記アプリケーションに送信することと、
を含む動作を実行させる、非一時的コンピュータ読取可能デバイス。
【請求項１６】
前記レコードデータはオブジェクトを表し、前記レコードメタデータは前記アプリケーションにおいて前記オブジェクトを表示する方法を定義する、請求項１５に記載の非一時的コンピュータ読取可能デバイス。
【請求項１７】
前記動作は、
前記コンポーネントに対する前記検出された変更に基づいて前記ユーザグループのユーザについての前記コンポーネントの同期ステータスを更新すること
をさらに含む、請求項１５に記載の非一時的コンピュータ読取可能デバイス。
【請求項１８】
前記動作は、
前記コンポーネントに関連する第２のコンポーネントを決定することと、
前記第２のコンポーネントを前記オフラインブリーフケースに追加することと、
をさらに含む、請求項１５に記載の非一時的コンピュータ読取可能デバイス。
【請求項１９】
前記定義することは、
前記コンポーネントをクエリ条件に基づいて前記オフラインブリーフケースに追加すること
を含む、請求項１５に記載の非一時的コンピュータ読取可能デバイス。
【請求項２０】
前記同期要求は、前記プッシュ通知に基づいてモバイルオペレーティングシステムが前記アプリケーションを起動したことに応答して受信され、前記モバイルオペレーティングシステムは、接続タイプ、バッテリレベル、使用パターン、データ割当量、又はジオフェンス基準に基づいて、前記アプリケーションを起動すべき時間を決定する、請求項１５に記載の非一時的コンピュータ読取可能デバイス。
【発明の詳細な説明】
【背景技術】
【０００１】
ユーザは、しばしば、モバイルデバイス上で実行しているモバイルアプリケーションを使用して、その家やオフィスの外で様々なタスクを実行する。例えば、販売担当者は、異なる客先の間を移動するとき、顧客関係管理（ＣＲＭ）モバイルアプリケーションを使用して顧客対話を管理し、分析することがある。様々なタスクを実行するために、モバイルアプリケーションは、しばしば、リモートサーバから関連データを取り出す必要がある。例えば、ＣＲＭモバイルアプリケーションは、リモートサーバから特定のアカウント、連絡先、及び購入注文を取り出すことがある。関連データを取り出すために、モバイルアプリケーションは、しばしば、リモートサーバに対する接続を確立する必要があるが、しばしば、リモートサーバへの接続を確立することは不可能である。しかしながら、ユーザは、しばしば、そのモバイルアプリケーションを使用して様々なタスクをオフラインで実行することを依然として望む。
【０００２】
この問題を解決するために、従来のアプローチは、しばしば、モバイルアプリケーションがオフラインに移行する前にリモートサーバのデータをモバイルアプリケーションと同期させることを伴う。ユーザは、次いで、モバイルアプリケーションを使用して、ダウンロードされたデータを使用して様々なタスクを実行することができる。しかし、これらの従来のアプローチは、いくつかの問題を被る。第１に、従来のアプローチは、しばしば、オフラインのときにユーザにより必要とされない無関係のデータをダウンロードすることを伴う。第２に、従来のアプローチは、しばしば、非最適な時間に同期を実行し、モバイルアプリケーションとのユーザ対話をブロックする。第３に、従来のアプローチは、モバイルアプリケーションがダウンロードされたデータをオフラインと同じ方法でオンラインで表示することを保証しない。
【０００３】
［関連出願の相互参照］
本出願は、「Offline  Briefcase  Synchronization」と題され2018年9月24日に出願された仮米国特許出願第62/735,499号の利益を主張し、該出願はその全体を参照により本明細書に援用される。
【図面の簡単な説明】
【０００４】
添付の図面は、本明細書に組み込まれ、明細書の一部を構成する。
【図１】いくつかの実施形態による、オフラインブリーフケースを同期させるシステムのブロック図である。
【図２】いくつかの実施形態による、アプリケーションの例示的なレコードページを示す。
【図３】いくつかの実施形態による、オフラインブリーフケースを同期させる処理を示すフローチャートである。
【図４】いくつかの実施形態による、オフラインアクセスのためにアプリケーションのユーザ定義コンポーネントを同期させる処理を示すフローチャートである。
【図５】様々な実施形態を実現するのに有用な一例示的なコンピュータシステムである。
【０００５】
図面において、同様の参照番号は、一般に、同一又は類似の要素を示す。さらに、一般に、参照番号の最左桁は、参照番号が最初に現れる図面を識別する。
【発明を実施するための形態】
【０００６】
オフラインアクセスのためにアプリケーションをリモートサーバと同期させるためのシステム、装置、デバイス、方法、及び／又はコンピュータプログラムプロダクトの実施形態、及び／又はこれらの組み合わせ及びサブコンビネーションが本明細書において提供される。
【０００７】
オフラインアクセスのためにモバイルアプリケーションをリモートサーバと同期させるための従来のアプローチは、いくつかの技術的問題を被る。第１に、従来のアプローチは、しばしば、モバイルアプリケーションがオフラインのときにユーザにより必要とされない無関係のデータをダウンロードすることを伴う。これは、モバイルアプリケーションのためのダウンロード時間及びストレージ空間要件を不必要に増加させる可能性がある。第２に、従来のアプローチは、しばしば、モバイルアプリケーションがオフラインのときにユーザにより必要とされる高度に関連するデータをダウンロードするのに失敗することを伴う。第３に、従来のアプローチは、モバイルアプリケーションがダウンロードされたデータをオフラインと同じ方法でオンラインで表示することを保証しない。最後、従来のアプローチは、しばしば、モバイルアプリケーションが非最適な時間に同期を実行し、該同期がモバイルアプリケーションとのユーザ対話をブロックすることを伴う。
【０００８】
図１は、いくつかの実施形態による、オフラインブリーフケースを同期させて上記の技術的問題を解決する同期システム１００のブロック図である。同期システム１００は、モバイルデバイス１０２及びサーバ１１０を含む。
【０００９】
モバイルデバイス１０２は、モバイルフォン、タブレット、スマートウォッチ、ラップトップ、又は当業者により理解される他の電子デバイスであってもよい。モバイルデバイス１０２は、アプリケーション１０４を含むことができる。いくつかの実施形態において、アプリケーション１０４は、モバイルデバイス１０２上で実行するように設計されたモバイルアプリケーションであってもよい。例えば、アプリケーション１０４は、Ａｐｐｌｅ（登録商標）  ｉＯＳ（登録商標）アプリケーション、Ｇｏｏｇｌｅ（登録商標）  Ａｎｄｒｏｉｄ（登録商標）アプリケーション、又は当業者により理解される他タイプのモバイルアプリケーションであってもよい。いくつかの他の実施形態において、アプリケーション１０４は、モバイルデバイス１０２上のウェブブラウザ内で実行するウェブアプリケーションであってもよい。アプリケーション１０４がウェブアプリケーションであるいくつかの実施形態において、アプリケーション１０４は、同期データをウェブブラウザの安全な記憶エリアに記憶することができる。
【００１０】
アプリケーション１０４は、ネットワーク１０４を通じてサーバ１１０から１つ以上のコンポーネントをダウンロードし、表示することができる。ネットワーク１０４は、有線及び／又は無線のイントラネット、エクストラネット、インターネット、セルラー、Ｂｌｕｅｔｏｏｔｈ（登録商標）、及び／又は任意の他のローカル、短距離、アドホック、地域、グローバルの通信ネットワーク、並びにこれらの任意の組み合わせを限定なく含むことができる。
【００１１】
コンポーネントは、アプリケーション１０４の独立した再利用可能なユニットである。コンポーネントは、オブジェクトと、それを表示する方法とを表すことができる。例えば、コンポーネントは、アカウント、連絡先、機会、リード、プロダクト、キャンペーン、ユーザ、契約、レポート、又は当業者により理解される他タイプのオブジェクトなどのオブジェクトを表すことができる。
【００１２】
コンポーネントは、レコードデータ及びレコードメタデータを含むことができる。レコードデータは、オブジェクトに関するデータを含むことができる。例えば、コンポーネントは、連絡先とそれを表示する方法とを表すことができる。対応するレコードデータは、連絡先のファーストネーム、ラストネーム、住所、電話番号、及び電子メールアドレスを含むことができる。レコードデータとオブジェクトとは交換可能に使用され得る。
【００１３】
レコードメタデータは、対応するオブジェクトを表示し、対話する方法を定義することができる。レコードメタデータは、これに限られないが拡張可能マークアップ言語（Extensible  Markup  Language、ＸＭＬ）などのマークアップ言語を使用して指定されてもよい。レコードメタデータは、対応するオブジェクトのどのデータを表示すべきかを定義することができる。レコードメタデータは、対応するオブジェクトを表示するために使用すべきレイアウト又はカラースキームを定義することができる。レコードメタデータは、対応するオブジェクトと共に表示すべき１つ以上の画像を定義することができる。
【００１４】
レコードメタデータはまた、対応するオブジェクトのビジネスロジックを定義することもできる。例えば、レコードメタデータは、対応するオブジェクトの検証ルールを定義することができる。アプリケーション１０４は、対応するレコードメタデータ内のビジネスロジックに基づいて、ユーザが如何にしてコンポーネントと対話するかを制御することができる。例えば、アプリケーション１０４は、対応するレコードメタデータ内の検証ルールに基づいて、オブジェクトに対して電子メールアドレスを入力するようユーザに強制することができる。
【００１５】
いくつかの実施形態において、アプリケーション１０４は、サーバ１１０から１つ以上のコンポーネントをダウンロードし、レコードページ（record  page）として表示することができる。レコードページは、アプリケーション１０４内のページを表すことができる。レコードページは、特定の方法で１つ以上のコンポーネントを一緒に表示することができる。
【００１６】
図２は、いくつかの実施形態による、アプリケーション１０４の一例示的なレコードページを示す。図２は、図１に関して論じられる。
【００１７】
図２は、アプリケーション１０４のレコードページ２０２を示す。レコードページ２０２は、コンポーネント２０４、２０６、及び２０８を含む。アプリケーション１０４は、ネットワーク１０４を通じてサーバ１１０からコンポーネント２０４、２０６、及び２０８をダウンロードし、表示することができる。コンポーネント２０４、２０６、２０８は各々、オブジェクトとそれを表示する方法とを表すことができる。
【００１８】
例えば、アプリケーション１０４のレコードページ２０２が顧客関係管理（ＣＲＭ）アプリケーションのレコードページである場合、コンポーネント２０４、２０６、２０６は、ＣＲＭオブジェクトを表すことができる。例えば、コンポーネント２０４は、アカウントオブジェクトを表すことができる。コンポーネント２０６は、コンポーネント２０４に対応するアカウントオブジェクトについての主な連絡先を表すことができる。コンポーネント２０８は、コンポーネント２０４に対応するアカウントオブジェクトについてのメモを表すことができる。
【００１９】
ＣＲＭオブジェクトを表すことに加えて、コンポーネント２０４、２０６、２０６は、それらの対応するオブジェクトを表示する方法を定義することができる。例えば、コンポーネント２０４は、特定のレイアウトを使用して、レコードページ２０２の上部にアカウントオブジェクトを表示することができる。コンポーネント２０４は、アカウントオブジェクトに関する様々な情報、例えば、対応するアカウント番号、アカウント説明、及び請求先住所などを表示することができる。コンポーネント２０４はまた、関連情報を表示することもできる。例えば、コンポーネント２０４は、アカウントオブジェクトに関連する連絡先及びアカウント注文を表示することができる。
【００２０】
論じられたように、アプリケーション１０４は、サーバ１１０から１つ以上のコンポーネントをダウンロードし、表示することができる。サーバ１１０は、データベース１１２、オフラインコンフィギュレータ（offline  configurator）１１４、レコード関心トラッカ（record  interest  tracker）１１６、リスナ（listener）１１８、及び準備サービス（priming  service）１２０を含むことができる。データベース１１２は、１つ以上のコンポーネントに関連づけられたレコードデータ及びレコードメタデータを記憶することができる。データベース１１２は、関係データベース、非関係データベース、階層データベース、オブジェクト指向データベース、又は当業者により理解される他タイプのデータベースであってもよい。
【００２１】
アプリケーション１０４は、オンラインモード又はオフラインモードで使用できる。オンラインモードにおいて、アプリケーション１０４は、サーバ１１０から１つ以上のコンポーネントの現在のバージョンをダウンロードし、表示することができる。例えば、アプリケーション１０４は、サーバ１１０における１つ以上のアカウント、連絡先、機会、リード、プロダクト、キャンペーン、ユーザ、契約、又はレポートの最新の（most  current）バージョンを含むレコードページを表示することができる。
【００２２】
アプリケーション１０４はまた、オフラインモードでも使用できる。これは、アプリケーション１０４のユーザが様々なタスクをオフラインで実行することを可能にする。アプリケーション１０４は、モバイルデバイス１０２がネットワーク１０８への接続を確立できないとき、オフラインモードに置かれてもよい。例えば、これは、モバイルデバイス１０２が信号範囲外であるとき、例えば、これに限られないがモバイルデバイス１０２が山で使用されているときなどに、発生する可能性がある。アプリケーション１０４は、ネットワーク１０８への接続が低い帯域幅及び高いレイテンシであるため、オフラインモードに置かれてもよい。アプリケーション１０４は、サーバ１１０がオフラインであるため、オフラインモードに置かれてもよい。例えば、これは、サーバ１１０がメンテナンスのためにダウンしているとき、発生する可能性がある。アプリケーション１０４はまた、接続を使用するコストがあまりに高価なため、オフラインモードに置かれてもよい。例えば、アプリケーション１０４は、データ割当量（data  quota）に従うセルラー接続を使用することがあり得る。アプリケーション１０４のユーザは、それらのデータプランを使い切ることを望まない可能性があるため、ユーザは、アプリケーション１０４をオフラインモードで使用するよう決定する可能性がある。
【００２３】
オフラインモードでは、モバイルデバイス１０２がネットワーク１０８への接続を有さないとしても、ユーザはアプリケーション１０４を使用してサーバ１１０からの１つ以上のコンポーネントを表示し、修正することができる。アプリケーション１０４をオフラインモードで使用するために、アプリケーション１０４は、オフラインに移行する前にサーバ１１０から１つ以上のコンポーネントをダウンロードすることができる。
【００２４】
オフラインのときにユーザにより必要とされない無関係のデータをダウンロードするという技術的問題を克服するために、サーバ１１０の管理者は、オフラインコンフィギュレータ１１４を使用して、アプリケーション１０４においてどのコンポーネントがオフラインで利用可能にされるかを定義することができる。これは、ダウンロード及びストレージコストを低減させることができる。これはまた、ユーザが自身が実際に必要とするコンポーネントのみ入手することを保証することもできる。
【００２５】
サーバ１１０の管理者は、オフラインコンフィギュレータ１１４を使用して、アプリケーション１０４においてどのコンポーネントがオフラインで利用可能にされるかを定義することができる。定義されたコンポーネントセットは、オフラインブリーフケースと呼ばれてもよい。オフラインブリーフケースがアプリケーション１０４にダウンロードされると、アプリケーション１０４のユーザは、自身がオンラインモードでコンポーネントに対して実行できるのと同じタスクを、オフラインブリーフケース内のコンポーネントに対して実行することができる。さらに、オフラインブリーフケースの使用は、アプリケーション１０４がデータをオフラインと同じ方法でオンラインで表示することを保証する方法の技術的問題を解決する。これは、オフラインブリーフケースのコンポーネントが、その関連づけられたオブジェクトを表示する方法を記述するためである。結果として、アプリケーション１０４は、オブジェクトをオフラインと同じ方法でオンラインで表示することができる。
【００２６】
いくつかの実施形態において、管理者は、オフラインコンフィギュレータ１１４を使用して、アプリケーションに基づいてどのコンポーネントがオフラインで利用可能にされるかを定義することができる。換言すれば、管理者は、定義されたオフラインブリーフケースがどのアプリケーションに関するかを定義することができる。例えば、管理者は、第１のアプリケーションのための１つ以上のオフラインブリーフケースと、第２のアプリケーションのための１つ以上のオフラインブリーフケースとを定義することができる。
【００２７】
いくつかの実施形態において、管理者は、オフラインコンフィギュレータ１１４を使用して、１以上のユーザに対してオフラインで利用可能にされる１つ以上のコンポーネントを定義することができる。例えば、管理者は、１つ以上のコンポーネントがユーザＡ、Ｂ、及びＣに対してオフラインで利用可能にされるべきと示すことができる。管理者は、１以上のユーザを、それらの対応するユーザ識別子、ユーザ名、又は当業者により理解される他タイプの識別子を使用して指定することができる。
【００２８】
いくつかの他の実施形態において、管理者は、オフラインコンフィギュレータ１１４を使用して、特定のユーザグループに対してオフラインで利用可能にされる１つ以上のコンポーネントを定義することができる。例えば、管理者は、１つ以上のコンポーネントが販売チームに対してオフラインで利用可能にされるべきであり、別の１つ以上のコンポーネントが経営陣チームに対してオフラインで利用可能にされるべきと示すことができる。管理者は、ユーザグループを、それらの対応するユーザグループ識別子、ユーザグループ名、又は当業者により理解される他タイプの識別子を使用して指定することができる。
【００２９】
いくつかの実施形態において、管理者は、オフラインコンフィギュレータ１１４を使用して、１つ以上のクエリ条件（query  conditions）に基づいて、オフラインで利用可能にされる１つ以上のコンポーネントを定義することができる。例えば、管理者は、オフラインコンフィギュレータ１１４を使用して、３より大きい格付けを有するサンフランシスコ内のアカウント（例えば、コンポーネントの一タイプ）が販売チームに対してオフラインで利用可能にされるべきと定義することができる。当業者により理解されるように、クエリ条件は、コンポーネントがオフラインで利用可能にされるべきかどうかを制御するコンポーネントのフィールドに関連づけられた任意の条件であってもよい。
【００３０】
いくつかの実施形態において、オフラインコンフィギュレータ１１４は、定義されたオフラインブリーフケースに１つ以上の関連コンポーネントを自動的に追加することができる。オフラインコンフィギュレータ１１４は、オフラインブリーフケース内のコンポーネントと１つ以上の関連コンポーネントとの間の関係に基づいて、定義されたオフラインブリーフケースに１つ以上の関連コンポーネントを自動的に追加することができる。いくつかの実施形態において、オフラインブリーフケース内のコンポーネントと１つ以上の関連コンポーネントとの間の関係は、データベース１１２内に定義される。いくつかの他の実施形態において、オフラインブリーフケース内のコンポーネントと１つ以上の関連コンポーネントとの間の関係は、オフラインコンフィギュレータ１１４を使用して管理者により定義されてもよい。
【００３１】
いくつかの実施形態において、管理者がオフラインブリーフケースを定義した後、オフラインコンフィギュレータ１１４は、オフラインブリーフケースのデータサイズ（例えば、オフラインで利用可能にされる１つ以上のコンポーネント）を決定することができる。オフラインコンフィギュレータ１１４は、決定されたデータサイズをアプリケーション１０４に提供することができる。これは、アプリケーション１０４がサーバ１１０とのオフラインブリーフケースの同期をいつ実行するか及び状況下を、アプリケーション１０４が制御することを可能にできる。
【００３２】
いくつかの実施形態において、オフラインブリーフケースを定義した後、サーバ１１０における準備サービス１２０は、アプリケーション１０４からオフラインブリーフケース（例えば、オフラインで利用可能にされる１つ以上のコンポーネント）にアクセスしダウンロードするためのエンドポイントを作成することができる。エンドポイントは、特定のオフラインブリーフケースを表すことができる。換言すれば、エンドポイントは、１つ以上のクエリ条件に従う、特定のユーザセットに対してオフラインで利用可能にされる１つ以上のコンポーネントを表すことができる。
【００３３】
いくつかの実施形態において、準備サービス１２０は、アプリケーションプログラミングインターフェース（ＡＰＩ）を使用してエンドポイントを実現することができる。準備サービス１２０は、これに限られないが代表的状態転送（Representational  State  Transfer、ＲＥＳＴ）などのウェブサービスＡＰＩを使用してエンドポイントを実現することができる。例えば、準備サービス１２０は、エンドポイントを一意のユニフォームリソースロケータ（uniform  resource  locator、ＵＲＬ）として実現することができる。アプリケーション１０４は、対応するＵＲＬへの要求を発行することにより、エンドポイントに関連づけられたオフラインブリーフケースにアクセスし、ダウンロードすることができる。応答して、準備サービス１２０は、これに限られないがＪａｖａＳｃｒｉｐｔ（登録商標）  Ｏｂｊｅｃｔ  Ｎｏｔｉｏｎ（ＪＳＯＮ）などの様々なデータフォーマットを使用してオフラインブリーフケースを返すことができる。
【００３４】
いくつかの実施形態において、アプリケーション１０４は、アプリケーション１０４の現在のユーザのユーザ情報（例えば、ユーザ識別子、ユーザ名等）と共に、エンドポイントに関連づけられたオフラインブリーフケースにアクセスしダウンロードするための要求を発行することができる。これは、アプリケーション１０４が、アプリケーション１０４に前にダウンロードされていないオフラインブリーフケースのコンポーネント、又はアプリケーション１０４にダウンロードされたため変更されたオフラインブリーフケースのコンポーネントのみダウンロードすることを可能にできる。これは、ダウンロード時間、データ伝送コスト、及びストレージ空間要件を低減させることができる。
【００３５】
アプリケーション１０４がオフラインブリーフケース内の新しい又は変更されたコンポーネントのみダウンロードすることを可能にするために、サーバ１１０は、レコード関心トラッカ１１６を含むことができる。レコード関心トラッカ１１６は、オフラインブリーフケースのどのコンポーネントが前にアプリケーション１０４にダウンロードされたかを各ユーザについて追跡することができる。換言すれば、レコード関心トラッカ１１６は、オフラインブリーフケースのコンポーネントの同期ステータスを各ユーザについて追跡することができる。いくつかの実施形態において、レコード関心トラッカ１１６は、アプリケーション１０４にダウンロードされたオフラインブリーフケースのコンポーネントのバージョンを各ユーザについて追跡することができる。レコード関心トラッカ１１６は、バージョン識別子、タイムスタンプ、又は当業者により理解される他の識別子を使用してコンポーネントのバージョンを追跡することができる。
【００３６】
いくつかの実施形態において、レコード関心トラッカ１１６は、管理者がオフラインブリーフケースを定義した後、オフラインブリーフケースの１つ以上のコンポーネントの初期同期ステータスを各ユーザについて確立することができる。次いで、レコード関心トラッカ１１６は、初期同期から始まり後続同期を通して、コンポーネントの同期ステータスを追跡することができる。
【００３７】
初期同期動作は、管理者がオフラインブリーフケースを定義し、準備サービス１２０がオフラインブリーフケースを表すエンドポイントを作成した後、アプリケーション１０４においてトリガされてもよい。準備サービス１２０がエンドポイントを作成した後、サーバ１１０は（例えば、リスナ１１８を介して）、アプリケーション１０４の同期エンジン１０６にプッシュ通知を送信することができる。プッシュ通知は、同期エンジン１０６に、バックグラウンドにおいて初期同期動作を実行すべき時間をスケジュールさせることができる。
【００３８】
いくつかの実施形態において、プッシュ通知は、オフラインブリーフケースを表すエンドポイントを指定することができる。プッシュ通知はまた、これに限られないがオフラインブリーフケースのデータサイズなどの様々な他の情報を指定することもできる。同期を実行するために、同期エンジン１０６は、プッシュ通知に指定されたエンドポイントに対する同期要求を発行することができる。同期エンジン１０６はまた、エンドポイントに対する同期要求と共に、アプリケーション１０４の現在のユーザのユーザ情報（例えば、ユーザ識別子、ユーザ名等）を含めることもできる。応答して、準備サービス１２０は、エンドポイントに関連づけられたオフラインブリーフケースをアプリケーション１０４に返すことができる。初期同期の場合、準備サーバ１２０は、完全なオフラインブリーフケースをアプリケーション１０４に返すことができる。
【００３９】
いくつかの実施形態において、アプリケーション１０４がサーバ１１０との初期同期を実行した後、レコード関心トラッカ１１６は、対応するユーザについてのオフラインブリーフケースの１つ以上のコンポーネントの同期ステータスを更新することができる。例えば、初期同期の後、レコード関心トラッカ１１６は、対応するユーザについてのオフラインブリーフケースの各コンポーネントをダウンロードされ又は同期させたものとしてマーク付けすることができる。
【００４０】
後続同期動作もまた、アプリケーション１０４においてトリガされてもよい。これは、オフラインブリーフケースの１つ以上のコンポーネントがサーバ１１０において修正された後、発生してもよい。結果として、アプリケーション１０４における１つ以上のコンポーネントの対応するバージョンは、古い（out-of-date）可能性がある。
【００４１】
いくつかの実施形態において、アプリケーション１０４が後続同期動作を実行したとき、アプリケーション１０４は、オフラインブリーフケースの修正されたコンポーネントをダウンロードすることができる。アプリケーション１０４は、オフラインブリーフケースの修正されていないコンポーネントをダウンロードすることを回避でき、なぜならば、該コンポーネントは最後の同期から変更されていないからである。換言すれば、アプリケーション１０４は、後続同期の間、変更されたコンポーネントだけをダウンロードすることができる。これは、モバイルデバイス１０２におけるダウンロード時間、電力使用、及びストレージ要件を低減させることができる。
【００４２】
いくつかの実施形態において、レコード関心トラッカ１１６は、アプリケーション１０４がオフラインブリーフケースの修正されていないコンポーネントのダウンロードを回避することを可能にする。論じられたように、レコード関心トラッカ１１６は、各ユーザについて、オフラインブリーフケースの１つ以上のコンポーネントの同期ステータスを追跡することができる。サーバ１１０においてオフラインブリーフケースのコンポーネントに変更が行われるたび、レコード関心トラッカ１１６は、コンポーネントの同期ステータスを「ダウンロードされていない」又は「古い」に変更することができる。レコード関心トラッカ１１６は、契約コンポーネントを含むオフラインブリーフケースを受信するように構成された各ユーザについて、コンポーネントの同期ステータスを変更することができる。
【００４３】
オフラインブリーフケース内のコンポーネントに対する変更をレコード関心トラッカ１１６に警告するために、サーバ１１０はリスナ１１８を含むことができる。リスナ１１８は、コンポーネントに対するデータ変更を傍受することができる。例えば、リスナ１１８は、データベース１１２内のコンポーネントに関連づけられたレコードデータ及びレコードメタデータに対する変更を傍受することができる。
【００４４】
限定でなく、例として、リスナ１１８は、連絡先コンポーネントに対する変更を傍受することができる。例えば、連絡先コンポーネントのファーストネーム及びラストネームが変更されていてもよい。次いで、リスナ１１８は、レコード関心トラッカ１１６に契約コンポーネントが変更されたと警告することができる。警告に応答して、レコード関心トラッカ１１６は、契約コンポーネントを含むオフラインブリーフケースを受信するように構成された各ユーザについて、契約コンポーネントの同期ステータスを「ダウンロードされていない」又は「古い」に変更することができる。
【００４５】
いくつかの実施形態において、リスナ１１８がコンポーネントに対する変更を傍受し、レコード関心トラッカ１１６が該コンポーネントを含むオフラインブリーフケースを受信するように構成された各ユーザについてコンポーネントの同期ステータスを更新したことに応答して、サーバ１１０は、各ユーザのモバイルデバイス１０２にプッシュ通知を送信することができる。サーバ１１０は、各ユーザのモバイルデバイス１０２におけるアプリケーション１０４の同期エンジン１０６に対してプッシュ通知を送信することができる。プッシュ通知は、同期エンジン１０６に、バックグラウンドにおいて後続同期動作を実行すべき時間をスケジュールさせることができる。
【００４６】
プッシュ通知は、アプリケーション１０４におけるオフラインブリーフケースに存在しない新しい又は変更されたコンポーネントがサーバ１１０にあることを、同期エンジン１０６に示すことができる。プッシュ通知が、新しい又は変更されたコンポーネントがあると示すことができるため、同期エンジン１０６は、サーバ１１０における新しい又は変更されたコンポーネントについてサーバ１１０をポーリングすることを回避できる。これは、モバイルデバイス１０２における電力使用及びデータ伝送コストを低減させることができる。同期エンジン１０６は、代わりに、それがプッシュ通知を受信するまで待機することができる。次いで、同期エンジン１０６は、以下に論じられるように、様々なファクタのバランスをとる後の時間に同期を実行することができる。
【００４７】
いくつかの実施形態において、同期エンジン１０６は、プッシュ通知内の情報を使用して同期を実行することができる。同期エンジン１０６は、プッシュ通知に指定されたエンドポイントに対する同期要求を発行することにより、同期を実行することができる。論じられたように、エンドポイントは、特定のオフラインブリーフケースを表すことができる。同期エンジン１０６はまた、エンドポイントに対する同期要求と共に、アプリケーション１０４の現在のユーザのユーザ情報（例えば、ユーザ識別子、ユーザ名等）を含むこともできる。応答して、準備サービス１２０は、エンドポイントに関連づけられたオフラインブリーフケースの１つ以上の新しい又は変更されたコンポーネントをアプリケーション１０４に返すことができる。上記で論じられたように、サーバ１１０は、レコード関心トラッカ１１６及びリスナ１１８を使用して、オフラインブリーフケースの１つ以上の新しい又は変更されたコンポーネントのアプリケーション１０４への返信を可能にすることができる。
【００４８】
いくつかの実施形態において、同期エンジン１０６は、同期動作をいつ実行すべきかを制御して、アプリケーション１０４におけるユーザ体験を改善し、モバイルデバイス１０２における電力使用及びデータ伝送コストを低減させることができる。同期エンジン１０６は、アプリケーション１０４におけるオフラインブリーフケースに存在しない新しい又は変更されたコンポーネントがサーバ１１０にあることを示すプッシュ通知を受信することができる。プッシュ通知は、同期エンジン１０６を起動させて同期動作を開始することができる。プッシュ通知は、同期エンジン１０６が実行していないとしても、同期エンジン１０６を起動させることができる。例えば、プッシュ通知は、モバイルデバイス１０２におけるモバイルオペレーティングシステム（例えば、Ａｐｐｌｅ  ｉＯＳ又はＧｏｏｇｌｅ  Ａｎｄｒｏｉｄ）で受信されてもよい。次いで、モバイルオペレーションシステムは、プッシュ通知に応答して同期エンジン１０６の実行を開始することができる。
【００４９】
いくつかの実施形態において、モバイルオペレーティングシステムは、いつ同期エンジン１０６を起動して同期を開始すべきかを決定することができる。モバイルオペレーティングシステムは、モバイルデバイス１０２の現在のバッテリ寿命、ネットワーク１０８への接続の存在、ネットワーク１０８への接続のタイプ（例えば、米国電気電子技術者協会（Institute  of  Electrical  and  Electronics  Engineers、ＩＥＥＥ）８０２．１１（ＷｉＦｉ）接続対セルラーネットワーク接続）、モバイルデバイス１０２上で現在実行しているアプリケーションの数、使用パターン、ジオロケーション、及び当業者により理解される様々な他のファクタに基づいて、同期エンジン１０６を起動するよう決定することができる。モバイルオペレーティングシステムは、様々な機械学習能力を使用してこれらファクタのうち１つ以上を分析することにより、同期エンジン１０６を起動するよう決定することができる。
【００５０】
いくつかの実施形態において、モバイルオペレーティングシステムは、サーバ１１０により提供される様々な情報に基づいて、いつ同期エンジン１０６を起動して同期を開始すべきかを決定することができる。モバイルオペレーティングシステムは、プッシュ通知に含まれるオフラインブリーフケースのデータサイズに基づいて、同期エンジン１０６を起動してオフラインブリーフケースの同期を開始するよう決定することができる。例えば、モバイルオペレーティングシステムは、オフラインブリーフケースのデータサイズがセルラー接続のデータ割当量残高より小さいとき、セルラー接続を通じて同期を開始してもよい。モバイルオペレーティングシステムは、オフラインブリーフケースのデータサイズがセルラー接続のデータ割当量残高より大きいとき、ＷｉＦｉ接続を通じて同期を開始してもよい。
【００５１】
モバイルオペレーティングシステムはまた、プッシュ通知に含まれるジオフェンストリガに基づいて、同期エンジン１０６を起動してオフラインブリーフケースの同期を開始するよう決定することもできる。例えば、モバイルオペレーティングシステムは、モバイルデバイス１０２がプッシュ通知に指定されたジオフェンスに入ったとき、同期を開始してもよい。当業者により理解されるように、モバイルオペレーティングシステムは、サーバ１１０により提供される様々な他の情報に基づいて、同期エンジン１０６を起動して同期を開始するよう決定することができる。
【００５２】
いくつかの実施形態において、モバイルオペレーティングシステムは、サーバ１１０により提供される情報とモバイルデバイス１０２における様々なファクタとの双方に基づいて、同期エンジン１０６を起動して同期を開始するよう決定することができる。当業者により理解されるように、モバイルオペレーティングシステムは、サーバ１１０により提供される情報とモバイルデバイス１０２における様々なファクタとの双方を様々な機械学習能力を使用して分析することにより、同期エンジン１０６を起動して同期を開始するよう決定することができる。
【００５３】
いくつかの実施形態において、同期エンジン１０６は、バックグラウンドで静かに（silently）同期を実行することができる。同期エンジン１０６は、ユーザワークフローを中断させることなく同期を実行することができる。例えば、同期の間にアプリケーション１０４とのユーザ対話をブロックする代わりに、同期エンジン１０６は、ユーザがアプリケーション１０４と対話する間、同期を実行することができる。
【００５４】
いくつかの実施形態において、オフラインモードのとき、アプリケーション１０４は、ユーザがオフラインブリーフケース内の１つ以上のコンポーネントに対して変更を行うことを可能にできる。例えば、ユーザは、オフラインブリーフケース内の連絡先コンポーネントにより表される連絡先のファーストネーム及びラストネームを編集することができる。
【００５５】
いくつかの実施形態において、アプリケーション１０４は、オフラインブリーフケース内のコンポーネントに対する変更を下書き（draft）コンポーネントとして保存することができる。下書きコンポーネントは、変更の前のオフラインブリーフケースのダウンロードされたコンポーネント内のデータのバージョン、及び対応する変更を含むことができる。これは、以下で論じられるように、衝突チェックを可能にすることができる。下書きコンポーネントは、オフラインブリーフケースのダウンロードされたコンポーネント内の元のデータが変更されていない場合、それを含まなくてもよい。これは、下書きコンポーネントのデータサイズを低減させることができる。下書きコンポーネントは、これに限られないがＪＳＯＮなどの様々なフォーマットで記憶されてもよい。当業者により理解されるように、下書きコンポーネントは、様々な他のフォーマットを使用して記憶されてもよい。
【００５６】
下書きコンポーネントは、アプリケーション１０４の安全な記憶エリアに記憶されてもよい。いくつかの実施形態において、アプリケーション１０４がウェブアプリケーションである場合、下書きコンポーネントは、アプリケーション１０４を実行するウェブブラウザの安全な記憶エリアに記憶されてもよい。当業者により理解されるように、アプリケーション１０４又はウェブブラウザに安全な記憶エリアを実現するための様々な方法がある。
【００５７】
いくつかの実施形態において、後続同期の間、同期エンジン１０６は、下書きコンポーネントをサーバ１１０にアップロードして、サーバ１１０における対応するコンポーネントを置換することができる。同期の間、サーバ１１０は、アップロードされた下書きコンポーネントとサーバ１１０における対応するコンポーネントとの間の衝突を検出してもよい。例えば、サーバ１１０は、下書きコンポーネントにより指定されたデータの前のバージョン（例えば、変更の前のアプリケーション１０４における対応するコンポーネント内のデータのバージョン）がサーバ１１０に記憶されたデータの現在のバージョンと一致しないと決定してもよい。これは、アプリケーション１０４がオフラインモードであったとき、対応するコンポーネントがサーバ１１０において別のユーザにより修正されたことを示してもよい。
【００５８】
いくつかの実施形態において、アプリケーション１０４は、潜在的な衝突をユーザに警告することができる。例えば、アプリケーション１０４は、アプリケーション１０４がオフラインモードであったとき、サーバ１１０上の下書きコンポーネントに対応するコンポーネントのバージョンが変更されたことを示してもよい。アプリケーション１０４はまた、サーバ１１０上の下書きコンポーネントに対応するコンポーネントのバージョンと下書きコンポーネントとの間の差を表示してもよい。
【００５９】
いくつかの実施形態において、アプリケーション１０４は、ユーザが同期を進め、サーバ１１０上の下書きコンポーネントに対応するコンポーネントを下書きコンポーネントで置換することを可能にできる。アプリケーション１０４はまた、ユーザが衝突を無視し、サーバ１１０上の下書きコンポーネントに対応するコンポーネントを下書きコンポーネントで置換しないことを可能にすることもできる。
【００６０】
図３は、一実施形態による、オフラインブリーフケースを同期させる方法３００のフローチャートである。方法３００は、ハードウェア（例えば、回路、専用論理、プログラマブル論理、マイクロコード等）、ソフトウェア（例えば、処理デバイス上で実行する命令）、又はこれらの組み合わせを含み得る処理論理により実行されてもよい。本明細書に提供される開示を実行するために全てのステップが必要とはされない可能性があることを十分理解されたい。さらに、当業者により理解されるように、ステップのいくつかが同時に、又は図３に示されているものと異なる順序で実行されてもよい。
【００６１】
方法３００は、図１を参照して説明される。しかしながら、方法３００は、これらの例示的な実施形態に限定されない。
【００６２】
３０２において、サーバ１１０における管理者が、オフラインコンフィギュレータ１１４を使用して、１以上のユーザに対してアプリケーション１０４においてどのコンポーネントがオフラインで利用可能にされるかを定義する。定義されたコンポーネントセットは、オフラインブリーフケースと呼ばれてもよい。コンポーネントは、オブジェクト（例えば、アカウント、連絡先、機会、リード、プロダクト、キャンペーン、ユーザ、契約、レポート等）とそれを表示する方法とを表すことができる。
【００６３】
管理者はさらに、１つ以上のクエリ条件に基づいて、アプリケーション１０４においてどのコンポーネントがオフラインで利用可能にされるかを定義することができる。例えば、管理者は、オフラインコンフィギュレータ１１４を使用して、３より大きい格付けを有するサンフランシスコ内のアカウント（例えば、コンポーネントの一タイプ）が１以上のユーザに対してオフラインで利用可能にされるべきと定義することができる。
【００６４】
３０４において、サーバ１１０における準備サービス１２０が、アプリケーション１０４からオフラインブリーフケースにアクセスしダウンロードするためのエンドポイントを作成する。エンドポイントは、オフラインブリーフケース（例えば、１つ以上のクエリ条件に従う、特定のユーザセットに対してオフラインで利用可能にされる１つ以上のコンポーネント）を表すことができる。準備サービス１２０は、これに限られないがウェブサービスＡＰＩなどのＡＰＩを使用してエンドポイントを実現することができる。
【００６５】
３０６において、リスナ１１８が、オフラインブリーフケースのコンポーネントに対するデータ変更を傍受する。例えば、リスナ１１８は、データベース１１２内のコンポーネントに関連づけられたレコードデータ及びレコードメタデータに対する変更を傍受することができる。
【００６６】
３０８において、サーバ１１０が、オフラインブリーフケース内のコンポーネントに変更があったことを示すプッシュ通知をアプリケーション１０４の同期エンジン１０６に送信する。プッシュ通知は、オフラインブリーフケースをダウンロードしアクセスするために使用されるエンドポイントを含むことができる。
【００６７】
３１０において、サーバ１１０が、作成されたエンドポイントにおいてアプリケーション１０４の同期エンジン１０６から同期要求を受信する。同期要求は、アプリケーション１０４におけるユーザのユーザ識別子を含むことができる。サーバ１１０は、レコード関心トラッカ１１６を使用して、変更されたコンポーネントがユーザのアプリケーション１０４にすでにダウンロードされているかどうかを決定することができる。
【００６８】
３１２において、サーバ１１０が、同期要求に応答して、変更されたコンポーネントをアプリケーション１０４の同期エンジン１０６に送信する。アプリケーション１０４は、次いで、変更されたコンポーネントをユーザに表示することができる。アプリケーション１０４は、変更されたコンポーネントのレコードメタデータを使用して、変更されたコンポーネントのレコードデータ（例えば、オブジェクト）を表示することができる。変更されたコンポーネントは、レコードデータ及びレコードメタデータの双方を含むため、アプリケーション１０４は、変更されたコンポーネントをオフラインと同じ方法でオンラインで表示することができる。
【００６９】
上記で論じられたように、管理者は、１以上のユーザに対してオフラインブリーフケースを定義することができ、それにより、これらユーザは、アプリケーション１０４をオフラインで使用することができる。しかしながら、顧客が、新しいユーザ定義コンポーネントを作成し、それをオフラインで実行したい場合がある。これを行うために、顧客は、新しいユーザ定義コンポーネントを作成し、それをオフライン可能と宣言することができる。これは、ユーザ定義コンポーネントの関連づけられたレコードもまたオフラインで利用可能であることを保証する。
【００７０】
アプリケーション１０４は、１つ以上のユーザ定義コンポーネントを含むことができる。ユーザ定義コンポーネントは、１つ以上のレコード（例えば、サーバ１１０からのコンポーネント）を含むことができる。アプリケーション１０４は、オフライン可能と宣言されたユーザ定義コンポーネントを、それがオフラインブリーフケースの一部としてオフラインで利用可能にされたコンポーネントであるかのように処理することができる。例えば、ユーザ定義コンポーネントは、オフラインブリーフケースのコンポーネントが同期エンジン１０６を使用して（例えば、方法３００に従って）同期され得るのと同じ方法で、同期エンジン１０６を使用して同期されてもよい。アプリケーション１０４はまた、オフライン使用のために、ユーザ定義コンポーネント自体と共に１つ以上のレコード（例えば、サーバ１１０からのコンポーネント）を処理することもできる。
【００７１】
いくつかの実施形態において、管理者は、オフラインコンフィギュレータ１１４を使用して、ユーザ定義コンポーネントをオフライン可能と宣言することができる。管理者はさらに、オフラインコンフィギュレータ１１４を使用して、オフライン可能と宣言されたユーザ定義コンポーネントの任意の関連づけられたレコード（例えば、サーバ１１０のコンポーネント）がオフラインで利用可能と定義されることを保証することができる。アプリケーション１０４は、次いで、同期エンジン１０６を使用して、オフラインモードに切り替える前に、ユーザ定義コンポーネントをユーザ定義コンポーネントの任意の関連づけられたレコード（例えば、サーバ１１０におけるコンポーネント）と共にサーバ１１０からプリフェッチする（prefetch）ことができる。プリフェッチ要求に応答して、アプリケーション１０４は、オフライン可能と宣言されたユーザ定義コンポーネントの関連づけられたレコード（例えば、サーバ１１０からのコンポーネント）を受信することができる。
【００７２】
例えば、管理者は、オフラインコンフィギュレータ１１４を使用して、ユーザ定義マップコンポーネントをオフライン可能と宣言することができる。管理者はさらに、オフラインコンフィギュレータ１１４を使用して、ユーザ定義マップコンポーネントのためにダウンロードすべき１つ以上のレコード（例えば、コンポーネント）を識別することができる。管理者は、オフラインコンフィギュレータ１１４を使用して、特定のジョブ機能を有するユーザセットに対する１つ以上のレコードを識別することができる。
【００７３】
ユーザ定義マップコンポーネントは、マップを表示することができる。マップは、ユーザ定義マップコンポーネントに関連づけられた特定のレコード（例えば、コンポーネント）に対応することができる。例えば、マップは、特定のアカウントに対応してもよい。ゆえに、ユーザが、ユーザ定義マップコンポーネントをオフラインで使用しているとき、ユーザは、特定のアカウントに関連づけられたマップがオフラインで表示可能であることを望む。
【００７４】
特定のアカウントに関連づけられたマップをオフラインで表示するために、アプリケーション１０４は、オフラインモードに切り替える前に、同期エンジン１０６を使用してサーバ１１０からユーザ定義マップコンポーネントをプリフェッチすることができる。アプリケーション１０４はまた、特定のアカウントに対応するウェブから、ユーザ定義マップコンポーネントの関連づけられたレコードとマップとをプリフェッチすることもできる。
【００７５】
いくつかの実施形態において、ユーザ定義コンポーネントは、アクションタイプごとに異なるレイアウトを有することができる。例えば、ユーザ定義コンポーネントは、別個の閲覧及び編集レイアウトを有することができる。オフライン可能と宣言されたユーザ定義コンポーネントについて、アプリケーション１０４は、ユーザ定義コンポーネントのための別個のレイアウトをプリフェッチすることができる。これは、ユーザがオフラインの間でさえユーザ定義コンポーネントを使用して閲覧及び編集する特有の体験を有することを可能にできる。いくつかの実施形態において、別個のレイアウトは、ユーザ定義コンポーネントのレコードメタデータ内に指定されてもよい。
【００７６】
いくつかの実施形態において、アプリケーション１０４は、ネイティブ要素及びウェブ要素の双方の複合物であってもよい。ネイティブ要素は、下位のモバイルオペレーティングシステム又はアプリケーションランタイムの要素であってもよい。例えば、ネイティブ要素は、検索機能であってもよい。ウェブ要素は、ウェブコンテナにおいてレンダリングされる要素であってもよい。ネイティブ要素及びウェブ要素の双方が、オフラインレコード（例えば、サーバ１１０からのコンポーネント）へのアクセスを必要としてもよい。
【００７７】
いくつかの実施形態において、アプリケーション１０４は、ネイティブ要素及びウェブ要素の双方に共通データキャッシュ層を提供することができる。ネイティブ要素及びウェブ要素は、共通データキャッシュ層を通してオフラインレコードにアクセスすることができる。共通データキャッシュ層は、オフラインで利用可能な必要があるデータを識別することができ、そのデータをアプリケーション１０４による使用のためにキャッシュする。共通データキャッシュ層は、レコードに対する編集が、それがネイティブ要素において発生したか又はウェブ要素において発生したかにかかわらず、アプリケーション１０４に対して普遍的に利用可能であることを保証することができる。
【００７８】
図４は、一実施形態による、オフラインアクセスのためにアプリケーション１０４のユーザ定義コンポーネントを同期させる方法４００のフローチャートである。方法３００は、ハードウェア（例えば、回路、専用論理、プログラマブル論理、マイクロコード等）、ソフトウェア（例えば、処理デバイス上で実行する命令）、又はこれらの組み合わせを含み得る処理論理により実行されてもよい。本明細書に提供される開示を実行するために全てのステップが必要とはされない可能性があることを十分理解されたい。さらに、当業者により理解されるように、ステップのいくつかが同時に、又は図３に示されているものと異なる順序で実行されてもよい。
【００７９】
方法４００は、図１を参照して説明される。しかしながら、方法４００は、これらの例示的な実施形態に限定されない。
【００８０】
４０２において、サーバ１１０における管理者が、オフラインコンフィギュレータ１１４を使用して、アプリケーション１０４においてオフラインでアクセス可能なユーザグループに対するユーザ定義コンポーネントを宣言する。
【００８１】
４０４において、オフラインコンフィギュレータ１１４が、第２のコンポーネントがユーザ定義コンポーネントに関連すると決定する。
【００８２】
４０６において、サーバ１１０が、ユーザ定義コンポーネントのためのアプリケーション１０４からの同期要求を受信する。
【００８３】
４０８において、サーバ１１０が、同期要求に基づいて、ユーザ定義コンポーネント及び第２のコンポーネントをモバイルアプリケーションに送信する。
【００８４】
様々な実施形態が、例えば、図５に示されるコンピュータシステム５００などの１つ以上のコンピュータシステムを使用して実現できる。コンピュータシステム５００は、例えば、図３及び図４の方法３００及び４００をそれぞれ実現するために使用できる。例えば、コンピュータシステム５００は、オブジェクトの自動レイアウトを実行することができる。コンピュータシステム５００はさらに、いくつかの実施形態によれば、複数の電子デバイスにわたりプレゼンテーションを表示することができる。コンピュータシステム５００は、本明細書に説明される機能を実行できる任意のコンピュータであってもよい。
【００８５】
コンピュータシステム５００は、本明細書に説明される機能を実行できる任意の良く知られたコンピュータであってもよい。
【００８６】
コンピュータシステム５００は、１つ以上のプロセッサ（中央処理ユニット又はＣＰＵとも呼ばれる）、例えばプロセッサ５０４などを含む。プロセッサ５０４は、通信インフラストラクチャ又はバス５０６に接続される。
【００８７】
１つ以上のプロセッサ５０４が各々、グラフィックス処理ユニット（ＧＰＵ）であってもよい。一実施形態において、ＧＰＵは、数学的に集中的なアプリケーションを処理するように設計された、特化された電子回路であるプロセッサである。ＧＰＵは、コンピュータグラフィクスアプリケーション、画像、ビデオ等に共通の数学的に集中的なデータなどの、データの大きいブロックの並列処理に対して効率的な並列構造を有し得る。
【００８８】
コンピュータシステム５００は、ユーザ入力／出力インターフェース５０２を通して通信インフラストラクチャ５０６と通信するユーザ入力／出力デバイス５０３、例えば、モニタ、キーボード、ポインティングデバイスなどをさらに含む。
【００８９】
コンピュータシステム５００は、メイン又はプライマリメモリ５０８、例えば、ランダムアクセスメモリ（ＲＡＭ）などをさらに含む。メインメモリ５０８は、１つ以上のレベルのキャッシュを含んでもよい。メインメモリ５０８は、その中に制御論理（すなわち、コンピュータソフトウェア）及び／又はデータを記憶している。
【００９０】
コンピュータシステム５００は、１つ以上のセカンダリストレージデバイス又はメモリ５１０をさらに含むことができる。セカンダリメモリ５１０は、例えば、ハードディスクドライブ５１２及び／又は取外し可能ストレージデバイス若しくはドライブ５１４を含んでもよい。取外し可能ストレージドライブ５１４は、フロッピーディスクドライブ、磁気テープドライブ、コンパクトディスクドライブ、光学ストレージデバイス、テープバックアップデバイス、及び／又は任意の他のストレージデバイス／ドライブでもよい。
【００９１】
取外し可能ストレージドライブ５１４は、取外し可能ストレージユニット５１８と対話することができる。取外し可能ストレージユニット５１８は、コンピュータソフトウェア（制御論理）及び／又はデータを記憶させたコンピュータ使用可能又は読取可能ストレージデバイスを含む。取外し可能ストレージユニット５１８は、フロッピーディスク、磁気テープ、コンパクトディスク、ＤＶＤ、光学ストレージディスク、及び／任意の他のコンピュータデータストレージデバイスでもよい。取外し可能ストレージドライブ５１４は、良く知られた方法で取外し可能ストレージユニット５１８から読み出し、かつ／あるいは取外し可能ストレージユニット５１８に書き込む。
【００９２】
一例示的な実施形態によれば、セカンダリメモリ５１０は、コンピュータプログラム及び／又は他の命令及び／又はデータがコンピュータシステム５００によりアクセスされることを可能にする他の手段、媒介、又は他のアプローチを含んでもよい。こうした手段、媒介、又は他のアプローチは、例えば、取外し可能ストレージユニット５２２及びインターフェース５２０を含むことができる。取外し可能ストレージユニット５２２及びインターフェース５２０の例は、プログラムカートリッジ及びカートリッジインターフェース（例えば、ビデオゲームデバイスで見られるものなど）、取外し可能メモリチップ（例えば、ＥＰＲＯＭ又はＰＲＯＭなど）及び関連づけられたソケット、メモリスティック及びＵＳＢポート、メモリカード及び関連づけられたメモリカードスロット、及び／又は任意の他の取外し可能ストレージユニット及び関連づけられたインターフェースを含んでもよい。
【００９３】
コンピュータシステム５００は、通信又はネットワークインターフェース５２４をさらに含むことができる。通信インターフェース５２４は、コンピュータシステム５００が（参照番号５２８により個々に及び集合的に参照される）リモートデバイス、リモートネットワーク、リモートエンティティ等の任意の組み合わせと通信及び対話することを可能にする。例えば、通信インターフェース５２４は、コンピュータシステム５００が通信経路５２６を通じてリモートデバイス５２８と通信することを可能にでき、通信経路５２６は、有線及び／又は無線でもよく、通信経路５２６は、ＬＡＮ、ＷＡＮ、インターネット等の任意の組み合わせを含んでもよい。制御論理及び／又はデータが、通信経路５２６を介してコンピュータシステム５００に、及びコンピュータシステム５００から送信されてもよい。
【００９４】
一実施形態において、制御論理（ソフトウェア）を記憶させた有形の非一時的コンピュータ使用可能又は読取可能媒体を含む有形の非一時的装置又は製造品が、本明細書でコンピュータプログラムプロダクト又はプログラム記憶装置としてさらに参照される。これは、これらに限られないがコンピュータシステム５００、メインメモリ５０８、セカンダリメモリ５１０、及び取外し可能ストレージユニット５１８及び５２２、並びに前述の任意の組み合わせを具現化した有形製造品を含む。こうした制御論理は、１つ以上のデータ処理デバイス（例えば、コンピュータシステム５００など）により実行されたとき、上記データ処理デバイスに本明細書で説明されたように動作させる。
【００９５】
本開示に含まれる教示に基づき、図５に示されるもの以外のデータ処理デバイス、コンピュータシステム、及び／又はコンピュータアーキテクチャを使用して本開示の実施形態を作成及び使用する方法が当業者に明らかになるであろう。詳細には、実施形態は、本明細書に説明されるもの以外のソフトウェア、ハードウェア、及び／又はオペレーティングシステム実装で動作することができる。
【００９６】
他のセクションでなく詳細な説明セクションが、特許請求の範囲を解釈するために使用されるよう意図されることを十分理解されたい。他のセクションは、発明者により企図されるすべてではないが１つ以上の例示的な実施形態を説明することがあり、ゆえに、いかなる方法でも本開示又は別記の特許請求の範囲を限定するようには意図されない。
【００９７】
本開示は、例示的な分野及び適用に対して例示的な実施形態を説明するが、開示はそれに限定されないことを理解されたい。他の実施形態及びこれに対する変更が可能であり、本開示の範囲及び主旨の範囲内である。例えば、この段落の一般性を限定することなく、実施形態は、図面に例示され、及び／又は本明細書に説明されるソフトウェア、ハードウェア、ファームウェア、及び／又はエンティティに限定されない。さらに、実施形態は（本明細書で明示的に説明されるか否かにかかわらず）、本明細書に説明される例を越えた分野及び適用に対して有意な有用性を有する。
【００９８】
実施形態が、指定された機能及びその関係の実現を例示する機能構築ブロックを用いて本明細書で説明された。これら機能構築ブロックの境界は、説明の簡便さのために本明細書で任意的に定義されている。指定された機能及び関係（又は、その同等物）が適切に実行される限り、代替的な境界が定義されてもよい。さらに、代替的な実施形態が、本明細書に説明されるものと異なる順序づけを使用して機能ブロック、ステップ、動作、方法等を実行することができる。
【００９９】
本明細書において、「１つの実施形態」、「一実施形態」、「一例示的な実施形態」、又は同様のフレーズに対する参照は、説明される実施形態が特定の特徴、構造、又は特性を含み得るが、あらゆる実施形態が必ずしも上記特定の特徴、構造、又は特性を含み得るわけではないことを示す。さらに、こうしたフレーズは、必ずしも同じ実施形態を参照するわけではない。さらに、特定の特徴、構造、又は特性が一実施形態に関連して説明されたとき、こうした特徴、構造、又は特性を本明細書で明示的に言及又は説明されているか否かにかかわらず他の実施形態に組み込むことは、当業者の知識の範囲内である。さらに、いくつかの実施形態は、表現「結合された」及び「接続された」をその派生形と共に使用して説明されることがある。これら用語は、必ずしも互いの同義語として意図されない。例えば、いくつかの実施形態は、２つ以上の要素が互いに直接物理的又は電気的に接触することを示すために、用語「接続された」及び／又は「結合された」を使用して説明されることがある。しかしながら、用語「結合された」は、２つ以上の要素が互いに直接接触しないが、しかし依然として互いに協働又は対話することをさらに意味することがある。
【０１００】
本開示の幅及び範囲は、上記で説明された例示的な実施形態のいずれによっても限定されるべきでなく、別記の特許請求の範囲及びその均等物に従ってのみ定義されるべきである。
【図１】
2020053044.tif 000003
【図２】
2020053044.tif 000004
【図３】
2020053044.tif 000005
【図４】
2020053044.tif 000006
【図５】
2020053044.tif 000007
【外国語明細書】
2020053044000001.pdf