Skip to content
CommonProcDef.java 3.38 KiB
Newer Older
杨郁彬's avatar
杨郁彬 committed
package com.cesgroup.bdc.wfself.def;

import java.util.HashMap;
import java.util.Map;

import com.cesgroup.bdc.wfself.node.event.StartEvent;

/**
 * 公共流程定义
 * 
 * 
 * 流程定义规则,
 * 1、网关的下一节点只能在List中存放的任务节点,不能是其他的节点,除此之外,不能存在非INode类型的对象;
 * 2、并行网关(聚合)节点后不能是List;
 * 3、流程参数人员,需要是,以逗号分隔用户id;
 * 4、网流程定义中,同一时间,只能有一个并网关的任务在执行;
 * 
 * @author khaoth
 */
public abstract class CommonProcDef {

    private String procDefId;

    private String procDefCode;

    private String version;

    private String name;

    private final Map<String, CommonNode> procDefNodeMap = new HashMap<>();

    private final Map<String, Object> procDefMap = new HashMap<>();

    private final Map<String, String> gatewayFlowKeyMap = new HashMap<>();

    public CommonProcDef() {}

    /**
     * 构造函数
     * 
     * @param procDefCode
     *            流程定义code
     * @param version
     *            流程定义版本
     * @param name
     *            流程定义名
     */
    public CommonProcDef(String procDefCode, String name, String version) {
        this.procDefCode = procDefCode;
        this.name = name;
        this.version = version;
        this.procDefId = procDefCode + ":" + version;
    }

    /**
     * 获取流程开始节点
     * 
     * @return
     */
    public abstract StartEvent getStartEvent();

    /**
     * 获取流程定义code
     * 
     * @return
     */
    public String getProcDefCode() {
        return procDefCode;
    }

    /**
     * 设置流程定义code
     * 
     * @param procDefCode
     */
    protected void setProcDefCode(String procDefCode) {
        this.procDefCode = procDefCode;
    }

    /**
     * 获取流程版本
     * 
     * @return
     */
    public String getVersion() {
        return version;
    }

    /**
     * 设置流程版本
     * 
     * @param version
     */
    protected void setVersion(String version) {
        this.version = version;
    }

    /**
     * 获取定义流程名
     * 
     * @return
     */
    public String getName() {
        return name;
    }

    /**
     * 设置定义流程名
     * 
     * @param name
     */
    protected void setName(String name) {
        this.name = name;
    }

    /**
     * 获取流程定义id
     * 
     * @return
     */
    public String getProcDefId() {
        return procDefId;
    }

    /**
     * 设置流程定义id
     * 
     * @param procDefId
     */
    protected void setProcDefId(String procDefId) {
        this.procDefId = procDefId;
    }

    /**
     * 获取流程节点
     * 
     * @param procDefId
     */
    public Map<String, CommonNode> getProcDefNodeMap() {
        return procDefNodeMap;
    }

    /**
     * 获取流程实例map
     * 
     * @return
     */
    public Map<String, Object> getProcDefMap() {
        return procDefMap;
    }

    /**
     * 获取网关流向变量用key的map
     * 
     * @return
     */
    public Map<String, String> getGatewayFlowKeyMap() {
        return gatewayFlowKeyMap;
    }

    /**
     * 获取根据节点code获取节点对象
     * 
     * @return
     */
    public CommonNode getProcDefNode(String nodeCode) {
        return procDefNodeMap.get(nodeCode);
    }
}