You are viewing an old version of this content. View the current version.
Compare with Current
View Version History
Version 1
Next »
The synchronization flow is triggered when
The user logs in for the first time
The user manually initiates sync.
Synchronization needs an active internet connection to succeed.
Eligible data for sync
Uploads
Entries created via dynamic forms
Analytics data
Downloads
Dynamic forms schema
Form specific localizations
Aggregated data points for dashboards
Static SoS contact information
Map tiles
Routing information
Sequence Diagram

https://sequencediagram.org/
..Ititle Offline Sync Sequence
participantspacing equal
fontawesome f007 User
fontawesome f10b Client
fontawesome f1c0 "Local Database" as DB
fontawesome f233 "Campaign Service" as Api
fontawesome f233 "Storage Bucket" as Storage
fontawesome f233 "Tile Server" as Tile
fontawesome f233 "Routing Server" as Routing
frame Offline Sync
autoactivation on
create User
User ->> Client: Sync
destroysilent User
Client -> DB: GET //access_token//
DB --> Client: //
alt OFFLINE
Client -#redx Api: Sync Request
deactivate Api
else ONLINE
par DOWNLOAD
Client -> Api: Sync Request
Api --> Client: <align:center>//Form Config, Static SOS data, Form specific Localization,Aggregated\ndata for dashboards, Map boundaries, routing information//</align>
Client -> DB: Persist data, form config, \nand locaization strings
DB --> Client: //
par Map caching
Client ->> DB: Clear local map cache
deactivateafter DB
Client ->Tile: GET tiles for boundary
Tile -->(2)Client: //
Client ->> DB: Persist tile data
deactivateafter DB
thread Routing Information
Client ->Routing: GET routing information for points
Routing --> Client: //
Client ->> DB: Persist route data
deactivateafter DB
end
thread UPLOAD
Client -> DB: <align:center>GET all entries where \n**isSynced=false**</align>
DB --> Client: //
Client -> Client: Compile entries into a file
deactivateafter Client
Client -> Client: Generate file checksum
deactivateafter Client
Client -> Storage: File
Storage --> Client: //File URL//
Client -> Api: FileURL + checksum
Api -> Api: Verify checksum
deactivateafter Api
Api --> Client: //
Client -> DB: UPDATE entries as synced
DB -->Client: //
end
end
autoactivation off
0 Comments