[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