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>