MetaApp is an app generator and interpreter, composed of two applications:
A central java based web application which uses a SQLite database to manage central data and distribute it to the app installed in the mobile devices. For each "virtual table" it is possible to define if data must be synchronized to and from the mobile devices, where the same database is installed. Tables are abstract: it is possible to centrally define which tables to use and the functionalities that compose the app. In this way, there is no longer the need for developing a specific app into the mobile device: tables are virtualized, as well as the functionalities that work on these tables. Each mobile device has a specific account and for each functionality/user it is possible to define the functionality visibility and the grants related to the operations of insert, update and delete (CRUD).
You can dinamically add or change functionalities through the central web application and these changes will be automatically distributed to the mobile app on the next sync action. In this way the app will not be re-reployed for functionalities changes: only data and meta-data will be synchronized.
The central database can be fed through a scheduling import task, which requires a CSV file that contains the data to insert/update; logical delete is also supported. An export data task is also scheduled, in order to extract central data (and data got from the mobile devices through synchronization activities).
Java 1.6 is required; this web application can be simply installed in a Tomcat web engine
An iPhone/iPad app or an Android based app, including a SQLite database, which is synchronized with the central web application and is able to work off-line and show the functionalities and data defined and stored starting from the central web application. Synchronization between the central web application and the mobile app is possible, in order to publish onto the mobile database the data and meta-data and to send to the central database the changes produced into the mobile device.
iOS 5 is required.
Android 2.3.3 required
There is no limit on the number of virtual tables to define, but it is allowed to define up to 10 fields per table. All fields have text type, but data can be constrained to be displayed and typed as: text, text+upper+trim, number, date, lookup (code selection from a list of values), readonly text.
Each functionality is composed of a grid and optionally a filter panel and a detail panel; if a filter panel is defined, this will be showed through a "lens" icon on the top navigation bar. The detail panel is used to show, insert, update and delete data.
It is also possible to feed a grid with online data: XML or JSON based Restful web services or RSS Feeds.
The workflow of the typical functionality is: menu -> grid -> filter/detail.
Each detail can have an unlimited number of buttons that can be used to: (i) open another child functionality (a grid) or (ii) to execute a command, expressed as a sequence of SQL instructions. In this way, it is possible to create a hierarchy of functionalities, accessed through a detail button.
For instance, think about the classical sale order functionality: it can be easiliy defined by following this schema: list of order headers (grid) -> order header (detail) -> list of order lines (grid accessed through a detail button) -> order line (detail). Moreover, command buttons could be used to calculate row amounts and order total amount and to confirm an order and change its state, through the execution of specific SQL instructions.
Displaying of images or binary files (e.g. PDFs) is supported: for each grid or detail it is possible to show up to 3 binary files, retrieved through the synchronization task from the central site or inserted locally through the image gallery of the camera (in this case files are not synchronized with the central site). In case of PDFs, it is possible to show them through a detail button automatically showed for binary file fields.
The CSV file and binary files must be located in specific locations of the file system of the central site and the web application periodically checks for the availability of these files. The checking period is expressed in hours.
Currently, English and Italian languages are supported.
Note: I am available to include support for other languages: if you are interested please email me or create a news in the forum!