Eclipse Dirigible™ provides capabilities for end-to-end development process from database modeling and management, through RESTful services authoring using various dynamic languages, to pattern-based user interface generation, role-based security, external services integration, testing, debugging, operations, and monitoring.
Target applications built with Dirigible are atomic yet self-contained cloud based modules that cover vertical scenarios. These applications comply with the Dynamic Applications concepts and structure.
The overall process of building Dynamic Applications lies on well-known and proven principles:
- In-System Development - known from microcontrollers to business software systems. The major benefit is working on a live system where all the changes made by a developer take effect immediately, hence the impact and side-effects can be realized in a very early stage of the development process.
- Content Centric - known from networking, in the context of Dynamic Applications it proclaims that all the artifacts are text-based models and executable scripts stored in a generic repository (along with the related binaries, such as images). This makes the life-cycle management of the application and the transport between IT landscapes (Dev/Test/Prod) simple and straightforward. In addition, a desired effect is the ability to setup the whole system, only by pulling the content from a remote source code repository, such as Git.
- Scripting Languages - programming languages written for a special run-time environment that can interpret (rather than compile) the execution of tasks. Dynamic languages existing nowadays as well as the existing smooth integration in the web servers make possible the rise of the in-system development in the cloud.
- Shortest turn-around time - instant access and instant value became the most important requirement for the developers, that's why it is the ultimate goal of our tooling.
In general, a Dynamic Application consists of components, which can be separated in the following categories:
- Data Structures - the artifacts representing the domain model of the application. There is no intermediate adaptation layer in this case; hence all the entities represent directly the database artifacts - tables, views, procedures, etc.
- Entity Services - domain model entities exposed as web services (REST/OpenAPI,OData), following the modern Web 2.0 patterns and scripting language capabilities.
- User Interface – pattern-based, generated user interfaces, as well as custom forms and reports based on the most popular AJAX frameworks or any other prefered by the developer.
- Integration Services - in the real world there are always some external services that have to be integrated into your application - for data transfer, triggering external processes, lookup in external sources, etc. For this purpose Dirigible provides capabilities to create simple and dynamic routing services following the Enterprise Integration Patterns guidance as well as BPMN compiant workflows.
- Documentation - an integral part of any application is its documentation. Dirigible supports authoring documentation content in the widespread wiki (markdown) format.
Dirigible architecture follows the well proven principles of simplicity and scalability in the classical service-oriented architecture.
The design-time and the runtime components are well separated. They interact with each other through a dedicated repository where the only linking point is the content itself. At design-time programmers and designers use the Web-based integrated development environment which can be easily enhanced using the predefined extension points.
The Repository is the container of the project artifacts. It is a generic file-system like content repository.
The runtime can scale independently by the design time part, and even can be deployed without design time at all (for productive landscapes).
Depending on the target cloud platform, Dirigible can be integrated to use the services provided by the underlying platform.
The content of this open source project is received and distributed under the license(s) listed above. Some source code and binaries may be distributed under different terms. Specific license information is provided in file headers and in NOTICE files distributed with the project's binaries.