From 7d67ebe9cdef145439b5d6f39cf03340fddb67bb Mon Sep 17 00:00:00 2001 From: Rodney Chen <rodney.chen@hotmail.com> Date: 星期六, 03 五月 2025 18:54:02 +0800 Subject: [PATCH] 优化了一些已知问题 --- .gitignore | 1 Document/事务(Transaction)架构简介.md | 114 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 115 insertions(+), 0 deletions(-) diff --git a/.gitignore b/.gitignore index aa2e4af..a731d3c 100644 --- a/.gitignore +++ b/.gitignore @@ -6,6 +6,7 @@ *.user *.sln.docstates .vs/ +.vscode/ # Build results [Dd]ebug/ diff --git "a/Document/\344\272\213\345\212\241\050Transaction\051\346\236\266\346\236\204\347\256\200\344\273\213.md" "b/Document/\344\272\213\345\212\241\050Transaction\051\346\236\266\346\236\204\347\256\200\344\273\213.md" new file mode 100644 index 0000000..b059ad6 --- /dev/null +++ "b/Document/\344\272\213\345\212\241\050Transaction\051\346\236\266\346\236\204\347\256\200\344\273\213.md" @@ -0,0 +1,114 @@ +# Transaction缁撴瀯鍒嗘瀽 + +## 1. 浜嬪姟鍩虹鏋舵瀯 + +椤圭洰閲囩敤浜嗗垎灞傜殑浜嬪姟澶勭悊鏋舵瀯锛屼富瑕佸寘鎷互涓嬪嚑涓眰娆★細 + +### 1.1 鍩虹鎺ュ彛鍜岀被 +- **ITransaction鎺ュ彛**锛氬畾涔変簡鎵�鏈変簨鍔$殑鍩烘湰琛屼负鍜屽睘鎬э紝鍖呮嫭浜嬪姟ID銆侀攣鏈哄埗銆佸巻鍙茶褰曠鐞嗙瓑銆� +- **TransactionBase鎶借薄绫�**锛氬疄鐜颁簡ITransaction鎺ュ彛锛屾彁渚涗簡浜嬪姟鐨勫熀纭�鍔熻兘锛屽鍘嗗彶璁板綍绠$悊銆佷簨鍔″叧闂拰璧勬簮閲婃斁绛夈�� + +### 1.2 棰嗗煙鐗瑰畾浜嬪姟鎺ュ彛鍜屽熀绫� +- **IMESTransaction/IWMSTransaction鎺ュ彛**锛氱户鎵胯嚜ITransaction锛屼负鐗瑰畾棰嗗煙锛圡ES/WMS锛夊畾涔変簨鍔¤涓恒�� +- **MESTransactionBase/WMSTransactionBase绫�**锛氱户鎵胯嚜TransactionBase锛屽疄鐜颁簡棰嗗煙鐗瑰畾鐨勪簨鍔″熀纭�鍔熻兘銆� + +### 1.3 鍏蜂綋涓氬姟浜嬪姟绫� +- 鍚勭鍏蜂綋鐨勪笟鍔′簨鍔$被锛堝InReceipt銆丱utSale銆丩oadingMaterial绛夛級锛氱户鎵胯嚜棰嗗煙鐗瑰畾鐨勪簨鍔″熀绫伙紝瀹炵幇鍏蜂綋涓氬姟閫昏緫銆� + +## 2. 浜嬪姟绠$悊鏈哄埗 + +### 2.1 浜嬪姟鍒涘缓鍜岀鐞� +- **BizContext**锛氱淮鎶ゅ叏灞�鐨勪簨鍔″瓧鍏革紙TransactionDic锛夛紝绠$悊鎵�鏈夋椿鍔ㄧ殑浜嬪姟瀹炰緥銆� +- **WMSContext/MESContext**锛氱鐞嗙壒瀹氶鍩熺殑浜嬪姟锛屾彁渚涗簨鍔″垱寤哄拰鏌ヨ鍔熻兘銆� + +### 2.2 浜嬪姟鐢熷懡鍛ㄦ湡 +1. **鍒涘缓**锛氶�氳繃Controller璋冪敤鐩稿簲鐨処nit鏂规硶鍒濆鍖栦簨鍔★紝骞堕�氳繃Context.NewTransaction娉ㄥ唽鍒颁簨鍔″瓧鍏镐腑銆� +2. **浣跨敤**锛氶�氳繃浜嬪姟ID浠庝簨鍔″瓧鍏镐腑鑾峰彇浜嬪姟瀹炰緥锛屾墽琛屼笟鍔℃搷浣溿�� +3. **鍏抽棴**锛氳皟鐢–lose鏂规硶鍏抽棴浜嬪姟锛屽彲閫夋嫨鏄惁淇濆瓨鍘嗗彶璁板綍銆� +4. **閲婃斁**锛氶�氳繃Dispose鏂规硶閲婃斁璧勬簮锛屽苟浠庝簨鍔″瓧鍏镐腑绉婚櫎銆� + +## 3. 浜嬪姟鍚屾鍜屽苟鍙戞帶鍒� + +### 3.1 浜嬪姟閿� +- 姣忎釜浜嬪姟瀹炰緥閮芥湁涓�涓猅ransLock瀵硅薄锛岀敤浜庡悓姝ヨ闂�� +- 鍦–ontroller涓紝闈炲紓姝ユ搷浣滈�氳繃lock(trans.TransLock)纭繚浜嬪姟鎿嶄綔鐨勫師瀛愭�с�� + +### 3.2 瀹㈡埛绔敮涓�鎬ф帶鍒� +- 鍒涘缓浜嬪姟鏃跺彲浠ユ寚瀹欼sUniqueInSameClient鍙傛暟锛屾帶鍒跺悓涓�瀹㈡埛绔槸鍚﹀彧鑳芥湁涓�涓悓绫诲瀷鐨勪簨鍔°�� +- 濡傛灉璁剧疆涓簍rue锛屼細鍏抽棴鍚屼竴瀹㈡埛绔凡鏈夌殑鍚岀被鍨嬩簨鍔°�� + +## 4. 浜嬪姟鍘嗗彶璁板綍 + +### 4.1 鍘嗗彶璁板綍绠$悊 +- 浜嬪姟浼氳褰曟墍鏈堿PI璋冪敤鐨勫巻鍙诧紝鍖呮嫭璇锋眰鍜屽搷搴斾俊鎭�� +- 閫氳繃AddHistory鏂规硶娣诲姞鍘嗗彶璁板綍锛孲aveHistory鏂规硶灏嗗巻鍙蹭繚瀛樺埌鏂囦欢銆� + +### 4.2 鏃ュ織璁板綍 +- 浜嬪姟鎿嶄綔浼氳褰曡缁嗙殑鏃ュ織锛屽寘鎷垱寤恒�佸叧闂拰寮傚父鎯呭喌銆� +- 鏃ュ織鏂囦欢淇濆瓨鍦ㄥ簲鐢ㄧ▼搴忕洰褰曠殑Logs/Transaction鏂囦欢澶逛腑銆� + +## 5. 浜嬪姟瓒呮椂澶勭悊 + +- 绯荤粺閫氳繃閰嶇疆鏂囦欢璁剧疆浜嬪姟瓒呮椂鏃堕棿锛圱ransaction:TimeoutHours锛夈�� +- 浜嬪姟璁板綍鏈�鍚庢搷浣滄椂闂达紙LastActionTime锛夛紝鍙敤浜庡垽鏂簨鍔℃槸鍚﹁秴鏃躲�� + +## 6. 浜嬪姟浣跨敤妯″紡 + +### 6.1 Controller涓殑浜嬪姟浣跨敤妯″紡 +1. **鑾峰彇/鍒涘缓浜嬪姟**锛� + ```csharp + if (iBiz.WMS.Context.GetTransDic().ContainsKey(action.ID)) + { + trans = iBiz.WMS.Context.GetTransDic()[action.ID] as IInReceipt; + } + else + { + trans = AutoFacContainer.Instance.Resolve<IInReceipt>().Init(action.ID, action.Data?.USER_CODE, Request.Host.Value, action.Data?.ORG_CODE); + iBiz.WMS.Context.NewTransaction(HttpContext, trans); + } + ``` + +2. **鎵ц浜嬪姟鎿嶄綔**锛� + ```csharp + if (action.IsAsync) + { + response = action.GetResponse(await trans.ScanItem(action.Data)); + } + else + { + lock (trans.TransLock) { response = action.GetResponse(trans.ScanItem(action.Data).Result); } + } + ``` + +3. **璁板綍鍘嗗彶骞惰繑鍥炵粨鏋�**锛� + ```csharp + trans?.AddHistory(Request, action); + return Ok(response); + ``` + +### 6.2 浜嬪姟鍒濆鍖栨ā寮� +```csharp +public IInReceipt Init(string id, string userCode, string apiHost, string orgCode) +{ + TransID = id; + UserCode = userCode; + ApiHost = apiHost; + OrgCode = orgCode; + Logger.Console.Info($"Start {this.GetType().Name} Transaction[ID: {TransID}]"); + return this; +} +``` + +## 7. 浜嬪姟鐨勪紭鍔垮拰鐗圭偣 + +1. **鐘舵�佺淮鎶�**锛氫簨鍔″彲浠ュ湪澶氫釜璇锋眰涔嬮棿缁存姢鐘舵�侊紝閫傚悎闇�瑕佸姝ラ瀹屾垚鐨勪笟鍔℃祦绋嬨�� +2. **骞跺彂鎺у埗**锛氶�氳繃浜嬪姟閿佹満鍒剁‘淇濆悓涓�浜嬪姟鐨勬搷浣滀笉浼氬苟鍙戞墽琛岋紝淇濊瘉鏁版嵁涓�鑷存�с�� +3. **鍘嗗彶璁板綍**锛氬畬鏁磋褰曚簨鍔$殑鎵�鏈夋搷浣滐紝渚夸簬瀹¤鍜岄棶棰樻帓鏌ャ�� +4. **璧勬簮绠$悊**锛氫簨鍔″畬鎴愬悗鑷姩閲婃斁璧勬簮锛岄伩鍏嶈祫婧愭硠婕忋�� +5. **棰嗗煙鍒嗙**锛氶�氳繃涓嶅悓鐨勪簨鍔″熀绫伙紙MESTransactionBase/WMSTransactionBase锛夊疄鐜伴鍩熼�昏緫鍒嗙銆� + +## 8. 鎬荤粨 + +椤圭洰鐨凾ransaction缁撴瀯閲囩敤浜嗛潰鍚戝璞$殑璁捐妯″紡锛岄�氳繃鎺ュ彛鍜屾娊璞$被鏋勫缓浜嗙伒娲荤殑浜嬪姟澶勭悊妗嗘灦銆傝繖绉嶈璁′娇寰椾簨鍔″鐞嗛�昏緫涓庝笟鍔¢�昏緫鍒嗙锛屼究浜庣淮鎶ゅ拰鎵╁睍銆傚悓鏃讹紝閫氳繃浜嬪姟瀛楀吀鍜岄攣鏈哄埗锛岀‘淇濅簡浜嬪姟鎿嶄綔鐨勫畨鍏ㄦ�у拰涓�鑷存�с�� + +杩欑浜嬪姟妯″紡鐗瑰埆閫傚悎闇�瑕佽法澶氫釜璇锋眰缁存姢鐘舵�佺殑澶嶆潅涓氬姟娴佺▼锛屽浠撳簱绠$悊銆佺敓浜х鐞嗙瓑棰嗗煙銆傞�氳繃浜嬪姟鏈哄埗锛屽彲浠ユ湁鏁堢鐞嗚繖浜涢暱鏃堕棿杩愯鐨勪笟鍔℃祦绋嬶紝纭繚鏁版嵁鐨勪竴鑷存�у拰瀹屾暣鎬с�� -- Gitblit v1.9.3