Version 3.0.0
New Features
ApiOmat Studio Web
Starting with ApiOmat 3.0 you can easily create React based web apps by using ApiOmat Studio Web. Built for designers, ApiOmat Studio Web provides all the tools to quickly piece together web apps, prototypes or MVPs.
Gain start up speed and give lines of business, departments, and designers the only tool to build native apps and digital services for their customers, without IT complexity.
Deliver rapid prototypes and digital services in hours and launch apps in as little as a day to digitalize how employees, customers and partners interact with your business.
-
Design apps tailored to your use-case
-
Supports all popular browsers
-
Huge selection of predefined UI elements
-
Direct connection to the app backend
-
Free of charge: Included in ApiOmat 3.0
Managing User Interfaces with ApiOmat
With ApiOmat 3.0 a new type of component named User Interface (UI) is introduced.
In contrast to modules that hold only backend logic of your app, User Interfaces (UIs) contain the frontend code of your app. You are able to connect UIs to one or more modules to access your backend data.
As UI Developer you can create your own UI templates and share them across your projects. UI Orchestrators on the other hand can use the ApiOmat UI Marketplace to attach and configure those UIs to a specific backend application.
This provides the possibility to create frontend templates and integrate them into specific backend applications or share them with other ApiOmat users.
More information can be found at User Interfaces.
Fine grained Cron Jobs in Native Modules
You can now define your own custom cron method within your module classes. Those methods will be registered as interruptable jobs (which basically means that they will be interrupted if the server breaks down or your module gets undeployed or redeployed). Cronjobs can now be executed in every periodic schedule like it is required for your digital service, for example every midnight, every certain working day or hourly.
All you have to do is to use the new annotation @Cron to mark your custom cron method within your module class.
In order your cron-marked module methods get executed timebased you also need to specify the annotation parameters cronExpression and executeOnAllNodes.
Example:
@Cron
( cronExpression =
"0 0/5 * * * ?"
, executeOnAllNodes =
true
)
public
void
myCustomCronMethod(
final
com.apiomat.nativemodule.Request request )
{
final
String moduleName =
"MyModule"
;
final
String appName = request.getApplicationName( );
final
String system = request.getSystem( );
final
String className =
"TestSimpleClass"
;
final
String query =
""
;
final
IModel<?>[ ] findByNames = MyModule.AOM.findByNames( appName, moduleName, className, query, request );
[...]
}
More on this topic can be found here.
Dynamic roles in native modules
Dynamic roles are a way to write custom authorization logic (as opposed to authentication logic). Write your own authorization logic in addition to the preset roles and get your role informations out of third party systems. This enables you more flexibility and perfect compliance fit.
The "Dynamic Roles" feature works similar to the Authentication Classes feature, but while authentication classes are assigned to a backend and are for general authentication, the dynamic roles are assigned to classes (MetaModels) and enable custom role checks. These custom role checks can be used instead of default role checks (simple roles "Guest", "User", "Owner" etc.) and ACLs. ACL role objects can still be assigned, but you have to check their contents yourself.
You can create your own "role classes" by implementing your own isUserInRole() method in the related hook class, like the following example:
@Override
public
boolean
isUserInRoles( com.apiomat.nativemodule.DynamicRoleWrapper roleData,
com.apiomat.nativemodule.Request request )
{
// Make call to some other service that contains authorization information
return
isAuthorizedByThirdPartySystem();
}
You can assign multiple role classes to one class and set the order in which the custom role check methods should be called in Dashboard and via code:
More information can be found on the documentation page.
Breaking changes
Breaking changes may require changes in configuration, apps, or native module code after an ApiOmat upgrade to ensure system stability.
Git Modules |
The whole git handling has changed:
Read more about the change on our page Introducing the new git flow |
ApiOmat Studio Mobile |
Because of the deprecations listed below, you'll need to re-install ApiOmat Studio Mobile. Therefor simply download ApiOmat Studio Mobile and run the install script again. If you have configured the app location within your apiomat.yaml, you'll to update the version folder from 2_6 to 3_0 before, to get the latest version. |
Deprecations |
The deprecations, which were scheduled to be removed for March 2018, have been removed:
|
Sharepoint module |
Files were previously handled as Base64 strings in the attribute downloadableFile of the class SharepointFile. This attribute was changed to the type File and full static data handling was implemented. This means for example that in the response JSON the attribute is called downloadableFileURL and contains a URL where the actual file can be fetched. You need to change native module and SDK code to handle files correctly, as well as any code that manually sends HTTP requests to the SharepointFile REST endpoint. |
EULA Acceptance |
Each ApiOmat account (including the SuperAdmin) is forced to accept the EULA to enable the account. After installation or update, each account has to log into the dashbord one time and accept the EULA. Until then, each request with this account will raise an error, including all SuperAdmin requests. |
Native Module Methods |
The methods and resourceMethods field on AbstractClientDataModel are now of type IModelMethodsBackend and IResourceMethodsBackend. If you set your own mock-implementation of these Interfaces, you have to rewrite them to implement the new interfaces |
Server Code |
The user object in ServerCode does not have the [get/set]LocLatitude and [get/set]LocLongitude methods anymore and instead, the [get/set]Latitude and [get/set]Longitude methods are (furthermore) available. The [get/post/put/delete]Request methods are now only available on the static AOM object, but not on the objects itself.
|
Paymill module |
The Paymill module is not available anymore, as it was only useable in ServerCode. The module will be removed from your Backends automatically after upgrade. |
Tumblr module |
The tumblr module is not available anymore. The module will be removed from your Backends automatically after upgrade. |
Swift SDK |
Swift SDK now uses Swift 4. You have to update existing Swift 3 apps to Swift 4: Swift 4 Information |
Remarkable changes
Remarkable changes do not affect system stability after ApiOMat upgrade, but may require changes in configuration, apps, or modules in the next development cycle
sdk.properties |
The build.xml for modules for Version 3.0.0 now also searches for properties defined in {user.home}/apiomat/apiomat.properties . If the sdk.properties defines the same value, the value is read from sdk.properties file. We recommend the removal of customerName, password and host from the sdk.properties files of your module and instead putting these values to your local {user.home}/apiomat/apiomat.properties file. |
Modules with Git repository |
Native modules can now be stored in a subfolder of a git directory. Additionally, we automatically create a .gitignore file, which ignores common build directories. |
Java SDK |
JSON lib in class folder was replaced by library. Update project/build settings by adding the new json library in the /lib folder and remove the existing org.json package in the project folder. |
Native Module objects |
The structure of the NativeModule classes (extending AbstractClientDataModel) have been changed. The IModel interface now extends IResourceMethods and IModelMethods and therefore, you can use these Methods directly on an IModel object without casting. |
All changes in the current and previous versions can be found at the root page.
All deprecations and their removal date can be found at Deprecations and Migration.
Changelog