關於J2EE專案中存在的問題,請各位給與解惑,先謝了!

liaowufeng發表於2005-07-10
問題是這樣的:
系統簡化的可分為三個角色:
1 學生使用者
2 院系使用者
3 研院使用者
每一種角色使用者至少有10人以上。

那請問以下:
1 由於院系的工作人員有10人,每個人都有登入系統的帳號,同可以在不同的工作區同進登入
且每個人都可以給同一個學生填寫稽核結果,那麼,
當院系A工作人員正在給一名學生填寫稽核結果,還沒有提交(指沒有提交給服務端)時,
有院系B工作人員又給同一名學生填寫稽核結果,
當A工作人員這時將稽核結果為“透過”提交。
那B工作人員再提交,將會覆蓋過A工作人員的結果,要避免這種情況,
那我的業務羅輯程式的程式碼是不是要這麼寫呢?

方式1 填寫院系稽核結果邏輯
院系稽核結果變數=從資料庫中取出院系稽核結果
IF 院系稽核結果變時 != 空 THEN
將院系稽核結果(使用者提交的)更新到資料庫
ELSE
Throws new 業務異常(“已有院系填寫了稽核結果,你不能再填寫”)
END IF

方式2 填寫院系稽核結果邏輯
將院系稽核結果(使用者提交的)更新到資料庫

哪一種比較好呢?
問題2 ,由於,院系工作人員一次稽核很多學生,所以我們在做系統介面時,將
在頁面上有多個學生的輸入框,一次向伺服器提交多個學生的稽核結果,
那當有多個院系工作人員同時使用系統,一次對多個學生提交稽核結果,
也會出現覆蓋結果的情況,我們的程式碼又如何寫呢?有兩種方式

方式1 對院系的一次提交的多個學生稽核結果作如下操作

FOR 多個學生稽核結果
院系稽核結果變數=從資料庫中取出院系稽核結果
IF 院系稽核結果變時 != 空 THEN
將院系稽核結果(使用者提交的)更新到資料庫
ELSE
記錄哪些學生稽核不成功
END IF
END FOR

返回給使用者,哪些已有院系填寫了稽核結果,你不能再填寫

方式2 FOR 多個學生稽核結果
將院系稽核結果(使用者提交的)更新到資料庫
END FOR
哪一種比較好呢?

第一種方式的程式設計是最好的,那麼,將出現要兩訪操作表問題,我每一次在更新前都得先訪問一次資料庫,得到資料庫的的記錄最新的資料,再根據資料的狀態,決定操作。
第二種,就直接更接操作,但會出現覆蓋資料的情況。

問一下,各位,你們在做這類的系統時,是如何解決這種,多個角色下多個使用者,操作同一個資料的業務問題。
萬分感謝!

相關文章