summaryrefslogtreecommitdiffstats
path: root/activiti-extension/src/main/java/org/activiti/engine/impl/pvm/runtime/AtomicOperationProcessStart.java
blob: 2fb8c9aec499ec2a142114980f2c7df0315259ea (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
/**
 * Copyright 2017 ZTE Corporation.
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *     http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
package org.activiti.engine.impl.pvm.runtime;

import java.util.List;
import java.util.Map;

import org.activiti.engine.delegate.event.ActivitiEventType;
import org.activiti.engine.delegate.event.impl.ActivitiEventBuilder;
import org.activiti.engine.impl.context.Context;
import org.activiti.engine.impl.pvm.process.ActivityImpl;
import org.activiti.engine.impl.pvm.process.ProcessDefinitionImpl;
import org.activiti.engine.impl.pvm.process.ScopeImpl;

public class AtomicOperationProcessStart extends AbstractEventAtomicOperation {
  @Override
  public boolean isAsync(InterpretableExecution execution) {
    return true;
  }

  protected ScopeImpl getScope(InterpretableExecution execution) {
    return execution.getProcessDefinition();
  }

  protected String getEventName() {
    return "start";
  }

  protected void eventNotificationsCompleted(InterpretableExecution execution) {
    if ((Context.getProcessEngineConfiguration() != null)
        && (Context.getProcessEngineConfiguration().getEventDispatcher().isEnabled())) {
      Map variablesMap = null;
      try {
        variablesMap = execution.getVariables();
      } catch (Throwable localThrowable) {
      }
      Context
          .getProcessEngineConfiguration()
          .getEventDispatcher()
          .dispatchEvent(
              ActivitiEventBuilder.createEntityWithVariablesEvent(
                  ActivitiEventType.ENTITY_INITIALIZED, execution, variablesMap, false));

      Context
          .getProcessEngineConfiguration()
          .getEventDispatcher()
          .dispatchEvent(
              ActivitiEventBuilder.createProcessStartedEvent(execution, variablesMap, false));
    }

    ProcessDefinitionImpl processDefinition = execution.getProcessDefinition();
    StartingExecution startingExecution = execution.getStartingExecution();
    List initialActivityStack =
        processDefinition.getInitialActivityStack(startingExecution.getInitial());
    execution.setActivity((ActivityImpl) initialActivityStack.get(0));
    execution.performOperation(PROCESS_START_INITIAL);
  }
}