The Taskbox is a service which can be used when human interaction is required, e.g. by help desk applications. It consists of a core and an UI project. The core is responsible for storing tasks (via persistence), throwing events and starting workflows. Therefore it provides methods which can be called by workflows e.g. assigning a task to different user-roles (such as case worker or developer) or setting a task status.
It is also the job of the core taskbox to choose the right wicket panel from the UI project to display the right information in a certain situation. A wicket panel contains of a HTML-snippet which can be embedded into another HTML file, an underlying data model some logic like buttonlisteners and session handling.
So the idea is that an application which wants to use the taskbox only has to define an area in a wicket page where the taskbox is to be bound. The taskbox then takes control and takes user input to fill in the domain object behind which then gets stored again and used to decide how the workflow will go on. Based on the workflow and user interaction the taskbox then decides which panel is to be shown.
For each main action, the Taskbox throws an event. Examples for that are create, assign, finish or edit events. These events are used to trigger or resume workflows and they can also be recorded by another component which then can reconstruct the flow based on them.
The Taskbox service provides the methods to be called by workflows and to bind it to a UI. Take a closer look to explore its usage and possibilities.