[jboss-user] [JBoss jBPM] - JbpmContext usage & best practices

srLucas do-not-reply at jboss.com
Wed Jan 14 09:44:02 EST 2009


Hi!,
I am using JBPM + Spring (springmodules0.8a) + Struts to create an application.

I would like to know what are the best practices regarding the jbpmContext and how to create it/reuse it.

This is my spring configuration

  |   <bean id="dc-workflow"
  |       class="org.springmodules.workflow.jbpm31.definition.ProcessDefinitionFactoryBean">
  |     <property name="definitionLocation"
  |       value="classpath:dc/processdefinition.xml"/>
  |   </bean>
  | 
  |   <bean id="jbpmConfiguration"
  |     class="com.ea.dc.core.CustomLocalJbpmConfigFactoryBean">
  |     <property name="sessionFactory" ref="sessionFactory"/>
  |     <property name="configuration" value="classpath:jbpm.cfg.xml"/>
  |     <!-- property name="configuration" value="classpath:jbpm.cfg.xml"/ -->
  |     <property name="processDefinitions">
  |       <list>
  |         <ref local="dc-workflow"/>
  |        </list>
  |     </property>
  |     <property name="processDefinitionsResources">
  |      <list>
  |       <value>classpath:dc/processdefinition.xml</value>
  |      </list>
  |     </property>
  |   </bean>
  | 
  |   <!-- jBPM template -->
  |   <bean id="jbpmTemplate" class="org.springmodules.workflow.jbpm31.JbpmTemplate">
  |     <constructor-arg index="0" ref="jbpmConfiguration"/>
  |     <constructor-arg index="1" ref="dc-workflow"/>
  |   </bean>

and then I am injecting those beans to a service of mine...
now, whenever I want to do something with the workflow, I do something like: 
  /** Moves the process forward.
  |    *
  |    * @param jobId the process instance id
  |    * @param transitionId the transition id to select
  |    */
  |   public void moveForward(final Long jobId, final String transitionName){
  |     JbpmContext jbpmContext = getContext();
  | 
  |     try {
  |       ProcessInstance instance = jbpmContext.getProcessInstanceForUpdate(jobId);
  | 
  |       instance.signal(transitionName);
  |     }  finally {
  |       // make sure we save everything
  |       jbpmContext.close();
  |     }
  |   }
as shown in the documentation...

the thing is... I am closing the context every time I leave a service method...

isn't it better to leave it open? Is this a good practice?
I was thinking about using something similar to openSessionInView for the jbpmContext (though I'm not sure how to do it)... will that be better?

Any ideas/pointers would be great!

Thanks a lot,
Lucas

View the original post : http://www.jboss.com/index.html?module=bb&op=viewtopic&p=4201813#4201813

Reply to the post : http://www.jboss.com/index.html?module=bb&op=posting&mode=reply&p=4201813



More information about the jboss-user mailing list