Sfoglia il codice sorgente

some more tests, some better rules

Grega Bremec 2 anni fa
parent
commit
55eabccc48

+ 2 - 8
pom.xml

@@ -73,14 +73,8 @@
     <dependency>
       <groupId>junit</groupId>
       <artifactId>junit</artifactId>
-      <version>4.13</version>
-      <scope>test</scope>
-    </dependency>
-    <dependency>
-      <groupId>com.thoughtworks.xstream</groupId>
-      <artifactId>xstream</artifactId>
-      <version>1.4.18.redhat-00001</version>
-      <scope>test</scope>
+      <version>4.13.1</version>
+      <scope>compile</scope>
     </dependency>
   </dependencies>
   <build>

+ 164 - 19
src/main/resources/com/redhat/training/claims/ClaimRuleFlow.bpmn

@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<bpmn2:definitions xmlns:bpmn2="http://www.omg.org/spec/BPMN/20100524/MODEL" xmlns:bpmndi="http://www.omg.org/spec/BPMN/20100524/DI" xmlns:bpsim="http://www.bpsim.org/schemas/1.0" xmlns:dc="http://www.omg.org/spec/DD/20100524/DC" xmlns:di="http://www.omg.org/spec/DD/20100524/DI" xmlns:drools="http://www.jboss.org/drools" xmlns:xsi="xsi" id="_hapNANUYEDq6p6MjaZUHRA" xsi:schemaLocation="http://www.omg.org/spec/BPMN/20100524/MODEL BPMN20.xsd http://www.jboss.org/drools drools.xsd http://www.bpsim.org/schemas/1.0 bpsim.xsd http://www.omg.org/spec/DD/20100524/DC DC.xsd http://www.omg.org/spec/DD/20100524/DI DI.xsd " exporter="jBPM Process Modeler" exporterVersion="2.0" targetNamespace="http://www.omg.org/bpmn20">
+<bpmn2:definitions xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:bpmn2="http://www.omg.org/spec/BPMN/20100524/MODEL" xmlns:bpmndi="http://www.omg.org/spec/BPMN/20100524/DI" xmlns:bpsim="http://www.bpsim.org/schemas/1.0" xmlns:dc="http://www.omg.org/spec/DD/20100524/DC" xmlns:di="http://www.omg.org/spec/DD/20100524/DI" xmlns:drools="http://www.jboss.org/drools" id="_WXuWsNVbEDq3g_nKccKQ0w" xsi:schemaLocation="http://www.omg.org/spec/BPMN/20100524/MODEL BPMN20.xsd http://www.jboss.org/drools drools.xsd http://www.bpsim.org/schemas/1.0 bpsim.xsd http://www.omg.org/spec/DD/20100524/DC DC.xsd http://www.omg.org/spec/DD/20100524/DI DI.xsd " exporter="jBPM Process Modeler" exporterVersion="2.0" targetNamespace="http://www.omg.org/bpmn20">
   <bpmn2:itemDefinition id="_claimantItem" structureRef="com.redhat.training.claims.model.Claimant"/>
   <bpmn2:itemDefinition id="_claimItem" structureRef="com.redhat.training.claims.model.Claim"/>
   <bpmn2:itemDefinition id="_claimResultsItem" structureRef="com.redhat.training.claims.model.ClaimResults"/>
@@ -10,23 +10,100 @@
   <bpmn2:itemDefinition id="__40A79752-23EE-4959-9C2C-FCF16AC32CAD_tClaimInputXItem" structureRef="com.redhat.training.claims.model.Claim"/>
   <bpmn2:itemDefinition id="__40A79752-23EE-4959-9C2C-FCF16AC32CAD_tClaimResultsInputXItem" structureRef="com.redhat.training.claims.model.ClaimResults"/>
   <bpmn2:itemDefinition id="__40A79752-23EE-4959-9C2C-FCF16AC32CAD_tClaimResultsOutputXItem" structureRef="com.redhat.training.claims.model.ClaimResults"/>
