|
@@ -0,0 +1,81 @@
|
|
|
+# revit-algorithm 服务补充文档
|
|
|
+
|
|
|
+# 项目结构
|
|
|
+ 主要分为两大块, 一个是后台基于springboot scheduling的后台处理线程, 一个是对外接口
|
|
|
+ 使用的pg数据库 datacenter库revit模式和revit_calc模式
|
|
|
+
|
|
|
+# 依赖的服务
|
|
|
+ 1. 文件服务(带有分块上传接口): 主要上传和下载 模型文件, 模型报告, 模型底图, 模型导出json的zip数据
|
|
|
+ 2. 调度器: 将模型转发给调度器处理, 包括检查和导出数据
|
|
|
+ 3. 消息中心: 发送通知, 刷新类消息
|
|
|
+ 4. 数据中心: 将模型的数据(主要是元空间, 设备, 部件)同步给数据中心
|
|
|
+
|
|
|
+# 后台scheduling服务
|
|
|
+
|
|
|
+ 1. 跟后台scheduling相关的包基本都在 cn.sagacloud.server.algorithm.backstage里
|
|
|
+ 2. 其中state包里, 是模型文件的各种状态, 都实现了ModelState接口
|
|
|
+ ModelState接口 提供了prepareModel 函数, 主要用来做当前状态处理的准备工作
|
|
|
+ handle 函数, 主要用来处理当前状态的主业务流程
|
|
|
+ 3. state包里的类, 名字结尾的数字表示模型当前的状态
|
|
|
+ 0 : 初始状态
|
|
|
+ 主流程: 将处在0状态时间超过1天的模型删除
|
|
|
+
|
|
|
+ 1 : 上传完成状态
|
|
|
+ 将模型依次发送到模型调度器处理(模型检查任务), 进入状态10
|
|
|
+
|
|
|
+ 10 : 等待调度器处理状态
|
|
|
+ 调用调度器接口查询模型处理结果, 如果未处理完则继续等待, 如果已处理完成则做进一步检查
|
|
|
+ 检查调度器返回的模型检查结果是否符合模型建模规范, 全部正确则进入状态2
|
|
|
+ 如果不符合规范, 则进入状态11
|
|
|
+
|
|
|
+ 11 : 模型检查失败状态
|
|
|
+ 直接删除模型, 并将模型所在的楼层版本回退到上一个版本
|
|
|
+
|
|
|
+ 2 : 初步检查通过状态
|
|
|
+ 将模型依次发送到模型调度器处理(模型数据导出任务), 进入状态20
|
|
|
+
|
|
|
+ 20 : 等待模型导出状态
|
|
|
+ 调用调度器接口查询模型处理结果, 如果未处理完则继续等待, 如果已处理完成则进入状态3
|
|
|
+ 如果调度器导出模型数据失败, 则进入状态21
|
|
|
+
|
|
|
+ 21 : 模型导出数据失败状态
|
|
|
+ 同11状态
|
|
|
+
|
|
|
+ 3 : 模型核心处理状态
|
|
|
+ 1). 模型数据提取, 获取在文件服务器(Ali OSS)中存放的模型jsonz数据, 解压并解析成对象, 然后保存到数据库revit模式内
|
|
|
+ 2). 多模型检查, 把当前模型跟上下楼层模型之间做检查(轴网检查, 标高检查)
|
|
|
+ 3). 同步模型数据到数据中心(设备, 部件, 模型空间)
|
|
|
+ 4). 记录同步数据过程中的增删日志
|
|
|
+ 如果以上流程出现程序异常, 则进入31状态
|
|
|
+
|
|
|
+ 31 : 模型数据处理失败状态
|
|
|
+ 在31状态一定的时间之后, 将模型状态切换到3
|
|
|
+
|
|
|
+ 4 : 模型完成状态
|
|
|
+ 给模型文件版本号
|
|
|
+ 计算因为模型空间的改变而受到影响的业务空间, 并给业务空间设置标记
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+# 注意事项, 常见问题
|
|
|
+ 1. 如果出现模型上传之后报错需要删除模型重新上传的情况, 使用model-file/delete-file接口删除模型
|
|
|
+
|
|
|
+ 2. 如果模型出现问题, 可以看一下模型文件表的sync_error_msg列的错误信息, 如果有的话
|
|
|
+
|
|
|
+# 表
|
|
|
+ model_file 模型表
|
|
|
+ model_floor 楼层表
|
|
|
+ model_folder 文件夹表
|
|
|
+ model_monitor 模型文件处理流程监控表
|
|
|
+ sync_log 同步数据到数据中心的日志表
|
|
|
+ 其他为模型构件信息表
|
|
|
+
|
|
|
+# 打包
|
|
|
+ gradle 视图里找到 --> 项目名称 --> Tasks --> other -->
|
|
|
+ buildDevJar : 构建dev环境的jar包
|
|
|
+ buildDevWar : 构建dev环境的war包
|
|
|
+ buildProdJar : 构建prod环境的jar包
|
|
|
+ buildProdWar : 构建prod环境的war包
|
|
|
+ 以上是在项目内的build.gradle文件内部写的 groovy 脚本, 可以根据需要更改
|
|
|
+
|