Middleware abstraction layer allowing subsystems and
applications to seamlessly run directly on top of Java Virtual
Machine or inside of various J2EE application servers. This
all without changing single line of code while providing the
same level of services such as connection pooling and JTA/JTS
transaction management across different environments.
Data model, persistence, business logic, web user
interface and desktop application (thick client)
framework usable as simple Java classes (POJOs) or
within J2EE application server (EJBs)
Database support for
MS SQL Server,
Connection pool support for
and J2EE datasources
Transaction manager support for
J2EE transaction managers and custom in-JVM transaction
J2EE application server support for
Default persistence layer implementation using pure JDBC
for high performance, low overhead and easy portability
Database schema definition, maintenance and versioning
Database connectivity, connection pooling, transaction
Framework and patterns for data access and modification
such as optimistic locking preventing concurrent data
modification, unique data id generation and timestamp
maintenance directly by a database
Utilities for context propagation, asynchronous
executions, encryption, transactional file manipulation
Web user interface framework, page inheritance,
layout definition, security
Desktop application (thick client) framework with
default implementation using SWT
Repository of common application functionality patterns
allowing subsystems and applications provide often required
but difficult to implement features with a minimal effort.
List data pattern allows accessing large amount of data
in relational database in small chunks. It allows
retrieving data page by page or directly accessing a
specified page. Page represents several data items
retrieved and displayed together. The page size is user
and system configurable. The pattern supports server
side and client side sorting and filtering of the data
using configurable rules and conditions. It works
efficiently on all
supported databases. Provides ready to use dynamic
user interface for web based applications as well as
asynchronous data loading for desktop applications.
Mapped data pattern allows creation, access and management
of relations between any data objects in a generic way.
It allows maintaining multiple types of links between
the same data elements and supports one to one, one to
many and many to many relations. Additional data
attributes may be associated with each link. Works
efficiently on all
supported databases with minimal coding effort
required to integrate with existing modules.
Patterns for managing data with specified order,
versioned data, etc.
Background task invocation and execution allowing easy
configuration and execution of background tasks for web
Advanced web based scrollable table mimicking
full-featured desktop alternatives. It supports horizontal
and vertical scrolling with static/scrollable column
headers, client side sorting, configurable hooks, etc.
Advanced web based tabbed dialog control allowing to
easily create tabbed dialogs with support for visible
and hidden tabs, help tabs, configurable hooks, etc.
Web based dialog layout management and dialog controls.
It allows to easily implement liquid layouts for web
based dialogs with easy-to-use dynamic controls such as
single and multi line edit fields, checkboxes, combo
boxes, lists, double lists, dynamic lists, image buttons,
etc. All controls include support for context help.
Desktop application utilities mainly oriented for
touchscreen computing such as character pad, numeric pad,
toggle buttons, etc.
Authentication, authorization and session tracking for web,
server side and desktop applications.
Domain management and creation allowing partitioning of
the system into separate domains each with it's own
set of data. Each domain can be independently managed and
configured by a designated domain administrator. Support
for administrative domains used to manage other domains.
Users have ability (if authorized) to create their own
domains without system administrator intervention.
Built-in system restrictions prevent users from accessing
data outside of their designated domain.
User identity management providing unique logins and
user to role mappings. Supports user selfregistration
and approval process for enabling created accounts. It
allows assigning custom set of roles to each user or
initialize the user's roles based on a default template.
Distinction is made between internal (e.g. employees)
and external (e.g. clients or customers) users.
Role and access right management defining what data can
user access and what action can he or she take. All data
access anywhere in the system is verified against the
configured set of rights. Each role can be assigned to
any number of users. Provides support for personal roles
exclusive to a single user.
Authentication of users with the ability to dynamically
disable accounts if needed. Support for changing
credentials either directly by users or by system
Access authorization on multiple levels: individual
data objects, groups of data objects based on attribute
values, data objects based on their type
Session tracking for logged in users, session expiration
and propagation in clustered environment.
Search and filtering of data.
Filter management allowing to dynamically create filters
that can be persisted and later reused or created on the
fly and used just once.
Filter definitions include search criteria to use for
searching data, sorting criteria for retrieving results,
display criteria to configure the look of the results,
threshold criteria to limit amount of retrieved data,
Ready to use web user interface for dynamic filter
creation with ability to visually pick and choose what
attributes of data objects should be used for filtering.
Integration with the paged data list from Open Patterns
that allows seamless application of most frequently used
filters to any data list.
Inventory management for ecommerce or business type applications.
Support for multiple inventories, each with its own
separate set of items that are being tracked. Each
inventory can manage unlimited amount of items.
Items in the inventory can be reusable or consumable
with ability to correctly manage in-stock count for each
type of item. Inventory automatically tracks for each
item shipped, available, on hold and restocking threshold
counts. Each item allows capturing of all the expected
attributes such as cost, price, size, expense type, etc.
Items can be tracked in bulk or each individual unit
can be tracked separately based on customizable
identification criteria (e.g. S/N, ESN, IMEI, internal
numbering scheme). The items tracked in bulk can be split
into separate groups tracked independently, for example
by shipment date, cost to acquire, etc.
Each inventory can have defined up to two independent
identification schemes that can be used concurrently to
track individual units.
Categorization and tagging of items in the inventory
into hierarchical categories. Each item can be at the
same time assigned to multiple categories and
Real world blogging application demonstrating how to use
individual subsystems developed as part of OpenSubsystems
Allows creation of multiple chronicles and multiple
entries for each chronicle. Each entry in the chronicle
can have easily assigned picture to display as a part of
it. Ensures that only authorized users can create and
Version 1 walks developer through a step by step process
how to quickly create fully featured application
exclusively using Open Core. Demonstrates development of
flexible persistence layer that works on
databases. Discusses how to develop business logic
that allows deployment of this application either as a
simple web application using POJO model or using any of
the supported J2EE
application servers as an EJB based application.
The tutorial includes development of skinable web user
interface using the integrated template engine to
allow blogging from any browser or device with the