跳到主要内容

脚本提交与执行结果

脚本在指定实例内运行,可读取或修改运行对象。当前契约是 POST 提交 + GET 查询:首次提交返回 HTTP 202 和 executionId,重放返回 HTTP 200 与当前执行快照。不能将 HTTP 200/202 等同脚本成功。

提交方式​

INLINE 的 source 必须恰好含 type=INLINE 和 code;NAMED 必须恰好含 type=NAMED 和 scriptName。两种方式互斥。NAMED 使用当前场景确实存在的 Groovy Script 精确名称,不自动创建脚本。

entityName 可选。INLINE 省略时没有执行对象;NAMED 省略时采用 Script 已配置的 owner。parameters 省略或 null 等同空对象,在脚本中通过 params 读取。代码最长 65536 字符,参数与结果各最多 65536 UTF-8 字节;实例配额以 capabilities.scripts 为准。

? 表示执行对象,@ 表示该对象的 Cont。缺少对象或载荷时须判空;不要以内部绑定名替代占位符。测试页的最小 INLINE 示例仅返回 params.message。

状态与结果​

status解释下一步
QUEUED已受理使用相同 executionId 查询
RUNNING仍在执行或等待仿真事件有限轮询,检查仿真暂停或动画背压
SUCCEEDED实际执行成功读取 result,null 也是有效值
FAILED编译、执行或结果转换失败查看 error.code / error.message,保留请求与实例标识
CANCELLED执行被服务端取消检查资源释放与实例状态

GET 返回 code=OK 只表示成功读取执行记录。若 data.status=FAILED,应按 data.error 处理。SCRIPT_COMPILATION_FAILED、SCRIPT_EXECUTION_FAILED、SCRIPT_RESULT_UNAVAILABLE 可出现在执行记录中;先前副作用不会自动回滚。资源释放后历史不能再读取。

幂等与等待​

提交必须提供 8~128 个可打印 ASCII 字符的 Idempotency-Key。同实例、同键、同 source/entityName/parameters 重放已有执行;同键不同参数返回 IDEMPOTENCY_KEY_REUSED。执行未结束时换新键可能返回 SCRIPT_EXECUTION_IN_PROGRESS。

当前请求没有 waitForResult 字段;跟踪结果应调用下方 GET。浏览器取消或网络超时不能取消服务端脚本。等待仿真时间的脚本可能受暂停与背压影响。

接口参考与调用示例​

以下为结构示例,未代表当前环境实测。路径中的标识和请求变量使用本次响应或获授权的配置。

提交脚本执行​

POST /simulation/openapi/v1/simulations/{simulationId}/script-executions

runtimeAvailable=true,状态为 READY、RUNNING、PAUSED 或 COMPLETED;脚本可修改当前实例,不能假定自动回滚。

在测试页打开 →

请求参数

认证头 X-Foresim-Api-Key 由调用方服务端添加;可选 X-Request-Id 用于关联请求。当前接口没有查询字符串参数。

位置字段类型必填与说明
pathsimulationIdstring必填。本次创建返回的实例编号
headerIdempotency-Keystring必填。8~128 个可打印 ASCII 字符;重试同一操作必须复用原键和原参数
字段类型与约束必填说明
source互斥结构是恰好选择 INLINE(type + code) 或 NAMED(type + scriptName)
entityNamestring / null
minLength=0,maxLength=256
否精确对象名;脚本或场景表查询中可省略,含义见对应章节
parametersobject / null否脚本 params;省略/null 等同 {},最多 65536 UTF-8 字节

请求示例

双花括号是测试页变量,发送时替换;下列模板尚未发送。

POST /simulation/openapi/v1/simulations/{simulationId}/script-executions
X-Foresim-Api-Key: <api-key>
Accept: application/json
Idempotency-Key: <new-operation-key>
Content-Type: application/json

{
"source": {
"type": "INLINE",
"code": "return params.message"
},
"parameters": {
"message": "Hello ForeSim"
}
}

成功响应结构

首次成功 HTTP 202;相同幂等请求重放为 HTTP 200,并返回 Idempotent-Replayed: true。外层 code=OK。下方是结构示例,值与空数组不代表实测数据。

{
"code": "OK",
"message": "Success",
"requestId": "example_request",
"data": {
"executionId": "example_executionId",
"status": "QUEUED",
"sourceType": "INLINE",
"scriptName": null,
"entityName": null,
"submittedAt": "2026-01-01T00:00:00Z",
"startedAt": null,
"completedAt": null,
"result": null,
"error": null
}
}
展开完整响应字段定义
字段类型与约束必填说明
executionIdstring是本实例脚本提交返回的编号
statusstring
QUEUED / RUNNING / SUCCEEDED / FAILED / CANCELLED
是见字段结构
sourceTypestring
INLINE / NAMED
是见字段结构
scriptNamestring / null是见字段结构
entityNamestring / null是精确对象名;脚本或场景表查询中可省略,含义见对应章节
submittedAtstring (date-time)是见字段结构
startedAtstring (date-time) / null是见字段结构
completedAtstring (date-time) / null是见字段结构
result互斥结构 / null是见字段结构
errorobject / null是见字段结构

典型失败与下一步

401 检查服务端凭证;403 检查来源和实例归属;400 检查 details 中的字段;409 检查状态、幂等键或名称歧义;410 表示资源已释放;429 按 Retry-After 停止并等待。保留实际 requestId。

{"code":"INVALID_REQUEST","message":"Invalid request","requestId":"example_error","details":[{"field":"request","reason":"检查必填字段和前置状态"}]}

错误示例仅说明报文结构,具体错误码见 错误处理。下一步:查询脚本执行结果。

查询脚本执行结果​

GET /simulation/openapi/v1/simulations/{simulationId}/script-executions/{executionId}

使用本实例提交返回的 executionId;运行资源尚未释放。

在测试页打开 →

请求参数

认证头 X-Foresim-Api-Key 由调用方服务端添加;可选 X-Request-Id 用于关联请求。当前接口没有查询字符串参数。

位置字段类型必填与说明
pathsimulationIdstring必填。本次创建返回的实例编号
pathexecutionIdstring必填。本实例脚本提交返回的编号

无请求体,不发送空 JSON 代替省略。

请求示例

双花括号是测试页变量,发送时替换;下列模板尚未发送。

GET /simulation/openapi/v1/simulations/{simulationId}/script-executions/{executionId}
X-Foresim-Api-Key: <api-key>
Accept: application/json

成功响应结构

首次成功 HTTP 200;外层 code=OK。下方是结构示例,值与空数组不代表实测数据。

{
"code": "OK",
"message": "Success",
"requestId": "example_request",
"data": {
"executionId": "example_executionId",
"status": "QUEUED",
"sourceType": "INLINE",
"scriptName": null,
"entityName": null,
"submittedAt": "2026-01-01T00:00:00Z",
"startedAt": null,
"completedAt": null,
"result": null,
"error": null
}
}
展开完整响应字段定义
字段类型与约束必填说明
executionIdstring是本实例脚本提交返回的编号
statusstring
QUEUED / RUNNING / SUCCEEDED / FAILED / CANCELLED
是见字段结构
sourceTypestring
INLINE / NAMED
是见字段结构
scriptNamestring / null是见字段结构
entityNamestring / null是精确对象名;脚本或场景表查询中可省略,含义见对应章节
submittedAtstring (date-time)是见字段结构
startedAtstring (date-time) / null是见字段结构
completedAtstring (date-time) / null是见字段结构
result互斥结构 / null是见字段结构
errorobject / null是见字段结构

典型失败与下一步

401 检查服务端凭证;403 检查来源和实例归属;400 检查 details 中的字段;409 检查状态、幂等键或名称歧义;410 表示资源已释放;429 按 Retry-After 停止并等待。保留实际 requestId。

{"code":"INVALID_REQUEST","message":"Invalid request","requestId":"example_error","details":[{"field":"request","reason":"检查必填字段和前置状态"}]}

错误示例仅说明报文结构,具体错误码见 错误处理。下一步:查询实例状态。