[jbpm-commits] JBoss JBPM SVN: r4568 - in jbpm4/trunk/modules: pvm/src/main/java/org/jbpm/pvm/internal/query and 3 other directories.

do-not-reply at jboss.org do-not-reply at jboss.org
Thu Apr 16 12:28:23 EDT 2009


Author: tom.baeyens at jboss.com
Date: 2009-04-16 12:28:23 -0400 (Thu, 16 Apr 2009)
New Revision: 4568

Added:
   jbpm4/trunk/modules/test-db/src/test/java/org/jbpm/test/mgmt/
   jbpm4/trunk/modules/test-db/src/test/java/org/jbpm/test/mgmt/JobQueryTest.java
Modified:
   jbpm4/trunk/modules/jpdl/src/main/java/org/jbpm/jpdl/internal/xml/JpdlParser.java
   jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/query/JobQueryImpl.java
   jbpm4/trunk/modules/userguide/src/main/docbook/en/modules/ch05-Jpdl.xml
Log:
JBPM-2169 timer, messages and error job queries

Modified: jbpm4/trunk/modules/jpdl/src/main/java/org/jbpm/jpdl/internal/xml/JpdlParser.java
===================================================================
--- jbpm4/trunk/modules/jpdl/src/main/java/org/jbpm/jpdl/internal/xml/JpdlParser.java	2009-04-16 13:51:40 UTC (rev 4567)
+++ jbpm4/trunk/modules/jpdl/src/main/java/org/jbpm/jpdl/internal/xml/JpdlParser.java	2009-04-16 16:28:23 UTC (rev 4568)
@@ -227,6 +227,11 @@
             activity.setType(activityBinding.getTagName());
             activityBinding.parseName(element, activity, parse);
             activityBinding.parseTransitions(element, activity, parse, this);
+            
+            if (XmlUtil.attributeBoolean(element, "async", false, parse, Boolean.FALSE)) {
+              activity.setExecutionAsync(true);
+            }
+            
             ActivityBehaviour activityBehaviour = (ActivityBehaviour) activityBinding.parse(element, parse, this);
             activity.setBehaviour(activityBehaviour);
             

Modified: jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/query/JobQueryImpl.java
===================================================================
--- jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/query/JobQueryImpl.java	2009-04-16 13:51:40 UTC (rev 4567)
+++ jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/query/JobQueryImpl.java	2009-04-16 16:28:23 UTC (rev 4568)
@@ -67,6 +67,8 @@
     
     if (exception) {
       appendWhereClause("j.exception is not null ", hql);
+    } else {
+      appendWhereClause("j.exception is null ", hql);
     }
 
     return hql.toString();

Added: jbpm4/trunk/modules/test-db/src/test/java/org/jbpm/test/mgmt/JobQueryTest.java
===================================================================
--- jbpm4/trunk/modules/test-db/src/test/java/org/jbpm/test/mgmt/JobQueryTest.java	                        (rev 0)
+++ jbpm4/trunk/modules/test-db/src/test/java/org/jbpm/test/mgmt/JobQueryTest.java	2009-04-16 16:28:23 UTC (rev 4568)
@@ -0,0 +1,107 @@
+package org.jbpm.test.mgmt;
+
+import java.util.List;
+
+import org.jbpm.job.Job;
+import org.jbpm.test.JbpmTestCase;
+
+
+public class JobQueryTest extends JbpmTestCase {
+  
+  public void testQueryOutstandingTimers() {
+    deployJpdlXmlString(
+      "<process name='TimerQueryTest' >" +
+      "  <start>" +
+      "    <transition to='t' />" +
+      "  </start>" +
+      "  <state name='t'>" +
+      "    <timer duedate='20 seconds' transition='timeout' />" +
+      "    <transition name='timeout' to='t' />" +
+      "  </state>" +
+      "</process>"
+    );
+
+    executionService.startProcessInstanceByKey("TimerQueryTest");
+    executionService.startProcessInstanceByKey("TimerQueryTest");
+    executionService.startProcessInstanceByKey("TimerQueryTest");
+    executionService.startProcessInstanceByKey("TimerQueryTest");
+    
+    List<Job> timers = managementService.createJobQuery()
+      .timers()
+      .list();
+    
+    assertEquals(4, timers.size());
+  }
+
+  public void testQueryBacklogMessages() {
+    deployJpdlXmlString(
+      "<process name='MessagesQueryTest' >" +
+      "  <start>" +
+      "    <transition to='t' />" +
+      "  </start>" +
+      "  <state name='t' async='true' />" +
+      "</process>"
+    );
+
+    executionService.startProcessInstanceByKey("MessagesQueryTest");
+    executionService.startProcessInstanceByKey("MessagesQueryTest");
+    executionService.startProcessInstanceByKey("MessagesQueryTest");
+    executionService.startProcessInstanceByKey("MessagesQueryTest");
+    
+    List<Job> timers = managementService.createJobQuery()
+      .messages()
+      .list();
+    
+    assertEquals(4, timers.size());
+  }
+
+  
+  public static class Dog {
+    public void bark() {
+      throw new RuntimeException("wooof");
+    }
+  }
+  public void testErrorMessages() {
+    deployJpdlXmlString(
+      "<process name='ErrorMsgQueryTest' >" +
+      "  <start>" +
+      "    <transition to='t' />" +
+      "  </start>" +
+      "  <java name='t' " +
+      "        async='true' " +
+      "        class='"+Dog.class.getName()+"'" +
+      "        method='bark'>" +
+      "  </java>" +
+      "</process>"
+    );
+
+    executionService.startProcessInstanceByKey("ErrorMsgQueryTest");
+    executionService.startProcessInstanceByKey("ErrorMsgQueryTest");
+    executionService.startProcessInstanceByKey("ErrorMsgQueryTest");
+    
+    
+    List<Job> messages = managementService.createJobQuery()
+      .messages()
+      .list();
+
+    assertEquals(3, messages.size());
+
+    managementService.executeJob(messages.get(0).getDbid());
+    managementService.executeJob(messages.get(0).getDbid());
+    managementService.executeJob(messages.get(0).getDbid());
+
+    List<Job> errorJobs = managementService.createJobQuery()
+      .exception()
+      .list();
+  
+    assertEquals(1, errorJobs.size());
+    
+    assertTextPresent("wooof", errorJobs.get(0).getException());
+
+    messages = managementService.createJobQuery()
+      .messages()
+      .list();
+
+    assertEquals(2, messages.size()); 
+  }
+}


Property changes on: jbpm4/trunk/modules/test-db/src/test/java/org/jbpm/test/mgmt/JobQueryTest.java
___________________________________________________________________
Name: svn:mime-type
   + text/plain

Modified: jbpm4/trunk/modules/userguide/src/main/docbook/en/modules/ch05-Jpdl.xml
===================================================================
--- jbpm4/trunk/modules/userguide/src/main/docbook/en/modules/ch05-Jpdl.xml	2009-04-16 13:51:40 UTC (rev 4567)
+++ jbpm4/trunk/modules/userguide/src/main/docbook/en/modules/ch05-Jpdl.xml	2009-04-16 16:28:23 UTC (rev 4568)
@@ -1838,6 +1838,16 @@
  event(end) on process(EventListener)]</programlisting>
   </section>
 
+  <section id="timer">
+    <title><literal>timer</literal> </title>
+    <para>A timer can be specified in <literal>state</literal>s, 
+    <literal>task</literal>s  and <literal>super-state</literal>s.
+    Timers are created when the activity is entered and cancelled 
+    then the activity is left.  When the duedate arrives before the 
+    activity ends, then the 
+    </para>
+  </section>
+
   <section id="usercode">
     <title>User code</title>
     <para>Various elements in the jPDL process language refer to a an 




More information about the jbpm-commits mailing list