Defining Workflow Processes Using Document Types

A Document Type is an object that brings workflow components together into a cohesive unit (routing configuration). One of its primary responsibilities is to define the routing path for a document. The routing path is the process definition for the document. It can consist of various types of nodes that perform certain actions, such as sending action requests to responsible parties, transmitting emails, or splitting the route path into parallel branches.

In addition to the routing path, it contains the Post Processor which receives event callbacks from the engine, the DocHandler which is the access point into the client application from the Action List and Access Control for certain actions. It can also define various policies that control how documents of that type are processed by the workflow engine.

This document has four parts:

  1. A detailed explanation of the common fields in the Document Type XML definition

  2. An example of each Document Type with a description of each field in it

  3. Descriptions of the Document Type policies

  4. A description of inheritance as applied to Document Types

There are some common attributes in every Document Type, but each Document Type can be customized to provide different functions.

Common Fields in Document Type XML Definition

Table 3.9. Common Fields in Document Type XML Definition

FieldDescription
nameThe name of the Document Type
parentThe parent Document Type of this Document Type. Each Child Document Type inherits the attributes of its parent Document Type.
descriptionThe description of the Document Type; its primary responsibilities.
labelThe label of the Document Type, how it’s recognized
postProcessorNameThe name of the postProcessor that takes charge of the routing for this Document Type
postprocessorA component that gets called throughout the routing process and handles a set of standard events that all eDocs (electronic documents) go through.
superUserGroupNameThe name of a workgroup whose members are the super users of this Document Type. Super users of this Document Type can execute a super user document search on this Document Type.
blanketApproveGroupNameThe name of a workgroup whose members have the blanketapprove rights over this Document Type.
defaultExceptionGroupNameThe name of the workgroup whose members receive an exception notice when a document of this Document Type encounters an exception in its routing.
docHandlerThe DocHandler that handles the routing of this Document Type
activeA true or false indicator for the active status of this document
policiesThe policies that apply to this Document Type
policy

The policy that applies to this Document Type. Use this when there is only one policy for the Document Type.

value: A true or false indicator for whether the action for the policy will be taken

routingVersion

This field exists only for backward compatibility with older versions of KEW. Originally, KEW only supported sequential routing paths (as opposed to those with splits and joins). The KEW getDocRouteLevel() API returns an integer that represents the numerical step in the routing process. This number only has meaning for those documents that define sequential routing.

  • A document with a routingVersion of "1" will keep track of the route level number.

  • A document with a routingVersion of "2" (the default, unless explicitly defined in the Document Type configuration) will NOT keep track of the route level number and an exception will be thrown if code attempts to access that value. New Document Type definitions do NOT need, and should NOT have, this flag defined.

routePathsThe routing paths for this Document Type
routePathThe routing path for this Document Type. Use this field when there is just one routing path for this Document Type.
routeNodeA point or node on the routing path of this Document Type
routeModuleThe most basic module; it allows KEW to generate Action Requests
startThe starting node of this Document Type during routing
requestsThe requested next node in the routing of this Document Type
activationType

The activation type of the next node that is requested by this Document Type. There are two activation types:

  • P: Parallel: Multiple nodes in the routing process are activated at the same time

  • S: Serial or Sequential: The nodes in the routing process are activated one at a time

ruleTemplateThe ruleTemplate that applies to the routing node in this Document Type
splitThe routing path splits into branches and can continue on any of them at a split.
branchOne of the branches in the routing path.
joinThe point in the routing path where the split branches join together.
processThere is a sub-process in the routing path; in other words, some nodes in the routing path will activate a sub-process.
simple

A new node in the routing path

  • type: The type of the new routing node

  • value: The value of the new routing node

  • message: The message associated with the new routing node

  • level: The routing level of the new routing node

  • log: The log name of the new routing node

dynamicThis changes the node to dynamic when it transitions to the next node in the routing path; therefore, the routing path is dynamic rather than static.


Document Types

Document Type Examples

BlanketApproveTest

<documentType>
    <name>BlanketApproveTest</name>
    <description>BlanketApproveTest</description>
    <label>BlanketApproveTest</label>
    <postProcessorName>org.kuali.rice.kew.postprocessor.DefaultPostProcessor</postProcessorName>
    <superUserGroupName namespace=”KR-WKFLW” >TestWorkgroup</superUserGroupName>
    <blanketApproveGroupName namespace=”KR-WKFLW”>TestWorkgroup</blanketApproveGroupName>
    <defaultExceptionGroupName namespace=”KR-WKFLW”> TestWorkgroup</defaultExceptionGroupName>
    <docHandler>_blank</docHandler>
    <active>true</active>
    <policies>
        <policy>
            <name>DEFAULT_APPROVE</name>
            <value>false</value>
        </policy>
    </policies>

</documentType> 

  • name: This is the Document Type for Blanket Approve Test.

  • description: This Document Type is used to test the Blanket Approve function.

  • label: This Document Type is recognized as the BlanketApproveTest type.

  • postProcessorName: The postProcessor for this Document Type is org.kuali.rice.kew.postprocessor.DefaultPostProcessor.

  • superUserGroupName: The super users for this Document Type are members of the TestWorkgroup.

  • blanketApproveGroupName: The members of the TestWorkgroup have blanketApproval right on this type of document.

  • defaultExceptionGroupName: The members of the TestWorkgroup will receive an exception notice for documents of this Document Type.

  • docHandler: The Doc Handler for this type of document is _blank.

  • active: This Document Type is currently Active. In other words, it is in use.

  • Policies for this Document Type contains two policies: The DEFAULT_APPROVE policy is set false by default. In other words, the default approve action on this type of document is NOT to approve it.

BlanketApproveSequentialTest

<documentType>
    <name>BlanketApproveSequentialTest</name>
    <parent>BlanketApproveTest</parent>
    <description>BlanketApproveSequentialTest</description>
    <label>BlanketApproveSequentialTest</label>
    <postProcessorName>org.kuali.rice.kew.postprocessor.DefaultPostProcessor</postProcessorName>
    <superUserGroupName namespace=”KR-WKFLW”>WorkflowAdmin</superUserGroupName>
    <blanketApproveGroupName namespace=”KR-WKFLW”>TestWorkgroup</blanketApproveGroupName>
    <defaultExceptionGroupName namespace=”KR-WKFLW”>WorkflowAdmin</defaultExceptionGroupName>

    <docHandler>_blank</docHandler>
    <active>true</active>
    <routePaths>
        <routePath>
            <start name="AdHoc" nextNode="WorkflowDocument" />
            <requests name="WorkflowDocument" nextNode="WorkflowDocument2" />
            <requests name="WorkflowDocument2" nextNode="Acknowledge1" />
            <requests name="Acknowledge1" nextNode="Acknowledge2" />
            <requests name="Acknowledge2" />
        </routePath>
    </routePaths>
    <routeNodes>
        <start name="AdHoc">
            <activationType>P</activationType>
        </start>
        <requests name="WorkflowDocument">
            <activationType>P</activationType>
            <ruleTemplate>WorkflowDocumentTemplate</ruleTemplate>
        </requests>
        <requests name="WorkflowDocument2">
            <activationType>P</activationType>
            <ruleTemplate>WorkflowDocument2Template</ruleTemplate>
        </requests>
        <requests name="Acknowledge1">
            <activationType>P</activationType>
            <ruleTemplate>Ack1Template</ruleTemplate>
        </requests>
        <requests name="Acknowledge2">
            <activationType>P</activationType>
            <ruleTemplate>Ack2Template</ruleTemplate>
        </requests>
    </routeNodes>
