My team has been "tasked" to create an application that follows the task-based UI (not necessarily with CQRS). I really like a UI that helps the user accomplish common tasks easily, but many pieces of this application really "feel" (to me) like a job for a typical CRUD interface (ex: all the details for a product in a catalog).
At this point, we need examples of good task-based UIs to help us see what is possible. What have you seen in the interwebs?
The easiest way to generate a task based UI is to protect all attributes/properties of your models. i.e. remove all setters.
From this (pseudo code):
public class TodoTask
{
public Date getDateAssigned();
public void setDateAssigned(Date);
public string getAssignedTo();
public void setAssignedTo(string);
}
to this:
public class TodoTask
{
public Date getDateAssigned();
public string getAssignedTo();
public void AssignTo(string userId);
}
You can't create a basic CRUD app anymore. You have to perform a task (Assign()
) to update the model.
Start by removing all setters and then analyze what kind of actions (task) you should be able to do on each model.
Then you're all set.
I've blogged about it: http://blog.gauffin.org/2012/06/protect-your-data/ (scroll to the bottom to see mockups for CRUD vs Task based)