Skip to main content

 

データを使用する

 

モバイルアプリが対象
OutSystems

読み取り専用データ(最適化)

このデータの同期パターンは、アプリがオフラインの間にエンドユーザーにはデータの読み取りのみが必要で、同期すべきデータが大量にあるモバイルアプリに推奨されます。

  • サーバーデータベースは、時間とともに変化する可能性のあるマスターデータを保持しています。
  • 同期は、デバイスのローカルストレージで更新する必要のあるデータだけを転送するように最適化されています。
  • デバイスで行われたデータの変更は、サーバーに伝達されません。

以下は、読み取り専用データ(最適化)パターンのロジックの概要です。

  1. データを取得するために、サーバーを起動します。

  2. データベースのデータを返します。

  3. ローカルストレージのデータを削除し、サーバーから取得したデータで作成し直します。

読み取り専用データ(最適化)パターンのサンプルモジュールをダウンロードします。このサンプルモジュールでは、データの同期の例として複数の企業が使用されています。以下のセクションでは、サンプルモジュールで使用されているデータモデルおよびロジックについて詳細に説明します。

データモデル

このサンプルでは、Companyデータベースエンティティとそれに対応するLocalCompanyローカルストレージエンティティを定義します。さらに、SyncPropertiesローカルストレージエンティティで最後の同期の日時を保持します。

  1. レコードが最後に更新または作成されたときにタイムスタンプを保存することにより、変更されたレコードを追跡します。
  2. 削除されたレコードを追跡します。
  3. 最後の同期のタイムスタンプ。このタイムスタンプは、クライアントとサーバーと間の時刻の相違による問題を避けるために、サーバー側で設定されることにご注意ください。

アプリケーションのロジックは、ModifiedOnおよびIsActiveエンティティアトリビュートを最新の状態に保つ必要があります。

OfflineDataSyncロジック

以下は、OfflineDataSyncクライアントアクションのロジックの説明です。

読み取り専用データ(最適化)パターンOfflineDataSync

  1. 最後の同期のタイムスタンプを取得します。
  2. ServerDataSyncサーバーアクションを呼び出し、最後の同期以降に変更されたデータをデータベースから取得します。サーバーは、変更または追加されたCompanyレコードのリスト、削除された(非アクティブ)Companyレコードのリストおよびこの同期のタイムスタンプを返します。
  3. サーバーから返された変更または追加されたレコードのリストを使用し、ローカルストレージのCompanyレコードを更新します。
  4. サーバーから返された削除された(非アクティブ)Companyレコードのリストを繰り返し、ローカルストレージにある対応レコードを削除します。
  5. サーバーから返されたこの同期のタイムスタンプでSyncProperties.LastSyncエンティティアトリビュートを更新します。

ServerDataSyncロジック

以下は、ServerDataSyncサーバーアクションのロジックの説明です。

読み取り専用データ(最適化)パターンServerDataSync

  1. この同期のタイムスタンプを出力パラメータに割り当てます。

  2. 最後の同期以降に変更または追加されたCompanyレコードのリストを取得します。Aggregateでは、以下のフィルタを使用します。

    Company.IsActive = True and
    (Company.ModifiedOn = NullDate() or Company.ModifiedOn >= LastSync)
    
  3. 最後の同期以降に削除された(非アクティブ)Companyレコードすべてのリストを取得します。Aggregateでは、以下のフィルタを使用します。

    Company.IsActive = False and
    (Company.ModifiedOn = NullDate() or Company.ModifiedOn >= LastSync)
    
  4. タイムスタンプおよびCompanyレコードの2つのリストを、アクションの出力パラメータに割り当てます。

  • Was this article helpful?