平台数据接口
ForeSimCommonScriptManager(脚本变量 fcs)提供访问平台通用能力的接口,最常用于读取自定义数据表,将业务配置注入脚本流程。
getTableData
getTableData(tableName: string): {
name: string;
columns: {name: string; type: string}[];
rows: Record<string, unknown>[];
};
- tableName:数据表名称,需与平台中创建的表一致。
- 返回值:包含表名、列定义和行数据。若表不存在会触发平台弹窗提示,同时返回
undefined。
示例:
const jobTable = fcs.getTableData('AGV_JOBS');
if (!jobTable) {
throw new Error('未找到任务表 AGV_JOBS');
}
for (const row of jobTable.rows) {
console.log(`任务 ${row.jobId} -> 起点 ${row.startPoint} 终点 ${row.endPoint}`);
}
配合脚本的典型流程
- 读取配置:从数据表中获取路径点、载荷类型、优先级等业务参数。
- 执行脚本:根据表数据调用
agvManager或agvBoxManager。可将表行映射为任务队列。 - 结果回写(可选):如需记录执行状态,可结合 API 扩展或将数据同步到外部系统。
最佳实践
- 数据校验:在使用表数据前先判断必填列是否存在,避免脚本运行时再报错。
- 缓存策略:对于不频繁变化的表,可在脚本启动时读取一次并缓存到全局对象,提高性能。
- 结合调度系统:
通过简单筛选即可实现任务派发。
const jobs = fcs.getTableData('AGV_JOBS')?.rows ?? [];
const pending = jobs.filter(job => job.status === 'planned');
常见问题
| 问题 | 解决方案 |
|---|---|
返回 undefined | 确认表名准确,注意大小写;检查用户是否有权限访问该表。 |
| 数据类型不匹配 | 数据表列类型应与脚本预期一致,例如数值型列不要存储字符串。 |
| 多脚本共享数据 | 可在脚本间约定统一的缓存模块或使用平台提供的全局状态进行互通。 |
利用 fcs 可以让动画脚本与业务数据打通,支撑更复杂的调度与展示需求。