仿真运行
基于 WebSocket 的离散事件仿真控制与监控
仿真功能概览
当前版本的仿真体系已经从纯前端执行迁移为服务端驱动: 前端负责建模、动画与交互,仿真逻辑通过 WebSocket 推送到后端引擎执行, 并实时同步状态、运行日志与告警。
服务端仿真引擎
仿真由 Node.js/原生引擎执行,统一处理脚本运行、事件推进与安全隔离,避免浏览器性能瓶颈。
会话与数据同步
启动前自动捕获当前项目视图、脚本与 API 绑定,确保后端会话始终使用最新快照。
可视化反馈
UI 桥接器实时渲染激活状态、动画与通知;运行日志面板、黑板和消息总线用于观察细节数据。
运行前准备
- 启动智绘服务并登录:使用
npm run dev、npm start或部署环境的启动脚本,确保浏览器中完成登录获取令牌。 - 加载要仿真的项目:打开或创建模型,确认脚本在编辑器中保存(建议按 Ctrl/Cmd + S 同步)。
- 确认仿真服务连接:页面加载后几秒内会弹出 “仿真服务已连接” 提醒;若出现警告,请检查后台服务或网络配置。
启动与控制
仿真控制按钮位于主工具栏右侧,支持鼠标操作与快捷键:
- 按 F5 或点击 运行/停止 按钮即可启动仿真;首次运行会自动创建会话并上传最新项目快照。
- 仿真开始后会弹出 “仿真已启动” 通知,并自动展开运行日志面板显示后端输出。
多轮仿真
多轮仿真对话框会贴靠在工具栏右侧,通过编排器串行地重复运行同一模型,帮助评估稳定性与统计结果。
配置参数
点击工具栏上的 多轮仿真 图标后会弹出悬浮面板,可在其中设置以下项目:
- 轮数:默认 10,允许 1–9999,表示连续运行的次数。
- 每轮超时 (s):默认 120 秒,到达阈值仍未自动停止时编排器会强制停止该轮。
- 轮间延时 (ms):默认 500 毫秒,用于在每轮之间留出缓冲时间。
- 出错策略:可选 “遇错继续” 或 “遇错停止”,控制出现异常后的后续行为。
执行流程
- 调整参数后,点击对话框右上角的 开始 图标。按钮会切换为停止样式并禁用表单字段。
- 编排器自动确保会话就绪、上传最新模型,再逐轮启动仿真。运行和暂停主按钮在期间会被锁定,避免手动干预。
- 底部的 进度提示 会实时显示 “准备 / 启动 / 运行中 / 收尾” 等状态,同时将详情写入运行日志。
- 若需要中止,再次点击同一按钮即可发送终止指令,并在进度区显示 “已中止”。
- 全部完成后,进度提示会总结成功/失败次数与平均耗时,面板恢复为可编辑状态。
多轮仿真配置对话框
监控与可视化
运行日志(Simulation Console)
运行日志面板在启动时自动弹出,集中展示后端返回的状态消息、脚本输出与错误告警,便于第一时间定位问题。
- 实时分级:不同级别(info/warn/error/script)采用独立配色,关键事件自动置顶。
- 常用操作:支持“清空”“复制全部”“快速折叠”三种操作,适合保留或共享运行日志。
- 历史保留:最多缓存 500 条记录,超过部分自动滚动并丢弃最早信息。
运行日志:查看实时输出与告警
黑板数据(Blackboard)
黑板侧边栏用于集中展示仿真过程中的共享数据,可通过 查看 → 黑板数据 或快捷键 Ctrl/Cmd + B 打开。
- 数据视图:按照全局变量、对象状态、自定义指标分类显示,支持折叠分组。
- 快速定位:提供关键字过滤与高亮,能在复杂模型中迅速找到关键信息。
- 脚本联动:黑板读取/写入接口与仿真脚本一致,适合做运行时计数与条件触发。
黑板数据:集中查看共享变量与对象状态
消息总线(Message Bus)
若后端启用了消息总线接口,可通过 查看 → 消息总线 或 Ctrl/Cmd + Shift + M 打开事件监控面板。
- 通道概览:按通道分类展示发送、消费、待处理数量,并给出最新时间戳。
- 调试工具:内置搜索过滤、刷新、清空操作,适合分析异步流程或跨脚本通信。
- 实时更新:与仿真 WebSocket 同步推送,可在批量仿真期间持续观察消息趋势。
消息总线:监控脚本间的事件流
常见问题
仿真服务未连接
可能原因:
- 后端服务未启动或端口被防火墙阻断。
- 登录状态失效,令牌无法通过鉴权。
- 浏览器阻止了 WebSocket 连接(HTTPS/证书配置错误)。
解决方法:
- 确认
npm start或 Docker 服务正在运行,查看服务器日志。 - 刷新页面重新登录,确保收到 “仿真服务已连接” 提示。
- 在浏览器开发者工具的 Network → WS 页面检查握手失败原因。
启动后立即自动停止
可能原因:
- 事件队列在初始状态即为空(模型没有可执行流程)。
- 脚本抛出异常或守卫条件全部返回
false。 - 仿真超时或触发了后端的自动停止策略。
解决方法:
- 检查初始状态设置,确保至少有一个过程/对象被激活。
- 打开运行日志,查看是否有脚本错误或条件不满足的提示。
- 适当延长多轮仿真超时时间或在脚本中输出更多诊断信息。
控制台没有任何输出
可能原因:
- 脚本未被触发,或日志被条件过滤掉。
- 仿真尚未真正启动(仍处于未连接/未创建会话状态)。
- 控制台被手动关闭或消息被清空。
解决方法:
- 确认流程确实执行,必要时在脚本开头临时加入
console.log。 - 观察通知消息以及工具栏按钮状态,确保仿真已进入运行阶段。
- 点击工具栏中的“运行日志”按钮或重新启动仿真以自动展开窗口。
最佳实践
逐步验证
先在小范围内验证核心流程,再逐步叠加脚本与复杂逻辑,避免一次性排错困难。
使用版本控制
将模型与脚本纳入 Git 等版本管理,关键节点打标签,方便回滚和协作。
保持清晰日志
在关键脚本节点输出结构化日志,并同步到黑板或消息总线,便于后续排查。
强化错误处理
脚本中使用 try/catch 捕获异常,将错误原因写入控制台和黑板,避免无提示失败。
多轮验证
通过多轮仿真或不同随机种子观察统计变化,及时发现偶发问题或性能瓶颈。
记录配置
为重要仿真运行记录参数、版本与结论,形成可追踪的实验手册。
下一步
熟悉仿真运行后,推荐继续探索: