Hi,
Problem with existing project I've taken over:
=== Environment ==============================
- jBPM Version : 3.22
- Database : Mysql 5.0.51a-3ubuntu5.4
- JDK : 1.6.0_14-b08
- Container : 1.6.0_14-b08
- Configuration : Some changes from the default:
| <jbpm-configuration>
|
| <!--
| This configuration is used when there is no jbpm.cfg.xml file found in the
| root of the classpath. It is a very basic configuration without persistence
| and message services. Only the authorization service installed.
| You can parse and create processes, but when you try to use one of the
| unavailable services, you'll get an exception.
| -->
|
| <jbpm-context>
| <service name="persistence">
| <factory>
| <bean
class="org.jbpm.persistence.db.DbPersistenceServiceFactory">
| <field name="isTransactionEnabled"><false
/></field>
| <field name="isCurrentSessionEnabled"><true
/></field>
| <field name="sessionFactoryJndiName">
| <string value="hibernate/JbpmSessionFactory" />
| </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="scheduler"
factory="org.jbpm.scheduler.ejbtimer.EjbSchedulerServiceFactory" />
|
| <service name="logging"
factory="org.jbpm.logging.db.DbLoggingServiceFactory" />
| <service name="authentication"
factory="org.jbpm.security.authentication.DefaultAuthenticationServiceFactory"
/>
| </jbpm-context>
|
| <!-- configuration property used by persistence service impl
org.jbpm.persistence.db.DbPersistenceServiceFactory -->
| <string name="resource.hibernate.cfg.xml"
value="hibernate01.cfg.xml" />
|
| <!-- configuration resource files pointing to default configuration files in
jbpm-{version}.jar -->
| <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.parsers"
value="org/jbpm/jpdl/par/jbpm.parsers.xml" />
| <string name="resource.varmapping"
value="org/jbpm/context/exe/jbpm.varmapping.xml" />
| <string name="resource.mail.templates"
value="jbpm.mail.templates.xml" />
|
| <int name="jbpm.byte.block.size" value="1024"
singleton="true" />
| <bean name="jbpm.task.instance.factory"
class="org.jbpm.taskmgmt.impl.DefaultTaskInstanceFactoryImpl"
singleton="true" />
| <bean name="jbpm.variable.resolver"
class="org.jbpm.jpdl.el.impl.JbpmVariableResolver" singleton="true"
/>
| <string name="jbpm.mail.smtp.host" value="localhost" />
| <bean name="jbpm.mail.address.resolver"
class="org.jbpm.identity.mail.IdentityAddressResolver"
singleton="true" />
| <string name="jbpm.mail.from.address" value="jbpm@noreply"
/>
|
| <bean name="jbpm.job.executor"
class="org.jbpm.job.executor.JobExecutor">
| <field name="jbpmConfiguration"><ref
bean="jbpmConfiguration" /></field>
| <field name="name"><string value="JbpmJobExector"
/></field>
| <field name="nbrOfThreads"><int value="1"
/></field>
| <field name="idleInterval"><int value="5000"
/></field>
| <field name="maxIdleInterval"><int value="3600000"
/></field>
| <field name="historyMaxSize"><int value="20"
/></field>
| <field name="maxLockTime"><int value="600000"
/></field>
| <field name="lockMonitorInterval"><int value="60000"
/></field>
| <field name="lockBufferTime"><int value="5000"
/></field>
| </bean>
|
| </jbpm-configuration>
|
Hibernate config:
| <?xml version='1.0' encoding='utf-8'?>
|
| <!DOCTYPE hibernate-configuration PUBLIC
| "-//Hibernate/Hibernate Configuration DTD 3.0//EN"
|
"http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">
|
| <hibernate-configuration>
| <session-factory>
|
| <!-- hibernate dialect -->
| <property name="hibernate.dialect">
| org.hibernate.dialect.MySQLDialect
| </property>
|
| <!-- JDBC connection properties (begin) -->
| <!-- JDBC connection properties (end) -->
|
| <property name="hibernate.cache.provider_class">
| org.hibernate.cache.HashtableCacheProvider
| </property>
| <!-- <property
name="hibernate.cache.provider_class">org.hibernate.cache.SwarmCacheProvider</property>-->
|
| <property name="hibernate.session_factory_name">
| hibernate/JbpmSessionFactory
| </property>
|
|
| <!-- Drop and re-create the database schema on startup -->
| <!-- Do not activate this. Schema should be created manually with SQL script.
There is autocommit
| problem with maneged transactions when this is activated -->
| <!-- <property name="hbm2ddl.auto">create</property>-->
|
|
|
| <!-- DataSource properties (begin) ===
| <property
name="hibernate.connection.datasource">java:/JbpmDS</property>
| ==== DataSource properties (end) -->
|
| <!-- JTA transaction properties (begin) === -->
| <property
name="hibernate.transaction.factory_class">org.hibernate.transaction.JTATransactionFactory</property>
| <property
name="hibernate.transaction.manager_lookup_class">org.hibernate.transaction.JBossTransactionManagerLookup</property>
| <property
name="jta.UserTransaction">UserTransaction</property>
| <!-- ==== JTA transaction properties (end) -->
|
| <!-- CMT transaction properties (begin) ===
| <property
name="hibernate.transaction.factory_class">org.hibernate.transaction.CMTTransactionFactory</property>
| <property
name="hibernate.transaction.manager_lookup_class">org.hibernate.transaction.JBossTransactionManagerLookup</property>
| ==== CMT transaction properties (end) -->
|
| <!-- logging properties (begin) === -->
| <property name="hibernate.show_sql">false</property>
| <property name="hibernate.format_sql">false</property>
| <property name="hibernate.use_sql_comments">false</property>
| <!--==== logging properties (end) -->
|
| <!-- ############################################ -->
| <!-- # mapping files with external dependencies # -->
| <!-- ############################################ -->
|
| <!-- following mapping file has a dependendy on -->
| <!-- 'bsh-{version}.jar'. -->
| <!-- uncomment this if you don't have bsh on your -->
| <!-- classpath. you won't be able to use the -->
| <!-- script element in process definition files -->
| <property
name="connection.datasource">java:/somecompanyproject_name</property>
| <mapping resource="org/jbpm/graph/action/Script.hbm.xml" />
|
| <!-- following mapping files have a dependendy on -->
| <!-- 'jbpm-identity.jar', mapping files -->
| <!-- of the pluggable jbpm identity component. -->
| <!-- Uncomment the following 3 lines if you -->
| <!-- want to use the jBPM identity mgmgt -->
| <!-- component. -->
| <!-- identity mappings (begin) -->
| <mapping resource="org/jbpm/identity/User.hbm.xml" />
| <mapping resource="org/jbpm/identity/Group.hbm.xml" />
| <mapping resource="org/jbpm/identity/Membership.hbm.xml" />
| <!-- identity mappings (end) -->
|
| <!-- following mapping files have a dependendy on -->
| <!-- the JCR API -->
| <!-- jcr mappings (begin) ===
| <mapping
resource="org/jbpm/context/exe/variableinstance/JcrNodeInstance.hbm.xml"/>
| ==== jcr mappings (end) -->
|
|
| <!-- ###################### -->
| <!-- # jbpm mapping files # -->
| <!-- ###################### -->
|
| <!-- hql queries and type defs -->
| <mapping resource="org/jbpm/db/hibernate.queries.hbm.xml" />
|
| <!-- graph.action mapping files -->
| <mapping resource="org/jbpm/graph/action/MailAction.hbm.xml" />
|
| <!-- graph.def mapping files -->
| <mapping resource="org/jbpm/graph/def/ProcessDefinition.hbm.xml" />
| <mapping resource="org/jbpm/graph/def/Node.hbm.xml" />
| <mapping resource="org/jbpm/graph/def/Transition.hbm.xml" />
| <mapping resource="org/jbpm/graph/def/Event.hbm.xml" />
| <mapping resource="org/jbpm/graph/def/Action.hbm.xml" />
| <mapping resource="org/jbpm/graph/def/SuperState.hbm.xml" />
| <mapping resource="org/jbpm/graph/def/ExceptionHandler.hbm.xml" />
| <mapping resource="org/jbpm/instantiation/Delegation.hbm.xml" />
|
| <!-- graph.node mapping files -->
| <mapping resource="org/jbpm/graph/node/StartState.hbm.xml" />
| <mapping resource="org/jbpm/graph/node/EndState.hbm.xml" />
| <mapping resource="org/jbpm/graph/node/ProcessState.hbm.xml" />
| <mapping resource="org/jbpm/graph/node/Decision.hbm.xml" />
| <mapping resource="org/jbpm/graph/node/Fork.hbm.xml" />
| <mapping resource="org/jbpm/graph/node/Join.hbm.xml" />
| <mapping resource="org/jbpm/graph/node/MailNode.hbm.xml" />
| <mapping resource="org/jbpm/graph/node/State.hbm.xml" />
| <mapping resource="org/jbpm/graph/node/TaskNode.hbm.xml" />
|
| <!-- context.def mapping files -->
| <mapping resource="org/jbpm/context/def/ContextDefinition.hbm.xml"
/>
| <mapping resource="org/jbpm/context/def/VariableAccess.hbm.xml" />
|
| <!-- taskmgmt.def mapping files -->
| <mapping
| resource="org/jbpm/taskmgmt/def/TaskMgmtDefinition.hbm.xml" />
| <mapping resource="org/jbpm/taskmgmt/def/Swimlane.hbm.xml" />
| <mapping resource="org/jbpm/taskmgmt/def/Task.hbm.xml" />
| <mapping resource="org/jbpm/taskmgmt/def/TaskController.hbm.xml" />
|
| <!-- module.def mapping files -->
| <mapping resource="org/jbpm/module/def/ModuleDefinition.hbm.xml" />
|
| <!-- bytes mapping files -->
| <mapping resource="org/jbpm/bytes/ByteArray.hbm.xml" />
|
| <!-- file.def mapping files -->
| <mapping resource="org/jbpm/file/def/FileDefinition.hbm.xml" />
|
| <!-- scheduler.def mapping files -->
| <mapping
| resource="org/jbpm/scheduler/def/CreateTimerAction.hbm.xml" />
| <mapping
| resource="org/jbpm/scheduler/def/CancelTimerAction.hbm.xml" />
|
| <!-- graph.exe mapping files -->
| <mapping resource="org/jbpm/graph/exe/Comment.hbm.xml" />
| <mapping resource="org/jbpm/graph/exe/ProcessInstance.hbm.xml" />
| <mapping resource="org/jbpm/graph/exe/Token.hbm.xml" />
| <mapping resource="org/jbpm/graph/exe/RuntimeAction.hbm.xml" />
|
| <!-- module.exe mapping files -->
| <mapping resource="org/jbpm/module/exe/ModuleInstance.hbm.xml" />
|
| <!-- context.exe mapping files -->
| <mapping resource="org/jbpm/context/exe/ContextInstance.hbm.xml" />
| <mapping resource="org/jbpm/context/exe/TokenVariableMap.hbm.xml" />
| <mapping resource="org/jbpm/context/exe/VariableInstance.hbm.xml" />
| <mapping
| resource="org/jbpm/context/exe/variableinstance/ByteArrayInstance.hbm.xml"
/>
| <mapping
| resource="org/jbpm/context/exe/variableinstance/DateInstance.hbm.xml"
/>
| <mapping
| resource="org/jbpm/context/exe/variableinstance/DoubleInstance.hbm.xml"
/>
| <mapping
|
resource="org/jbpm/context/exe/variableinstance/HibernateLongInstance.hbm.xml"
/>
| <mapping
|
resource="org/jbpm/context/exe/variableinstance/HibernateStringInstance.hbm.xml"
/>
| <mapping
| resource="org/jbpm/context/exe/variableinstance/LongInstance.hbm.xml"
/>
| <mapping
| resource="org/jbpm/context/exe/variableinstance/NullInstance.hbm.xml"
/>
| <mapping
| resource="org/jbpm/context/exe/variableinstance/StringInstance.hbm.xml"
/>
|
| <!-- job mapping files -->
| <mapping resource="org/jbpm/job/Job.hbm.xml" />
| <mapping resource="org/jbpm/job/Timer.hbm.xml" />
| <mapping resource="org/jbpm/job/ExecuteNodeJob.hbm.xml" />
| <mapping resource="org/jbpm/job/ExecuteActionJob.hbm.xml" />
|
| <!-- taskmgmt.exe mapping files -->
| <mapping resource="org/jbpm/taskmgmt/exe/TaskMgmtInstance.hbm.xml"
/>
| <mapping resource="org/jbpm/taskmgmt/exe/TaskInstance.hbm.xml" />
| <mapping resource="org/jbpm/taskmgmt/exe/PooledActor.hbm.xml" />
| <mapping resource="org/jbpm/taskmgmt/exe/SwimlaneInstance.hbm.xml"
/>
|
| <!-- logging mapping files -->
| <mapping resource="org/jbpm/logging/log/ProcessLog.hbm.xml" />
| <mapping resource="org/jbpm/logging/log/MessageLog.hbm.xml" />
| <mapping resource="org/jbpm/logging/log/CompositeLog.hbm.xml" />
| <mapping resource="org/jbpm/graph/log/ActionLog.hbm.xml" />
| <mapping resource="org/jbpm/graph/log/NodeLog.hbm.xml" />
| <mapping
| resource="org/jbpm/graph/log/ProcessInstanceCreateLog.hbm.xml" />
| <mapping
| resource="org/jbpm/graph/log/ProcessInstanceEndLog.hbm.xml" />
| <mapping resource="org/jbpm/graph/log/ProcessStateLog.hbm.xml" />
| <mapping resource="org/jbpm/graph/log/SignalLog.hbm.xml" />
| <mapping resource="org/jbpm/graph/log/TokenCreateLog.hbm.xml" />
| <mapping resource="org/jbpm/graph/log/TokenEndLog.hbm.xml" />
| <mapping resource="org/jbpm/graph/log/TransitionLog.hbm.xml" />
| <mapping resource="org/jbpm/context/log/VariableLog.hbm.xml" />
| <mapping resource="org/jbpm/context/log/VariableCreateLog.hbm.xml"
/>
| <mapping resource="org/jbpm/context/log/VariableDeleteLog.hbm.xml"
/>
| <mapping resource="org/jbpm/context/log/VariableUpdateLog.hbm.xml"
/>
| <mapping
|
resource="org/jbpm/context/log/variableinstance/ByteArrayUpdateLog.hbm.xml"
/>
| <mapping
| resource="org/jbpm/context/log/variableinstance/DateUpdateLog.hbm.xml"
/>
| <mapping
| resource="org/jbpm/context/log/variableinstance/DoubleUpdateLog.hbm.xml"
/>
| <mapping
|
resource="org/jbpm/context/log/variableinstance/HibernateLongUpdateLog.hbm.xml"
/>
| <mapping
|
resource="org/jbpm/context/log/variableinstance/HibernateStringUpdateLog.hbm.xml"
/>
| <mapping
| resource="org/jbpm/context/log/variableinstance/LongUpdateLog.hbm.xml"
/>
| <mapping
| resource="org/jbpm/context/log/variableinstance/StringUpdateLog.hbm.xml"
/>
| <mapping resource="org/jbpm/taskmgmt/log/TaskLog.hbm.xml" />
| <mapping resource="org/jbpm/taskmgmt/log/TaskCreateLog.hbm.xml" />
| <mapping resource="org/jbpm/taskmgmt/log/TaskAssignLog.hbm.xml" />
| <mapping resource="org/jbpm/taskmgmt/log/TaskEndLog.hbm.xml" />
| <mapping resource="org/jbpm/taskmgmt/log/SwimlaneLog.hbm.xml" />
| <mapping resource="org/jbpm/taskmgmt/log/SwimlaneCreateLog.hbm.xml"
/>
| <mapping resource="org/jbpm/taskmgmt/log/SwimlaneAssignLog.hbm.xml"
/>
|
|
|
| </session-factory>
| </hibernate-configuration>
|
|
- Libraries : unchanged
=== Process ==================================
| <process-definition name='126-14'>
| <start-state name= 'Interaction16'>
| <event type='node-leave'>
| <action
class='com.somecompany.common.jbpm.step.StartInteractionAndContinue'>
| <responseChannel>MESSAGE</responseChannel>
|
<xmlModelStepName>Interaction16</xmlModelStepName>
| </action>
| </event>
| <transition name= 'MESSAGE' to='Send MESSAGE 1'>
| </transition>
| </start-state>
| <!-- Step type: WAIT -->
| <state name= 'Send MESSAGE 1'>
| <event type='node-enter'>
| <action
class='com.somecompany.common.jbpm.step.SendMESSAGEAndContinue'>
| <messageText>Please send your
message</messageText>
| <routeId>1</routeId>
| <header>originator 6</header>
| <xmlModelStepName>Send MESSAGE
1</xmlModelStepName>
| </action>
| </event>
| <transition name = 'TRANSITION_WAIT_Send MESSAGE 1'
to='NODE_WAIT_Send MESSAGE 1'/>
| </state>
| <state name= 'NODE_WAIT_Send MESSAGE 1'>
| <event type='node-enter'>
| <action
class='com.somecompany.common.jbpm.step.WaitForMESSAGEResponse'>
| <xmlModelStepName>Send MESSAGE
1</xmlModelStepName>
| </action>
| </event>
| <transition name='BodyMESSAGE' to='Parse Inbound
0'>
| </transition>
| </state>
| <decision name='Parse Inbound 0'>
| <handler
class='com.somecompany.common.jbpm.step.ParseMessageDecisionHandler'>
| <targetListString>0|2|7</targetListString>
| <xmlModelStepName>Parse Inbound
0</xmlModelStepName>
| </handler>
| <transition name='ON_SUCCESS' to='Send MESSAGE
0'>
| </transition>
| <transition name='ON_FAILURE' to='Send MESSAGE
2'>
| </transition>
| </decision>
| <join name= 'Send MESSAGE 0'>
| <transition to='JOIN_Send MESSAGE 0'/>
| </join>
| <!-- Step type: CONTINUE -->
| <state name= 'JOIN_Send MESSAGE 0'>
| <event type='node-enter'>
| <action
class='com.somecompany.common.jbpm.step.SendMESSAGEAndContinue'>
|
<messageText>******************</messageText>
| <routeId>1</routeId>
| <header>originator 6</header>
| <xmlModelStepName>Send MESSAGE
0</xmlModelStepName>
| </action>
| </event>
| <transition to='Complete Conversation 1'>
| </transition>
| </state>
| <!-- Step type: CONTINUE -->
| <state name= 'Complete Conversation 1'>
| <event type='node-enter'>
| <action
class='com.somecompany.common.jbpm.step.CompleteConversationAndContinue'>
| <xmlModelStepName>Complete Conversation
1</xmlModelStepName>
| <dedupe>false</dedupe>
| <optinout>false</optinout>
| </action>
| </event>
| <transition to='Send MESSAGE 0'>
| </transition>
| </state>
| <!-- Step type: CONTINUE -->
| <state name= 'Send MESSAGE 2'>
| <event type='node-enter'>
| <action
class='com.somecompany.common.jbpm.step.SendMESSAGEAndContinue'>
|
<messageText>*******************</messageText>
| <routeId>1</routeId>
| <header>originator 6</header>
| <xmlModelStepName>Send MESSAGE
2</xmlModelStepName>
| </action>
| </event>
| <transition to='Complete Conversation 0'>
| </transition>
| </state>
| <!-- Step type: END -->
| <state name= 'Complete Conversation 0'>
| <event type='node-enter'>
| <action
class='com.somecompany.common.jbpm.step.CompleteConversationAndContinue'>
| <xmlModelStepName>Complete Conversation
0</xmlModelStepName>
| <dedupe>false</dedupe>
| <optinout>false</optinout>
| </action>
| </event>
| <transition to='END_STATE_Complete Conversation 0'>
| </transition>
| </state>
| <end-state name= 'END_STATE_Complete Conversation 0'>
| </end-state>
| </process-definition>
|
=== API ===================================
jbpmContext.save(processInstance);
=== Stacktrace ==============================
No exceptions - silent problem
=== Problem description =========================
Following a user interaction that results in the process transitioning from node 1 to node
3, and following a save:
jbpmContext.save(processInstance);
the state of the process instance in the DB does not seem to be updated correctly; the
node field of the token is still set to the id of node 1.
When I inspect the token object during runtime, I can see that it's node field is
correct, and reflects the stage of the process we have reached, however, subsequent
inspection of the database shows the node column holding the previous value.
Many thanks.
View the original post :
http://www.jboss.org/index.html?module=bb&op=viewtopic&p=4256332#...
Reply to the post :
http://www.jboss.org/index.html?module=bb&op=posting&mode=reply&a...