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:
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.
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.
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.
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.