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

nablarch.integration.workflow.definition.Gateway Maven / Gradle / Ivy

package nablarch.integration.workflow.definition;

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

/**
 * ゲートウェイ定義を表すクラス。
 *
 * @author hisaaki sioiri
 * @since 1.4.2
 */
public class Gateway extends FlowNode {

    /**
     * ゲートウェイタイプ
     *
     * @author hisaaki sioiri
     * @since 1.4.2
     */
    public enum GatewayType {
        /** exclusive gateway */
        EXCLUSIVE
    }

    /** ゲートウェイタイプ */
    private final GatewayType gatewayType;

    /**
     * ゲートウェイ定義を生成する。
     *
     * @param flowNodeId フローノードID
     * @param flowNodeName フローノード名
     * @param laneId レーンID
     * @param gatewayType ゲートウェイタイプ
     * @param sequenceFlows 自身を遷移元とするシーケンスフローのリスト
     */
    public Gateway(
            String flowNodeId,
            String flowNodeName,
            String laneId,
            String gatewayType,
            List sequenceFlows) {
        super(flowNodeId, flowNodeName, laneId, sequenceFlows);
        this.gatewayType = GatewayType.valueOf(gatewayType);
    }

    /**
     * ゲートウェイタイプを取得する。
     *
     * @return ゲートウェイタイプ
     */
    public GatewayType getGatewayType() {
        return gatewayType;
    }

    /**
     * {@inheritDoc}
     * 

* 自身を遷移元とするシーケンスフローリストから、条件にマッチするシーケンスフローを特定し、 * その遷移先フローノードIDを次のフローノードIDとする。 * * 全てのシーケンスフローをチェックした結果、遷移先が見つからなかった場合には{@link IllegalStateException}を送出する。 */ @Override public String getNextFlowNodeId(String instanceId, Map parameter) { for (SequenceFlow sequenceFlow : getSequenceFlows()) { if (sequenceFlow.canProceed(instanceId, parameter)) { return sequenceFlow.getTargetFlowNodeId(); } } throw new IllegalStateException(String.format( "The sequence flow to proceed was not found. instance id = [%s], gateway id = [%s]", instanceId, getFlowNodeId())); } }





© 2015 - 2025 Weber Informatics LLC | Privacy Policy