</documentType> 

  • name: This is the Document Type for Blanket Approve Sequential Test. There is a sequence of routing nodes, and no routing node can be skipped.

  • parent: The parent Document Type is BlanketApproveTest. This Document Type inherits the policies that BlanketApproveTest has.

  • description: This Document Type is used to test the Blanket Approve Sequential function.

  • label: This Document Type is recognized as the blanketApproveSequentialTest type.

  • postProcessorName: The postProcessor for this Document Type is org.kuali.rice.kew.postprocessor.DefaultPostProcessor.

  • superUserGroupName: The super users for this Document Type are members of the WorkflowAdmin.

  • blanketApproveGroupName: The members of the TestWorkgroup have blanketApprove right on this type of document.

  • defaultExceptionGroupName: The members of the WorkflowAdmin will receive an exception notice for documents of this Document Type.

  • docHandler: The Doc Handler for this type of document is _blank.

  • active: This Document Type is currently active. In other words, it is in use.

  • routePath: The routing path for this Document Type is: AdHoc -> WorkflowDocument -> WorkflowDocument2 -> Acknowledge1 -> Acknowledge2.

  • routeNode: Based on the routePath, there are five nodes in the routing of this Document Type:

    • The starting node for this Document Type is AdHoc. On the initiation of a document of this type, the postProcessor in Kuali Enterprise Workflow (KEW) activates the node, AdHoc.

    • The next node in the routing for this Document Type is WorkflowDocument. On request, the node is activated and applies the rules in rule template, WorkflowDocumentTemplate.

    • The next node in the routing for this Document Type is WorkflowDocument2. On request, the node is activated and applies the rules in rule template, WorkflowDocument2Template.

    • The next node in the routing for this Document Type is Acknowledge1. On request, the node is activated and applies the rules in rule template, Ack1Template.

    • The next node in the routing for this Document Type is Acknowledge2. On request, the node is activated and applies the rules in rule template, Ack2Template.

Figure 3.9. BlanketApproveSequentialTest Workflow

BlanketApproveSequentialTest Workflow


BlanketApproveParallelTest

<documentType>
    <name>BlanketApproveParallelTest</name>
    <parent>BlanketApproveTest</parent>
    <description>BlanketApproveParallelTest</description>
    <label>BlanketApproveParallelTest</label>
    <postProcessorName>org.kuali.rice.kew.postprocessor.DefaultPostProcessor</postProcessorName>
    <superUserGroupName namespace=”KR-WKFLW” >TestWorkgroup</superUserGroupName>
    <blanketApproveGroupName namespace=”KR-WKFLW”>TestWorkgroup</blanketApproveGroupName>
    <defaultExceptionGroupName namespace=”KR-WKFLW”> TestWorkgroup</defaultExceptionGroupName>
    <docHandler>_blank</docHandler>
    <active>true</active>
    <routePaths>
        <routePath>
            <start name="AdHoc" nextNode="WorkflowDocument" />
            <requests name="WorkflowDocument" nextNode="Split" />
            <split name="Split" nextNode="WorkflowDocumentFinal">
                <branch name="B1">
                    <requests name="WorkflowDocument2-B1" nextNode="WorkflowDocument3-B1" />
                    <requests name="WorkflowDocument3-B1" nextNode="Join" />
                </branch>
                <branch name="B2">
                    <requests name="WorkflowDocument3-B2" nextNode="WorkflowDocument2-B2" />
                    <requests name="WorkflowDocument2-B2" nextNode="Join" />
                </branch>
                <branch name="B3">
                    <requests name="WorkflowDocument4-B3" nextNode="Join" />
                </branch>
                <join name="Join" />
            </split>
            <requests name="WorkflowDocumentFinal" nextNode="Acknowledge1" />
            <requests name="Acknowledge1" nextNode="Acknowledge2" />
            <requests name="Acknowledge2" />
        </routePath>
    </routePaths>
    <routeNodes>
        <start name="AdHoc">
            <activationType>P</activationType>
        </start>
        <requests name="WorkflowDocument">
            <activationType>P</activationType>
            <ruleTemplate>WorkflowDocumentTemplate</ruleTemplate>
        </requests>
        <split name="Split" />
        <requests name="WorkflowDocument2-B1">
            <activationType>P</activationType>
            <ruleTemplate>WorkflowDocument2Template</ruleTemplate>
        </requests>
        <requests name="WorkflowDocument2-B2">
            <activationType>P</activationType>
            <ruleTemplate>WorkflowDocument2Template</ruleTemplate>
        </requests>
        <requests name="WorkflowDocument3-B1">
            <activationType>P</activationType>
            <ruleTemplate>WorkflowDocument3Template</ruleTemplate>
        </requests>
        <requests name="WorkflowDocument3-B2">
            <activationType>P</activationType>
            <ruleTemplate>WorkflowDocument3Template</ruleTemplate>
        </requests>
        <requests name="WorkflowDocument4-B3">
            <activationType>P</activationType>
            <ruleTemplate>WorkflowDocument4Template</ruleTemplate>
        </requests>
        <join name="Join" />
        <requests name="WorkflowDocumentFinal">
            <activationType>P</activationType>
            <ruleTemplate>WorkflowDocumentFinalTemplate</ruleTemplate>
        </requests>
        <requests name="Acknowledge1">
            <activationType>P</activationType>
            <ruleTemplate>Ack1Template</ruleTemplate>
        </requests>
        <requests name="Acknowledge2">
            <activationType>P</activationType>
            <ruleTemplate>Ack2Template</ruleTemplate>
        </requests>
    </routeNodes>
</documentType> 

  • name: This is the Document Type for Blanket Approve Parallel Test. At some point in the routing, the route path may split and a node can be skipped if another parallel node takes action on the document.

  • Parent: The parent Document Type is BlanketApproveTest. This Document Type inherits the routing that exists for BlanketApproveTest.

  • description: This Document Type is used to test the Blanket Approve Parallel function.

  • label: This Document Type is recognized as the blanketApproveParallelTest type.

  • postProcessorName: The postProcessor for this Document Type is org.kuali.rice.kew.postprocessor.DefaultPostProcessor.

  • superUserGroupName: The super users for this Document Type are members of the TestWorkgroup.

  • blanketApproveGroupName: The members of the TestWorkgroup have blanketApproval right on this type of document.

  • defaultExceptionGroupName: The members of the TestWorkgroup will receive an exception notice for documents of this Document Type.

  • docHandler: The Doc Handler for this type of document is _blank.

  • active: This Document Type is currently active. In other words, it is in use.

  • routePath: The routing path for this Document Type is: AdHoc -> WorkflowDocument -> split -> B1\B2\B3 -> Join -> WorkflowDocumentFinal -> Acknowledge1 -> Acknowledge2.

  • routeNode: Based on the routePath, there are six nodes in the routing of this Document Type:

    • The starting node for this Document Type is AdHoc. On the initiation of a document of this type, the postProcessor in KEW activates the node, AdHoc.

    • The next node in the routing for this Document Type is WorkflowDocument. On request, the node is activated and applies the rules in rule template, WorkflowDocumentTemplate. Then, the routing path splits into three branches for the next node.

      • One branch is B1. On request, the node WorkflowDocument2-B1 is activated and applies the WorkflowDocument2Template. The next node in this branch is WorkflowDocument3-B1. On request, the node is activated and applies the WorkflowDocument3Template.

      • One branch is B2. On request, the node WorkflowDocument3-B2 is activated and applies the WorkflowDocument3Template. The next node in this branch is WorkflowDocument2-B2. On request, the node is activated and applies the WorkflowDocument2Template.

      • One branch is B3. On request, the node WorkflowDocument4-B3 is activated and applies the WorkflowDocument4Template.

    • Then, the routing path joins and the route merges back together into one route.

    • The next node in the routing for this Document Type is WorkflowDocumentFinal. On request, the node is activated and applies the rules in rule template, WorkflowDocumentFinalTemplate.

    • The next node in the routing for this Document Type is Acknowledge1. On request, the node is activated and applies the rules in rule template, Ack1Template.

    • The next node in the routing for this Document Type is Acknowledge2. On request, the node is activated and applies the rules in rule template, Ack2Template.

