All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.camunda.bpm.engine.rest.dto.runtime.modification.ProcessInstanceModificationInstructionDto Maven / Gradle / Ivy

There is a newer version: 7.22.0-alpha2
Show newest version
/* 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.camunda.bpm.engine.rest.dto.runtime.modification;

import java.util.Map;

import org.camunda.bpm.engine.ProcessEngine;
import org.camunda.bpm.engine.rest.dto.runtime.TriggerVariableValueDto;
import org.camunda.bpm.engine.runtime.ActivityInstantiationBuilder;
import org.camunda.bpm.engine.runtime.InstantiationBuilder;
import org.camunda.bpm.engine.runtime.ProcessInstanceModificationBuilder;

import com.fasterxml.jackson.annotation.JsonSubTypes;
import com.fasterxml.jackson.annotation.JsonTypeInfo;
import com.fasterxml.jackson.databind.ObjectMapper;

/**
 * @author Thorben Lindhauer
 *
 */
@JsonTypeInfo(use = JsonTypeInfo.Id.NAME, include = JsonTypeInfo.As.PROPERTY, property = "type", visible = true)
@JsonSubTypes(value = {
    @JsonSubTypes.Type(value = CancellationInstructionDto.class),
    @JsonSubTypes.Type(value = StartBeforeInstructionDto.class),
    @JsonSubTypes.Type(value = StartAfterInstructionDto.class),
    @JsonSubTypes.Type(value = StartTransitionInstructionDto.class)})
public abstract class ProcessInstanceModificationInstructionDto {

  public static final String CANCEL_INSTRUCTION_TYPE = "cancel";
  public static final String START_BEFORE_INSTRUCTION_TYPE = "startBeforeActivity";
  public static final String START_TRANSITION_INSTRUCTION_TYPE = "startTransition";
  public static final String START_AFTER_INSTRUCTION_TYPE = "startAfterActivity";

  protected String type;

  protected Map variables;

  protected String activityId;
  protected String transitionId;
  protected String activityInstanceId;
  protected String transitionInstanceId;
  protected String ancestorActivityInstanceId;
  protected boolean cancelCurrentActiveActivityInstances;

  public Map getVariables() {
    return variables;
  }
  public void setVariables(Map variables) {
    this.variables = variables;
  }
  public String getType() {
    return type;
  }
  public void setType(String type) {
    this.type = type;
  }
  public String getActivityId() {
    return activityId;
  }
  public void setActivityId(String activityId) {
    this.activityId = activityId;
  }
  public String getTransitionId() {
    return transitionId;
  }
  public void setTransitionId(String transitionId) {
    this.transitionId = transitionId;
  }
  public String getActivityInstanceId() {
    return activityInstanceId;
  }
  public void setActivityInstanceId(String activityInstanceId) {
    this.activityInstanceId = activityInstanceId;
  }
  public String getTransitionInstanceId() {
    return transitionInstanceId;
  }
  public void setTransitionInstanceId(String transitionInstanceId) {
    this.transitionInstanceId = transitionInstanceId;
  }
  public String getAncestorActivityInstanceId() {
    return ancestorActivityInstanceId;
  }
  public void setAncestorActivityInstanceId(String ancestorActivityInstanceId) {
    this.ancestorActivityInstanceId = ancestorActivityInstanceId;
  }
  public boolean isCancelCurrentActiveActivityInstances() {
    return cancelCurrentActiveActivityInstances;
  }
  public void setCancelCurrentActiveActivityInstances(boolean cancelCurrentActiveActivityInstances) {
    this.cancelCurrentActiveActivityInstances = cancelCurrentActiveActivityInstances;
  }

  public abstract void applyTo(ProcessInstanceModificationBuilder builder, ProcessEngine engine, ObjectMapper mapper);

  public abstract void applyTo(InstantiationBuilder builder, ProcessEngine engine, ObjectMapper mapper);

  protected String buildErrorMessage(String message) {
    return "For instruction type '" + type + "': " +  message;
  }

  protected void applyVariables(ActivityInstantiationBuilder builder,
      ProcessEngine engine, ObjectMapper mapper) {

    if (variables != null) {
      for (Map.Entry variableValue : variables.entrySet()) {
        TriggerVariableValueDto value = variableValue.getValue();

        if (value.isLocal()) {
          builder.setVariableLocal(variableValue.getKey(), value.toTypedValue(engine, mapper));
        }
        else {
          builder.setVariable(variableValue.getKey(), value.toTypedValue(engine, mapper));

        }
      }
    }
  }

}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy