giovedì 2 dicembre 2010

Roma 3.0RC1: Hackaton of December 6th and 7th 2010 in Asset Data

Hi all,
the Roma Framework community is always alive, mostly with Java and SVN than this Mailing List...

I'd like to share with you that next Monday and Tuesday it will be a new hackaton event in Asset Data company dedicated to the release of the 3.0RC1 of Roma Meta Framework. These the main news:
  • Janiculum as new View Aspect. Now it's straightforward to customize pages sing CSS and templating
  • New graphical components added
  • Smarter CRUD. No more popup effects in CRUD unless you want. Relationships can be bound directly to the Repository layer
  • Better Ajax management of events
And a lot of bugs fixed and improvements in the management of the memory and the speed of rendering.

Stay tuned!

venerdì 11 giugno 2010

martedì 13 aprile 2010

Romulus project ended, new modules moved to the Roma SVN repository

After more than 2 years of good work, sharing of ideas, cooperation and, of course, development the Romulus project reaches the end. The Romulus project brought a lot of modules in the Roma Framework project:
  • View-Janiculum as new View Aspect based on HTML and CSS2. It uses FreeMarker to render single components
  • Project-Portlet, Session-Portlet and Wizard-Portlet, to deploy Roma Applications as JSR-168 portlets (but there is also some extension for Liferay, our partner)
  • Semantic Jena, to export your domain in RDF just annotating it
  • Mashup-MyCocktail, to create mashup by using the MyCocktail Open Source product (built under Romulus)
Starting from today these modules will be available and supported directly from the Roma community and therefore have been moved in the Roma Framework Subversion repository.

Soon the new version 2.2 that include Janiculum as default View Aspect by replacing the View-Echo2 module (after 4 years!). View-Echo2 will rest in the repository but all the new development on the Web UI will be concentrated only to the Janiculum module.

To switch your project to janiculum just download it and add as module. The Janiculum wizard will do the rest. All your application will work but stylesheets that in Janiculum are CSS and not anymore custom XML.

giovedì 24 dicembre 2009

Released TevereFlow, the first workflow engine with a Web Editor

Starting from December 22nd 2009 is available the new version of TevereFlow.

Tevere Flow is a light-weight Workflow engine built using the Java® technology. Just download it and create your process using the Web interface. You can use Tevere as embedded or as external engine by using the provided Web Services API.

Tevere was built using Roma Framework under the Romulus consortium an it's currently used in several production systems.

Main features:

  • Open Source Apache 2.0 license
  • Web User Interface using the Ajax technology
  • Stand-alone application: just download and start it
  • Fully Transactional supporting any RDBMS or db4o ODBMS
  • Set of built-in commands available (email, web service invocation, etc.)
  • Auto-resume of failure activities
  • User and profile management
  • Activities can be written in Java or using any supported scripting language such as Javascript and Ruby
  • Integration via Java APIs or WebService

lunedì 14 dicembre 2009



Online a new demo of an application developed with Roma Meta Framework: Whiz! Whiz is the smaller Social Network never built. You can try it online or download it in local and change the sources as you want.

mercoledì 2 dicembre 2009

Romulus FREE workshop in Italy: the new way to build Web Applications

The Romulus consortium is organizing a new FREE event on December, 17th 2009: "Romulus FREE workshop: the new way to build Web Applications". The event is hosted in Rome, Italy under the form of a technical workshop. Most of the talks will be in the Italian language. If you're interested to have the same workshop in your city please contact romaframework -at- assetdata.it.

Location: http://www.h10hotels.com/ita/hotels-roma/h10-roma-citta.php

Draft agenda:

  • 9.30 - 9.45: Presentation of the Romulus consortium [Talk in italian]
  • 9.45 - 10.45: Introduction to Roma Meta Framework [Talk in italian]
  • 10.45 - 11.00: Coffe break
  • 11.00 - 13.00: Hands-on session: creation of a Twitter-like application from ground using the DDD approach and Roma Meta Framework. In this session the Asset Data's guys will help the attendees on installation and/or compilation problems. All the attendees with a notebook can download and install all the necessary to begin with Roma and follow the speaker step-by-step [Talk in italian]
  • 13.00 - 13.45: Lunch with sandwich
  • 13.45 - 14.15: Create automatic testing for the application [Talk in english by Universidad Politécnica de Madrid?]
  • 14.15 - 15.00: Mashup of Social network's data with Google Maps and Flickr [Talk in english by Gesfor company?]
  • 15.00 - 15.30: Exporting data in Semantic format (Semantic Web). Make the information accessible from a semantic search engine to execute queries like: "give me all the people living in Rome with at least 3 friends living outside his city" [Talk in english by Digital Enterprise Research Institute of Ireland]
  • 15.30 - 15.45: Coffe break
  • 15.45 - 16.15: Exporting of services and its usage inside a ESB (Atom and Web Services?) [Talk in italian by Imola Informatica]
  • 16.15 - 16.45: Vertical demonstrators [Talk in english]
  • 16.45 - 17.00: Conclusions [Talk in italian]