Figure 3.10. BlanketApproveParallelTest Workflow

BlanketApproveParallelTest Workflow


NotificationTest

<documentType>
    <name>NotificationTest</name>
    <description>NotificationTest</description>
    <label>NotificationTest</label>
    <postProcessorName>org.kuali.rice.kew.postprocessor.DefaultPostProcessor</postProcessorName>
    <superUserGroupName namespace=”KR-WKFLW” >TestWorkgroup</superUserGroupName>
    <blanketApproveGroupName namespace=”KR-WKFLW”>TestWorkgroup</blanketApproveGroupName>
    <defaultExceptionGroupName namespace=”KR-WKFLW”> TestWorkgroup</defaultExceptionGroupName>
    <docHandler>_blank</docHandler>
    <active>true</active>
    <routePaths>
        <routePath>
            <start name="AdHoc" nextNode="NotifyFirst" />
            <requests name="NotifyFirst" nextNode="Split" />
            <split name="Split" nextNode="NotifyFinal">
                <branch name="LeftBranch">
                    <requests name="NotifyLeftBranch" nextNode="Join" />
                </branch>
                <branch name="RightBranch">
                    <requests name="NotifyRightBranch" nextNode="Join" />
                </branch>
                <join name="Join" />
            </split>
            <requests name="NotifyFinal" />
        </routePath>
    </routePaths>
    <routeNodes>
        <start name="AdHoc">
            <activationType>P</activationType>
        </start>
        <requests name="NotifyFirst">
            <activationType>P</activationType>
            <ruleTemplate>NotifyFirstTemplate</ruleTemplate>
        </requests>
        <split name="Split" />
        <requests name="NotifyLeftBranch">
            <activationType>P</activationType>
            <ruleTemplate>NotifyLeftBranchTemplate</ruleTemplate>
        </requests>
        <requests name="NotifyRightBranch">
            <activationType>P</activationType>
            <ruleTemplate>NotifyRightBranchTemplate</ruleTemplate>
        </requests>
        <join name="Join" />
        <requests name="NotifyFinal">
            <activationType>P</activationType>
            <ruleTemplate>NotifyFinalTemplate</ruleTemplate>
        </requests>
    </routeNodes>
</documentType> 

  • name: This is the Document Type for Notification Test. At some point in the routing, the route path may split, and a node can be skipped if another notification node takes action on the document.

  • description: This Document Type is used to test the notification function.

  • label: This Document Type is recognized as the NotificationTest type.

  • postProcessorName: The postProcessor for this Document Type is org.kuali.rice.kew.postprocessor.DefaultPostProcessor.

  • superUserGroupName: The super users for this Document Type are members of the TestWorkgroup.

  • blanketApproveGroupName: The members of the TestWorkgroup have blanketApproval right on this type of document.

  • defaultExceptionGroupName: The members of the TestWorkgroup will receive an exception notice for documents of this Document Type.

  • docHandler: The Doc Handler for this type of document is _blank.

  • active: This Document Type is currently active. In other words, it is in use.

  • routePath: The routing path for this Document Type is: AdHoc -> NotifyFirst -> split -> LeftBranch\RightBranch -> Join -> NotifyFinal.

  • routeNode: Based on the routePath, there are four nodes in the routing of this Document Type:

    • o The starting node for this Document Type is AdHoc. On the initiation of a document of this type, the postProcessor in KEW activates the node, AdHoc.

    • The next node in the routing for this Document Type is NotifyFirst. On request, the node is activated and applies the rules in rule template, NotifyFirstTemplate. Then the routing path splits into two branches for the next node.

      • One branch is LeftBranch. On request, the node is activated and applies the NotifyLeftBranchTemplate.

      • One branch is RightBranch. On request, the node is activated and applies the NotifyRightBranchTemplate.

    • Then the routing path joins together again.

    • The next node in the routing for this Document Type is NotifyFinal. On request, the node is activated and applies the rules in rule template, NotifyFinalTemplate

Figure 3.11. NotificationTest Workflow

NotificationTest Workflow


NotificationTestChild

<documentType>
    <name>NotificationTestChild</name>
    <parent>NotificationTest</parent>
    <description>NotificationTest</description>
    <label>NotificationTest</label>
    <postProcessorName>org.kuali.rice.kew.postprocessor.DefaultPostProcessor</postProcessorName>
    <superUserGroupName namespace=”KR-WKFLW” >TestWorkgroup</superUserGroupName>
    <blanketApproveGroupName namespace=”KR-WKFLW”>TestWorkgroup</blanketApproveGroupName>
    <defaultExceptionGroupName namespace=”KR-WKFLW”> TestWorkgroup</defaultExceptionGroupName>
    <docHandler>_blank</docHandler>
    <active>true</active>
    <policies>
        <policy>
            <name>SEND_NOTIFICATION_ON_SU_APPROVE</name>
            <value>true</value>
        </policy>
    </policies>
</documentType>

  • name: This is the Document Type for Notification Test Child.

  • Parent: The parent Document Type is NotificationTest. This Document Type inherits the routing that NotificationTest has.

  • description: This Document Type is used to test the Notification function.

  • label: This Document Type is recognized as the NotificationTest type.

  • postProcessorName: The postProcessor for this Document Type is org.kuali.rice.kew.postprocessor.DefaultPostProcessor.

  • superUserGroupName: The super users for this Document Type are members of the TestWorkgroup.

  • blanketApproveGroupName: The members of the TestWorkgroup have blanketApproval right on this type of document.

  • defaultExceptionGroupName: The members of the TestWorkgroup will receive an exception notice for documents of this Document Type.

  • docHandler: The Doc Handler for this type of document is _blank.

  • active: This Document Type is currently active. In other words, it is in use.

  • Policy: There is only one policy that applies to this Document Type: SEND_NOTIFICATION_ON_SU_APPROVE. This policy currently applies to this Document Type. In other words, a notification will be sent to the designated two users when a SuperUser approves a document of this type.

BlanketApproveMandatoryNodeTest

<documentType>
    <name>BlanketApproveMandatoryNodeTest</name>
    <parent>BlanketApproveTest</parent>
    <description>BlanketApproveMandatoryNodeTest</description>
    <label>BlanketApproveMandatoryNodeTest</label>
    <postProcessorName>org.kuali.rice.kew.postprocessor.DefaultPostProcessor</postProcessorName>
    <superUserGroupName namespace=”KR-WKFLW” >TestWorkgroup</superUserGroupName>
    <blanketApproveGroupName namespace=”KR-WKFLW”>TestWorkgroup</blanketApproveGroupName>
    <defaultExceptionGroupName namespace=”KR-WKFLW”> TestWorkgroup</defaultExceptionGroupName>
    <docHandler>_blank</docHandler>
    <active>true</active>
    <routePaths>
        <routePath>
            <start name="AdHoc" nextNode="WorkflowDocument" />
            <requests name="WorkflowDocument" nextNode="WorkflowDocument2" />
            <requests name="WorkflowDocument2" nextNode="Acknowledge1" />
            <requests name="Acknowledge1" nextNode="Acknowledge2" />
            <requests name="Acknowledge2" />
        </routePath>
    </routePaths>
    <routeNodes>
        <start name="AdHoc">
            <activationType>P</activationType>
        </start>
        <requests name="WorkflowDocument">
            <activationType>P</activationType>
            <ruleTemplate>WorkflowDocumentTemplate</ruleTemplate>
            <mandatoryRoute>true</mandatoryRoute>
        </requests>
        <requests name="WorkflowDocument2">
            <activationType>P</activationType>
            <ruleTemplate>WorkflowDocument2Template</ruleTemplate>
            <mandatoryRoute>true</mandatoryRoute>
            <finalApproval>true</finalApproval>
        </requests>
        <requests name="Acknowledge1">
            <activationType>P</activationType>
            <ruleTemplate>Ack1Template</ruleTemplate>
        </requests>
        <requests name="Acknowledge2">
            <activationType>P</activationType>
            <ruleTemplate>Ack2Template</ruleTemplate>
        </requests>
    </routeNodes>
