[JBoss JIRA] Created: (JBPM-1906) Inconsistent behaviour depending on the ordering of events (fork+end state+join)
by Mauro Molinari (JIRA)
Inconsistent behaviour depending on the ordering of events (fork+end state+join)
--------------------------------------------------------------------------------
Key: JBPM-1906
URL: https://jira.jboss.org/jira/browse/JBPM-1906
Project: JBoss jBPM
Issue Type: Bug
Security Level: Public (Everyone can see)
Components: Core Engine
Affects Versions: jBPM 3.2.3
Reporter: Mauro Molinari
Given the following process definition:
<?xml version="1.0" encoding="UTF-8"?>
<process-definition xmlns="urn:jbpm.org:jpdl-3.2" name="Complex">
<description>
Complex description
</description>
<start-state name="start-state1">
<transition to="task-node1"></transition>
</start-state>
<task-node name="task-node3">
<task name="Task3_1">
<assignment actor-id="1"></assignment>
</task>
<transition to="end-state1"></transition>
</task-node>
<node name="node1">
<transition to="task-node3"></transition>
</node>
<join name="join1">
<transition to="node1"></transition>
</join>
<fork name="fork1">
<transition to="task-node2"></transition>
<transition to="node2" name="to node2"></transition>
<transition to="state1" name="to state1"></transition>
</fork>
<task-node name="task-node2">
<task name="Task2_1">
<assignment actor-id="1"></assignment>
</task>
<task name="Task2_2">
<assignment actor-id="1"></assignment>
</task>
<transition to="join1"></transition>
</task-node>
<task-node name="task-node1">
<task name="Task1_1">
<assignment actor-id="1"></assignment>
</task>
<transition to="fork1"></transition>
</task-node>
<node name="node2">
<transition to="end-state2"></transition>
</node>
<state name="state1">
<transition to="end-state2"></transition>
</state>
<end-state name="end-state1"></end-state>
<end-state name="end-state2"></end-state>
</process-definition>
Try to do this:
- create a process instance and start it
- a Task1_1 instance is created: end it
- the root token halts at the fork and three children tokens are created
1) the first causes the creation of a Task2_1 instance and of a Task2_2 instance
2) the second halts at the state1 state
3) the third dies at the end-state2 state
Now, there are two cases:
CASE A)
- signal the second token: it then goes on and dies at end-state2 state
- end Task2_1 and Task2_2 instances so that the first token goes on and reaches the join
- now, the root token is restored and goes through node1 and task-node3 nodes, causing the creation of a Task3_1 instance
This is what I would expect!
CASE B)
- end Task2_1 and Task2_2 instances so that the first token goes on and reaches the join
- signal the second token: it then goes on and dies at end-state2 state
- now, the root token is ended, halting the process instance!
This is not the expected behaviour, as I would expect that the root token is restored because now all the sibling tokens of those that have reached the join node are ended, so the parent token (= the root token) should be restored and should continue to node1 and subsequent nodes.
Moreover, I would not expect that the behaviour is different depending on the ordering of the actions "signal the state1 token" and "signal the task-node2 token".
My suspect is this: in case B) the join node is not "triggered" anymore after Task2_1 and Task2_2 are ended, so it can't restore the parent node. Moreover, when the second children token is signalled, it reaches end-state2: jBPM then realizes that all of the sibling tokens are also ended, so it wrongly decides that the parent token should also be ended.
--
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators: https://jira.jboss.org/jira/secure/Administrators.jspa
-
For more information on JIRA, see: http://www.atlassian.com/software/jira
15 years, 10 months
[JBoss JIRA] Created: (JBPM-1686) NPE when reading a process definition with a decision name which contains the "/" character
by Julien Kronegg (JIRA)
NPE when reading a process definition with a decision name which contains the "/" character
-------------------------------------------------------------------------------------------
Key: JBPM-1686
URL: https://jira.jboss.org/jira/browse/JBPM-1686
Project: JBoss jBPM
Issue Type: Bug
Security Level: Public (Everyone can see)
Affects Versions: jPDL 3.2.2
Environment: JDK1.6.0, Eclipse 3.3
Reporter: Julien Kronegg
Priority: Minor
When a process definition is read and when it contains a decision named with a "/" character, a NullPointerException is raised:
import org.jbpm.graph.def.ProcessDefinition;
public class TestDecisionNPE {
public static final void main(String[] args){
ProcessDefinition.parseXmlString(
"<process-definition>" +
" <start-state>" +
" <transition to='d/e' />" +
" </start-state>" +
" <decision name='d/e'>" +
" <transition name='one' to='a'>" +
" <condition>#{a == 1}</condition>" +
" </transition>" +
" <transition name='three' to='c'>" +
" <condition>#{a == 3}</condition>" +
" </transition>" +
" </decision>" +
" <state name='a' />" +
" <state name='c' />" +
"</process-definition>");
}
}
raises:
GRAVE: couldn't parse process definition
java.lang.NullPointerException
at org.jbpm.graph.def.ProcessDefinition.findNode(ProcessDefinition.java:345)
at org.jbpm.graph.def.ProcessDefinition.findNode(ProcessDefinition.java:299)
at org.jbpm.jpdl.xml.JpdlXmlReader.resolveTransitionDestination(JpdlXmlReader.java:774)
at org.jbpm.jpdl.xml.JpdlXmlReader.resolveTransitionDestinations(JpdlXmlReader.java:740)
at org.jbpm.jpdl.xml.JpdlXmlReader.resolveTransitionDestinations(JpdlXmlReader.java:732)
at org.jbpm.jpdl.xml.JpdlXmlReader.readProcessDefinition(JpdlXmlReader.java:162)
at org.jbpm.graph.def.ProcessDefinition.parseXmlString(ProcessDefinition.java:151)
at test.TestDecisionNPE.main(TestDecisionNPE.java:7)
Exception in thread "main" org.jbpm.jpdl.JpdlException: [[ERROR] couldn't parse process definition]
at org.jbpm.jpdl.xml.JpdlXmlReader.readProcessDefinition(JpdlXmlReader.java:172)
at org.jbpm.graph.def.ProcessDefinition.parseXmlString(ProcessDefinition.java:151)
at test.TestDecisionNPE.main(TestDecisionNPE.java:7)
This is due to a "node = nodeCollection.getNode(namePart);" in ProcessDefinition.findNode(): a Decision has no nodes, so the nodeCollection is null.
It should be :
1. a more descriptive exception message, such as "could not get the node with name XXX"
2. a validation step which prevent the node name to contain "/" characters, e.g. throw an exception "the node name cannot contain a "/" character"
--
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators: https://jira.jboss.org/jira/secure/Administrators.jspa
-
For more information on JIRA, see: http://www.atlassian.com/software/jira
15 years, 10 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-2008) Changing "create-timer" action should influence "timer" as well
by Bernd Ruecker (JIRA)
Changing "create-timer" action should influence "timer" as well
---------------------------------------------------------------
Key: JBPM-2008
URL: https://jira.jboss.org/jira/browse/JBPM-2008
Project: JBoss jBPM
Issue Type: Feature Request
Security Level: Public (Everyone can see)
Components: Core Engine
Affects Versions: jBPM 3.3.1 GA
Reporter: Bernd Ruecker
Assignee: Bernd Ruecker
Priority: Minor
A Timer-Element in a process-definition is the shortcut for "create-timer" on node-enter and "cancel-timer" on node-leave. But in the current implementation "timer" is hard coded resolved to the CreateTimerAction of jbpm.
For "create-timer" you can change the implementation class by change the configuration in the action.types.xml.
So when using "timer" the action class should be resolved via the action.types.xml as well, otherwise it is unintuitive and you cannot change the timer implementation easily.
I will commit the corresponding fix if I doesn't hear complaints.
--
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators: https://jira.jboss.org/jira/secure/Administrators.jspa
-
For more information on JIRA, see: http://www.atlassian.com/software/jira
15 years, 10 months