package tech.easyflow.approval.service;

import tech.easyflow.approval.entity.vo.ApprovalFlowDetailVo;
import tech.easyflow.approval.entity.vo.ApprovalSubmitRequest;

/**
 * 审批流程匹配服务。
 */
public interface ApprovalMatchService {

    /**
     * 根据资源上下文匹配审批流程。
     *
     * @param request 审批提交请求
     * @return 命中的流程详情
     */
    ApprovalFlowDetailVo matchFlow(ApprovalSubmitRequest request);

    /**
     * 根据资源上下文匹配审批流程，未命中时返回 {@code null}。
     *
     * @param request 审批提交请求
     * @return 命中的流程详情，未命中时返回 {@code null}
     */
    ApprovalFlowDetailVo matchFlowOrNull(ApprovalSubmitRequest request);
}
