Versions Compared

Key

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

...

Code Block
titleRequestFirewallChange.eDoc.ChildDocType.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">
<documentTypes xmlns="ns:workflow/DocumentType" xsi:schemaLocation="ns:workflow/DocumentType resource:DocumentType">
	<documentType>
		<name>RequestFirewallChange.eDoc.ChildDocType</name>
		<parent>RequestFirewallChange.eDoc.ParentDocType</parent>
		<description>Request Firewall Change eDocLite Child Document Type</description>
		<label>Request Firewall Change eDocLite Child Document Typee<Type</label>
		<postProcessorName>edu.iu.uis.eden.edl.EDocLitePostProcessor</postProcessorName>

		<superUserWorkgroupName>ucd.IET.AppDev.KualiRice.SysAdmin.Workgroup</superUserWorkgroupName>
		<defaultExceptionWorkgroupName>ucd.IET.AppDev.KualiRice.SysAdmin.Workgroup</defaultExceptionWorkgroupName>
		<docHandler>${workflow.url}/EDocLite</docHandler>
		<active>true</active>
		<routingVersion>2</routingVersion>
		<routePaths>
			<routePath>
          			<start name="RequestFirewallChange.eDoc.Request.Node" nextNode="RequestFirewallChange.eDoc.ReviewCurrentConfiguration.Node" />
		          	<requests name="RequestFirewallChange.eDoc.ReviewCurrentConfiguration.Node" nextNode="RequestFirewallChange.eDoc.isUrgentInitialApproval.SplitNode" />
				<split<requests name="RequestFirewallChange.eDoc.isUrgentInitialApproval.SplitNode" nextNode="RequestFirewallChange.eDoc.AcknowledgeConfigurationFinalApproval.Node">
					<branch name="RequestFirewallChange.eDoc.isUrgent.Branch">
		 />
				<requests name="RequestFirewallChange.eDoc.FulfillUrgentRequestFinalApproval.Node" nextNode="RequestFirewallChange.eDoc.ReviewUrgentRequestAcknowledgeConfiguration.Node" />
						<requests name="RequestFirewallChange.eDoc.ReviewUrgentRequestAcknowledgeConfiguration.Node" nextNode="RequestFirewallChange.eDoc.isUrgent.Join" />
        	      </routePath>
				</branch>routePaths>
	      <routeNodes>
				<branch<start name="RequestFirewallChange.eDoc.isNotUrgentRequest.BranchNode">
				<activationType>P</activationType>
			</start>
			<requests name="RequestFirewallChange.eDoc.ReviewRequestReviewCurrentConfiguration.Node" nextNode="RequestFirewallChange.eDoc.FulfillRequest.Node" />>
				<activationType>P</activationType>
						<requests name="RequestFirewallChange<ruleTemplate>RequestFirewallChange.eDoc.FulfillRequest.Node" nextNode="RequestFirewallChange.eDoc.isUrgent.Join" />
		ReviewCurrentConfiguration.RuleTemplate</ruleTemplate>
			</branch>requests>
					<join<requests name="RequestFirewallChange.eDoc.isUrgentInitialApproval.JoinNode" />
				<<activationType>P</split>activationType>
				<requests name="RequestFirewallChange<ruleTemplate>RequestFirewallChange.eDoc.AcknowledgeConfigurationInitialApproval.Node" />
        	      </routePath>
RuleTemplate</ruleTemplate>
			</routePaths>
	      <routeNodes>requests>
			<start<requests name="RequestFirewallChange.eDoc.RequestFinalApproval.Node">
				<activationType>P</activationType>
			</start>
			<requests name="RequestFirewallChange	<ruleTemplate>RequestFirewallChange.eDoc.ReviewCurrentConfiguration.Node">
				<activationType>P</activationType>
				<ruleTemplate>RequestFirewallChange.eDoc.ReviewCurrentConfiguration.FinalApproval.RuleTemplate</ruleTemplate>
			</requests>
			<split name="RequestFirewallChange.eDoc.isUrgent.Split" />
			<requests name="RequestFirewallChange.eDoc.FulfillUrgentRequestAcknowledgeConfiguration.Node">
				<activationType>P<<activationType>S</activationType>
				<ruleTemplate>RequestFirewallChange.eDoc.FulfillUrgentRequestAcknowledgeConfiguration.RuleTemplate</ruleTemplate>
			</requests>
			<requests name="RequestFirewallChange.eDoc.ReviewUrgentRequest.Node">	<mandatoryRoute>false</mandatoryRoute>
				<activationType>P<<finalApproval>false</activationType>finalApproval>
				<ruleTemplate>RequestFirewallChange.eDoc.ReviewUrgentRequest.RuleTemplate</ruleTemplate>
	</requests>
		</requests>routeNodes>
			<requests name="RequestFirewallChange.eDoc.ReviewRequest.Node">
				<activationType>P</activationType>
				<ruleTemplate>RequestFirewallChange.eDoc.ReviewRequest.RuleTemplate</ruleTemplate>
			</requests>
			<requests name="RequestFirewallChange.eDoc.FulfillRequest.Node">
				<activationType>P</activationType>
				<ruleTemplate>RequestFirewallChange.eDoc.FulfillRequest.RuleTemplate</ruleTemplate>
			</requests>
			<join name="RequestFirewallChange.eDoc.isUrgent.Join" />
			<requests name="RequestFirewallChange.eDoc.AcknowledgeConfiguration.Node">
				<activationType>S</activationType>
				<ruleTemplate>RequestFirewallChange.eDoc.AcknowledgeConfiguration.RuleTemplate</ruleTemplate>
				<mandatoryRoute>false</mandatoryRoute>
				<finalApproval>false</finalApproval>
			</requests>
		</routeNodes>
	</documentType>
