导入运行记录
把在另一套安装上记录的 .glab 文件收进这个归档,成为一条独立、可完整追溯的条目:验证什么、副本会得到什么,以及它永远得不到什么。
导入控件在运行记录列表的标题栏里,紧挨着刷新,它接受一个在另一套安装上记录的 .glab 文件(见导出一次运行记录)。这个控件只对具备导出/导入历史权限的角色画出来;别的角色看到的列表标题栏上没有它。它需要一台接受写入的工作站(“工作站处于只读状态。”),因为它要发布一个运行记录文件和一条索引行;这一条上还有别的动作在跑时它是灰的(“上一条命令还没有跑完。”)。
验证什么
文件先以流式写入一份临时副本(上传上限为 1 GB;操作记录条写着“正在导入 · 文件…”),并在那里先做验证。被拒绝时不会产生任何条目:
| 拒绝的说法 | 什么时候 |
|---|---|
| 选中的文件为空或读不出来。 | 上传的内容为空或无法读取。 |
| 选中的文件不是 Ganter Lab 的运行记录文件。 | 文件里没有运行记录文件的结构历史。 |
| 这个文件由更新的或不兼容的 Ganter Lab 版本创建,无法导入。 | 运行记录文件的格式来自更晚的版本或不兼容。 |
| 选中的文件不是可读的 Ganter Lab 运行记录文件。 | 不是 SQLite 数据库,或者数据库已损坏。 |
回执与发布出来的副本
来自受支持的较早基线的文件,只在临时副本上升级;收到的那个文件从不被改动。副本随后把自己的导入回执,也就是导入时刻和收到的文件名,盖进自己里面,因此这份档案永远说得出这次运行是从哪里来的,重建索引也能把已导入标记恢复回来;从另一台工作站再导出的副本带的是那台工作站的回执,而这份副本的来历就是它到这里来的这一次。工作站会以一个唯一的名字发布一份全新的本地副本(Imported_<run name>_<id>.db),并登记一条新的、独立的条目;操作记录条写着“已导入 · 名称 · 来自文件(大小)”,列表随即定位到它。
副本会得到什么,永远得不到什么
- 导入进来的运行记录会拿到一个全新的本地标识;原来的运行记录 id 作为证据留在文件里,因此两套安装可以互相交换运行记录而不冲突。
- 它永远不会和本地配置挂钩,哪怕本地存在同名的流程:它不属于任何单元,它的流程为空,它无法继续,它永远不计入本地产量,它不为新建标签配置任何标签,而且“(流程的报告)”会用包含全部小节的默认版式来排它。
- 它的状态就是冻结在文件里的那个终态:被联锁结束的运行记录导入后是已中止,而冻结下来的非终态状态会被收拢为已完成。从来没有写下快照的文件(源工作站在运行中途死机)会以一条按文件命名的失败运行记录导入,这样它就不会丢。
- 什么都不会被覆盖或合并:同一个文件导入两次,得到两条互相独立的条目。
- 责任人作为冻结下来的证据随副本一起走。在用户名册相同的工作站上,冻结下来的身份仍然指向同一个操作员;在别处,它写出那个人的名字,但不与任何本地用户匹配。
使用导入进来的运行记录
导入之后,这条运行记录和别的一样可以浏览、写备注、加标注和再次导出,它的标签产物和报告登记也一并跟来:一件产物冻结下来的字节可以在这里重新打印,而一条登记所指的已发布 PDF 并不在这台工作站上,因此只有源工作站把副本保留在运行记录里时,它才能被打开或重发;否则就从文件重新生成一份 PDF。
如果应用在导入中途停止
如果应用正好在发布文件和登记它之间那一小段时间里停止,文件不会丢:设置里的重建运行历史索引会重新扫描运行记录文件,它们才是准据,并把它的条目还回来。