-  <bpmn2:collaboration id="_2E56C795-D351-400F-8F6E-8CFFC8A78EC1" name="Default Collaboration">
-    <bpmn2:participant id="_4B4C9794-E44E-4601-AAD1-933CB8B63DBE" name="Pool Participant" processRef="claims.ClaimRuleFlow"/>
+  <bpmn2:itemDefinition id="__E3C7932A-6597-47A4-9B3A-179EF25F38D6_SkippableInputXItem" structureRef="Object"/>
+  <bpmn2:itemDefinition id="__E3C7932A-6597-47A4-9B3A-179EF25F38D6_PriorityInputXItem" structureRef="Object"/>
+  <bpmn2:itemDefinition id="__E3C7932A-6597-47A4-9B3A-179EF25F38D6_CommentInputXItem" structureRef="Object"/>
+  <bpmn2:itemDefinition id="__E3C7932A-6597-47A4-9B3A-179EF25F38D6_DescriptionInputXItem" structureRef="Object"/>
+  <bpmn2:itemDefinition id="__E3C7932A-6597-47A4-9B3A-179EF25F38D6_CreatedByInputXItem" structureRef="Object"/>
+  <bpmn2:itemDefinition id="__E3C7932A-6597-47A4-9B3A-179EF25F38D6_TaskNameInputXItem" structureRef="Object"/>
+  <bpmn2:itemDefinition id="__E3C7932A-6597-47A4-9B3A-179EF25F38D6_GroupIdInputXItem" structureRef="Object"/>
+  <bpmn2:itemDefinition id="__E3C7932A-6597-47A4-9B3A-179EF25F38D6_ContentInputXItem" structureRef="Object"/>
+  <bpmn2:itemDefinition id="__E3C7932A-6597-47A4-9B3A-179EF25F38D6_NotStartedReassignInputXItem" structureRef="Object"/>
+  <bpmn2:itemDefinition id="__E3C7932A-6597-47A4-9B3A-179EF25F38D6_NotCompletedReassignInputXItem" structureRef="Object"/>
+  <bpmn2:itemDefinition id="__E3C7932A-6597-47A4-9B3A-179EF25F38D6_NotStartedNotifyInputXItem" structureRef="Object"/>
+  <bpmn2:itemDefinition id="__E3C7932A-6597-47A4-9B3A-179EF25F38D6_NotCompletedNotifyInputXItem" structureRef="Object"/>
+  <bpmn2:collaboration id="_3AF1B1BD-FB3E-4C36-8212-D227DDCF7872" name="Default Collaboration">
+    <bpmn2:participant id="_D1CF98A8-E4C0-44B8-9435-5D47E2E5B98E" name="Pool Participant" processRef="claims.ClaimRuleFlow"/>
   </bpmn2:collaboration>
   <bpmn2:process id="claims.ClaimRuleFlow" drools:packageName="com.redhat.training.claims" drools:version="1.0" drools:adHoc="false" name="ClaimRuleFlow" isExecutable="true" processType="Public">
     <bpmn2:property id="claimant" itemSubjectRef="_claimantItem" name="claimant"/>
     <bpmn2:property id="claim" itemSubjectRef="_claimItem" name="claim"/>
     <bpmn2:property id="claimResults" itemSubjectRef="_claimResultsItem" name="claimResults"/>
