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.