package net.northking.cctp.se.script.core;

import net.northking.cctp.se.script.bean.Script;

import java.util.Map;

/**
 * 脚本解析服务
 * @author  xuyang.wang
 */
public interface ScriptResolutionService {
    /**
     * 解析脚本
     * @param scriptJson
     * @return
     */
    Script parse(String scriptJson);
    /**
     * 是否可运行,判断本地环境是否满足脚本运行环境要求
     * @param script
     * @return
     */
    boolean isRunnable(Script script);
    /**
     * 准备脚本依赖资源
     * @param script
     */
    void prepareScriptResources(Script script);

    /**
     * 获取脚本执行器
     * @param identifier
     * @return
     */
    ScriptExecutor getScriptExecutor(String identifier);

    /**
     * 移除
     * @param identifier
     * @return
     */
    ScriptExecutor removeScriptExecutor(String identifier);

    /**
     * 创建调试脚本运行引擎
     * @param debugInfo
     * @param script
     * @return
     */
    ScriptExecutor createDebugScriptRuntime(Map<String,Object> debugInfo, Script script);

    /**
     * 创建自动化任务脚本运行引擎
     * @param taskInfo
     * @param script
     * @return
     */
    ScriptExecutor createTaskScriptRuntime(Map<String,Object> taskInfo, Script script);

}
