Siebel Business Process Framework: Task UI Guide > Configuring Task UI > Editing Task Flows >
Configuring Subtask Steps
Subtasks allow you to modularize the task flow. When a task flow diagram becomes so large that readability is significantly compromised, you can break a larger task into smaller subtasks. A subtask is launched from a subtask step in the main task flow. It is treated as a special task and is versioned just like the main task. The primary goals of subtasks are to:
- Improve task flow readability by breaking large tasks into modules.
- Decrease development and maintenance costs by reusing common Task UI sequences.
- Maintain a clean, consistent, and intuitive programming model.
Similarly to the Workflow subprocess step, you can pass information into and out of a subtask through the input and output arguments. Input arguments allow you to populate task properties in the subtask with information from the parent task.
When the subtask is invoked, the task properties of the subtask are initialized with the values of the input arguments of the subtask step. Output arguments allow you to populate data from the subtask back to its parent task. When the subtask returns to its parent, the parent task can read the subtask's task properties through the output arguments of a subtask step.
You can configure the input and output arguments for a subtask through the Multi Value Property Window of the subtask. For example, if you want to pass the Object ID from the main task to the subtask, you do this through the input arguments.
NOTE: The Object ID passed to a subtask must be null, not the parent's Object ID, when the subtask creates a child object.
For example, if the subtask has a return code of SUCCESS or FAILED, you can send the return code to the parent task through output arguments. For more information, see Configuring Input and Output Arguments for Task Steps.
Because parent tasks and subtasks have separate local task properties, argument passing causes the data to be copied between the parent tasks and subtasks. However, for hierarchical task properties, copying hierarchical data can be expensive. For this reason, a hierarchical data type is passed by reference between parent tasks and subtasks.
Exception branches are allowed within a subtask. However, exception branches are not allowed to go into and out of a subtask step. This restriction makes sure that a subtask can only exit from its end step in the forward direction.
The subtask configuration model is somewhat different from the Workflow subprocesses. The major differences are:
- A subtask and its parent task share the same process instance; while in Workflow, the main process and its subprocesses run in separate instances.
- Task UI subtasks and Workflow subprocesses support the notation of local process properties differently. Each subtask invocation does not create a new instance; instead a new context is created for each invocation for storing local process properties. However, each Workflow subprocess invocation creates a process instance and has its own process properties.
The process of configuring a subtask step involves the following procedures:
- Make sure that the task to be called by the subtask step is already defined as a subtask.
The task must be defined before you create the subtask step, and it must be defined as a subtask. Do not link a nonsubtask into a subtask step.
- Define the subtask step (see To define a subtask step).
- Define input and output arguments for the subtask step. For more information, see Configuring Input and Output Arguments for Task Steps.
To define a subtask step
- In the Object Explorer (in Siebel Tools), click the Task object type.
- Verify that the task to be called as a subtask is already defined (and defined as a subtask). Create it, if necessary.
- Open the parent task in the Task Designer.
- From the Task Palette, drag a Subtask step, and drop it on the Task Designer at the desired location.
- In the Properties window, specify a Name for the subtask step, and enter a description of the purpose of the subtask.
- For the Subtask Name property, select the subtask to be called by the subtask step.
If you need to define the input or output arguments for the subtask, see Configuring Input and Output Arguments for Task Steps.