In addition to routing workflow based on users and workgroups using routing rules, you can also route workflow based on KIM responsibilities. This allows you to utilize group membership and role assignments to manage who is permitted to perform approvals.
In review, you define a rule-based routing node with XML similar to:
<requests name="Rule routing Route Level"> <activationType>S</activationType> <ruleTemplate>RuleRoutingTemplate</ruleTemplate> <mandatoryRoute>true</mandatoryRoute> <finalApproval>false</finalApproval> </requests>
A routing node that uses KIM responsibilities can replace a rule-based routing node. You define it with XML similar to:
<role name="Purchasing"> <qualifierResolverClass> org.kuali.rice.kns.workflow.attribute.DataDictionaryQualifierResolver </qualifierResolverClass> <activationType>P</activationType> </role>
You name the routing node with the name attribute, just like for a rule-based routing node.
The qualifier resolver finds any qualifiers that need to be used while matching the responsibility. You can specify it in either of two ways:
<qualifierResolver>name</qualifierResolver> names a rule attribute which identifies the class to use
<qualifierResolverClass>class.name</qualifierResolverClass> provides the fully-qualified name of the Java class to use
You can specify <responsibilityTemplateName>name</responsibilityTemplateName> to identify the responsibility template to use. This option is not usually used since all of the responsibilities provided with KIM use a template named Review.
You can specify <namespace>name</namespace> to identify the name space for the responsibility. This option is usually not used since all of the responsibilities provided with KIM use a name space of KR-WKFLW.
The KIM responsibility template Review defines two details:
The name of the document type
The name of the routing node
When you define a responsibility in KIM using this template, you specify a value for each of these details. When a document is routed using responsibility-based routing nodes, KIM receives the type of the document being routed and the name of the node; it then locates any responsibilities which have the same routing node name and either the same document type name or the name of a parent document type (all the way up to the top of the hierarchy). The list of people who gets the request consists of anyone who has been assigned a role with any of the matching responsibilities.