WLMSE provides a static common service in TaskCommon.wsdl, for operations as GetTaskList, ClaimTask, GetTaskInput, GetTaskOutput, SetTaskOutput, GetTaskXForm, ReassignTask, RevokeTask, etc. The TaskCommon.wsdl is present in the build folder of every wlm project, note although soap binding is on TaskCommon.wsdl, javaeese is used as the proxy between Java EE client (such as a web console) and WLMSE to pass the security context of the client to WLMSE. Our generic web console provided is discussed below, the goal is user can either build their own web console for wlm from scratch (see Make your own Worklist Manager client application
), or customize the generic web console
![]() |
wlmEntry.jsp is the entry page to wlm console. wlmEntry calls other jsps when user clicks claim, complete or any task in the task list.
getTaskList.jsp constructs task list content as an xml for the DataTable in wlmEntry.jsp to consume. AJAX is done in wlmEntry.jsp using YUI asynchronous callback, the task list is refreshed every 10 sec (by default and configurable)
checkoutTask.jsp is called when user claims a task, completeTask.jsp is called when user completes a task, task list is auto-refreshed when such actions are done.
When user clicks any task on the task list, showTaskDetails in wlmEntry.jsp calls xforms-jsp/taskDetails.jsp to show task details (request and response if set).
Orbeon Xforms Engine 3.6
is deployed to process any files under xforms-jsp/, the worklist xform flow is configured in web/WEB-INF/resources/worklist/
A custom processor is implemented by WLMProcessor.java which calls the SetTaskOutput with the user set response.
A list of parameters can be turned by user on wlmEntry.jsp
<!-- User Configurable Begin -->
var refreshInterval = 10000; //default refreshing = 10 sec
var pageSize = 20; //Pagination Enabled, tasks per page, 0 means no pagination
var savedSort = "id";
var savedDir = "ASC";
<!-- User Configurable End -->
Users want to customize task list headers, add/remove column should start with myDataTable and myDataSource
var myColumnHeaders = [
{key:"id", label:"Task Id", type:"number", sortable:true},
{key:"title", label:"Title", sortable:true},
{key:"createDate", label:"Submitted On", sortable:true},
{key:"priority", label:"Priority", sortable:true},
{key:"status", label:"Status", sortable:true},
{key:"assignedTo", label:"Assigned To", sortable:true},
{key:"owner", label:"Claimed By", sortable:true}
];
// Define the data schema
myDataSource.responseSchema = {
resultNode: "task", // Node name of each result item
fields: ["id","title","createDate", "priority", "status", "assignedTo","owner"],
metaFields: {
totalRecords: "total",
returnedRecords: "returned" } // Field names
};
myDataSource.responseSchema defines the xml schema of the task list content, in the above example, each task is represented by a task element wrapped around "id","title","createDate", "priority", "status", "assignedTo","owner" elements, totalRecords and returnRecords are parsed outside of the task elements, i.e. in the outer element.
myColumnHeaders maps the fileds in myDataSource.responseSchema to columns in the task list table
The task of add/remove/change columns in task list can be done by changing the myColumnHeaders and myDataSource.responseSchema and also the source of task list data: getTaskList.jsp
refreshTaskList () is called every refreshInterval to refresh the current page of the task list, and it is also called when user does claim task or complete task.
dataReturned (sRequest , oResponse , oPayload ) is the callback when data arrives from the callback. In this method, the original selected row is reselected and task details is shown (showTaskDetails())
) when customizing the page for Administrative operations such as ReAssign. We use an example to describe how to add users and groups for the Web Console, you can find more details in
User Guide On AppServer Security
We want to add both a Manager Luke and a Team Support to access the web console. Luke and Support are physical user and group.
Using FileRealm, we will do the following steps:
1. Add Luke and members of Support in the file realm used in the web console: Configuration --> Security --> file --> Manage Users
![]() |
![]() |
![]() |
b. Add permission for john as a principal.
![]() |
Using LDAPRealm, we will do the following steps:
1. Refer to Realm setting on Glassfish
for setting up the realm
2. WorklistWebApplication change is similar to FileRealm with regards to adding role and role-group, role-principal mappings, please see Configure WebApp for Ldap
Explained in myDataTable and myDataSource, adding more columns needs to change myColumnHeaders and myDataSource.responseSchema and also the source of task list data: getTaskList.jsp
Step 1. Get the data from input message to TaskInstance table's Title field, this can be done as in PurchaseOrderXpath sample:
<init>
<variable-init>
<copy>
<from>concat($TaskInput/po:purchaserName, concat(' Purchase Order for ', $TaskInput/po:productId))</from>
<to>$TaskInstance.Title</to>
</copy>
</variable-init>
...
Using xpath you can construct a delimited string using any delimiter you choose through xpath on input message ($TaskInput) and assigns it to $TaskInstance.Title, which effectively saves it into TaskInstance table's Title field. Step 2. Parse title field in getTaskList.jsp and assigns the value to an extra element in the task list xml
Step 3. Follow How to add more columns to Task List
Step 1. Change getTaskList.jsp to call external web service, construct Task List xml with extra elements
Step 2. Follow How to add more columns to Task List
If you want to show your own form and not using the generated xhtml and xform engine, you can do the following :
1. Make your own form in any directory other than xforms-jsp/, since this folder is governed by xform engine
2. In your own form, calls GetTaskInput, GetTaskOutput, SetTaskOutput operations of TaskCommon.wsdl using generated JAX-WS client stub (See TaskXformViewBuilder.java for example)
3. Replace the taskDetails.jsp hook in wlmEntry.jsp
You can change the generated xhtml file in the wlm project, the xhtml file will not be overwritten by next build activity