It feels amazing to begin writing this post. I have been waiting for a long time to say it and I finally can – Backendless goes out of Beta! And boy, aren’t we doing it with quite a bang. Over the weekend we pushed a new release with a ton of fixes and some amazing functionality. It took us quite a while to get to this point, but I am quite sure the wait was worth it. The new release includes support for custom business logic, code generation, data validators, multi-environment (dev, test, stage, prod) support and many more. Please see below for details:
Server-side Data Validators
As the name suggests, this feature can validate values in the data and user objects entering the Backendless system. As objects/users are created or updated, Backendless can automatically verify and validate the properties and return an error if the validation fails. You can configure validators using Backendless Console. For example, the image below shows the User Properties screen. Each user property can be configured with a built-in or custom validator. A custom validator is a regular expression entered by the application developer:
Similarly, validators can be assigned to data table columns. To configure a data validator select a table in the Data section of the console, then click the “Table Schema and Permissions” button. All columns (except for relations) include the Validator column as shown below:
Backendless Console is now available in 9 languages: English, Spanish, Portuguese, Italian, French, Japanese, Korean, Russian and Chinese. Language is selected automatically based on the user’s locale or defaults to English if a translation is not available:
For each feature selected in the code generation screen Backendless creates a project with the source code and all required dependencies. You can run the project without any changes at all. The code generated for “Registration and Login” creates a registration form based on the user properties defined in the application. For Data Management, the code is a class library which can be used to build data-driven apps on top of Backendless. There is also a cool CRUD (Create, Retrieve, Update, Delete) demo project which demonstrates how to use the generated code for all Data Service API calls.
Custom Business Logic
For more information about Backendless custom business logic, see the Server-side code quick start guide.
Multi Environment Support (Dev, Test, Staging, Prod)
Most applications go through some well-known phases – development, testing, staging, and production. Each of these phases requires a corresponding backend environment where the application runs. The environments are isolated from each other, and an application migrates from one phase/environment to the next. Backendless now supports such migration. The concept of “environment” is represented through application versions. When you create a version, simply call it “dev” or “dev-v1”, “testing” or “production”. Deployment is available on Manage > Versioning screen. Simply click “Deploy” for the version you want to deploy and select the destination environment:
Relation Auto Load
Backendless supports relational object storage. For example, an object Person may have a related property “address” which references an Address object. When a client application loads a Person from the Backendless data storage, the “address” property is not initialized by default. There are ways to load related objects. You can enumerate all the relations in a “find” API call and Backendless returns them with the parent object. Or you could use a separate API call to load related properties. In addition to these options we added another alternative. Now the data browser in Backendless Console includes the “auto load” checkbox for all relations:
This checkbox is available for all relation properties. For the relations with selected “auto load”, Backendless automatically includes the related objects into query results. This option works recursively – any “auto load” relations in the child relations are also automatically included into the query results.
During the development and testing process an application may get “polluted” with dummy or testing data. Occasionally a complete (or partial) reset may be required. To do this in Backendless navigate to your application home (click the home icon in the upper left corner) and use the Reset App button:
Backendless Plus Enhancements
Backendless Plus is a subscription package, which can be added to any application to enhance its functionality, user and developer experience. In this release we made Backendless Plus even better with the following functionality:
- Script-level access for all console APIs. Backendless Console is a powerful tool, which is a frontend for one’s backend. There are many functions in console, which could be useful from the automation perspective. For example, configuring backend, setting up permissions and importing data are just a few tasks that can be done in a script.
- Custom business logic execution time. By default any custom business logic code has a limit of 5 seconds for the duration of time the code can run. Once Backendless Plus is added to an application, the limit is extended to 20 seconds.
Assigning Roles to Users
A user may belong to one or more roles. A role carries permissions for each available API operation. At the very minimum a user belongs to either AuthenticatedUser or NotAuthenticatedUser system roles. Custom roles may be assigned to a user account via an API call and now with Backendless Console. When you navigate to the Users table in the Data Browser screen, you can select one or more user and click the User Roles button. The user interface makes it trivially simple to assign roles to the selected user accounts:
Export Schema Only
Backendless Export module lets you export your application settings, data tables and geo points. We made an improvement in this release and now you can export only schema definition for your data tables:
Migrating from StackMob or Parse
The import module was also enhanced to simplify migration from StackMob (to be shut down on May 11th and Parse (no shut down notices have been published yet). To import the data, use the “single Zip file” link in the Manage > Import section of the console: