PE框架
1.主要面向金融領(lǐng)域
2.擴(kuò)展spring標(biāo)簽,對(duì)spinrgMVC和springCore做了擴(kuò)展
(1)bean標(biāo)簽:transaction、style搂蜓、action逆皮、template、chain等
(2)jsp標(biāo)簽:pe:token啊楚、pe:hiddenData等
3.更加緊湊的交易配置封裝
4.封裝大量的service組件吠冤,可以直接在action中使用
流程框圖:
MainServlet->MainController->CoreController->TransactionConfig->Template->Chain->Template
首先根據(jù)<transcation>中的id號(hào),找到模板(template)恭理,然后再根據(jù)模板找到責(zé)任鏈(chain)拯辙,一旦確認(rèn)chain就按照流程圖執(zhí)行,從chain中執(zhí)行command蚯斯,執(zhí)行到deletegatecommand后結(jié)束薄风,跳到模板,再去執(zhí)行<action>拍嵌,然后跳轉(zhuǎn)到相應(yīng)的jsp頁(yè)面遭赂。
無論一個(gè)交易的發(fā)送渠道是HTTP還是TCP,最終針對(duì)每一個(gè)渠道的Adapter會(huì)將請(qǐng)求的Form(HTTP)或報(bào)文(TCP)轉(zhuǎn)換成與渠道無關(guān)的Context横辆。當(dāng)渠道Adapter將數(shù)據(jù)轉(zhuǎn)換為渠道無關(guān)的Context后撇他,將控制權(quán)交給PowerEngine核心控制模塊,根據(jù)該交易的交易Id狈蚤,來確認(rèn)該交易需要經(jīng)過的處理過程困肩。
1? ? ? 首先執(zhí)行Chain中的一系列Commands,若有其中一個(gè)Command認(rèn)為需結(jié)束處理,則處理立刻結(jié)束脆侮。
2??????當(dāng)Chain執(zhí)行到Delegate Command時(shí)锌畸,開始執(zhí)行Template;不同的Template 會(huì)調(diào)用不同的 Actions靖避,以完成實(shí) 際的交易處理潭枣。
3? ? ? Context是整個(gè)?Power Engine?框架的數(shù)據(jù)交換核心接口類,可通過GetData方法來訪問交易請(qǐng)求的數(shù)據(jù)要素幻捏,? ? 通過SetData方法來返回?cái)?shù)據(jù)盆犁。
4? ? ? ?HTTP?開發(fā)中,有?HttpServletContext實(shí)現(xiàn)類篡九,在基于?TCP/Socket?開發(fā)中有?TcpContext ,無論一個(gè)交易的發(fā)送 渠道是HTTP還是TCP谐岁,最終會(huì)將請(qǐng)求的Form(HTTP)或報(bào)文(TCP)轉(zhuǎn)換成與渠道無關(guān)的Context。
? ? ? ? ?style:樣式,用于判斷輸入數(shù)據(jù)的格式等伊佃。
? ? ? ? ?chain:系統(tǒng)級(jí)的交易邏輯抽象窜司,如:交易的權(quán)限、登陸控制锭魔、日志和輸入檢查等
? ? ? ? ?common:chain下的操作例证,理解為命令
? ? ? ? ?template:?對(duì)一組有類似處理流程的交易處理的抽象,定義交易內(nèi)部的執(zhí)行流程迷捧,如:復(fù)核交易织咧、查詢交易
? ? ? ? ?Action:是PowerEngine業(yè)務(wù)處理的最小單元,Action也是具體單個(gè)應(yīng)用開發(fā)者需要直接面對(duì)的對(duì)象漠秋,通過Action實(shí)現(xiàn)交易單元處理笙蒙,是交易的具體動(dòng)作
? ? ? ? ?sqlmap?是一個(gè)SQL?射入工具,使得sql語(yǔ)句與程序代碼分離
例子
1庆锦、根據(jù)頁(yè)面請(qǐng)求捅位,找到 id="QueryCardNoForGetDataConfirm"的transaction
? ? ?其中,actions在template.xml的Placeholder執(zhí)行時(shí)調(diào)用
? ? ?fields在chain.xml的commonds的其中一個(gè)commond:ValidationCommand中有用到
? ? ?channels在MainController.resolveViewName()用到搂抒,詳見??pe框架簡(jiǎn)介5--CoreController?的8
然后根據(jù) template="trsConfirmTemplate"艇搀,找到template.xml
2、根據(jù)chain="chainForRoleControl"找到 chain.xml?
3求晶、按順序執(zhí)行commonds中的execute()方法焰雕,執(zhí)行完后,通過delegateCommand調(diào)用template.xml中的actions方法芳杏。調(diào)用邏輯詳見:pe框架簡(jiǎn)介5--CoreController矩屁。