Displaying Tasks in the UI

Once the Tasks and TaskReqmts are loaded into the database (see the section called “Task and TaskReqmt models” 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 of One.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 (see the section called “Creating a Dashboard for your Module”).

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 section called “Task and TaskReqmt models”.
  • 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.