. . .

Overview

ApiOmat Enterprise makes integrated mobile business processes possible. We mobilize complex business structures and processes by offering a mobile middleware as connector between existing IT-systems and mobile devices. The middleware can be directly installed in a company’s data center, the modules create a secure linkage to the IT systems allowing employees to work with data via apps and websites no matter where they are.

ApiOmat provides a straightforward REST API for clients written in all programming languages running on arbitrary operating systems. F or the most common mobile operating systems we provide generated SDKs, which not only consist of app-specific generated code, but also offers many advanced features like offline handling. On the backend side, ApiOmat includes many connectors - or modules, as they are called in technical jargon - for the most common use cases and data sources. Of course, the existing modules do not cover all use cases and interfaces. Therefore, every customer is able to write their own modules in the JAVA programming language and use any existing Java library in those modules, thus having the possibility to connect nearly any data source available.

The following paragraphs will describe the architecture of ApiOmat on a high level basis.

Architectural overview

images/download/attachments/12649338/Schichtmodell_aktualisiert-01.png

ApiOmat consists of two separate stacks - one containing the Dashboard, our visual component, and another the core component YAMBAS. The dashboard uses PHP and an Apache Webserver as a basis, YAMBAS uses Apache Tomcat and is delivers itself as a war file. The Dashboard does not use a database or any kind of storage itself but communicates with YAMBAS via its REST interface, just like any other client. The REST API browser can be found at http://YOURHOST:8080 /apidocs/index.html .

YAMBAS

YAMBAS contains the core of ApiOmat . To ensure a high flexibility and scalability, the NoSQL Database MongoDB is used, one of the most popular and powerful solutions on the market. On top of the database and some frameworks, four main components exist:

The Module Directory is an in-memory directory of all registered modules in ApiOmat and provides fast and easy access to them

SDK Generator uses the modules of an app including all self-created classes and creates source code for a variety of programming languages. This way, all operating systems can connect to the apps' data using the same methods, which makes development very fast and error resistant after changes.

A complete class structure can be modelled in ApiOmat . Storage and administration of this "Meta-" data is done by the Data Modelling component.

When it comes to execute JavaScript, ServerCode or Native Modules written in Java, the External Codebase component is working in the background. While ServerCode is a very fast and easy way to enrich classes with business logic, Native Modules have virtually no limits to connect to any external data source. External Codebase controls which technology should be used for a request and delegates to the corresponding handlers.

Applications and Modules

ApiOmat was designed to differentiate between apps and modules. While a module contains primary classes and attributes and is designed to be used in many apps, an app is used only by exactly one person/customer (but can be shared with others; see Roles for Dashboard Users) and consists of one or more modules.

Any class which is created in the Dashboard will be stored inside a specific module, which was created with the app, and has the name of the app suffixed with "Main". Therefore, this "private" module is also called the Main module. If you use the REST API, you will have to use this module's name to access your own classes. You will find your exact applications name in the base URL when opening the configuration with the button on the left panel:

images/download/attachments/12649338/configuration.png


Since the Main module can only be used the the corresponding app, it is not visible to others and cannot be removed from the app.