今天在做庫存管理程式時,原以為簡單的倉庫盤點,卻發現要支援錯誤修正時,要增加很大的工作量。原因在於原來的開發使用「事務指令碼」模式進行開發。原來只要支援:凍結,盤點,解凍,這幾個動作,為這內個動作各寫乙個事務指令碼也就簡單解決了。當要支援編輯及修正盤點資料時,一般使用記錄修改模式進行開發,這樣編輯介面會比較友好,此時因為涉及歷史資料的修正, 平常我常用這兩種方式解決:1、使用觸發器方式來實現歷史記錄的同步修改。2、用批更新方式放入乙個事務中完成。但這樣對於許可權操作來說,不好定義。
這次,我延續「事務指令碼」的思路,將編輯及修正盤點資料的動作歸納為幾個操作:解凍歷史資料->重新修正當次盤點結果->修正結束重新凍結 , 這樣就需要增加兩個事務指令碼(解凍歷史資料,修正結束重新凍結)及乙個編輯介面(重新修正當次盤點結果),避免了使用觸發器容易引起其他模組的異常,用批更新方式未能定義修正過程及許可權上的混亂。編輯介面因為使用記錄行修改模式進行,重用「記錄行修改模式」就能很也地完成工作。
在關係式資料庫開發中,因為開發工具(.net 或 vcl )的原因,很難使用「領域模型」來進行開發,因為那樣工作量太大了,規劃好資料及其操作後,使用資料集模式結合事務指令碼來開發,是比較適合的方式,也能達到良好的程式碼重用效率。
注:是否允許修正歷史封存資料 ,那是另外乙個話題 ,因為要支援允許回溯修改3個月內的歷史資料,才有這次程式的修改。也認識到以前那種規則:一旦封存不許修改並不是一成不變的,雖然修改影響到很多很多問題,但檢驗的標準是實踐,而不是其他。錯了就是錯了,不許改正只許修補的庫存理念是不行的。
在程式中啟用事務
在專案中很多時候都要用到事務,比如新增一條商品,要把這麼商品的關鍵字插入到關鍵字表裡去 首先執行一和sql,如果執行失敗則馬上返回。否則開始事務執行下面的語句.int i new command executenonquery 如果執行失敗則直接返回 if i 0 return false.開啟事務...
expect命令在shell指令碼中的應用
在shell程式設計中,經常會用到命令的互動,此時就需要在shell中巢狀expect命令 單獨使用expect語法參考該文。例1 test.sh中內容 bin sh echo begin echo 是shell語法 注意 例2 例3 可以連續多次使用 spawn 命令,即使沒有互動也可以用,當然沒...
Mybatis 在CS程式中的應用
如果是自己用的mybatis,不需要考慮對配置檔案加密,如果不是,那就需要考慮加密,這篇文章主要講如何配置cs的mybatis。mybatis的xml配置檔案正常如下 為了防止資料庫使用者名稱密碼洩漏,我將xml進行雙向加密,變成了乙個位元組檔案,而且檔名字尾隨意。例如 basic.data,內容區...