Difference between revisions of "OS.bee Software Factory Unique Selling Propositions"

From OS.bee documentation
Jump to: navigation, search
(Created page with "== Abstract == OS.bee is a low-code model-driven software-factory, using over 20 Domain Specific Languages (DSL) to generate large-scale business web-applications. Each DSL c...")
 
Line 1: Line 1:
== Abstract ==
+
OS.bee Features
  
OS.bee is a low-code model-driven software-factory, using over 20 Domain Specific Languages (DSL) to generate large-scale business web-applications. Each DSL contains a grammar for a required application-layer. A DSL hides complexity from successors, thereby enabling parallel modelling of domain requirements by multiple designers as they don’t need to know the domain logic they build upon. A model created with a DSL creates executable code, structured data and configuration settings or is interpreted by a renderer during runtime. The language of each DSL uses a grammar that makes the created model easy to understand and forms a requirement specification on its layer. The overall hierarchy can be browsed through at any time and gives a good understanding of the whole application in nearly natural English language. A DSL can also be studied by its syntactical graph. The creation of a model is a guided process through the syntax graph where the designer benefits from content assistance, code completion, quick fix, syntax colorizing, outline, formatting and validation. Many DSLs define metadata to be used by subsequent DSL to increase the leverage of definitions at a basic level. All element names defined by a DSL are automatically extracted to localization files for translation to open foreign markets for the resulting application. The ratio between the generated lines of code versus the numbers of lines in a model is 8 on average.  Development speed improves by a similar factor. Dependencies between models reveal inconsistencies immediately while modifying and prevent generating code until these are resolved. Therefore turnaround cycles are short, errors are easy to discover and prototypes materialize in a very short time. Some DSL generate against famous open-source frameworks like EclipseLink, Smooks, Mondrian, Vaadin or jBPM thus enabling non-developers to use complex frameworks without deeper knowledge of their API. OS.bee inherits the features of the embedded frameworks and makes them easy to exploit for specialists of a domain not necessarily being software developer.
+
= Abstract =
  
== Modeling ==
+
OS.bee is a low-code model-driven software-factory, using over 20 Domain Specific Languages (DSL) to generate large-scale business web-applications. Each DSL contains a grammar for a required application-layer. A DSL hides complexity from successors, thereby enabling parallel modelling of domain requirements by multiple designers as they don’t need to know the domain logic they build upon. A model created with a DSL creates executable code, structured data and configuration settings or is interpreted by a renderer during runtime. The language of each DSL uses a grammar that makes the created model easy to understand and forms a requirement specification on its layer. The overall hierarchy can be browsed through at any time and gives a good understanding of the whole application in nearly natural English language. A DSL can also be studied by its syntactical graph. The creation of a model is a guided process through the syntax graph where the designer benefits from content assistance, code completion, quick fix, syntax colorizing, outline, formatting and validation. Many DSLs define metadata to be used by subsequent DSL to increase the leverage of definitions at a basic level. All element names defined by a DSL are automatically extracted to localization files for translation to open foreign markets for the resulting application. The ratio between the generated lines of code versus the numbers of lines in a model is 8 on average. Development speed improves by a similar factor. Dependencies between models reveal inconsistencies immediately while modifying and prevent generating code until these are resolved. Therefore turnaround cycles are short, errors are easy to discover and prototypes materialize in a very short time. Some DSL generate against famous open-source frameworks like EclipseLink, Smooks, Mondrian, Vaadin or jBPM thus enabling non-developers to use complex frameworks without deeper knowledge of their API. OS.bee inherits the features of the embedded frameworks and makes them easy to exploit for specialists of a domain not necessarily being software developer.
  