-    <bpmn2:sequenceFlow id="_9C05D7CC-30F3-4EEB-87D9-939E0F7A850A" sourceRef="_69928F5A-82C2-45EE-9DE1-E54DC9C81260" targetRef="_40A79752-23EE-4959-9C2C-FCF16AC32CAD"/>
-    <bpmn2:sequenceFlow id="_9964CDC3-192D-49C0-8EC3-70068E134F6B" sourceRef="_40A79752-23EE-4959-9C2C-FCF16AC32CAD" targetRef="_006D4A8C-DF0F-4342-BB59-9A722B80462B"/>
+    <bpmn2:sequenceFlow id="_9C685875-6800-4B5D-AB22-12ECE1E58ED0" sourceRef="_E3C7932A-6597-47A4-9B3A-179EF25F38D6" targetRef="_9A005979-945D-487B-BD3C-207B325C4732"/>
+    <bpmn2:sequenceFlow id="_97F4B5CB-1DEC-4717-897E-847695EBE458" sourceRef="_6C623396-2499-4830-AAD0-D2C7469414DB" targetRef="_BD49B16F-21C9-42A0-ACEC-039DA99282C3"/>
+    <bpmn2:sequenceFlow id="_D862660E-26B4-4AF6-853D-B60287135DFB" sourceRef="_40A79752-23EE-4959-9C2C-FCF16AC32CAD" targetRef="_6C623396-2499-4830-AAD0-D2C7469414DB"/>
+    <bpmn2:sequenceFlow id="_4C4D5089-43DF-4F08-8570-3CFE2CBD9A6B" sourceRef="_9A005979-945D-487B-BD3C-207B325C4732" targetRef="_40A79752-23EE-4959-9C2C-FCF16AC32CAD">
+      <bpmn2:extensionElements>
+        <drools:metaData name="isAutoConnection.target">
+          <drools:metaValue><![CDATA[true]]></drools:metaValue>
+        </drools:metaData>
+      </bpmn2:extensionElements>
+    </bpmn2:sequenceFlow>
+    <bpmn2:sequenceFlow id="_5B0B8901-C6B0-40A6-B5FF-706CCBD455C6" sourceRef="_69928F5A-82C2-45EE-9DE1-E54DC9C81260" targetRef="_9A005979-945D-487B-BD3C-207B325C4732"/>
+    <bpmn2:sequenceFlow id="_6FFB03BF-7A48-4B42-82D8-98D055337563" sourceRef="_BD49B16F-21C9-42A0-ACEC-039DA99282C3" targetRef="_006D4A8C-DF0F-4342-BB59-9A722B80462B">
+      <bpmn2:extensionElements>
+        <drools:metaData name="isAutoConnection.target">
+          <drools:metaValue><![CDATA[true]]></drools:metaValue>
+        </drools:metaData>
+      </bpmn2:extensionElements>
+    </bpmn2:sequenceFlow>
+    <bpmn2:exclusiveGateway id="_9A005979-945D-487B-BD3C-207B325C4732" gatewayDirection="Converging">
+      <bpmn2:incoming>_5B0B8901-C6B0-40A6-B5FF-706CCBD455C6</bpmn2:incoming>
+      <bpmn2:incoming>_9C685875-6800-4B5D-AB22-12ECE1E58ED0</bpmn2:incoming>
+      <bpmn2:outgoing>_4C4D5089-43DF-4F08-8570-3CFE2CBD9A6B</bpmn2:outgoing>
+    </bpmn2:exclusiveGateway>
+    <bpmn2:userTask id="_E3C7932A-6597-47A4-9B3A-179EF25F38D6" name="Provide Clarifications">
+      <bpmn2:extensionElements>
+        <drools:metaData name="elementname">
+          <drools:metaValue><![CDATA[Provide Clarifications]]></drools:metaValue>
+        </drools:metaData>
+      </bpmn2:extensionElements>
+      <bpmn2:outgoing>_9C685875-6800-4B5D-AB22-12ECE1E58ED0</bpmn2:outgoing>
+      <bpmn2:ioSpecification>
+        <bpmn2:dataInput id="_E3C7932A-6597-47A4-9B3A-179EF25F38D6_TaskNameInputX" drools:dtype="Object" itemSubjectRef="__E3C7932A-6597-47A4-9B3A-179EF25F38D6_TaskNameInputXItem" name="TaskName"/>
+        <bpmn2:dataInput id="_E3C7932A-6597-47A4-9B3A-179EF25F38D6_SkippableInputX" drools:dtype="Object" itemSubjectRef="__E3C7932A-6597-47A4-9B3A-179EF25F38D6_SkippableInputXItem" name="Skippable"/>
+        <bpmn2:inputSet>
+          <bpmn2:dataInputRefs>_E3C7932A-6597-47A4-9B3A-179EF25F38D6_TaskNameInputX</bpmn2:dataInputRefs>
+          <bpmn2:dataInputRefs>_E3C7932A-6597-47A4-9B3A-179EF25F38D6_SkippableInputX</bpmn2:dataInputRefs>
+        </bpmn2:inputSet>
+      </bpmn2:ioSpecification>
+      <bpmn2:dataInputAssociation>
+        <bpmn2:targetRef>_E3C7932A-6597-47A4-9B3A-179EF25F38D6_TaskNameInputX</bpmn2:targetRef>
+        <bpmn2:assignment>
+          <bpmn2:from xsi:type="bpmn2:tFormalExpression"><![CDATA[Task]]></bpmn2:from>
+          <bpmn2:to xsi:type="bpmn2:tFormalExpression"><![CDATA[_E3C7932A-6597-47A4-9B3A-179EF25F38D6_TaskNameInputX]]></bpmn2:to>
+        </bpmn2:assignment>
+      </bpmn2:dataInputAssociation>
+      <bpmn2:dataInputAssociation>
+        <bpmn2:targetRef>_E3C7932A-6597-47A4-9B3A-179EF25F38D6_SkippableInputX</bpmn2:targetRef>
+        <bpmn2:assignment>
+          <bpmn2:from xsi:type="bpmn2:tFormalExpression"><![CDATA[false]]></bpmn2:from>
+          <bpmn2:to xsi:type="bpmn2:tFormalExpression"><![CDATA[_E3C7932A-6597-47A4-9B3A-179EF25F38D6_SkippableInputX]]></bpmn2:to>
+        </bpmn2:assignment>
+      </bpmn2:dataInputAssociation>
+    </bpmn2:userTask>
+    <bpmn2:scriptTask id="_BD49B16F-21C9-42A0-ACEC-039DA99282C3" name="Register Facts with Session" scriptFormat="http://www.java.com/java">
+      <bpmn2:extensionElements>
+        <drools:metaData name="elementname">
+          <drools:metaValue><![CDATA[Register Facts with Session]]></drools:metaValue>
+        </drools:metaData>
+      </bpmn2:extensionElements>
+      <bpmn2:incoming>_97F4B5CB-1DEC-4717-897E-847695EBE458</bpmn2:incoming>
+      <bpmn2:outgoing>_6FFB03BF-7A48-4B42-82D8-98D055337563</bpmn2:outgoing>
+      <bpmn2:script>System.out.println("Registering facts with session.");</bpmn2:script>
+    </bpmn2:scriptTask>
+    <bpmn2:exclusiveGateway id="_6C623396-2499-4830-AAD0-D2C7469414DB" gatewayDirection="Diverging">
+      <bpmn2:incoming>_D862660E-26B4-4AF6-853D-B60287135DFB</bpmn2:incoming>
+      <bpmn2:outgoing>_97F4B5CB-1DEC-4717-897E-847695EBE458</bpmn2:outgoing>
+    </bpmn2:exclusiveGateway>
     <bpmn2:businessRuleTask id="_40A79752-23EE-4959-9C2C-FCF16AC32CAD" drools:ruleFlowGroup="sanity" name="Sanity Checks" implementation="http://www.jboss.org/drools/rule">
       <bpmn2:extensionElements>
         <drools:metaData name="elementname">
           <drools:metaValue><![CDATA[Sanity Checks]]></drools:metaValue>
         </drools:metaData>
       </bpmn2:extensionElements>
