package com.qqchen.deploy.backend.workflow.service;

import com.qqchen.deploy.backend.framework.service.IBaseService;
import com.qqchen.deploy.backend.workflow.dto.WorkflowNodeDefinitionCreateDTO;
import com.qqchen.deploy.backend.workflow.dto.WorkflowNodeDefinitionDTO;
import com.qqchen.deploy.backend.workflow.dto.WorkflowNodeTypeDefinedDTO;
import com.qqchen.deploy.backend.workflow.dto.query.WorkflowDefinitionQuery;
import com.qqchen.deploy.backend.workflow.entity.WorkflowNodeDefinition;
import com.qqchen.deploy.backend.workflow.enums.NodeCategoryEnums;

import java.util.List;

/**
 * 工作流节点定义服务接口
 */
public interface IWorkflowNodeDefinitionService extends IBaseService<WorkflowNodeDefinition, WorkflowNodeDefinitionDTO, WorkflowDefinitionQuery, Long> {


    /**
     * 根据节点类型获取节点定义
     *
     * @param type 节点类型
     * @return 节点定义
     */
    WorkflowNodeDefinitionDTO getByType(String type);
    
    /**
     * 根据分类获取节点定义列表
     *
     * @param category 节点分类
     * @return 节点定义列表
     */
    List<WorkflowNodeDefinitionDTO> listByCategory(NodeCategoryEnums category);
    
    /**
     * 获取所有启用的节点定义
     *
     * @return 节点定义列表
     */
    List<WorkflowNodeDefinitionDTO> listAllEnabled();
    
    /**
     * 启用节点定义
     *
     * @param id 节点定义ID
     */
    void enable(Long id);
    
    /**
     * 禁用节点定义
     *
     * @param id 节点定义ID
     */
    void disable(Long id);

    List<WorkflowNodeTypeDefinedDTO> defined();

}