[JBoss JIRA] Created: (JBPM-1093) Allow more than one action to be executed when entering a page node
by Matthew Lieder (JIRA)
Allow more than one action to be executed when entering a page node
-------------------------------------------------------------------
Key: JBPM-1093
URL: http://jira.jboss.com/jira/browse/JBPM-1093
Project: JBoss jBPM
Issue Type: Feature Request
Components: Core Engine
Affects Versions: jBPM jPDL 3.2.2
Reporter: Matthew Lieder
Assigned To: Tom Baeyens
Only the first <action> is executed when multiple actions are children of <page> and <start-page> elements in a jPDL pageflow. It would be greatly appreciated if the logic could be changed so that all <action> elements are executed (like they are when children of <transition> elements).
Example:
<page name="page1" view-id="/page1.xhtml">
<action expression="#{someMethodThatIsExecuted} />
<action expression="#{someMethodThatIsNotExecuted} />
<transition name="save" to="terminate">
<action expression="#{someMethodThatIsExecuted} />
<action expression="#{someMethodThatIsExecuted} />
</transition>
</page>
--
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
16 years
[JBoss JIRA] Created: (JBPM-1148) jBPM Classloading
by Bjoern Wand (JIRA)
jBPM Classloading
-----------------
Key: JBPM-1148
URL: http://jira.jboss.com/jira/browse/JBPM-1148
Project: JBoss jBPM
Issue Type: Patch
Components: Core Engine
Reporter: Bjoern Wand
Assigned To: Tom Baeyens
jBPM does not use ContextClassloader for classloading. The class ClassLoaderUtil.java has a comment that class loading could be made configurable. This is the patch I provided in the forum and I agreed with Koen Ars th open a JIRA for this.
package org.jbpm.util;
import java.io.IOException;
import java.io.InputStream;
import java.util.Properties;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.jbpm.JbpmConfiguration;
import org.jbpm.JbpmException;
import org.jbpm.graph.def.ProcessDefinition;
import org.jbpm.instantiation.ProcessClassLoader;
/**
* provides centralized classloader lookup.
*/
public class ClassLoaderUtil {
private static Log log = LogFactory.getLog(ClassLoaderUtil.class);
public static Class loadClass(String className) {
try {
return getClassLoader().loadClass(className);
} catch (ClassNotFoundException e) {
throw new JbpmException("class not found '" + className + "'", e);
}
}
public static ClassLoader getClassLoader() {
if (JbpmConfiguration.Configs.hasObject("jbpm.classloader")) {
String jbpmClassloader = JbpmConfiguration.Configs.getString("jbpm.classloader");
String jbpmClassloaderClassname = JbpmConfiguration.Configs.getString("jbpm.classloader.classname");
if (jbpmClassloader.equals("jbpm")) {
return ClassLoaderUtil.class.getClassLoader();
} else if (jbpmClassloader.equals("context")) {
return Thread.currentThread().getContextClassLoader();
} else if (jbpmClassloader.equals("custom")) {
try {
if (jbpmClassloaderClassname == null) {
throw new JbpmException(
"'jbpm.classloader' property set to 'custom' but 'jbpm.classloader.classname' is empty!");
}
return (ClassLoader) Thread.currentThread().getContextClassLoader().loadClass(
jbpmClassloaderClassname).newInstance();
} catch (InstantiationException e) {
throw new JbpmException("Error instantiating custom classloader " + jbpmClassloaderClassname, e);
} catch (IllegalAccessException e) {
throw new JbpmException("Error accessing custom classloader " + jbpmClassloaderClassname, e);
} catch (ClassNotFoundException e) {
throw new JbpmException("Custom classloader " + jbpmClassloaderClassname + " not found ", e);
}
} else {
throw new JbpmException("'jbpm.classloader' property set to '" + jbpmClassloader
+ "' but only the values 'jbpm'/'context'/'custom' are supported!");
}
} else {
return ClassLoaderUtil.class.getClassLoader();
}
}
public static InputStream getStream(String resource) {
return getClassLoader().getResourceAsStream(resource);
}
public static Properties getProperties(String resource) {
Properties properties = new Properties();
try {
properties.load(getStream(resource));
} catch (IOException e) {
throw new JbpmException("couldn't load properties file '" + resource + "'", e);
}
return properties;
}
/**
* searches the given resource, first on the root of the classpath and if
* not not found there, in the given directory. public static InputStream
* getStream(String resource, String directory) { InputStream is =
* getClassLoader().getResourceAsStream(resource); if (is==null) { is =
* getClassLoader().getResourceAsStream(directory+"/"+resource); } return
* is; }
*
* public static Properties getProperties(String resource, String directory) {
* Properties properties = new Properties(); try {
* properties.load(getStream(resource, directory)); } catch (IOException e) {
* throw new JbpmException("couldn't load properties file '"+resource+"'",
* e); } return properties; }
*/
public static ClassLoader getProcessClassLoader(ProcessDefinition processDefinition) {
return new ProcessClassLoader(getClassLoader(), processDefinition);
}
}
--
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
16 years
[JBoss JIRA] Created: (JBPM-1307) jBPM tries to use Hibernate transaction even if configured with isTransactionEnabled = false
by Mauro Molinari (JIRA)
jBPM tries to use Hibernate transaction even if configured with isTransactionEnabled = false
--------------------------------------------------------------------------------------------
Key: JBPM-1307
URL: http://jira.jboss.com/jira/browse/JBPM-1307
Project: JBoss jBPM
Issue Type: Bug
Security Level: Public (Everyone can see)
Components: Core Engine
Affects Versions: jPDL 3.2.2
Reporter: Mauro Molinari
The method org.jbpm.scheduler.db.DbSchedulerService.deleteTimersByProcessInstance(ProcessInstance) is accessing the Hibernate transaction even if jBPM is configured not to use transactions:
<service name="persistence">
<factory>
<bean
class="org.jbpm.persistence.db.DbPersistenceServiceFactory">
<field name="isTransactionEnabled">
<false />
</field>
<field name="isCurrentSessionEnabled">
<true />
</field>
</bean>
</factory>
</service>
This causes a serious problem when you're using jBPM inside a JTA environment and you want to control JTA transactions by yourself. For instance, we're using Spring to manage transactions a JBoss Transactions as the JTA implementation. We are not using JNDI in any way, but when we try to call processInstance.end(), a call to org.jbpm.scheduler.db.DbSchedulerService.deleteTimersByProcessInstance(ProcessInstance) is performed and Hibernate tries to create a new JTATransaction by querying an empty JNDI InitialContext.
The only workaround we could find is the one outlined here:
http://www.jboss.com/index.html?module=bb&op=viewtopic&p=4117325#4117325
that is, subclassing JobSession in order to use Spring TransactionSynchronizationManager.
--
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
16 years