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

org.ow2.bonita.facade.runtime.impl.ActivityInstanceImpl Maven / Gradle / Ivy

/**
 * Copyright (C) 2007  Bull S. A. S.
 * Bull, Rue Jean Jaures, B.P.68, 78340, Les Clayes-sous-Bois
 * This library is free software; you can redistribute it and/or modify it under the terms
 * of the GNU Lesser General Public License as published by the Free Software Foundation
 * version 2.1 of the License.
 * This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY;
 * without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
 * See the GNU Lesser General Public License for more details.
 * You should have received a copy of the GNU Lesser General Public License along with this
 * program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth
 * Floor, Boston, MA  02110-1301, USA.
 **/
package org.ow2.bonita.facade.runtime.impl;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import org.ow2.bonita.facade.runtime.ActivityBody;
import org.ow2.bonita.facade.runtime.ActivityInstance;
import org.ow2.bonita.facade.runtime.VariableUpdate;
import org.ow2.bonita.facade.uuid.ActivityInstanceUUID;
import org.ow2.bonita.facade.uuid.PackageDefinitionUUID;
import org.ow2.bonita.facade.uuid.ProcessDefinitionUUID;
import org.ow2.bonita.facade.uuid.ProcessInstanceUUID;


/**
 * @author Pierre Vigneras
 * @date Mar 13, 2008
 */
public class ActivityInstanceImpl< T extends ActivityBody> extends RuntimeRecordImpl implements ActivityInstance {
  private static final long serialVersionUID = -8515098234372896097L;

  protected ActivityInstanceUUID uuid;
  protected String activityId;
  protected String iterationId;
  protected String activityInstanceId;

  protected Map variablesBeforeStarted;
  protected List variableUpdates = new ArrayList();

  protected T body;

  protected ActivityInstanceImpl() { }

  protected ActivityInstanceImpl(final ActivityInstanceUUID uuid, final String activityId,
      final PackageDefinitionUUID packageUUID, final ProcessDefinitionUUID processUUID,
      final ProcessInstanceUUID instanceUUID, final String iterationId, final String activityInstanceId) {
    super(packageUUID, processUUID, instanceUUID);
    this.uuid = uuid;
    this.activityId = activityId;
    this.iterationId = iterationId;
    this.activityInstanceId = activityInstanceId;
  }

  @SuppressWarnings("unchecked")
  public ActivityInstanceImpl(final ActivityInstance< ? extends ActivityBody > record) {
    super(record);
    this.uuid = new ActivityInstanceUUID(record.getUUID());
    this.activityId = record.getActivityId();
    this.body = (T) record.getBody().copy();
    this.iterationId = record.getIterationId();
    this.activityInstanceId = record.getActivityInstanceId();
    this.variablesBeforeStarted = record.getVariablesBeforeStarted();
    List list = record.getVariableUpdates();
    if (list != null && !list.isEmpty()) {
      this.variableUpdates = new ArrayList();
      for (VariableUpdate varUpdate : list) {
        this.variableUpdates.add(new VariableUpdateImpl(varUpdate));
      }
    }
  }

  public String toString() {
    String st = this.getClass().getName()
      + "[uuid: " + getUUID()
      + ", activityId: " + getActivityId()
      + ", iterationId: " + getIterationId()
      + ", packageDefinitionUUID: " + getPackageDefinitionUUID()
      + ", processDefinitionUUID: " + getProcessDefinitionUUID()
      + ", processUUID: " + getProcessInstanceUUID()
      + ", variablesBeforeStarted: " + getVariablesBeforeStarted()
      + ", variableUpdates: " + getVariableUpdates();
    if (getBody() != null) {
      st += ", body: " + body.toString();
    }
    st += "]";
    return st;
  }

  public Map getVariablesBeforeStarted() {
    return variablesBeforeStarted;
  }

  public Object getVariableValueBeforeStarted(String variableId) {
    return getVariablesBeforeStarted().get(variableId);
  }

  public T getBody() {
    return this.body;
  }

  public String getIterationId() {
    return this.iterationId;
  }

  
  public String getActivityInstanceId() {
    return activityInstanceId;
  }

  public String getActivityId() {
    return activityId;
  }


  public List getVariableUpdates() {
    return variableUpdates;
  }

  public Map getLastKnownVariableValues() {
    Map var = getVariablesBeforeStarted();
    if (var != null) {
      var = new HashMap(var);
    } else {
      var = new HashMap();
    }
    for (VariableUpdate varUp : getVariableUpdates()) {
      var.put(varUp.getName(), varUp.getValue());
    }
    return var;
  }


  public ActivityInstanceUUID getUUID() {
    return uuid;
  }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy