Displaying Tasks in the UI
Once the Tasks and TaskReqmts are loaded into the database (see the "Task and TaskReqmt Models" section for more information) and you have AbstractTaskType subclasses for every TaskType used, you can display the tasks in the UI. Platform provides 2 ways to do that using built-in classes:
One.ext.form.TaskDetail
: An Ext.Panel subclass that displays a Task and its child Tasks.One.ext.portlet.TaskPortlet
: A Portlet that simply renders an instance ofOne.ext.form.TaskDetail
.
One.ext.form.TaskDetail
One.ext.form.TaskDetail
takes as input either a task type or a surrogate id. It will fetch the Task by the task type or surrogate id and then display it. Here's an example:
<WebAction name="TaskDetail"> <PanelOptions> <PanelClass>One.ext.form.TaskDetail</PanelClass> <PanelConfig>{ taskType: 'com.onenetwork.showcase.model.RootTaskType' }</PanelConfig> </PanelOptions> </WebAction>
One.ext.portlet.TaskPortlet
As mentioned above, One.ext.portlet.TaskPortlet
utilizes One.ext.form.TaskDetail
to display the tasks. You simply have to create your own portlet subclass with the proper configuration (see the Javascript documentation for specifics), and then add your portlet to your dashboard.
Task Title and Details
Every Task's title and details must be specified in messages.properties
using a specific pattern:
- Header: task.<TaskType>.header=Title
- Details: task.<TaskType>.details=Description
Example:
- Header: task.com.onenetwork.showcase.model.RootTaskType.header=Root Task
- Details: task.com.onenetwork.showcase.model.RootTaskType.details=This is a description for the root task.
These messages can also contain parameters using the standard format (ex: "Task {0}: {1}"). The parameters are populated at runtime by the Task framework using the Task's ParamsJSON field. You can set parameters using the headerArgs
and detailsArgs
properties for the header and details display, respectively. Example:
Task State
Every Task starts out in the Pending state. The icon displayed next to the task name indicates what state it's in. There are 4 icons:
- Pending
- InProgress
- Pending (cannot start): This is not a separate state, but the icon and text indicate that another Task must be completed first. For information on how to create task requirements, see the TaskReqmt model in the "Task and TaskReqmt Models" section.
- Completed
Using a Custom Task Detail Screen
It's possible to use a custom Task detail screen, which is what opens when you click on one of the Task links displayed in the UI. In the AbstractTaskType
Java class, there's a method called getTaskDetailPanel()
which can be overridden in your subclass. You just return the JS class name that should be used to construct the new tab. More information is available in the Javadocs for AbstractTaskType
.