modelTp== 2, 搜索題目
modelTp==3, 組卷
modelTp== 4 顯示5個模塊, 每個模塊幾道題
modelTp== 1, 點擊樹節點,顯示html格式的題目
點擊計時器結束按鈕,
彈出UploadDialog對話框,框有個函數InstantSaveAsync,字面意思:立即上傳
{
1. PrepareUpload, 返回CommonExam, 該考試裏面最重要成員List<CommonStudent> students, 該學生重要成員爲:
strokesFile, scoreFile, 筆跡文件和得分文件
每次上傳會創建一個目錄,yyyyddMMHHmmss
然後遍歷每個學生, 對每個學生:
a 產生筆跡文件,stroke_guid.dat, 筆跡序列化到文件中
b 產生得分文件,score_guid.dat, 題目和分數信息序列化到文件中
c 保存該學生的考試信息,POST 到api/student-examines, 考試狀態爲PARTIAL
最後返回一個CommonExam,包含上傳到雲端的一些信息, 包括筆跡前綴, 得分前綴, 上傳文件的本地路徑等等
2. UploadToAliServer
a 遍歷每個學生,把筆跡文件和得分文件上傳到雲端
b 把這次考試對象上傳到服務器, api/examines/update_status, 該考試的狀態爲EVALUATE
注意: EVALUATE和PARTIAL分別是對應考試和學生的, 不要搞混了,考試也有PARTIAL狀態,從識別服務到數據庫改考試爲PARTIAL
}
============================================================================
服務器端,
在session的Initialize函數中創建識別對象
創建連接工廠ConnectionFactory, 這是連接到RabbitMQ用的。
獲取到連接對象之後,再創建一個RecogMessageReceiver對象。在對象的構造函數中,
先從連接對象獲取到一個channel,用這個channel聲明一個隊列,QueueDeclare
然後構造一個EventingBasicConsumer消費者對象,爲該對象添加一個接收消息處理器OnReceiver
相關數據結構,
api/examines/update_status, 收到Examine對象,從服務器中找出該考試,然後更新考試的狀態爲EVALUATE