Offline iHRIS
Just some initial notes and an initial direction.
1. Concentrate on data collection. 2. Keep it simple and fail-safe.
David and I agreed that the quickest way to get the fastest results would be to put the iHRIS application on a Flash Disk or USB stick that Windows computers could run. This would include making sure that we found a lightweight web server (probably not Apache). Currently, the database back end is MySQL, but I'm pretty sure that we can replace that with an embedded SQLite Database.
The end-user scenario:
Jim at the central office ships Jane a flash disk. When Jane puts the flash disk into her computer, a local copy of the database is created and a browser appears. Jane logs in and begins using the iHRIS application as if she were online.
Jane can pass the flash disk to her co-workers so that they get copies of the data. If her co-workers want to share data with her, they can sync with the flash disk from within the web application and give it back to her.
Periodically, Jim ships new flash disks to Jane. Included in the instructions are directions to synchronize her local database data to the flash disk.
Jane returns the old flash disk to Jim and he uses a screen in the administrative console to sync the flash disk with the central database. The flash disk can then be returned to Jane or to any other remote user.
Note:
- Data integrity checks are performed at every step. Whenever a sync
happens, we need to make sure that the data is correct.
- iHRIS can present forms in the user's language as long as the browser
is set to request pages in that language.
- All the iHRIS functionality is available in offline mode. Reports
should all be pre-cached when the flash disk is synced.
- This system provides multiple, distributed backups of the data. At
some later point, the datasets may become too large to deal with this way, but at this point, our datasets would reasonably fit on a flash disk.
- Local users can share data even in a non-networked environment using
the flash disk and “Sneaker-Net”.
- Security becomes extremely important. I need to come up with a good
way to protect the data as it travels. Additionally, we need to make it hard for data to enter the system maliciously without impeding regular use too much.
As I said, that is probably the quickest solution we can present. Other ideas that would probably take more time but that we should think about pursuing:
- Some sort of wireless PDA application. Since wireless access is so
ubiquitous, it would prove worthwhile to find a way to provide access to the data this way.
- Google Gears provides a way to embed an application entirely the
browser and synchronize it with the server when online access is available.
By making the back-end accessible via REST calls (i.e. it serves up data structures instead of raw HTML) and the front-end dynamically generated by Javascript, it would allow use to make the most use of something like Google Gears. This allows the end user who sometimes has access to the Internet to sync up without the use of sending flash disks out.