OpenSubsystems

Business Components for Java Applications

Subsystems

Tutorial
Last modified

$Author: bastafidli $
$Date: 2007/03/16 04:04:39 $
$Revision: 1.26 $
$RCSfile: subsystems.html,v $

Open Core

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 DB2, HSQLDB, MaxDB, MS SQL Server, MySQL, Oracle, PostgreSQL, SAP DB, Sybase ASE
  • Connection pool support for Commons-DBCP, C3P0, Proxool, XAPool and J2EE datasources
  • Transaction manager support for JOTM, J2EE transaction managers and custom in-JVM transaction manager
  • J2EE application server support for JBoss, JOnAS, WebLogic, WebSphere
  • 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 management
  • 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
Read more

Open Patterns

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 applications.
  • 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.
Read more

Open Security

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 administrators.
  • 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.
Read more

Open Search

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, etc.
  • 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.
Read more

Open Inventory

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 subcategories.
Read more

OpenChronicle

Real world blogging application demonstrating how to use individual subsystems developed as part of OpenSubsystems project.
  • 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 change data.
  • 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 all supported 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 Internet access.
Read more