package com.cmvr.test.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.cmvr.test.enums.TaskStatusEnum;
import com.cmvr.test.model.domain.TeNodeInst;
import com.cmvr.test.model.vo.TeFlowViewVO;

import java.util.List;

/**
 * 流程节点Service接口
 *
 * @author cmvr-iot
 */
public interface ITeNodeInstService extends IService<TeNodeInst> {


    /**
     * 查询某任务实例下的节点执行记录（用于前端展示）
     */
    public List<TeNodeInst> view(TeFlowViewVO flowViewVO);

    /**
     * 记录节点进入运行状态
     *
     * @param instId     任务实例 ID
     * @param taskId     任务定义 ID
     * @param itemId     检测项 ID
     * @param nodeId     节点 ID
     * @param nodeType   节点类型
     * @param operate    执行来源
     * @param action     动作类型
     * @param paramsIn   输入参数（已序列化为 JSON 字符串）
     * @param iterations 迭代次数
     */
    void logRunning(String instId, String taskId, String itemId,
                    String nodeId, String nodeType,
                    String operate, String action, String paramsIn, List<Integer> iterations);

    /**
     * 节点执行后更新输出参数等信息/记录节点成功完成
     */
    void logSuccess(String instId, String itemId, String nodeId,
                    String paramsOut, String message, List<Integer> iterations);

    /**
     * 记录节点执行失败
     */
    void logFailed(String instId, String taskId, String itemId,
                   String nodeId, String nodeType,
                   String operate, String action, String params, String message, List<Integer> iterations);

    /**
     * 删除节点
     */
    void delete(String instId, String nodeId, List<Integer> iterations);

    /**
     * 更新节点
     */
    void update(String instId, String nodeId, TaskStatusEnum nodeStatus);
}

