データ同期とは、複数の担当者がコンテキサーを同時に使用している場合に、同じ入出力先(テーブルやクラウドデータベース)への変更を即時に反映する機能です。
入出力コンテキストでデータ同期が有効な場合、関連するパネルで行を追加・修正・削除した際に、即時に変更を書き出します。またパネルを操作するタイミングで、入出力先の内容が変更されていないか調べ、変更されている場合には即時に変更内容を読み込んでパネルに反映します。
データ同期機能は、入出力コンテキストに対して修正日時の項目を設定することで有効となります。データ同期の際には、指定した日付時刻型の項目をタイムスタンプにして、レコードの更新の有無を判定します。
データ同期を有効化するには、次の手順で設定します。
なお、データ同期を設定できる入出力先は、ODBCデータソースのテーブルやクラウドデータベースなどレコード単位での読み書きが可能な入出力先です。CSV形式では、データ同期は設定できません。
データ同期は、入出力コンテキストの内容が変更された時に即時に同期されます。例えば、行の追加や削除、項目の値の修正があります。同期する際には、これらの変更があった行の変更内容のみを入出力先に書き出します。
通常の業務アプリでは、入出力コンテキストと同じエンティティを共有する兄弟コンテキストが定義されており、兄弟コンテキストにパネルがある場合には、そのパネルで操作された変更も、対応するエンティティを通じて、入出力コンテキストへ反映されます。
他のコンテキサーなどで、入出力先のデータソースの内容が変更された場合には、コンテキストを操作するタイミングで変更を確認して反映されます。確認するタイミングは、コンテキサーが自動的に判断しますが、主に次の場合があります。
データ同期では、コンテキサーでコンテキストを操作する時に、保持しているタイムスタンプとテーブルのタイムスタンプとを比較します。このときにテーブルのタイムスタンプが、保持しているタイムスタンプよりも新しくなった場合には、行を自動的にデータ同期(再読込み)します。
なお、データ同期の際に該当する行の修正が競合する場合には、警告メッセージを表示して保持するか破棄するかを選択できます。
なお、入出力コンテキストでデータ同期を設定すると、同期(追加・変更・削除)が必要な場合にキューで処理されます。処理は、非同期で実行されるため、担当者は平行して業務アプリを操作できます。
データ同期は、必要なタイミングで自動的に実行されますが、表示専用のパネルなど担当者の操作がない業務アプリの場合には、タイマーなどのコマンドでデータ同期を実行させることもできます。
意図したタイミングでデータ同期させるには「データ更新」アクションを使います。「データ更新」アクションでは、入出力先でレコードが削除された場合に、入出力コンテキストの対応する行を削除します。
データ同期に関連する機能として、主キー採番同期機能があります。主キー採番同期とは、行を追加する際に、入出力先で登録されていない主キーの値から、主キーの値を採番する機能です。データ同期と同様に、複数の担当者が同時に使用している場合に、主キーが競合しないようにする仕組みです。
主キーの採番同期を有効にするには、入出力先データソースに主キー管理テーブルを設定します。