</documentType> 

  • name: This is the Document Type for Blanket Approve Mandatory Node Test.

  • Parent: The parent Document Type is BlanketApproveTest. This Document Type inherits the policies that NotificationTest has.

  • description: This Document Type is used to test the Blanket Approve Mandatory Node.

  • label: This Document Type is recognized as the BlanketApproveMandatoryNodeTest type.

  • postProcessorName: The postProcessor for this Document Type is org.kuali.rice.kew.postprocessor.DefaultPostProcessor.

  • superUserGroupName: The super users for this Document Type are members of the TestWorkgroup.

  • blanketApproveGroupName: The members of the TestWorkgroup have blanketApproval right on this type of document.

  • defaultExceptionGroupName: The members of the TestWorkgroup will receive an exception notice for documents of this Document Type.

  • docHandler: The Doc Handler for this type of document is _blank.

  • active: This Document Type is currently active. In other words, it is in use.

  • routePath: The routing path for this Document Type is: AdHoc -> WorkflowDocument -> WorkflowDocument2 -> Acknowledge1 -> Acknowledge2.

  • routeNode: Based on the routePath, there are five nodes in the routing of this Document Type:

    • The starting node for this Document Type is AdHoc. On the initiation of a document of this type, the postProcessor in KEW activates the node AdHoc.

    • The next node in the routing for this Document Type is WorkflowDocument. On request, the node is activated, applies the rules in rule template, WorkflowDocumentTemplate, and sets the mandatory route as true. In other words, the document must route through this node.

    • The next node in the routing for this Document Type is WorkflowDocument2. On request, the node is activated, applies the rules in rule template, WorkflowDocument2Template, and sets the mandatory route as true. In other words, the document must route through this node.

    • The next node in the routing for this Document Type is Acknowledge1. On request, the node is activated and applies the rules in rule template, Ack1Template.

    • The next node in the routing for this Document Type is Acknowledge2. On request, the node is activated and applies the rules in rule template, Ack2Template.

Figure 3.12. Blankte Approve Mandatory Test

Blankte Approve Mandatory Test

SaveActionEventTest

<documentType>
    <name>SaveActionEventTest</name>
    <description>SaveActionEventTest</description>
    <label>SaveActionEventTest</label>		<postProcessorName>org.kuali.rice.kew.postprocessor.DefaultPostProcessor</postProcessorName>
    <superUserGroupName namespace=”KR-WKFLW” >TestWorkgroup</superUserGroupName>
    <blanketApproveGroupName namespace=”KR-WKFLW”>TestWorkgroup</blanketApproveGroupName>
    <defaultExceptionGroupName namespace=”KR-WKFLW”> TestWorkgroup</defaultExceptionGroupName>
    <docHandler>_blank</docHandler>
    <active>true</active>
    <policies>
        <policy>
            <name>DEFAULT_APPROVE</name>
            <value>false</value>
        </policy>
    </policies>
    <routePaths>
        <routePath>
            <start name="AdHoc" nextNode="WorkflowDocument" />
            <requests name="WorkflowDocument" />
        </routePath>
    </routePaths>
    <routeNodes>
        <start name="AdHoc">
            <activationType>P</activationType>
        </start>
        <requests name="WorkflowDocument">
            <activationType>P</activationType>
            <ruleTemplate>WorkflowDocumentTemplate</ruleTemplate>
        </requests>
    </routeNodes>
</documentType> 

  • name: This is the Document Type for Save Action Event Test.

  • description: This Document Type is used to test the Blanket Approve Mandatory Node.

  • label: This Document Type is recognized as the SaveActionEventTest type.

  • postProcessorName: The postProcessor for this Document Type is org.kuali.rice.kew.postprocessor.DefaultPostProcessor.

  • superUserGroupName: The super users for this Document Type are members of the TestWorkgroup.

  • blanketApproveGroupName: The members of the TestWorkgroup have blanketApproval right on this type of document.

  • defaultExceptionGroupName: The members of the TestWorkgroup will receive an exception notice for documents of this Document Type.

  • docHandler: The Doc Handler for this type of document is _blank.

  • active: This Document Type is currently active. In other words, it is in use.

  • Policies for this Document Type: The DEFAULT_APPROVE policy is set false by default. In other words, the default approve action on this type of document is NOT to approve it.

  • routePath: The routing path for this Document Type is: AdHoc -> WorkflowDocument.

  • routeNode: Based on the routePath, there are two nodes in the routing of this Document Type:

    • The starting node for this Document Type is AdHoc. On the initiation of a document of this type, the postProcessor in KEW activates the node AdHoc.

    • The next node in the routing for this Document Type is WorkflowDocument. On request, the node is activated and applies the rules in rule template WorkflowDocumentTemplate.

Figure 3.13. Save Action Event Test

Save Action Event Test

SaveActionEventTestNonInitiator

<documentType>
    <name>SaveActionEventTestNonInitiator</name>
    <description>SaveActionEventTest With No Initiator Only Save Required</description>
    <label>SaveActionEventTestNonInitiator</label>
    <postProcessorName>org.kuali.rice.kew.postprocessor.DefaultPostProcessor</postProcessorName>
    <superUserGroupName namespace=”KR-WKFLW” >TestWorkgroup</superUserGroupName>
    <blanketApproveGroupName namespace=”KR-WKFLW”>TestWorkgroup</blanketApproveGroupName>
    <defaultExceptionGroupName namespace=”KR-WKFLW”> TestWorkgroup</defaultExceptionGroupName>
    <docHandler>_blank</docHandler>
    <active>true</active>
    <policies>
        <policy>
            <name>DEFAULT_APPROVE</name>
            <value>false</value>
        </policy>
        <policy>
            <name>INITIATOR_MUST_SAVE</name>
            <value>false</value>
        </policy>
    </policies>
    <routePaths>
        <routePath>
            <start name="AdHoc" nextNode="WorkflowDocument" />
            <requests name="WorkflowDocument" />
        </routePath>
    </routePaths>
    <routeNodes>
        <start name="AdHoc">
            <activationType>P</activationType>
        </start>
        <requests name="WorkflowDocument">
            <activationType>P</activationType>
            <ruleTemplate>WorkflowDocumentTemplate</ruleTemplate>
        </requests>
    </routeNodes>
</documentType>

  • name: This is the Document Type for Save Action Event Test Non Initiator.

  • description: This Document Type is used to test the saving of an action event by non-initiator.

  • label: This Document Type is recognized as the SaveActionEventTestNonInitiator type.

  • postProcessorName: The postProcessor for this Document Type is org.kuali.rice.kew.postprocessor.DefaultPostProcessor.

  • superUserGroupName: The super users for this Document Type are members of the TestWorkgroup.

  • blanketApproveGroupName: The members of the TestWorkgroup have blanketApproval right on this type of document.

  • defaultExceptionGroupName: The members of the TestWorkgroup will receive an exception notice for documents of this Document Type.

  • docHandler: The Doc Handler for this type of document is _blank.

  • active: This Document Type is currently active. In other words, it is in use.

  • Policies for this Document Type:

    • The DEFAULT_APPROVE policy is set false by default. In other words, the default approve action on this type of document is NOT to approve it.

    • The INITIATOR_MUST_SAVE policy is set false by default. In other words, the initiator does NOT have to save the document for the non-initiator to save the actions on it.

  • routePath: The routing path for this Document Type is: AdHoc -> WorkflowDocument.

  • routeNode: Based on the routePath, there are two nodes in the routing of this Document Type:

    • The starting node for this Document Type is AdHoc. On the initiation of a document of this type, the postProcessor in KEW activates the node AdHoc.

    • The next node in the routing for this Document Type is WorkflowDocument. On request, the node is activated and applies the rules in rule template, WorkflowDocumentTemplate.

