[jboss-user] [JBoss jBPM] - pvm_subprocess_problems

galanfish do-not-reply at jboss.com
Wed Feb 25 06:57:09 EST 2009


hi, can anyone help me:
there is a testcase 'org.jbpm.test.activities.SubProcessTest' in module 'test-pojo' which is run in object-mode.
and so i try to write a subprocess testcase running in persistent-mode. i have been trying but i can not make it... exception comes out:
10:37:11,250 SEV | [LazyInitializationException] could not initialize proxy - no Session
  | org.hibernate.LazyInitializationException: could not initialize proxy - no Session
  |  at org.hibernate.proxy.AbstractLazyInitializer.initialize(AbstractLazyInitializer.java:57)
  |  at org.hibernate.proxy.AbstractLazyInitializer.getImplementation(AbstractLazyInitializer.java:111)
  |  at org.hibernate.proxy.pojo.cglib.CGLIBLazyInitializer.invoke(CGLIBLazyInitializer.java:150)
  |  at org.jbpm.pvm.internal.model.ActivityImpl$$EnhancerByCGLIB$$fa091528.getParentActivity(<generated>)
  |  at org.jbpm.pvm.internal.model.ExecutionImpl.initializeScopes(ExecutionImpl.java:210)
  |  at org.jbpm.pvm.internal.model.ExecutionImpl.start(ExecutionImpl.java:193)
  |  at org.jbpm.pvm.internal.model.ExecutionImpl.beginSubProcessInstance(ExecutionImpl.java:882)
  |  at name.galanfish.test.super_sub_process.cmd.StartSubProcessCmd.execute(StartSubProcessCmd.java:33)
  |  at name.galanfish.test.super_sub_process.cmd.StartSubProcessCmd.execute(StartSubProcessCmd.java:1)
  |  at org.jbpm.pvm.internal.svc.DefaultCommandService.execute(DefaultCommandService.java:42)
  |  at org.jbpm.pvm.internal.tx.StandardTransactionInterceptor.execute(StandardTransactionInterceptor.java:54)
  |  at org.jbpm.pvm.internal.svc.EnvironmentInterceptor.execute(EnvironmentInterceptor.java:40)
  |  at org.jbpm.pvm.internal.svc.RetryInterceptor.execute(RetryInterceptor.java:52)
  |  at org.jbpm.pvm.internal.svc.ExecutionServiceImpl.beginSubProcess(ExecutionServiceImpl.java:84)
  |  at name.galanfish.test.super_sub_process.SubProcess.execute(SubProcess.java:36)
  |  at org.jbpm.pvm.internal.model.op.ExecuteActivity.perform(ExecuteActivity.java:57)
  |  at org.jbpm.pvm.internal.model.ExecutionImpl.performAtomicOperationSync(ExecutionImpl.java:587)
  |  at org.jbpm.pvm.internal.model.ExecutionImpl.performAtomicOperation(ExecutionImpl.java:560)
  |  at org.jbpm.pvm.internal.model.ExecutionImpl.signal(ExecutionImpl.java:384)
  |  at org.jbpm.pvm.internal.cmd.SignalCmd.execute(SignalCmd.java:62)
  |  at org.jbpm.pvm.internal.cmd.SignalCmd.execute(SignalCmd.java:1)
  |  at org.jbpm.pvm.internal.svc.DefaultCommandService.execute(DefaultCommandService.java:42)
  |  at org.jbpm.pvm.internal.tx.StandardTransactionInterceptor.execute(StandardTransactionInterceptor.java:54)
  |  at org.jbpm.pvm.internal.svc.EnvironmentInterceptor.execute(EnvironmentInterceptor.java:40)
  |  at org.jbpm.pvm.internal.svc.RetryInterceptor.execute(RetryInterceptor.java:52)
  |  at org.jbpm.pvm.internal.svc.ExecutionServiceImpl.signalExecutionById(ExecutionServiceImpl.java:121)
  |  at name.galanfish.test.super_sub_process.SuperSubProcessTest.testSimpleSuperSubProcess(SuperSubProcessTest.java:38)
  |  at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
  |  at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
  |  at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
  |  at java.lang.reflect.Method.invoke(Method.java:585)
  |  at junit.framework.TestCase.runTest(TestCase.java:164)
  |  at org.jbpm.test.BaseJbpmTestCase.runTest(BaseJbpmTestCase.java:81)
  |  at junit.framework.TestCase.runBare(TestCase.java:130)
  |  at junit.framework.TestResult$1.protect(TestResult.java:106)
  |  at junit.framework.TestResult.runProtected(TestResult.java:124)
  |  at junit.framework.TestResult.run(TestResult.java:109)
  |  at junit.framework.TestCase.run(TestCase.java:120)
  |  at junit.framework.TestSuite.runTest(TestSuite.java:230)
  |  at junit.framework.TestSuite.run(TestSuite.java:225)
  |  at org.eclipse.jdt.internal.junit.runner.junit3.JUnit3TestReference.run(JUnit3TestReference.java:130)
  |  at org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38)
  |  at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:460)
  |  at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:673)
  |  at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:386)
  |  at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:196)
 
 
