Spiralcraft Framework Architecture Overview

Introduction

The Spiralcraft Framework is a product of years of experience working with small teams of specialists building custom information systems. The architectural features of the framework are a direct result of the challenges encountered when meeting the business requirements of individual customers while ensuring the long-term maintainability of both the delivered software and the organization that created it.

Goals and Capabilities

Generally, the framework is intended to support the construction of custom applications that involve the processing, storage and transmission of domain specific data artifacts through a variety of human and machine interfaces.

The framework provides strong support for the portable expression of domain metadata in a form usable by components that interact with that data, and facilitates the integration of data from different domains and origins. It is a goal of the framework to be able to reuse domain metadata anywhere within reach of a Java(tm) VM in an efficient and scalable manner.

Strong support is also provided for intermediate levels of customization typically required when supporting multiple variations of a common scenario, or when a domain expert intermediates between a software team and multiple specialty customers.

The following general capabilities are in production use and can be supported in any combination for a given project:

  • Template based web UI for interactive web applications
  • Web services client/server (REST, XML, JSON, custom formats)
  • SMTP client
  • SQL, filesystem XML, custom flat file storage
  • Off-line scheduled process execution
  • Access to any Java(tm) based API.
  • Master/slave based data and file synchronization.

General capabilities planned and under development illustrate potential reach of the framework:

  • Portable GUI interaction model to reach Swing/SWT/Android
  • Multi-write horizontal scaling
  • Basic SMTP server

Framework Code Organization

The Spiralcraft Framework is organized as an open-ended set of modules built around a core module (spiralcraft-core), which contains essential functionality and establishes a common structure for extensions and applications.

A module consists of source code and resources, and can depend on other modules. Modules usually export one or more jar file artifacts, and import their dependencies as jars.


Core Subsystems

The spiralcraft-core module contains the subsystems that manage the expression, composition and extension of more specialized functionality, a set of basic building blocks to be used with these subsystems to construct custom applications and frameworks, and a number of common utilities.

ELaine (spiralcraft.lang)

ELaine is an expression language that is used to wire components together and transform data as it flows through the system.

It provides a context based scoping mechanism that is used by application developers to publish and resolve references from a component's context within the hierarchical containership model that comprises an application.

ELaine is used throughout Spiralcraft applications to supply references and logic to application components, and can be a means for end users to customize application behavior (eg. use by "power users" to express filter conditions).

DALai (spiralcraft.data)

DALai is a Data Access Layer used to model domain types and manage data persistence and transport. It provides metadata to application components as a form of scaffolding to generate type-appropriate behavior.

DALai uses generic Tuple and Aggregate structures to represent domain objects, which can be abstract entities with explicitly defined types, or can be proxies to access foreign object models such as classes exposed by Java(tm) reflection or tables in a SQL database, where the metadata is implicitly derived from native forms.

Builder (spiralcraft.builder)

Builder provides a means to construct and configure application components from Java(tm) objects using composition, inheritance and dependency injection.

Builder artifacts are constructed and referenced directly via a fluent XML syntax, and are also referenced by mechanisms in DALai, ELaine, and other systems as the primary means of incorporating custom components.

VFS (spiralcraft.vfs)

The VFS (Virtual File System) provides a uniform interface into URI mapped resource collections that is used by most functionality that interacts with stream and file based resources to resolve code, metadata and content.

The VFS creates virtual URI spaces that can be mapped to physical resources in a context dependent manner, and contains facilities to actively manage these spaces where necessary to implement functionality such as replication and caching.