The Problem
Unless you are on wifi and your server is on the same network you are, you have to build your files to work offline if you want the best FileMaker Go experience. Even if you have a wifi/LAN connection, a local file is going to be faster and more like using a native iOS app.
Once you decide to build for offline access, you're going to have to solve a number of issues:
- How to push new local files, and new versions of those files, out to folks in the field.
- How to reliably exchange data so it flows down to the device and back up to the server.
- How to gracefully handle disconnects while data is in the process of exchanging.
- How to keep FMGo from continuously looking for served files when no network is available.
- How to develop Go files that aren't just copies of the hosted files (which are likely too big and slow for Go).
Our Solution
GoZync solves all of these issues in a way that is both robust and simple enough for the average FileMaker user to implement. To maximize ease and simplicity, we set the following guidelines:
- No plugins, web publishing, or fragile stuff.
- Must work with regular FileMaker Pro as the host. FileMaker Server is not a requirement.
- Must minimize interference with how any given solution is built.
GoZync 5 is our simplest solution yet, giving developers an interface for managing syncs, logs, and devices.
Under the Hood
GoZync uses a loosely coupled data exchange model to pass data back and forth while maintaining transactional integrity. It does that by processing a record and its related records as a single entity using normal FileMaker Set Field steps. So while the transaction, logic, and error capture around the sync is pretty elaborate, the actual sync is simple enough that developers can get inside and change how things work. For example, developers can control which records are synced to which users (downloading found sets) and can change the actual SetField() steps to fit their business logic (custom field mapping).
Entities are thus transactionally processed so either they make it completely into the receiving system or they don't make it all. There is no way to transmit a partial entity. This means that should the 3G network drop, or the phone ring in the middle of transferring an invoice to the server, the invoice will remain intact and whole. For example, GoZync will never transfer the invoice but not all of its line items.
GoZync is agnostic about the kinds of fields it's sending: date, text, container, and repeating fields are all handled just as they are in regular FileMaker.
In addition to managing the data, GoZync manages the deployment of your local/remote files and can automatically download new builds of the local file to your Device. There is no need to use iTunes or any other app to get the file on the device. For clarity, you may want to email users their first copy of the mobile file. After that, they can click "check for new version" in the mobile file to automatically retrieve new builds.
All of this is designed to be simple for an intermediate FileMaker person to add to their existing solution and extend as their solution changes..