</documentTypes>
</data>

Create the eDocLite Form

We now build the data entry form based on the request details required by our process.

...

Code Block
titleRequestFirewallChange.eDoc.Form.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">
<edoclite xmlns="ns:workflow/EDocLite" xsi:schemaLocation="ns:workflow/EDocLite resource:EDocLite">
  
	<edl name="RequestFirewallChange.eDoc.Form" title="Request Firewall Change">
		<security />
		<createInstructions>** Fields with an asterisk are required.</createInstructions>
		<instructions>** Fields with an asterisk are required.</instructions>
		<validations />
		<attributes />
	        ...
	        ...
	</edl>

	<style name="RequestFirewallChange.eDoc.Style">
	<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:my-class="xalan://edu.iu.uis.eden.edl.WorkflowFunctions" version="1.0">
		<xsl:include href="widgets" />
		<xsl:output indent="yes" method="html" omit-xml-declaration="yes" version="4.01" />
		<xsl:variable name="actionable" select="/documentContent/documentState/actionable" />
		<xsl:variable name="docHeaderId" select="/documentContent/documentState/docId" />
		<xsl:variable name="editable" select="/documentContent/documentState/editable" />
		<xsl:variable name="globalReadOnly" select="/documentContent/documentState/editable != 'true'" />
		<xsl:variable name="docStatus" select="//documentState/workflowDocumentState/status" />
		<xsl:variable name="isAtNodeInitiated" select="my-class:isAtNode($docHeaderId, 'Initiated')" />
		<xsl:variable name="isPastInitiated" select="my-class:isNodeInPreviousNodeList('Initiated', $docHeaderId)" />
		<xsl:variable name="isUserInitiator" select="my-class:isUserInitiator($docHeaderId)" />
		<xsl:param name="overrideMain" select="'true'" />
        
		<xsl:template name="mainForm">
			<html xmlns="">
			  <head>
			  <script language="javascript" />
			  <xsl:call-template name="htmlHead" />
			  </head>
  			<body onload="onPageLoad()">
			  <xsl:call-template name="errors" />
			  <xsl:call-template name="header" />
			  <xsl:call-template name="instructions" />
		  	  <xsl:variable name="formTarget" select="'EDocLite'" />
		          <form action="{$formTarget}" enctype="multipart/form-data" id="edoclite" method="post" onsubmit="return validateOnSubmit(this)">
		  	    <xsl:call-template name="hidden-params" />
		  	    <xsl:call-template name="mainBody" />
		  	    <xsl:call-template name="notes" />
		  	    <br />
		  	    <xsl:call-template name="buttons" />
		  	    <br />
		  	  </form>
                          <xsl:call-template name="footer" />
    		  	</body>
    		       </html>
		</xsl:template>

		<xsl:template name="mainBody">
			...
			...
 		</xsl:template>

  		<xsl:template name="nbsp">
			<xsl:text disable-output-escaping="yes">&amp;nbsp;</xsl:text>
		</xsl:template>
	</xsl:stylesheet>
	</style>

	<association>
		<docType>RequestFirewallChange.eDoc.ChildDocType</docType>
		<definition>RequestFirewallChange.eDoc.Form</definition>
		<style>RequestFirewallChange.eDoc.Style</style>
    		<active>true</active>
  	</association>

</edoclite>
</data>

...

titleRequestFirewallChange.eDoc.Form.xml

...

</documentType>
</documentTypes>
</data>

Create the eDocLite Form