Figure 3.14. Save Action Even Test: Non-Initiator

Save Action Even Test: Non-Initiator

TakeWorkgroupAuthorityDoc

<documentType>
    <name>TakeWorkgroupAuthorityDoc</name>
    <description>TakeWorkgroupAuthority Action Test</description>
    <label>TakeWorkgroupAuthorityDoc</label>
    <postProcessorName>org.kuali.rice.kew.postprocessor.DefaultPostProcessor</postProcessorName>
    <superUserGroupName namespace=”KR-WKFLW” >TestWorkgroup</superUserGroupName>
    <blanketApproveGroupName namespace=”KR-WKFLW”>TestWorkgroup</blanketApproveGroupName>
    <defaultExceptionGroupName namespace=”KR-WKFLW”> TestWorkgroup</defaultExceptionGroupName>
    <docHandler>_blank</docHandler>
    <active>true</active>
    <policies>
        <policy>
            <name>DEFAULT_APPROVE</name>
            <value>false</value>
        </policy>
    </policies>
    <routePaths>
        <routePath>
            <start name="AdHoc" nextNode="WorkgroupByDocument" />
            <requests name="WorkgroupByDocument" />
        </routePath>
    </routePaths>
    <routeNodes>
        <start name="AdHoc">
            <activationType>P</activationType>
        </start>
        <requests name="WorkgroupByDocument">
            <activationType>P</activationType>
            <ruleTemplate>WorkgroupByDocument</ruleTemplate>
        </requests>
    </routeNodes>
</documentType> 
  • name: This is the Document Type for Take Workgroup Authority Doc.

  • description: This Document Type is used to decide authorized workgroups by Document Type.

  • label: This Document Type is recognized as the TakeWorkgroupAuthorityDoc type.

  • postProcessorName: The postProcessor for this Document Type is org.kuali.rice.kew.postprocessor.DefaultPostProcessor.

  • superUserGroupName: The super users for this Document Type are members of the TestWorkgroup.

  • blanketApproveGroupName: The members of the TestWorkgroup have blanketApproval right on this type of document.

  • defaultExceptionGroupName: The members of the TestWorkgroup will receive an exception notice for documents of this Document Type.

  • docHandler: The Doc Handler for this type of document is _blank.

  • active: This Document Type is currently active. In other words, it is in use.

  • Policies for this Document Type: The DEFAULT_APPROVE policy is set false by default. In other words, the default approve action on this type of document is NOT to approve it.

  • routePath: The routing path for this Document Type is: AdHoc -> WorkflowDocument.

  • routeNode: Based on the routePath, there are two nodes in the routing of this Document Type:

    • The starting node for this Document Type is AdHoc. On the initiation of a document of this type, the postProcessor in KEW activates the node AdHoc.

    • The next node in the routing for this Document Type is WorkflowDocument. On request, the node is activated and applies the rules in rule template, WorkflowDocumentTemplate.

Figure 3.15. Take Workgroup Authority

Take Workgroup Authority

MoveSequentialTest

<documentType>
    <name>MoveSequentialTest</name>
    <parent>BlanketApproveTest</parent>
    <description>Move Sequential Test</description>
    <label>Move Sequential Test</label>

    <postProcessorName>org.kuali.rice.kew.postprocessor.DefaultPostProcessor</postProcessorName>
    <superUserGroupName namespace=”KR-WKFLW” >TestWorkgroup</superUserGroupName>
    <blanketApproveGroupName namespace=”KR-WKFLW”>TestWorkgroup</blanketApproveGroupName>
    <defaultExceptionGroupName namespace=”KR-WKFLW”> TestWorkgroup</defaultExceptionGroupName>
    <docHandler>_blank</docHandler>
    <active>true</active>
    <routePaths>
        <routePath>
            <start name="AdHoc" nextNode="WorkflowDocument" />
            <requests name="WorkflowDocument" nextNode="WorkflowDocument2" />
            <requests name="WorkflowDocument2" nextNode="Acknowledge1" />
            <requests name="Acknowledge1" nextNode="Acknowledge2" />
            <requests name="Acknowledge2" />
        </routePath>
    </routePaths>
    <routeNodes>
        <start name="AdHoc">
            <activationType>P</activationType>
        </start>
        <requests name="WorkflowDocument">
            <activationType>P</activationType>
            <ruleTemplate>WorkflowDocumentTemplate</ruleTemplate>
        </requests>
        <requests name="WorkflowDocument2">
            <activationType>P</activationType>
            <ruleTemplate>WorkflowDocument2Template</ruleTemplate>
        </requests>
        <requests name="Acknowledge1">
            <activationType>P</activationType>
            <ruleTemplate>Ack1Template</ruleTemplate>
        </requests>
        <requests name="Acknowledge2">
            <activationType>P</activationType>
            <ruleTemplate>Ack2Template</ruleTemplate>
        </requests>
    </routeNodes>
</documentType>
  • name: This is the Document Type for Move Sequential Test.

  • Parent: The parent Document Type is BlanketApproveTest. This Document Type inherits the policies that BlanketApproveTest has.

  • description: This Document Type is used to test Move Sequence.

  • label: This Document Type is recognized as MoveSequentialTest type.

  • postProcessorName: The postProcessor for this Document Type is org.kuali.rice.kew.postprocessor.DefaultPostProcessor.

  • superUserGroupName: The super users for this Document Type are members of the TestWorkgroup.

  • blanketApproveGroupName: The members of the TestWorkgroup have blanketApproval right on this type of document.

  • defaultExceptionGroupName: The members of the TestWorkgroup will receive an exception notice for documents of this Document Type.

  • docHandler: The Doc Handler for this type of document is _blank.

  • active: This Document Type is currently active. In other words, it is in use.

  • routePath: The routing path for this Document Type is: AdHoc -> WorkflowDocument -> WorkflowDocument2 -> Acknowledge1 -> Acknowledge2.

  • routeNode: Based on the routePath, there are five nodes in the routing of this Document Type:

    • The starting node for this Document Type is AdHoc. On the initiation of a document of this type, the postProcessor in KEW activates the node AdHoc.

    • The next node in the routing for this Document Type is WorkflowDocument. On request, the node is activated, applies the rules in rule template, WorkflowDocumentTemplate, and sets the mandatory route as true. In other words, the document must route through this node.

    • The next node in the routing for this Document Type is WorkflowDocument2. On request, the node is activated, applies the rules in rule template, WorkflowDocument2Template, and sets the mandatory route as true. In other words, the document must route through this node.

    • The next node in the routing for this Document Type is Acknowledge1. On request, the node is activated and applies the rules in rule template, Ack1Template.

    • The next node in the routing for this Document Type is Acknowledge2. On request, the node is activated and applies the rules in rule template, Ack2Template.

Figure 3.16. Move Sequential Test

Move Sequential Test

MoveInProcessTest

