[jboss-user] [JBoss jBPM] - Re: jbpm 4.0 creating and running processes without persiste

mihailrc do-not-reply at jboss.com
Fri Jul 24 15:10:41 EDT 2009


I managed to run a process without persistence.

Here is the code:


  | import junit.framework.TestCase;
  | import org.jbpm.jpdl.internal.model.JpdlProcessDefinition;
  | import org.jbpm.jpdl.internal.xml.JpdlParser;
  | import org.jbpm.jpdl.internal.activity.StartActivity;
  | import org.jbpm.jpdl.internal.activity.StateActivity;
  | import org.jbpm.jpdl.internal.activity.EndActivity;
  | import org.jbpm.pvm.internal.model.ActivityImpl;
  | import org.jbpm.pvm.internal.model.TransitionImpl;
  | import org.jbpm.pvm.internal.model.ProcessDefinitionImpl;
  | import org.jbpm.pvm.internal.client.ClientExecution;
  | import org.jbpm.pvm.internal.xml.Parse;
  | import org.jbpm.api.activity.ActivityExecution;
  | import org.jbpm.api.activity.ExternalActivityBehaviour;
  | 
  | import java.io.FileInputStream;
  | import java.io.IOException;
  | import java.util.Map;
  | 
  | public class HelloWorldTest extends TestCase {
  |   public void test_helloWorldProcess() throws IOException {
  |         ProcessDefinitionImpl processDefinition = createProcessDefinition();
  |         ClientExecution execution = processDefinition.startProcessInstance();
  |         System.out.println("State After start : " + execution.findActiveActivityNames());
  |         execution.signal();
  |         System.out.println("State after signal: " + execution.findActiveActivityNames());
  | 
  |     }
  | 
  |     private ProcessDefinitionImpl createProcessDefinition() {
  |         ProcessDefinitionImpl processDefinition = new ProcessDefinitionImpl();
  |         processDefinition.setName("hello");
  |         //define states
  |         ActivityImpl start = processDefinition.createActivity("start");
  |         start.setBehaviour(new StartActivity());
  |         //it turns out is very important to call this since it says where the process starts
  |         processDefinition.setInitial(start);
  |         ActivityImpl state1 = processDefinition.createActivity("state1");
  |         state1.setBehaviour(new HelloActivity());
  |         ActivityImpl state2 = processDefinition.createActivity("state2");
  |         state2.setBehaviour(new StateActivity());
  |         ActivityImpl end = processDefinition.createActivity("end");
  |         end.setBehaviour(new EndActivity());
  |         //define transitions
  |         TransitionImpl transition = start.createOutgoingTransition();
  |         transition.setDestination(state1);
  |         TransitionImpl transition2 = state1.createOutgoingTransition();
  |         transition2.setDestination(state2);
  |         TransitionImpl endTransition = state2.createOutgoingTransition();
  |         endTransition.setDestination(end);
  |         return processDefinition;
  |     }
  | 
  |     
  | private JpdlProcessDefinition loadProcessDefinition() throws IOException {
  |         JpdlParser jpdlParser = new JpdlParser();
  |         Parse parse = jpdlParser.createParse();
  |         FileInputStream inputStream = new FileInputStream("process.jpdl.xml");
  |         parse.setInputStream(inputStream);
  |         parse.execute();
  |         return (JpdlProcessDefinition) parse.getDocumentObject();
  |     }
  | 
  |     class HelloActivity implements ExternalActivityBehaviour {
  |         public void signal(ActivityExecution activityExecution, String signalName, Map<String, ?> stringMap) throws Exception {
  |             activityExecution.take(signalName);
  |         }
  | 
  |         public void execute(ActivityExecution activityExecution) throws Exception {
  |             System.out.println("=================Hello there===========");
  |             activityExecution.waitForSignal();
  |         }
  |     }
  | }
  | 
  | 
As you can see it uses the internal API quite a bit.


Mihail

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

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



More information about the jboss-user mailing list