[JBoss JIRA] Created: (JBPM-2854) If exception handlers are defined in multiple nodes, only the first one is triggered during one execution
by Toshiya Kobayashi (JIRA)
If exception handlers are defined in multiple nodes, only the first one is triggered during one execution
---------------------------------------------------------------------------------------------------------
Key: JBPM-2854
URL: https://jira.jboss.org/jira/browse/JBPM-2854
Project: jBPM
Issue Type: Bug
Security Level: Public (Everyone can see)
Components: Runtime Engine
Affects Versions: jBPM 3.2.8
Reporter: Toshiya Kobayashi
If you run a process definition below with ExceptionActionHandler which throws IllegalArgumentException, the first exception will be handled by the first exception handler and the second exception won't be handled --- will be thrown as a DelegationException to the client.
This behavior was introduced by JBPM-1887 to avoid infinite loop. But ExecutionContext.exception can be cleared after handling the exception. Then avoiding loop and using multiple exception handlers will be achieved at a time.
==============
<process-definition xmlns="urn:jbpm.org:jpdl-3.2" name="sample">
<start-state name="start-state1">
<transition to="node1"></transition>
</start-state>
<node name="node1">
<event type="node-enter">
<script>
System.out.println("node1 called.");
</script>
<action class="com.test.action.ExceptionActionHandler"></action>
</event>
<exception-handler exception-class="java.lang.IllegalArgumentException">
<script>
System.out.println("node1 Exception Handler OK.");
</script>
</exception-handler>
<transition to="node2"></transition>
</node>
<node name="node2">
<event type="node-enter">
<script>
System.out.println("node2 called.");
</script>
<action class="com.test.action.ExceptionActionHandler"></action>
</event>
<exception-handler exception-class="java.lang.IllegalArgumentException">
<script>
System.out.println("node2 Exception Handler OK.");
</script>
</exception-handler>
<transition to="end-state1"></transition>
</node>
<end-state name="end-state1"></end-state>
</process-definition>
--
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
14 years, 4 months
[JBoss JIRA] Created: (JBPM-2753) Simplify map specification in jPDL for simple case
by M M (JIRA)
Simplify map specification in jPDL for simple case
--------------------------------------------------
Key: JBPM-2753
URL: https://jira.jboss.org/jira/browse/JBPM-2753
Project: jBPM
Issue Type: Feature Request
Security Level: Public (Everyone can see)
Affects Versions: jBPM 4.2
Reporter: M M
Allow simpler specification of maps in the case where both the key and value are strings, by allowing key and value to be specified as attributes of the <entry> element, instead of as child elements. This will greatly reduce the verbosity of the XML for this common case.
The following
<custom class="com.company.CustomActivity" name="some_step">
<property name="inputs">
<map>
<entry>
<key>
<string value="input_file_a" />
</key>
<value><string value="some_filename" /></value>
</entry>
<entry>
<key>
<string value="another_input" />
</key>
<value><string value="1234" /></value>
</entry>
</map>
</property>
<transition to="next_thing"/>
</custom>
would become simpler, as
<custom class="com.company.CustomActivity" name="some_step">
<property name="inputs">
<map>
<entry key="input_file_a" value="some_filename" />
<entry key="another_input" value="1234" />
</map>
</property>
<transition to="next_thing"/>
</custom>
--
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
14 years, 4 months
[JBoss JIRA] Created: (JBPM-2818) Leaving node in super-state throws org.jbpm.JbpmException: cannot leave Node without leaving transition
by Toshiya Kobayashi (JIRA)
Leaving node in super-state throws org.jbpm.JbpmException: cannot leave Node without leaving transition
-------------------------------------------------------------------------------------------------------
Key: JBPM-2818
URL: https://jira.jboss.org/jira/browse/JBPM-2818
Project: jBPM
Issue Type: Bug
Security Level: Public (Everyone can see)
Components: Runtime Engine
Affects Versions: jBPM 3.2.8
Reporter: Toshiya Kobayashi
Leaving <node> in <super-state> throws
org.jbpm.JbpmException: cannot leave Node(node2) without leaving transition
when I execute process definition like:
================
<process-definition xmlns="urn:jbpm.org:jpdl-3.2" name="id41">
<start-state name="start">
<transition to="super-state1"></transition>
</start-state>
<super-state name="super-state1">
<transition to="end"></transition>
<node name="node1">
<transition to="node2"></transition>
</node>
<node name="node2">
</node>
</super-state>
<end-state name="end">
</end-state>
</process-definition>
=================
Note: <node name="node2"> doesn't have its own transition. but I expect super-state's transition is available then.
The process definition works if you test via ProcessDefinition.parseXmlResource(String xmlResource) without DB/Hibernate (like org.jbpm.graph.exe.SuperStateActionExecutionTest.testNestedSuperStateLeaveViaSuperStateTransition()).
What's the difference?
org.jbpm.graph.def.Node:
=========
public Transition getDefaultLeavingTransition() {
Transition defaultTransition = null;
if (leavingTransitions != null) {
// Select the first unconditional transition
for (Iterator i = leavingTransitions.iterator(); i.hasNext();) {
Transition auxTransition = (Transition) i.next();
if (auxTransition.getCondition() == null) {
defaultTransition = auxTransition;
break;
}
}
}
else if (superState != null) {
defaultTransition = superState.getDefaultLeavingTransition();
}
return defaultTransition;
}
=========
The logic of getDefaultLeavingTransition() depends on whether leavingTransitions is null or not. But in case that hibernate kicks lazy initialization, leavingTransitions will be a zero sized collection, not null.
BTW, I think the concept that super-state's transition can be chosen from nodes inside is better to be documented.
--
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
14 years, 4 months
[JBoss JIRA] Created: (JBPM-2792) Data manipulation with HQL / SQL nodes
by Peter Horvath (JIRA)
Data manipulation with HQL / SQL nodes
--------------------------------------
Key: JBPM-2792
URL: https://jira.jboss.org/jira/browse/JBPM-2792
Project: jBPM
Issue Type: Feature Request
Security Level: Public (Everyone can see)
Affects Versions: jBPM 4.x
Reporter: Peter Horvath
Currently HQL / SQL nodes only allow you to run queries. It would be great if it was possible to run data manipulation operations (INSERT / UPDATE / DELETE) as well.
It should be quite easy to implement this by adding a new possible flag to the hql / sql node and calling org.hibernate.Query.executeUpdate() from org.jbpm.jpdl.internal.activity.HqlActivity.perform(OpenExecution) method:
if(isUpdate) { // isUpdate: this a new flag that indicates that this is a data manipulation operation
// execute update and store the number of entities / rows affected (inserted, updated or deleted) by this operation into the result variable
result = q.executeUpdate();
} else { if (isResultUnique) {
result = q.uniqueResult();
} else {
result = q.list();
}
}
--
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
14 years, 4 months
[JBoss JIRA] Created: (JBPM-2605) DbPersistenceServiceFactory should not close SessionFactory if it didn't opened it
by Stefano Travelli (JIRA)
DbPersistenceServiceFactory should not close SessionFactory if it didn't opened it
----------------------------------------------------------------------------------
Key: JBPM-2605
URL: https://jira.jboss.org/jira/browse/JBPM-2605
Project: jBPM
Issue Type: Bug
Security Level: Public (Everyone can see)
Affects Versions: jBPM 3.2.7
Environment: JBoss 4.2.3, Seam 2.1
Reporter: Stefano Travelli
I configure JBpm with Seam 2.1 so that the JBpm SessionFactory is the same of the underlying SessionFactory used by the EntityManagerFactory in JPA.
In order to do so I include JBpm hibernate.cfg.xml in the persistence-unit. Then I declare the JNDI name in jbpm.cfg.xml:
<persistence-unit name="getin">
<provider>org.hibernate.ejb.HibernatePersistence</provider>
<jta-data-source>java:/getinDS</jta-data-source>
<propertyies>
<!--- ... --->
<property name="hibernate.session_factory_name" value="java:/getinSessionFactory"/>
<property name="hibernate.ejb.cfgfile" value="jbpm.hibernate.cfg.xml"/>
</properties>
</persistence-unit>
<jbpm-configuration>
<jbpm-context>
<service name="persistence">
<factory>
<bean class="org.jbpm.persistence.db.DbPersistenceServiceFactory">
<field name="isTransactionEnabled">
<false/>
</field>
<field name="sessionFactoryJndiName">
<string value="java:/getinSessionFactory"/>
</field>
</bean>
</factory>
</service>
<service name="tx" factory="org.jbpm.tx.TxServiceFactory"/>
<service name="message" factory="org.jbpm.msg.db.DbMessageServiceFactory"/>
<service name="scheduler" factory="org.jbpm.scheduler.db.DbSchedulerServiceFactory"/>
<service name="logging" factory="org.jbpm.logging.db.DbLoggingServiceFactory"/>
<service name="authentication" factory="org.jbpm.security.authentication.DefaultAuthenticationServiceFactory"/>
</jbpm-context>
</jbpm-configuration>
It works fine except that during test execution in the Seam enviroment JBpm context is opened and closed several times while the persistence unit stays.
However, as a JBpm context closes, DbPersistenceServiceFactory also closes the SessionFactory invalidating the EntityManagerFactory.
When DbPersistenceServiceFactory doesn't create the SessionFactory taking it from JNDI, it shouldn't close it as this should be a responsibility of the component who registered it in JNDI in first place.
The patch is simple:
public void close()
{
if (sessionFactory != null && sessionFactoryJndiName == null)
{
log.debug("closing hibernate session factory");
sessionFactory.close();
}
}
--
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
14 years, 4 months
[JBoss JIRA] Created: (JBPM-2795) Cannot delete or update a parent row: a foreign key constraint fails (`jbpmdb/jbpm4_execution`, CONSTRAINT `FK_EXEC_SUPEREXEC` FOREIGN KEY (`SUPEREXEC_`) REFERENCES `jbpm4_execution` (`DBID_`))
by scarletake b. c. (JIRA)
Cannot delete or update a parent row: a foreign key constraint fails (`jbpmdb/jbpm4_execution`, CONSTRAINT `FK_EXEC_SUPEREXEC` FOREIGN KEY (`SUPEREXEC_`) REFERENCES `jbpm4_execution` (`DBID_`))
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Key: JBPM-2795
URL: https://jira.jboss.org/jira/browse/JBPM-2795
Project: jBPM
Issue Type: Bug
Security Level: Public (Everyone can see)
Components: Runtime Engine
Affects Versions: jBPM 4.3
Environment: windows xp, jdk1.6, mysql5.1
Reporter: scarletake b. c.
when a case like follow:
a process and it include three sub-processes(fork), when any one of sub-processes reject, the main process will go to End.
it will hit exception:Cannot delete or update a parent row: a foreign key constraint fails
like:
11:26:11,727 ERROR [org.hibernate.util.JDBCExceptionReporter] Cannot delete or update a parent row: a foreign key constraint fails (`jbpmdb/jbpm4_execution`, CONSTRAINT `FK_EXEC_SUPEREXEC` FOREIGN KEY (`SUPEREXEC_`) REFERENCES `jbpm4_execution` (`DBID_`))
11:26:11,727 ERROR [org.hibernate.event.def.AbstractFlushingEventListener] Could not synchronize database state with session
it occur due to hibernate's behavior.
the code:org.jbpm.pvm.internal.model.ExecutionImpl
the method:end|(String state)
move "end all child" to bottom
but i ain't sure it really been solved.
--
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
14 years, 5 months