[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