IF Request.StatusCode = 201 THEN Outbox_Table.STATUS = "SENT" HModify(Outbox_Table) ELSE // Retry later. Do NOT delete. Outbox_Table.RETRY_COUNT += 1 HModify(Outbox_Table) END END On the Cloud side (WebDev), you need a stateless REST API to accept these pushes.
// In the "Page header" (Server code) PROCEDURE ReceiveOrder(payload is string) // Validate JWT token (Security) IF Not ValidateToken(HeaderToJSON()) THEN RETURN 401 END // Decode JSON OrderInfo is JSONObject = JSONParse(payload)
The challenge is not building the apps; it is . You cannot expose your on-premise HFSQL directly to the internet, and batch imports/exports are too slow for real-time inventory. 2. The Architecture: The "Reversé" Proxy Pattern Instead of the cloud pulling data from the premise (which requires opening firewall ports), we will use the premise pushing data to the cloud via secure REST APIs. We will also use HFSQL Native Replication for the read-only data. windev magazine
HAdd(Cloud_Order)
Since WinDev Magazine focuses on practical, code-heavy, solution-oriented articles for developers, I have drafted a . IF Request
// Download new cloud orders HTTPRequest("https://cloud.myapp.com/api/v1/pull?since=" + LastSyncDate) JsonArray = JSONParse(Request.Body) FOR EACH JsonElement OF JsonArray Local_CloudOrder.ID = JsonElement.ID IF HReadSeekFirst(Local_CloudOrder, ID, JsonElement.ID) = False THEN Local_CloudOrder = JsonElement HAdd(Local_CloudOrder) END END In hybrid sync, conflicts are inevitable. Do not use "Last write wins."
Optimizing Real-Time Data Synchronization for Hybrid Cloud/On-Premise Applications // In the "Page header" (Server code) PROCEDURE
This architecture respects the network boundaries: the cloud never touches your firewall, and the premise never blocks the user for network errors.