-      <bpmn2:incoming>_9C05D7CC-30F3-4EEB-87D9-939E0F7A850A</bpmn2:incoming>
-      <bpmn2:outgoing>_9964CDC3-192D-49C0-8EC3-70068E134F6B</bpmn2:outgoing>
+      <bpmn2:incoming>_4C4D5089-43DF-4F08-8570-3CFE2CBD9A6B</bpmn2:incoming>
+      <bpmn2:outgoing>_D862660E-26B4-4AF6-853D-B60287135DFB</bpmn2:outgoing>
       <bpmn2:ioSpecification>
         <bpmn2:dataInput id="_40A79752-23EE-4959-9C2C-FCF16AC32CAD_tClaimantInputX" drools:dtype="com.redhat.training.claims.model.Claimant" itemSubjectRef="__40A79752-23EE-4959-9C2C-FCF16AC32CAD_tClaimantInputXItem" name="tClaimant"/>
         <bpmn2:dataInput id="_40A79752-23EE-4959-9C2C-FCF16AC32CAD_tClaimInputX" drools:dtype="com.redhat.training.claims.model.Claim" itemSubjectRef="__40A79752-23EE-4959-9C2C-FCF16AC32CAD_tClaimInputXItem" name="tClaim"/>
@@ -59,30 +136,58 @@
       </bpmn2:dataOutputAssociation>
     </bpmn2:businessRuleTask>
     <bpmn2:startEvent id="_69928F5A-82C2-45EE-9DE1-E54DC9C81260">
-      <bpmn2:outgoing>_9C05D7CC-30F3-4EEB-87D9-939E0F7A850A</bpmn2:outgoing>
+      <bpmn2:outgoing>_5B0B8901-C6B0-40A6-B5FF-706CCBD455C6</bpmn2:outgoing>
     </bpmn2:startEvent>
     <bpmn2:endEvent id="_006D4A8C-DF0F-4342-BB59-9A722B80462B">
-      <bpmn2:incoming>_9964CDC3-192D-49C0-8EC3-70068E134F6B</bpmn2:incoming>
+      <bpmn2:incoming>_6FFB03BF-7A48-4B42-82D8-98D055337563</bpmn2:incoming>
     </bpmn2:endEvent>
   </bpmn2:process>
   <bpmndi:BPMNDiagram>
     <bpmndi:BPMNPlane bpmnElement="claims.ClaimRuleFlow">
       <bpmndi:BPMNShape id="shape__006D4A8C-DF0F-4342-BB59-9A722B80462B" bpmnElement="_006D4A8C-DF0F-4342-BB59-9A722B80462B">
-        <dc:Bounds height="56" width="56" x="795" y="256"/>
+        <dc:Bounds height="56" width="56" x="820" y="99"/>
       </bpmndi:BPMNShape>
       <bpmndi:BPMNShape id="shape__69928F5A-82C2-45EE-9DE1-E54DC9C81260" bpmnElement="_69928F5A-82C2-45EE-9DE1-E54DC9C81260">
         <dc:Bounds height="56" width="56" x="51" y="99"/>
       </bpmndi:BPMNShape>
       <bpmndi:BPMNShape id="shape__40A79752-23EE-4959-9C2C-FCF16AC32CAD" bpmnElement="_40A79752-23EE-4959-9C2C-FCF16AC32CAD">
-        <dc:Bounds height="102" width="154" x="155" y="76"/>
+        <dc:Bounds height="102" width="154" x="275" y="76"/>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="shape__6C623396-2499-4830-AAD0-D2C7469414DB" bpmnElement="_6C623396-2499-4830-AAD0-D2C7469414DB">
+        <dc:Bounds height="56" width="56" x="484" y="99"/>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="shape__BD49B16F-21C9-42A0-ACEC-039DA99282C3" bpmnElement="_BD49B16F-21C9-42A0-ACEC-039DA99282C3">
+        <dc:Bounds height="102" width="154" x="603" y="76"/>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="shape__E3C7932A-6597-47A4-9B3A-179EF25F38D6" bpmnElement="_E3C7932A-6597-47A4-9B3A-179EF25F38D6">
+        <dc:Bounds height="102" width="154" x="275" y="255"/>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="shape__9A005979-945D-487B-BD3C-207B325C4732" bpmnElement="_9A005979-945D-487B-BD3C-207B325C4732">
+        <dc:Bounds height="56" width="56" x="163" y="99"/>
       </bpmndi:BPMNShape>
-      <bpmndi:BPMNEdge id="edge_shape__40A79752-23EE-4959-9C2C-FCF16AC32CAD_to_shape__006D4A8C-DF0F-4342-BB59-9A722B80462B" bpmnElement="_9964CDC3-192D-49C0-8EC3-70068E134F6B">
-        <di:waypoint x="232" y="127"/>
-        <di:waypoint x="795" y="284"/>
+      <bpmndi:BPMNEdge id="edge_shape__BD49B16F-21C9-42A0-ACEC-039DA99282C3_to_shape__006D4A8C-DF0F-4342-BB59-9A722B80462B" bpmnElement="_6FFB03BF-7A48-4B42-82D8-98D055337563">
+        <di:waypoint x="680" y="127"/>
+        <di:waypoint x="820" y="127"/>
       </bpmndi:BPMNEdge>
-      <bpmndi:BPMNEdge id="edge_shape__69928F5A-82C2-45EE-9DE1-E54DC9C81260_to_shape__40A79752-23EE-4959-9C2C-FCF16AC32CAD" bpmnElement="_9C05D7CC-30F3-4EEB-87D9-939E0F7A850A">
-        <di:waypoint x="79" y="127"/>
-        <di:waypoint x="232" y="127"/>
+      <bpmndi:BPMNEdge id="edge_shape__69928F5A-82C2-45EE-9DE1-E54DC9C81260_to_shape__9A005979-945D-487B-BD3C-207B325C4732" bpmnElement="_5B0B8901-C6B0-40A6-B5FF-706CCBD455C6">
+        <di:waypoint x="107" y="127"/>
+        <di:waypoint x="163" y="127"/>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="edge_shape__9A005979-945D-487B-BD3C-207B325C4732_to_shape__40A79752-23EE-4959-9C2C-FCF16AC32CAD" bpmnElement="_4C4D5089-43DF-4F08-8570-3CFE2CBD9A6B">
+        <di:waypoint x="191" y="127"/>
+        <di:waypoint x="275" y="127"/>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="edge_shape__40A79752-23EE-4959-9C2C-FCF16AC32CAD_to_shape__6C623396-2499-4830-AAD0-D2C7469414DB" bpmnElement="_D862660E-26B4-4AF6-853D-B60287135DFB">
+        <di:waypoint x="429" y="127"/>
+        <di:waypoint x="484" y="127"/>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="edge_shape__6C623396-2499-4830-AAD0-D2C7469414DB_to_shape__BD49B16F-21C9-42A0-ACEC-039DA99282C3" bpmnElement="_97F4B5CB-1DEC-4717-897E-847695EBE458">
+        <di:waypoint x="540" y="127"/>
+        <di:waypoint x="603" y="127"/>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="edge_shape__E3C7932A-6597-47A4-9B3A-179EF25F38D6_to_shape__9A005979-945D-487B-BD3C-207B325C4732" bpmnElement="_9C685875-6800-4B5D-AB22-12ECE1E58ED0">
+        <di:waypoint x="275" y="306"/>
+        <di:waypoint x="191" y="155"/>
       </bpmndi:BPMNEdge>
     </bpmndi:BPMNPlane>
   </bpmndi:BPMNDiagram>