We now build the data entry form based on the request details required by our process.

  1. The eDocLite Form Skeleton
    The Form Skeleton is the structure of the entire eDocLite form minus the Form Definition and Form Stylesheet. We separate this out so that you can use it as a base template for all of your eDocLite forms. This particular skeleton follows the scheme of the out-of-the-box Kuali Rice forms. The scheme uses the same look and feel and makes calls to the eDocLite widgets on the Kuali Rice server.
    Code Block
    titleRequestFirewallChange.eDoc.Form.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">
    <edoclite xmlns="ns:workflow/EDocLite" xsi:schemaLocation="ns:workflow/EDocLite resource:EDocLite">
      
    	<edl name="RequestFirewallChange.eDoc.Form" title="Request Firewall Change">
    		<security />
    		<createInstructions>** Fields with an asterisk are required.</createInstructions>
    		<instructions>** Fields with an asterisk are required.</instructions>
    		<validations />
    		<attributes />
    	        ...
    	        ...
    	</edl>
    
    	<style name="RequestFirewallChange.eDoc.Style">
    	<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:my-class="xalan://edu.iu.uis.eden.edl.WorkflowFunctions" version="1.0">
    		<xsl:include href="widgets" />
    		<xsl:output indent="yes" method="html" omit-xml-declaration="yes" version="4.01" />
    		<xsl:variable name="actionable" select="/documentContent/documentState/actionable" />
    		<xsl:variable name="docHeaderId" select="/documentContent/documentState/docId" />
    		<xsl:variable name="editable" select="/documentContent/documentState/editable" />
    		<xsl:variable name="globalReadOnly" select="/documentContent/documentState/editable != 'true'" />
    		<xsl:variable name="docStatus" select="//documentState/workflowDocumentState/status" />
    		<xsl:variable name="isAtNodeInitiated" select="my-class:isAtNode($docHeaderId, 'Initiated')" />
    		<xsl:variable name="isPastInitiated" select="my-class:isNodeInPreviousNodeList('Initiated', $docHeaderId)" />
    		<xsl:variable name="isUserInitiator" select="my-class:isUserInitiator($docHeaderId)" />
    		<xsl:param name="overrideMain" select="'true'" />
            
    		<xsl:template name="mainForm">
    			<html xmlns="">
    			  <head>
    			  <script language="javascript" />
    			  <xsl:call-template name="htmlHead" />
    			  </head>
      			<body onload="onPageLoad()">
    			  <xsl:call-template name="errors" />
    			  <xsl:call-template name="header" />
    			  <xsl:call-template name="instructions" />
    		  	  <xsl:variable name="formTarget" select="'EDocLite'" />
    		          <form action="{$formTarget}" enctype="multipart/form-data" id="edoclite" method="post" onsubmit="return validateOnSubmit(this)">
    		  	    <xsl:call-template name="hidden-params" />
    		  	    <xsl:call-template name="mainBody" />
    		  	    <xsl:call-template name="notes" />
    		  	    <br />
    		  	    <xsl:call-template name="buttons" />
    		  	    <br />
    		  	  </form>
                              <xsl:call-template name="footer" />
        		  	</body>
        		       </html>
    		</xsl:template>
    
    		<xsl:template name="mainBody">
    			...
    			...
     		</xsl:template>
    
      		<xsl:template name="nbsp">
    			<xsl:text disable-output-escaping="yes">&amp;nbsp;</xsl:text>
    		</xsl:template>
    	</xsl:stylesheet>
    	</style>
    
    	<association>
    		<docType>RequestFirewallChange.eDoc.ChildDocType</docType>
    		<definition>RequestFirewallChange.eDoc.Form</definition>
    		<style>RequestFirewallChange.eDoc.Style</style>
        		<active>true</active>
      	</association>
    
    </edoclite>
    </data>
    

  2. Form Definition
    The Form Definition defines the data entry fields on the form. Our definitions define field display characteristics and field validations. Place your form definition between the <edl> and </edl> tags in the Form Skeleton.
    Code Block
    titleRequestFirewallChange.eDoc.Form.xml
    
        <fieldDef name="dateOfChange" title="Date and Time for Change">
          <display>
            <type>text</type>
          </display>
          <validation required="true">
            <regex>^[0-1]?[0-9](/|-)[0-3]?[0-9](/|-)[1-2][0-9][0-9][0-9]$</regex>
            <message>Enter a valid date in the format mm/dd/yyyy.</message>
          </validation>
        </fieldDef>
    
        <fieldDef name="descriptionOfChange" title="Description of the Port Change">
          <display>
            <type>textarea</type>
            <meta>
              <name>rows</name>
              <value>5</value>
            </meta>
            <meta>
              <name>cols</name>
              <value>60</value>
            </meta>
            <meta>
              <name>wrap</name>
              <value>hard</value>
            </meta>
          </display>
          <validation required="true">
            <message>Enter a description of the port change.</message>
          </validation>
        </fieldDef>
    
        <fieldDef attributeName="RequestFirewallChange.eDoc.isUrgent.RuleAttribute" name="isUrgent" title="URGENT">
          <display>
            <type>select</type>
              <values title="NO">NO</values>
              <values title="YES">YES</values>
          </display>
          <validation required="true">
            <regex>^[0-1]?[0-9](/|-)[0-3]?[0-9](/|-)[1-2][0-9][0-9][0-9]$</regex>
            <message>Enter a valid date in the format mm/dd/yyyy.  <message>Is this request URGENT?</message>
          </validation>
        </fieldDef>
    
        <fieldDef name="descriptionOfChangeingressEgressCharacteristic" title="Description of the Port ChangeIngress/Egress Characteristic">
          <display>
            <type>textarea</type>
            <meta>
              <name>rows</name>
              <value>5</value>
            </meta>
            <meta>
              <name>cols</name>
              <value>60</value>
            </meta>
            <meta>
              <name>wrap</name>
              <value>hard</value>
            </meta>
          </display>
          <validation required="true">
            <message>Enter a description of the portingress/egress changecharacteristic.</message>
          </validation>
        </fieldDef>
    
        <fieldDef attributeName="RequestFirewallChange.eDoc.isUrgent.RuleAttribute" name="isUrgentdestinationSourceSpecification" title="URGENTDestination/Source Specification">
          <display>
            <type>select<<type>textarea</type>
            <meta>
             <values title="NO">NO</values> <name>rows</name>
              <values title="YES">YES</values><value>5</value>
            </display>meta>
            <validation required="true"><meta>
              <name>cols</name>
    <message>Is this request URGENT?</message>       </validation><value>60</value>
            </fieldDef>
    meta>
        <fieldDef name="ingressEgressCharacteristic" title="Ingress/Egress Characteristic"> <meta>
         <display>     <name>wrap</name>
       <type>textarea</type>       <value>hard</value>
     <meta>       </meta>
          <name>rows<</name>display>
          <validation required="true">
      <value>5</value>      <message>Enter the destination/source specification.</meta>message>
          </validation>
     <meta>   </fieldDef>
    
        <fieldDef  <name>cols</name>
       name="termOfRuleChange" title="Term of Rule Change (indefinite or otherwise)">
          <value>60</value><display>
            <<type>text</meta>type>
            <meta>
              <name>wrap<<name>size</name>
              <value>hard<<value>50</value>
            </meta>
          </display>
          <validation required="true">
            <message>Enter term of the ingress/egressrule characteristicchange.</message>
          </validation>
        </fieldDef>
    
        <fieldDef name="destinationSourceSpecificationrelatedProject" title="Destination/Source SpecificationProject Related to Requested Rule(s) Change">
          <display>
            <type>textarea<<type>text</type>
            <meta>
              <name>rows<<name>size</name>
              <value>5<<value>50</value>
            </meta>
          </display>
     <meta>     <validation required="true">
        <name>cols</name>    <message>Enter a related project to the requested <value>60</value>rule change.</message>
          </validation>
         </meta>
         </fieldDef>
    

  3. Form Stylesheet
    The Form Stylesheet defines the layout of the form and renders the fields from our Form Definition onto the form. Our layout is an HTML table with a row for each field. In this case, we are customizing the mainBody piece of the stylesheet. In general, place your form stylesheet between the <style> and </style> tags in the Form Skeleton.
    Code Block
    titleRequestFirewallChange.eDoc.Form.xml
    
      <xsl:template name="mainBody">
        <meta><table xmlns="" align="center" border="0" cellpadding="0"       <name>wrap</name>
              <value>hard</value>
            </meta>
          </display>
          <validation required="truecellspacing="0" class="bord-r-t" width="80%">
          <tr>
     <message>Enter the destination/source specification.</message>    <td align="left"  </validation>
        </fieldDef>
    
        <fieldDef name="termOfRuleChange" title="Term of Rule Change (indefinite or otherwise)border="3" class="thnormal" colspan="1">
          <display>    <br />
       <type>text</type>       <h3>
     <meta>           <name>size</name>University of California, Davis
           <value>50</value>        <br </meta>>
          </display>       <validation required="true">
     eDoclite Tutorial
    	  </h3>
          <message>Enter term of the rule<br change.</message>/>
            </validation>td>
        </fieldDef>    <td  <fieldDef name="relatedProject" title="Project Related to Requested Rule(s) Change">align="center" border="3" class="thnormal" colspan="2">
              <br />
    <display>         <type>text</type> <h2>Request Firewall Change Form</h2>
        <meta>    </td>
          <name>size<</name>tr>
          <tr>
        <value>50</value>    <td class="headercell5" colspan="100%">
      </meta>      <b>Request </display>
      Details</b>
       <validation required="true">    </td>
        <message>Enter a related</tr>
    project to the requested rule change.</message> <tr>
         </validation>   <td  </fieldDef>
    
    Form Stylesheet
    The Form Stylesheet defines the layout of the form and renders the fields from our Form Definition onto the form. Our layout is an HTML table with a row for each field. In this case, we are customizing the mainBody piece of the stylesheet. In general, place your form stylesheet between the <style> and </style> tags in the Form Skeleton.
    Code Block
    titleRequestFirewallChange.eDoc.Form.xml
    class="thnormal">
              <xsl:call-template name="mainBodywidget_render">
               <table xmlns <xsl:with-param name="fieldName" alignselect="center" border="0" cellpadding="0" cellspacing="0" class="bord-r-t" width="80%">'dateOfChange'" />
                <xsl:with-param name="renderCmd" select="'title'" />
              </xsl:call-template>
              <font color="#ff0000">*</font>
          <tr>  </td>
          <td align="left" border="3" <td class="thnormal" colspan="1"datacell">
              <br /<xsl:call-template name="widget_render">
              <h3>  <xsl:with-param name="fieldName" select="'dateOfChange'" />
            University of California, Davis <xsl:with-param name="renderCmd" select="'input'" />
            <br />   <xsl:with-param name="readOnly" select="$isPastInitiated" />
          eDoclite Tutorial 	  </h3>xsl:call-template>
            </td>
     <br />    </tr>
        </td>  <tr>
          <td align="center" border="3" <td class="thnormal" colspan="2">
              <br /<xsl:call-template name="widget_render">
              <h2>Request Firewall Change Form</h2>
            </td>
          </tr><xsl:with-param name="fieldName" select="'descriptionOfChange'" />
          <tr>         <td class<xsl:with-param name="headercell5renderCmd" colspanselect="100%'title'" />
             <b>Request Details</b></xsl:call-template>
            </td>  <font color="#ff0000">*</font>
       </tr>       <tr></td>
            <td class="thnormaldatacell">
              <xsl:call-template name="widget_render">
                <xsl:with-param name="fieldName" select="'dateOfChangedescriptionOfChange'" />
                <xsl:with-param name="renderCmd" select="'titleinput'" />
               </xsl:call-template>
     <xsl:with-param name="readOnly" select="$isPastInitiated" />
             <font color="#ff0000">*</font>xsl:call-template>
            </td>
          </tr>
       <td class="datacell">  <tr>
            <xsl:call-template name<td class="widget_renderthnormal">
    
               <xsl:withcall-paramtemplate name="fieldName" select="'dateOfChange'" /widget_render">
                <xsl:with-param name="renderCmdfieldName" select="'inputisUrgent'" />
     
              <xsl:with-param name="readOnlyrenderCmd" select="$isPastInitiated'title'" />
              </xsl:call-template>
            </td>  <font color="#ff0000">*</font>
       </tr>       <tr></td>
            <td class="thnormaldatacell">
              <xsl:call-template name="widget_render">
                <xsl:with-param name="fieldName" select="'descriptionOfChangeisURgent'" />
     
              <xsl:with-param name="renderCmd" select="'title'input'" />
              <xsl:with-param name="readOnly" select="$isPastInitiated" />
              </xsl:call-template>
            </td>
         <font color="#ff0000">*</font>tr>
            </td><tr>
            <td class="datacellthnormal">
              <xsl:call-template name="widget_render">
                <xsl:with-param name="fieldName" select="'descriptionOfChangeingressEgressCharacteristic'" />
                <xsl:with-param name="renderCmd" select="'inputtitle'" />
                <xsl:with-param name="readOnly" select="$isPastInitiated" /></xsl:call-template>
                 </xsl:call-template><font color="#ff0000">*</font>
            </td>
          </tr>  <td class="datacell">
       <tr>         <td class="thnormal"><xsl:call-template name="widget_render">
                <xsl:callwith-templateparam name="widget_render">"fieldName" select="'ingressEgressCharacteristic'" />
                <xsl:with-param name="fieldNamerenderCmd" select="'isUrgentinput'" />
                <xsl:with-param name="renderCmdreadOnly" select="'title'$isPastInitiated" />
              </xsl:call-template>
             </td>
         <font color="#ff0000">*</font>tr>
          <tr>
     </td>
            <td class="datacellthnormal">
              <xsl:call-template name="widget_render">
                <xsl:with-param name="fieldName" select="'isURgentdestinationSourceSpecification'" />
                <xsl:with-param name="renderCmd" select="'inputtitle'" />
    
             <xsl:with-param name="readOnly" select="$isPastInitiated" /> </xsl:call-template>
                 </xsl:call-template><font color="#ff0000">*</font>
            </td>
          </tr>  <td class="datacell">
       <tr>         <td class="thnormal"><xsl:call-template name="widget_render">
                <xsl:callwith-templateparam name="fieldName" select="widget_render"'destinationSourceSpecification'" />
                <xsl:with-param name="fieldNamerenderCmd" select="'ingressEgressCharacteristicinput'" />
                <xsl:with-param name="renderCmdreadOnly" select="'title'$isPastInitiated" />
    
              </xsl:call-template>
            </td>
     <font color="#ff0000">*     </font>tr>
          <tr>
     </td>         <td class="datacellthnormal">
              <xsl:call-template name="widget_render">
                <xsl:with-param name="fieldName" select="'ingressEgressCharacteristictermOfRuleChange'" />
                <xsl:with-param name="renderCmd" select="'inputtitle'" />
                <xsl:with-param name="readOnly" select="$isPastInitiated" /></xsl:call-template>
                 </xsl:call-template><font color="#ff0000">*</font>
    
            </td>
          </tr>  <td class="datacell">
       <tr>         <td class="thnormal"><xsl:call-template name="widget_render">
                <xsl:call-template name="widget_render"with-param name="fieldName" select="'termOfRuleChange'" />
                <xsl:with-param name="fieldNamerenderCmd" select="'destinationSourceSpecificationinput'" />
                <xsl:with-param name="renderCmdreadOnly" select="'title'$isPastInitiated" />
               </xsl:call-template>
            </td>
       <font color="#ff0000">*   </font>tr>
            </td><tr>
            <td class="datacellthnormal">
              <xsl:call-template name="widget_render">
                <xsl:with-param name="fieldName" select="'destinationSourceSpecificationrelatedProject'" />
                <xsl:with-param name="renderCmd" select="'inputtitle'" />
                <xsl:with-param name="readOnly" select="$isPastInitiated" /></xsl:call-template>
                </xsl:call-template><font color="#ff0000">*</font>
            </td>
          </tr>  <td class="datacell">
       <tr>         <td class="thnormal"><xsl:call-template name="widget_render">
                <xsl:callwith-templateparam name="widget_render""fieldName" select="'relatedProject'" />
                <xsl:with-param name="fieldNamerenderCmd" select="'termOfRuleChangeinput'" />
                <xsl:with-param name="renderCmdreadOnly" select="'title'$isPastInitiated" />
              </xsl:call-template>
             </td>
    <font color="#ff0000">*</font>     </tr>
        </td>table>
        <br xmlns="" />
    <xsl:template>
    

