Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
Highly Customizable
Off-the-Shelf
Software
By Aleksey
Stukalov
Off-the-Shelf vs Custom
Software
Off-the-Shelf
Generic
Ideal Product
Implements good for all - common business
features
Also implements good only for me - distinctive
business features for individual client
Customization does not impede regular core product
updates
Adjust Model
Product
Customization
Adjust UI
Branching: Concept
Create a new branch for the customer
Customize whatever is needed in isolation
Branching: Customizability
Database Layer
Business Logic Layer
User Interface Layer
EAV: Concept
Deliver as is
Employ a mechanism to dynamically add custom
fields to entities on-the-fly
Mix with other techniques to enable Business Logic
customization
EAV: Customizability
Database Layer
User Interface Layer*
EAV: Limitations
Cannot be applied for Business Logic customization
May add complications to data utilization and
increases the database load
Plugins: Concept
Define Points of Customization (aka Extension
points)
Develop functional logic in separate (isolated)
artefacts (plugins or scripts)
Dynamically execute attached plugins in the predefined Customization Points
Plugins: Customizability
Database Layer
Business Logic Layer
User Interface Layer
Plugins: Limitations
Any layer can be customized to some extent, which is
naturally limited by Points of Customization
Architecture becomes more complicated
Just in case scattering of Customization Points
leads to poor code readability and hard debug
Ideal Framework
Requirements
Customization from Model to UI
CUBA Extensions
Implemented in the CUBA platform a high level
framework for enterprise software development
Based on the Open Inheritance pattern
Main Principles
Inherit all the features of an underlying product, using
it as a library
Contain only distinctive features, without copying
untouched product functionality
Support hierarchical customization model
Model Customization:
Challenge
Product implements User entity
Model Customization:
Implementation
Model Customization:
@Extends
Base entity use should be substituted globally across
the product:
Constructors
JPQL queries
Model traversal
Model Customization:
How it works
Object Factory always returns the deepest child using
metadata model
All JPQL queries are parsed, analyzed and modified
according to the metadata model
Model traversal substitution is reached by orm.xml
generation, where target-entity attribute refers to the
deepest child
UI Customization: How it
Product
CUBA extension
works
UI Customization: Product
Screen
UI Customization: Extension
Screen
Business Logic
Customization
Spring framework does it
no need to reinvent what
already exists!
Declare a @Component
Override in the
extension
Re-register the new
class in the extension
The new
implementation will be
used across the whole
product
Hierarchical Customization
Model
Summary
CUBA Platform
Based on mainstream
technologies
Implements:
CUBA Extensions
Scripting
Entity-Attribute-Value
Our Experience:
Sherlock Taxi Solution
Complete Taxi Management Solution
12 implementations
7 custom solutions based the product
2 ongoing customizations
Product is constantly being updated for all customers
bringing new product features.
Hands-on Labs
Try CUBA extensions at our Hands-on Labs, with the
help of our CUBA experts, you will develop a fullyfunctioned business application in just a couple of hours
When: Wednesday 28th October 2015
Where: Hilton-Franciscan Room A
Lab 1: 10:00 am - 12:00 pm
Lab 2: 12:30 pm - 2:30 pm
Lab 3: 3:00 pm - 5:00 pm
Thank you!
By Aleksey
Stukalov