Search in sources :

Example 1 with ExecutionImpl

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);
        }
    }
}
Also used : DelegateExecution(org.activiti.engine.delegate.DelegateExecution) Execution(org.activiti.engine.runtime.Execution) ExecutionEntity(org.activiti.engine.impl.persistence.entity.ExecutionEntity) ExecutionImpl(org.activiti.engine.impl.pvm.runtime.ExecutionImpl)

Example 2 with ExecutionImpl

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());
}
Also used : WaitState(org.activiti.engine.test.pvm.activities.WaitState) PvmProcessInstance(org.activiti.engine.impl.pvm.PvmProcessInstance) ExecutionImpl(org.activiti.engine.impl.pvm.runtime.ExecutionImpl) PvmProcessDefinition(org.activiti.engine.impl.pvm.PvmProcessDefinition) ProcessDefinitionBuilder(org.activiti.engine.impl.pvm.ProcessDefinitionBuilder) EventScopeCreatingSubprocess(org.activiti.engine.test.pvm.activities.EventScopeCreatingSubprocess) Automatic(org.activiti.engine.test.pvm.activities.Automatic)

Aggregations

ExecutionImpl (org.activiti.engine.impl.pvm.runtime.ExecutionImpl)2 DelegateExecution (org.activiti.engine.delegate.DelegateExecution)1 ExecutionEntity (org.activiti.engine.impl.persistence.entity.ExecutionEntity)1 ProcessDefinitionBuilder (org.activiti.engine.impl.pvm.ProcessDefinitionBuilder)1 PvmProcessDefinition (org.activiti.engine.impl.pvm.PvmProcessDefinition)1 PvmProcessInstance (org.activiti.engine.impl.pvm.PvmProcessInstance)1 Execution (org.activiti.engine.runtime.Execution)1 Automatic (org.activiti.engine.test.pvm.activities.Automatic)1 EventScopeCreatingSubprocess (org.activiti.engine.test.pvm.activities.EventScopeCreatingSubprocess)1 WaitState (org.activiti.engine.test.pvm.activities.WaitState)1