<documentType>
    <name>MoveInProcessTest</name>
    <parent>BlanketApproveTest</parent>
    <description>Move In Process Test</description>
    <label>Move In Process Test</label>
    <postProcessorName>org.kuali.rice.kew.postprocessor.DefaultPostProcessor</postProcessorName>
    <superUserGroupName namespace=”KR-WKFLW” >TestWorkgroup</superUserGroupName>
    <blanketApproveGroupName namespace=”KR-WKFLW”>TestWorkgroup</blanketApproveGroupName>
    <defaultExceptionGroupName namespace=”KR-WKFLW”> TestWorkgroup</defaultExceptionGroupName>
    <docHandler>_blank</docHandler>
    <active>true</active>
    <routePaths>
        <routePath>
            <start name="AdHoc" nextNode="WorkflowDocument" />
            <requests name="WorkflowDocument" nextNode="MyRadSubProcess" />
            <process name="MyRadSubProcess" nextNode="WorkflowDocumentFinal" />
            <requests name="WorkflowDocumentFinal" />
        </routePath>
        <routePath processName="MyRadSubProcess" initialNode="WorkflowDocument2">
            <requests name="WorkflowDocument2" nextNode="WorkflowDocument3" />
            <requests name="WorkflowDocument3" />
        </routePath>
    </routePaths>
    <routeNodes>
        <start name="AdHoc">
            <activationType>P</activationType>
        </start>
        <requests name="WorkflowDocument">
            <activationType>P</activationType>
            <ruleTemplate>WorkflowDocumentTemplate</ruleTemplate>
        </requests>
        <process name="MyRadSubProcess" />
        <requests name="WorkflowDocument2">
            <activationType>P</activationType>
            <ruleTemplate>WorkflowDocument2Template</ruleTemplate>
        </requests>
        <requests name="WorkflowDocument3">
            <activationType>P</activationType>
            <ruleTemplate>WorkflowDocument3Template</ruleTemplate>
        </requests>
        <requests name="WorkflowDocumentFinal">
            <activationType>P</activationType>
            <ruleTemplate>WorkflowDocumentFinalTemplate</ruleTemplate>
        </requests>
    </routeNodes>
</documentType>
  • name: This is the Document Type for Move In Process Test.

  • Parent: The parent Document Type for this Document Type is BlanketApproveTest. This Document Type inherits the policies that BlanketApproveTest has.

  • description: This Document Type is used to test Move In Process.

  • label: This Document Type is recognized as the MoveInProcessTest type.

  • postProcessorName: The postProcessor for this Document Type is org.kuali.rice.kew.postprocessor.DefaultPostProcessor.

  • superUserGroupName: The super users for this Document Type are members of the TestWorkgroup.

  • blanketApproveGroupName: The members of the TestWorkgroup have blanketApproval right on this type of document.

  • defaultExceptionGroupName: The members of the TestWorkgroup will receive an exception notice for documents of this Document Type.

  • docHandler: The Doc Handler for this type of document is _blank.

  • active: This Document Type is currently active. In other words, it is in use.

  • routePath: The routing path for this Document Type is: AdHoc -> WorkflowDocument -> MyRadSub Process -> WorkflowDocument2 -> WorkflowDocument3 -> WorkflowDocumentFinal. There is a sub-process MyRadSubProcess in this path.

  • routeNode: As can be seen from the routePath, there are five nodes in the routing of this Document Type:

    • The starting node for this Document Type is AdHoc. On the initiation of a document of this type, the postProcessor in KEW activates the node AdHoc.

    • The next node in the routing for this Document Type is WorkflowDocument. On request, the node is activated, applies the rules in rule template, WorkflowDocumentTemplate, and initiates a sub process MyRadSubProcess.

    • The next node in MyRadSubProcess for this Document Type is WorkflowDocument2. On request, the node is activated and applies the rules in rule template, WorkflowDocument2Template.

    • The next node in MyRadSubProcess for this Document Type is WorkflowDocument3. O the request, the node is activated and applies the rules in rule template, WorkflowDocument3Template.

    • The next node in the routing for this Document Type is WorkflowDocumentFinal. On request, the node is activated and applies the rules in rule template WorkflowDocumentFinalTemplate.

Figure 3.17. Move In Process Test

Move In Process Test

AdhocRouteTest

<documentType>
	<name>AdhocRouteTest</name>
	<description>AdhocRouteTest</description>
	<label>AdhocRouteTest</label>

	<postProcessorName>org.kuali.rice.kew.postprocessor.DefaultPostProcessor</postProcessorName>
	<superUserGroupName namespace=”KR-WKFLW” >TestWorkgroup</superUserGroupName>
	<blanketApproveGroupName namespace=”KR-WKFLW”>TestWorkgroup</blanketApproveGroupName>
	<defaultExceptionGroupName namespace=”KR-WKFLW”> TestWorkgroup</defaultExceptionGroupName>
	<docHandler>_blank</docHandler>
	<active>true</active>
	<routePaths>
		<routePath>
			<start name="AdHoc" nextNode="One" />
			<requests name="One" />
		</routePath>
	</routePaths>
	<routeNodes>
		<start name="AdHoc">
			<activationType>P</activationType>
		</start>
		<requests name="One">
			<activationType>S</activationType>
			<ruleTemplate>WorkflowDocumentTemplate</ruleTemplate>
		</requests>
	</routeNodes>
</documentType>
  • name: This is the Document Type for Adhoc Route Test.

  • description: This Document Type is used to test Ad Hoc Route.

  • label: This Document Type is recognized as the AdhocRouteTest type.

  • postProcessorName: the postProcessor for this Document Type is org.kuali.rice.kew.postprocessor.DefaultPostProcessor.

  • superUserGroupName: The super users for this Document Type are members of the TestWorkgroup.

  • blanketApproveGroupName: The members of the TestWorkgroup have blanketApproval right on this type of document.

  • defaultExceptionGroupName: The members of the TestWorkgroup will receive an exception notice for documents of this Document Type.

  • docHandler: The Doc Handler for this type of document is _blank.

  • active: This Document Type is currently active. In other words, it is in use.

  • routePath: The routing path for this Document Type is: AdHoc -> One.

  • routeNode: Based on the routePath, there are two nodes in the routing of this Document Type:

    • The starting node for this Document Type is AdHoc. On the initiation of a document of this type, the postProcessor in KEW activates the node AdHoc.

    • The next node in the routing for this Document Type is One. On request, the node is activated by the type S and applies the rules in rule template, WorkflowDocumentTemplate.

Figure 3.18. Adhoc Route Test

Adhoc Route Test

PreApprovalTest

<documentType>
    <name>PreApprovalTest</name>
    <description>PreApprovalTest</description>
    <label>PreApprovalTest</label>
    <postProcessorName>org.kuali.rice.kew.postprocessor.DefaultPostProcessor</postProcessorName>
    <superUserGroupName namespace=”KR-WKFLW” >TestWorkgroup</superUserGroupName>
    <blanketApproveGroupName namespace=”KR-WKFLW”>TestWorkgroup</blanketApproveGroupName>
    <defaultExceptionGroupName namespace=”KR-WKFLW”> TestWorkgroup</defaultExceptionGroupName>
    <docHandler>_blank</docHandler>
    <active>true</active>
    <routePaths>
        <routePath>
            <start name="AdHoc" nextNode="PreApprovalTestOne" />
            <requests name="PreApprovalTestOne" />
        </routePath>
    </routePaths>
    <routeNodes>
        <start name="AdHoc">
            <activationType>P</activationType>
        </start>
        <requests name="PreApprovalTestOne">
            <activationType>S</activationType>
            <ruleTemplate>WorkflowDocumentTemplate</ruleTemplate>
        </requests>
    </routeNodes>
