use of org.camunda.bpm.engine.impl.pvm.runtime.ExecutionImpl in project camunda-bpm-platform by camunda.
the class CaseExecutionImpl method createSubProcessInstance.
public PvmExecutionImpl createSubProcessInstance(PvmProcessDefinition processDefinition, String businessKey, String caseInstanceId) {
ExecutionImpl subProcessInstance = (ExecutionImpl) processDefinition.createProcessInstance(businessKey, caseInstanceId);
// manage bidirectional super-subprocess relation
subProcessInstance.setSuperCaseExecution(this);
setSubProcessInstance(subProcessInstance);
return subProcessInstance;
}
use of org.camunda.bpm.engine.impl.pvm.runtime.ExecutionImpl in project camunda-bpm-platform by camunda.
the class PvmEventScopesTest method testActivityEndDestroysEventScopes.
/**
* create evt scope --+
* |
* v
*
* +------------------------------+
* | embedded subprocess |
* +-----+ | +-----------+ +---------+ | +----+ +---+
* |start|-->| |startInside|-->|endInside| |-->|wait|-->|end|
* +-----+ | +-----------+ +---------+ | +----+ +---+
* +------------------------------+
*
* ^
* |
* destroy evt scope --+
*/
public void testActivityEndDestroysEventScopes() {
PvmProcessDefinition processDefinition = new ProcessDefinitionBuilder().createActivity("start").initial().behavior(new Automatic()).transition("embeddedsubprocess").endActivity().createActivity("embeddedsubprocess").scope().behavior(new EventScopeCreatingSubprocess()).createActivity("startInside").behavior(new Automatic()).transition("endInside").endActivity().createActivity("endInside").behavior(new Automatic()).endActivity().transition("wait").endActivity().createActivity("wait").behavior(new WaitState()).transition("end").endActivity().createActivity("end").behavior(new Automatic()).endActivity().buildProcessDefinition();
PvmProcessInstance processInstance = processDefinition.createProcessInstance();
processInstance.start();
boolean eventScopeFound = false;
List<ExecutionImpl> executions = ((ExecutionImpl) processInstance).getExecutions();
for (ExecutionImpl executionImpl : executions) {
if (executionImpl.isEventScope()) {
eventScopeFound = true;
break;
}
}
assertTrue(eventScopeFound);
processInstance.signal(null, null);
assertTrue(processInstance.isEnded());
}
use of org.camunda.bpm.engine.impl.pvm.runtime.ExecutionImpl in project camunda-bpm-platform by camunda.
the class PvmActivityInstanceTest method testScopeActivity.
/**
* +-----+ +-----+ +-------+
* | one |-->| two |-->| three |
* +-----+ +-----+ +-------+
*/
public void testScopeActivity() {
ActivityInstanceVerification verifier = new ActivityInstanceVerification();
PvmProcessDefinition processDefinition = new ProcessDefinitionBuilder().createActivity("one").initial().behavior(new Automatic()).executionListener(ExecutionListener.EVENTNAME_START, verifier).executionListener(ExecutionListener.EVENTNAME_END, verifier).transition("two").endActivity().createActivity("two").scope().behavior(new WaitState()).executionListener(ExecutionListener.EVENTNAME_START, verifier).executionListener(ExecutionListener.EVENTNAME_END, verifier).transition("three").endActivity().createActivity("three").behavior(new End()).executionListener(ExecutionListener.EVENTNAME_START, verifier).executionListener(ExecutionListener.EVENTNAME_END, verifier).endActivity().buildProcessDefinition();
PvmProcessInstance processInstance = processDefinition.createProcessInstance();
processInstance.start();
PvmExecution childExecution = processInstance.findExecution("two");
String parentActivityInstanceId = ((ExecutionImpl) childExecution).getParentActivityInstanceId();
assertEquals(((ExecutionImpl) processInstance).getId(), parentActivityInstanceId);
childExecution.signal(null, null);
verifier.assertStartInstanceCount(1, "one");
verifier.assertStartInstanceCount(1, "two");
verifier.assertProcessInstanceParent("two", processInstance);
verifier.assertStartInstanceCount(1, "three");
}
use of org.camunda.bpm.engine.impl.pvm.runtime.ExecutionImpl in project camunda-bpm-platform by camunda.
the class PvmEventTest method testEmbeddedSubProcessEventsDelete.
/**
* +-----------------------------------------------+
* +-----+ | +-----------+ +------------+ +----------+ | +---+
* |start|-->| |startInside|-->| taskInside |-->|endInsdide| |-->|end|
* +-----+ | +-----------+ +------------+ +----------+ | +---+
* +-----------------------------------------------+
*/
public void testEmbeddedSubProcessEventsDelete() {
EventCollector eventCollector = new EventCollector();
PvmProcessDefinition processDefinition = new ProcessDefinitionBuilder("events").executionListener(org.camunda.bpm.engine.impl.pvm.PvmEvent.EVENTNAME_START, eventCollector).executionListener(org.camunda.bpm.engine.impl.pvm.PvmEvent.EVENTNAME_END, eventCollector).createActivity("start").initial().behavior(new Automatic()).executionListener(org.camunda.bpm.engine.impl.pvm.PvmEvent.EVENTNAME_START, eventCollector).executionListener(org.camunda.bpm.engine.impl.pvm.PvmEvent.EVENTNAME_END, eventCollector).transition("embeddedsubprocess").endActivity().createActivity("embeddedsubprocess").scope().behavior(new EmbeddedSubProcess()).executionListener(org.camunda.bpm.engine.impl.pvm.PvmEvent.EVENTNAME_START, eventCollector).executionListener(org.camunda.bpm.engine.impl.pvm.PvmEvent.EVENTNAME_END, eventCollector).createActivity("startInside").behavior(new Automatic()).executionListener(org.camunda.bpm.engine.impl.pvm.PvmEvent.EVENTNAME_START, eventCollector).executionListener(org.camunda.bpm.engine.impl.pvm.PvmEvent.EVENTNAME_END, eventCollector).transition("taskInside").endActivity().createActivity("taskInside").behavior(new WaitState()).executionListener(org.camunda.bpm.engine.impl.pvm.PvmEvent.EVENTNAME_START, eventCollector).executionListener(org.camunda.bpm.engine.impl.pvm.PvmEvent.EVENTNAME_END, eventCollector).transition("endInside").endActivity().createActivity("endInside").behavior(new End()).executionListener(org.camunda.bpm.engine.impl.pvm.PvmEvent.EVENTNAME_START, eventCollector).executionListener(org.camunda.bpm.engine.impl.pvm.PvmEvent.EVENTNAME_END, eventCollector).endActivity().transition("end").endActivity().createActivity("end").behavior(new End()).executionListener(org.camunda.bpm.engine.impl.pvm.PvmEvent.EVENTNAME_START, eventCollector).executionListener(org.camunda.bpm.engine.impl.pvm.PvmEvent.EVENTNAME_END, eventCollector).endActivity().buildProcessDefinition();
PvmProcessInstance processInstance = processDefinition.createProcessInstance();
processInstance.start();
ExecutionImpl execution = (ExecutionImpl) processInstance;
FoxDeleteProcessInstanceCmd cmd = new FoxDeleteProcessInstanceCmd(null, null);
List<PvmExecutionImpl> collectExecutionToDelete = cmd.collectExecutionToDelete(execution);
for (PvmExecutionImpl interpretableExecution : collectExecutionToDelete) {
interpretableExecution.deleteCascade2("");
}
List<String> expectedEvents = new ArrayList<String>();
expectedEvents.add("start on ProcessDefinition(events)");
expectedEvents.add("start on Activity(start)");
expectedEvents.add("end on Activity(start)");
expectedEvents.add("start on Activity(embeddedsubprocess)");
expectedEvents.add("start on Activity(startInside)");
expectedEvents.add("end on Activity(startInside)");
expectedEvents.add("start on Activity(taskInside)");
expectedEvents.add("end on Activity(taskInside)");
expectedEvents.add("end on Activity(embeddedsubprocess)");
expectedEvents.add("end on ProcessDefinition(events)");
assertEquals("expected " + expectedEvents + ", but was \n" + eventCollector + "\n", expectedEvents, eventCollector.events);
}
Aggregations