@@ -118,10 +223,50 @@
               </bpsim:UnitCost>
             </bpsim:CostParameters>
           </bpsim:ElementParameters>
+          <bpsim:ElementParameters elementRef="_BD49B16F-21C9-42A0-ACEC-039DA99282C3">
+            <bpsim:TimeParameters>
+              <bpsim:ProcessingTime>
+                <bpsim:NormalDistribution mean="0" standardDeviation="0"/>
+              </bpsim:ProcessingTime>
+            </bpsim:TimeParameters>
+            <bpsim:ResourceParameters>
+              <bpsim:Availability>
+                <bpsim:FloatingParameter value="0"/>
+              </bpsim:Availability>
+              <bpsim:Quantity>
+                <bpsim:FloatingParameter value="0"/>
+              </bpsim:Quantity>
+            </bpsim:ResourceParameters>
+            <bpsim:CostParameters>
+              <bpsim:UnitCost>
+                <bpsim:FloatingParameter value="0"/>
+              </bpsim:UnitCost>
+            </bpsim:CostParameters>
+          </bpsim:ElementParameters>
+          <bpsim:ElementParameters elementRef="_E3C7932A-6597-47A4-9B3A-179EF25F38D6">
+            <bpsim:TimeParameters>
+              <bpsim:ProcessingTime>
+                <bpsim:NormalDistribution mean="0" standardDeviation="0"/>
+              </bpsim:ProcessingTime>
+            </bpsim:TimeParameters>
+            <bpsim:ResourceParameters>
+              <bpsim:Availability>
+                <bpsim:FloatingParameter value="0"/>
+              </bpsim:Availability>
+              <bpsim:Quantity>
+                <bpsim:FloatingParameter value="0"/>
+              </bpsim:Quantity>
+            </bpsim:ResourceParameters>
+            <bpsim:CostParameters>
+              <bpsim:UnitCost>
+                <bpsim:FloatingParameter value="0"/>
+              </bpsim:UnitCost>
+            </bpsim:CostParameters>
+          </bpsim:ElementParameters>
         </bpsim:Scenario>
       </bpsim:BPSimData>
     </bpmn2:extensionElements>
-    <bpmn2:source>_hapNANUYEDq6p6MjaZUHRA</bpmn2:source>
-    <bpmn2:target>_hapNANUYEDq6p6MjaZUHRA</bpmn2:target>
+    <bpmn2:source>_WXuWsNVbEDq3g_nKccKQ0w</bpmn2:source>
+    <bpmn2:target>_WXuWsNVbEDq3g_nKccKQ0w</bpmn2:target>
   </bpmn2:relationship>
 </bpmn2:definitions>

+ 6 - 4
src/main/resources/com/redhat/training/claims/ClaimTooSmall.rdrl

@@ -1,16 +1,18 @@
 package com.redhat.training.claims;
 
-import java.lang.Number;
 import com.redhat.training.claims.model.Claim;
 import com.redhat.training.claims.model.ClaimResults;
 
 rule "ClaimTooSmall"
+	ruleflow-group "sanity"
+	salience 1000000
 	dialect "mvel"
 	when
-		Claim( amount <= 500.0 )
+		c: Claim( amount <= 500.0 )
+		cr: ClaimResults(claimId == c.getId())
 	then
-		ClaimResults cr = new ClaimResults();
 		cr.setApproved( true );
-		insert( cr );
 		cr.getReasons().add("Claim amount too small to bother.");
+		update( cr );
+		System.out.println("Claim approved - too small to bother");
 end

+ 2 - 1
src/main/resources/com/redhat/training/claims/sanity.drl

