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

com.effektif.workflow.api.workflow.Transition Maven / Gradle / Ivy

The newest version!
/*
 * Copyright 2014 Effektif GmbH.
 *
 * 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 com.effektif.workflow.api.workflow;

import com.effektif.workflow.api.bpmn.BpmnReader;
import com.effektif.workflow.api.bpmn.BpmnWriter;
import com.effektif.workflow.api.bpmn.XmlElement;
import com.effektif.workflow.api.condition.Condition;

/**
 * A sequence flow that connects two activities in a workflow.
 *
 * BPMN XML: {@code }
 *
 * @author Tom Baeyens
 */
public class Transition extends Element {

  protected String id;

  /** The {@link com.effektif.workflow.api.workflow.Activity#id} for the activity this transition leaves from. */
  protected String fromId;

  /** The {@link com.effektif.workflow.api.workflow.Activity#id} for the activity this transition goes to. */
  protected String toId;

  protected Condition condition;
  protected Boolean isToNext;

//  @Override
//  public void readJson(JsonReader r) {
//    id = r.readString("id");
//    from = r.readString("from");
//    to = r.readString("to");
//    condition = r.readObject("condition");
//    isToNext = r.readBoolean("isToNext");
//    super.readJson(r);
//  }
//
//  @Override
//  public void writeJson(JsonWriter w) {
//    w.writeString("id", id);
//    w.writeString("from", id);
//    w.writeString("to", id);
//    w.writeWritable("condition", condition);
//    w.writeBoolean("isToNext", isToNext);
//    super.writeJson(w);
//  }

  @Override
  public void readBpmn(BpmnReader r) {
    super.readBpmn(r);
    id = r.readStringAttributeBpmn("id");
    fromId = r.readStringAttributeBpmn("sourceRef");
    toId = r.readStringAttributeBpmn("targetRef");

    r.startExtensionElements();
    for (XmlElement conditionElement : r.readElementsEffektif("condition")) {
      r.startElement(conditionElement);
      condition = r.readCondition();
      r.endElement();
    }

    r.endExtensionElements();
    bpmn.clearName();
    cleanUnparsedBpmn();
  }
  
  @Override
  public void writeBpmn(BpmnWriter w) {
    super.writeBpmn(w);
    w.writeIdAttributeBpmn("id", id);
    w.writeIdAttributeBpmn("sourceRef", fromId);
    w.writeIdAttributeBpmn("targetRef", toId);

    if (condition != null) {
      w.startExtensionElements();
      w.startElementEffektif("condition");
      condition.writeBpmn(w);
      w.endElement();
      w.endExtensionElements();
    }
  }

  public String getId() {
    return this.id;
  }
  public void setId(String id) {
    this.id = id;
  }
  public Transition id(String id) {
    this.id = id;
    return this;
  }

  public Transition() {
  }
  
  public String getFromId() {
    return this.fromId;
  }
  public void setFromId(String fromId) {
    this.fromId = fromId;
  }
  public Transition fromId(String fromId) {
    this.fromId = fromId;
    return this;
  }
  
  public String getToId() {
    return this.toId;
  }
  public void setToId(String toId) {
    this.toId = toId;
  }
  public Transition toId(String toId) {
    this.toId = toId;
    return this;
  }
  
  public Transition toNext() {
    this.isToNext = true;
    return this;
  }
  public boolean isToNext() {
    return Boolean.TRUE.equals(isToNext);
  }
  public void setToNext(Boolean toNext) {
    this.isToNext = toNext;
  }
  
  public Condition getCondition() {
    return this.condition;
  }
  public void setCondition(Condition condition) {
    this.condition = condition;
  }
  public Transition condition(Condition condition) {
    this.condition = condition;
    return this;
  }

  @Override
  public Transition name(String name) {
    super.name(name);
    return this;
  }

  @Override
  public Transition description(String description) {
    super.description(description);
    return this;
  }

  @Override
  public Transition property(String key, Object value) {
    super.property(key, value);
    return this;
  }

  @Override
  public Transition propertyOpt(String key, Object value) {
    super.propertyOpt(key, value);
    return this;
  }

  @Override
  public String toString() {
    return "("+(fromId!=null?fromId:" ")+")--"+(id!=null?id+"--":"")+">("+(toId!=null?toId:" ")+")";
  }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy