[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 >= 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