@@ -8,7 +8,7 @@ end
 
 rule "Create a ClaimResults for each Claim without one"
 ruleflow-group "sanity"
-salience 100000
+salience 1000000
 when
     c: Claim()
     not ClaimResults(claimId == c.getId())
@@ -16,6 +16,7 @@ then
     ClaimResults r = new ClaimResults();
     r.setClaimId(c.getId());
     insert(r);
+    System.out.println("Created ClaimResults for " + c.getId());
 end
 
 rule "Check whether Claimant is not Involved"

+ 46 - 54
src/test/java/com/redhat/training/claims/ClaimantInvolvedTest.java

@@ -1,5 +1,6 @@
 package com.redhat.training.claims;
 
+import static org.junit.Assert.assertEquals;
 import static org.junit.Assert.assertFalse;
 import static org.junit.Assert.assertTrue;
 
@@ -11,8 +12,6 @@ import com.redhat.training.claims.model.Claimant;
 import com.redhat.training.claims.model.Gender;
 
 import org.junit.Test;
-import org.kie.api.runtime.rule.QueryResults;
-import org.kie.api.runtime.rule.QueryResultsRow;
 
 public class ClaimantInvolvedTest extends ClaimsTestSupport {
     @Test
@@ -21,46 +20,51 @@ public class ClaimantInvolvedTest extends ClaimsTestSupport {
 
         this.insertValidClaimantAndClaim(123, 1000.00, "John Doe", Gender.MALE, "Crash");
 
+        session.getAgenda().getAgendaGroup("sanity").setFocus();
         session.fireAllRules();
 
-        ArrayList<ClaimResults> crs = new ArrayList<ClaimResults>();
-        QueryResults qr = session.getQueryResults("Get ClaimResults");
-        for (QueryResultsRow qrr : qr) {
-            ClaimResults cr = (ClaimResults)qrr.get("cr");
-            crs.add(cr);
-        }
-        assertTrue("Unexpected number of claim results", crs.size() == 1);
+        ArrayList<ClaimResults> crs = this.getClaimResults();
+
+        assertEquals("Unexpected number of claim results", 1, crs.size());
         assertTrue("Expected reason not in claim result", crs.get(0).getReasons().contains("Claim owner properly listed as involved."));
+
+        System.out.println("Finished assertions for testClaimantInvolved.");
     }
+
     @Test
     public void testClaimantNotInvolved() {
         System.out.println("Running testClaimantNotInvolved...");
-        Claimant c = new Claimant();
-        c.setName("John Doe");
-        c.setGender(Gender.MALE);
 
-        Claim cl = new Claim();
-        cl.setId(123);
-        cl.setAmount(1000.00);
-        cl.setReason("Crash");
-        //cl.getInvolvedPersons().add(c);
+        this.insertInvalidClaimantAndClaim(234, 1500.00, "Jane Doe", Gender.FEMALE, "Breakdown");
 
-        c.getClaims().add(cl);
+        session.getAgenda().getAgendaGroup("sanity").setFocus();
+        session.fireAllRules();
 
-        session.insert(c);
-        session.insert(cl);
+        ArrayList<ClaimResults> crs = this.getClaimResults();
 
+        assertEquals("Unexpected number of claim results", 1, crs.size());
+        assertFalse("Expected a rejected Claim", crs.get(0).isApproved());
+        assertTrue("Expected reason not in claim result", crs.get(0).getReasons().contains("Can't file claim on behalf of someone else."));
+
+        System.out.println("Finished assertions for testClaimantNotInvolved.");
+    }
+
+    @Test
+    public void testClaimantNotInvolvedLowAmount() {
+        System.out.println("Running testClaimantNotInvolvedLowAmount...");
+
+        this.insertInvalidClaimantAndClaim(345, 100.00, "Jane Doe", Gender.FEMALE, "Foo");
+
+        session.getAgenda().getAgendaGroup("sanity").setFocus();
         session.fireAllRules();
 
-        ArrayList<ClaimResults> crs = new ArrayList<ClaimResults>();
-        QueryResults qr = session.getQueryResults("Get ClaimResults");
-        for (QueryResultsRow qrr : qr) {
-            ClaimResults cr = (ClaimResults)qrr.get("cr");
-            crs.add(cr);
-        }
-        assertTrue("Unexpected number of claim results", crs.size() == 1);
-        assertFalse(crs.get(0).isApproved());
+        ArrayList<ClaimResults> crs = this.getClaimResults();
+
+        assertEquals("Unexpected number of claim results", 1, crs.size());
+        assertFalse("Expected a rejected Claim", crs.get(0).isApproved());
         assertTrue("Expected reason not in claim result", crs.get(0).getReasons().contains("Can't file claim on behalf of someone else."));
+
+        System.out.println("Finished assertions for testClaimantNotInvolvedLowAmount.");
     }
 
     @Test
@@ -89,42 +93,30 @@ public class ClaimantInvolvedTest extends ClaimsTestSupport {
         session.insert(cl1);
         session.insert(cl2);
 
+        session.getAgenda().getAgendaGroup("sanity").setFocus();
         session.fireAllRules();
+
+        ArrayList<ClaimResults> crs = this.getClaimResults();
+
+        assertEquals("Unexpected number of claim results", 2, crs.size());
+
+        System.out.println("Finished assertions for testMultipleClaimsOneClaimant.");
     }
 
     @Test
     public void testMultipleClaimsMultiClaimants() {
         System.out.println("Running testMultipleClaimsMultiClaimants...");
-        Claimant c1 = new Claimant();
-        c1.setName("John Doe");
-        c1.setGender(Gender.MALE);
-
-        Claim cl1 = new Claim();
-        cl1.setId(123);
-        cl1.setAmount(1000.00);
-        cl1.setReason("Crash");
-        cl1.getInvolvedPersons().add(c1);
-
-        c1.getClaims().add(cl1);
 
-        session.insert(c1);
-        session.insert(cl1);
-
-        Claimant c2 = new Claimant();
-        c2.setName("Jane Doe");
-        c2.setGender(Gender.FEMALE);
+        this.insertValidClaimantAndClaim(123, 1000.00, "John Doe", Gender.MALE, "Crash");
+        this.insertValidClaimantAndClaim(234, 1500.00, "Jane Doe", Gender.FEMALE, "Breakdown");
 
-        Claim cl2 = new Claim();
-        cl2.setId(234);
-        cl2.setAmount(2000.00);
-        cl2.setReason("Breakdown");
-        cl2.getInvolvedPersons().add(c2);
+        session.getAgenda().getAgendaGroup("sanity").setFocus();
+        session.fireAllRules();
 
-        c2.getClaims().add(cl2);
+        ArrayList<ClaimResults> crs = this.getClaimResults();
 
-        session.insert(c2);
-        session.insert(cl2);
+        assertEquals("Unexpected number of claim results", 2, crs.size());
 
-        session.fireAllRules();
+        System.out.println("Finished assertions for testMultipleClaimsMultiClaimants.");
     }
 }

