架構圖
做法1 優:Database Server 負擔較輕 缺:需確保在修改藥局工作狀態時,不會有第二筆資料突然插入修改
做法1所需 SeqNo:流水號 getStatus:取得藥局工作狀態 setStatus:設定藥局工作狀態 getSeqNo:取得流水號 流水號範例:00100001 每一筆領藥需求流水號加1 每一筆修改工作狀態流水號加10萬,以確認修改過藥局的工作狀態 getStatus:取得藥局工作狀態 setStatus:設定藥局工作狀態 getSeqNo:取得流水號 F ( SeqNo , getStatus ):運算出實際領藥號
做法1-內部運作方式 AP Server不段的從DB Server取得流水號及藥局工作狀態,利用公式算出實際領藥號,之後將結果傳回診間及藥局
做法1-診間取得藥號流程 診間發出領藥需求 DB Server將流水號加1 AP Server利用f函式運算出領藥號 回應診間實際領藥號,並到藥局發出配藥需求
做法1-修改藥局工作狀態 從DB Server取得目前工作狀態表及流水號10萬位數的數目 Ex: 00300025,就是3 修改完後傳回DB Server,先比對流水號10萬位數的數目確認與修改的版本是否相同 是:修改成功 否:拒絕要求,因為可能有其它電腦先行修改了,必需重新取得目前工作狀態後方得修改
做法2 優: 缺: 不會發生修改了工作狀態回傳後被拒絕的情況 領藥號取得較為簡便 若有大批藥單需求在修改前產生,可能必須等待一段時間,才會依照新的工作狀態來做 集中式在DB Server做處理,可能造成DB Server負擔
做法2內部運作方式 DB Server不斷的從所有流水號中,依目前藥局的工作狀態來做藥號的分配 分配完之後變將藥號和藥單分別,傳回診間及藥局
做法2診間取得藥號流程 診間發出領藥需求 DB Server將流水號加1 等待DB Server做完處理回傳,取得領藥號
做法2-藥局修改工作狀態(1) 直接連上DB Server修改工作狀態的table Ex: A o B x C D E 1 o 2 x 3 4
做法2-藥局修改工作狀態(2) DB Server按照其工作狀態內容運算出領藥號 Ex: 00001 1001 00002 1002 00003 1003 00004 1004 00005 1005