<html xmlns:v="urn:schemas-microsoft-com:vml" xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:w="urn:schemas-microsoft-com:office:word" xmlns:m="http://schemas.microsoft.com/office/2004/12/omml" xmlns="http://www.w3.org/TR/REC-html40">

<head>
<meta http-equiv=Content-Type content="text/html; charset=us-ascii">
<meta name=Generator content="Microsoft Word 12 (filtered medium)">
<style>
<!--
 /* Font Definitions */
 @font-face
        {font-family:Calibri;
        panose-1:2 15 5 2 2 2 4 3 2 4;}
 /* Style Definitions */
 p.MsoNormal, li.MsoNormal, div.MsoNormal
        {margin:0in;
        margin-bottom:.0001pt;
        font-size:11.0pt;
        font-family:"Calibri","sans-serif";}
a:link, span.MsoHyperlink
        {mso-style-priority:99;
        color:blue;
        text-decoration:underline;}
a:visited, span.MsoHyperlinkFollowed
        {mso-style-priority:99;
        color:purple;
        text-decoration:underline;}
span.EmailStyle17
        {mso-style-type:personal-compose;
        font-family:"Calibri","sans-serif";
        color:windowtext;}
.MsoChpDefault
        {mso-style-type:export-only;
        font-size:10.0pt;}
@page Section1
        {size:8.5in 11.0in;
        margin:1.0in 1.0in 1.0in 1.0in;}
div.Section1
        {page:Section1;}
-->
</style>
<!--[if gte mso 9]><xml>
 <o:shapedefaults v:ext="edit" spidmax="1026" />
</xml><![endif]--><!--[if gte mso 9]><xml>
 <o:shapelayout v:ext="edit">
  <o:idmap v:ext="edit" data="1" />
 </o:shapelayout></xml><![endif]-->
</head>

<body lang=EN-US link=blue vlink=purple>

<div class=Section1>

<p class=MsoNormal>I am seeing a problem in the latest stable build 12/27 andn
1/26 where a flow variable does not get updates from a facts updated in a rule
node in the flow.&nbsp; Both the flow variable and the fact are initially the
same object instance, but It looks like the flow variable gets a cloned
instance after the rule node.&nbsp; <o:p></o:p></p>

<p class=MsoNormal><o:p>&nbsp;</o:p></p>

<p class=MsoNormal>I am inserting 1 fact and running a flow with a debug node,
a rule node, a debug node, and a human task.&nbsp; As you can see below the
hashcode changes for the flow variable after the rule node, but retains the
user value set earlier in the flow.&nbsp; After the rule node the user should
be myuser which is set in the rule, but instead has the value bogus, which is
set in the first debug node. <o:p></o:p></p>

<p class=MsoNormal><o:p>&nbsp;</o:p></p>

<p class=MsoNormal>Is anyone else seeing similar issues in drools flow?&nbsp;
This is happening when we run in JBoss 5.1.&nbsp;&nbsp; This is a blocking
issue that makes drools flow unusable for us, so any help you can provide is
appreciated.&nbsp; <o:p></o:p></p>

<p class=MsoNormal><o:p>&nbsp;</o:p></p>

<p class=MsoNormal><b>Debug:<o:p></o:p></b></p>

<p class=MsoNormal><o:p>&nbsp;</o:p></p>

<p class=MsoNormal style='text-autospace:none'><span style='font-size:10.0pt;
font-family:"Courier New";color:black'>15:00:31,985 INFO&nbsp; [STDOUT]
******** flowApproval hashcode at fact insert:18886777</span><span
style='font-size:10.0pt;font-family:"Courier New"'><o:p></o:p></span></p>

<p class=MsoNormal style='text-autospace:none'><span style='font-size:10.0pt;
font-family:"Courier New";color:black'>15:00:31,985 INFO&nbsp; [STDOUT]
Hibernate: insert into ProcessInstanceInfo (externalVariables,
lastModificationDate, lastReadDate, processId, processInstanceByteArray,
startDate, state, OPTLOCK) values (?, ?, ?, ?, ?, ?, ?, ?)</span><span
style='font-size:10.0pt;font-family:"Courier New"'><o:p></o:p></span></p>

<p class=MsoNormal style='text-autospace:none'><span style='font-size:10.0pt;
font-family:"Courier New";color:black'>15:00:31,985 INFO&nbsp; [STDOUT]
******** first flow node, hashcode: 18886777 user: null</span><span
style='font-size:10.0pt;font-family:"Courier New"'><o:p></o:p></span></p>

<p class=MsoNormal style='text-autospace:none'><span style='font-size:10.0pt;
font-family:"Courier New";color:black'>15:00:31,985 INFO&nbsp; [STDOUT]
******** first flow node after approver set to&nbsp; bogus, hashcode: 18886777
user: bogus</span><span style='font-size:10.0pt;font-family:"Courier New"'><o:p></o:p></span></p>

<p class=MsoNormal style='text-autospace:none'><span style='font-size:10.0pt;
font-family:"Courier New";color:black'>15:00:32,000 INFO&nbsp; [STDOUT]
Hibernate: update ProcessInstanceInfo set externalVariables=?,
lastModificationDate=?, lastReadDate=?, processId=?,
processInstanceByteArray=?, startDate=?, state=?, OPTLOCK=? where
processInstanceId=? and OPTLOCK=?</span><span style='font-size:10.0pt;
font-family:"Courier New"'><o:p></o:p></span></p>

<p class=MsoNormal style='text-autospace:none'><span style='font-size:10.0pt;
font-family:"Courier New";color:black'>15:00:32,000 INFO&nbsp; [STDOUT]
Hibernate: insert into ProcessInstanceInfo_eventTypes
(ProcessInstanceInfo_processInstanceId, element) values (?, ?)</span><span
style='font-size:10.0pt;font-family:"Courier New"'><o:p></o:p></span></p>

<p class=MsoNormal style='text-autospace:none'><span style='font-size:10.0pt;
font-family:"Courier New";color:black'>15:00:32,000 INFO&nbsp; [STDOUT]
Hibernate: update SessionInfo set dirty=?, lastModificationDate=?,
rulesByteArray=?, startDate=? where id=?</span><span style='font-size:10.0pt;
font-family:"Courier New"'><o:p></o:p></span></p>

<p class=MsoNormal style='text-autospace:none'><span style='font-size:10.0pt;
font-family:"Courier New";color:black'>15:00:32,000 INFO&nbsp; [STDOUT]
******** in rule node setting approver to enduser, hashcode: 18886777 user:
myuser</span><span style='font-size:10.0pt;font-family:"Courier New"'><o:p></o:p></span></p>

<p class=MsoNormal style='text-autospace:none'><span style='font-size:10.0pt;
font-family:"Courier New";color:black'>15:00:32,000 INFO&nbsp; [STDOUT]
Hibernate: select processins0_.processInstanceId as col_0_0_ from
ProcessInstanceInfo processins0_ where ? in (select eventtypes1_.element from
ProcessInstanceInfo_eventTypes eventtypes1_ where
processins0_.processInstanceId=eventtypes1_.ProcessInstanceInfo_processInstanceId)</span><span
style='font-size:10.0pt;font-family:"Courier New"'><o:p></o:p></span></p>

<p class=MsoNormal style='text-autospace:none'><span style='font-size:10.0pt;
font-family:"Courier New";color:black'>15:00:32,000 INFO&nbsp; [STDOUT]
Hibernate: select processins0_.processInstanceId as processI1_149_0_,
processins0_.externalVariables as external2_149_0_,
processins0_.lastModificationDate as lastModi3_149_0_, processins0_.lastReadDate
as lastRead4_149_0_, processins0_.processId as processId149_0_,
processins0_.processInstanceByteArray as processI6_149_0_,
processins0_.startDate as startDate149_0_, processins0_.state as state149_0_,
processins0_.OPTLOCK as OPTLOCK149_0_ from ProcessInstanceInfo processins0_
where processins0_.processInstanceId=?</span><span style='font-size:10.0pt;
font-family:"Courier New"'><o:p></o:p></span></p>

