Saturday, May 14, 2011

Scripting and Task Based UIs

Siebel 8's task based user interface (TBUI) is a nifty feature, but it still needs some more polishing though. A really simple looking requirement came up the other day, and I was surprised that there was no out of box feature I knew to support it.

The requirement was to conditionally disable tasks in the Task View pane applet. The Task Groups have to be associated with the triggering views, and when the logged in user enables the tasks by clicking on its button, an applet opens up in the UI on the left side, always showing all the tasks associated with the current opened view.

Now we wanted to conditionally disable certain tasks depending upon the user's position, and there was no way of achieving this. On searching on the bookshelf, I found a way to trigger the task  from script.


if (name == "Test")
{
var inputPropSet;
var outputPropSet;
var taskUIsvc;
inputPropSet = theApplication().NewPropertySet();
outputPropSet = theApplication().NewPropertySet();
taskUIsvc = theApplication().GetService("Task UI Service (SWE)");
inputPropSet.SetProperty("TaskName","Create a Contact");
the outputPropSet is created. outputPropSet is not used to send results back to the task UI--!>
taskUIsvc.InvokeMethod("LaunchTaskFromScript",inputPropSet,outputPropSet);
return ("CancelOperation");
}


So now, instead of showing the tasks in the task pane applet,  we trigger it from scripts behind buttons in the UI. We have buttons for different tasks, and the buttons themselves are enabled/disabled based on positions.

I'm hoping Siebel provides an vanilla way of achieving conditional task enabling/disabling in the UI soon.

No comments:

Post a Comment