版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
Mifos平臺(tái)軟件架構(gòu)文檔概要本文抓住了主要架構(gòu)決策平臺(tái)。文檔的目的是為平臺(tái)的總體結(jié)構(gòu)提供一個(gè)向?qū)?它適合在一個(gè)管理信息系統(tǒng)解決方案的整體背景與其部奉獻(xiàn)者可以更有效地了解他們正在考慮可以變化,這些變化的影響。這個(gè)報(bào)告的目標(biāo)受眾是系統(tǒng)集成商(誰將使用文檔來了解平臺(tái)的結(jié)構(gòu)與其設(shè)計(jì)原理)和平臺(tái)奉獻(xiàn)者將使用文檔來推斷未來的變化和誰會(huì)隨著系統(tǒng)的開展更新文檔。簡介理念Mifos是一個(gè)出于希望創(chuàng)立和部署技術(shù),允許小額信貸行業(yè)的規(guī)模的想法。我們的目標(biāo)是:產(chǎn)生一個(gè)黃金標(biāo)準(zhǔn)管理信息系統(tǒng)適合小額信貸業(yè)務(wù)作為小額信貸的根底平臺(tái)開源的,擁有和由成員組織在社區(qū)使?jié)撛诘纳鷳B(tài)系統(tǒng)提供商周邊的小額信貸機(jī)構(gòu)歷史2006:項(xiàng)目始于Grameen基金會(huì)2011年底:Grameen基金會(huì)把全部責(zé)任移交給開源社區(qū)。2012:MifosX平臺(tái)開場。之前的項(xiàng)目成員以開源社區(qū)小額信貸(C0SM/OpenMF)的名義聚在一起2013年:C0SM/OpenMF正式更名Mifos建議和接收美國稅法條款501c3。項(xiàng)目相關(guān)項(xiàng)目URLs://github./openMF/mifosx下載 s:///projects/mifos/下載統(tǒng)計(jì)Downloadstats系統(tǒng)概覽如今金融體系通過各種各樣的手段向客戶提供效勞。Appu 如今金融體系通過各種各樣的手段向客戶提供效勞。Appu F?--客戶可以直接打到分支機(jī)構(gòu)(出納員模型)允許客戶可以組織團(tuán)體(或中心)的形式與金融體系的員工在約定時(shí)間和地點(diǎn)開會(huì)(傳統(tǒng)的小額信貸)。金融體系可能有一個(gè)公開的門面信息門戶,客戶可以使用各種原因包括賬戶管理(網(wǎng)上銀行)。金融體系集成到一個(gè)ATM/POS/卡效勞網(wǎng)絡(luò),客戶可以使用金融體系可能與移動(dòng)支付運(yùn)營商集成和支持移動(dòng)貨幣效勞客戶(現(xiàn)在/未來小額信貸)。一個(gè)金融體系可能使用的第三方代理銷售其他銀行/金融體系的產(chǎn)品/效勞如上面的圖表所示,各利益相關(guān)者利用業(yè)務(wù)應(yīng)用程序執(zhí)行特定客戶或金融體系相關(guān)操作這些業(yè)務(wù)應(yīng)用程序中包含的功能可以以任何方式捆綁打包。在圖中,幾個(gè)應(yīng)用程序可以組合成一個(gè)應(yīng)用程序或任何一塊代表一個(gè)應(yīng)用程序可以根據(jù)需要進(jìn)一步分解。該平臺(tái)是管理信息系統(tǒng)的核心引擎。它隱藏了很多存在的復(fù)雜的金融體系中的管理信息系統(tǒng)所需的業(yè)務(wù)和技術(shù)領(lǐng)域背后的一個(gè)相對(duì)簡單的API。這個(gè)API,使應(yīng)用程序開發(fā)人員按金融體系他們需要的那樣進(jìn)展創(chuàng)新和開發(fā)一般或定制的應(yīng)用程序。功能概覽作為平臺(tái)的所有功能都通過一個(gè)API,該API文檔是最好的地方來查看該平臺(tái)是做什么
的詳細(xì)分解??吹骄W(wǎng)上API文檔。? ? ? ?T? ?TIWDEXPI訓(xùn)QTE&APIHTTPSAPIIWDEXPI訓(xùn)QTE&APIHTTPSAPI通過更高的級(jí)別上我們看到的功能分為以下幾類:根底構(gòu)件o規(guī)o擴(kuò)展數(shù)據(jù)表o報(bào)表用戶管理o用戶o角色o權(quán)限機(jī)構(gòu)模型o機(jī)構(gòu)o職員o貨幣產(chǎn)品配置o手續(xù)費(fèi)o貸款產(chǎn)品o存款產(chǎn)品?客戶資料o了解你的客戶?投資組合管理o貸款賬戶o存款o顧客/團(tuán)體?總帳賬戶管理o會(huì)計(jì)科目表o總帳技術(shù)Java7:.oracle./technetwork/java/javase/downloads/index.html?JAX-RS1.0:JSONusingGoogleGSONSpringI/OPlatform:spring.io/platformoSpringFrameworkoSpringSecuritvoSpringData(JPA)backedbyHibernateMySQL:.oracle./us/products/mvsql/overview/index.html5.1.主要的技術(shù)RESTfulAPI該平臺(tái)通過practically-RESTfulAPI公開其所有功能,通信使用JSON°我們使用術(shù)語practically-RESTful為了使其清楚我們不是去依從完整的REST,但仍然保持重要的基于REST的屬性:無狀態(tài):平臺(tái)維護(hù)沒有會(huì)話或基于會(huì)話的狀態(tài)這樣做的結(jié)果是輕松擴(kuò)展能力水平。面向資源:API是集中在一組資源通過使用 的詞匯和約定例如GET、PUT、OST、DELETE, 狀態(tài)代碼。以到達(dá)為客戶端提供一個(gè)簡單的和一致的API°多租戶技術(shù)mifos平臺(tái)開發(fā)支持多租戶設(shè)計(jì)的核心。這意味著它是易于使用的軟件即效勞(SaaS)的平臺(tái)型產(chǎn)品,因?yàn)樗菫楸镜匕惭b°平臺(tái)使用一個(gè)方法隔離金融體系數(shù)據(jù)庫/數(shù)據(jù)/模式(見單獨(dú)的數(shù)據(jù)庫和共享數(shù)據(jù)庫,單獨(dú)的模式msdn-microsoft-/en—us/library/aa479086-aspx#mlttntda_topic2)°可擴(kuò)展同時(shí)每個(gè)租戶將有一組核心表,表平臺(tái)可以擴(kuò)展以不同的方式為每個(gè)租戶通過使用數(shù)據(jù)表的功能°讀寫別離我們別離寫命令(修改數(shù)據(jù))和查詢(讀取數(shù)據(jù))°為什么?有很多原因選擇這種方法,目前不是一個(gè)嘗試全面的CQRS°目前的主要優(yōu)點(diǎn)是:?狀態(tài)改變命令持續(xù)提供審計(jì)的狀態(tài)改變°??用于支持maker-checker的一般方法。狀態(tài)改變命令使用面向?qū)ο竽J剑ㄒ虼薕RM),而查詢可以保持為數(shù)據(jù)模式。5.1.5.四眼原那么也稱為四眼原那么。使應(yīng)用程序能夠支持maker-checker風(fēng)格工作流過程。命令,通過驗(yàn)證將被持久化。Maker-checker在細(xì)粒度級(jí)別可以啟用/禁用任何狀態(tài)變化的API。5.1.6.良好的權(quán)限控制細(xì)粒度的權(quán)限與每個(gè)API。管理員有細(xì)粒度的控制權(quán)什么角色或用戶訪問權(quán)。代碼打包意圖是使平臺(tái)代碼以垂直切分的方式(而不是層)打包。源代碼在這里mifosng-provider/src/main/java/org/mifosplatformorg.mifosplatform.accountinguseradministrationinfrastructureportfolioochargeoclientofundoloanaccountaccounting在每一個(gè)垂直局部是一些常見的包裝結(jié)構(gòu):api-XXXApiResource.java-RESTapi實(shí)現(xiàn)文件handler-XXXCommandHandler.java-具體處理程序調(diào)用service-包含讀+寫效勞功能區(qū)domain-00概念功能區(qū)域data-數(shù)據(jù)區(qū)域的概念serialization-為功能區(qū)域轉(zhuǎn)換APIJSON設(shè)計(jì)概覽注意:通過實(shí)現(xiàn)平臺(tái)的代碼來處理命令處理程序同時(shí)支持maker-checker和授權(quán)檢查目前有點(diǎn)復(fù)雜的,一個(gè)領(lǐng)域類針對(duì)性進(jìn)展清理,讓新平臺(tái)的開發(fā)人員更容易入門。同時(shí)以下容用于解釋其工作原理。考慮上圖所示的例子為用戶資源。查詢:GET/用戶SAPI:retrieveAll方法.UsersApiResource調(diào)用UsersApiResource.retrieveAll:檢查用戶訪問該資源的權(quán)限數(shù)據(jù)UsersApiResource.retrieveAll:使用'readservice'來獲取所有用戶數(shù)據(jù)('readservice'執(zhí)行簡單的SQL使用JDBC查詢數(shù)據(jù)庫)UsersApiResource.retrieveAll:返回的數(shù)據(jù)轉(zhuǎn)換成JSON響應(yīng)命令:POST/users(注:數(shù)據(jù)在請(qǐng)求body中)SAPI:create方法在.UsersApiResource中被調(diào)用POSTConsumes"MediaType.APPLICATION_JSON})Produces({MediaType.APPLICATION_JSON})publicStringcreatefinalStringapiRequestBodyAsJson){finalCommandWrappercommandRequest=newCommandWrapperBuilder()//.createUser()//.withJson(apiRequestBodyAsJson)//.build();finalCommandProcessingResultresult=thismandsSourceWritePlatformService.logCommandSource(commandRequest);returnthis.toApiJsonSerializer.serialize(result);}描述:創(chuàng)立一個(gè)CommandWrapper對(duì)象表示這個(gè)createuser命令和JSON請(qǐng)求主體。交給PortfolioCommandSourceWritePlatformService.logCommandSource進(jìn)展處理。OverridepublicCommandProcessingResultlogCommandSourcefinalCommandWrapperwrapper){booleanisApprovedByChecker=false;//checkifisupdateofownaccountdetailsif(wrapper.isUpdateOfOwnUserDetails(this.context.authenticatedUser().getld())){//thenallowthisoperationtoproceed.//makercheckerdoesntmeananythinghere.isApprovedByChecker=true;//settotrueincasepermissionshave//beenmaker-checkerenabledby//accident.}else{//ifnotuserchangingtheirowndetails-checkuserhas//permissiontoperformspecifictask.this.context.authenticatedUser().validateHasPermissionTo(wrapper.getTaskPermissionName());}validatelsUpdateAllowed();finalStringjson=wrapper.getJson();CommandProcessingResultresult=null;try{finalJsonElementparsedCommand=this.fromApiJsonHelper.parse(json);finalJsonCommandcommand=JsonCommand.from(json,parsedCommand,this.fromApiJsonHelper,wrapper.getEntityName(),wrapper.getEntityId(),wrapper.getSubentityId(),wrapper.getGroupId(),wrapper.getClientld(),wrapper.getLoanId(),wrapper.getSavingsId(),wrapper.getCodeId(),wrapper.getSupportedEntityType(),wrapper.getSupportedEntityId(),wrapper.getTransactionld(),wrapper.getHref(),wrapper.getProductld());result=cessAndLogCommandScessAndLogCommand(wrapper,command,isApprovedByChecker);}catch(finalRollbackTransactionAsCommandlsNotApprovedByCheckerExceptione){result=cessAndLogCommandService.logCommand(e.getCommandSourceResult());}returnresult;描述:檢查用戶允許此操作。如果好,)解析json請(qǐng)求的身體,b)創(chuàng)立一個(gè)JsonCommand對(duì)象包裝命令細(xì)節(jié),c)使用CommandProcessingService處理命令。注意:如果出現(xiàn)RollbackTransactionAsCommandlsNotApprovedByCheckerException。最初的事務(wù)將被打掉,我們只有日志條目的命令審計(jì)表中設(shè)置其狀態(tài)為“等待〞。TransactionalOverridepublicCommandProcessingResultprocessAndLogCommand(finalCommandWrapperwrapper,finalJsonCommandcommand,finalbooleanisApprovedByChecker){finalbooleanrollbackTransaction=this.configurationDomainService.isMakerCheckerEnabledForTask(wrapper.taskPermissionName())&&!isApprovedByChecker;finalNewCommandSourceHandlerhandler=findCommandHandler(wrapper);finalCommandProcessingResultresult=cessCommand(command);finalAppUsermaker=this.context.authenticatedUser();CommandSourcecommandSourceResult=null;if(commandmandId()!=null){commandSourceResult=this mandSourceRepository.findOne(commandmandld());commandSourceResult.markAsChecked(maker,DateTime.now());}else{commandSourceResult=CommandSource.fullEntryFrom(wrapper,command,maker);}commandSourceResult.updateResourceId(result.resourceld());commandSourceResult.updateForAudit(result.getOfficeld(),result.getGroupId(),result.getClientld(),result.getLoanId(),result.getSavingsId(),result.getProductld());StringchangesOnlyJson=null;if(result.hasChanges()){changesOnlyJson
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 廣東外語外貿(mào)大學(xué)南國商學(xué)院《普通話口語表達(dá)技巧》2023-2024學(xué)年第一學(xué)期期末試卷
- 廣東司法警官職業(yè)學(xué)院《文學(xué)概論I》2023-2024學(xué)年第一學(xué)期期末試卷
- 廣東省外語藝術(shù)職業(yè)學(xué)院《交通安全工程》2023-2024學(xué)年第一學(xué)期期末試卷
- 廣東輕工職業(yè)技術(shù)學(xué)院《綠色建筑與可持續(xù)建設(shè)英文》2023-2024學(xué)年第一學(xué)期期末試卷
- 廣東女子職業(yè)技術(shù)學(xué)院《影視欄目包裝》2023-2024學(xué)年第一學(xué)期期末試卷
- 廣東茂名健康職業(yè)學(xué)院《土地利用工程制圖》2023-2024學(xué)年第一學(xué)期期末試卷
- 廣東理工職業(yè)學(xué)院《畫法幾何與工程制圖一》2023-2024學(xué)年第一學(xué)期期末試卷
- 四年級(jí)數(shù)學(xué)(四則混合運(yùn)算)計(jì)算題專項(xiàng)練習(xí)與答案匯編
- 【原創(chuàng)】江蘇省2013-2020學(xué)年高一年級(jí)第二學(xué)期英語知識(shí)競賽試題
- 【2020年各地名校模擬地理分類匯編】(高三、2020.4-7月份)C單元-地球上的大氣
- 委托招生協(xié)議書范本2025年
- 解剖學(xué)試題與參考答案
- ISO 56001-2024《創(chuàng)新管理體系-要求》專業(yè)解讀與應(yīng)用實(shí)踐指導(dǎo)材料之11:“5領(lǐng)導(dǎo)作用-5.5崗位、職責(zé)和權(quán)限”(雷澤佳編制-2025B0)
- 2024年-江西省安全員C證考試題庫
- 物業(yè)保安培訓(xùn)工作計(jì)劃
- 2024-2025學(xué)年上學(xué)期深圳初中地理七年級(jí)期末模擬卷3
- 中國當(dāng)代文學(xué)專題-003-國開機(jī)考復(fù)習(xí)資料
- 期末測試卷-2024-2025學(xué)年外研版(一起)英語六年級(jí)上冊(cè)(含答案含聽力原文無音頻)
- 2024中國食藥同源大健康產(chǎn)業(yè)消費(fèi)洞察與產(chǎn)業(yè)發(fā)展分析白皮書
- 上海市浦東新區(qū)2023-2024學(xué)年一年級(jí)上學(xué)期期末考試數(shù)學(xué)試題
- 中國馬克思主義與當(dāng)代思考題(附答案)
評(píng)論
0/150
提交評(píng)論