<p class=MsoNormal><span style='font-size:10.0pt;font-family:"Courier New";
color:black'>15:00:32,016 INFO&nbsp; [STDOUT] ******** after rule node,
hashcode:15392910 user: bogus<o:p></o:p></span></p>

<p class=MsoNormal><b><span style='font-size:10.0pt;font-family:"Courier New";
color:black'><o:p>&nbsp;</o:p></span></b></p>

<p class=MsoNormal><b><span style='font-size:10.0pt;font-family:"Courier New"'>Rule:<o:p></o:p></span></b></p>

<p class=MsoNormal><span style='font-size:10.0pt;font-family:"Courier New";
color:black'><o:p>&nbsp;</o:p></span></p>

<p class=MsoNormal style='text-autospace:none'><b><span style='font-size:10.0pt;
font-family:"Courier New";color:#960000'>dialect</span></b><span
style='font-size:10.0pt;font-family:"Courier New";color:black'> </span><span
style='font-size:10.0pt;font-family:"Courier New";color:green'>&quot;mvel&quot;</span><span
style='font-size:10.0pt;font-family:"Courier New"'><o:p></o:p></span></p>

<p class=MsoNormal style='text-autospace:none'><span style='font-size:10.0pt;
font-family:"Courier New"'><o:p>&nbsp;</o:p></span></p>

<p class=MsoNormal style='text-autospace:none'><b><span style='font-size:10.0pt;
font-family:"Courier New";color:#960000'>rule</span></b><span style='font-size:
10.0pt;font-family:"Courier New";color:black'> </span><span style='font-size:
10.0pt;font-family:"Courier New";color:green'>&quot;Assign Initial
Approver&quot;</span><span style='font-size:10.0pt;font-family:"Courier New"'><o:p></o:p></span></p>

<p class=MsoNormal style='text-autospace:none'><b><span style='font-size:10.0pt;
font-family:"Courier New";color:#960000'>ruleflow-group</span></b><span
style='font-size:10.0pt;font-family:"Courier New";color:black'> </span><span
style='font-size:10.0pt;font-family:"Courier New";color:green'>&quot;approver&quot;</span><span
style='font-size:10.0pt;font-family:"Courier New"'><o:p></o:p></span></p>

<p class=MsoNormal style='text-autospace:none'><b><span style='font-size:10.0pt;
font-family:"Courier New";color:#960000'>no-loop</span></b><span
style='font-size:10.0pt;font-family:"Courier New"'><o:p></o:p></span></p>

<p class=MsoNormal style='text-autospace:none'><span style='font-size:10.0pt;
font-family:"Courier New";color:black'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><b><span
style='font-size:10.0pt;font-family:"Courier New";color:#960000'>when</span></b><span
style='font-size:10.0pt;font-family:"Courier New"'><o:p></o:p></span></p>

<p class=MsoNormal style='text-autospace:none'><span style='font-size:10.0pt;
font-family:"Courier New";color:black'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $flow
: com.datacert.FlowApproval()</span><span style='font-size:10.0pt;font-family:
"Courier New"'><o:p></o:p></span></p>

<p class=MsoNormal style='text-autospace:none'><span style='font-size:10.0pt;
font-family:"Courier New";color:black'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><b><span
style='font-size:10.0pt;font-family:"Courier New";color:#960000'>then</span></b><span
style='font-size:10.0pt;font-family:"Courier New"'><o:p></o:p></span></p>

