[jboss-svn-commits] JBL Code SVN: r34932 - in labs/jbossrules/branches/5_1_20100802_esteban_diega: drools-compiler/src/test/java/org/drools and 3 other directories.

jboss-svn-commits at lists.jboss.org jboss-svn-commits at lists.jboss.org
Mon Aug 30 12:02:07 EDT 2010


Author: diegoll
Date: 2010-08-30 12:02:05 -0400 (Mon, 30 Aug 2010)
New Revision: 34932

Added:
   labs/jbossrules/branches/5_1_20100802_esteban_diega/drools-compiler/src/test/java/org/drools/flow/
   labs/jbossrules/branches/5_1_20100802_esteban_diega/drools-compiler/src/test/java/org/drools/flow/drf/
   labs/jbossrules/branches/5_1_20100802_esteban_diega/drools-compiler/src/test/java/org/drools/flow/drf/RuleFlowTimerCronExpressionsTest.java
Modified:
   labs/jbossrules/branches/5_1_20100802_esteban_diega/drools-compiler/src/main/java/org/drools/compiler/xml/processes/TimerNodeHandler.java
   labs/jbossrules/branches/5_1_20100802_esteban_diega/drools-core/src/main/java/org/drools/process/core/timer/Timer.java
Log:
added test for cron expressions inside flow

Modified: labs/jbossrules/branches/5_1_20100802_esteban_diega/drools-compiler/src/main/java/org/drools/compiler/xml/processes/TimerNodeHandler.java
===================================================================
--- labs/jbossrules/branches/5_1_20100802_esteban_diega/drools-compiler/src/main/java/org/drools/compiler/xml/processes/TimerNodeHandler.java	2010-08-30 07:10:00 UTC (rev 34931)
+++ labs/jbossrules/branches/5_1_20100802_esteban_diega/drools-compiler/src/main/java/org/drools/compiler/xml/processes/TimerNodeHandler.java	2010-08-30 16:02:05 UTC (rev 34932)
@@ -20,6 +20,7 @@
         TimerNode timerNode = (TimerNode) node;
         String delay = element.getAttribute("delay");
         String period = element.getAttribute("period");
+        String cronExpression = element.getAttribute("cron");
         if ((delay != null && delay.length() > 0) || (period != null && period.length() > 0)) {
             Timer timer = timerNode.getTimer();
             if (timer == null) {
@@ -32,6 +33,9 @@
             if (period != null && period.length() != 0 ) {
                 timer.setPeriod(period);
             }
+            if (cronExpression != null && cronExpression.length() != 0) {
+                timer.setCronEx(cronExpression);
+            }
         }
     }
 

Added: labs/jbossrules/branches/5_1_20100802_esteban_diega/drools-compiler/src/test/java/org/drools/flow/drf/RuleFlowTimerCronExpressionsTest.java
===================================================================
--- labs/jbossrules/branches/5_1_20100802_esteban_diega/drools-compiler/src/test/java/org/drools/flow/drf/RuleFlowTimerCronExpressionsTest.java	                        (rev 0)
+++ labs/jbossrules/branches/5_1_20100802_esteban_diega/drools-compiler/src/test/java/org/drools/flow/drf/RuleFlowTimerCronExpressionsTest.java	2010-08-30 16:02:05 UTC (rev 34932)
@@ -0,0 +1,76 @@
+package org.drools.flow.drf;
+
+import java.io.Reader;
+import java.io.StringReader;
+
+import junit.framework.Assert;
+
+import org.drools.KnowledgeBase;
+import org.drools.builder.KnowledgeBuilder;
+import org.drools.builder.KnowledgeBuilderError;
+import org.drools.builder.KnowledgeBuilderFactory;
+import org.drools.builder.ResourceType;
+import org.drools.io.ResourceFactory;
+import org.drools.runtime.StatefulKnowledgeSession;
+import org.drools.runtime.process.ProcessInstance;
+import org.junit.Test;
+
+public class RuleFlowTimerCronExpressionsTest {
+
+    @Test
+    public void cronBasedTimerNode() throws InterruptedException{
+        KnowledgeBuilder kbuilder = KnowledgeBuilderFactory.newKnowledgeBuilder();
+        kbuilder.add(ResourceFactory.newReaderResource(getTimerNodeProcessDefinition()), ResourceType.DRF);
+        assertBuilder(kbuilder);
+        KnowledgeBase kbase = kbuilder.newKnowledgeBase();
+        StatefulKnowledgeSession ksession = kbase.newStatefulKnowledgeSession();
+        ProcessInstance processInstance = ksession.startProcess("cronProcess");
+        
+        Thread.sleep(4000);
+        
+        Assert.assertEquals(ProcessInstance.STATE_COMPLETED, processInstance.getState());
+    }
+    
+    private void assertBuilder(KnowledgeBuilder kbuilder) {
+        if(kbuilder.hasErrors()){
+            StringBuilder errorMsgs = new StringBuilder();
+            for (KnowledgeBuilderError error : kbuilder.getErrors()) {
+                errorMsgs.append(error.getMessage());
+                errorMsgs.append(System.getProperty("line.separator"));
+            }
+            Assert.fail(errorMsgs.toString());
+        }
+    }
+
+    private Reader getTimerNodeProcessDefinition(){
+        return new StringReader(
+        		"<process xmlns=\"http://drools.org/drools-5.0/process\"\n" + 
+        		"         xmlns:xs=\"http://www.w3.org/2001/XMLSchema-instance\"\n" + 
+        		"         xs:schemaLocation=\"http://drools.org/drools-5.0/process drools-processes-5.0.xsd\"\n" + 
+        		"         type=\"RuleFlow\" name=\"org.drools.timer.CronProcess\" id=\"cronProcess\" package-name=\"org.drools.timer\" version=\"1\" >\n" + 
+        		"  <nodes>\n" + 
+        		"    <start id=\"1\" name=\"Start\" />\n" + 
+        		"    <timerNode id=\"2\" name=\"Timer\" delay=\"0ms\" period=\"500ms\" cron=\"batata\" />\n" + 
+        		"    <actionNode id=\"3\" name=\"Action\">\n" + 
+        		"      <action type=\"expression\" dialect=\"java\">\n" + 
+        		"        System.out.println(\"Triggered\");\n" + 
+        		"        insert( new Object() );\n" + 
+        		"      </action>\n" + 
+        		"    </actionNode>\n" + 
+        		"    <milestone id=\"4\" name=\"Wait\">\n" + 
+        		"      <constraint type=\"rule\" dialect=\"mvel\">\n" + 
+        		"        Number( intValue &gt;= 5 ) from accumulate ( b: Object( ), count( b ) )\n" + 
+        		"      </constraint>\n" + 
+        		"    </milestone>\n" + 
+        		"    <end id=\"5\" name=\"End\" />\n" + 
+        		"  </nodes>\n" + 
+        		"  <connections>\n" + 
+        		"    <connection from=\"1\" to=\"2\" />\n" + 
+        		"    <connection from=\"2\" to=\"3\" />\n" + 
+        		"    <connection from=\"3\" to=\"4\" />\n" + 
+        		"    <connection from=\"4\" to=\"5\" />\n" + 
+        		"  </connections>\n" + 
+        		"</process>"
+            );
+    }
+}


Property changes on: labs/jbossrules/branches/5_1_20100802_esteban_diega/drools-compiler/src/test/java/org/drools/flow/drf/RuleFlowTimerCronExpressionsTest.java
___________________________________________________________________
Name: svn:eol-style
   + native

Modified: labs/jbossrules/branches/5_1_20100802_esteban_diega/drools-core/src/main/java/org/drools/process/core/timer/Timer.java
===================================================================
--- labs/jbossrules/branches/5_1_20100802_esteban_diega/drools-core/src/main/java/org/drools/process/core/timer/Timer.java	2010-08-30 07:10:00 UTC (rev 34931)
+++ labs/jbossrules/branches/5_1_20100802_esteban_diega/drools-core/src/main/java/org/drools/process/core/timer/Timer.java	2010-08-30 16:02:05 UTC (rev 34932)
@@ -27,6 +27,7 @@
     private long id;
     private String delay;
     private String period;
+    private String cronEx;
     
     public long getId() {
         return id;
@@ -53,21 +54,35 @@
     }
     
     public String toString() {
-    	String result =  "Timer";
+    	StringBuilder result =  new StringBuilder("Timer");
     	if (delay != null || period != null) {
-    		result += "[";
+    		result.append("[");
     		if (delay != null) {
-    			result += "delay=" + delay;
+    			result.append("delay=").append(delay);
     			if (period != null) {
-    				result += ", ";
+    				result.append(", ");
     			}
     		}
     		if (period != null) {
-    			result += "period=" + period;
+    			result.append("period=").append(period);
+    			if (cronEx != null) {
+    			    result.append(", ");
+    			}
     		}
-    		result += "]";
+    		if (cronEx != null) {
+    		    result.append("cronEx=").append(cronEx);
+    		}
+    		result.append("]");
     	}
-    	return result;
+    	return result.toString();
     }
 
+    public String getCronEx() {
+        return cronEx;
+    }
+
+    public void setCronEx(String cronEx) {
+        this.cronEx = cronEx;
+    }
+
 }



More information about the jboss-svn-commits mailing list