Features

Available Components

There is a bunch of components and reuseable workflows ready to be aggregated to new web applications. More (complex) workflows will follow in the near future. (Roadmap)

You can find tables, trees, tabbed panes, modal dialogs or components which create complex workflows like offering a complete HTML editor, or undocking a component.

Support for barrier free web

While truly reaching a "barrier free web" is probably more of a dream, Brasato helps you to do all it can do automatically.

Develop your workflow and let the framework wrap the complexity to make it also available in the web 2a mode (web 1.0 with accessibility improvements for a barrier free web)

Develop a component and provide a different renderer for special accessability support. This is done once and can then be reused.

Develop a complete workflow (e.g. a user search) and let the workflow behave differently for web 2.0 and for web 2a, e.g. hide unneeded complexity into subscreens and offer visual tools such as autocompletion only in the web 2.0 mode)

The support for barrier free web is accomplished by switching the renderkit appropriate. Hence for the developer there is no change.

Find out by playing with switching between the web1.0 and web2.a mode in the You will recognize the changes - for example a menu(tree) tells at the beginning what has changed and uses the X to mark a selection.

Visual Debug mode

All projects use a modern IDE of course.

But how do you find the correct code place for a bug fix or a new requirement? Within Brasato, you have a visual debug mode. When activated you can move the mouse over the screen and see what is behind the gui, that is, which controller is responsible for which components.

Bugs: Of course you have a stacktrace - but do you also have a hierarchy of all workflows that lead to the bug? With Brasato, you have the exception message and a stacktrace and it also tells you how the user reached the workflow where the bug occurred, by displaying the workflow hierarchy, and which event caused the bug - which gives you much more information than a stacktrace only.

Web 2.0 GUI Framework

Brasato is 100% java and open source. It offers java swing like programming (event based) but with full control over html (velocity templates).

  • Flexible Layout

    HTML fragments are defined with velocity templates.
  • Server side event dispatching

    Controllers of views register themselves as listeners to viewcomponents. This is well known from Swing/SWT UI programming.
  • Server side state

    No serialization is needed, but would be possible if you want to support conversational session state replication.

    Server side state is of course separated by user and further encapsulated in Controllers which control their business case in a UI sense and have a distinct lifecycle (creation, inserting in component tree, and when not needed anymore, disposing).
  • GUI locks

    You find already the infrastructure to create GUI locks.

    What does this mean? Let's assume you have an editor for creating surveys and it is allowed that more than one person has authoring rights. You must prevent that two authors start the editor at the same time.
Overview of architecture, click to enlarge

The SOA GUI workflows

While taking only a little bit longer than normal coding, it gives you the chance to create truly reusable gui flows which can be used with two lines of code.



Everybody is talking about SOA for business integration and orchestration.

On the GUI side, most frameworks only focus on reusable components.

However, the workflows on the GUI side with transactions to the business side (aka business logic) can be seen as reusable services.

When GUI workflows are used, this allows for true code reuse which goes far beyond having standard components. (As an example, a complete user search is plugged into the screen with two lines of code). GUI SOA could be seen as a very advanced form of portlets.



With GUI SOA, you can delegate your task to a Service, plug the visual part of the service into your screen, and the rest is automatically handled for you - until you are notified of the results of the service. A service, in order to execute it tasks, can ask for help by calling other visual and non-visual services.



For example, in OLAT, there are learning groups, which can have a forum.

In order to use that forum all you need to do is to ask the collaborative service to generate a forum. You provide a callback implementation to determine who can read, post, and moderate the forum, and you then receive from the service a so-called controller with an initial component.

You put this component into your screen (attach it to the component tree). The controller does then handle the complete forum for you.



Another, simpler example is a user search service, consisting of a search mask, a results table, and the capability to show/hide results column, and save those as preferences. To use the service, you call the service to receive a controller and register as listener, so that you will later receive either a "user-chosen" event, or a "cancel" event.