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

org.clawiz.bpm.common.manager.instance.AbstractProcessInstance Maven / Gradle / Ivy

/*
 *
 *  * MIT License
 *  *
 *  * Copyright (c) 2018 Clawiz
 *  *
 *  * Permission is hereby granted, free of charge, to any person obtaining a copy
 *  * of this software and associated documentation files (the "Software"), to deal
 *  * in the Software without restriction, including without limitation the rights
 *  * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
 *  * copies of the Software, and to permit persons to whom the Software is
 *  * furnished to do so, subject to the following conditions:
 *  *
 *  * The above copyright notice and this permission notice shall be included in all
 *  * copies or substantial portions of the Software.
 *  *
 *  * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
 *  * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
 *  * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
 *  * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
 *  * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
 *  * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
 *  * SOFTWARE.
 *  *
 *
 */

package org.clawiz.bpm.common.manager.instance;


import org.clawiz.bpm.common.metadata.data.process.Process;
import org.clawiz.bpm.common.metadata.data.process.node.ProcessNodeList;
import org.clawiz.bpm.common.manager.service.AbstractProcessService;
import org.clawiz.core.common.system.object.AbstractObject;
import org.clawiz.core.common.system.session.Session;

import java.math.BigDecimal;

public abstract class AbstractProcessInstance  {

    BigDecimal                   id;

    Session                      session;
    AbstractProcessService       service;
    BigDecimal                   objectId;
    AbstractObject               object;

    Process                      process;
    ProcessNodeList              nodes = new ProcessNodeList();

    public Process getProcess() {
        return process;
    }

    public void setProcess(Process process) {
        this.process = process;
    }

    public BigDecimal getId() {
        return id;
    }

    public void setId(BigDecimal id) {
        this.id = id;
    }

    public BigDecimal getObjectId() {
        return objectId;
    }

    public void setObjectId(BigDecimal objectId) {
        this.object   = null;
        this.objectId = objectId;
    }

    public T getObject() {
        if ( object == null ) {
            object = getService().loadObject(objectId);
        }
        return (T) object;
    }

    public Session getSession() {
        return session;
    }

    public void setSession(Session session) {
        this.session = session;
    }

    public AbstractProcessService getService() {
        if ( service == null ) {
            service = session.getService(process.getServiceClass());
        }
        return service;
    }

    public ProcessNodeList getNodes() {
        return nodes;
    }

    abstract public ProcessInstanceParameterList toParameterList();

    abstract public void fromParameterList(ProcessInstanceParameterList parameters);

    public void clearCaches() {
        this.object = null;
    }

}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy