[JBoss JIRA] Created: (JBPM-1185) Node, State and ProcessState don't support Conditions on Transitions
by Britt Miner (JIRA)
Node, State and ProcessState don't support Conditions on Transitions
--------------------------------------------------------------------
Key: JBPM-1185
URL: http://jira.jboss.com/jira/browse/JBPM-1185
Project: JBoss jBPM
Issue Type: Bug
Components: Core Engine
Affects Versions: jBPM jPDL 3.2.2
Reporter: Britt Miner
Assigned To: Tom Baeyens
Node, State, and ProcessState don't provide any preliminary check for conditions provided on transitions. No check is performed until the transition is signaled, at which point the process will barf if a condition is present on the default transition, and that condition evaluates to false.
Regardless if a person "should" be using transition conditions in Node or State, the schema allows it, the documentation doesn't forbid it, and the current behavior of a Transition element in the jpdl is inconsistent. The fix to make everything consistent is fairly simple--only org.jbpm.graph.def.Node needs to really be altered (and a one-liner in ProcessState):
In org.jbpm.graph.def.Node, add the following method:
// BRITT--
public Transition calculateLeavingTransition(ExecutionContext executionContext) {
Transition transition = null;
boolean hasTransitioned = false;
Iterator iter = leavingTransitions.iterator();
while (iter.hasNext()) {
Transition candidate = (Transition) iter.next();
String conditionExpression = candidate.getCondition();
if (conditionExpression != null) {
Object result = JbpmExpressionEvaluator.evaluate(conditionExpression, executionContext);
if (Boolean.TRUE.equals(result)) {
transition = candidate;
}
} else {
transition = candidate;
}
}
if (!hasTransitioned) {
this.getDefaultLeavingTransition().removeConditionEnforcement();
log.warn("All transition conditions have evaluated to 'false'. Taking the default transition.");
transition = this.getDefaultLeavingTransition();
}
return transition;
}
// --BRITT
...and modify "leave(ExecutionContext executionContext)":
// BRITT --replace the following line with the code below
// to check conditions before selecting the transition to take...
//leave(executionContext, getDefaultLeavingTransition()); //original line
leave(executionContext, calculateLeavingTransition(executionContext));
// --BRITT
For consistency, ProcessState should also have one line modified at the very end of it's "leave(ExecutionContext, Transition)" method:
// BRITT-- rather than specify which transition, let the super class decide...
//super.leave(executionContext, getDefaultLeavingTransition());
super.leave(executionContext, calculateLeavingTransition(executionContext));
// --BRITT
--
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators: http://jira.jboss.com/jira/secure/Administrators.jspa
-
For more information on JIRA, see: http://www.atlassian.com/software/jira
15 years, 9 months
[JBoss JIRA] Created: (JBPM-1280) QA job executor
by Tom Baeyens (JIRA)
QA job executor
---------------
Key: JBPM-1280
URL: http://jira.jboss.com/jira/browse/JBPM-1280
Project: JBoss jBPM
Issue Type: Task
Security Level: Public (Everyone can see)
Components: PVM
Reporter: Tom Baeyens
First, we need to establish what we're going to QA and how. I see 3 distinct types of tests for the job executor
1) Using JobSession to create jobs and then use the JobExecutor API's to control the execution of those jobs. This way, all these tests can and should be done in a single thread.
* a commit for processing an asynchronous message
* a commit for processing a timer
* a commit for the combination of a an asynchronous message and a timer
* a commit with a custom resource in the standard transaction
* test a rollback caused by a user code exception in an asynchronous continuation
* test a rollback caused by a user code exception in an timer
* test a rollback caused by a user code exception with a custom resource in the standard transaction
* test a rollback caused by an optimistic locking exception in an asynchronous continuation
* test a rollback caused by an optimistic locking exception in an timer
* test a rollback caused by an optimistic locking with a custom resource in the standard transaction
2) If we only use the public, stable API's, we'll be a lot more limited in what we're able to test. We can e.g. run this test suite against the jBPM 3 codebase.
* create and execute a process with a couple of asynchronous continuation in it.
* create and execute a process with asynchronous continuations in a concurrent section.
* create and execute a process with a couple of timers in it.
* create and execute a process with a couple of timers in a concurrent section
* a combination of a timer and an asynchronous continuation
3) Load and stress tests. Also these should only make use of public API's and ways to deploy processes. So that this test suite is configurable/runnable on different environments (and also against the jBPM 3 codebase)
--
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators: http://jira.jboss.com/jira/secure/Administrators.jspa
-
For more information on JIRA, see: http://www.atlassian.com/software/jira
15 years, 10 months
[JBoss JIRA] Created: (JBPM-1141) The jBPM 'websale' sample application fails - project JIRA for SOA-446
by Len DiMaggio (JIRA)
The jBPM 'websale' sample application fails - project JIRA for SOA-446
----------------------------------------------------------------------
Key: JBPM-1141
URL: http://jira.jboss.com/jira/browse/JBPM-1141
Project: JBoss jBPM
Issue Type: Bug
Components: Training
Affects Versions: jBPM jPDL 3.2.2
Environment: JBoss Developer Studio
Build id: 1.0.0.GA
SOA-P GA
/opt/GA/soa-4.2.0.GA.zip
/opt/GA/standalone-soa-4.2.0.GA.zip
RHEL5
Linux ldimaggi.csb 2.6.18-53.1.13.el5 #1 SMP Mon Feb 11 13:27:52 EST 2008 i686 i686 i386 GNU/Linux
Sun Java 1.5
java version "1.5.0_14"
Java(TM) 2 Runtime Environment, Standard Edition (build 1.5.0_14-b03)
Java HotSpot(TM) Client VM (build 1.5.0_14-b03, mixed mode)
RDBMS
H2, version: 1.0.66 (2008-01-18)
CPU
cat /proc/cpuinfo
processor : 0
vendor_id : GenuineIntel
cpu family : 6
model : 13
model name : Intel(R) Pentium(R) M processor 1.70GHz
stepping : 6
cpu MHz : 1700.000
cache size : 2048 KB
fdiv_bug : no
hlt_bug : no
f00f_bug : no
coma_bug : no
fpu : yes
fpu_exception : yes
cpuid level : 2
wp : yes
flags : fpu vme de pse tsc msr mce cx8 mtrr pge mca cmov pat clflush dts acpi mmx fxsr sse sse2 ss tm pbe up est tm2
bogomips : 3398.35
Reporter: Len DiMaggio
Assigned To: Tom Baeyens
Details are in:
http://jira.jboss.com/jira/browse/SOA-446
--
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators: http://jira.jboss.com/jira/secure/Administrators.jspa
-
For more information on JIRA, see: http://www.atlassian.com/software/jira
15 years, 10 months
[JBoss JIRA] Created: (JBPM-1156) jBPM example: customTaskInstance fails with classcast exception
by Len DiMaggio (JIRA)
jBPM example: customTaskInstance fails with classcast exception
----------------------------------------------------------------
Key: JBPM-1156
URL: http://jira.jboss.com/jira/browse/JBPM-1156
Project: JBoss jBPM
Issue Type: Bug
Reporter: Len DiMaggio
Assigned To: Tom Baeyens
Priority: Minor
jBPM example: customTaskInstance fails with this exception:
See: http://www.jboss.com/index.html?module=bb&op=viewtopic&p=4088401#4088401
java.lang.ClassCastException: org.jbpm.taskmgmt.exe.TaskInstance
at org.jbpm.taskinstance.CustomTaskControllerHandler.initializeTaskVariables(CustomTaskControllerHandler.java:66)
at org.jbpm.taskmgmt.def.TaskController.initializeVariables(TaskController.java:82)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:585)
at org.hibernate.proxy.pojo.cglib.CGLIBLazyInitializer.invoke(CGLIBLazyInitializer.java:157)
at org.jbpm.taskmgmt.def.TaskController$$EnhancerByCGLIB$$1af08496.initializeVariables(<generated>)
at org.jbpm.taskmgmt.exe.TaskInstance.initializeVariables(TaskInstance.java:145)
at org.jbpm.taskmgmt.exe.TaskMgmtInstance.createTaskInstance(TaskMgmtInstance.java:136)
at org.jbpm.graph.node.TaskNode.execute(TaskNode.java:168)
at org.jbpm.graph.def.Node.enter(Node.java:319)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:585)
at org.hibernate.proxy.pojo.cglib.CGLIBLazyInitializer.invoke(CGLIBLazyInitializer.java:157)
at org.jbpm.graph.def.Node$$EnhancerByCGLIB$$55e0744d.enter(<generated>)
at org.jbpm.graph.def.Transition.take(Transition.java:151)
at org.jbpm.graph.def.Node.leave(Node.java:394)
at org.jbpm.graph.node.StartState.leave(StartState.java:70)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:585)
at org.hibernate.proxy.pojo.cglib.CGLIBLazyInitializer.invoke(CGLIBLazyInitializer.java:157)
at org.jbpm.graph.def.Node$$EnhancerByCGLIB$$55e0744d.leave(<generated>)
at org.jbpm.graph.exe.Token.signal(Token.java:195)
at org.jbpm.graph.exe.Token.signal(Token.java:140)
at org.jbpm.taskinstance.CustomTaskInstanceTest.createNewProcessInstance(CustomTaskInstanceTest.java:162)
at org.jbpm.taskinstance.CustomTaskInstanceTest.testCustomTaskInstance(CustomTaskInstanceTest.java:125)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:585)
at junit.framework.TestCase.runTest(TestCase.java:154)
at junit.framework.TestCase.runBare(TestCase.java:127)
at junit.framework.TestResult$1.protect(TestResult.java:106)
at junit.framework.TestResult.runProtected(TestResult.java:124)
at junit.framework.TestResult.run(TestResult.java:109)
at junit.framework.TestCase.run(TestCase.java:118)
at junit.framework.TestSuite.runTest(TestSuite.java:208)
at junit.framework.TestSuite.run(TestSuite.java:203)
at org.eclipse.jdt.internal.junit.runner.junit3.JUnit3TestReference.run(JUnit3TestReference.java:130)
at org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:460)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:673)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:386)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:196)
<classpathentry kind="lib" path="/opt/GA/jboss-soa-p-standalone.4.2.0/jbpm-jpdl/jbpm-jpdl.jar"/>
<classpathentry kind="lib" path="/opt/GA/jboss-soa-p.4.2.0/seam/lib/jbpm-3.1.4.jar"/>
<classpathentry kind="lib" path="/opt/GA/jboss-soa-p-standalone.4.2.0/jbpm-jpdl/lib/hibernate3.jar"/>
<classpathentry kind="lib" path="/opt/GA/jboss-soa-p-standalone.4.2.0/jbpm-jpdl/lib/dom4j.jar"/>
<classpathentry kind="lib" path="/opt/GA/jboss-soa-p-standalone.4.2.0/jbpm-jpdl/jbpm-identity.jar"/>
--
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators: http://jira.jboss.com/jira/secure/Administrators.jspa
-
For more information on JIRA, see: http://www.atlassian.com/software/jira
15 years, 10 months