Skip to main content

Developing with OutSystems

OutSystems

Will I hit a wall when developing?

When people ask us this question, they have often just experienced our visual application development model or seen a demo and are concerned whether they will be able to include their own code. They worry that they will encounter platform limitations later in the development process that will prevent them from building enterprise-grade applications, designing rich and complex mobile and web user interfaces or integrating with the myriad of systems and databases that exist in their environment.

OutSystems Platform is open by design to allow all layers of applications to be extended with your own code: front-end, back-end, database and integration. In addition, OutSystems Platform offers an expressive visual language for developing your applications and avoiding rapid application development pitfalls.

Extending all layers with your own code

This diagram shows the extensibility of OutSystems Platform at all layers:

  1. Extending the user interface: Silk, the OutSystems Platform responsive UI framework, enables the creation of complex mobile and responsive web user interfaces without coding. Instead, development teams have access to a large collection of templates, widgets and UI patterns. The default look and feel can be customized with CSS and the core library extended with new, reusable templates, widgets and UI patterns defined in HTML, JavaScript, CSS and Flash.

  2. Extending the back-end: Libraries, integration components and any code written in C# or Java can be published and managed by the OutSystems Platform. Methods exposed by .NET assemblies or JAR files are made available as visual elements in the OutSystems Platform IDE and are an integral part of the application once it is deployed and run.

  3. Integrating external databases: OutSystems Platform connects out-of-the-box to SQL Server, Oracle, MySQL and DB2. In addition, the database SDK can be used to implement a database connector to any database. An example of a connector built for PostgreSQL on GitHub can be found here.

  4. Integrating to existing systems: OutSystems integrates out-of-the box with SAP and with other mission-critical systems through REST or SOAP. It is also possible to reuse existing integration components in Java or C# or build your own.

In OutSystems Forge, there is a repository of open source extensions, including wrappers to the overall public open source (or occasionally commercial) .NET, Java or JavaScript libraries or plugins, which are then reused as if they belong to the OutSystems Platform itself. Our strategy is to allow the community of OutSystems developers to collaborate and continuously extend OutSystems Platform with new reusable elements that end up supporting our entire customer base.

Expressiveness of the OutSystems visual language 

In OutSystems Platform, a visual Domain Specific Language is used to design business logic (write procedural code). This can be done at the page level (with full access to the scope of the page UI element) or users can define a set of methods/functions to reuse for pages and workflows.

Even though this is done visually and for several (mostly domain-driven) actions at a higher abstraction level, the visual DSL is built on top of the basic third generation language (3GL) programming elements (assignments, conditions, loops, exceptions and more). As a result, any kind of complex logic can be written visually. It is similar to and has broad support from the IDE with a visual interactive debugger, visual merge and more.

Because enterprise applications are very data driven, the DSL also has a set of data-related elements and is expanded with data related actions as users include an external database model or define their own.

We also know that writing code reuses code frameworks and code snippets that are used to compose specific business needs. Therefore, the platform allows for several extension points at the visual DSL level.

Avoiding the pitfalls of rapid application development

The OutSystems Platform architecture avoids the pitfalls of old fourth-generation language (4GL) technologies. The visual DSL was defined to be expressive enough for the broad scope of logic required for complex enterprise applications. It was also designed to be open and extensible, allowing developers to plug in custom code or pre-built extensions.

Instead of promoting it as “code free,” we designed the OutSystems visual language from the start to be a layer on top of existing coding skills, and it actually promotes the graceful “stepdown” to standard 3GL languages such as C#, Java, JavaScript, SQL, and CSS whenever it makes sense. The goal is not to push developers away from coding; instead it just adds on what developers already know so they become extremely productive, stay in control and avoid the risk of "hitting a brick wall."