Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

The purpose of this tutorial is to:

  1. Help clients with little or no programmer resources to gain expertise in developing lightweight complex department-wide workflows
  2. Help clients to move from a paper-based form paradigm to an electronic form paradigm
  3. Help clients to progress to building workflows that facilitate complex business processes.

In this tutorial we will use eDocLite to facilitate a business process called Request Firewall Change which is owned by IET Application Development. This time the process involves more responsible parties and more levels of decision making (yikes!!!).

...

Model the Business Process

The process in detail:

This time there are four responsible parties: Requester, Desktop Services, Firewall Policy Group, and

...

Firewall Gatekeeper

...


Here is a breakdown of each parties responsibilities:

Requester

  1. Submits the request just as in the previous tutorial.
  2. Is now allowed to specify if the request is URGENT

Desktop Services

Firewall Policy Group

Firewall Gatekeeper

  1. The Desktop Services group will field all requests instead of the Firewall Policy Group. We want whoever receives the request to check if the firewall modification being requested is already in effect. If so, disapprove the request. The Requester will then get notification. Also if the request is URGENT, forward the request straight to the Firewall Gatekeeper to make the firewall modification. Otherwise, forward the request to the Firewall Policy Group.
  2. The Firewall Policy Group will review all normal requests and, upon approval, forward the request to the Firewall Gatekeeper. This group will review all URGENT requests after the Firewall Gatekeeper has fulfilled them.
  3. The Firewall Gatekeeper performs the actual modification of the firewall. As far as the process goes, all the gatekeeper will do is acknowledge the request and implement the modification to the firewall. Once the modification is complete, the gatekeeper will forward the request onward. We say "onward", because the gatekeeper is not routing the request to anyone per se. Behind the scenes, if the request is URGENT, then the request gets routed to the Firewall Policy Group. Otherwise the process is finished and the Requester gets a notification (and maybe all the other responsible parties too).
  4. To complicate things further, if the Firewall Gatekeeper modified the firewall based on an URGENT request, and the Firewall Policy Group decides to disapprove the request after the fact, then the request goes back to the gatekeeper to reverse the firewall modification.
  5. We documented the Review Non-Urgent Request and Review Urgent Request as subprocesses because there is the potential for the Firewall Policy Group to have continuous correspondence with the Requester. We'll address these in a future Way More Advanced tutorial.

In using eDocLite to facilitate this process, we'll need a few things:

...

