package com.friday.operation.api.distributor.service;

import com.friday.operation.api.distributor.dto.*;
import com.friday.base.common.response.DubboResult;

import java.util.ArrayList;
import java.util.List;

/**
 * @Author YaoYao
 * @Date Created In 10:55 2023/3/3
 * @Description 任务分发框架内部服务 无需鉴权
 * @Modified By
 */
public interface IDistributorInternalService {
    /**
     * 任务执行结果（仅状态和失败原因）回调
     */
    DubboResult callback(TaieJobCallbackDto callBack);

    /**
     * 任务执行完成后操作
     */
    DubboResult postHandleTask(String taskId);

    /**
     * 新增运行配置
     */
    DubboResult addBizConfig(BizConfigDto bizConfig);

    /**
     * 新增运行队列
     */
    DubboResult addTaskQueue(TaskQueueDto queue);

    /**
     * 更新框架任务业务数据
     */
    DubboResult updateTaskBizData(UpdateTaskDto update);

    /**
     * 更新框架子任务业务数据
     */
    DubboResult updateJobBizData(UpdateJobDto update);

    /**
     * 获取框架任务业务数据
     */
    DubboResult<TaieTaskDto> getTaskFrameData(String taskId);

    /**
     * 获取框架子任务业务数据
     */
    DubboResult<TaieJobDto> getJobFrameData(Integer invokeId);

    /**
     * 获取框架子任务业务数据列表
     */
    DubboResult<ArrayList<TaieJobDto>> getJobFrameDataList(String taskId);

    /**
     * 创建流程中表单
     */
    DubboResult generateInProcessForm();

    /**
     * 获取流程中表单定义
     */
    DubboResult getFormDefinition();

    /**
     * 提交表单数据
     */
    DubboResult commitFormData();

    /**
     * 获取提交的表单数据
     */
    DubboResult getFormCommitData();
    /**
     * 查询是否有正在运行中的任务
     */
    DubboResult<Boolean> checkTaskRunning(String taieTenant, List<String> taskTypeList);

    /**
     * 重新加载cyclicSyncDataConfig配置
     * @return
     */
    DubboResult reloadSyncDataConfig();
}
