Open Source Object Remoting Framework for Flex

Athena Framework is a full fledged enterprise object-relational mapping (ORM) framework that employs metadata as mapping configuration. It greatly simplifies Flex/Flash RIA application development by providing transparent object remoting - i.e., you can manipulate objects on the client side using Flex just like on the server side using Java with Hibernate/JPA thanks to the unified object model provided by Athena.

Further more, Athena Framework removes the requirement of manual ORM mapping and manual database schema updating. In addition to features like object relational persistence, powerful EJBQL querying execution and comprehensive code generation, Athena has built-in support for multi-tenancy which enables developers to build cloud applications easily.

Manipulating Objects on the Client Side

For many rich Internet applications, objects needs to be loaded and manipulated on the client side. Consider a very common CRUD scenario: the UI loads and displays a list of Departments objects and let the user view employees under a selected department, create and edit Department/Employees; once the user finishes the editing, he or she clicks a button to save the changes. Without a decent object manager on the client side, such kind of operation is hard to implement.

Athena offers a UnitOfWork on the client side for Flex which implements the Unit of Work pattern (plays the same role as an EntityManager in JPA context). With Athena, you can implement the CRUD scenario with code shown below:

// Client side Flex code
var uow:UnitOfWork = ...;
var depts:ArrayCollection = ...;

// Edit an dept
Department(depts.getItemAt(0)).nameFull = "New Dept Name";

// Create a new dept with a new employee
var dept:Department = Department.createNewInstance();
dept.nameFull = "R & D";
var emp:Employee = Employee.createNewInstance();
emp.firstName = "Alan";
emp.lastName = "Turing";
emp.department = dept;

depts.addItem(dept);

// Persists all changes in one shot
eoService.invokeService("persistenceService", "save", [depts], onSaveSuccess, onSaveError, null);

Implementing Change at the Speed of Your Thought

Traditionally, it is painful to make changes as it requires multiple manual updates. For example, to change Employee.deliveryAddress from CHAR(100) to NVARCHAR(256), you need: 1. change column Employee.deliveryAddress to NVARCHAR(256) in the database; 2. update XML mapping configuration; 3. update Java code; 4. update Flex code; 5. update validation code of the user interface. Such manual synchronization process is time consuming and error prone, and a simple change like that could easily take 30 mins or more. There must be a simpler way to do it.

Athena makes performing changes a breeze. For the above example, you only need to do one thing: use the free GUI tool Athena Console to find the attribute Employee.address and change its type. Behind the scene, Athena Framework does the following for you:

  1. automatically change column Employee.deliveryAddress to NVARCHAR(256) in the database;
  2. automatically updates metadata;
  3. generate source code (both Java and ActionScript) when you press 'Generate source code' button.
You do not need to change the validation code as you can access the metadata at runtime to validate against the actual definition of the attribute Employee.address.

Create Your Own Salesforce.com! Developing Cloud SaaS Applications Easily

With simple configuration, you can easily enable your application to serve multiple client organizations using just one instance. Multi-tenancy is one of the key enabling technologies for cloud computing, and it enables the fundamental economic benefits of a shared resource and is a much faster way to deploy improvements.

Athena has built-in support for multi-tenancy. By setting the multitenancy flag, your application becomes cloud ready instantly! When EJBQLs get executed, Athena will generate SQLs that enable multi-tenancy. Any Athena based application can be turned into a multi-tenancy application instantly.

For details, please review list of features of Athena.