How It Works
These are the notes for GoZync 3. Docs for the latest version of GoZync--GoZync 4--can be found here. GoZync 4 is a free upgrade and is highly recommended (hint: it's faster).
Unless you are on wifi and your server is on the same LAN, if you want the best FileMaker Go experience, you have build your files to work offline. 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).
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
- 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 3.0 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 converting any any related set of FileMaker records, like an Invoice and its related Invoice Lines, into what we call a "Package", and passing the complete Package up to the server or down to the device using normal FileMaker Set Field steps.
Packages are then 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 package. 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.
Packages can also have "Attachments". Attachments are binary files that can be sent along with the document. This makes it possible to send photos or other files to the server. Attachments are also treated transactionally, so if a package gets passed to the server, it will go with all of its attached photos -- or it won't go at all.
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 build and extend.