
package org.jeecg.modules.workFlow.flowlong.engine;

import org.jeecg.modules.workFlow.flowlong.engine.assist.Assert;
import org.jeecg.modules.workFlow.flowlong.engine.core.FlowLongContext;
import org.jeecg.modules.workFlow.flowlong.engine.model.ProcessModel;

/**
 * JSON BPM 模型缓存处理接口
 *

 */
public interface ProcessModelCache {

    /**
     * 流程模型缓存KEY
     *
     * @return 缓存 KEY
     */
    String modelCacheKey();

    /**
     * 流程模型内容
     *
     * @return 缓存内容
     */
    String getModelContent();

    /**
     * JSON BPM 模型
     *
     * @return JSON BPM 模型
     */
    default ProcessModel model() {
        return this.model(false);
    }

    /**
     * JSON BPM 模型
     *
     * @param redeploy 重新部署 true 是 false 否
     * @return JSON BPM 模型
     */
    default ProcessModel model(boolean redeploy) {
        String modelContent = this.getModelContent();
        Assert.isEmpty(modelContent, "The process modelContent is Empty.");
        return FlowLongContext.parseProcessModel(modelContent, this.modelCacheKey(), redeploy);
    }
}
