OutSystems Developer Cloud
OutSystems Developer Cloud (ODC) enables the creation of client-side web, tablet, or mobile applications with rich interfaces and interactive user experiences. Adopting a simplified architecture allows you to speed up the development process using low code to create applications. If you're familiar with OutSystems 11, Service Studio, and Reactive applications, you won't feel like a complete stranger to this new platform and portal.
What are the minor changes?
Some terminologies have changed. I decided to start here to provide some new terminology you’ll read about in the next section. Some examples are: Organization as a representative of a Fabric or Infrastructure; an Environment as a Stage; an IT User as an Organization User; a Site Property as a Setting; and an application Version is now a Revision.
What are the big changes?
The main and perhaps the most crucial change is the new Architecture design. Instead of an Architecture Canvas (OutSystems 11) focused on modular programming that organizes modules into End-Users, Core, and Foundation layers, the module concept has been extinguished in this new architecture and replaced by Applications and Libraries. A single application includes not only functionality for end users but also services around business concepts, which is a big difference from previous architectural solutions where functionality and business are placed in different layers and modules.
If, on the one hand, centralizing the two concepts can accelerate development speed, as everything is at hand, on the other, it can be a worse approach. Keep in mind that implementing all the code in one single place will increase the application's size, making it difficult to reuse logic between different applications and thus increasing the time of deployments. To get around this situation, an Architect needs more than ever to figure out which independent UI and agnostic business logic can be reused across applications and place them in libraries. Besides that, reviewing how the organization can group or split different business concepts into separate, smaller, and tidy applications is essential.
The Architectural Design Process can be an intimidating challenge, and now more than ever, it's crucial to understand how your company's strategy and business concepts are set to change. A divide-and-conquer strategy can be an excellent approach to breaking down different business concepts into various applications. A good example of managing the list of employees and vacations is creating two separate applications instead of one for all HR department needs.
Add Public Elements
OutSystems allows you to reuse public elements between apps, like actions, images, themes, database entities, etc. On OutSystems Service Studio, this is called Manage Dependencies. Inside the ODC Studio, it's called Add Public elements. The mechanism is still the same; you must check the Public property of a production application or Library element and then add it inside a consumer Application or Library.
At this time, you may question what changed regarding what can be shared between different Applications and Libraries.
You can continue using the Libraries as Integration Wrappers, Style Guide and Theme, reusable UI, Blocks, Server, and Client Actions.
Applications and libraries can consume other libraries, which will create strong dependencies. Therefore, any change inside the producer library must be reflected and updated on the consumers. Once a Library has been published, a Package of it will be created, and every time a consumer app is published, the library package will be included inside the app container too. This architecture simplifies the deployment to other stages.
As before, Libraries can consume REST Services but not expose them. One of the differences related to Web Services in the ODC Studio is that you are only allowed to interact with REST Services, which means that SOAP and SAP are not available inside Libraries and Applications anymore.
It is essential to highlight that Static entities inside Libraries do not reflect an actual database table but are an enumerator. Apart from the fact that it is not possible to visualize a preview of its data, it works the same way for a developer, as the database Static Entities inside an app, thus can be defined as public too. Also, Static Entities are the only kind of entities that you create inside a Library.
Furthermore, remember to check if you are exposing an element you do not wish to because the Public property is set to Yes by default on the library elements. The only exception to this rule is the Structures, which are not Public by default unless they are being consumed inside a Public Server or Client Action that exposes a parameter with that data type.
After seeing what libraries can share, let's see what can be referenced cross-applications. Applications can create weak references by consuming Screens, Entities, Static entities, and Structures from other applications. In contrast to Libraries, none of these elements is defined as Public by default.
Client and Server actions can not be shared between applications. Also, you can see that the Public property is disabled on the ODC Studio. So, a Service Action must be created if you need to share business logic between applications.
These new automatic definitions promote a better coherence of what should or not be exposed between different business concepts and architectural elements. Furthermore, be careful and always double-check if you are exposing an element that you don't want to be visible in the organization. Remember that Public property is set to Yes by default on most of the Library elements.
“Bugs are attracted to the light.” Developers know this joke very well. OutSystems listened to the community members, and the new ODC Studio has a Dark mode option to help the developers protect their eyes and their code from bugs.
Do the names Service Center, User Applications, and Lifetime ring a bell to you? Well, now everything crucial is placed in a single location.
The ODC Portal is a unified console to monitor and manage your applications, users, deployments, and configuration settings.
It is no longer necessary to navigate through different platforms and applications, to do all the tasks you need to guarantee your organization's good health and security.
In ODC, the database server is Aurora PostgreSQL. When writing your custom SQL Queries using a SQL tool, consider that you should write them for Aurora PostgreSQL.
Users and Roles
Roles are created inside the applications and cannot be public. To ensure better performance, OutSystems recommends you create a role with the same name inside different applications instead of using Service Actions as wrappers to validate that Role.
Besides the typical role actions that run on Server-side, such as Grant, Revoke, and Check Role, you now have a Checking Role Action available on the client side.
Screens continue to have the security option to grant access through roles, but now that properties are displayed with a new layout.
When a new screen is created, the Authenticated Users accessible value property is defined by default. So far, same behavior as OutSystems 11, however, none of the existing business Roles will be checked automatically. It is the responsibility of the developer to give the right permissions to each one of the screens, based on the respective roles. Also, it is recommended to have at least one generic role per application, instead of using only the Authenticated Users level.
What do I believe that ODC will bring to us?
Sub-applications that solve a smaller and self-contained business need. This new approach will help decompose complex applications into simpler ones, increase the abstraction between apps, and divide large projects into smaller ones. Not only will it be more efficient to define the organization users responsible for each app, but also to better define the business sponsors, owners, and teams of each application.
Ultimately, having an app that answers a business need, instead of mixing up all the business concepts in a single place, will improve traceability, debugging, and implementation of changes. Besides, all the potential of having everything in the CLOUD helps to adjust the resources to the current reality of the organization’s needs. You can start with the minimum resources and invest more when your projects and users grow.
So, are you confused or convinced about ODC?
There is much information on this topic, and we just highlighted the major differences. This is a new and recent world in OutSystems. If you want to explore consistent documentation and learn more about ODC, I recommend you check ITUp’s training programs for OutSystems Developer Cloud and Certification.
We also provide new content and news about the last topics of OutSystems world on our Social Networks. Therefore I invite you to follow us on social networks #ITUp or just reach us by email.