Create Rule Attributes

Here we create a Rule Attribute that is associated with the isUrgent field in the form. Lcollection of rule attributes.

Code Block
titleRequestFirewallChange.eDoc.RuleAttributes.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">
<ruleAttributes xmlns="ns:workflow/RuleAttribute" xsi:schemaLocation="ns:workflow/RuleAttribute resource:RuleAttribute">
	<ruleAttribute>
      	<name>RequestFirewallChange.eDoc.isUrgent.RuleAttribute</name>
	    

...

 

...

 <className>edu.iu.uis.eden.routetemplate.xmlrouting.StandardGenericXMLRuleAttribute</className>
      	<label>Request Firewall Change 

...

Is Urgent Rule Attribute</label>
	      

...

<description>Request Firewall Change Is Urgent Rule 

...

Attribute</

...

description>
      

...

	<type>RuleXmlAttribute</type>
  

...

    	<routingConfig>
        

...

		<fieldDef name="

...

isUrgent"

...

 title="URGENT" workflowType="ALL">
	          

...

		<display>
            			<type>select</type>
  

...

 

...

 

...

 

...

       			<values title="NO">NO</values>
  

...

          

...

			<values title="

...

YES"

...

>YES</values>
     

...

        		</display>

...

 

...

         

...

			<validation required="true" />
          			<fieldEvaluation>
 