<p class=MsoNormal style='text-autospace:none'><span style='font-size:10.0pt;
font-family:"Courier New";color:black'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><b><span
style='font-size:10.0pt;font-family:"Courier New";color:#960000'>modify</span></b><span
style='font-size:10.0pt;font-family:"Courier New";color:black'>( $flow ) {
setLastapprover( </span><span style='font-size:10.0pt;font-family:"Courier New";
color:green'>'myuser'</span><span style='font-size:10.0pt;font-family:"Courier New";
color:black'> ) };</span><span style='font-size:10.0pt;font-family:"Courier New"'><o:p></o:p></span></p>

<p class=MsoNormal style='text-autospace:none'><span style='font-size:10.0pt;
font-family:"Courier New";color:black'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; System.out.println(</span><span
style='font-size:10.0pt;font-family:"Courier New";color:green'>&quot;********
in rule node setting approver to enduser, hashcode: &quot;</span><span
style='font-size:10.0pt;font-family:"Courier New";color:black'> +
$flow.hashCode() + </span><span style='font-size:10.0pt;font-family:"Courier New";
color:green'>&quot; user: &quot;</span><span style='font-size:10.0pt;
font-family:"Courier New";color:black'> + $flow.getLastapprover());</span><span
style='font-size:10.0pt;font-family:"Courier New"'><o:p></o:p></span></p>

<p class=MsoNormal><b><span style='font-size:10.0pt;font-family:"Courier New";
color:#960000'>end<o:p></o:p></span></b></p>

<p class=MsoNormal><b><span style='font-size:10.0pt;font-family:"Courier New";
color:#960000'><o:p>&nbsp;</o:p></span></b></p>

<p class=MsoNormal><b><span style='font-size:10.0pt;font-family:"Courier New"'>Flow:
<o:p></o:p></span></b></p>

<p class=MsoNormal><b><span style='font-size:10.0pt;font-family:"Courier New";
color:#960000'><o:p>&nbsp;</o:p></span></b></p>

<p class=MsoNormal style='text-autospace:none'><span style='font-size:10.0pt;
font-family:"Courier New"'>&lt;?<u><span style='color:black'>xml</span></u> version=&quot;1.0&quot;
encoding=&quot;UTF-8&quot;?&gt; <o:p></o:p></span></p>

<p class=MsoNormal style='text-autospace:none'><span style='font-size:10.0pt;
font-family:"Courier New"'>&lt;definitions id=&quot;Definition&quot;<o:p></o:p></span></p>

<p class=MsoNormal style='text-autospace:none'><span style='font-size:10.0pt;
font-family:"Courier New"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
targetNamespace=&quot;http://www.jboss.org/drools&quot;<o:p></o:p></span></p>

<p class=MsoNormal style='text-autospace:none'><span style='font-size:10.0pt;
font-family:"Courier New"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
typeLanguage=&quot;http://www.java.com/javaTypes&quot;<o:p></o:p></span></p>

<p class=MsoNormal style='text-autospace:none'><span style='font-size:10.0pt;
font-family:"Courier New"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
expressionLanguage=&quot;http://www.mvel.org/2.0&quot;<o:p></o:p></span></p>

<p class=MsoNormal style='text-autospace:none'><span style='font-size:10.0pt;
font-family:"Courier New"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
<u><span style='color:black'>xmlns</span></u>=&quot;http://schema.omg.org/spec/BPMN/2.0&quot;<o:p></o:p></span></p>

<p class=MsoNormal style='text-autospace:none'><span style='font-size:10.0pt;
font-family:"Courier New"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
xmlns:xs=&quot;http://www.w3.org/2001/XMLSchema-instance&quot;<o:p></o:p></span></p>

<p class=MsoNormal style='text-autospace:none'><span style='font-size:10.0pt;
font-family:"Courier New"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
xs:schemaLocation=&quot;http://schema.omg.org/spec/BPMN/2.0 BPMN20.<u><span
style='color:black'>xsd</span></u>&quot;<o:p></o:p></span></p>

<p class=MsoNormal style='text-autospace:none'><span style='font-size:10.0pt;
font-family:"Courier New"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
xmlns:g=&quot;http://www.jboss.org/drools/flow/gpd&quot;<o:p></o:p></span></p>

<p class=MsoNormal style='text-autospace:none'><span style='font-size:10.0pt;
font-family:"Courier New"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
&nbsp;&nbsp;xmlns:tns=&quot;http://www.jboss.org/drools&quot;&gt;<o:p></o:p></span></p>

<p class=MsoNormal style='text-autospace:none'><span style='font-size:10.0pt;
font-family:"Courier New"'><o:p>&nbsp;</o:p></span></p>

<p class=MsoNormal style='text-autospace:none'><span style='font-size:10.0pt;
font-family:"Courier New"'>&nbsp; &lt;itemDefinition
id=&quot;entityIdItem&quot; structureRef=&quot;java.lang.Object&quot; /&gt;<o:p></o:p></span></p>

<p class=MsoNormal style='text-autospace:none'><span style='font-size:10.0pt;
font-family:"Courier New"'>&nbsp; &lt;itemDefinition id=&quot;entityItem&quot;
structureRef=&quot;java.lang.Object&quot; /&gt;<o:p></o:p></span></p>

<p class=MsoNormal style='text-autospace:none'><span style='font-size:10.0pt;
font-family:"Courier New"'>&nbsp; &lt;itemDefinition
id=&quot;flowApprovalItem&quot; structureRef=&quot;java.lang.Object&quot; /&gt;<o:p></o:p></span></p>

<p class=MsoNormal style='text-autospace:none'><span style='font-size:10.0pt;
font-family:"Courier New"'><o:p>&nbsp;</o:p></span></p>

<p class=MsoNormal style='text-autospace:none'><span style='font-size:10.0pt;
font-family:"Courier New"'>&nbsp; &lt;resource id=&quot;Actor&quot;
name=&quot;Human Actor&quot; /&gt;<o:p></o:p></span></p>

<p class=MsoNormal style='text-autospace:none'><span style='font-size:10.0pt;
font-family:"Courier New"'><o:p>&nbsp;</o:p></span></p>

<p class=MsoNormal style='text-autospace:none'><span style='font-size:10.0pt;
font-family:"Courier New"'>&nbsp; &lt;process
id=&quot;com.datacert.workflow.Base&quot; name=&quot;approval&quot; &gt;<o:p></o:p></span></p>

<p class=MsoNormal style='text-autospace:none'><span style='font-size:10.0pt;
font-family:"Courier New"'><o:p>&nbsp;</o:p></span></p>

<p class=MsoNormal style='text-autospace:none'><span style='font-size:10.0pt;
font-family:"Courier New"'>&nbsp;&nbsp;&nbsp; &lt;!-- process variables --&gt;<o:p></o:p></span></p>

<p class=MsoNormal style='text-autospace:none'><span style='font-size:10.0pt;
font-family:"Courier New"'>&nbsp;&nbsp;&nbsp; &lt;property
id=&quot;entityId&quot; itemSubjectRef=&quot;tns:entityIdItem&quot;/&gt;<o:p></o:p></span></p>

<p class=MsoNormal style='text-autospace:none'><span style='font-size:10.0pt;
font-family:"Courier New"'>&nbsp;&nbsp;&nbsp; &lt;property
id=&quot;entity&quot; itemSubjectRef=&quot;tns:entityItem&quot;/&gt;<o:p></o:p></span></p>

<p class=MsoNormal style='text-autospace:none'><span style='font-size:10.0pt;
font-family:"Courier New"'>&nbsp;&nbsp;&nbsp; &lt;property
id=&quot;flowApproval&quot;
itemSubjectRef=&quot;tns:flowApprovalItem&quot;/&gt;<o:p></o:p></span></p>

<p class=MsoNormal style='text-autospace:none'><span style='font-size:10.0pt;
font-family:"Courier New"'><o:p>&nbsp;</o:p></span></p>

<p class=MsoNormal style='text-autospace:none'><span style='font-size:10.0pt;
font-family:"Courier New"'>&nbsp;&nbsp;&nbsp; &lt;!-- nodes --&gt;<o:p></o:p></span></p>

<p class=MsoNormal style='text-autospace:none'><span style='font-size:10.0pt;
font-family:"Courier New"'>&nbsp;&nbsp;&nbsp; &lt;endEvent id=&quot;_2&quot;
name=&quot;End&quot; g:x=&quot;564&quot; g:y=&quot;16&quot;
g:width=&quot;48&quot; g:height=&quot;48&quot; /&gt;<o:p></o:p></span></p>

<p class=MsoNormal style='text-autospace:none'><span style='font-size:10.0pt;
font-family:"Courier New"'>&nbsp;&nbsp;&nbsp; &lt;userTask id=&quot;_4&quot;
name=&quot;Human Task&quot; g:x=&quot;432&quot; g:y=&quot;16&quot;
g:width=&quot;100&quot; g:height=&quot;48&quot; &gt;<o:p></o:p></span></p>

<p class=MsoNormal style='text-autospace:none'><span style='font-size:10.0pt;
font-family:"Courier New"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
&lt;ioSpecification&gt;<o:p></o:p></span></p>

<p class=MsoNormal style='text-autospace:none'><span style='font-size:10.0pt;
font-family:"Courier New"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
&lt;dataInput id=&quot;_4_CommentInput&quot; name=&quot;Comment&quot; /&gt;<o:p></o:p></span></p>

<p class=MsoNormal style='text-autospace:none'><span style='font-size:10.0pt;
font-family:"Courier New"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
&lt;dataInput id=&quot;_4_TaskNameInput&quot; name=&quot;TaskName&quot; /&gt;<o:p></o:p></span></p>

<p class=MsoNormal style='text-autospace:none'><span style='font-size:10.0pt;
font-family:"Courier New"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
&lt;dataInput id=&quot;_4_ContentInput&quot; name=&quot;Content&quot; /&gt;<o:p></o:p></span></p>

<p class=MsoNormal style='text-autospace:none'><span style='font-size:10.0pt;
font-family:"Courier New"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
&lt;inputSet&gt;<o:p></o:p></span></p>

<p class=MsoNormal style='text-autospace:none'><span style='font-size:10.0pt;
font-family:"Courier New"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
&lt;dataInputRefs&gt;_4_CommentInput&lt;/dataInputRefs&gt;<o:p></o:p></span></p>

<p class=MsoNormal style='text-autospace:none'><span style='font-size:10.0pt;
font-family:"Courier New"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
&lt;dataInputRefs&gt;_4_TaskNameInput&lt;/dataInputRefs&gt;<o:p></o:p></span></p>

<p class=MsoNormal style='text-autospace:none'><span style='font-size:10.0pt;
font-family:"Courier New"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
&lt;dataInputRefs&gt;_4_ContentInput&lt;/dataInputRefs&gt;<o:p></o:p></span></p>

<p class=MsoNormal style='text-autospace:none'><span style='font-size:10.0pt;
font-family:"Courier New"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
&lt;/inputSet&gt;<o:p></o:p></span></p>

<p class=MsoNormal style='text-autospace:none'><span style='font-size:10.0pt;
font-family:"Courier New"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
&lt;outputSet&gt;<o:p></o:p></span></p>

<p class=MsoNormal style='text-autospace:none'><span style='font-size:10.0pt;
font-family:"Courier New"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
&lt;/outputSet&gt;<o:p></o:p></span></p>

<p class=MsoNormal style='text-autospace:none'><span style='font-size:10.0pt;
font-family:"Courier New"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
&lt;/ioSpecification&gt;<o:p></o:p></span></p>

<p class=MsoNormal style='text-autospace:none'><span style='font-size:10.0pt;
font-family:"Courier New"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;property
id=&quot;_4_Comment&quot; /&gt;<o:p></o:p></span></p>

<p class=MsoNormal style='text-autospace:none'><span style='font-size:10.0pt;
font-family:"Courier New"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;property
id=&quot;_4_TaskName&quot; /&gt;<o:p></o:p></span></p>

<p class=MsoNormal style='text-autospace:none'><span style='font-size:10.0pt;
font-family:"Courier New"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;property
id=&quot;_4_Content&quot; /&gt;<o:p></o:p></span></p>

<p class=MsoNormal style='text-autospace:none'><span style='font-size:10.0pt;
font-family:"Courier New"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
&lt;dataInputAssociation&gt;<o:p></o:p></span></p>

<p class=MsoNormal style='text-autospace:none'><span style='font-size:10.0pt;
font-family:"Courier New"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
&lt;assignment&gt;<o:p></o:p></span></p>

<p class=MsoNormal style='text-autospace:none'><span style='font-size:10.0pt;
font-family:"Courier New"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
&lt;from xs:type=&quot;tFormalExpression&quot;&gt;<u><span style='color:black'>workitem</span></u>&lt;/from&gt;<o:p></o:p></span></p>

<p class=MsoNormal style='text-autospace:none'><span style='font-size:10.0pt;
font-family:"Courier New"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
&lt;to xs:type=&quot;tFormalExpression&quot;&gt;_4_CommentInput&lt;/to&gt;<o:p></o:p></span></p>

<p class=MsoNormal style='text-autospace:none'><span style='font-size:10.0pt;
font-family:"Courier New"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
&lt;/assignment&gt;<o:p></o:p></span></p>

<p class=MsoNormal style='text-autospace:none'><span style='font-size:10.0pt;
font-family:"Courier New"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
&lt;sourceRef&gt;_4_Comment&lt;/sourceRef&gt;<o:p></o:p></span></p>

<p class=MsoNormal style='text-autospace:none'><span style='font-size:10.0pt;
font-family:"Courier New"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
&lt;targetRef&gt;_4_CommentInput&lt;/targetRef&gt;<o:p></o:p></span></p>

<p class=MsoNormal style='text-autospace:none'><span style='font-size:10.0pt;
font-family:"Courier New"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
&lt;/dataInputAssociation&gt;<o:p></o:p></span></p>

<p class=MsoNormal style='text-autospace:none'><span style='font-size:10.0pt;
font-family:"Courier New"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
&lt;dataInputAssociation&gt;<o:p></o:p></span></p>

<p class=MsoNormal style='text-autospace:none'><span style='font-size:10.0pt;
font-family:"Courier New"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
&lt;assignment&gt;<o:p></o:p></span></p>

<p class=MsoNormal style='text-autospace:none'><span style='font-size:10.0pt;
font-family:"Courier New"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
&lt;from xs:type=&quot;tFormalExpression&quot;&gt;Human Task&lt;/from&gt;<o:p></o:p></span></p>

<p class=MsoNormal style='text-autospace:none'><span style='font-size:10.0pt;
font-family:"Courier New"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
&lt;to xs:type=&quot;tFormalExpression&quot;&gt;_4_TaskNameInput&lt;/to&gt;<o:p></o:p></span></p>

<p class=MsoNormal style='text-autospace:none'><span style='font-size:10.0pt;
font-family:"Courier New"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
&lt;/assignment&gt;<o:p></o:p></span></p>

<p class=MsoNormal style='text-autospace:none'><span style='font-size:10.0pt;
font-family:"Courier New"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
&lt;sourceRef&gt;_4_TaskName&lt;/sourceRef&gt;<o:p></o:p></span></p>

<p class=MsoNormal style='text-autospace:none'><span style='font-size:10.0pt;
font-family:"Courier New"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
&lt;targetRef&gt;_4_TaskNameInput&lt;/targetRef&gt;<o:p></o:p></span></p>

<p class=MsoNormal style='text-autospace:none'><span style='font-size:10.0pt;
font-family:"Courier New"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
&lt;/dataInputAssociation&gt;<o:p></o:p></span></p>

<p class=MsoNormal style='text-autospace:none'><span style='font-size:10.0pt;
font-family:"Courier New"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
&lt;dataInputAssociation&gt;<o:p></o:p></span></p>

<p class=MsoNormal style='text-autospace:none'><span style='font-size:10.0pt;
font-family:"Courier New"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;assignment&gt;<o:p></o:p></span></p>

<p class=MsoNormal style='text-autospace:none'><span style='font-size:10.0pt;
font-family:"Courier New"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
&lt;from xs:type=&quot;tFormalExpression&quot;&gt;#{entityId}&lt;/from&gt;<o:p></o:p></span></p>

<p class=MsoNormal style='text-autospace:none'><span style='font-size:10.0pt;
font-family:"Courier New"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
&lt;to xs:type=&quot;tFormalExpression&quot;&gt;_4_ContentInput&lt;/to&gt;<o:p></o:p></span></p>

<p class=MsoNormal style='text-autospace:none'><span style='font-size:10.0pt;
font-family:"Courier New"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
&lt;/assignment&gt;<o:p></o:p></span></p>

<p class=MsoNormal style='text-autospace:none'><span style='font-size:10.0pt;
font-family:"Courier New"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
&lt;sourceRef&gt;_4_Content&lt;/sourceRef&gt;<o:p></o:p></span></p>

<p class=MsoNormal style='text-autospace:none'><span style='font-size:10.0pt;
font-family:"Courier New"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
&lt;targetRef&gt;_4_ContentInput&lt;/targetRef&gt;<o:p></o:p></span></p>

<p class=MsoNormal style='text-autospace:none'><span style='font-size:10.0pt;
font-family:"Courier New"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/dataInputAssociation&gt;<o:p></o:p></span></p>

<p class=MsoNormal style='text-autospace:none'><span style='font-size:10.0pt;
font-family:"Courier New"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;potentialOwner
resourceRef=&quot;tns:Actor&quot; &gt;<o:p></o:p></span></p>

<p class=MsoNormal style='text-autospace:none'><span style='font-size:10.0pt;
font-family:"Courier New"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
&lt;resourceAssignmentExpression&gt;<o:p></o:p></span></p>

<p class=MsoNormal style='text-autospace:none'><span style='font-size:10.0pt;
font-family:"Courier New"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
&lt;formalExpression&gt;#{flowApproval.getLastapprover()}&lt;/formalExpression&gt;<o:p></o:p></span></p>

<p class=MsoNormal style='text-autospace:none'><span style='font-size:10.0pt;
font-family:"Courier New"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
&lt;/resourceAssignmentExpression&gt;<o:p></o:p></span></p>

<p class=MsoNormal style='text-autospace:none'><span style='font-size:10.0pt;
font-family:"Courier New"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
&lt;/potentialOwner&gt;<o:p></o:p></span></p>

<p class=MsoNormal style='text-autospace:none'><span style='font-size:10.0pt;
font-family:"Courier New"'>&nbsp;&nbsp;&nbsp; &lt;/userTask&gt;<o:p></o:p></span></p>

<p class=MsoNormal style='text-autospace:none'><span style='font-size:10.0pt;
font-family:"Courier New"'>&nbsp;&nbsp;&nbsp; &lt;scriptTask id=&quot;_6&quot;
name=&quot;After Rule&quot; g:x=&quot;320&quot; g:y=&quot;16&quot;
g:width=&quot;80&quot; g:height=&quot;48&quot; &gt;<o:p></o:p></span></p>

<p class=MsoNormal style='text-autospace:none'><span style='font-size:10.0pt;
font-family:"Courier New"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
&lt;script&gt;System.out.println(&quot;******** after rule node, <u><span
style='color:black'>hashcode</span></u>:&quot; + flowApproval.hashCode() +
&quot; user: &quot; + flowApproval.getLastapprover());&lt;/script&gt;<o:p></o:p></span></p>

<p class=MsoNormal style='text-autospace:none'><span style='font-size:10.0pt;
font-family:"Courier New"'>&nbsp;&nbsp;&nbsp; &lt;/scriptTask&gt;<o:p></o:p></span></p>

<p class=MsoNormal style='text-autospace:none'><span style='font-size:10.0pt;
font-family:"Courier New"'>&nbsp;&nbsp;&nbsp; &lt;startEvent id=&quot;_1&quot;
name=&quot;StartProcess&quot; g:x=&quot;16&quot; g:y=&quot;16&quot;
g:width=&quot;48&quot; g:height=&quot;48&quot; /&gt;<o:p></o:p></span></p>

<p class=MsoNormal style='text-autospace:none'><span style='font-size:10.0pt;
font-family:"Courier New"'>&nbsp;&nbsp;&nbsp; &lt;businessRuleTask
id=&quot;_3&quot; name=&quot;Rule&quot; g:x=&quot;208&quot; g:y=&quot;16&quot;
g:width=&quot;80&quot; g:height=&quot;48&quot;
g:ruleFlowGroup=&quot;approver&quot; /&gt;<o:p></o:p></span></p>

<p class=MsoNormal style='text-autospace:none'><span style='font-size:10.0pt;
font-family:"Courier New"'>&nbsp;&nbsp;&nbsp; &lt;scriptTask id=&quot;_7&quot;
name=&quot;Before Rule&quot; g:x=&quot;96&quot; g:y=&quot;16&quot;
g:width=&quot;80&quot; g:height=&quot;48&quot; &gt;<o:p></o:p></span></p>

<p class=MsoNormal style='text-autospace:none'><span style='font-size:10.0pt;
font-family:"Courier New"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
&lt;script&gt;System.out.println(&quot;******** first flow node, <u><span
style='color:black'>hashcode</span></u>: &quot; + flowApproval.hashCode() +
&quot; user: &quot; + flowApproval.getLastapprover());<o:p></o:p></span></p>

<p class=MsoNormal style='text-autospace:none'><span style='font-size:10.0pt;
font-family:"Courier New"'>flowApproval.setLastapprover(&quot;bogus&quot;);<o:p></o:p></span></p>

<p class=MsoNormal style='text-autospace:none'><span style='font-size:10.0pt;
font-family:"Courier New"'>System.out.println(&quot;******** first flow node
after approver set to&nbsp; bogus, <u><span style='color:black'>hashcode</span></u>:
&quot; + flowApproval.hashCode() + &quot; user: &quot; +
flowApproval.getLastapprover());&lt;/script&gt;<o:p></o:p></span></p>

<p class=MsoNormal style='text-autospace:none'><span style='font-size:10.0pt;
font-family:"Courier New"'>&nbsp;&nbsp;&nbsp; &lt;/scriptTask&gt;<o:p></o:p></span></p>

<p class=MsoNormal style='text-autospace:none'><span style='font-size:10.0pt;
font-family:"Courier New"'><o:p>&nbsp;</o:p></span></p>

<p class=MsoNormal style='text-autospace:none'><span style='font-size:10.0pt;
font-family:"Courier New"'>&nbsp;&nbsp;&nbsp; &lt;!-- connections --&gt;<o:p></o:p></span></p>

<p class=MsoNormal style='text-autospace:none'><span style='font-size:10.0pt;
font-family:"Courier New"'>&nbsp;&nbsp;&nbsp; &lt;sequenceFlow
sourceRef=&quot;_4&quot; targetRef=&quot;_2&quot; /&gt;<o:p></o:p></span></p>

<p class=MsoNormal style='text-autospace:none'><span style='font-size:10.0pt;
font-family:"Courier New"'>&nbsp;&nbsp;&nbsp; &lt;sequenceFlow
sourceRef=&quot;_6&quot; targetRef=&quot;_4&quot; /&gt;<o:p></o:p></span></p>

<p class=MsoNormal style='text-autospace:none'><span style='font-size:10.0pt;
font-family:"Courier New"'>&nbsp;&nbsp;&nbsp; &lt;sequenceFlow
sourceRef=&quot;_3&quot; targetRef=&quot;_6&quot; /&gt;<o:p></o:p></span></p>

<p class=MsoNormal style='text-autospace:none'><span style='font-size:10.0pt;
font-family:"Courier New"'>&nbsp;&nbsp;&nbsp; &lt;sequenceFlow
sourceRef=&quot;_7&quot; targetRef=&quot;_3&quot; /&gt;<o:p></o:p></span></p>

<p class=MsoNormal style='text-autospace:none'><span style='font-size:10.0pt;
font-family:"Courier New"'>&nbsp;&nbsp;&nbsp; &lt;sequenceFlow
sourceRef=&quot;_1&quot; targetRef=&quot;_7&quot; /&gt;<o:p></o:p></span></p>

<p class=MsoNormal style='text-autospace:none'><span style='font-size:10.0pt;
font-family:"Courier New"'><o:p>&nbsp;</o:p></span></p>

<p class=MsoNormal style='text-autospace:none'><span style='font-size:10.0pt;
font-family:"Courier New"'>&nbsp; &lt;/process&gt;<o:p></o:p></span></p>

<p class=MsoNormal style='text-autospace:none'><span style='font-size:10.0pt;
font-family:"Courier New"'><o:p>&nbsp;</o:p></span></p>

<p class=MsoNormal><span style='font-size:10.0pt;font-family:"Courier New"'>&lt;/definitions&gt;<o:p></o:p></span></p>

<p class=MsoNormal><span style='font-size:10.0pt;font-family:"Courier New"'><o:p>&nbsp;</o:p></span></p>

<p class=MsoNormal><span style='font-size:10.0pt;font-family:"Courier New"'><o:p>&nbsp;</o:p></span></p>

<p class=MsoNormal><span style='font-size:10.0pt;font-family:"Courier New"'><o:p>&nbsp;</o:p></span></p>

<p class=MsoNormal><b><span style='font-size:10.0pt;font-family:"Courier New"'>Most
Code: <o:p></o:p></span></b></p>

<p class=MsoNormal><span style='font-size:10.0pt;font-family:"Courier New"'><o:p>&nbsp;</o:p></span></p>

<p class=MsoNormal><span style='font-family:"Courier New"'>package
com.datacert;<o:p></o:p></span></p>

<p class=MsoNormal><span style='font-family:"Courier New"'><o:p>&nbsp;</o:p></span></p>

<p class=MsoNormal><span style='font-family:"Courier New"'>import
groovy.lang.GroovyClassLoader;<o:p></o:p></span></p>

<p class=MsoNormal><span style='font-family:"Courier New"'><o:p>&nbsp;</o:p></span></p>

<p class=MsoNormal><span style='font-family:"Courier New"'>import
java.util.HashMap;<o:p></o:p></span></p>

<p class=MsoNormal><span style='font-family:"Courier New"'>import
java.util.Map;<o:p></o:p></span></p>

<p class=MsoNormal><span style='font-family:"Courier New"'>import
java.util.Properties;<o:p></o:p></span></p>

<p class=MsoNormal><span style='font-family:"Courier New"'><o:p>&nbsp;</o:p></span></p>

<p class=MsoNormal><span style='font-family:"Courier New"'>import
javax.annotation.Resource;<o:p></o:p></span></p>

<p class=MsoNormal><span style='font-family:"Courier New"'>import
javax.naming.InitialContext;<o:p></o:p></span></p>

<p class=MsoNormal><span style='font-family:"Courier New"'>import
javax.naming.NamingException;<o:p></o:p></span></p>

<p class=MsoNormal><span style='font-family:"Courier New"'>import javax.persistence.EntityManagerFactory;<o:p></o:p></span></p>

<p class=MsoNormal><span style='font-family:"Courier New"'>import
javax.persistence.Persistence;<o:p></o:p></span></p>

<p class=MsoNormal><span style='font-family:"Courier New"'><o:p>&nbsp;</o:p></span></p>

<p class=MsoNormal><span style='font-family:"Courier New"'>import
org.apache.log4j.Level;<o:p></o:p></span></p>

<p class=MsoNormal><span style='font-family:"Courier New"'>import
org.drools.KnowledgeBase;<o:p></o:p></span></p>

<p class=MsoNormal><span style='font-family:"Courier New"'>import
org.drools.KnowledgeBaseConfiguration;<o:p></o:p></span></p>

<p class=MsoNormal><span style='font-family:"Courier New"'>import
org.drools.KnowledgeBaseFactory;<o:p></o:p></span></p>

<p class=MsoNormal><span style='font-family:"Courier New"'>import org.drools.SessionConfiguration;<o:p></o:p></span></p>

<p class=MsoNormal><span style='font-family:"Courier New"'>import
org.drools.SystemEventListenerFactory;<o:p></o:p></span></p>

<p class=MsoNormal><span style='font-family:"Courier New"'>import
org.drools.base.MapGlobalResolver;<o:p></o:p></span></p>

<p class=MsoNormal><span style='font-family:"Courier New"'>import
org.drools.bpmn2.xml.BPMNSemanticModule;<o:p></o:p></span></p>

<p class=MsoNormal><span style='font-family:"Courier New"'>import
org.drools.builder.KnowledgeBuilder;<o:p></o:p></span></p>

<p class=MsoNormal><span style='font-family:"Courier New"'>import
org.drools.builder.KnowledgeBuilderConfiguration;<o:p></o:p></span></p>

<p class=MsoNormal><span style='font-family:"Courier New"'>import
org.drools.builder.KnowledgeBuilderError;<o:p></o:p></span></p>

<p class=MsoNormal><span style='font-family:"Courier New"'>import
org.drools.builder.KnowledgeBuilderErrors;<o:p></o:p></span></p>

<p class=MsoNormal><span style='font-family:"Courier New"'>import
org.drools.builder.KnowledgeBuilderFactory;<o:p></o:p></span></p>

<p class=MsoNormal><span style='font-family:"Courier New"'>import
org.drools.builder.ResourceType;<o:p></o:p></span></p>

<p class=MsoNormal><span style='font-family:"Courier New"'>import
org.drools.compiler.PackageBuilderConfiguration;<o:p></o:p></span></p>

<p class=MsoNormal><span style='font-family:"Courier New"'>import
org.drools.io.ResourceFactory;<o:p></o:p></span></p>

<p class=MsoNormal><span style='font-family:"Courier New"'>import
org.drools.logger.KnowledgeRuntimeLogger;<o:p></o:p></span></p>

<p class=MsoNormal><span style='font-family:"Courier New"'>import
org.drools.logger.KnowledgeRuntimeLoggerFactory;<o:p></o:p></span></p>

<p class=MsoNormal><span style='font-family:"Courier New"'>import
org.drools.persistence.jpa.JPAKnowledgeService;<o:p></o:p></span></p>

<p class=MsoNormal><span style='font-family:"Courier New"'>import
org.drools.process.workitem.wsht.CommandBasedWSHumanTaskHandler;<o:p></o:p></span></p>

<p class=MsoNormal><span style='font-family:"Courier New"'>import
org.drools.runtime.Environment;<o:p></o:p></span></p>

<p class=MsoNormal><span style='font-family:"Courier New"'>import
org.drools.runtime.EnvironmentName;<o:p></o:p></span></p>

<p class=MsoNormal><span style='font-family:"Courier New"'>import
org.drools.runtime.KnowledgeSessionConfiguration;<o:p></o:p></span></p>

<p class=MsoNormal><span style='font-family:"Courier New"'>import
org.drools.runtime.StatefulKnowledgeSession;<o:p></o:p></span></p>

<p class=MsoNormal><span style='font-family:"Courier New"'>import
org.drools.runtime.process.ProcessInstance;<o:p></o:p></span></p>

<p class=MsoNormal><span style='font-family:"Courier New"'>import
org.drools.runtime.process.WorkItemManager;<o:p></o:p></span></p>

<p class=MsoNormal><span style='font-family:"Courier New"'>import
org.drools.task.service.MinaTaskServer;<o:p></o:p></span></p>

<p class=MsoNormal><span style='font-family:"Courier New"'>import
org.drools.task.service.TaskService;<o:p></o:p></span></p>

<p class=MsoNormal><span style='font-family:"Courier New"'><o:p>&nbsp;</o:p></span></p>

<p class=MsoNormal><span style='font-family:"Courier New"'><o:p>&nbsp;</o:p></span></p>

<p class=MsoNormal><span style='font-family:"Courier New"'>import
com.arjuna.ats.jta.TransactionManager;<o:p></o:p></span></p>

<p class=MsoNormal><span style='font-family:"Courier New"'><o:p>&nbsp;</o:p></span></p>

<p class=MsoNormal><span style='font-family:"Courier New"'><o:p>&nbsp;</o:p></span></p>

<p class=MsoNormal><span style='font-family:"Courier New"'>public class
FlowService {<o:p></o:p></span></p>

<p class=MsoNormal><span style='font-family:"Courier New"'>&nbsp;&nbsp;&nbsp; <o:p></o:p></span></p>

<p class=MsoNormal><span style='font-family:"Courier New"'>&nbsp;&nbsp;&nbsp;
private static final String&nbsp;
FLOW_SERVICE_URL&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; = &quot;flow.service.url&quot;;<o:p></o:p></span></p>

<p class=MsoNormal><span style='font-family:"Courier New"'>&nbsp;&nbsp;&nbsp; <o:p></o:p></span></p>

<p class=MsoNormal><span style='font-family:"Courier New"'>&nbsp;&nbsp;&nbsp;
private static final String&nbsp; FLOW_SERVICE_LOCATION =
&quot;flow.service.location&quot;;<o:p></o:p></span></p>

<p class=MsoNormal><span style='font-family:"Courier New"'>&nbsp;&nbsp;&nbsp; <o:p></o:p></span></p>

<p class=MsoNormal><span style='font-family:"Courier New"'>&nbsp;&nbsp;&nbsp;
private TaskService&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
taskService;<o:p></o:p></span></p>

<p class=MsoNormal><span style='font-family:"Courier New"'>&nbsp;&nbsp;&nbsp; <o:p></o:p></span></p>

<p class=MsoNormal><span style='font-family:"Courier New"'>&nbsp;&nbsp;&nbsp;
private MinaTaskServer&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; server;<o:p></o:p></span></p>

<p class=MsoNormal><span style='font-family:"Courier New"'>&nbsp;&nbsp;&nbsp; <o:p></o:p></span></p>

<p class=MsoNormal><span style='font-family:"Courier New"'>&nbsp;&nbsp;&nbsp;
private EntityManagerFactory taskServerEntityManagerFactory;<o:p></o:p></span></p>

<p class=MsoNormal><span style='font-family:"Courier New"'>&nbsp;&nbsp; <o:p></o:p></span></p>

<p class=MsoNormal><span style='font-family:"Courier New"'>&nbsp;&nbsp;&nbsp; <o:p></o:p></span></p>

<p class=MsoNormal><span style='font-family:"Courier New"'>&nbsp;&nbsp;&nbsp;
public void startWorkflow() {<o:p></o:p></span></p>

<p class=MsoNormal><span style='font-family:"Courier New"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
Map&lt;String, Object&gt; parameters = new HashMap&lt;String, Object&gt;();<o:p></o:p></span></p>

<p class=MsoNormal><span style='font-family:"Courier New"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
parameters.put(&quot;entityId&quot;, 22);<o:p></o:p></span></p>

<p class=MsoNormal><span style='font-family:"Courier New"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
parameters.put(&quot;flowApproval&quot;, new FlowApproval());<o:p></o:p></span></p>

<p class=MsoNormal><span style='font-family:"Courier New"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
<o:p></o:p></span></p>

<p class=MsoNormal><span style='font-family:"Courier New"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
KnowledgeBase kbase = getKnowledgeBase(&quot;approval.bpmn&quot;,
&quot;approval.drl&quot;);<o:p></o:p></span></p>

<p class=MsoNormal><span style='font-family:"Courier New"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
StatefulKnowledgeSession ksession = getSession(kbase);<o:p></o:p></span></p>

<p class=MsoNormal><span style='font-family:"Courier New"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
KnowledgeRuntimeLogger logger =
KnowledgeRuntimeLoggerFactory.newFileLogger(ksession, &quot;test&quot;);<o:p></o:p></span></p>

<p class=MsoNormal><span style='font-family:"Courier New"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
registerHumanTaskHandler(ksession);<o:p></o:p></span></p>

<p class=MsoNormal><span style='font-family:"Courier New"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
<o:p></o:p></span></p>

<p class=MsoNormal><span style='font-family:"Courier New"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
ksession.insert(parameters.get(&quot;flowApproval&quot;));<o:p></o:p></span></p>

<p class=MsoNormal><span style='font-family:"Courier New"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
System.out.println(&quot;******** flowApproval hashcode at fact insert:&quot; +
parameters.get(&quot;flowApproval&quot;).hashCode());<o:p></o:p></span></p>

<p class=MsoNormal><span style='font-family:"Courier New"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
<o:p></o:p></span></p>

<p class=MsoNormal><span style='font-family:"Courier New"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
&nbsp;&nbsp;ProcessInstance pi =
ksession.startProcess(&quot;com.datacert.workflow.Base&quot;, parameters);<o:p></o:p></span></p>

<p class=MsoNormal><span style='font-family:"Courier New"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
ksession.fireAllRules();<o:p></o:p></span></p>

<p class=MsoNormal><span style='font-family:"Courier New"'><o:p>&nbsp;</o:p></span></p>

<p class=MsoNormal><span style='font-family:"Courier New"'>&nbsp;&nbsp;&nbsp; }<o:p></o:p></span></p>

<p class=MsoNormal><span style='font-family:"Courier New"'>&nbsp;<o:p></o:p></span></p>

<p class=MsoNormal><span style='font-family:"Courier New"'>&nbsp;&nbsp; <o:p></o:p></span></p>

<p class=MsoNormal><span style='font-family:"Courier New"'>&nbsp;&nbsp;&nbsp;
private ClassLoader getClassLoader() {<o:p></o:p></span></p>

<p class=MsoNormal><span style='font-family:"Courier New"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
GroovyClassLoader gcl = new GroovyClassLoader();<o:p></o:p></span></p>

<p class=MsoNormal><span style='font-family:"Courier New"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
gcl.addClasspath(&quot;c:\\temp\\&quot;);<o:p></o:p></span></p>

<p class=MsoNormal><span style='font-family:"Courier New"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
return gcl;<o:p></o:p></span></p>

<p class=MsoNormal><span style='font-family:"Courier New"'>&nbsp;&nbsp;&nbsp; }<o:p></o:p></span></p>

<p class=MsoNormal><span style='font-family:"Courier New"'>&nbsp;&nbsp;&nbsp; <o:p></o:p></span></p>

<p class=MsoNormal><span style='font-family:"Courier New"'>&nbsp;&nbsp;&nbsp;
private Environment getEnvironment() {<o:p></o:p></span></p>

<p class=MsoNormal><span style='font-family:"Courier New"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
Environment env = KnowledgeBaseFactory.newEnvironment();<o:p></o:p></span></p>

<p class=MsoNormal><span style='font-family:"Courier New"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
EntityManagerFactory emf =
Persistence.createEntityManagerFactory(&quot;org.drools.persistence.jpa&quot;);<o:p></o:p></span></p>

<p class=MsoNormal><span style='font-family:"Courier New"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
env.set(EnvironmentName.ENTITY_MANAGER_FACTORY, emf);<o:p></o:p></span></p>

<p class=MsoNormal><span style='font-family:"Courier New"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
<o:p></o:p></span></p>

<p class=MsoNormal><span style='font-family:"Courier New"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
env.set(EnvironmentName.GLOBALS, new MapGlobalResolver());<o:p></o:p></span></p>

<p class=MsoNormal><span style='font-family:"Courier New"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
<o:p></o:p></span></p>

<p class=MsoNormal><span style='font-family:"Courier New"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
InitialContext ctx = null;<o:p></o:p></span></p>

<p class=MsoNormal><span style='font-family:"Courier New"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
try {<o:p></o:p></span></p>

<p class=MsoNormal><span style='font-family:"Courier New"'>&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ctx
= new InitialContext();<o:p></o:p></span></p>

<p class=MsoNormal><span style='font-family:"Courier New"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
} catch (NamingException e) {<o:p></o:p></span></p>

<p class=MsoNormal><span style='font-family:"Courier New"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
System.err.println(e);<o:p></o:p></span></p>

<p class=MsoNormal><span style='font-family:"Courier New"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
}<o:p></o:p></span></p>

<p class=MsoNormal><span style='font-family:"Courier New"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
env.set(EnvironmentName.TRANSACTION_MANAGER,
TransactionManager.transactionManager(ctx));<o:p></o:p></span></p>

<p class=MsoNormal><span style='font-family:"Courier New"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
<o:p></o:p></span></p>

<p class=MsoNormal><span style='font-family:"Courier New"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
return env;<o:p></o:p></span></p>

<p class=MsoNormal><span style='font-family:"Courier New"'>&nbsp;&nbsp;&nbsp; }<o:p></o:p></span></p>

<p class=MsoNormal><span style='font-family:"Courier New"'>&nbsp;&nbsp; &nbsp;<o:p></o:p></span></p>

<p class=MsoNormal><span style='font-family:"Courier New"'>&nbsp;&nbsp;&nbsp;
private KnowledgeBase getKnowledgeBase(String xmlFileName, String ruleFileName)
{<o:p></o:p></span></p>

<p class=MsoNormal><span style='font-family:"Courier New"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
KnowledgeBaseConfiguration config =
KnowledgeBaseFactory.newKnowledgeBaseConfiguration(null, getClassLoader());<o:p></o:p></span></p>

<p class=MsoNormal><span style='font-family:"Courier New"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
KnowledgeBase kbase = KnowledgeBaseFactory.newKnowledgeBase(config);<o:p></o:p></span></p>

<p class=MsoNormal><span style='font-family:"Courier New"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
kbase.addKnowledgePackages(getKnowledgeBuilder(xmlFileName,
ruleFileName).getKnowledgePackages());<o:p></o:p></span></p>

<p class=MsoNormal><span style='font-family:"Courier New"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
return kbase;<o:p></o:p></span></p>

<p class=MsoNormal><span style='font-family:"Courier New"'>&nbsp;&nbsp;&nbsp; }<o:p></o:p></span></p>

<p class=MsoNormal><span style='font-family:"Courier New"'>&nbsp;&nbsp;&nbsp; <o:p></o:p></span></p>

<p class=MsoNormal><span style='font-family:"Courier New"'>&nbsp;&nbsp;&nbsp;
private KnowledgeBuilder getKnowledgeBuilder(String xmlFileName, String
ruleFileName) {<o:p></o:p></span></p>

<p class=MsoNormal><span style='font-family:"Courier New"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
Thread.currentThread().setContextClassLoader(getClassLoader());<o:p></o:p></span></p>

<p class=MsoNormal><span style='font-family:"Courier New"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
System.setProperty(&quot;drools.dialect.mvel.strict&quot;, &quot;false&quot;);<o:p></o:p></span></p>

<p class=MsoNormal><span style='font-family:"Courier New"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
KnowledgeBuilderConfiguration conf =
KnowledgeBuilderFactory.newKnowledgeBuilderConfiguration(null,<o:p></o:p></span></p>

<p class=MsoNormal><span style='font-family:"Courier New"'>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;getClassLoader());<o:p></o:p></span></p>

<p class=MsoNormal><span style='font-family:"Courier New"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
<o:p></o:p></span></p>

<p class=MsoNormal><span style='font-family:"Courier New"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
((PackageBuilderConfiguration) conf).initSemanticModules();<o:p></o:p></span></p>

<p class=MsoNormal><span style='font-family:"Courier New"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
((PackageBuilderConfiguration) conf).addSemanticModule(new
BPMNSemanticModule());<o:p></o:p></span></p>

<p class=MsoNormal><span style='font-family:"Courier New"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
KnowledgeBuilder kbuilder = KnowledgeBuilderFactory.newKnowledgeBuilder(conf);<o:p></o:p></span></p>

<p class=MsoNormal><span style='font-family:"Courier New"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
kbuilder.add(ResourceFactory.newClassPathResource(&quot;approval.bpmn&quot;),
ResourceType.DRF);<o:p></o:p></span></p>

<p class=MsoNormal><span style='font-family:"Courier New"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
<o:p></o:p></span></p>

<p class=MsoNormal><span style='font-family:"Courier New"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
kbuilder.add(ResourceFactory.newClassPathResource(&quot;approval.drl&quot;),
ResourceType.DRL);<o:p></o:p></span></p>

<p class=MsoNormal><span style='font-family:"Courier New"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
KnowledgeBuilderErrors errors = kbuilder.getErrors();<o:p></o:p></span></p>

<p class=MsoNormal><span style='font-family:"Courier New"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
if (errors.size() &gt; 0) {<o:p></o:p></span></p>

<p class=MsoNormal><span style='font-family:"Courier New"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
for (KnowledgeBuilderError error : errors) {<o:p></o:p></span></p>

<p class=MsoNormal><span style='font-family:"Courier New"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
System.err.println(error);<o:p></o:p></span></p>

<p class=MsoNormal><span style='font-family:"Courier New"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
}<o:p></o:p></span></p>

<p class=MsoNormal><span style='font-family:"Courier New"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
throw new IllegalArgumentException(&quot;Could not parse knowledge.&quot;);<o:p></o:p></span></p>

<p class=MsoNormal><span style='font-family:"Courier New"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
}<o:p></o:p></span></p>

<p class=MsoNormal><span style='font-family:"Courier New"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
return kbuilder;<o:p></o:p></span></p>

<p class=MsoNormal><span style='font-family:"Courier New"'>&nbsp;&nbsp;&nbsp; }<o:p></o:p></span></p>

<p class=MsoNormal><span style='font-family:"Courier New"'>&nbsp;&nbsp;&nbsp; <o:p></o:p></span></p>

<p class=MsoNormal><span style='font-family:"Courier New"'>&nbsp;&nbsp;&nbsp;
private StatefulKnowledgeSession getSession(int sessionId, KnowledgeBase kbase)
{<o:p></o:p></span></p>

<p class=MsoNormal><span style='font-family:"Courier New"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
return JPAKnowledgeService.loadStatefulKnowledgeSession(sessionId, kbase,
getSessionConfig(), getEnvironment());<o:p></o:p></span></p>

<p class=MsoNormal><span style='font-family:"Courier New"'>&nbsp;&nbsp;&nbsp; }<o:p></o:p></span></p>

<p class=MsoNormal><span style='font-family:"Courier New"'>&nbsp;&nbsp;&nbsp; <o:p></o:p></span></p>

<p class=MsoNormal><span style='font-family:"Courier New"'>&nbsp;&nbsp;&nbsp;
private StatefulKnowledgeSession getSession(KnowledgeBase kbase) {<o:p></o:p></span></p>

<p class=MsoNormal><span style='font-family:"Courier New"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
return JPAKnowledgeService.newStatefulKnowledgeSession(kbase,
getSessionConfig(), getEnvironment());<o:p></o:p></span></p>

<p class=MsoNormal><span style='font-family:"Courier New"'>&nbsp;&nbsp;&nbsp; }<o:p></o:p></span></p>

<p class=MsoNormal><span style='font-family:"Courier New"'>&nbsp;&nbsp;&nbsp; <o:p></o:p></span></p>

<p class=MsoNormal><span style='font-family:"Courier New"'>&nbsp;&nbsp;&nbsp;
private KnowledgeSessionConfiguration getSessionConfig() {<o:p></o:p></span></p>

<p class=MsoNormal><span style='font-family:"Courier New"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
SessionConfiguration c = new SessionConfiguration();<o:p></o:p></span></p>

<p class=MsoNormal><span style='font-family:"Courier New"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
c.setClassLoader(getClassLoader());<o:p></o:p></span></p>

<p class=MsoNormal><span style='font-family:"Courier New"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
return c;<o:p></o:p></span></p>

<p class=MsoNormal><span style='font-family:"Courier New"'>&nbsp;&nbsp;&nbsp; }<o:p></o:p></span></p>

<p class=MsoNormal><span style='font-family:"Courier New"'>&nbsp;&nbsp;&nbsp; <o:p></o:p></span></p>

<p class=MsoNormal><span style='font-family:"Courier New"'>&nbsp;&nbsp;&nbsp;
private void registerHumanTaskHandler(StatefulKnowledgeSession ksession) {<o:p></o:p></span></p>

<p class=MsoNormal><span style='font-family:"Courier New"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
<o:p></o:p></span></p>

<p class=MsoNormal><span style='font-family:"Courier New"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
CommandBasedWSHumanTaskHandler approveTask = new
CommandBasedWSHumanTaskHandler(ksession);<o:p></o:p></span></p>

<p class=MsoNormal><span style='font-family:"Courier New"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
<o:p></o:p></span></p>

<p class=MsoNormal><span style='font-family:"Courier New"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
WorkItemManager wm = ksession.getWorkItemManager();<o:p></o:p></span></p>

<p class=MsoNormal><span style='font-family:"Courier New"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
<o:p></o:p></span></p>

<p class=MsoNormal><span style='font-family:"Courier New"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
wm.registerWorkItemHandler(&quot;Human Task&quot;, approveTask);<o:p></o:p></span></p>

<p class=MsoNormal><span style='font-family:"Courier New"'>&nbsp;&nbsp;&nbsp; }<o:p></o:p></span></p>

<p class=MsoNormal><span style='font-family:"Courier New"'>&nbsp;&nbsp;&nbsp; <o:p></o:p></span></p>

<p class=MsoNormal><span style='font-family:"Courier New"'>}<o:p></o:p></span></p>

<p class=MsoNormal><span style='font-family:"Courier New"'><o:p>&nbsp;</o:p></span></p>

<p class=MsoNormal><span style='font-family:"Courier New"'><o:p>&nbsp;</o:p></span></p>

<p class=MsoNormal><span style='font-family:"Arial","sans-serif"'>Thanks,<o:p></o:p></span></p>

<p class=MsoNormal><span style='font-family:"Arial","sans-serif"'>Todd<o:p></o:p></span></p>

</div>

</body>

</html>