Skip to content

opencirclesolutions/dynamo

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Dynamo

image

Web Application Accelerator Framework

Developed, maintained and sponsered by

image

Copyright © 2014 - 2024 Open Circle Solutions BV.

Introduction

The Dynamo Web Application Accelerator Framework is a software development framework developed by Open Circle Solutions that aims to increase productivity by using design principles such as convention over configuration, model-driven development and DRY (don’t repeat yourself).

At the core of Dynamo is the concept of the Entity Model. The Entity Model describes the attributes and behaviour of an entity (or domain object) in your application. This Entity Model can then be used as the basis for creating forms, tables, search screens etc.

The Entity Model of an entity is automatically constructed based on the properties of the attributes of the entity (using sensible defaults as described by the convention over configuration principle) and can further be modified by using annotations and message bundle entries. The main goal is to reduce the amount of (boilerplate) code required to perform common actions like creating search screens and edit forms.

Complementing the Entity Model is a set of user interface components (widgets) that can be used to quickly construct screens for common use cases, and several base classes for the Data Access and Service layers.

The Dynamo framework is built around a number of proven and highly productive set of technologies:

  • JPA2 for ORM

  • QueryDSL for type-safe query generation

  • Spring Core & Spring Boot as the application framework

  • Angular & PrimeNG as the user interface framework

  • Apache Camel for integration

Dynamo versions and innovation

Please note that there currently two different Dynamo versions:

  1. Version 4.x and beyond that implements the generated UI with Angular and PrimeNG

  2. The older version 3.x that implements the generated UI with Vaadin

The master branch will focus on innovation for Dynamo v4 and beyond. Dynamo V3.x will be maintained with updates of dependencies when needed, but new functions of Dynamo V4 will only be backported when demand and business requirements are sufficient.

Features and benefits of the different Dynamo versions

Dynamo has many features and functionality, which are not covered fully in this summary. But this overview is intended to summarize the most notable features and benefits.

Features in both Dynamo versions

UI features

  • Runtime generation of complete UI in several different layouts to support various use cases

  • Choice of layouts:

    • A “simple search” layout consisting of a search form based on the Dynamo Entity Model and a results table

    • An edit form that can be used to create new entities or modify existing ones

    • A split layout that can be used to display a results table and an input form next to each other. The results table can optionaly be filtered with a simple quick search or a search popup dialog

    • A search dialog to filter and select one or more entities from a potential large resultset

    • The FlexibleSearchLayout is a search layout that allows the user to create complex search query’s by adding/removing search criteria

    • The EntityPopupDialog is a popup dialog that allows the user to create or modify a single entity.

  • Automatic form filler using AI (LLM), copy your unstructured data to the form filler dialog and the AI will interpret the data and automatically translate, transform, convert and fill in the form fields

  • Automatic generation of applicable components for fields based on datatype and/or declaration:

    • Nested detail table (children)

    • Dropdown (n-1 relationship to other entity)

    • Multi-select (n-m relationship to other entity)

    • Lookup field (n-1 relationship to other entity)

    • Option to edit element collections (children)

    • Check boxes

    • Date picker

  • The functionality to dynamically replace the standard Dynamo input components by custom components

  • Functionality to search, filter, add, update and remove entities

  • File upload component

  • Fields can be grouped together in panels or tabs

  • Field ordering can be declared

  • Integrated bean validation with fields in UI

  • Custom validation support in UI

  • Paging and Lazy loading of large resultsets

  • Default transformation of Enum values to select component

  • Automatic link generation to navigate from a child relationship to the applicable detail form

  • The option to post-process the edit form after the components have been created (e.g. to add dependencies between fields)

  • The option to export data from a table to CSV or Excel

  • Nested entities and entity collections are supported

  • Can be styled by using themes or custom

Backend features

  • Default services API for business logic (extensible)

  • Default data access layer (extensible)

  • No need to write query or persistence logic (extensible)

  • Simple but powerful fluent filter logic

  • Paging and Lazy loading of large resultsets

  • Entity query optimization by the use of declarative (fetch)joins which promotes the JPA advise of lazy loading of relationships

  • Search results can furthermore be limited to prevent large results and timeouts

  • Services are transactional by default

Additonal (optional) features

  • The MultiDomainEditLayout is a layout that can be used to easily edit multiple types of simple domain (code table) entities and includes a default backend implementation with JPA entities and entity model

  • The Hibernate envers module adds supports history on entities

  • The parameters module adds form to manage parameter lists

Differences between the Dynamo versions

Feature Dynamo V3.x Dynamo V4.x

UI Framework

Vaadin

Angular

UI Widgets

Vaadin

PrimeNG

UI Widget generation: Auto-complete (n-1 relationship to other entity)

No

Yes

UI Widget generation: Radio buttons

No

Yes

Out of the box WCAG compliance

Yes

Yes

Default REST API for entity CRUDS

No

Yes

Default REST API for entity model

No

Yes

Declarative security for pages

Yes

Yes

Declarative security for REST

No

Yes

Declarative security for Menus

Yes

No

Replacing generated UI components

Subclass layout component

Declarative

Custom actions as buttons with dialog

Subclass layout component, but not intuitive

Easy and concise with code and declaration

Documentation

Documentation of Dynamo can be found here.

Interested in contributing? Check our wiki!