Code Block
titleRequestFirewallChange.eDoc.RoutingRules.xml
<?xml version="1.0" encoding="UTF-8"?>
<data xmlns="ns:workflow" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="ns:workflow resource:WorkflowData">
<rules xmlns="ns:workflow/Rule" xsi:schemaLocation="ns:workflow/Rule resource:Rule">
	<rule>
      		<documentType>RequestFirewallChange.eDoc.ChildDocType</documentType>
      		<ruleTemplate>RequestFirewallChange.eDoc.ReviewCurrentConfiguration.RuleTemplate</ruleTemplate>
      		<description>ReviewCurrentConfiguration Routing Rule</description>
      		<ignorePrevious>false</ignorePrevious>
      		<responsibilities>
        		<responsibility>
          			<workgroup>ucd.IET.DES.DevelopmentSupport.WorkGroup </workgroup>
          			<actionRequested>A</actionRequested>
          			<priority>1</priority>
        		</responsibility>
      		</responsibilities>
    	</rule>
	<rule>
      		<documentType>RequestFirewallChange.eDoc.ChildDocType</documentType>
      		<ruleTemplate>RequestFirewallChange.eDoc.FulfillUrgentRequest.RuleTemplate</ruleTemplate>
      		<description>FulfillUrgentRequest Routing Rule</description>
      		<ignorePrevious>false</ignorePrevious>
      		<ruleExtensions>
        			<ruleExtension>
         	 			<attribute>RequestFirewallChange.eDoc.isUrgent.RuleAttribute</attribute>
          				<ruleTemplate>RequestFirewallChange.eDoc.ReviewCurrentConfiguration.RuleTemplate</ruleTemplate>
          				<ruleExtensionValues>
            					<ruleExtensionValue>
              						<key>isUrgent</key>
              						<value>YES</value>
            					</ruleExtensionValue>
          				</ruleExtensionValues>
        			</ruleExtension>




	      	</ruleExtensions>
      		<responsibilities>
        		<responsibility>
          			<workgroup>ucd.IET.DCCS.FirewallSysAdmin.Workgroup</workgroup>
          			<actionRequested>K</actionRequested>
          			<priority>1</priority>
        		</responsibility>
      		</responsibilities>
    	</rule>
	<rule>
      		<documentType>RequestFirewallChange.eDoc.ChildDocType</documentType>
      		<ruleTemplate>RequestFirewallChange.eDoc.ReviewUrgentRequest.RuleTemplate</ruleTemplate>
      		<description>ReviewUrgentRequest Routing Rule</description>
      		<ignorePrevious>false</ignorePrevious>
      		<responsibilities>
        		<responsibility>
          			<workgroup>ucd.IET.AppDev.FirewallPolicyGroup.Workgroup </workgroup>
          			<actionRequested>A</actionRequested>
          			<priority>1</priority>
        		</responsibility>
      		</responsibilities>
    	</rule>
	<rule>
      		<documentType>RequestFirewallChange.eDoc.ChildDocType</documentType>
      		<ruleTemplate>RequestFirewallChange.eDoc.ReviewRequest.RuleTemplate</ruleTemplate>
      		<description>ReviewRequest Routing Rule</description>
      		<ignorePrevious>false</ignorePrevious>
      		<ruleExtensions>
        			<ruleExtension>
         	 			<attribute>RequestFirewallChange.eDoc.isUrgent.RuleAttribute</attribute>
          				<ruleTemplate>RequestFirewallChange.eDoc.ReviewCurrentConfiguration.RuleTemplate</ruleTemplate>
          				<ruleExtensionValues>
            					<ruleExtensionValue>
              						<key>isUrgent</key>
              						<value>NO</value>
            					</ruleExtensionValue>
          				</ruleExtensionValues>
        			</ruleExtension>
	      	</ruleExtensions>
      		<responsibilities>
        		<responsibility>
          			<workgroup>ucd.IET.AppDev.FirewallPolicyGroup.Workgroup </workgroup>
          			<actionRequested>A</actionRequested>
          			<priority>1</priority>
        		</responsibility>
      		</responsibilities>
    	</rule>
	<rule>
      		<documentType>RequestFirewallChange.eDoc.ChildDocType</documentType>
      		<ruleTemplate>RequestFirewallChange.eDoc.FulfillRequest.RuleTemplate</ruleTemplate>
      		<description>FulfillRequest Routing Rule</description>
      		<ignorePrevious>false</ignorePrevious>
      		<responsibilities>
        		<responsibility>
          			<workgroup>ucd.IET.DCCS.FirewallSysAdmin.Workgroup</workgroup>
          			<actionRequested>A</actionRequested>
          			<priority>1</priority>
        		</responsibility>
      		</responsibilities>
    	</rule>
	<rule>
      		<documentType>RequestFirewallChange.eDoc.ChildDocType</documentType>
      		<ruleTemplate>RequestFirewallChange.eDoc.AcknowledgeConfiguration.RuleTemplate</ruleTemplate>
      		<description>AcknowledgeConfiguration Routing Rule</description>
      		<ignorePrevious>true</ignorePrevious>
      		<responsibilities>
        		<responsibility>
          			<role>edu.iu.uis.eden.routetemplate.InitiatorRoleAttribute!INITIATOR</role>
				<approvePolicy>F</approvePolicy>
          			<actionRequested>K</actionRequested>
          			<priority>1</priority>
        		</responsibility>
      		</responsibilities>
    	</rule>
</rules>
</data>

...