[JBoss JIRA] Created: (JBCOMMON-8) Port MarshalledValueIn(Out)putStream from aop
by Brian Stansberry (JIRA)
Port MarshalledValueIn(Out)putStream from aop
---------------------------------------------
Key: JBCOMMON-8
URL: http://jira.jboss.com/jira/browse/JBCOMMON-8
Project: JBoss Common
Issue Type: Task
Security Level: Public (Everyone can see)
Components: core
Reporter: Brian Stansberry
Assigned To: Brian Stansberry
Fix For: 2.0.0.Beta
A copy of AS/aop's MarshalledValueInputStream and MarshalledValueOutputStream should be added to common-core/org.jboss.util.stream. These are prettyy straightforward extensions of the j2se ObjectStreams with only j2se dependencies. Once a version of common with this in it is released, the other projects that use it can be converted. Usages I'm aware of are:
AS via its version in the server module
AOP via its own version
JBoss Cache via dependency on the AS's jboss-minimal.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
19 years, 8 months
[JBoss JIRA] Created: (JBAS-3854) Datasource Deployment error inside a scoped ear.
by Alexandre Bitencourt (JIRA)
Datasource Deployment error inside a scoped ear.
------------------------------------------------
Key: JBAS-3854
URL: http://jira.jboss.com/jira/browse/JBAS-3854
Project: JBoss Application Server
Issue Type: Bug
Security Level: Public (Everyone can see)
Components: Deployment services
Affects Versions: JBossAS-4.0.5.GA
Environment: Windows XP SP2
Reporter: Alexandre Bitencourt
Assigned To: Dimitris Andreadis
In our enviroment we create a common classloader to scope applications and common libraries. All ears deployed in application server uses this classloader. When we upgrade the version of application server from 4.0.4.GA to 4.0.5.GA the datasource descriptors that are inside the scoped ears fails to came up. Removing the scope declaration from jboss-app.xml the datasources works fine, but applications needs some classes that are shared in scoped classloader and we cannot put them on default classloader to avoid version conflicts. On Jboss 4.0.4 the datasources works fine even if jboss-app.xml declares a scoped classloader for ear. The error showed when the deployment of datasource fail is: "java.lang.IllegalArgumentException: interface javax.sql.DataSource is not visible from class loader, but javax.sql.DataSource."
--
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
19 years, 8 months
[JBoss JIRA] Created: (JBPM-757) Constraint violation during process deletion
by Dave Caruana (JIRA)
Constraint violation during process deletion
--------------------------------------------
Key: JBPM-757
URL: http://jira.jboss.com/jira/browse/JBPM-757
Project: JBoss jBPM
Issue Type: Bug
Components: Core Engine
Affects Versions: jBPM 3.1.2
Environment: Windows XP, Java 5, MySQL & HSQL.
Reporter: Dave Caruana
Assigned To: Tom Baeyens
It's taken a while to pinpoint the exact use-case, however the following test case reproduces the issue. I don't believe I'm incorrectly using jPDL.
The process has a start task with a task controller that writes a variable (named var1) back to the process. Note, the process does not have var1 to start with. Then, a local variable 'var1' is set on the start task instance and the task is ended.
Please note, at this point, there are VariableInstances persisted without an associated token, tokenvarmap, taskinstance or processinstance. That's potentially another side-issue, but not core to this particular deletion issue.
The second task 'step2Task' is created (no task controller associated with it). Now, a new local variable 'var1' is set against this task instance. The task is ended.
At this point, the process is deleted. However, it fails with a constraint violation (from FK_VARINST_TKVARMP, in the table "JBPM_VARIABLEINSTANCE" reported in MySQL) or a general exception (reported in HSQL).
Some digging reveals that when the step2Task task instance is ended, all local variables are pushed back to the process. However, the process already has a var1 as written explicitly by the task controller of the start task. It seems in TaskInstance.submitVariables, the process var1 is not deleted before the task local variable replaces process variable in the process token variable map.
The following test case demonstrates the issue with the default jbpm configuration files.
import java.util.List;
import junit.framework.TestCase;
import org.jbpm.JbpmConfiguration;
import org.jbpm.JbpmContext;
import org.jbpm.db.GraphSession;
import org.jbpm.db.TaskMgmtSession;
import org.jbpm.graph.def.ProcessDefinition;
import org.jbpm.graph.exe.ProcessInstance;
import org.jbpm.graph.exe.Token;
import org.jbpm.taskmgmt.exe.TaskInstance;
public class JBPMDeleteProcessTest extends TestCase {
static JbpmConfiguration jbpmConfiguration = null;
static long processId = -1L;
static String currentTokenPath = null;
static {
jbpmConfiguration = JbpmConfiguration.parseXmlString(
"<jbpm-configuration>" +
" <jbpm-context>" +
" <service name='persistence' " +
" factory='org.jbpm.persistence.db.DbPersistenceServiceFactory' />" +
" </jbpm-context>" +
" <string name='resource.hibernate.cfg.xml' " +
" value='hibernate.cfg.xml' />" +
" <string name='resource.business.calendar' " +
" value='org/jbpm/calendar/jbpm.business.calendar.properties' />" +
" <string name='resource.default.modules' " +
" value='org/jbpm/graph/def/jbpm.default.modules.properties' />" +
" <string name='resource.converter' " +
" value='org/jbpm/db/hibernate/jbpm.converter.properties' />" +
" <string name='resource.action.types' " +
" value='org/jbpm/graph/action/action.types.xml' />" +
" <string name='resource.node.types' " +
" value='org/jbpm/graph/node/node.types.xml' />" +
" <string name='resource.varmapping' " +
" value='org/jbpm/context/exe/jbpm.varmapping.xml' />" +
"</jbpm-configuration>"
);
}
public void setUp() {
jbpmConfiguration.createSchema();
}
public void tearDown() {
jbpmConfiguration.dropSchema();
}
public void testDelete() {
deployProcessDefinition();
startProcess();
step2TaskEnd();
deleteProcess();
}
public void deployProcessDefinition() {
ProcessDefinition processDefinition = ProcessDefinition.parseXmlString
(
"<process-definition name='deletetest'>" +
" <start-state name='start'> " +
" <task name='startTask'> " +
" <controller> " +
" <variable name='var1' access='write'/> " +
" </controller> " +
" </task> " +
" <transition name='' to='step2'/> " +
" </start-state> " +
" <task-node name='step2'> " +
" <task name='step2Task'/> " +
" <transition name='' to='step3'/> " +
" </task-node>" +
" <task-node name='step3'> " +
" <task name='step3Task'/> " +
" <transition name='' to='end'/> " +
" </task-node> " +
" <end-state name='end' />" +
"</process-definition>"
);
JbpmContext jbpmContext = jbpmConfiguration.createJbpmContext();
try {
jbpmContext.deployProcessDefinition(processDefinition);
} finally {
jbpmContext.close();
}
}
public void startProcess() {
JbpmContext jbpmContext = jbpmConfiguration.createJbpmContext();
try {
GraphSession graphSession = jbpmContext.getGraphSession();
ProcessDefinition processDefinition = graphSession.findLatestProcessDefinition("deletetest");
ProcessInstance processInstance = new ProcessInstance(processDefinition);
processId = processInstance.getId();
TaskInstance taskInstance = processInstance.getTaskMgmtInstance().createStartTaskInstance();
taskInstance.setVariableLocally("var1", "var1Value");
taskInstance.end();
Token token = taskInstance.getToken();
currentTokenPath = token.getFullName();
jbpmContext.save(processInstance);
} finally {
jbpmContext.close();
}
}
public void step2TaskEnd() {
JbpmContext jbpmContext = jbpmConfiguration.createJbpmContext();
try {
GraphSession graphSession = jbpmContext.getGraphSession();
ProcessInstance processInstance = graphSession.loadProcessInstance(processId);
Token token = processInstance.findToken(currentTokenPath);
TaskMgmtSession taskSession = jbpmContext.getTaskMgmtSession();
List tasks = taskSession.findTaskInstancesByToken(token.getId());
TaskInstance taskInstance = (TaskInstance)tasks.get(0);
//
// comment out the following line and it works
//
taskInstance.setVariableLocally("var1", "var1TaskValue");
taskInstance.setVariableLocally("var2", "var2UpdatedValue");
taskInstance.end();
token = taskInstance.getToken();
currentTokenPath = token.getFullName();
jbpmContext.save(processInstance);
} finally {
jbpmContext.close();
}
}
public void deleteProcess()
{
JbpmContext jbpmContext = jbpmConfiguration.createJbpmContext();
try {
GraphSession graphSession = jbpmContext.getGraphSession();
ProcessInstance processInstance = graphSession.loadProcessInstance(processId);
graphSession.deleteProcessInstance(processInstance, true, true, true);
//jbpmContext.save(processInstance);
} finally {
jbpmContext.close();
}
}
}
--
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
19 years, 8 months
[JBoss JIRA] Updated: (JBPM-165) process instance versioning
by Tom Baeyens (JIRA)
[ http://jira.jboss.com/jira/browse/JBPM-165?page=all ]
Tom Baeyens updated JBPM-165:
-----------------------------
Priority: Major (was: Minor)
> process instance versioning
> ---------------------------
>
> Key: JBPM-165
> URL: http://jira.jboss.com/jira/browse/JBPM-165
> Project: JBoss jBPM
> Issue Type: Feature Request
> Components: Core Engine
> Reporter: Tom Baeyens
> Assigned To: Tom Baeyens
>
> i think jbpm could offer some degree of assistence in process instance versioning.
> when a new version of a process is deployed, jbpm could do the following conversion for a process instance :
> * input required: mapping of the nodes from the old to the new definition.
> * cancel the old process instance
> * create a new process instance and copy the runtime (exe) information such as tokens and process variables from the old process instance.
> * then establish a special link between the 2 process instances to indicate that the new process instance is the continuation of the old process instance.
> this way we can avoid the problematic conversion of logs, while still keeping them in the system.
--
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
19 years, 8 months
[JBoss JIRA] Created: (JBPM-759) Hibernate variable type matchers do not deal HibernateProxy objects.
by Travis Klotz (JIRA)
Hibernate variable type matchers do not deal HibernateProxy objects.
--------------------------------------------------------------------
Key: JBPM-759
URL: http://jira.jboss.com/jira/browse/JBPM-759
Project: JBoss jBPM
Issue Type: Bug
Components: Core Engine
Affects Versions: jBPM 3.1.2
Reporter: Travis Klotz
Assigned To: Tom Baeyens
The hibernate type matchers(HibernateLongIdMatcher, HibernateStringIdMatcher) do not match against persistant objects that are wrapped in hibernate generated proxies.
For example, if I have a User class registered with hibernate, and I try to store a lazily instantiated User object as a context variable in jBPM, The class of the User instance is not User, its something like User$$EnhancedByCGLIB$$12345. When the hibernate type matchers try to match against this class, they do so by checking the hibernate session factory for any metadata about the argument. But the session factory does not know anything about User$$EnhancedByCGLIB$$12345, only User, which results in a no match.
I solved this localy by extending the type matchers and explicitly checking the argument for the HibernateProxy interface. If I found it, I ran the rest of the checks against the super class of the argument.
--
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
19 years, 8 months