DOCUMENTATION / WORKFLOW
Workflow
業務DBで変更が起きると、SyncCoordinatorが現在の値を読み直し、問題がなければ同期先へ反映します。途中で止まっても、続きから安全にやり直せます。
PROCESSING FLOW
同期処理の流れ
Workerは一定の間隔で変更を確認し、送信元ごとに処理します。管理画面で設定を変えた場合は次の処理から使われるため、実行中に接続先が切り替わることはありません。
- 01変更に気づく
業務DBのTriggerが、変更されたレコードをQueueへ知らせます。
- 02同じ変更をまとめる
Workerが新しい通知を取り出し、同じレコードの通知をひとつにまとめます。
- 03いまの値を確認する
通知された時点の値ではなく、業務DBにある現在の値を読み直します。
- 04同期先を決める
どこで起きた変更かを確認し、同期ルールとマッピングを選びます。
- 05競合がないか確かめる
前回の値と両システムの現在値を比べ、変換後の値も確認します。
- 06同期先へ反映する
同じ変更を二重に書かないよう確認してから反映し、処理結果を保存します。
1回分の処理がすべて片づいたときだけ、読み取り位置(Checkpoint)を進めます。途中で一時的なエラーが起きた場合は位置を変えず、次の処理で同じ場所からやり直します。
LATEST STATE
いちばん新しい状態を同期する
Queueに入るのは、「このレコードが変わった」という知らせです。古い変更をひとつずつ再現するのではなく、Workerが処理する時点の値を読み直します。
最後に更新された値を反映
削除された状態を反映
作り直された現在の値を反映
削除された場合
同期元からレコードが削除されたことを検知し、同期先のレコードも削除します。
指定した列が削除状態の値になったことを検知し、同期先にも同じ状態を反映します。
前回の同期後に同期先のレコードが変更されていた場合は、勝手に削除せず競合として扱います。削除は一部の項目だけに適用できないため、レコードを削除するか残すかを判断します。
SyncCoordinatorが得意なのは、複数システムの「現在の状態」を揃えることです。承認、在庫移動、仕訳のように途中の操作にも意味があるデータは、イベントを省略しない別の連携方式が適しています。
CONFLICT FLOW
競合した場合
前回保存した値から両方のシステムが同じ項目を変更し、結果が違っている場合に競合と判断します。片方だけが変わっている場合は、そのまま自動で反映します。
NO CONFLICT
競合なし
値の変換と書込み前の確認を行い、そのまま同期先へ反映します。
POLICY
ルールに従って決める
送られてきた値を使うか、同期先の値を残すかを設定済みのルールで決めます。結果は履歴に残します。
HOLD
人の判断を待つ
同期先の値を変えず、要対応として管理画面に残します。他のレコードの同期は続きます。
管理画面で解決する流れ
- 違いを確認送られてきた値と、同期先にある現在の値を並べて確認します。
- 残す値を選ぶ項目ごとに、どちらの値を使うか、または手入力するかを選びます。
- 解決を依頼管理画面から直接書き込まず、管理DBに解決要求を保存します。
- 安全を確認して反映Workerが同期先をもう一度確認し、変わっていなければ反映します。
画面を開いてから反映するまでに同期先の値が変わっていた場合は、上書きしません。最新の値を表示して、もう一度選び直せる状態に戻します。
RETRY AND RESUME
再試行と再開
Workerは、どこまで読んだか、どの変更を処理中かをDBに保存します。停止やエラーが起きても、完了済みの変更を二重に反映せず、残っている処理から続けます。
| 状態 | 意味 | 次の動き |
|---|---|---|
| Completed | 問題なく完了した、または反映する必要がなかった | 同じ変更は処理せず、次の読取位置へ進みます。 |
| Failed | 接続エラーなど、一時的な理由で今回の処理に失敗した | 読取位置を進めず、次の周期で自動的にやり直します。 |
| Held | 競合や値の問題があり、人の確認が必要になった | 要対応として残し、ほかのレコードの同期を続けます。 |
| Processing | Workerが処理している途中 | 途中で停止した場合は、5分後に別の周期が取得し直します。 |
Heldの扱い:競合によるHeldは管理画面から解決できます。値変換や列の検証でHeldになったデータを、管理画面から手動で再実行する機能は現在ありません。
やり直すときも同じ配送IDを使います。同期先の適用済み記録を確認するため、二重反映を防げます。
ひとつの送信元でエラーが起きても、読取位置を別に持つほかの送信元は処理を続けます。
一時停止した場合
一時停止中はQueueも読み取り位置も動かしません。再開すると、停止中に残った通知から現在の値を読み直し、古い状態を順番に再生せず最新状態へ追いつきます。停止前に始まっていた処理は、そのまま完了する場合があります。
一時停止は「あとで続きから再開する」ための運用操作です。システムや同期ルールの無効化は、同期対象から外すための設定であり、同じ意味ではありません。
NOTIFICATIONS
通知の流れ
通知先が一時的に止まっていても、データ同期は続けたい。そのため、Workerは通知をすぐ送るのではなく、まず管理DBに保存し、別の処理でWebhookへ届けます。
Webhookへの送信に失敗しても、同期処理は止まりません。1分、5分、30分、2時間、6時間、12時間と間隔を空け、初回を含めて最大7回送ります。それでも届かなければ通知をFailedにします。同じ通知が届いた場合は、受信側でEvent IDを使って見分けられます。
OPERATIONS
管理画面での確認
ふだんの運用では、どこまで同期できているか、エラーや要対応が残っていないかを管理画面で確認します。Webhookの設定と送信履歴も同じ画面から管理できます。



NEXT