the source code as follow:
public class SuperSubProcessTest extends EnvironmentFactoryTestCase {
  | 
  |  private JbpmConfiguration factory;
  |  private ProcessServiceImpl processService;
  |  private ExecutionService executionService;
  |  
  |  
  |  @Override
  |  protected void setUp() throws Exception {
  |   super.setUp();
  |   factory = (JbpmConfiguration) getEnvironmentFactory();
  |   processService = (ProcessServiceImpl) factory.getProcessService();
  |   executionService = factory.getExecutionService();
  |  }
  |  
  |  public void testSimpleSuperSubProcess(){
  |   createAndDeploySimpleSuperSubProcess();
  |   executionService.startProcessInstanceById("super2:1", "superrequest8");
  |   executionService.signalExecutionById("super2/superrequest8", "to_one");
  |  }
  |  
  |  private void createAndDeploySimpleSuperSubProcess(){
  |   ClientProcessDefinition superProcess = ProcessDefinitionBuilder.startProcess("super2")
  |    .startActivity("start", WaitState.class)
  |     .initial()
  |     .transition("one", "to_one")
  |    .endActivity()
  |    
  |    .startActivity("one", AutomaticActivity.class)
  |     .transition("sub", "to_sub")
  |    .endActivity()
  |    
  |    .startActivity("sub", SubProcess.class)
  |     .transition("end", "to_end")
  |    .endActivity()
  |    
  |    .startActivity("end", AutomaticActivity.class)
  |    .endActivity()
  |   .endProcess();
  |  
  |   ClientProcessDefinition subProcess = ProcessDefinitionBuilder.startProcess("sub2")
  |    .startActivity("start", AutomaticActivity.class)
  |     .initial()
  |     .transition("end", "to_end")
  |    .endActivity()
  |    
  |    .startActivity("end", EndState.class)
  |    .endActivity()
  |   .endProcess();
  |   
  |   deployProcess(superProcess);
  |   deployProcess(subProcess);
  |  }
  | 
  |  private void deployProcess(ProcessDefinition process){
  |   Deployment deployment = processService.createDeployment();
  |   deployment.addObject("process", process);
  |   processService.deploy(deployment);
  |  }
  | }
  | 
  | public class SubProcess implements ExternalActivityBehaviour{
  | 
  |  private static final long serialVersionUID = 1L;
  | 
  |  public void signal(ActivityExecution execution, String signalName, Map<String, Object> parameters) throws Exception {
  |   
  |  }
  | 
  |  public void execute(ActivityExecution execution) throws Exception {
  |   ProcessService processService = Environment.getFromCurrent(ProcessService.class);
  |   ClientProcessDefinition subProcess = (ClientProcessDefinition)processService.findLatestProcessDefinitionByKey("sub2"); // hard code
  |   
  |   ExecutionService exeService = Environment.getFromCurrent(ExecutionService.class);
  |   // i add method 'beginSubProcess' in ExecutionService which is to execute the command 'StartSubProcessCmd'(source code as follow)
  |   Execution subExecution = exeService.beginSubProcess(execution, subProcess, "subrequest1"); // hard code
  |   if(!subExecution.isEnded()){
  |    execution.waitForSignal();
  |   }
  |  }
  | }
  | 
  | public class StartSubProcessCmd extends AbstractCommand<Execution>{
  | 
  |  private static final long serialVersionUID = 1L;
  |  
  |  private ActivityExecution parentExecution;
  |  private ProcessDefinition subProcess;
  |  private String key;
  |  public StartSubProcessCmd(Execution parentExecution, ProcessDefinition subProcess, String key){
  |   this.parentExecution = (ActivityExecution)parentExecution;
  |   this.subProcess = subProcess;
  |   this.key = key;
  |  }
  | 
  |  public Execution execute(Environment environment) throws Exception {
  |   ClientExecution subExecution = parentExecution.beginSubProcessInstance((ClientProcessDefinition) subProcess, key);
  |   return subExecution;
  |  }
  | }

appreciate!


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

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



More information about the jboss-user mailing list