Skip to content

同步运行工作流

🔄 同步执行

此接口会等待工作流执行完成。如果超过服务器限制时长,会返回执行 ID 转为异步查询。

接口描述

同步执行指定的工作流,等待工作流执行完成后返回结果。如果执行时间超过服务器限制时长,则返回执行 ID(异步结果),可后续继续轮询查询。

请求方式

POST https://newapi.iflyrpa.com/api/rpa-openapi/workflows/execute

认证要求

需要带 BEARER TOKEN

请在请求头中添加:

Authorization: Bearer {YOUR_API_KEY}

请求头

字段名类型必填说明
Content-TypeStringapplication/json
AuthorizationStringBearer

请求体参数

参数名类型必填说明
project_idString工作流项目 ID
exec_positionString执行位置,通常为 "EXECUTOR"
paramsObject工作流参数,key-value 对象
versionInteger工作流版本号,不填默认运行当前启用版本

请求示例

json
{
    "project_id": "1939577693560815616",
    "exec_position": "EXECUTOR",
    "params": {
        "inputer": "查一下"
    }
}

响应格式

成功响应 (HTTP 200) - 执行完成

json
{
    "code": "0000",
    "msg": "",
    "data": {
        "execution": {
            "id": "a1897e55-1299-40dd-ab3d-343d3031f640",
            "project_id": "1939577693560815616",
            "status": "COMPLETED",
            "parameters": "{'inputer': '查一下'}",
            "result": "{'p_variable': '查到了'}",
            "error": null,
            "exec_position": "EXECUTOR",
            "version": 1,
            "user_id": "19dc80c8-8963-4431-9e8e-bdbc7bcee626",
            "start_time": "2025-07-02T10:46:15",
            "end_time": "2025-07-02T02:46:26"
        }
    }
}

成功响应 (HTTP 200) - 执行超时,返回异步结果

如果执行时间超过服务器限制时长,则返回执行 ID,此时只包含基本信息:

json
{
    "code": "0000",
    "msg": "",
    "data": {
        "execution": {
            "id": "a1897e55-1299-40dd-ab3d-343d3031f640",
            "status": "PENDING"
        }
    }
}

响应字段说明

顶层字段

字段名类型说明
codeString响应代码,"0000" 表示成功
msgString响应消息
dataObject返回的数据对象

data 字段

字段名类型说明
executionObject工作流执行信息对象

execution 字段(执行完成时)

字段名类型说明
idString执行 ID
project_idString工作流项目 ID
statusString执行状态(COMPLETED 或 FAILED)
parametersString工作流输入参数(JSON 字符串格式)
resultString执行结果(JSON 字符串格式,包含返回数据)
errorString错误信息,仅在失败时有值
exec_positionString执行位置
versionInteger工作流版本号
user_idString执行用户 ID
start_timeString开始时间(ISO 8601 格式)
end_timeString结束时间(ISO 8601 格式)

execution 字段(执行超时时)

字段名类型说明
idString执行 ID,可用于后续异步查询
statusString执行状态(PENDING 表示仍在运行)

说明

  • 此接口为同步调用,会阻塞等待工作流执行完成
  • 如果工作流执行时间超过服务器限制时长,则返回执行 ID 和 PENDING 状态
  • 当返回 PENDING 状态时,可使用执行 ID 调用"获取工作流运行结果"接口继续查询
  • parametersresult 字段为 JSON 字符串格式,需要解析为对象才能使用
  • params 参数中的键必须与工作流定义中的参数名称匹配
  • 建议为同步调用设置合理的超时时间(如 30-60 秒)

代码示例

cURL

bash
curl -X POST "https://newapi.iflyrpa.com/api/rpa-openapi/workflows/execute" \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer {YOUR_API_KEY}" \
  -d '{
    "project_id": "1939577693560815616",
    "exec_position": "EXECUTOR",
    "params": {
        "inputer": "查一下"
    }
  }'

Python

python
import requests
import json

url = "https://newapi.iflyrpa.com/api/rpa-openapi/workflows/execute"
headers = {
    "Content-Type": "application/json",
    "Authorization": "Bearer {YOUR_API_KEY}"
}
data = {
    "project_id": "1939577693560815616",
    "exec_position": "EXECUTOR",
    "params": {
        "inputer": "查一下"
    }
}

response = requests.post(url, headers=headers, json=data, timeout=60)
result = response.json()
print(result)

execution = result['data']['execution']
status = execution['status']
execution_id = execution['id']

if status == "COMPLETED":
    print("✓ 工作流已完成")
    # 解析结果字符串为对象
    parameters = json.loads(execution['parameters'])
    result_data = json.loads(execution['result'])
    print(f"输入参数: {parameters}")
    print(f"执行结果: {result_data}")
elif status == "FAILED":
    print("✗ 工作流执行失败")
    result_data = json.loads(execution['result'])
    print(f"错误信息: {result_data}")
elif status == "PENDING":
    print("⏳ 工作流执行超时,返回异步结果")
    print(f"执行 ID: {execution_id},可稍后查询结果")

JavaScript

javascript
const apiKey = "{YOUR_API_KEY}";
const url = "https://newapi.iflyrpa.com/api/rpa-openapi/workflows/execute";

const data = {
    "project_id": "1939577693560815616",
    "exec_position": "EXECUTOR",
    "params": {
        "inputer": "查一下"
    }
};

fetch(url, {
    method: "POST",
    headers: {
        "Content-Type": "application/json",
        "Authorization": `Bearer ${apiKey}`
    },
    body: JSON.stringify(data)
})
  .then(response => response.json())
  .then(result => {
    console.log(result);
    
    const execution = result.data.execution;
    const status = execution.status;
    const executionId = execution.id;
    
    if (status === "COMPLETED") {
      console.log("✓ 工作流已完成");
      const parameters = JSON.parse(execution.parameters);
      const resultData = JSON.parse(execution.result);
      console.log("输入参数:", parameters);
      console.log("执行结果:", resultData);
    } else if (status === "FAILED") {
      console.log("✗ 工作流执行失败");
      const resultData = JSON.parse(execution.result);
      console.log("错误信息:", resultData);
    } else if (status === "PENDING") {
      console.log("⏳ 工作流执行超时,返回异步结果");
      console.log(`执行 ID: ${executionId},可稍后查询结果`);
    }
  })
  .catch(error => console.error("Error:", error));