$30 off During Our Annual Pro Sale. View Details »

[OutSystems] モバイル非同期ジョブ基盤としての Offline Data Sync...

[OutSystems] モバイル非同期ジョブ基盤としての Offline Data Sync フレームワーク

2025-12-26(水) に開催された OutSystems Users Meetup in Osaka のセッション発表で使用したスライドです。
スライドの内容に対応する解説は、下記で公開しています。

[OutSystems] モバイル非同期ジョブ基盤としての Offline Data Sync フレームワーク #outsystems - Qiita
https://qiita.com/moriya-takasi/items/4242407657734f576faf

イベント情報:
【OSUG*OJEC合同開催】OutSystems Users Meetup in Osaka
https://usergroups.outsystems.com/events/details/outsystems-inc-osaka-presents-osugojeche-tong-kai-cui-outsystems-users-meetup-in-osaka-1/

Avatar for moriya.takasi

moriya.takasi

December 09, 2025
Tweet

More Decks by moriya.takasi

Other Decks in Programming

Transcript

  1. Offline Data Sync フレームワーク(ODS) • モバイルアプリ開発用に用意されている、サーバー DB エン ティティのデータと、Local Storage

    エンティティのデータを 同期するのに使える実装のセット。 • 用意されている非同期実行トリガー • アプリがオンラインになったとき • アプリが前面になったとき • トリガーアクション実行時 (どれを有効化するかは設定可能) ※ Offline Data Sync フレームワークを ODS と略すのは公式ではありません。
  2. ODS の構成要素 • ライブラリ(OutSystems UI)→ 改変しない • アプリテンプレート実装 → 必要個所に手を入れる

    • Studio アクセラレーション → (スキャフォールディング) 足場実装なので改変する前提
  3. ODS 処理実行開始の流れ 1. トリガーイベント発生 2. OutSystemsUI の OfflineDataSyncCore ブロックの OnSync

    イベント発火 3. アプリテンプレートのレイアウトブロックに組み込まれた OfflineDataSyncEvents ブロックの OnSync ハンドラーアクション実行 4. アプリテンプレートの Client Actions に用意されている OfflineDataSync アクション実行(開発者はこのアクションの中に、データを同期するロ ジックを組む) 実行 実行
  4. • 時間がかかる処理を Timer に • 実行登録だけでフローは次へ • 実際の処理はスケジューラーが実行 ※Process、Light Process、

    Event(ODC) でも同様に組めます サーバーにおける非同期処理 帳票のダウンロード は別途組む
  5. 自動トリガーを起点にする • オンライン時・アプリ前面時 は SyncUnit が空文字列で トリガーされる (それぞれ有効にしたとき) • SyncUnit

    が空文字列のときに 未処理検出をして、SyncUnit を設定し直してトリガー 未処理があればトリガー
  6. エラー処理とリトライ • 非同期処理中に発生したエラーは Global Exception Handler で は拾われない(Layout ブロックの OnSyncError

    で拾う) • エラー時のリトライは、「リトライするかどうか」「リトライ の間隔秒」の2つを設定すれば、同じ SyncUnit で自動トリ ガーされる
  7. O11 と ODC の違い • O11 → OutSystems UI を介した非同期イベント

    • ODC → OnSync というシステムイベント 右クリック
  8. まとめ • Offline Data Sync フレームワークは、モバイルアプリにお いて、サーバー・クライアントのエンティティ同期のため に OutSystems が用意している仕組み

    • エンティティ同期以外の非同期処理実行のためにも使える • JavaScript を書かなくても非同期ジョブが組める • 自分で実装しなくてもリトライを実現可能 楽しい開発を!