IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ セールスフォース ドット コム インコーポレイティッドの特許一覧

<>
  • 特許-オフラインブリーフケース同期 図1
  • 特許-オフラインブリーフケース同期 図2
  • 特許-オフラインブリーフケース同期 図3
  • 特許-オフラインブリーフケース同期 図4
  • 特許-オフラインブリーフケース同期 図5
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2023-10-13
(45)【発行日】2023-10-23
(54)【発明の名称】オフラインブリーフケース同期
(51)【国際特許分類】
   G06F 9/52 20060101AFI20231016BHJP
   G06Q 10/10 20230101ALI20231016BHJP
   H04L 67/2866 20220101ALI20231016BHJP
   H04L 67/55 20220101ALI20231016BHJP
【FI】
G06F9/52 150C
G06Q10/10
H04L67/2866
H04L67/55
【請求項の数】 20
【外国語出願】
(21)【出願番号】P 2019171558
(22)【出願日】2019-09-20
(65)【公開番号】P2020053044
(43)【公開日】2020-04-02
【審査請求日】2022-04-13
(31)【優先権主張番号】62/735499
(32)【優先日】2018-09-24
(33)【優先権主張国・地域又は機関】US
(31)【優先権主張番号】16/266783
(32)【優先日】2019-02-04
(33)【優先権主張国・地域又は機関】US
(73)【特許権者】
【識別番号】506332063
【氏名又は名称】セールスフォース インコーポレイテッド
(74)【代理人】
【識別番号】100107766
【弁理士】
【氏名又は名称】伊東 忠重
(74)【代理人】
【識別番号】100070150
【弁理士】
【氏名又は名称】伊東 忠彦
(74)【代理人】
【識別番号】100091214
【弁理士】
【氏名又は名称】大貫 進介
(72)【発明者】
【氏名】ヴィクター オリヴェロス
(72)【発明者】
【氏名】ゴータム シヴナニ
(72)【発明者】
【氏名】デイヴィッド クライン
(72)【発明者】
【氏名】クリストファー ダグラス セイモア
【審査官】漆原 孝治
(56)【参考文献】
【文献】米国特許出願公開第2013/0138608(US,A1)
【文献】国際公開第2010/116652(WO,A1)
【文献】特開2005-176407(JP,A)
【文献】特開2016-181830(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 9/52
G06F 13/00
G06Q 10/10
(57)【特許請求の範囲】
【請求項1】
コンピュータにより実現される方法であって、
少なくとも1つのプロセッサにより、アプリケーションにおいてオフラインでアクセス可能なユーザグループに対するオフラインブリーフケースを定義するステップであり、前記オフラインブリーフケースは、レコードデータとレコードメタデータとを含むコンポーネントを含む、ステップと、
前記少なくとも1つのプロセッサにより、前記オフラインブリーフケースにアクセスしダウンロードするためのエンドポイントを生成するステップであり、前記エンドポイントは、前記オフラインブリーフケースを表し、ユニフォームリソースロケータ(URL)を含むアプリケーションプログラミングインターフェース(API)を使用して実現される、ステップと、
前記少なくとも1つのプロセッサにより、前記コンポーネントに対する変更を検出するステップと、
前記少なくとも1つのプロセッサにより、前記コンポーネントに対する前記検出された変更に基づいてプッシュ通知を前記アプリケーションに送信するステップであり、前記プッシュ通知は前記エンドポイントを含む、ステップと、
前記少なくとも1つのプロセッサにより、前記送信されたプッシュ通知に応答して前記アプリケーションから同期要求を受信するステップであり、前記同期要求は前記エンドポイントの前記URLに対して発行される、ステップと、
前記少なくとも1つのプロセッサにより、前記同期要求に基づいて前記変更されたコンポーネントを前記アプリケーションに送信するステップと、
を含む方法。
【請求項2】
前記レコードデータはオブジェクトを表し、前記レコードメタデータは前記アプリケーションにおいて前記オブジェクトを表示する方法を定義する、請求項1に記載の方法。
【請求項3】
前記コンポーネントに対する前記検出された変更に基づいて前記ユーザグループのユーザについての前記コンポーネントの同期ステータスを更新するステップ、
をさらに含む請求項1に記載の方法。
【請求項4】
前記オフラインブリーフケースのデータサイズを算出するステップと、
前記データサイズを前記プッシュ通知に追加するステップと、
をさらに含む請求項1に記載の方法。
【請求項5】
前記コンポーネントに関連する第2のコンポーネントを決定するステップと、
前記第2のコンポーネントを前記オフラインブリーフケースに追加するステップと、
をさらに含む請求項1に記載の方法。
【請求項6】
前記定義するステップは、
前記コンポーネントをクエリ条件に基づいて前記オフラインブリーフケースに追加するステップ
をさらに含む請求項1に記載の方法。
【請求項7】
前記同期要求は、前記プッシュ通知に基づいてモバイルオペレーティングシステムが前記アプリケーションを起動したことに応答して受信される、請求項1に記載の方法。
【請求項8】
前記モバイルオペレーティングシステムは、接続タイプ、バッテリレベル、使用パターン、データ割当量、又はジオフェンス基準に基づいて、前記アプリケーションを起動すべき時間を決定する、請求項7に記載の方法。
【請求項9】
メモリと、
前記メモリに結合され、
アプリケーションにおいてオフラインでアクセス可能なユーザグループに対するオフラインブリーフケースを定義し、前記オフラインブリーフケースは、レコードデータとレコードメタデータとを含むコンポーネントを含み、
前記オフラインブリーフケースにアクセスしダウンロードするためのエンドポイントを生成し、前記エンドポイントは、前記オフラインブリーフケースを表し、ユニフォームリソースロケータ(URL)を含むアプリケーションプログラミングインターフェース(API)を使用して実現され、
前記コンポーネントに対する変更を検出し、
前記コンポーネントに対する前記検出された変更に基づいてプッシュ通知を前記アプリケーションに送信し、前記プッシュ通知は前記エンドポイントを含み、
前記送信されたプッシュ通知に応答して前記アプリケーションから同期要求を受信し、前記同期要求は前記エンドポイントの前記URLに対して発行され、
前記同期要求に基づいて前記変更されたコンポーネントを前記アプリケーションに送信する
ように構成された少なくとも1つのプロセッサと、
を含むシステム。
【請求項10】
前記レコードデータはオブジェクトを表し、前記レコードメタデータは前記アプリケーションにおいて前記オブジェクトを表示する方法を定義する、請求項9に記載のシステム。
【請求項11】
前記少なくとも1つのプロセッサは、
前記コンポーネントに対する前記検出された変更に基づいて前記ユーザグループのユーザについての前記コンポーネントの同期ステータスを更新する
ようにさらに構成される、請求項9に記載のシステム。
【請求項12】
前記少なくとも1つのプロセッサは、
前記コンポーネントに関連する第2のコンポーネントを決定し、
前記第2のコンポーネントを前記オフラインブリーフケースに追加する
ようにさらに構成される、請求項9に記載のシステム。
【請求項13】
定義するために、前記少なくとも1つのプロセッサは、
前記コンポーネントをクエリ条件に基づいて前記オフラインブリーフケースに追加する
ようにさらに構成される、請求項9に記載のシステム。
【請求項14】
前記同期要求は、前記プッシュ通知に基づいてモバイルオペレーティングシステムが前記アプリケーションを起動したことに応答して受信され、前記モバイルオペレーティングシステムは、接続タイプ、バッテリレベル、使用パターン、データ割当量、又はジオフェンス基準に基づいて、前記アプリケーションを起動すべき時間を決定する、請求項9に記載のシステム。
【請求項15】
命令を記憶させた非一時的コンピュータ読取可能デバイスであって、前記命令は少なくとも1つのコンピューティングデバイスにより実行されたときに前記少なくとも1つのコンピューティングデバイスに、
アプリケーションにおいてオフラインでアクセス可能なユーザグループに対するオフラインブリーフケースを定義することであり、前記オフラインブリーフケースは、レコードデータとレコードメタデータとを含むコンポーネントを含む、ことと、
前記オフラインブリーフケースにアクセスしダウンロードするためのエンドポイントを生成することであり、前記エンドポイントは、前記オフラインブリーフケースを表し、ユニフォームリソースロケータ(URL)を含むアプリケーションプログラミングインターフェース(API)を使用して実現される、ことと、
前記コンポーネントに対する変更を検出することと、
前記コンポーネントに対する前記検出された変更に基づいてプッシュ通知を前記アプリケーションに送信することであり、前記プッシュ通知は前記エンドポイントを含む、ことと、
前記送信されたプッシュ通知に応答して前記アプリケーションから同期要求を受信することであり、前記同期要求は前記エンドポイントの前記URLに対して発行される、ことと、
前記同期要求に基づいて前記変更されたコンポーネントを前記アプリケーションに送信することと、
を含む動作を実行させる、非一時的コンピュータ読取可能デバイス。
【請求項16】
前記レコードデータはオブジェクトを表し、前記レコードメタデータは前記アプリケーションにおいて前記オブジェクトを表示する方法を定義する、請求項15に記載の非一時的コンピュータ読取可能デバイス。
【請求項17】
前記動作は、
前記コンポーネントに対する前記検出された変更に基づいて前記ユーザグループのユーザについての前記コンポーネントの同期ステータスを更新すること
をさらに含む、請求項15に記載の非一時的コンピュータ読取可能デバイス。
【請求項18】
前記動作は、
前記コンポーネントに関連する第2のコンポーネントを決定することと、
前記第2のコンポーネントを前記オフラインブリーフケースに追加することと、
をさらに含む、請求項15に記載の非一時的コンピュータ読取可能デバイス。
【請求項19】
前記定義することは、
前記コンポーネントをクエリ条件に基づいて前記オフラインブリーフケースに追加すること
を含む、請求項15に記載の非一時的コンピュータ読取可能デバイス。
【請求項20】
前記同期要求は、前記プッシュ通知に基づいてモバイルオペレーティングシステムが前記アプリケーションを起動したことに応答して受信され、前記モバイルオペレーティングシステムは、接続タイプ、バッテリレベル、使用パターン、データ割当量、又はジオフェンス基準に基づいて、前記アプリケーションを起動すべき時間を決定する、請求項15に記載の非一時的コンピュータ読取可能デバイス。
【発明の詳細な説明】
【背景技術】
【0001】
ユーザは、しばしば、モバイルデバイス上で実行しているモバイルアプリケーションを使用して、その家やオフィスの外で様々なタスクを実行する。例えば、販売担当者は、異なる客先の間を移動するとき、顧客関係管理(CRM)モバイルアプリケーションを使用して顧客対話を管理し、分析することがある。様々なタスクを実行するために、モバイルアプリケーションは、しばしば、リモートサーバから関連データを取り出す必要がある。例えば、CRMモバイルアプリケーションは、リモートサーバから特定のアカウント、連絡先、及び購入注文を取り出すことがある。関連データを取り出すために、モバイルアプリケーションは、しばしば、リモートサーバに対する接続を確立する必要があるが、しばしば、リモートサーバへの接続を確立することは不可能である。しかしながら、ユーザは、しばしば、そのモバイルアプリケーションを使用して様々なタスクをオフラインで実行することを依然として望む。
【0002】
この問題を解決するために、従来のアプローチは、しばしば、モバイルアプリケーションがオフラインに移行する前にリモートサーバのデータをモバイルアプリケーションと同期させることを伴う。ユーザは、次いで、モバイルアプリケーションを使用して、ダウンロードされたデータを使用して様々なタスクを実行することができる。しかし、これらの従来のアプローチは、いくつかの問題を被る。第1に、従来のアプローチは、しばしば、オフラインのときにユーザにより必要とされない無関係のデータをダウンロードすることを伴う。第2に、従来のアプローチは、しばしば、非最適な時間に同期を実行し、モバイルアプリケーションとのユーザ対話をブロックする。第3に、従来のアプローチは、モバイルアプリケーションがダウンロードされたデータをオフラインと同じ方法でオンラインで表示することを保証しない。
【0003】
[関連出願の相互参照]
本出願は、「Offline Briefcase Synchronization」と題され2018年9月24日に出願された仮米国特許出願第62/735,499号の利益を主張し、該出願はその全体を参照により本明細書に援用される。
【図面の簡単な説明】
【0004】
添付の図面は、本明細書に組み込まれ、明細書の一部を構成する。
図1】いくつかの実施形態による、オフラインブリーフケースを同期させるシステムのブロック図である。
図2】いくつかの実施形態による、アプリケーションの例示的なレコードページを示す。
図3】いくつかの実施形態による、オフラインブリーフケースを同期させる処理を示すフローチャートである。
図4】いくつかの実施形態による、オフラインアクセスのためにアプリケーションのユーザ定義コンポーネントを同期させる処理を示すフローチャートである。
図5】様々な実施形態を実現するのに有用な一例示的なコンピュータシステムである。
【0005】
図面において、同様の参照番号は、一般に、同一又は類似の要素を示す。さらに、一般に、参照番号の最左桁は、参照番号が最初に現れる図面を識別する。
【発明を実施するための形態】
【0006】
オフラインアクセスのためにアプリケーションをリモートサーバと同期させるためのシステム、装置、デバイス、方法、及び/又はコンピュータプログラムプロダクトの実施形態、及び/又はこれらの組み合わせ及びサブコンビネーションが本明細書において提供される。
【0007】
オフラインアクセスのためにモバイルアプリケーションをリモートサーバと同期させるための従来のアプローチは、いくつかの技術的問題を被る。第1に、従来のアプローチは、しばしば、モバイルアプリケーションがオフラインのときにユーザにより必要とされない無関係のデータをダウンロードすることを伴う。これは、モバイルアプリケーションのためのダウンロード時間及びストレージ空間要件を不必要に増加させる可能性がある。第2に、従来のアプローチは、しばしば、モバイルアプリケーションがオフラインのときにユーザにより必要とされる高度に関連するデータをダウンロードするのに失敗することを伴う。第3に、従来のアプローチは、モバイルアプリケーションがダウンロードされたデータをオフラインと同じ方法でオンラインで表示することを保証しない。最後、従来のアプローチは、しばしば、モバイルアプリケーションが非最適な時間に同期を実行し、該同期がモバイルアプリケーションとのユーザ対話をブロックすることを伴う。
【0008】
図1は、いくつかの実施形態による、オフラインブリーフケースを同期させて上記の技術的問題を解決する同期システム100のブロック図である。同期システム100は、モバイルデバイス102及びサーバ110を含む。
【0009】
モバイルデバイス102は、モバイルフォン、タブレット、スマートウォッチ、ラップトップ、又は当業者により理解される他の電子デバイスであってもよい。モバイルデバイス102は、アプリケーション104を含むことができる。いくつかの実施形態において、アプリケーション104は、モバイルデバイス102上で実行するように設計されたモバイルアプリケーションであってもよい。例えば、アプリケーション104は、Apple(登録商標) iOS(登録商標)アプリケーション、Google(登録商標) Android(登録商標)アプリケーション、又は当業者により理解される他タイプのモバイルアプリケーションであってもよい。いくつかの他の実施形態において、アプリケーション104は、モバイルデバイス102上のウェブブラウザ内で実行するウェブアプリケーションであってもよい。アプリケーション104がウェブアプリケーションであるいくつかの実施形態において、アプリケーション104は、同期データをウェブブラウザの安全な記憶エリアに記憶することができる。
【0010】
アプリケーション104は、ネットワーク104を通じてサーバ110から1つ以上のコンポーネントをダウンロードし、表示することができる。ネットワーク104は、有線及び/又は無線のイントラネット、エクストラネット、インターネット、セルラー、Bluetooth(登録商標)、及び/又は任意の他のローカル、短距離、アドホック、地域、グローバルの通信ネットワーク、並びにこれらの任意の組み合わせを限定なく含むことができる。
【0011】
コンポーネントは、アプリケーション104の独立した再利用可能なユニットである。コンポーネントは、オブジェクトと、それを表示する方法とを表すことができる。例えば、コンポーネントは、アカウント、連絡先、機会、リード、プロダクト、キャンペーン、ユーザ、契約、レポート、又は当業者により理解される他タイプのオブジェクトなどのオブジェクトを表すことができる。
【0012】
コンポーネントは、レコードデータ及びレコードメタデータを含むことができる。レコードデータは、オブジェクトに関するデータを含むことができる。例えば、コンポーネントは、連絡先とそれを表示する方法とを表すことができる。対応するレコードデータは、連絡先のファーストネーム、ラストネーム、住所、電話番号、及び電子メールアドレスを含むことができる。レコードデータとオブジェクトとは交換可能に使用され得る。
【0013】
レコードメタデータは、対応するオブジェクトを表示し、対話する方法を定義することができる。レコードメタデータは、これに限られないが拡張可能マークアップ言語(Extensible Markup Language、XML)などのマークアップ言語を使用して指定されてもよい。レコードメタデータは、対応するオブジェクトのどのデータを表示すべきかを定義することができる。レコードメタデータは、対応するオブジェクトを表示するために使用すべきレイアウト又はカラースキームを定義することができる。レコードメタデータは、対応するオブジェクトと共に表示すべき1つ以上の画像を定義することができる。
【0014】
レコードメタデータはまた、対応するオブジェクトのビジネスロジックを定義することもできる。例えば、レコードメタデータは、対応するオブジェクトの検証ルールを定義することができる。アプリケーション104は、対応するレコードメタデータ内のビジネスロジックに基づいて、ユーザが如何にしてコンポーネントと対話するかを制御することができる。例えば、アプリケーション104は、対応するレコードメタデータ内の検証ルールに基づいて、オブジェクトに対して電子メールアドレスを入力するようユーザに強制することができる。
【0015】
いくつかの実施形態において、アプリケーション104は、サーバ110から1つ以上のコンポーネントをダウンロードし、レコードページ(record page)として表示することができる。レコードページは、アプリケーション104内のページを表すことができる。レコードページは、特定の方法で1つ以上のコンポーネントを一緒に表示することができる。
【0016】
図2は、いくつかの実施形態による、アプリケーション104の一例示的なレコードページを示す。図2は、図1に関して論じられる。
【0017】
図2は、アプリケーション104のレコードページ202を示す。レコードページ202は、コンポーネント204、206、及び208を含む。アプリケーション104は、ネットワーク104を通じてサーバ110からコンポーネント204、206、及び208をダウンロードし、表示することができる。コンポーネント204、206、208は各々、オブジェクトとそれを表示する方法とを表すことができる。
【0018】
例えば、アプリケーション104のレコードページ202が顧客関係管理(CRM)アプリケーションのレコードページである場合、コンポーネント204、206、206は、CRMオブジェクトを表すことができる。例えば、コンポーネント204は、アカウントオブジェクトを表すことができる。コンポーネント206は、コンポーネント204に対応するアカウントオブジェクトについての主な連絡先を表すことができる。コンポーネント208は、コンポーネント204に対応するアカウントオブジェクトについてのメモを表すことができる。
【0019】
CRMオブジェクトを表すことに加えて、コンポーネント204、206、206は、それらの対応するオブジェクトを表示する方法を定義することができる。例えば、コンポーネント204は、特定のレイアウトを使用して、レコードページ202の上部にアカウントオブジェクトを表示することができる。コンポーネント204は、アカウントオブジェクトに関する様々な情報、例えば、対応するアカウント番号、アカウント説明、及び請求先住所などを表示することができる。コンポーネント204はまた、関連情報を表示することもできる。例えば、コンポーネント204は、アカウントオブジェクトに関連する連絡先及びアカウント注文を表示することができる。
【0020】
論じられたように、アプリケーション104は、サーバ110から1つ以上のコンポーネントをダウンロードし、表示することができる。サーバ110は、データベース112、オフラインコンフィギュレータ(offline configurator)114、レコード関心トラッカ(record interest tracker)116、リスナ(listener)118、及び準備サービス(priming service)120を含むことができる。データベース112は、1つ以上のコンポーネントに関連づけられたレコードデータ及びレコードメタデータを記憶することができる。データベース112は、関係データベース、非関係データベース、階層データベース、オブジェクト指向データベース、又は当業者により理解される他タイプのデータベースであってもよい。
【0021】
アプリケーション104は、オンラインモード又はオフラインモードで使用できる。オンラインモードにおいて、アプリケーション104は、サーバ110から1つ以上のコンポーネントの現在のバージョンをダウンロードし、表示することができる。例えば、アプリケーション104は、サーバ110における1つ以上のアカウント、連絡先、機会、リード、プロダクト、キャンペーン、ユーザ、契約、又はレポートの最新の(most current)バージョンを含むレコードページを表示することができる。
【0022】
アプリケーション104はまた、オフラインモードでも使用できる。これは、アプリケーション104のユーザが様々なタスクをオフラインで実行することを可能にする。アプリケーション104は、モバイルデバイス102がネットワーク108への接続を確立できないとき、オフラインモードに置かれてもよい。例えば、これは、モバイルデバイス102が信号範囲外であるとき、例えば、これに限られないがモバイルデバイス102が山で使用されているときなどに、発生する可能性がある。アプリケーション104は、ネットワーク108への接続が低い帯域幅及び高いレイテンシであるため、オフラインモードに置かれてもよい。アプリケーション104は、サーバ110がオフラインであるため、オフラインモードに置かれてもよい。例えば、これは、サーバ110がメンテナンスのためにダウンしているとき、発生する可能性がある。アプリケーション104はまた、接続を使用するコストがあまりに高価なため、オフラインモードに置かれてもよい。例えば、アプリケーション104は、データ割当量(data quota)に従うセルラー接続を使用することがあり得る。アプリケーション104のユーザは、それらのデータプランを使い切ることを望まない可能性があるため、ユーザは、アプリケーション104をオフラインモードで使用するよう決定する可能性がある。
【0023】
オフラインモードでは、モバイルデバイス102がネットワーク108への接続を有さないとしても、ユーザはアプリケーション104を使用してサーバ110からの1つ以上のコンポーネントを表示し、修正することができる。アプリケーション104をオフラインモードで使用するために、アプリケーション104は、オフラインに移行する前にサーバ110から1つ以上のコンポーネントをダウンロードすることができる。
【0024】
オフラインのときにユーザにより必要とされない無関係のデータをダウンロードするという技術的問題を克服するために、サーバ110の管理者は、オフラインコンフィギュレータ114を使用して、アプリケーション104においてどのコンポーネントがオフラインで利用可能にされるかを定義することができる。これは、ダウンロード及びストレージコストを低減させることができる。これはまた、ユーザが自身が実際に必要とするコンポーネントのみ入手することを保証することもできる。
【0025】
サーバ110の管理者は、オフラインコンフィギュレータ114を使用して、アプリケーション104においてどのコンポーネントがオフラインで利用可能にされるかを定義することができる。定義されたコンポーネントセットは、オフラインブリーフケースと呼ばれてもよい。オフラインブリーフケースがアプリケーション104にダウンロードされると、アプリケーション104のユーザは、自身がオンラインモードでコンポーネントに対して実行できるのと同じタスクを、オフラインブリーフケース内のコンポーネントに対して実行することができる。さらに、オフラインブリーフケースの使用は、アプリケーション104がデータをオフラインと同じ方法でオンラインで表示することを保証する方法の技術的問題を解決する。これは、オフラインブリーフケースのコンポーネントが、その関連づけられたオブジェクトを表示する方法を記述するためである。結果として、アプリケーション104は、オブジェクトをオフラインと同じ方法でオンラインで表示することができる。
【0026】
いくつかの実施形態において、管理者は、オフラインコンフィギュレータ114を使用して、アプリケーションに基づいてどのコンポーネントがオフラインで利用可能にされるかを定義することができる。換言すれば、管理者は、定義されたオフラインブリーフケースがどのアプリケーションに関するかを定義することができる。例えば、管理者は、第1のアプリケーションのための1つ以上のオフラインブリーフケースと、第2のアプリケーションのための1つ以上のオフラインブリーフケースとを定義することができる。
【0027】
いくつかの実施形態において、管理者は、オフラインコンフィギュレータ114を使用して、1以上のユーザに対してオフラインで利用可能にされる1つ以上のコンポーネントを定義することができる。例えば、管理者は、1つ以上のコンポーネントがユーザA、B、及びCに対してオフラインで利用可能にされるべきと示すことができる。管理者は、1以上のユーザを、それらの対応するユーザ識別子、ユーザ名、又は当業者により理解される他タイプの識別子を使用して指定することができる。
【0028】
いくつかの他の実施形態において、管理者は、オフラインコンフィギュレータ114を使用して、特定のユーザグループに対してオフラインで利用可能にされる1つ以上のコンポーネントを定義することができる。例えば、管理者は、1つ以上のコンポーネントが販売チームに対してオフラインで利用可能にされるべきであり、別の1つ以上のコンポーネントが経営陣チームに対してオフラインで利用可能にされるべきと示すことができる。管理者は、ユーザグループを、それらの対応するユーザグループ識別子、ユーザグループ名、又は当業者により理解される他タイプの識別子を使用して指定することができる。
【0029】
いくつかの実施形態において、管理者は、オフラインコンフィギュレータ114を使用して、1つ以上のクエリ条件(query conditions)に基づいて、オフラインで利用可能にされる1つ以上のコンポーネントを定義することができる。例えば、管理者は、オフラインコンフィギュレータ114を使用して、3より大きい格付けを有するサンフランシスコ内のアカウント(例えば、コンポーネントの一タイプ)が販売チームに対してオフラインで利用可能にされるべきと定義することができる。当業者により理解されるように、クエリ条件は、コンポーネントがオフラインで利用可能にされるべきかどうかを制御するコンポーネントのフィールドに関連づけられた任意の条件であってもよい。
【0030】
いくつかの実施形態において、オフラインコンフィギュレータ114は、定義されたオフラインブリーフケースに1つ以上の関連コンポーネントを自動的に追加することができる。オフラインコンフィギュレータ114は、オフラインブリーフケース内のコンポーネントと1つ以上の関連コンポーネントとの間の関係に基づいて、定義されたオフラインブリーフケースに1つ以上の関連コンポーネントを自動的に追加することができる。いくつかの実施形態において、オフラインブリーフケース内のコンポーネントと1つ以上の関連コンポーネントとの間の関係は、データベース112内に定義される。いくつかの他の実施形態において、オフラインブリーフケース内のコンポーネントと1つ以上の関連コンポーネントとの間の関係は、オフラインコンフィギュレータ114を使用して管理者により定義されてもよい。
【0031】
いくつかの実施形態において、管理者がオフラインブリーフケースを定義した後、オフラインコンフィギュレータ114は、オフラインブリーフケースのデータサイズ(例えば、オフラインで利用可能にされる1つ以上のコンポーネント)を決定することができる。オフラインコンフィギュレータ114は、決定されたデータサイズをアプリケーション104に提供することができる。これは、アプリケーション104がサーバ110とのオフラインブリーフケースの同期をいつ実行するか及び状況下を、アプリケーション104が制御することを可能にできる。
【0032】
いくつかの実施形態において、オフラインブリーフケースを定義した後、サーバ110における準備サービス120は、アプリケーション104からオフラインブリーフケース(例えば、オフラインで利用可能にされる1つ以上のコンポーネント)にアクセスしダウンロードするためのエンドポイントを作成することができる。エンドポイントは、特定のオフラインブリーフケースを表すことができる。換言すれば、エンドポイントは、1つ以上のクエリ条件に従う、特定のユーザセットに対してオフラインで利用可能にされる1つ以上のコンポーネントを表すことができる。
【0033】
いくつかの実施形態において、準備サービス120は、アプリケーションプログラミングインターフェース(API)を使用してエンドポイントを実現することができる。準備サービス120は、これに限られないが代表的状態転送(Representational State Transfer、REST)などのウェブサービスAPIを使用してエンドポイントを実現することができる。例えば、準備サービス120は、エンドポイントを一意のユニフォームリソースロケータ(uniform resource locator、URL)として実現することができる。アプリケーション104は、対応するURLへの要求を発行することにより、エンドポイントに関連づけられたオフラインブリーフケースにアクセスし、ダウンロードすることができる。応答して、準備サービス120は、これに限られないがJavaScript(登録商標) Object Notion(JSON)などの様々なデータフォーマットを使用してオフラインブリーフケースを返すことができる。
【0034】
いくつかの実施形態において、アプリケーション104は、アプリケーション104の現在のユーザのユーザ情報(例えば、ユーザ識別子、ユーザ名等)と共に、エンドポイントに関連づけられたオフラインブリーフケースにアクセスしダウンロードするための要求を発行することができる。これは、アプリケーション104が、アプリケーション104に前にダウンロードされていないオフラインブリーフケースのコンポーネント、又はアプリケーション104にダウンロードされたため変更されたオフラインブリーフケースのコンポーネントのみダウンロードすることを可能にできる。これは、ダウンロード時間、データ伝送コスト、及びストレージ空間要件を低減させることができる。
【0035】
アプリケーション104がオフラインブリーフケース内の新しい又は変更されたコンポーネントのみダウンロードすることを可能にするために、サーバ110は、レコード関心トラッカ116を含むことができる。レコード関心トラッカ116は、オフラインブリーフケースのどのコンポーネントが前にアプリケーション104にダウンロードされたかを各ユーザについて追跡することができる。換言すれば、レコード関心トラッカ116は、オフラインブリーフケースのコンポーネントの同期ステータスを各ユーザについて追跡することができる。いくつかの実施形態において、レコード関心トラッカ116は、アプリケーション104にダウンロードされたオフラインブリーフケースのコンポーネントのバージョンを各ユーザについて追跡することができる。レコード関心トラッカ116は、バージョン識別子、タイムスタンプ、又は当業者により理解される他の識別子を使用してコンポーネントのバージョンを追跡することができる。
【0036】
いくつかの実施形態において、レコード関心トラッカ116は、管理者がオフラインブリーフケースを定義した後、オフラインブリーフケースの1つ以上のコンポーネントの初期同期ステータスを各ユーザについて確立することができる。次いで、レコード関心トラッカ116は、初期同期から始まり後続同期を通して、コンポーネントの同期ステータスを追跡することができる。
【0037】
初期同期動作は、管理者がオフラインブリーフケースを定義し、準備サービス120がオフラインブリーフケースを表すエンドポイントを作成した後、アプリケーション104においてトリガされてもよい。準備サービス120がエンドポイントを作成した後、サーバ110は(例えば、リスナ118を介して)、アプリケーション104の同期エンジン106にプッシュ通知を送信することができる。プッシュ通知は、同期エンジン106に、バックグラウンドにおいて初期同期動作を実行すべき時間をスケジュールさせることができる。
【0038】
いくつかの実施形態において、プッシュ通知は、オフラインブリーフケースを表すエンドポイントを指定することができる。プッシュ通知はまた、これに限られないがオフラインブリーフケースのデータサイズなどの様々な他の情報を指定することもできる。同期を実行するために、同期エンジン106は、プッシュ通知に指定されたエンドポイントに対する同期要求を発行することができる。同期エンジン106はまた、エンドポイントに対する同期要求と共に、アプリケーション104の現在のユーザのユーザ情報(例えば、ユーザ識別子、ユーザ名等)を含めることもできる。応答して、準備サービス120は、エンドポイントに関連づけられたオフラインブリーフケースをアプリケーション104に返すことができる。初期同期の場合、準備サーバ120は、完全なオフラインブリーフケースをアプリケーション104に返すことができる。
【0039】
いくつかの実施形態において、アプリケーション104がサーバ110との初期同期を実行した後、レコード関心トラッカ116は、対応するユーザについてのオフラインブリーフケースの1つ以上のコンポーネントの同期ステータスを更新することができる。例えば、初期同期の後、レコード関心トラッカ116は、対応するユーザについてのオフラインブリーフケースの各コンポーネントをダウンロードされ又は同期させたものとしてマーク付けすることができる。
【0040】
後続同期動作もまた、アプリケーション104においてトリガされてもよい。これは、オフラインブリーフケースの1つ以上のコンポーネントがサーバ110において修正された後、発生してもよい。結果として、アプリケーション104における1つ以上のコンポーネントの対応するバージョンは、古い(out-of-date)可能性がある。
【0041】
いくつかの実施形態において、アプリケーション104が後続同期動作を実行したとき、アプリケーション104は、オフラインブリーフケースの修正されたコンポーネントをダウンロードすることができる。アプリケーション104は、オフラインブリーフケースの修正されていないコンポーネントをダウンロードすることを回避でき、なぜならば、該コンポーネントは最後の同期から変更されていないからである。換言すれば、アプリケーション104は、後続同期の間、変更されたコンポーネントだけをダウンロードすることができる。これは、モバイルデバイス102におけるダウンロード時間、電力使用、及びストレージ要件を低減させることができる。
【0042】
いくつかの実施形態において、レコード関心トラッカ116は、アプリケーション104がオフラインブリーフケースの修正されていないコンポーネントのダウンロードを回避することを可能にする。論じられたように、レコード関心トラッカ116は、各ユーザについて、オフラインブリーフケースの1つ以上のコンポーネントの同期ステータスを追跡することができる。サーバ110においてオフラインブリーフケースのコンポーネントに変更が行われるたび、レコード関心トラッカ116は、コンポーネントの同期ステータスを「ダウンロードされていない」又は「古い」に変更することができる。レコード関心トラッカ116は、契約コンポーネントを含むオフラインブリーフケースを受信するように構成された各ユーザについて、コンポーネントの同期ステータスを変更することができる。
【0043】
オフラインブリーフケース内のコンポーネントに対する変更をレコード関心トラッカ116に警告するために、サーバ110はリスナ118を含むことができる。リスナ118は、コンポーネントに対するデータ変更を傍受することができる。例えば、リスナ118は、データベース112内のコンポーネントに関連づけられたレコードデータ及びレコードメタデータに対する変更を傍受することができる。
【0044】
限定でなく、例として、リスナ118は、連絡先コンポーネントに対する変更を傍受することができる。例えば、連絡先コンポーネントのファーストネーム及びラストネームが変更されていてもよい。次いで、リスナ118は、レコード関心トラッカ116に契約コンポーネントが変更されたと警告することができる。警告に応答して、レコード関心トラッカ116は、契約コンポーネントを含むオフラインブリーフケースを受信するように構成された各ユーザについて、契約コンポーネントの同期ステータスを「ダウンロードされていない」又は「古い」に変更することができる。
【0045】
いくつかの実施形態において、リスナ118がコンポーネントに対する変更を傍受し、レコード関心トラッカ116が該コンポーネントを含むオフラインブリーフケースを受信するように構成された各ユーザについてコンポーネントの同期ステータスを更新したことに応答して、サーバ110は、各ユーザのモバイルデバイス102にプッシュ通知を送信することができる。サーバ110は、各ユーザのモバイルデバイス102におけるアプリケーション104の同期エンジン106に対してプッシュ通知を送信することができる。プッシュ通知は、同期エンジン106に、バックグラウンドにおいて後続同期動作を実行すべき時間をスケジュールさせることができる。
【0046】
プッシュ通知は、アプリケーション104におけるオフラインブリーフケースに存在しない新しい又は変更されたコンポーネントがサーバ110にあることを、同期エンジン106に示すことができる。プッシュ通知が、新しい又は変更されたコンポーネントがあると示すことができるため、同期エンジン106は、サーバ110における新しい又は変更されたコンポーネントについてサーバ110をポーリングすることを回避できる。これは、モバイルデバイス102における電力使用及びデータ伝送コストを低減させることができる。同期エンジン106は、代わりに、それがプッシュ通知を受信するまで待機することができる。次いで、同期エンジン106は、以下に論じられるように、様々なファクタのバランスをとる後の時間に同期を実行することができる。
【0047】
いくつかの実施形態において、同期エンジン106は、プッシュ通知内の情報を使用して同期を実行することができる。同期エンジン106は、プッシュ通知に指定されたエンドポイントに対する同期要求を発行することにより、同期を実行することができる。論じられたように、エンドポイントは、特定のオフラインブリーフケースを表すことができる。同期エンジン106はまた、エンドポイントに対する同期要求と共に、アプリケーション104の現在のユーザのユーザ情報(例えば、ユーザ識別子、ユーザ名等)を含むこともできる。応答して、準備サービス120は、エンドポイントに関連づけられたオフラインブリーフケースの1つ以上の新しい又は変更されたコンポーネントをアプリケーション104に返すことができる。上記で論じられたように、サーバ110は、レコード関心トラッカ116及びリスナ118を使用して、オフラインブリーフケースの1つ以上の新しい又は変更されたコンポーネントのアプリケーション104への返信を可能にすることができる。
【0048】
いくつかの実施形態において、同期エンジン106は、同期動作をいつ実行すべきかを制御して、アプリケーション104におけるユーザ体験を改善し、モバイルデバイス102における電力使用及びデータ伝送コストを低減させることができる。同期エンジン106は、アプリケーション104におけるオフラインブリーフケースに存在しない新しい又は変更されたコンポーネントがサーバ110にあることを示すプッシュ通知を受信することができる。プッシュ通知は、同期エンジン106を起動させて同期動作を開始することができる。プッシュ通知は、同期エンジン106が実行していないとしても、同期エンジン106を起動させることができる。例えば、プッシュ通知は、モバイルデバイス102におけるモバイルオペレーティングシステム(例えば、Apple iOS又はGoogle Android)で受信されてもよい。次いで、モバイルオペレーションシステムは、プッシュ通知に応答して同期エンジン106の実行を開始することができる。
【0049】
いくつかの実施形態において、モバイルオペレーティングシステムは、いつ同期エンジン106を起動して同期を開始すべきかを決定することができる。モバイルオペレーティングシステムは、モバイルデバイス102の現在のバッテリ寿命、ネットワーク108への接続の存在、ネットワーク108への接続のタイプ(例えば、米国電気電子技術者協会(Institute of Electrical and Electronics Engineers、IEEE)802.11(WiFi)接続対セルラーネットワーク接続)、モバイルデバイス102上で現在実行しているアプリケーションの数、使用パターン、ジオロケーション、及び当業者により理解される様々な他のファクタに基づいて、同期エンジン106を起動するよう決定することができる。モバイルオペレーティングシステムは、様々な機械学習能力を使用してこれらファクタのうち1つ以上を分析することにより、同期エンジン106を起動するよう決定することができる。
【0050】
いくつかの実施形態において、モバイルオペレーティングシステムは、サーバ110により提供される様々な情報に基づいて、いつ同期エンジン106を起動して同期を開始すべきかを決定することができる。モバイルオペレーティングシステムは、プッシュ通知に含まれるオフラインブリーフケースのデータサイズに基づいて、同期エンジン106を起動してオフラインブリーフケースの同期を開始するよう決定することができる。例えば、モバイルオペレーティングシステムは、オフラインブリーフケースのデータサイズがセルラー接続のデータ割当量残高より小さいとき、セルラー接続を通じて同期を開始してもよい。モバイルオペレーティングシステムは、オフラインブリーフケースのデータサイズがセルラー接続のデータ割当量残高より大きいとき、WiFi接続を通じて同期を開始してもよい。
【0051】
モバイルオペレーティングシステムはまた、プッシュ通知に含まれるジオフェンストリガに基づいて、同期エンジン106を起動してオフラインブリーフケースの同期を開始するよう決定することもできる。例えば、モバイルオペレーティングシステムは、モバイルデバイス102がプッシュ通知に指定されたジオフェンスに入ったとき、同期を開始してもよい。当業者により理解されるように、モバイルオペレーティングシステムは、サーバ110により提供される様々な他の情報に基づいて、同期エンジン106を起動して同期を開始するよう決定することができる。
【0052】
いくつかの実施形態において、モバイルオペレーティングシステムは、サーバ110により提供される情報とモバイルデバイス102における様々なファクタとの双方に基づいて、同期エンジン106を起動して同期を開始するよう決定することができる。当業者により理解されるように、モバイルオペレーティングシステムは、サーバ110により提供される情報とモバイルデバイス102における様々なファクタとの双方を様々な機械学習能力を使用して分析することにより、同期エンジン106を起動して同期を開始するよう決定することができる。
【0053】
いくつかの実施形態において、同期エンジン106は、バックグラウンドで静かに(silently)同期を実行することができる。同期エンジン106は、ユーザワークフローを中断させることなく同期を実行することができる。例えば、同期の間にアプリケーション104とのユーザ対話をブロックする代わりに、同期エンジン106は、ユーザがアプリケーション104と対話する間、同期を実行することができる。
【0054】
いくつかの実施形態において、オフラインモードのとき、アプリケーション104は、ユーザがオフラインブリーフケース内の1つ以上のコンポーネントに対して変更を行うことを可能にできる。例えば、ユーザは、オフラインブリーフケース内の連絡先コンポーネントにより表される連絡先のファーストネーム及びラストネームを編集することができる。
【0055】
いくつかの実施形態において、アプリケーション104は、オフラインブリーフケース内のコンポーネントに対する変更を下書き(draft)コンポーネントとして保存することができる。下書きコンポーネントは、変更の前のオフラインブリーフケースのダウンロードされたコンポーネント内のデータのバージョン、及び対応する変更を含むことができる。これは、以下で論じられるように、衝突チェックを可能にすることができる。下書きコンポーネントは、オフラインブリーフケースのダウンロードされたコンポーネント内の元のデータが変更されていない場合、それを含まなくてもよい。これは、下書きコンポーネントのデータサイズを低減させることができる。下書きコンポーネントは、これに限られないがJSONなどの様々なフォーマットで記憶されてもよい。当業者により理解されるように、下書きコンポーネントは、様々な他のフォーマットを使用して記憶されてもよい。
【0056】
下書きコンポーネントは、アプリケーション104の安全な記憶エリアに記憶されてもよい。いくつかの実施形態において、アプリケーション104がウェブアプリケーションである場合、下書きコンポーネントは、アプリケーション104を実行するウェブブラウザの安全な記憶エリアに記憶されてもよい。当業者により理解されるように、アプリケーション104又はウェブブラウザに安全な記憶エリアを実現するための様々な方法がある。
【0057】
いくつかの実施形態において、後続同期の間、同期エンジン106は、下書きコンポーネントをサーバ110にアップロードして、サーバ110における対応するコンポーネントを置換することができる。同期の間、サーバ110は、アップロードされた下書きコンポーネントとサーバ110における対応するコンポーネントとの間の衝突を検出してもよい。例えば、サーバ110は、下書きコンポーネントにより指定されたデータの前のバージョン(例えば、変更の前のアプリケーション104における対応するコンポーネント内のデータのバージョン)がサーバ110に記憶されたデータの現在のバージョンと一致しないと決定してもよい。これは、アプリケーション104がオフラインモードであったとき、対応するコンポーネントがサーバ110において別のユーザにより修正されたことを示してもよい。
【0058】
いくつかの実施形態において、アプリケーション104は、潜在的な衝突をユーザに警告することができる。例えば、アプリケーション104は、アプリケーション104がオフラインモードであったとき、サーバ110上の下書きコンポーネントに対応するコンポーネントのバージョンが変更されたことを示してもよい。アプリケーション104はまた、サーバ110上の下書きコンポーネントに対応するコンポーネントのバージョンと下書きコンポーネントとの間の差を表示してもよい。
【0059】
いくつかの実施形態において、アプリケーション104は、ユーザが同期を進め、サーバ110上の下書きコンポーネントに対応するコンポーネントを下書きコンポーネントで置換することを可能にできる。アプリケーション104はまた、ユーザが衝突を無視し、サーバ110上の下書きコンポーネントに対応するコンポーネントを下書きコンポーネントで置換しないことを可能にすることもできる。
【0060】
図3は、一実施形態による、オフラインブリーフケースを同期させる方法300のフローチャートである。方法300は、ハードウェア(例えば、回路、専用論理、プログラマブル論理、マイクロコード等)、ソフトウェア(例えば、処理デバイス上で実行する命令)、又はこれらの組み合わせを含み得る処理論理により実行されてもよい。本明細書に提供される開示を実行するために全てのステップが必要とはされない可能性があることを十分理解されたい。さらに、当業者により理解されるように、ステップのいくつかが同時に、又は図3に示されているものと異なる順序で実行されてもよい。
【0061】
方法300は、図1を参照して説明される。しかしながら、方法300は、これらの例示的な実施形態に限定されない。
【0062】
302において、サーバ110における管理者が、オフラインコンフィギュレータ114を使用して、1以上のユーザに対してアプリケーション104においてどのコンポーネントがオフラインで利用可能にされるかを定義する。定義されたコンポーネントセットは、オフラインブリーフケースと呼ばれてもよい。コンポーネントは、オブジェクト(例えば、アカウント、連絡先、機会、リード、プロダクト、キャンペーン、ユーザ、契約、レポート等)とそれを表示する方法とを表すことができる。
【0063】
管理者はさらに、1つ以上のクエリ条件に基づいて、アプリケーション104においてどのコンポーネントがオフラインで利用可能にされるかを定義することができる。例えば、管理者は、オフラインコンフィギュレータ114を使用して、3より大きい格付けを有するサンフランシスコ内のアカウント(例えば、コンポーネントの一タイプ)が1以上のユーザに対してオフラインで利用可能にされるべきと定義することができる。
【0064】
304において、サーバ110における準備サービス120が、アプリケーション104からオフラインブリーフケースにアクセスしダウンロードするためのエンドポイントを作成する。エンドポイントは、オフラインブリーフケース(例えば、1つ以上のクエリ条件に従う、特定のユーザセットに対してオフラインで利用可能にされる1つ以上のコンポーネント)を表すことができる。準備サービス120は、これに限られないがウェブサービスAPIなどのAPIを使用してエンドポイントを実現することができる。
【0065】
306において、リスナ118が、オフラインブリーフケースのコンポーネントに対するデータ変更を傍受する。例えば、リスナ118は、データベース112内のコンポーネントに関連づけられたレコードデータ及びレコードメタデータに対する変更を傍受することができる。
【0066】
308において、サーバ110が、オフラインブリーフケース内のコンポーネントに変更があったことを示すプッシュ通知をアプリケーション104の同期エンジン106に送信する。プッシュ通知は、オフラインブリーフケースをダウンロードしアクセスするために使用されるエンドポイントを含むことができる。
【0067】
310において、サーバ110が、作成されたエンドポイントにおいてアプリケーション104の同期エンジン106から同期要求を受信する。同期要求は、アプリケーション104におけるユーザのユーザ識別子を含むことができる。サーバ110は、レコード関心トラッカ116を使用して、変更されたコンポーネントがユーザのアプリケーション104にすでにダウンロードされているかどうかを決定することができる。
【0068】
312において、サーバ110が、同期要求に応答して、変更されたコンポーネントをアプリケーション104の同期エンジン106に送信する。アプリケーション104は、次いで、変更されたコンポーネントをユーザに表示することができる。アプリケーション104は、変更されたコンポーネントのレコードメタデータを使用して、変更されたコンポーネントのレコードデータ(例えば、オブジェクト)を表示することができる。変更されたコンポーネントは、レコードデータ及びレコードメタデータの双方を含むため、アプリケーション104は、変更されたコンポーネントをオフラインと同じ方法でオンラインで表示することができる。
【0069】
上記で論じられたように、管理者は、1以上のユーザに対してオフラインブリーフケースを定義することができ、それにより、これらユーザは、アプリケーション104をオフラインで使用することができる。しかしながら、顧客が、新しいユーザ定義コンポーネントを作成し、それをオフラインで実行したい場合がある。これを行うために、顧客は、新しいユーザ定義コンポーネントを作成し、それをオフライン可能と宣言することができる。これは、ユーザ定義コンポーネントの関連づけられたレコードもまたオフラインで利用可能であることを保証する。
【0070】
アプリケーション104は、1つ以上のユーザ定義コンポーネントを含むことができる。ユーザ定義コンポーネントは、1つ以上のレコード(例えば、サーバ110からのコンポーネント)を含むことができる。アプリケーション104は、オフライン可能と宣言されたユーザ定義コンポーネントを、それがオフラインブリーフケースの一部としてオフラインで利用可能にされたコンポーネントであるかのように処理することができる。例えば、ユーザ定義コンポーネントは、オフラインブリーフケースのコンポーネントが同期エンジン106を使用して(例えば、方法300に従って)同期され得るのと同じ方法で、同期エンジン106を使用して同期されてもよい。アプリケーション104はまた、オフライン使用のために、ユーザ定義コンポーネント自体と共に1つ以上のレコード(例えば、サーバ110からのコンポーネント)を処理することもできる。
【0071】
いくつかの実施形態において、管理者は、オフラインコンフィギュレータ114を使用して、ユーザ定義コンポーネントをオフライン可能と宣言することができる。管理者はさらに、オフラインコンフィギュレータ114を使用して、オフライン可能と宣言されたユーザ定義コンポーネントの任意の関連づけられたレコード(例えば、サーバ110のコンポーネント)がオフラインで利用可能と定義されることを保証することができる。アプリケーション104は、次いで、同期エンジン106を使用して、オフラインモードに切り替える前に、ユーザ定義コンポーネントをユーザ定義コンポーネントの任意の関連づけられたレコード(例えば、サーバ110におけるコンポーネント)と共にサーバ110からプリフェッチする(prefetch)ことができる。プリフェッチ要求に応答して、アプリケーション104は、オフライン可能と宣言されたユーザ定義コンポーネントの関連づけられたレコード(例えば、サーバ110からのコンポーネント)を受信することができる。
【0072】
例えば、管理者は、オフラインコンフィギュレータ114を使用して、ユーザ定義マップコンポーネントをオフライン可能と宣言することができる。管理者はさらに、オフラインコンフィギュレータ114を使用して、ユーザ定義マップコンポーネントのためにダウンロードすべき1つ以上のレコード(例えば、コンポーネント)を識別することができる。管理者は、オフラインコンフィギュレータ114を使用して、特定のジョブ機能を有するユーザセットに対する1つ以上のレコードを識別することができる。
【0073】
ユーザ定義マップコンポーネントは、マップを表示することができる。マップは、ユーザ定義マップコンポーネントに関連づけられた特定のレコード(例えば、コンポーネント)に対応することができる。例えば、マップは、特定のアカウントに対応してもよい。ゆえに、ユーザが、ユーザ定義マップコンポーネントをオフラインで使用しているとき、ユーザは、特定のアカウントに関連づけられたマップがオフラインで表示可能であることを望む。
【0074】
特定のアカウントに関連づけられたマップをオフラインで表示するために、アプリケーション104は、オフラインモードに切り替える前に、同期エンジン106を使用してサーバ110からユーザ定義マップコンポーネントをプリフェッチすることができる。アプリケーション104はまた、特定のアカウントに対応するウェブから、ユーザ定義マップコンポーネントの関連づけられたレコードとマップとをプリフェッチすることもできる。
【0075】
いくつかの実施形態において、ユーザ定義コンポーネントは、アクションタイプごとに異なるレイアウトを有することができる。例えば、ユーザ定義コンポーネントは、別個の閲覧及び編集レイアウトを有することができる。オフライン可能と宣言されたユーザ定義コンポーネントについて、アプリケーション104は、ユーザ定義コンポーネントのための別個のレイアウトをプリフェッチすることができる。これは、ユーザがオフラインの間でさえユーザ定義コンポーネントを使用して閲覧及び編集する特有の体験を有することを可能にできる。いくつかの実施形態において、別個のレイアウトは、ユーザ定義コンポーネントのレコードメタデータ内に指定されてもよい。
【0076】
いくつかの実施形態において、アプリケーション104は、ネイティブ要素及びウェブ要素の双方の複合物であってもよい。ネイティブ要素は、下位のモバイルオペレーティングシステム又はアプリケーションランタイムの要素であってもよい。例えば、ネイティブ要素は、検索機能であってもよい。ウェブ要素は、ウェブコンテナにおいてレンダリングされる要素であってもよい。ネイティブ要素及びウェブ要素の双方が、オフラインレコード(例えば、サーバ110からのコンポーネント)へのアクセスを必要としてもよい。
【0077】
いくつかの実施形態において、アプリケーション104は、ネイティブ要素及びウェブ要素の双方に共通データキャッシュ層を提供することができる。ネイティブ要素及びウェブ要素は、共通データキャッシュ層を通してオフラインレコードにアクセスすることができる。共通データキャッシュ層は、オフラインで利用可能な必要があるデータを識別することができ、そのデータをアプリケーション104による使用のためにキャッシュする。共通データキャッシュ層は、レコードに対する編集が、それがネイティブ要素において発生したか又はウェブ要素において発生したかにかかわらず、アプリケーション104に対して普遍的に利用可能であることを保証することができる。
【0078】
図4は、一実施形態による、オフラインアクセスのためにアプリケーション104のユーザ定義コンポーネントを同期させる方法400のフローチャートである。方法300は、ハードウェア(例えば、回路、専用論理、プログラマブル論理、マイクロコード等)、ソフトウェア(例えば、処理デバイス上で実行する命令)、又はこれらの組み合わせを含み得る処理論理により実行されてもよい。本明細書に提供される開示を実行するために全てのステップが必要とはされない可能性があることを十分理解されたい。さらに、当業者により理解されるように、ステップのいくつかが同時に、又は図3に示されているものと異なる順序で実行されてもよい。
【0079】
方法400は、図1を参照して説明される。しかしながら、方法400は、これらの例示的な実施形態に限定されない。
【0080】
402において、サーバ110における管理者が、オフラインコンフィギュレータ114を使用して、アプリケーション104においてオフラインでアクセス可能なユーザグループに対するユーザ定義コンポーネントを宣言する。
【0081】
404において、オフラインコンフィギュレータ114が、第2のコンポーネントがユーザ定義コンポーネントに関連すると決定する。
【0082】
406において、サーバ110が、ユーザ定義コンポーネントのためのアプリケーション104からの同期要求を受信する。
【0083】
408において、サーバ110が、同期要求に基づいて、ユーザ定義コンポーネント及び第2のコンポーネントをモバイルアプリケーションに送信する。
【0084】
様々な実施形態が、例えば、図5に示されるコンピュータシステム500などの1つ以上のコンピュータシステムを使用して実現できる。コンピュータシステム500は、例えば、図3及び図4の方法300及び400をそれぞれ実現するために使用できる。例えば、コンピュータシステム500は、オブジェクトの自動レイアウトを実行することができる。コンピュータシステム500はさらに、いくつかの実施形態によれば、複数の電子デバイスにわたりプレゼンテーションを表示することができる。コンピュータシステム500は、本明細書に説明される機能を実行できる任意のコンピュータであってもよい。
【0085】
コンピュータシステム500は、本明細書に説明される機能を実行できる任意の良く知られたコンピュータであってもよい。
【0086】
コンピュータシステム500は、1つ以上のプロセッサ(中央処理ユニット又はCPUとも呼ばれる)、例えばプロセッサ504などを含む。プロセッサ504は、通信インフラストラクチャ又はバス506に接続される。
【0087】
1つ以上のプロセッサ504が各々、グラフィックス処理ユニット(GPU)であってもよい。一実施形態において、GPUは、数学的に集中的なアプリケーションを処理するように設計された、特化された電子回路であるプロセッサである。GPUは、コンピュータグラフィクスアプリケーション、画像、ビデオ等に共通の数学的に集中的なデータなどの、データの大きいブロックの並列処理に対して効率的な並列構造を有し得る。
【0088】
コンピュータシステム500は、ユーザ入力/出力インターフェース502を通して通信インフラストラクチャ506と通信するユーザ入力/出力デバイス503、例えば、モニタ、キーボード、ポインティングデバイスなどをさらに含む。
【0089】
コンピュータシステム500は、メイン又はプライマリメモリ508、例えば、ランダムアクセスメモリ(RAM)などをさらに含む。メインメモリ508は、1つ以上のレベルのキャッシュを含んでもよい。メインメモリ508は、その中に制御論理(すなわち、コンピュータソフトウェア)及び/又はデータを記憶している。
【0090】
コンピュータシステム500は、1つ以上のセカンダリストレージデバイス又はメモリ510をさらに含むことができる。セカンダリメモリ510は、例えば、ハードディスクドライブ512及び/又は取外し可能ストレージデバイス若しくはドライブ514を含んでもよい。取外し可能ストレージドライブ514は、フロッピーディスクドライブ、磁気テープドライブ、コンパクトディスクドライブ、光学ストレージデバイス、テープバックアップデバイス、及び/又は任意の他のストレージデバイス/ドライブでもよい。
【0091】
取外し可能ストレージドライブ514は、取外し可能ストレージユニット518と対話することができる。取外し可能ストレージユニット518は、コンピュータソフトウェア(制御論理)及び/又はデータを記憶させたコンピュータ使用可能又は読取可能ストレージデバイスを含む。取外し可能ストレージユニット518は、フロッピーディスク、磁気テープ、コンパクトディスク、DVD、光学ストレージディスク、及び/任意の他のコンピュータデータストレージデバイスでもよい。取外し可能ストレージドライブ514は、良く知られた方法で取外し可能ストレージユニット518から読み出し、かつ/あるいは取外し可能ストレージユニット518に書き込む。
【0092】
一例示的な実施形態によれば、セカンダリメモリ510は、コンピュータプログラム及び/又は他の命令及び/又はデータがコンピュータシステム500によりアクセスされることを可能にする他の手段、媒介、又は他のアプローチを含んでもよい。こうした手段、媒介、又は他のアプローチは、例えば、取外し可能ストレージユニット522及びインターフェース520を含むことができる。取外し可能ストレージユニット522及びインターフェース520の例は、プログラムカートリッジ及びカートリッジインターフェース(例えば、ビデオゲームデバイスで見られるものなど)、取外し可能メモリチップ(例えば、EPROM又はPROMなど)及び関連づけられたソケット、メモリスティック及びUSBポート、メモリカード及び関連づけられたメモリカードスロット、及び/又は任意の他の取外し可能ストレージユニット及び関連づけられたインターフェースを含んでもよい。
【0093】
コンピュータシステム500は、通信又はネットワークインターフェース524をさらに含むことができる。通信インターフェース524は、コンピュータシステム500が(参照番号528により個々に及び集合的に参照される)リモートデバイス、リモートネットワーク、リモートエンティティ等の任意の組み合わせと通信及び対話することを可能にする。例えば、通信インターフェース524は、コンピュータシステム500が通信経路526を通じてリモートデバイス528と通信することを可能にでき、通信経路526は、有線及び/又は無線でもよく、通信経路526は、LAN、WAN、インターネット等の任意の組み合わせを含んでもよい。制御論理及び/又はデータが、通信経路526を介してコンピュータシステム500に、及びコンピュータシステム500から送信されてもよい。
【0094】
一実施形態において、制御論理(ソフトウェア)を記憶させた有形の非一時的コンピュータ使用可能又は読取可能媒体を含む有形の非一時的装置又は製造品が、本明細書でコンピュータプログラムプロダクト又はプログラム記憶装置としてさらに参照される。これは、これらに限られないがコンピュータシステム500、メインメモリ508、セカンダリメモリ510、及び取外し可能ストレージユニット518及び522、並びに前述の任意の組み合わせを具現化した有形製造品を含む。こうした制御論理は、1つ以上のデータ処理デバイス(例えば、コンピュータシステム500など)により実行されたとき、上記データ処理デバイスに本明細書で説明されたように動作させる。
【0095】
本開示に含まれる教示に基づき、図5に示されるもの以外のデータ処理デバイス、コンピュータシステム、及び/又はコンピュータアーキテクチャを使用して本開示の実施形態を作成及び使用する方法が当業者に明らかになるであろう。詳細には、実施形態は、本明細書に説明されるもの以外のソフトウェア、ハードウェア、及び/又はオペレーティングシステム実装で動作することができる。
【0096】
他のセクションでなく詳細な説明セクションが、特許請求の範囲を解釈するために使用されるよう意図されることを十分理解されたい。他のセクションは、発明者により企図されるすべてではないが1つ以上の例示的な実施形態を説明することがあり、ゆえに、いかなる方法でも本開示又は別記の特許請求の範囲を限定するようには意図されない。
【0097】
本開示は、例示的な分野及び適用に対して例示的な実施形態を説明するが、開示はそれに限定されないことを理解されたい。他の実施形態及びこれに対する変更が可能であり、本開示の範囲及び主旨の範囲内である。例えば、この段落の一般性を限定することなく、実施形態は、図面に例示され、及び/又は本明細書に説明されるソフトウェア、ハードウェア、ファームウェア、及び/又はエンティティに限定されない。さらに、実施形態は(本明細書で明示的に説明されるか否かにかかわらず)、本明細書に説明される例を越えた分野及び適用に対して有意な有用性を有する。
【0098】
実施形態が、指定された機能及びその関係の実現を例示する機能構築ブロックを用いて本明細書で説明された。これら機能構築ブロックの境界は、説明の簡便さのために本明細書で任意的に定義されている。指定された機能及び関係(又は、その同等物)が適切に実行される限り、代替的な境界が定義されてもよい。さらに、代替的な実施形態が、本明細書に説明されるものと異なる順序づけを使用して機能ブロック、ステップ、動作、方法等を実行することができる。
【0099】
本明細書において、「1つの実施形態」、「一実施形態」、「一例示的な実施形態」、又は同様のフレーズに対する参照は、説明される実施形態が特定の特徴、構造、又は特性を含み得るが、あらゆる実施形態が必ずしも上記特定の特徴、構造、又は特性を含み得るわけではないことを示す。さらに、こうしたフレーズは、必ずしも同じ実施形態を参照するわけではない。さらに、特定の特徴、構造、又は特性が一実施形態に関連して説明されたとき、こうした特徴、構造、又は特性を本明細書で明示的に言及又は説明されているか否かにかかわらず他の実施形態に組み込むことは、当業者の知識の範囲内である。さらに、いくつかの実施形態は、表現「結合された」及び「接続された」をその派生形と共に使用して説明されることがある。これら用語は、必ずしも互いの同義語として意図されない。例えば、いくつかの実施形態は、2つ以上の要素が互いに直接物理的又は電気的に接触することを示すために、用語「接続された」及び/又は「結合された」を使用して説明されることがある。しかしながら、用語「結合された」は、2つ以上の要素が互いに直接接触しないが、しかし依然として互いに協働又は対話することをさらに意味することがある。
【0100】
本開示の幅及び範囲は、上記で説明された例示的な実施形態のいずれによっても限定されるべきでなく、別記の特許請求の範囲及びその均等物に従ってのみ定義されるべきである。
図1
図2
図3
図4
図5