...

 

...

 

...

 

...

        			<xpathexpression>//isUrgent = 

...

wf:ruledata('isUrgent')</xpathexpression>
          			</fieldEvaluation>
    

...

 

...

 

...

 		</fieldDef>
        		<xmlDocumentContent>
 

...

         

...

			<isUrgent>%isUrgent%</isUrgent>
        		</

...

xmlDocumentContent>
      	</

...

routingConfig>
    

...

</ruleAttribute>
</ruleAttributes>

</data>

Create Rule

...

Templates

Here we create a several Rule Attribute that is associated with the isUrgent field in the form. Lcollection of rule attributes.Templates that are applied to each route node.

Code Block
titleRequestFirewallChange.eDoc.RuleAttributesRuleTemplates.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">
<ruleAttributes<ruleTemplates xmlns="ns:workflow/RuleAttributeRuleTemplate" xsi:schemaLocation="ns:workflow/RuleAttributeRuleTemplate resource:RuleAttributeRuleTemplate">
	<ruleAttribute>
      	<name>RequestFirewallChange.eDoc.isUrgent.RuleAttribute</name>
	
	<ruleTemplate allowOverwrite="true">
     <className>edu.iu.uis.eden.routetemplate.xmlrouting.StandardGenericXMLRuleAttribute</className> 		<name>RequestFirewallChange.eDoc.ReviewCurrentConfiguration.RuleTemplate</name>
      	<label>Request Firewall Change Is Urgent Rule Attribute</label>
	      <description>Request Firewall Change Is Urgent Rule Attribute</description>
      	<type>RuleXmlAttribute</type>
      	<routingConfig>
 	<description>Review Current Configuration RuleTemplate</description>
	</ruleTemplate>
	<ruleTemplate allowOverwrite="true">
      		<fieldDef name="isUrgent" title="URGENT" workflowType="ALL">
	<name>RequestFirewallChange.eDoc.InitialApproval.RuleTemplate</name>
      		<description>Initial Approval RuleTemplate</description>
 		<display>     		<attributes>
        			<type>select</type><attribute>
            				<values title="NO">NO</values><name>RequestFirewallChange.eDoc.isUrgent.RuleAttribute</name>
            				<values title="YES">YES</values><required>true</required>
        			</attribute>
      		</display>attributes>
	</ruleTemplate>
	<ruleTemplate allowOverwrite="true">
      		<name>RequestFirewallChange.eDoc.FinalApproval.RuleTemplate</name>
      			<validation required="true" />
 <description>Final Approval RuleTemplate</description>
      		<attributes>
        			<fieldEvaluation><attribute>
            				<xpathexpression>//isUrgent = wf:ruledata('isUrgent')</xpathexpression><name>RequestFirewallChange.eDoc.isUrgent.RuleAttribute</name>
          			<	<required>true</fieldEvaluation>required>
        			</fieldDef>attribute>
      		</attributes>
	</ruleTemplate>
		<xmlDocumentContent><ruleTemplate allowOverwrite="true">
      		<name>RequestFirewallChange.eDoc.AcknowledgeConfiguration.RuleTemplate</name>
      			<isUrgent>%isUrgent%</isUrgent><description>AcknowledgeConfiguration RuleTemplate</description> 
			<attributes>
				<attribute>
     					<name>Initiator.Role.RuleAttribute</name>
					<required>true</required>
				</xmlDocumentContent>
      attribute>
			</routingConfig>
    attributes>
	</ruleAttribute>ruleTemplate>