+ 32 - 0
src/test/java/com/redhat/training/claims/ClaimsTestSupport.java

@@ -1,6 +1,9 @@
 package com.redhat.training.claims;
 
+import java.util.ArrayList;
+
 import com.redhat.training.claims.model.Claim;
+import com.redhat.training.claims.model.ClaimResults;
 import com.redhat.training.claims.model.Claimant;
 import com.redhat.training.claims.model.Gender;
 
@@ -9,6 +12,8 @@ import org.junit.Before;
 import org.kie.api.KieServices;
 import org.kie.api.runtime.KieContainer;
 import org.kie.api.runtime.KieSession;
+import org.kie.api.runtime.rule.QueryResults;
+import org.kie.api.runtime.rule.QueryResultsRow;
 
 public class ClaimsTestSupport {
     KieSession session;
@@ -43,4 +48,31 @@ public class ClaimsTestSupport {
         session.insert(c);
         session.insert(cl);
     }
+
+    public void insertInvalidClaimantAndClaim(int claimId, double amount, String claimantName, Gender claimantGender, String reason) {
+        Claimant c = new Claimant();
+        c.setName(claimantName);
+        c.setGender(claimantGender);
+
+        Claim cl = new Claim();
+        cl.setId(claimId);
+        cl.setAmount(amount);
+        cl.setReason(reason);
+        // cl.getInvolvedPersons().add(c);
+
+        c.getClaims().add(cl);
+
+        session.insert(c);
+        session.insert(cl);
+    }
+
+    public ArrayList<ClaimResults> getClaimResults() {
+        ArrayList<ClaimResults> crs = new ArrayList<ClaimResults>();
+        QueryResults qr = session.getQueryResults("Get ClaimResults");
+        for (QueryResultsRow qrr : qr) {
+            ClaimResults cr = (ClaimResults)qrr.get("cr");
+            crs.add(cr);
+        }
+        return crs;
+    }
 }