. . .


ApiOmat Enterprise makes integrated mobile business processes possible. We mobilize complex business structures and processes by offering mobile middleware as a 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 contain app-specific generated code, but also offer many advanced features such as offline handling. On the backend side, ApiOmat provides 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.

In addition to modules, customers can create their own microservices and deploy and start them within ApiOmat, allowing them to easily use modern, non-monlithic architecture. All microservices are created with Spring Boot, an extremely popular framework for building stand-alone and production ready applications without having to write a lot of boilerplate.

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

Architectural overview

images/download/attachments/91594935/20210107_AOM-Architektur_Design-Time-View_darkblue.jpg images/download/attachments/91594935/20210107_AOM-Architektur_Runtime-View_darkblue.jpg

ApiOmat consists of multiple applications:

  • YAMBAS, the core component

  • Dashboard, the visual component and main interface

  • The core services, each of which has its own purpose, e.g. starting/stopping generated services (Executor) or authentication and access/identity management (Bouncer). For details about each service, refere to its respective page.

  • Generated services, created by the customers themselves for various use cases.


YAMBAS contains the core of ApiOmat . To ensure 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.

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

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

When it comes to executing 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 when it comes to connecting 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 mainly 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 the specified 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 application's exact name in the base URL when opening the configuration with the button on the left panel: