OS.bee Software Factory Unique Selling Propositions
Contents
What is OS.bee about?
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 about 8-10. 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.
Why using OS.bee?
- You need a lot of unexpensive workstations for your employees to work with OS.bee applications.
- Work has to be done from everywhere, worldwide, in any language.
- Deployment of new versions shall be simple and be done at a single point to keep IT-costs at a minimum.
- Downtimes for updates or sandbox trials are undesired.
- You want to scale your applications effortless as you do with your business in means of functionality and security.
- You want a hierachically consistent and validated application any time, no matter what was just modified.
- You dislike vendor lock-in.
- Investments in software should be long-term decisions.
- You know that software never is a stand-alone solution, instead it must deeply integrate with existing solutions, machines and protocols.
- The Internet of Things is not just a verbal formula to you, you ought to use it.
- You know best about your business and want to be enabled to implement that knowledge by yourself into the application.
- You want that continuous improvement for applications shall be unexpensive.
- Open Source software is an advantage to you, not a risk.
- The software architecture should fulfill all state of the art design patterns and conform to object oriented design principles in order to be open to changes.
- It should be possible to hire software specialists all over the world needing a minimum of training on your software if it becomes necessary.
- Fast solutions to your business problems is your biggest concern.
- The software you use shall be fault tolerant and self-controlling.
- The business processes implemented in your software shall use standardized notations and be automatic, cooperative, save and easy to learn and modify.
- You know that enforcing business rules in your company is a success factor.
- On the other hand, your employees must feel comfortable with the software they use.
- It is quite clear to you that mature capabilities in all departments of your company can only be achieved through measurement and analysis and agile change management for business processs.
- If you need support, you can get it anytime. 24/7 by experts, from a forum, by examples and videos.
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
Mock objects are simulated objects that mimic the behavior of real objects in controlled ways. A programmer typically creates a mock object to test the behavior of some other object, in much the same way that a car designer uses a crash test dummy to simulate the dynamic behavior of a human in vehicle impacts.
- 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
A function-library is a collection of non-volatile resources used by other DSLs. It is a collection of implementations of behavior, written in Xbase, which has a well-defined interface by which the behavior is invoked. Library code is organized in such a way that it can be used by multiple programs that have no connection to each other, in other words it is completely independent of the calling logic.
- 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
- Converter for model-presentation conversions
- Exposes injectable and declarative service
- Store and retrieve data from DTO
- Full access to all JVM objects
State-Machine
A finite-state machine (FSM) is a mathematical model of computation. It is an abstract machine that can be in exactly one of a finite number of states at any given time. The FSM can change from one state to another in response to an event. The change from one state to another is called a transition. An FSM is defined by a list of its states, its initial state, and the conditions for each transition. These conditions are called guards as they guard the transition from unwanted invocation.
- 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)
BLiP focuses on improving corporate performance by managing business processes (BPM), business rules and business logic (Function-Library). It is a disciplined approach to identify, design, execute, document, measure, monitor, and control both automated and non-automated business processes to achieve consistent, targeted results aligned with an organization’s strategic goals. BPM involves the deliberate and collaborative definition, improvement, innovation, and management of end-to-end business processes that drive business results, create value, and enable an organization to meet its business objectives with more agility. BPM enables an enterprise to align its business processes to its business strategy, leading to effective overall company performance through improvements of specific work activities either within a specific department, across the enterprise, or between organizations.
- 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
The user interface (UI) is the space where interactions between humans and OS.bee occur. The goal of this interaction is to allow effective operation and control of the machine from the human end, whilst the machine simultaneously feeds back information that aids the operators' decision-making process.
- 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
The dialog is a composite UI which is composed by either an automatically generated UI or a UI created with means of the UI DSL and actions that are available through a toolbar. It also can be combined with an instance of State-Machine DSL if a sophisticated control over the visibility of components and a definable usage-sequence is needed.
- 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
A perspective is a visual container for a set of views (parts). These parts exist wholly within the perspective and are not shared. A perspective is also like a page within a book. It exists within a window along with any number of other perspectives and, like a page within a book, only one perspective is visible at any time.
- 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
A toolbar is a set of icons or buttons that are part of a software program's interface or an open window. A toolbar item is an object type that associates a command with a toolbar. This association places an icon on the toolbar in a specific location relative to the other toolbar icons on that toolbar. A command is linked to a specific action and can have a keyboard shortcut specification.
- 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
- To business logic of Function-Library to be executed
- 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
A menu is a list of options or commands presented to the user of OS.bee. A menu appears as a tree structure if the popup button besides the user-image is pressed. It is the user-specific point of entry into the OS.bee system. The user menu contains only those items that are needed to perform daily tasks.
- 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
Messages can be defined to improve the user experience as guidance through complex user interactions with the system. For security and monitoring reasons they can be logged.
- 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
Security's mission is to protect the companies and their assets (know-how, company data, personal and customer data and personal data, etc.) from hackers, crackers and robbers, and economic damage caused by breaches of confidentiality, manipulation, hardware failure and availability prevent the systems.
Authorization
Authorization is a security mechanism to determine access levels and user privileges related to system resources including files, services, data and application features. This is the process of granting or denying access to a resource which allows the user access to various resources based on the user's identity.
- 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
An organization is an entity comprising multiple people, such as an institution or an association that has a collective goal and is linked to an external environment. Its design specifies how goals are subdivided and reflected in subdivisions of the organization. An organization can be visualized in an organigram.
- 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
Authentication is a process that ensures and confirms a user’s identity. To do so, a user needs to provide some sort of proof of identity that the system understands and trust. There are multiple ways (realms) to do this:
- Security specific data access object, software component that talks to a backend data source.
- If you have usernames and password in LDAP, then you would have an LDAP Realm that would communicate with LDAP.
- Active Directory
- Kerberos
More features:* Remember-me
- Forgot password
- Protection against brute-force attacks
- MD5 salted and encrypted passwords
- Protection against debugging
- First commissioning support
- Session management
- Simple Single Sign-On (SSO)
- AES 128 encrypted cookie support
Persistence
Persistence service enabling small data-sources as well as large-scale installations:* XA data-source support for distributed transactions
- Built in global transaction manager
- JNDI Service
- Built in support for local databases
- Supports database providers from Application Server implementations like WebSphere or WebLogic Server
- Provides JDBC and catalog data for Mondrian
- Supports all compatible databases to EclipseLink like:
- Oracle
- Oracle JDBC
- MySQL
- PostgreSQL
- Derby
- DB2
- DB2 (mainframe)
- Microsoft SQL Server
- Sybase
- Informix
- SQL Anywhere
- HSQL
- SAP HANA
- H2
- Firebird
- Microsoft Access
- Attunity
- Cloudscape
- DBase
- PointBase
- TimesTen
- Symfoware
- MaxDB
Translation
There is a centralized translation service in OS.bee. It collects all property files from models created by a DSL and supplies all internal translations that the Software Factory needs. The number of supported languages is unlimited; however the internal translations deployed for the moment are limited to English, French, and German. More languages can be ordered. In case a translation key occurs multiple times, the “best” translation for this key is automatically selected. The “best” translation is evaluated by the maximum Levinshtein distance from the translation key.
Metadata
OS.bee holds all model-data at runtime so that all programs can reference them. Renderers that do not need code will interpret these model to do their work. So even in the Function-Library it is possible to take the current modeling into account.
Theme Resources and CSS
As usual for web-frontend applications, cascaded style sheets describe the look and feel. Custom CSS can be loaded from outside, or any modification can be made once the appropriate bundle is downloaded. CSS is compiled from a SCCS template with a pre-processor. The advantage of using SCSS is that you can use variables and therefore create different looks with just a hand-full of variables. OS.bee comes with 3 different theme variants that can be selected in the user profile. Resources like images, html pages and icons are available per theme and thus adjustable to the used color scheme.
Copyright Notice
All rights are reserved by Compex Systemhaus GmbH. In particular, duplications, translations, microfilming, saving and processing in electronic systems are protected by copyright. Use of this manual is only authorized with the permission of Compex Systemhaus GmbH. Infringements of the law shall be punished in accordance with civil and penal laws. We have taken utmost care in putting together texts and images. Nevertheless, the possibility of errors cannot be completely ruled out. The Figures and information in this manual are only given as approximations unless expressly indicated as binding. Amendments to the manual due to amendments to the standard software remain reserved. Please note that the latest amendments to the manual can be accessed through our helpdesk at any time. The contractually agreed regulations of the licensing and maintenance of the standard software shall apply with regard to liability for any errors in the documentation. Guarantees, particularly guarantees of quality or durability can only be assumed for the manual insofar as its quality or durability are expressly stipulated as guaranteed. If you would like to make a suggestion, the Compex Team would be very pleased to hear from you.
(c) 2016-2024 Compex Systemhaus GmbH