</ruleAttributes>
ruleTemplates>
</data>

Create

...

Routing Rules

Finally, we create several Rule Templates that are applied to each route node Rules that are associated with RequestFirewallChange.eDoc.ChildDocType and its associated rule templates.

Code Block
titleRequestFirewallChange.eDoc.RuleTemplatesRules.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">
<ruleTemplates<rules xmlns="ns:workflow/RuleTemplateRule" xsi:schemaLocation="ns:workflow/RuleTemplateRule resource:RuleTemplateRule">
	<rule>
      	<ruleTemplate>		<documentType>RequestFirewallChange.eDoc.ChildDocType</documentType>
      		<name>RequestFirewallChange<ruleTemplate>RequestFirewallChange.eDoc.ReviewCurrentConfiguration.RuleTemplate</name>RuleTemplate</ruleTemplate>
      		<description>Review Current Configuration Rule</description>
      		<ignorePrevious>false</ignorePrevious>
      		<description>ReviewCurrentConfiguration<responsibilities>
 RuleTemplate</description>       		<attributes><responsibility>
          			<attribute><workgroup>ucd.IET.DES.DevelopmentSupport.WorkGroup</workgroup>
          				<name>RequestFirewallChange.eDoc.isUrgent.RuleAttribute</name><actionRequested>A</actionRequested>
          				<required>true<<priority>1</required>priority>
        			</attribute>responsibility>
      		</attributes>responsibilities>
    	</ruleTemplate>rule>
	<ruleTemplate><rule>
      		<name>RequestFirewallChange<documentType>RequestFirewallChange.eDoc.FulfillUrgentRequest.RuleTemplate<ChildDocType</name>documentType>
      		<description>FulfillUrgentRequest <ruleTemplate>RequestFirewallChange.eDoc.InitialApproval.RuleTemplate</description>
	</ruleTemplate>
	<ruleTemplate>
      		<name>RequestFirewallChange.eDoc.ReviewUrgentRequest.RuleTemplate</name><description>Initial Approval By Firewall SysAdmin Rule</description>
      		<description>ReviewUrgentRequest RuleTemplate</description>
	</ruleTemplate>
	<ruleTemplate><ignorePrevious>false</ignorePrevious>
      		<name>RequestFirewallChange.eDoc.ReviewRequest.RuleTemplate</name><ruleExtensions>
        		<description>ReviewRequest RuleTemplate</description>
	</ruleTemplate>
	<ruleTemplate>	<ruleExtension>
         	 		<name>RequestFirewallChange	<attribute>RequestFirewallChange.eDoc.FulfillRequestisUrgent.RuleTemplate<RuleAttribute</name>attribute>
        		<description>FulfillRequest RuleTemplate</description> 	</ruleTemplate>
	<ruleTemplate>
      		<name>RequestFirewallChange<ruleTemplate>RequestFirewallChange.eDoc.AcknowledgeConfigurationInitialApproval.RuleTemplate</name>ruleTemplate>
      		<description>AcknowledgeConfiguration RuleTemplate</description>  			<attributes> 				<attribute><ruleExtensionValues>
            					<name>Initiator.Role.RuleAttribute</name>
					<required>true</required>
				</attribute>
			</attributes>
	</ruleTemplate>
