use of org.activiti.engine.impl.pvm.runtime.ExecutionImpl in project midpoint by Evolveum.
the class DumpVariables method dumpExecutionVariables.
private void dumpExecutionVariables(String executionId, DelegateExecution delegateExecution, Execution execution, Set<String> variablesSeen, RuntimeService runtimeService) {
Map<String, Object> variablesLocal = runtimeService.getVariablesLocal(executionId);
LOGGER.trace("Execution id={} ({} variables); class={}/{}", executionId, variablesLocal.size(), delegateExecution != null ? delegateExecution.getClass().getName() : null, execution != null ? execution.getClass().getName() : null);
TreeSet<String> names = new TreeSet<>(variablesLocal.keySet());
names.forEach(n -> LOGGER.trace(" - {} = {} {}", n, variablesLocal.get(n), variablesSeen.contains(n) ? "(dup)" : ""));
variablesSeen.addAll(variablesLocal.keySet());
if (delegateExecution instanceof ExecutionEntity) {
ExecutionEntity executionEntity = (ExecutionEntity) delegateExecution;
if (executionEntity.getParent() != null) {
dumpExecutionVariables(executionEntity.getParentId(), executionEntity.getParent(), null, variablesSeen, runtimeService);
}
} else if (delegateExecution instanceof ExecutionImpl) {
ExecutionImpl executionImpl = (ExecutionImpl) delegateExecution;
if (executionImpl.getParent() != null) {
dumpExecutionVariables(executionImpl.getParentId(), executionImpl.getParent(), null, variablesSeen, runtimeService);
}
} else {
Execution execution1 = runtimeService.createExecutionQuery().executionId(executionId).singleResult();
if (execution1 == null) {
LOGGER.trace("Execution with id {} was not found.", executionId);
} else if (execution1.getParentId() != null) {
Execution execution2 = runtimeService.createExecutionQuery().executionId(execution1.getParentId()).singleResult();
dumpExecutionVariables(execution.getParentId(), null, execution2, variablesSeen, runtimeService);
}
}
}
use of org.activiti.engine.impl.pvm.runtime.ExecutionImpl in project Activiti by Activiti.
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());
}
Aggregations