Click here to subscribe for free.

martedì 29 settembre 2009

New Hook Aspect to use AOP concepts inside Roma Framework

Hook Aspect

The Hook Aspect aims to write listeners of POJO events in simple way. The Hook Aspect allows the developer to extend an existent application in a flash. The Hook Aspect is based on the well known principles of Aspect Oriented Programming, AOP by now. The AOP supports the Object oriented paradigm. The two approaches can be used together to get the best of both.

You can hook any action of any POJO at runtime as well as read/write of any fields.

Using the Hook Aspect you can change and customize your application behaviour in a non-invasive mode.

Scope

Each hook belong to a scope. Scope can be:

  • SESSION, means that all the registered POJOs that are part of the current User Session will be waked up when the event is raised

  • APPLICATION, means that the POJOs are components declared into the IoC container (Spring IoC).

Using the scope APPLICATION you must assure that the POJO loaded by Spring IoC use the annotation @CoreClass(loading=EARLY) on top of the class declaration (look at the example below). This is the only way to assure to activate the Roma configuration when the application starts.

Below a table of the hooks available for the action:

@HookAction

Description

onBeforeAction

Invoked just before an action is called

onAroundAction

Invoked in place of the original action

onAfterAction

Invoked just after an action is called

onBeforeFieldRead

Invoked just before a field is read

onAroundFieldRead

Invoked in place of the original read. The action must return the value to return in place of the original

onAfterFieldRead

Invoked just after a field is read

onBeforeFieldWrite

Invoked just before a field is written

onAroundFieldWrite

Invoked in place of the original write. The action must return the value to assign to the field in place of the original

onAfterFieldWrite

Invoked just after a field is written



@HookField

Description

field

Copy the content of the field hooked everytime changes

Change the behaviour at run-time

In this example you need to avoid further login into the application for a while. The classic path would be to change the code or to write a parameter to switch on/off this feature.

Using a hook makes all things much easyer. Please note that the hook hookAroundAction means in-place-of. This action will be called in place of the original one.

ApplicationControl Example





@CoreClass(loading = LOADING_MODE.EARLY)
public class ApplicationControl {
@HookAction(hookAroundAction="CustomLogin.login", scope=HookScope.APPLICATION)
public void hook() {
// DISABLE THE LOGIN
System.out.println("Application in mantainance: login disabled");
RomaFrontend.flow().forward(
new MessageOk("login", "Login temporary disabled").
setMessage("Login is temporary disabled, please try in few minutes"),
"screen:popup:alert");
}
}

In the same way you can customize strategies, alghoritms, navigation paths all by using the Hook Aspect.

Collect results

This is an example of a simple profiler that record in a Map in memory the times the actions are called.


Remember that to use the scope “application” you need to instantiate the component as singleton by the IoC container (Spring IoC at this time). Add this line at the end of applicationContext.xml file of your application:

<bean id="ProfilerDemo" singleton="true" class="com.orientechnologies.moobilis.server.view.domain.ProfilerDemo" />


And create a class in this way:


ProfilerDemo Example:


import java.util.HashMap;

import org.romaframework.aspect.hook.annotation.HookAction;
import org.romaframework.aspect.hook.annotation.HookScope;

@CoreClass(loading = LOADING_MODE.EARLY)
public class ProfilerDemo {

protected HashMap<String, Long> totalTimes = new HashMap<String, Long>();

@HookAction(hookAfterAction = "*", scope = HookScope.APPLICATION)
public void profileAllActions() {
Long times = totalTimes.get("allActions");
if (times == null)
times = new Long(0);
times = times + 1;
totalTimes.put("allActions", times);
}

@HookAction(hookAfterAction = "*Login*", scope = HookScope.APPLICATION)
public void profileAllLoginActions() {
Long times = totalTimes.get("loginActions");
if (times == null)
times = new Long(0);
times = times + 1;
totalTimes.put("loginActions", times);
}
}