</ruleTemplates>
</data>

Create Routing Rules

Finally, we create Rules that are associated with RequestFirewallChange.eDoc.ChildDocType and its associated rule templates.

Code Block
titleRequestFirewallChange.eDoc.Rules.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><ruleExtensionValue>
              						<key>isUrgent</key>
              						<value>YES</value>
            				<documentType>RequestFirewallChange.eDoc.ChildDocType</documentType>	</ruleExtensionValue>
          			<ruleTemplate>RequestFirewallChange.eDoc.ReviewCurrentConfiguration.RuleTemplate</ruleTemplate>	</ruleExtensionValues>
        			<description>ReviewCurrentConfiguration Routing Rule</description>
</ruleExtension>
	      		<ignorePrevious>false<</ignorePrevious>ruleExtensions>
      		<responsibilities>
        		<responsibility>
          			<workgroup>ucd.IET.DESDCCS.DevelopmentSupportFirewallSysAdmin.WorkGroup <Workgroup</workgroup>
          			<actionRequested>A</actionRequested>
          			<priority>1</priority>
        		</responsibility>
      		</responsibilities>
    	</rule>
	<rule>
      		<documentType>RequestFirewallChange.eDoc.ChildDocType</documentType>
      		<ruleTemplate>RequestFirewallChange.eDoc.FulfillUrgentRequestInitialApproval.RuleTemplate</ruleTemplate>
      		<description>FulfillUrgentRequest Routing<description>Initial Approval By Firewall Policy Group Rule</description>
      		<ignorePrevious>false</ignorePrevious>
      		<ruleExtensions>
        			<ruleExtension>
         	 			<attribute>RequestFirewallChange.eDoc.isUrgent.RuleAttribute</attribute>
          				<ruleTemplate>RequestFirewallChange.eDoc.ReviewCurrentConfigurationInitialApproval.RuleTemplate</ruleTemplate>
          				<ruleExtensionValues>
            					<ruleExtensionValue>
              						<key>isUrgent</key>
              						<value>YES<<value>NO</value>
            					</ruleExtensionValue>
          				</ruleExtensionValues>
        			</ruleExtension>




	      	</ruleExtensions>
      		<responsibilities>
        		<responsibility>
          			<workgroup>ucd.IET.DCCSAppDev.FirewallSysAdminFirewallPolicyGroup.Workgroup</workgroup>
          			<actionRequested>K<<actionRequested>A</actionRequested>
          			<priority>1</priority>
        		</responsibility>
      		</responsibilities>
    	</rule>
	<rule>
      		<documentType>RequestFirewallChange.eDoc.ChildDocType</documentType>
      		<ruleTemplate>RequestFirewallChange.eDoc.ReviewUrgentRequestFinalApproval.RuleTemplate</ruleTemplate>
      		<description>ReviewUrgentRequest Routing<description>Final Approval By Firewall SysAdmin Rule</description>
      		<ignorePrevious>false</ignorePrevious>
      		<responsibilities><ruleExtensions>
        		<responsibility>	<ruleExtension>
         	 			<workgroup>ucd.IET.AppDev.FirewallPolicyGroup.Workgroup </workgroup><attribute>RequestFirewallChange.eDoc.isUrgent.RuleAttribute</attribute>
          				<ruleTemplate>RequestFirewallChange.eDoc.FinalApproval.RuleTemplate</ruleTemplate>
          				<ruleExtensionValues>
            					<ruleExtensionValue>
              						<actionRequested>A</actionRequested><key>isUrgent</key>
              						<priority>1</priority><value>NO</value>
            					</responsibility>ruleExtensionValue>
      		</responsibilities>     				</rule>ruleExtensionValues>
 	<rule>       		<documentType>RequestFirewallChange.eDoc.ChildDocType</documentType>
	</ruleExtension>
	      		<ruleTemplate>RequestFirewallChange.eDoc.ReviewRequest.RuleTemplate</ruleTemplate></ruleExtensions>
      		<description>ReviewRequest<responsibilities>
