Page 278 -
P. 278
274 M. Adams
<resourcing>
<offer initiator="system">
<distributionSet>
<initialSet>
<role>RO-7a1f36e8-8b47-46f4-b8b5-af07dac6174a</role>
</initialSet>
</distributionSet>
</offer>
<allocate initiator="system">
<allocator>
<name>RandomChoice</name>
</allocator>
</allocate>
<start initiator="user"/>
<privileges>
<privilege>
<name>canDeallocate</name>
<allowall>true</allowall>
</privilege>
</privileges>
</resourcing>
Listing 10.1 Example of a resourcing specification (extract from OrderFulFilment process
Confirm Purchase Order task)
Other Internal Components
The Forms Manager component provides a user interface to the service via a
number of web-based forms, which can be categorized as worklist forms (those
providing worklist views and functionality to manipulate both the resourcing of the
listed work items and to progress them to completion – see Sect. 10.7 for more
details); administration forms; and dynamic forms (dynamically generated input
forms to capture values for work item parameters). The Forms Manager is respon-
sible for displaying the appropriate form, to fill a form’s content (e.g., to display
a certain work queue for the user requesting it), and dynamic form generation. All
forms are created and controlled using Java Server Faces (JSF) technology.
A complete forms rendering engine is encapsulated by the service, and is respon-
sible for taking a work item’s data parameter set, expressed as an xsd:schema,and
rendering it as a web-based form with an appropriate set of input fields. Listing 10.2
shows an example of the data schema and Fig. 10.6 the resultant dynamic form for
the Estimate Trailer Usage task of the Order Fulfillment process. The data schema
is compiled from the data type definitions declared in the specification for each data
parameter of the task, into a data schema encapsulating the entire task. From there,
a Forms Manager “factory” class creates a number of FormField objects, which are
hierarchical (i.e., may have FormField children), and take into account any restric-
tions, enumerations, and unions declared for each data type. Each field object may
represent one field (e.g., OrderNumber), or, if they have children, a SubPanel of
child fields (e.g., Line). These field objects are assembled into a set, then sent to the
ComponentBuilder, which creates a JSF input field for each of them. That set of JSF
field components are then rendered in a browser window.