Assignment Strategy Factory
The assignment
strategy factory provides access to system-supplied and
user-defined assignment strategies.
Assignment Strategy
An assignment strategy
provides a pluggable means for allocating work items to workflow
participants. OBE comes with two such strategies, ALL
and RANDOM
.
Other strategies that will be considered for implementation in a future
release include ROUND-ROBIN
, LOAD-BALANCE
and SKILL-BASED
.
The ALL Assignment Strategy
The ALL
strategy creates work items
for all the
participants returned by the security realm when it resolves the
performers declared on the activity. ALL
is
the default strategy that is applied if none is specified.
The RANDOM Assignment Strategy
The RANDOM
strategy creates one work
item for the
activity, by choosing one participant at random from the participants
returned by the security realm when it resolves the performers declared
on the activity.
Assignment Strategy Meta-data
Assignment
strategy meta-data
are used to register an assignment strategy. The basic assignment
strategy factory implementation that comes with OBE reads and stores
these data in the configuration
file BasicAssignmentStrategyFactory.xml
;
entries have the format:
<assignment-strategy id="nmtoken" type="nmtoken"? threadsafe="true|false"?>
<display-name .../>?
<author .../>?
<description .../>?
<doc-url .../>?
<impl-class .../>
<impl-ctor-sig>?
<class .../>*
</impl-ctor-sig>
</assignment-strategy>
- impl-class
- The fully qualified Java class name of the implementing
class.
- impl-ctor-sig
- The nested class elements define the signature of the
constructor for the specified class.
- class
- The fully qualified Java class name of the constructor
parameter.
XPDL Extension
The assignment strategy is specified by an XPDL ExtendedAttribute with
the name 'obe.AssignmentStrategy
', containing
a nested 'obe:AssignmentStrategy
'
element. Assignment strategies can be specified at any or all of the
following levels, in order of descending precedence: Activity,
WorkflowProcess, Package.
The syntax is:
<xpdl:ExtendedAttribute Name="obe.AssignmentStrategy">
<obe:AssignmentStrategy Id="nmtoken" ExpandGroups="true|false"? />
</xpdl:ExtendedAttribute>
- Id
- The assignment strategy ID,
used as a lookup key by the factory.
- ExpandGroups
- Whether or not to
expand any groups listed in Activity/Performer before applying the
assignment strategy.
For example:
<Activity Id="hello" Name="Capture details for a random participant">
<Description>
When this activity is started, the RANDOM assignment strategy
picks randomly picks one of the resolved participants from the
Users group at and creates a work item for them.
</Description>
<Implementation>
<Tool Id="updateProcessAttributes" Type="APPLICATION">
<ActualParameters>
<ActualParameter>name</ActualParameter>
<ActualParameter>sex</ActualParameter>
<ActualParameter>birthDate</ActualParameter>
<ActualParameter>emailAddress</ActualParameter>
<ActualParameter>favoriteColour</ActualParameter>
</ActualParameters>
</Tool>
</Implementation>
<Performer>Users</Performer>
<ExtendedAttributes>
<ExtendedAttribute Name="obe.AssignmentStrategy">
<obe:AssignmentStrategy Id="RANDOM" ExpandGroups="true" />
</ExtendedAttribute>
</ExtendedAttributes>
</Activity>