=== Data-type (type system layer) ===
+
= DSL Modeling =
*Primitive Types (int, double, etc.)
+
*Object Types (String, Date, etc.)
+
*Blob
+
Store and retrieve any document or image type in binary form
+
*Auto-sizing  Images
+
Additionally stores images of definable size to experience better performance while rendering
+
*Formatted types
+
Dates and times in any localized form
+
Dates and times in any format (time only, date only, short and long forms, custom pattern, etc.)
+
Currencies in any localized form
+
*Validated types with adjustable severity message
+
Date in past/future
+
Not null
+
Not duplicate
+
Range values
+
Min/max length
+
*Slider types
+
Min/max values
+
*Masked types
+
Number, Hexadecimal, Capitalized
+
Input pattern (e.g. Phone Numbers (###) ###-####)
+
*Password
+
*Suggestion types
+
While typing some characters, a sorted list of suggestions pops up for selection
+
*Programmable Converters
+
Text-to-Image
+
Number-to-Text/Image
+
Value-to-CSS Style
+
Units of measurement
+
*Rich text editor using HTML markups
+
*Text area
+
  
=== Entity (Object relational mapper layer) ===
+
== Persistence ==
 +
 
 +
Persistence refers to object and process characteristics that continue to exist even after the process that created it ceases or the machine it is running on is powered off. When an object or state is created and needs to be persistent, it is saved in a non-volatile storage location, like a hard drive, versus a temporary file or volatile random access memory.
 +
 
 +
=== Data-type ===
 +
 
 +
A data type is a classification that specifies which type of value a variable has and what type of mathematical, relational or logical operations can be applied to it without causing an error. Data types also hold metadata for higher-level DSLs so they can apply additional functionality to a field using this data type.
 +
 
 +
 
 +
* Primitive Types (int, double, etc.)
 +
* Object Types (String, Date, etc.)
 +
* Blob
 +
** Store and retrieve any document or image type in binary form
 +
* Auto-sizing Images
 +
** Additionally stores images of definable size to experience better performance while rendering
 +
* Formatted types
 +
** Dates and times in any localized form
 +
** Dates and times in any format (time only, date only, short and long forms, custom pattern, etc.)
 +
** Currencies in any localized form
 +
* Validated types with adjustable severity message
 +
** Date in past/future
 +
** Not null
 +
** Not duplicate
 +
** Range values
 +
** Min/max length
 +
* Slider types
 +
** Min/max values
 +
* Masked types
 +
** Number, Hexadecimal, Capitalized
 +
** Input pattern (e.g. Phone Numbers (###) ###-####)
 +
** Password
 +
* Suggestion types
 +
** While typing some characters, a sorted list of suggestions pops up for selection
 +
* Programmable Converters
 +
** Text-to-Image
 +
** Number-to-Text/Image
 +
** Value-to-CSS Style
 +
** Units of measurement
 +
* Rich text editor using HTML markups
 +
* Text area
 +
 
 +
 
 +
 
 +
=== Entity ===
 +
 
 +
An entity (-type) is a model of metadata for a single unique object in the real world. For example a person, organization, object type, or concept about which information is stored. Together with its attributes (or properties) it describes information that is being mastered. An entity typically corresponds to one or several related tables in database. An attribute is a characteristic or trait of an entity that describes the entity, for example, the Person entity type has the Date of Birth attribute.
 +
 
 +
 
 +
* Simple Entity
 +
* Mapped super-classes
 +
** Complement attributes in every entity using this
 +
* Inheritance
 +
** Specialized classes for special purpose
 +
* References and their opposites
 +
* References with constraints
 +
* Embeddable beans
 +
* Number generators UUID or ID
 +
* Separated persistence-units capable of using multiple databases simultaneously
 +
* All multiplicities (0..1, 0..n,1..1,1..n,*)
 +
* Indexes unique and non-unique
 +
* Validated uniqueness
 +
* Domain-key annotation for lookups
 +
* Methods for calculated attributes
 +
* Lifecycle controlled method invoking (by PostLoad, PrePersist, etc.)
 +
* Affected changes listeners
 +
* Localizable Enumerations with images
 +
* Creation and last modification information
 +
* Transient data
 +
* Synthetic attributes built by lifecycle methods either transient or persistent
 +
* Historicized data
 +
* Temporal data
 +
* Versioned data
 +
* Definable Runtime data filter
 +
* Programmable Validators
 +
* Nested Filter attributions over multiple references
 +
* Abstraction of database vendor specific implementations
 +
 
 +
 
 +
 
 +
=== Data transfer object (DTO) ===
 +
 
 +
A DTO is an object that carries data between processes. DTOs are simple objects that do not contain any business logic but may contain serialization and deserialization mechanisms for transferring data.
 +
 
 +
 
 +
* Independent nested data container
 +
* Automatically generated for entities
 +
* Automatically mapped by entity data
 +
* Editable sub- or supersets for entities
 +
* Transient data container
 +
* Nested objects automatically synchronized
 +
* Nested properties access through dot expressions
 +
* Used for services, processes, functions and renderers
 +
* Dirty state aware
 +
* Access restrictions on DTO and property granularity controlled by security layer
 +
 
 +
 
 +
 
 +
=== DTO Service ===
 +
 
 +
A DTO service abstracts and encapsulates all access to the data source. It manages the connection with the data source to obtain and store data and implements the access mechanism required to work with the data source. The data source could be a persistent store like an RDBMS, or a business service accessed via REST or SOAP.
 +
 
 +
 
 +
* Data storage and retrieval suitable for DTO
 +
* Nested Transactions and Lock-modes
 +
* Global transactions
 +
* Object Oriented Query engine
 +
* Low level Java Persistence Query Language method declarations (e.g. getTotal(), getAverage(), …)
 +
* Injectable and declarative service
 +
* Used for services, processes, functions and renderers
 +
* Session scoped Entity Manager
 +
* Thread safe persistence-unit bound Entity Manager Factory
 +
 
 +
 
 +
 
 +
=== Data-Interchange ===
 +
 
 +
Data Interchange is the endpoint-to-endpoint exchange of business documents in a standard electronic format between business partners or computer systems.
 +
 
 +
 
 +
* Smooks and FreeMarker implementation
 +
* Nested entity import- and export-paths
 +
* Localized formatters on data
 +
* Supports encoding
 +
* XML and CSV formats
 +
* All EDI messages
 +
* Automatically set export- and import markers for database
 +
* Filtered exports
 +
* Bulk insert/update
 +
* Progress bar
 +
* Generated import and export dashboard
 +
* Generated lookup queries to embed relational data
 +
* Merge or persist external data
 +
* Import images of different mime-types into blobs via filename pattern
 +
* Usage of expressions
 +
* Free attribute mappings
 +
 
 +
 
 +
 
 +
=== Signal ===
 +
 
 +
Signal processes events coming from file-systems. If a file that matches a given filename pattern is created, modified or deleted then an event is received and the modelled actions will be called. Signal also emits events for recurring things like a certain weekday and time is reached and executes the modelled actions.
 +
 
 +
 
 +
* File watcher for all file activities working on all operating systems
 +
* Free filename pattern to watch for
 +
 
 +
* Trigger Data-Interchange
 +
* Definable export or import job-chain
 +
* Synchronously or asynchronously execution (depending on import relationship)
 +
* Quartz implementation for scheduled Data-Interchange export-jobs
 +
 
 +
 
 +
 
 +
=== Entity-Mock ===
 +
 
 +
* Generates fake data looking realistic
 +
 
 +
* Mapping of roles to positions and multi-positions
 +
 
 +
* Rule-based data composition (e.g. email address)
 +
* Rule-based attribute generators for every data-type from data composition, or
 +
** Randomly
 +
** Ranges
 +
** Picks from a given list
 +
** Dates in the past with offset and limit (for birthdays)
 +
** Dates in the future with offset and limit
 +
* Composes objects from rule-based attribute generators (e.g. a person, a company, etc.)
 +
* Composes object-trees from composed objects
 +
* Creates relationships between objects using a given probability
 +
* Creates mass data (e.g. sales data)
 +
* Imports fixed data via Data-Interchange and embeds it
 +
* Used mainly for quick-setup applications using a H2 database
 +
* Exposes mock data services to be executed before any login-attempt
 +
* Persists into all supported database products
 +
* Can be executed at every server-start or once
 +
 
 +
 
 +
 
 +
== Business intelligence ==
 +
 
 +
Business Intelligence (BI) refers to technologies, applications and practices for the collection, integration, analysis, and presentation of business information. The purpose of Business Intelligence is to support better business decision making. Essentially, Business Intelligence systems are data-driven Decision Support Systems (DSS). Business Intelligence is sometimes used interchangeably with briefing books, report and query tools and executive information systems.
 +
 
 +
=== Cube ===
 +
 
 +
A cube is a method of storing data in a multidimensional form, generally for reporting purposes. In cubes, data (measures) are categorized by dimensions. Cubes are pre-summarized across dimensions to drastically improve query time over relational databases. The query language used to interact and perform tasks with cubes is multidimensional expressions (MDX).
 +
 
 +
 
 +
* Mondrian OLAP for MDX queries implementation
 +
* Cubes, dimensions, hierarchies, levels, members, and measures
 +
* Defines a multi-dimensional database
 +
* Contains a logical model, and a mapping of this model onto the physical entity model
 +
 
 +
 
 +
 
 +
=== DataMart ===
 +
 
 +
A data mart is a subject-oriented archive that stores data and uses the retrieved set of information to assist and support the requirements involved within a particular business function or department. Data marts improve end-user response time by allowing users to have access to the specific type of data they need to view most often by providing the data in a way that supports the collective view of a group of users.
 +
 
 +
 
 +
* Common layer for data-warehouse queries
 +
* Simplification of any kind of query against all available data sources
 +
* Tailored queries and aggregates for different interest-groups
 +
* Definition of complex multidimensional expressions (MDX) with a simple grammar
 +
* Sophisticated analytic functions easy to use
 +
* Online analytical processing built in
 +
* Access to runtime data of the Business Process management engine
 +
* Multi-purpose results for processes, reports, score cards and charts
 +
* Definable navigation trees (join-paths)
 +
* Definable single- and multi-selection filters on any leaf of the query tree
 +
* Access restrictions on entity and attribute granularity controlled by security layer
 +
 
 +
 
 +
 
 +
=== Function-Library ===
 +
 
 +
* Xbase implementation
 +
* UOMo implementation
 +
* Creates operational objects and methods
 +
* Grouped by application field
 +
** Converter for model-presentation conversions
 +
*** Value to image
 +
*** Value to value
 +
*** Value to style (background color, text color, font-style, etc.)
 +
*** Value to unit of measurement based value
 +
*** Between measurement systems and unit of measurement families
 +
** State-Machine
 +
*** Operations
 +
*** Functions
 +
*** Guards
 +
*** Full access to state-machine controls
 +
** Toolbar Action
 +
*** Can execute validation (enable/disable operation)
 +
*** Execute any operation
 +
** Validation on DTO
 +
** Business logic implementation for BPM
 +
*** Functions callable in system tasks
 +
*** Ratings for gateways
 +
*** Tests for gateways
 +
** Calculations e.g. for
 +
*** Currencies
 +
*** Lengths
 +
*** Areas
 +
** Posting operations
 +
* Exposes injectable and declarative service
 +
* Store and retrieve data from DTO
 +
* Full access to all JVM objects
 +
 
 +
 
 +
 
 +
=== State-Machine ===
 +
 
 +
* Implementation of business behavior
 +
* Defines states and their transitions
 +
* Transitions are triggered by events
 +
* Transitions are guarded by functions from Function-Library
 +
* Actions to be executed before and after transitioning from Function-Library
 +
* Has things to control
 +
** Database objects (DTO)
 +
** Database filters
 +
** Visibility or enabling of
 +
*** Buttons (UI)
 +
*** Layouts (UI)
 +
*** Other components (UI)
 +
** Peripheral devices (interfaces JavaPOS)
 +
*** Printers
 +
*** Line displays
 +
*** Cash drawers
 +
*** Payment terminals
 +
*** Signature pads
 +
** Slave browsers (external displays, etc.)
 +
* Receives events from
 +
** Buttons clicked
 +
** UI selections
 +
** Peripherals (printer out of paper, etc.)
 +
** Schedulers
 +
 
 +
 
 +
 
 +
=== BLiP (Business Logic implementation Platform) ===
 +
 
 +
* Implements jBPM
 +
* Integrates a BPMN editor at design-time
 +
* Connects tasks of BPM to business logic of Function-Library
 +
* Controls sequence-flow through business logic of Function-Library
 +
* Stores and retrieves process save-points
 +
* Logs all process activities of system and user
 +
* Exposes BPM data and events to UI elements
 +
* Stores and retrieves workload data using DTO
 +
 
 +
 
 +
 
 +
== Presentation ==
 +
 
 +
The presentation layer ensures that the communications that pass through it are in the appropriate form for the recipient application. It is responsible for the delivery and formatting of information to the application layer for further processing or display. It relieves the application layer of concern regarding syntactical differences in data representation within the end-user systems.
 +
 
 +
=== Table ===
 +
 
 +
A table is a data structure that organizes information into rows and columns. It can be used to both store and display data in a structured format.
 +
 
 +
 
 +
* Editable cells
 +
* Scorecard elements
 +
** Rule-based colorizing of cell background and textcolor
 +
** Mixed in rule-based icons
 +
** Rule-based styling of cells
 +
** Rule-based tooltips
 +
* Data from DataMart or DTO
 +
* Pivot presentation
 +
* Multidimensional presentation on nested tab-sheets
 +
* Filtering, sorting, swapping and hiding of columns
 +
* Stores swapping and hiding per user
 +
* 3 different row numbering modes
 +
* Row selection synchronizes other views in scope
 +
 
 +
 
 +
 
 +
=== Chart ===
 +
 
 +
A chart is a diagram, picture, or graph which is intended to make information easier to understand. It is a symbolic representation of information according to some visualization technique.
 +
 
 +
 
 +
* Multiple data series with selectable colorizing
 +
* Series switchable from legend
 +
* Bar, line, pie, donut, bubble and gauge presentation
 +
* Animated, stacked, shaded and xy-swapped charts
 +
* Zoom and trend-line function
 +
* Tooltips for series and data points with absolute value
 +
* Selectable positioning relative to cursor for tooltips
 +
* Selectable legend placement
 +
* Collapsible tree presentation on hierarchical data
 +
* Date axes with customizable formatting
 +
* Up to 9 individually scalable Y axes
 +
* Rotated axis text
 +
* Category rendering either linear, logarithmic, timeline or as pyramid
 +
* Downloadable SVG image
 +
 
 +
 
 +
 
 +
=== Report ===
 +
 
 +
A document containing information organized in a graphic or tabular form, prepared on ad hoc, periodic, recurring, regular, or as required basis. Reports may refer to specific periods, events, occurrences, or subjects, and are presented in printed form.
 +
 
 +
 
 +
* Actuate Birt implementation
 +
* Definition of reusable layout metadata
 +
** All units of measurement for layouts
 +
** Definition of fonts and colors
 +
** Definition of formatters for
 +
*** Currencies
 +
*** Date and time
 +
** Page sizes (A4, A5, etc.)
 +
** Orientations (Landscape, portrait)
 +
** Margins
 +
** Paddings
 +
** Alignments
 +
* Output as HTML or PDF
 +
* Ability to reference multiple DataMarts for header, footer and details
 +
* Rendering of blob-images
 +
* External CSS usable
 +
* Defines grids and cells
 +
* Direct printing to preselected output medias per user or per location and report
 +
* Rule-based visibility of cells
 +
* Aggregates for grouping
 +
* Rule-based page break
 +
* Rule-based colorizing and styling
 +
* URL-based or embedded images
 +
* Auto-texts (page number etc.)
 +
 
 +
 
 +
 
 +
=== Topology ===
 +
 
 +
Topology is designed for representing simple geographical features, along with their non-spatial attributes. It includes geo-json points (addresses and locations), line strings (streets, highways and boundaries), polygons (countries, provinces, tracts of land), and multi-part collections of these types.
 +
 
 +
 
 +
* D3 implementation
 +
* Render predefined maps of U.S.A., Germany, Spain… the World
 +
* Select states, countries, regions or cities to synchronize other views in scope
 +
* Render geo-json data from blobs to show boundaries of plots of land, buildings or floor plans
 +
 
 +
 
 +
 
 +
=== UI ===
 +
 
 +
* Models interactive views
 +
* Connects to data-sources of any kind (DTO, Bean, JVM object, etc.)
 +
* Nests different kinds of layouts to a complex surface (horizontal, vertical, form, grid)
 +
* Adds components to layouts (buttons, text-fields, tables, images, etc.)
 +
* Binds components to properties of data-sources
 +
* Rule-based visibility processor
 +
* Navigation widgets for small geometry mobile devices
 +
 
 +
 
 +
 
 +
=== Dialog ===
 +
 
 +
* Renders interactive views
 +
* Either references a predefined UI model or a model inferred from a DTO
 +
* Links the view to a toolbar
 +
* Renders different modes
 +
** Normal, to be used inside perspectives
 +
** Embedded, to be used inside menues
 +
** Stateful, inside perspectives, and controlled by a state-machine
 +
** Mobile, to be used on small geometry mobile devices with navigation widgets
 +
* Renders in 1 to N columns of components
 +
* Groups components by using entity metadata
 +
* Renders owning relationships as combo-boxes
 +
* Renders member relationships as tables on tab-sheets
 +
* Implements blob up- and downloading
 +
 
 +
 
 +
 
 +
=== Perspective ===
 +
 
 +
* Based on the Eclipse 4 application model
 +
* Presents a 360° view on the task to the user
 +
* Divides the usable screen area in resizable containers
 +
* Nests windows, perspective-stacks, perspectives, containers, part-stacks and parts containing views, and toolbars
 +
* Stores and retrieves resized areas for each user
 +
* Supports drag and drop
 +
* Event dispatching system to synchronize data, actions, focus and more between views
 +
* References all types of views (dialogs, tables, charts, reports …) to set up a dashboard
 +
* Modifiable layout at runtime using the designer mode for permitted users
 +
* Connects to user tasks of BPM
 +
 
 +
 
 +
 
 +
=== Action ===
 +
 
 +
* Links action-buttons
 +
** To business logic of Function-Library to be executed
 +
*** Synchronously
 +
*** Asynchronously as background process
 +
** To Data-Interchange import- or export tasks
 +
** To BPM start events
 +
** To actions to trigger
 +
*** Save, delete, download, print etc.
 +
*** Advance focus to next or previous part
 +
* Links action-buttons to business logic of Function-Library to be
 +
** Enabled
 +
** Disabled depending on data context
 +
* Defines commands to control the application and trigger actions
 +
* Assigns keyboard short-cuts to commands
 +
* Connects to Message for fail or success messages about executed actions
 +
 
 +
 
 +
 
 +
=== Menu ===
 +
 
 +
* Combines Perspectives, BPM start events, embedded dialogs and tables, configuration settings and other informative screens to a tree-organized menu
 +
* Pops up anytime it is needed, and consumes no space on the screen
 +
 
 +
 
 +
 
 +
=== Message ===
 +
 
 +
* Defines messages to notify a user about events and usage violations
 +
* Can be tracked by log entries
 +
* Placeholders for parametrizing messages
 +
* Can have a severity
 +
 
 +
 
 +
 
 +
== Security ==
 +
 
 +
=== Authorization ===
 +
 
 +
* Role-based authorization system
 +
* Grant access to entities, beans and DTO
 +
* Grant access to CRUD operations (create, read, update, delete)
 +
* Grant access to modification of relationships (link, unlink references)
 +
* Vetoes per attribute for visibility, editability and enabling
 +
* Grant access to start a process
 +
* Grant access working on a user task
 +
 
 +
 
 +
 
 +
=== Organization ===
 +
 
 +
* Hierarchies of positions, multi-positions, and sub-organizations
 +
* Maps roles to positions
 +
* Definition of levels of collaboration if sharing the same roles
 +
* Derives an organigram of each hierarchy to be rendered at runtime
 +
 
 +
 
 +
 
 +
= Services =
 +
 
 +
== Authentication ==
 +
 
 +
== Persistence ==
 +
 
 +
== Translation ==
 +
 
 +
== Metadata ==
 +
 
 +
== Theme Resources ==

Revision as of 13:13, 29 June 2018

OS.bee Features

Abstract

OS.bee is a low-code model-driven software-factory, using over 20 Domain Specific Languages (DSL) to generate large-scale business web-applications. Each DSL contains a grammar for a required application-layer. A DSL hides complexity from successors, thereby enabling parallel modelling of domain requirements by multiple designers as they don’t need to know the domain logic they build upon. A model created with a DSL creates executable code, structured data and configuration settings or is interpreted by a renderer during runtime. The language of each DSL uses a grammar that makes the created model easy to understand and forms a requirement specification on its layer. The overall hierarchy can be browsed through at any time and gives a good understanding of the whole application in nearly natural English language. A DSL can also be studied by its syntactical graph. The creation of a model is a guided process through the syntax graph where the designer benefits from content assistance, code completion, quick fix, syntax colorizing, outline, formatting and validation. Many DSLs define metadata to be used by subsequent DSL to increase the leverage of definitions at a basic level. All element names defined by a DSL are automatically extracted to localization files for translation to open foreign markets for the resulting application. The ratio between the generated lines of code versus the numbers of lines in a model is 8 on average. Development speed improves by a similar factor. Dependencies between models reveal inconsistencies immediately while modifying and prevent generating code until these are resolved. Therefore turnaround cycles are short, errors are easy to discover and prototypes materialize in a very short time. Some DSL generate against famous open-source frameworks like EclipseLink, Smooks, Mondrian, Vaadin or jBPM thus enabling non-developers to use complex frameworks without deeper knowledge of their API. OS.bee inherits the features of the embedded frameworks and makes them easy to exploit for specialists of a domain not necessarily being software developer.

DSL Modeling

Persistence

Persistence refers to object and process characteristics that continue to exist even after the process that created it ceases or the machine it is running on is powered off. When an object or state is created and needs to be persistent, it is saved in a non-volatile storage location, like a hard drive, versus a temporary file or volatile random access memory.

Data-type

A data type is a classification that specifies which type of value a variable has and what type of mathematical, relational or logical operations can be applied to it without causing an error. Data types also hold metadata for higher-level DSLs so they can apply additional functionality to a field using this data type.


  • Primitive Types (int, double, etc.)
  • Object Types (String, Date, etc.)
  • Blob
    • Store and retrieve any document or image type in binary form
  • Auto-sizing Images
    • Additionally stores images of definable size to experience better performance while rendering
  • Formatted types
    • Dates and times in any localized form
    • Dates and times in any format (time only, date only, short and long forms, custom pattern, etc.)
    • Currencies in any localized form
  • Validated types with adjustable severity message
    • Date in past/future
    • Not null
    • Not duplicate
    • Range values
    • Min/max length
  • Slider types
    • Min/max values
  • Masked types
    • Number, Hexadecimal, Capitalized
    • Input pattern (e.g. Phone Numbers (###) ###-####)
    • Password
  • Suggestion types
    • While typing some characters, a sorted list of suggestions pops up for selection
  • Programmable Converters
    • Text-to-Image
    • Number-to-Text/Image
    • Value-to-CSS Style
    • Units of measurement
  • Rich text editor using HTML markups
  • Text area


Entity

An entity (-type) is a model of metadata for a single unique object in the real world. For example a person, organization, object type, or concept about which information is stored. Together with its attributes (or properties) it describes information that is being mastered. An entity typically corresponds to one or several related tables in database. An attribute is a characteristic or trait of an entity that describes the entity, for example, the Person entity type has the Date of Birth attribute.


  • Simple Entity
  • Mapped super-classes
    • Complement attributes in every entity using this
  • Inheritance
    • Specialized classes for special purpose
  • References and their opposites
  • References with constraints
  • Embeddable beans
  • Number generators UUID or ID
  • Separated persistence-units capable of using multiple databases simultaneously
  • All multiplicities (0..1, 0..n,1..1,1..n,*)
  • Indexes unique and non-unique
  • Validated uniqueness
  • Domain-key annotation for lookups
  • Methods for calculated attributes
  • Lifecycle controlled method invoking (by PostLoad, PrePersist, etc.)
  • Affected changes listeners
  • Localizable Enumerations with images
  • Creation and last modification information
  • Transient data
  • Synthetic attributes built by lifecycle methods either transient or persistent
  • Historicized data
  • Temporal data
  • Versioned data
  • Definable Runtime data filter
  • Programmable Validators
  • Nested Filter attributions over multiple references
  • Abstraction of database vendor specific implementations


Data transfer object (DTO)

A DTO is an object that carries data between processes. DTOs are simple objects that do not contain any business logic but may contain serialization and deserialization mechanisms for transferring data.


  • Independent nested data container
  • Automatically generated for entities
  • Automatically mapped by entity data
  • Editable sub- or supersets for entities
  • Transient data container
  • Nested objects automatically synchronized
  • Nested properties access through dot expressions
  • Used for services, processes, functions and renderers
  • Dirty state aware
  • Access restrictions on DTO and property granularity controlled by security layer


DTO Service

A DTO service abstracts and encapsulates all access to the data source. It manages the connection with the data source to obtain and store data and implements the access mechanism required to work with the data source. The data source could be a persistent store like an RDBMS, or a business service accessed via REST or SOAP.


  • Data storage and retrieval suitable for DTO
  • Nested Transactions and Lock-modes
  • Global transactions
  • Object Oriented Query engine
  • Low level Java Persistence Query Language method declarations (e.g. getTotal(), getAverage(), …)
  • Injectable and declarative service
  • Used for services, processes, functions and renderers
  • Session scoped Entity Manager
  • Thread safe persistence-unit bound Entity Manager Factory


Data-Interchange

Data Interchange is the endpoint-to-endpoint exchange of business documents in a standard electronic format between business partners or computer systems.


  • Smooks and FreeMarker implementation
  • Nested entity import- and export-paths
  • Localized formatters on data
  • Supports encoding
  • XML and CSV formats
  • All EDI messages
  • Automatically set export- and import markers for database
  • Filtered exports
  • Bulk insert/update
  • Progress bar
  • Generated import and export dashboard
  • Generated lookup queries to embed relational data
  • Merge or persist external data
  • Import images of different mime-types into blobs via filename pattern
  • Usage of expressions
  • Free attribute mappings


Signal

Signal processes events coming from file-systems. If a file that matches a given filename pattern is created, modified or deleted then an event is received and the modelled actions will be called. Signal also emits events for recurring things like a certain weekday and time is reached and executes the modelled actions.


  • File watcher for all file activities working on all operating systems
  • Free filename pattern to watch for
  • Trigger Data-Interchange
  • Definable export or import job-chain
  • Synchronously or asynchronously execution (depending on import relationship)
  • Quartz implementation for scheduled Data-Interchange export-jobs


Entity-Mock

  • Generates fake data looking realistic
  • Mapping of roles to positions and multi-positions
  • Rule-based data composition (e.g. email address)
  • Rule-based attribute generators for every data-type from data composition, or
    • Randomly
    • Ranges
    • Picks from a given list
    • Dates in the past with offset and limit (for birthdays)
    • Dates in the future with offset and limit
  • Composes objects from rule-based attribute generators (e.g. a person, a company, etc.)
  • Composes object-trees from composed objects
  • Creates relationships between objects using a given probability
  • Creates mass data (e.g. sales data)
  • Imports fixed data via Data-Interchange and embeds it
  • Used mainly for quick-setup applications using a H2 database
  • Exposes mock data services to be executed before any login-attempt
  • Persists into all supported database products
  • Can be executed at every server-start or once


Business intelligence

Business Intelligence (BI) refers to technologies, applications and practices for the collection, integration, analysis, and presentation of business information. The purpose of Business Intelligence is to support better business decision making. Essentially, Business Intelligence systems are data-driven Decision Support Systems (DSS). Business Intelligence is sometimes used interchangeably with briefing books, report and query tools and executive information systems.

Cube

A cube is a method of storing data in a multidimensional form, generally for reporting purposes. In cubes, data (measures) are categorized by dimensions. Cubes are pre-summarized across dimensions to drastically improve query time over relational databases. The query language used to interact and perform tasks with cubes is multidimensional expressions (MDX).


  • Mondrian OLAP for MDX queries implementation
  • Cubes, dimensions, hierarchies, levels, members, and measures
  • Defines a multi-dimensional database
  • Contains a logical model, and a mapping of this model onto the physical entity model


DataMart

A data mart is a subject-oriented archive that stores data and uses the retrieved set of information to assist and support the requirements involved within a particular business function or department. Data marts improve end-user response time by allowing users to have access to the specific type of data they need to view most often by providing the data in a way that supports the collective view of a group of users.


  • Common layer for data-warehouse queries
  • Simplification of any kind of query against all available data sources
  • Tailored queries and aggregates for different interest-groups
  • Definition of complex multidimensional expressions (MDX) with a simple grammar
  • Sophisticated analytic functions easy to use
  • Online analytical processing built in
  • Access to runtime data of the Business Process management engine
  • Multi-purpose results for processes, reports, score cards and charts
  • Definable navigation trees (join-paths)
  • Definable single- and multi-selection filters on any leaf of the query tree
  • Access restrictions on entity and attribute granularity controlled by security layer


Function-Library

  • Xbase implementation
  • UOMo implementation
  • Creates operational objects and methods
  • Grouped by application field
    • Converter for model-presentation conversions
      • Value to image
      • Value to value
      • Value to style (background color, text color, font-style, etc.)
      • Value to unit of measurement based value
      • Between measurement systems and unit of measurement families
    • State-Machine
      • Operations
      • Functions
      • Guards
      • Full access to state-machine controls
    • Toolbar Action
      • Can execute validation (enable/disable operation)
      • Execute any operation
    • Validation on DTO
    • Business logic implementation for BPM
      • Functions callable in system tasks
      • Ratings for gateways
      • Tests for gateways
    • Calculations e.g. for
      • Currencies
      • Lengths
      • Areas
    • Posting operations
  • Exposes injectable and declarative service
  • Store and retrieve data from DTO
  • Full access to all JVM objects


State-Machine

  • Implementation of business behavior
  • Defines states and their transitions
  • Transitions are triggered by events
  • Transitions are guarded by functions from Function-Library
  • Actions to be executed before and after transitioning from Function-Library
  • Has things to control
    • Database objects (DTO)
    • Database filters
    • Visibility or enabling of
      • Buttons (UI)
      • Layouts (UI)
      • Other components (UI)
    • Peripheral devices (interfaces JavaPOS)
      • Printers
      • Line displays
      • Cash drawers
      • Payment terminals
      • Signature pads
    • Slave browsers (external displays, etc.)
  • Receives events from
    • Buttons clicked
    • UI selections
    • Peripherals (printer out of paper, etc.)
    • Schedulers


BLiP (Business Logic implementation Platform)

  • Implements jBPM
  • Integrates a BPMN editor at design-time
  • Connects tasks of BPM to business logic of Function-Library
  • Controls sequence-flow through business logic of Function-Library
  • Stores and retrieves process save-points
  • Logs all process activities of system and user
  • Exposes BPM data and events to UI elements
  • Stores and retrieves workload data using DTO


Presentation

The presentation layer ensures that the communications that pass through it are in the appropriate form for the recipient application. It is responsible for the delivery and formatting of information to the application layer for further processing or display. It relieves the application layer of concern regarding syntactical differences in data representation within the end-user systems.

Table

A table is a data structure that organizes information into rows and columns. It can be used to both store and display data in a structured format.


  • Editable cells
  • Scorecard elements
    • Rule-based colorizing of cell background and textcolor
    • Mixed in rule-based icons
    • Rule-based styling of cells
    • Rule-based tooltips
  • Data from DataMart or DTO
  • Pivot presentation
  • Multidimensional presentation on nested tab-sheets
  • Filtering, sorting, swapping and hiding of columns
  • Stores swapping and hiding per user
  • 3 different row numbering modes
  • Row selection synchronizes other views in scope


Chart

A chart is a diagram, picture, or graph which is intended to make information easier to understand. It is a symbolic representation of information according to some visualization technique.


  • Multiple data series with selectable colorizing
  • Series switchable from legend
  • Bar, line, pie, donut, bubble and gauge presentation
  • Animated, stacked, shaded and xy-swapped charts
  • Zoom and trend-line function
  • Tooltips for series and data points with absolute value
  • Selectable positioning relative to cursor for tooltips
  • Selectable legend placement
  • Collapsible tree presentation on hierarchical data
  • Date axes with customizable formatting
  • Up to 9 individually scalable Y axes
  • Rotated axis text
  • Category rendering either linear, logarithmic, timeline or as pyramid
  • Downloadable SVG image


Report

A document containing information organized in a graphic or tabular form, prepared on ad hoc, periodic, recurring, regular, or as required basis. Reports may refer to specific periods, events, occurrences, or subjects, and are presented in printed form.


  • Actuate Birt implementation
  • Definition of reusable layout metadata
    • All units of measurement for layouts
    • Definition of fonts and colors
    • Definition of formatters for
      • Currencies
      • Date and time
    • Page sizes (A4, A5, etc.)
    • Orientations (Landscape, portrait)
    • Margins
    • Paddings
    • Alignments
  • Output as HTML or PDF
  • Ability to reference multiple DataMarts for header, footer and details
  • Rendering of blob-images
  • External CSS usable
  • Defines grids and cells
  • Direct printing to preselected output medias per user or per location and report
  • Rule-based visibility of cells
  • Aggregates for grouping
  • Rule-based page break
  • Rule-based colorizing and styling
  • URL-based or embedded images
  • Auto-texts (page number etc.)


Topology

Topology is designed for representing simple geographical features, along with their non-spatial attributes. It includes geo-json points (addresses and locations), line strings (streets, highways and boundaries), polygons (countries, provinces, tracts of land), and multi-part collections of these types.


  • D3 implementation
  • Render predefined maps of U.S.A., Germany, Spain… the World
  • Select states, countries, regions or cities to synchronize other views in scope
  • Render geo-json data from blobs to show boundaries of plots of land, buildings or floor plans


UI

  • Models interactive views
  • Connects to data-sources of any kind (DTO, Bean, JVM object, etc.)
  • Nests different kinds of layouts to a complex surface (horizontal, vertical, form, grid)
  • Adds components to layouts (buttons, text-fields, tables, images, etc.)
  • Binds components to properties of data-sources
  • Rule-based visibility processor
  • Navigation widgets for small geometry mobile devices


Dialog

  • Renders interactive views
  • Either references a predefined UI model or a model inferred from a DTO
  • Links the view to a toolbar
  • Renders different modes
    • Normal, to be used inside perspectives
    • Embedded, to be used inside menues
    • Stateful, inside perspectives, and controlled by a state-machine
    • Mobile, to be used on small geometry mobile devices with navigation widgets
  • Renders in 1 to N columns of components
  • Groups components by using entity metadata
  • Renders owning relationships as combo-boxes
  • Renders member relationships as tables on tab-sheets
  • Implements blob up- and downloading


Perspective

  • Based on the Eclipse 4 application model
  • Presents a 360° view on the task to the user
  • Divides the usable screen area in resizable containers
  • Nests windows, perspective-stacks, perspectives, containers, part-stacks and parts containing views, and toolbars
  • Stores and retrieves resized areas for each user
  • Supports drag and drop
  • Event dispatching system to synchronize data, actions, focus and more between views
  • References all types of views (dialogs, tables, charts, reports …) to set up a dashboard
  • Modifiable layout at runtime using the designer mode for permitted users
  • Connects to user tasks of BPM


Action

  • Links action-buttons
    • To business logic of Function-Library to be executed
      • Synchronously
      • Asynchronously as background process
    • To Data-Interchange import- or export tasks
    • To BPM start events
    • To actions to trigger
      • Save, delete, download, print etc.
      • Advance focus to next or previous part
  • Links action-buttons to business logic of Function-Library to be
    • Enabled
    • Disabled depending on data context
  • Defines commands to control the application and trigger actions
  • Assigns keyboard short-cuts to commands
  • Connects to Message for fail or success messages about executed actions


Menu

  • Combines Perspectives, BPM start events, embedded dialogs and tables, configuration settings and other informative screens to a tree-organized menu
  • Pops up anytime it is needed, and consumes no space on the screen


Message

  • Defines messages to notify a user about events and usage violations
  • Can be tracked by log entries
  • Placeholders for parametrizing messages
  • Can have a severity


Security

Authorization

  • Role-based authorization system
  • Grant access to entities, beans and DTO
  • Grant access to CRUD operations (create, read, update, delete)
  • Grant access to modification of relationships (link, unlink references)
  • Vetoes per attribute for visibility, editability and enabling
  • Grant access to start a process
  • Grant access working on a user task


Organization

  • Hierarchies of positions, multi-positions, and sub-organizations
  • Maps roles to positions
  • Definition of levels of collaboration if sharing the same roles
  • Derives an organigram of each hierarchy to be rendered at runtime


Services

Authentication

Persistence

Translation

Metadata

Theme Resources