package tech.easyflow.publicapi.dto;

import tech.easyflow.common.constant.enums.EnumRes;
import tech.easyflow.common.domain.Result;

/**
 * Public Workflow API 执行响应。
 *
 * <p>继承原有 {@link Result} 并继续把执行 ID 放在 {@code data}，
 * 新增 {@code workflow} 区块以保持旧调用方兼容。</p>
 */
public class PublicWorkflowRunResult extends Result<String> {

    private static final long serialVersionUID = 1L;

    private PublicWorkflowTopology workflow;

    /**
     * 创建成功响应。
     *
     * @param executeId 工作流执行 ID
     * @param workflow 已发布工作流拓扑
     * @return 成功响应
     */
    public static PublicWorkflowRunResult success(
            String executeId,
            PublicWorkflowTopology workflow) {
        PublicWorkflowRunResult result = new PublicWorkflowRunResult();
        result.setErrorCode(EnumRes.SUCCESS.getCode());
        result.setMessage(EnumRes.SUCCESS.getMsg());
        result.setData(executeId);
        result.setWorkflow(workflow);
        return result;
    }

    /**
     * 获取已发布工作流拓扑。
     *
     * @return 工作流拓扑
     */
    public PublicWorkflowTopology getWorkflow() {
        return workflow;
    }

    /**
     * 设置已发布工作流拓扑。
     *
     * @param workflow 工作流拓扑
     */
    public void setWorkflow(PublicWorkflowTopology workflow) {
        this.workflow = workflow;
    }
}
