[Seaside] [Ann] Deltawerken & Storyboard

Stephan Eggermont stephan at stack.nl
Wed Sep 5 12:33:10 UTC 2012


At the last Camp Smalltalk we finally managed to release the Deltawerken application framework
for Seaside and Storyboard, an example application using it. Here is a first description (to be expanded 
and improved).

What is Deltawerken?

Deltawerken is a Seaside application level framework, allowing fast application development
for medium-sized applications. We have used an earlier extended version of it to build a system 
with about 150 domain classes. Complexity was deliberately and systematically pushed from 
the application to the framework. It uses a declarative way to describe domain classes somewhat
similar to Magritte or Mold. It uses Announcements, jQuery and jQueryUI.


Storyboard is a multi-user agile planning board with drag and drop support.  It shows how little
code is needed to build a complete application with Deltawerken.  It consists of 39 classes,
of which 7 are announcements (very simple). It allows you to quickly enter stories, estimate and prioritize them.
In addition to stories you can add issue, documentation and chore cards. The cards are colored based
on their story state. More details can be entered/viewed by expanding the card. In the expanded view
a change history is shown. Other users of Storyboard can be invited to participate.

Core domain classes are:
User, Project, Iteration, Story, Member

Some stories:
A user can have projects (s)he participates in.
A user can have invitations for other projects
A user can create projects
By creating a project or by accepting an invitation, a user becomes a member of the project
A member can invite other users to participate in a project.
A member can search for other users to invite.
Each member can have its own view on the project, the projectsettings
Each member can add a story to the project
A project has 4 projectviews, for done, current, backlog & icebox
By default, the projectsettings show the 4 projectViews
Adding a story is done by entering its storyName
A new story is added to the icebox
A story can be started after it has been estimated
A story can be dragged from the icebox to current or the backlog
A story that is done can no longer be prioritized
A story that is accepted can no longer be changed
A story can have a description
A story can be a bug, chore or documentation
Only (feature) stories are estimated

Deltawerken Features

User management
Field descriptions with validation for domain classes (somewhat similar to Magritte descriptions).
Builders for forms and reports.
Search support.

Deltawerken Components

DEField and its descendants are used to describe domain classes. 

DEComponent is the base WAComponent equivalent. It knows the current user (if any) and announcer.

DEPageChoice is a DEComponent that switches what it shows based on announcements. 
There are a number of addPage: variants  

DEEditComponent  allows the editing of a single domain object. It can edit new or existing ones, using
a copy of the original to allow reverting changes. It can generate a div or table based layout. It can have a 
header and/or a footer, and an infoText between the header and the form. For required fields, 
it can show a *. Focus can be set on a specific field.

DEEditForm extends DEEditComponent with action buttons for save and cancel.

Getting started

StoryBoard provides a good overview of the power of Deltawerken. If you start it the first time,
it shows a welcome screen, showing the number of users and projects. Please make sure 
you change the password of the administrator. In a workspace:

(SBUser userWithId: 'Admin') password: '<your new password>'

-------------- next part --------------
A non-text attachment was scrubbed...
Name: PastedGraphic-1.png
Type: image/png
Size: 38248 bytes
Desc: not available
Url : http://lists.squeakfoundation.org/pipermail/seaside/attachments/20120905/35535487/PastedGraphic-1-0001.png
-------------- next part --------------

The application uses SBMain, a WAComponent, as its entrypoint. It has two children,  an SBLoginForm and a DEPageChoice initially showing SBPublicHome.

Then register yourself as a new user:

-------------- next part --------------
A non-text attachment was scrubbed...
Name: PastedGraphic-2.png
Type: image/png
Size: 21539 bytes
Desc: not available
Url : http://lists.squeakfoundation.org/pipermail/seaside/attachments/20120905/35535487/PastedGraphic-2-0001.png
-------------- next part --------------

StoryState and StateTransition provide a state machine for the stories, allowing them to
move from #initial (unestimated) through #started to #finished, #delivered and 
#accepted or #rejected leading again to #started.  

When you are logged in, you arrive at the overview of your projects

-------------- next part --------------
A non-text attachment was scrubbed...
Name: PastedGraphic-3.png
Type: image/png
Size: 29563 bytes
Desc: not available
Url : http://lists.squeakfoundation.org/pipermail/seaside/attachments/20120905/35535487/PastedGraphic-3-0001.png
-------------- next part --------------

You can create a new project, respond to an invitation to participate in a project, 
view a storyboard of a project or view a team page of a project

-------------- next part --------------
A non-text attachment was scrubbed...
Name: PastedGraphic-5.png
Type: image/png
Size: 29765 bytes
Desc: not available
Url : http://lists.squeakfoundation.org/pipermail/seaside/attachments/20120905/35535487/PastedGraphic-5-0001.png
-------------- next part --------------

The team page shows the current members and allows you to search for users to invite.

The storyboard of a project shows the four panes for done, current, backlog and icebox.
-------------- next part --------------
A non-text attachment was scrubbed...
Name: PastedGraphic-6.png
Type: image/png
Size: 22950 bytes
Desc: not available
Url : http://lists.squeakfoundation.org/pipermail/seaside/attachments/20120905/35535487/PastedGraphic-6-0001.png
-------------- next part --------------

Iterations are shown in grey. By delivering an iteration, the accepted stories
are moved to done. and a new iteration is started. A story can be expanded to show 
more details.
-------------- next part --------------
A non-text attachment was scrubbed...
Name: PastedGraphic-7.png
Type: image/png
Size: 38015 bytes
Desc: not available
Url : http://lists.squeakfoundation.org/pipermail/seaside/attachments/20120905/35535487/PastedGraphic-7-0001.png
-------------- next part --------------


Deltawerken is a spin-off from the work we did developing a Seaside application for a start-up,
using GLASS and Seaside 2.8. We focused on pushing out complexity from the application to
the framework. When we started giving Seaside workshops, we wanted to provide the 
participants with an environment where they didn't need to write a lot of code to make things work. 
It was also used in our experiments to create a Naked Objects like user interface (if you were
wondering where the noXXX method names came from).
Last year it was upgraded from Scriptaculous to jQuery, and we developed StoryBoard.


Deltawerken has been tested with the Seaside one click 3.0 and 3.1 and a Pharo 1.4
It should run in Gemstone too. The metacello configuration does not load Seaside,
but has the needed code for that commented out. 

See the instructions on the wiki page of:




Have fun,
  Diego & Stephan

More information about the seaside mailing list