Routing Rule</description>       		<ignorePrevious>false</ignorePrevious>
   <responsibility>
  		<ruleExtensions>         			<ruleExtension><workgroup>ucd.IET.DCCS.FirewallSysAdmin.Workgroup</workgroup>
         	 			<attribute>RequestFirewallChange.eDoc.isUrgent.RuleAttribute</attribute><actionRequested>A</actionRequested>
          				<ruleTemplate>RequestFirewallChange.eDoc.ReviewCurrentConfiguration.RuleTemplate</ruleTemplate>
 <priority>1</priority>
        				<ruleExtensionValues></responsibility>
      		</responsibilities>
    	</rule>
					<ruleExtensionValue><rule>
       		<documentType>RequestFirewallChange.eDoc.ChildDocType</documentType>
      						<key>isUrgent</key><ruleTemplate>RequestFirewallChange.eDoc.FinalApproval.RuleTemplate</ruleTemplate>
      		<description>Final Approval By Firewall Policy Group Rule</description>
 						<value>NO</value>      		<ignorePrevious>false</ignorePrevious>
      					</ruleExtensionValue>
 <ruleExtensions>
        				</ruleExtensionValues><ruleExtension>
         	 			</ruleExtension>
	<attribute>RequestFirewallChange.eDoc.isUrgent.RuleAttribute</attribute>
      	</ruleExtensions>    				<ruleTemplate>RequestFirewallChange.eDoc.FinalApproval.RuleTemplate</ruleTemplate>
  		<responsibilities>         				<responsibility><ruleExtensionValues>
            			<workgroup>ucd.IET.AppDev.FirewallPolicyGroup.Workgroup </workgroup>		<ruleExtensionValue>
              			<actionRequested>A</actionRequested>			<key>isUrgent</key>
              						<priority>1<<value>YES</priority>value>
        		</responsibility>       					</responsibilities>ruleExtensionValue>
    	</rule> 	<rule>       				<documentType>RequestFirewallChange.eDoc.ChildDocType</documentType>
      		<ruleTemplate>RequestFirewallChange.eDoc.FulfillRequest.RuleTemplate</ruleTemplate></ruleExtensionValues>
        		<description>FulfillRequest Routing Rule</description>
	</ruleExtension>
	      		<ignorePrevious>false<</ignorePrevious>ruleExtensions>
      		<responsibilities>
        		<responsibility>
          			<workgroup>ucd.IET.DCCSAppDev.FirewallSysAdminFirewallPolicyGroup.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<description>Acknowledge RoutingConfiguration 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>

...