</documentType>
  • name: This is the Document Type for PreApprovalTest.

  • description: This Document Type is used to test Pre-Approval.

  • label: This Document Type is recognized as the PreApprovalTest type.

  • postProcessorName: The postProcessor for this Document Type is org.kuali.rice.kew.postprocessor.DefaultPostProcessor.

  • superUserGroupName: The super users for this Document Type are members of the TestWorkgroup.

  • blanketApproveGroupName: The members of the TestWorkgroup have blanketApproval right on this type of document.

  • defaultExceptionGroupName: The members of the TestWorkgroup will receive an exception notice for documents of this Document Type. • docHandler: The Doc Handler for this type of document is _blank.

  • active: This Document Type is currently active. In other words, it is in use.

  • routePath: The routing path for this Document Type is: AdHoc -> PreApprovalTestOne.

  • routeNode: Based on the routePath, there are two nodes in the routing of this Document Type:

    • The starting node for this Document Type is AdHoc. On the initiation of a document of this type, the postProcessor in KEW activates the node AdHoc.

    • The next node in the routing for this Document Type is PreApprovalTestOne. On request, the node is activated by the type S and applies the rules in rule template, WorkflowDocumentTemplate.

Figure 3.19. PreApproval Test

PreApproval Test

VariablesTest

<documentType>
    <name>VariablesTest</name>
    <description>VariablesTest</description>
    <label>VariablesTest</label>

    <postProcessorName>org.kuali.rice.kew.postprocessor.DefaultPostProcessor</postProcessorName>
    <superUserGroupName namespace=”KR-WKFLW” >TestWorkgroup</superUserGroupName>
    <blanketApproveGroupName namespace=”KR-WKFLW”>TestWorkgroup</blanketApproveGroupName>
    <defaultExceptionGroupName namespace=”KR-WKFLW”> TestWorkgroup</defaultExceptionGroupName>
    <docHandler>_blank</docHandler>
    <active>true</active>
    <routePaths>
        <routePath>
            <start name="AdHoc" nextNode="setStartedVar" />
            <simple name="setStartedVar" nextNode="setCopiedVar"/>
            <simple name="setCopiedVar" nextNode="PreApprovalTestOne"/>
            <requests name="PreApprovalTestOne" nextNode="setEndedVar"/>
            <simple name="setEndedVar" nextNode="setGoogleVar"/>
            <simple name="setGoogleVar" nextNode="setXPathVar"/>
            <simple name="setXPathVar" nextNode="resetStartedVar"/>
            <simple name="resetStartedVar" nextNode="logNode"/>
            <simple name="logNode" nextNode="logNode2"/>
            <simple name="logNode2"/>
        </routePath>
    </routePaths>
    <routeNodes>
        <start name="AdHoc">
            <activationType>P</activationType>
        </start>
        <simple name="setStartedVar">
            <type>org.kuali.rice.kew.engine.node.var.SetVarNode</type>
            <name>started</name>
            <value>startedVariableValue</value>
        </simple>
        <simple name="setCopiedVar">
            <type>org.kuali.rice.kew.engine.node.var.SetVarNode</type>
            <name>copiedVar</name>
            <value>var:started</value>
        </simple>
        <requests name="PreApprovalTestOne">
            <activationType>S</activationType>
            <ruleTemplate>WorkflowDocumentTemplate</ruleTemplate>
        </requests>
        <simple name="setEndedVar">
            <type>org.kuali.rice.kew.engine.node.var.SetVarNode</type>
            <name>ended</name>
            <value>endedVariableValue</value>
        </simple>
        <simple name="setGoogleVar">
            <type>org.kuali.rice.kew.engine.node.var.SetVarNode</type>
            <name>google</name>
            <value>url:http://google.com</value>
        </simple>
        <simple name="setXPathVar">
            <type>org.kuali.rice.kew.engine.node.var.SetVarNode</type>
            <name>xpath</name>
            <value>xpath:concat(local-name(//documentContent),$ended)</value>
        </simple>
        <simple name="resetStartedVar">
            <type>org.kuali.rice.kew.engine.node.var.SetVarNode</type>
            <name>started</name>
            <value>aNewStartedVariableValue</value>
        </simple>
        <simple name="logNode">
            <type>org.kuali.rice.kew.engine.node.LogNode</type>
            <message>var:xpath</message>
        </simple>
        <simple name="logNode2">
            <type>org.kuali.rice.kew.engine.node.LogNode</type>
            <level>ErRoR</level>
            <log>Custom.Logger.Name</log>
            <message>THAT'S ALL FOLKS</message>
        </simple>
    </routeNodes>
</documentType>
  • name: This is the Document Type for VariablesTest.

  • description: This Document Type is used to test Variables.

  • label: This Document Type is recognized as the VariablesTest type.

  • postProcessorName: The postProcessor for this Document Type is org.kuali.rice.kew.postprocessor.DefaultPostProcessor.

  • superUserGroupName: The super users for this Document Type are members of the TestWorkgroup.

  • blanketApproveGroupName: The members of the TestWorkgroup have blanketApproval right on this type of document.

  • defaultExceptionGroupName: The members of the TestWorkgroup will receive an exception notice for documents of this Document Type.

  • docHandler: The Doc Handler for this type of document is _blank.

  • active: This Document Type is currently active. In other words, it is in use.

  • routePath: The routing path for this Document Type is: AdHoc -> setStartedVar -> setCopiedVar -> preApprovalTestOne -> setEndedVar -> setGoogleVar -> setXPathVar -> resetStartedVar -> logNode -> logNode2.

  • routeNode: Based on the routePath, there are ten nodes in the routing of this Document Type:

    • The starting node for this Document Type is AdHoc. On the initiation of a document of this type, the postProcessor in KEW activates the node AdHoc.

    • The next node in the routing for this Document Type is setStartedVar.

      • Its type is org.kuali.rice.kew.engine.node.var.SetVarNode

      • Its name is started.

      • Its value is startedVariableValue.

    • The next node in the routing for this Document Type is setCopiedVar.

      • Its type is org.kuali.rice.kew.engine.node.var.SetVarNode.

      • Its name is copiedVar.

      • The value that it is copying is var:started.

    • The next node in the routing for this Document Type is preApprovalTestOne. On request, the node is activated by the type S and applies the rules in rule template WorkflowDocumentTemplate.

    • The next node in the routing for this Document Type is setEndedVar

      • Its type is org.kuali.rice.kew.engine.node.var.SetVarNode.

      • Its name is ended.

      • Its value is endedVariableValue.

    • The next node in the routing for this Document Type is setGoogleVar.

      • Its type is org.kuali.rice.kew.engine.node.var.SetVarNode.

      • Its name is google. It links to http://google.com.

    • The next node in the routing for this Document Type is setXpathVar.

      • Its type is org.kuali.rice.kew.engine.node.var.SetVarNode.

      • Its name is xpath.

      • It adds //documentContent to the current path.

    • The next node in the routing for this Document Type is resetStartedVar.

      • Its type is org.kuali.rice.kew.engine.node.var.SetVarNode.

      • Its name is started.

      • It resets the started node at a new node, aNewStartedVariableValue.

    • The next node in the routing for this Document Type is logNode.

      • Its type is org.kuali.rice.kew.engine.node.LogNode.

      • It sends a message about the xpath of the variables at var:xpath.

    • The next node in the routing for this Document Type is logNode2.

      • Its type is org.kuali.rice.kew.engine.node.LogNode.

      • Its level is ErRoR.

      • It opens the log Custom.Logger.Name.

      • It returns a message THAT'S ALL FOLKS.

Figure 3.20. Variables Test

Variables Test

SUApproveDocumentNotifications

<documentType>
    <name>SUApproveDocumentNotifications</name>
    <parent>SUApproveDocument</parent>
    <description>SUApproveDocumentNotifications</description>
    <label>SUApproveDocumentNotifications</label>

    <postProcessorName>org.kuali.rice.kew.postprocessor.DefaultPostProcessor</postProcessorName>
    <superUserGroupName namespace=”KR-WKFLW” >TestWorkgroup</superUserGroupName>
    <blanketApproveGroupName namespace=”KR-WKFLW”>TestWorkgroup</blanketApproveGroupName>
    <defaultExceptionGroupName namespace=”KR-WKFLW”> TestWorkgroup</defaultExceptionGroupName>
    <docHandler>_blank</docHandler>
    <active>true</active>
    <policies>
        <policy>
            <name>SEND_NOTIFICATION_ON_SU_APPROVE</name>
            <value>true</value>
        </policy>
    </policies>
</documentType>
  • name: This is the Document Type for SuperUser Approve Document Notifications.

  • description: This Document Type is used to test the SuperUser Approve Document Notifications.

  • label: This Document Type is recognized as the SUApproveDocumentNotifications type.

  • postProcessorName: The postProcessor for this Document Type is org.kuali.rice.kew.postprocessor.DefaultPostProcessor.

  • superUserGroupName: The super users for this Document Type are members of the TestWorkgroup.

  • blanketApproveGroupName: The members of the TestWorkgroup have blanketApproval right on this type of document.

  • defaultExceptionGroupName: The members of the TestWorkgroup will receive an exception notice for documents of this Document Type.

  • docHandler: The Doc Handler for this type of document is _blank.

  • active: This Document Type is currently active. In other words, it is in use.

  • There is just one policy for this Document Type: The SEND_NOTIFICATION_ON_SU_APPROVE policy is set true by default. In other words, notifications will be automatically sent on SuperUser's approval.

Document Type Policies

Current Document Type polices:

  • DISAPPROVE

  • DEFAULT_APPROVE

  • INITIATOR_MUST_ROUTE

  • INITIATOR_MUST_SAVE

  • INITIATOR_MUST_CANCEL

  • INITIATOR_MUST_BLANKET_APPROVE

  • LOOK_FUTURE

  • SEND_NOTIFICATION_ON_SU_APPROVE

  • SUPPORTS_QUICK_INITIATE

  • NOTIFY_ON_SAVE

  • blanketApprovePolicy

  • ALLOW_SU_POST_PROCESSOR_OVERIDE

Document Type Policies defined in the Document Type XML have this structure:

<documentType>
    <name>...</name>
    <policies>
        <policy>
            <name>DEFAULT_APPROVE</name>
            <value>true</value>
        </policy>
        <policy>
            <name>LOOK_FUTURE</name>
            <value>false</value>
        <policy>
    </policies>
</documentType>

DISAPPROVE

The DISAPPROVE policy determines whether a document will discontinue routing (transactions). When a document has been disapproved, the document initiator and previous approvers will receive notice of this disapproval action.

DEFAULT_APPROVE

The DEFAULT_APPROVE policy determines whether a document will continue processing with or without any approval requests. If a document is set to have no approval requests, its put into exception routing. Then, the document will continue to route to the exception workgroup associated with the last route node or to the workgroup defined in the defaultExceptionWorkgroupname.

INITIATOR_MUST_ROUTE

The INITIATOR_MUST_ROUTE policy sets the rule that the user who initiates the document must route it.

INITIATOR_MUST_SAVE

The INITIATOR_MUST_SAVE policy sets the rule that the user who initiated the document will be the only one authorized to save the document.

INITIATOR_MUST_CANCEL

The INITIATOR_MUST_CANCEL policy sets the rule that the user who initiated the document will be the only one authorized to cancel the document.

INITIATOR_MUST_BLANKET_APPROVE

The INITIATOR_MUST_BLANKET_APPROVE policy sets the rule that the user who initiated the document is the only one authorized to blanket approve the document.

LOOK_FUTURE

The LOOK_FUTURE policy determines whether the document can be brought into a simulated route from the route log. This policy simulates where the document would end up if it completed the route.

SEND_NOTIFICATION_ON_SU_APPROVE

The SEND_NOTIFICATION_ON_SU_APPROVE policy indicates to KEW that it is to send a notification on SuperUser approval.

SUPPORTS_QUICK_INITIATE

The SUPPORTS_QUICK_INITIATE policy indicates whether the Document Type is displayed on the Quick Links, so that users can quickly initiate instances of the document.

NOTIFY_ON_SAVE

The NOTIFY_ON_SAVE policy indicates whether a notification should be sent in when a save action is applied to this Document Type.

blanketApprovePolicy

The blanketApprovePolicy policy indicates who can blanket approve a workflow document. Its values are either ANY or NONE.

  • ANY means that anybody can blanket approve the document.

  • NONE means that no one can blanket approve the document.

Alternatively, the configuration of the document can be set up to specify a blanketApproveWorkgroupName. blanketApproveWorkgroupName indicates that members of that workgroup can blanket approve the document. You can specify either blanketApprovePolicy OR blanketApproveWorkgroupName in the Document Type.

Since the blanket approve policy is not a true/false policy (like the others), it is specified as an element in the Document Type XML:

<documentType>
    <name>...</name>
    .
    .
    .
    <blanketApprovePolicy>NONE</blanketApprovePolicy>
</documentType>

ALLOW_SU_POST_PROCESSOR_OVERIDE

There is currently the ability to override the "Perform Post Processor Logic" on the "Super User Action on Action Requests" page. This functionality is configurable by document type and as such allows for inheritance.

By default, the ALLOW_SU_POST_PROCESSOR_OVERIDE it's set to true. The checkbox appears on the super user screen as:

Figure 3.21. Super User Action on Requests

Super User Action on Requests

In order to turn off the post processor check box, you would add this to the documentType definition:

<policies>
    <policy>
        <name>ALLOW_SU_POSTPROCESSOR_OVERRIDE</name>
        <value>false</value>
    </policy>
</policies>

Inheritance

Document Types can specify a parent Document Type. This allows them to be included in a Document Type hierarchy from which certain behavior can be inherited from their parent Document Type.

Inheritable Fields

These fields are inherited:

  • superUserGroupName: Indicates members of the workgroup who can perform SuperUser actions on the document

  • blanketApproveGroupName: Indicates members of the workgroup that can blanket approve the document.

  • notificationFromAddress: Sends a notice to the sender when the transfer of the document is completed.

  • messageEntity: A head and body of the message.

  • policies: Indicates a set of rule(s) applied in the document. For each policy, True means policy DOES apply, False means policy does NOT apply.

  • searchable attributes: Constraint(s) assigned as the searchable criteria for a document.

  • route paths/route nodes: Designated traveling points before the document reaches its destination in a routing process.

Special notes about inheritance:

  1. Policies: In the Policies section, there are multiple Document Type policies (INITAITOR_MUST_ROUTE, DEFAULT_APPROVE, etc). Each policy can be overridden on an individual basis. In contrast to the route path, there is no need to override the entire policies section for a Document Type. For more detailed information about Document Type policies, please see Document Type Policies (above) in this document.

  2. Route paths/ route nodes: To override the route path and route node definitions of a parent Document Type, you must override ALL route node and route path definitions. You cannot inherit and use just part of a route path; it's all or nothing.

Document Type hierarchy and the Rules Engine

The Rules Engine follows these rules to determine its rule evaluation set for a Document Type at a particular node:

  1. The Rules Engine looks at the Rule Template name of the current node and selects all rules with that template and that document's Document Type. It adds those rules to the rule evaluation set.

  2. If the Document Type has a parent Document Type, it selects all rules with that template and that parent Document Type and adds those to the rule evaluation set.

  3. Its repeats step two until it reaches the root of the Document Type hierarchy.

  4. The final rule evaluation set includes all of these rules.