




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
Mifos平臺軟件架構文檔概要本文抓住了主要架構決策平臺。文檔的目的是為平臺的總體結構提供一個向導;它適合在一個管理信息系統(tǒng)解決方案的整體背景與其部奉獻者可以更有效地了解他們正在考慮可以變化,這些變化的影響。這個報告的目標受眾是系統(tǒng)集成商(誰將使用文檔來了解平臺的結構與其設計原理)和平臺奉獻者將使用文檔來推斷未來的變化和誰會隨著系統(tǒng)的開展更新文檔。簡介理念Mifos是一個出于希望創(chuàng)立和部署技術,允許小額信貸行業(yè)的規(guī)模的想法。我們的目標是:產生一個黃金標準管理信息系統(tǒng)適合小額信貸業(yè)務作為小額信貸的根底平臺開源的,擁有和由成員組織在社區(qū)使?jié)撛诘纳鷳B(tài)系統(tǒng)提供商周邊的小額信貸機構歷史2006:項目始于Grameen基金會2011年底:Grameen基金會把全部責任移交給開源社區(qū)。2012:MifosX平臺開場。之前的項目成員以開源社區(qū)小額信貸(C0SM/OpenMF)的名義聚在一起2013年:C0SM/OpenMF正式更名Mifos建議和接收美國稅法條款501c3。項目相關項目URLs://github./openMF/mifosx下載 s:///projects/mifos/下載統(tǒng)計Downloadstats系統(tǒng)概覽如今金融體系通過各種各樣的手段向客戶提供效勞。Appu 如今金融體系通過各種各樣的手段向客戶提供效勞。Appu F?--客戶可以直接打到分支機構(出納員模型)允許客戶可以組織團體(或中心)的形式與金融體系的員工在約定時間和地點開會(傳統(tǒng)的小額信貸)。金融體系可能有一個公開的門面信息門戶,客戶可以使用各種原因包括賬戶管理(網上銀行)。金融體系集成到一個ATM/POS/卡效勞網絡,客戶可以使用金融體系可能與移動支付運營商集成和支持移動貨幣效勞客戶(現在/未來小額信貸)。一個金融體系可能使用的第三方代理銷售其他銀行/金融體系的產品/效勞如上面的圖表所示,各利益相關者利用業(yè)務應用程序執(zhí)行特定客戶或金融體系相關操作這些業(yè)務應用程序中包含的功能可以以任何方式捆綁打包。在圖中,幾個應用程序可以組合成一個應用程序或任何一塊代表一個應用程序可以根據需要進一步分解。該平臺是管理信息系統(tǒng)的核心引擎。它隱藏了很多存在的復雜的金融體系中的管理信息系統(tǒng)所需的業(yè)務和技術領域背后的一個相對簡單的API。這個API,使應用程序開發(fā)人員按金融體系他們需要的那樣進展創(chuàng)新和開發(fā)一般或定制的應用程序。功能概覽作為平臺的所有功能都通過一個API,該API文檔是最好的地方來查看該平臺是做什么
的詳細分解。看到網上API文檔。? ? ? ?T? ?TIWDEXPI訓QTE&APIHTTPSAPIIWDEXPI訓QTE&APIHTTPSAPI通過更高的級別上我們看到的功能分為以下幾類:根底構件o規(guī)o擴展數據表o報表用戶管理o用戶o角色o權限機構模型o機構o職員o貨幣產品配置o手續(xù)費o貸款產品o存款產品?客戶資料o了解你的客戶?投資組合管理o貸款賬戶o存款o顧客/團體?總帳賬戶管理o會計科目表o總帳技術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.主要的技術RESTfulAPI該平臺通過practically-RESTfulAPI公開其所有功能,通信使用JSON°我們使用術語practically-RESTful為了使其清楚我們不是去依從完整的REST,但仍然保持重要的基于REST的屬性:無狀態(tài):平臺維護沒有會話或基于會話的狀態(tài)這樣做的結果是輕松擴展能力水平。面向資源:API是集中在一組資源通過使用 的詞匯和約定例如GET、PUT、OST、DELETE, 狀態(tài)代碼。以到達為客戶端提供一個簡單的和一致的API°多租戶技術mifos平臺開發(fā)支持多租戶設計的核心。這意味著它是易于使用的軟件即效勞(SaaS)的平臺型產品,因為它是為本地安裝°平臺使用一個方法隔離金融體系數據庫/數據/模式(見單獨的數據庫和共享數據庫,單獨的模式msdn-microsoft-/en—us/library/aa479086-aspx#mlttntda_topic2)°可擴展同時每個租戶將有一組核心表,表平臺可以擴展以不同的方式為每個租戶通過使用數據表的功能°讀寫別離我們別離寫命令(修改數據)和查詢(讀取數據)°為什么?有很多原因選擇這種方法,目前不是一個嘗試全面的CQRS°目前的主要優(yōu)點是:?狀態(tài)改變命令持續(xù)提供審計的狀態(tài)改變°??用于支持maker-checker的一般方法。狀態(tài)改變命令使用面向對象模式(因此ORM),而查詢可以保持為數據模式。5.1.5.四眼原那么也稱為四眼原那么。使應用程序能夠支持maker-checker風格工作流過程。命令,通過驗證將被持久化。Maker-checker在細粒度級別可以啟用/禁用任何狀態(tài)變化的API。5.1.6.良好的權限控制細粒度的權限與每個API。管理員有細粒度的控制權什么角色或用戶訪問權。代碼打包意圖是使平臺代碼以垂直切分的方式(而不是層)打包。源代碼在這里mifosng-provider/src/main/java/org/mifosplatformorg.mifosplatform.accountinguseradministrationinfrastructureportfolioochargeoclientofundoloanaccountaccounting在每一個垂直局部是一些常見的包裝結構:api-XXXApiResource.java-RESTapi實現文件handler-XXXCommandHandler.java-具體處理程序調用service-包含讀+寫效勞功能區(qū)domain-00概念功能區(qū)域data-數據區(qū)域的概念serialization-為功能區(qū)域轉換APIJSON設計概覽注意:通過實現平臺的代碼來處理命令處理程序同時支持maker-checker和授權檢查目前有點復雜的,一個領域類針對性進展清理,讓新平臺的開發(fā)人員更容易入門。同時以下容用于解釋其工作原理??紤]上圖所示的例子為用戶資源。查詢:GET/用戶SAPI:retrieveAll方法.UsersApiResource調用UsersApiResource.retrieveAll:檢查用戶訪問該資源的權限數據UsersApiResource.retrieveAll:使用'readservice'來獲取所有用戶數據('readservice'執(zhí)行簡單的SQL使用JDBC查詢數據庫)UsersApiResource.retrieveAll:返回的數據轉換成JSON響應命令:POST/users(注:數據在請求body中)SAPI:create方法在.UsersApiResource中被調用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)立一個CommandWrapper對象表示這個createuser命令和JSON請求主體。交給PortfolioCommandSourceWritePlatformService.logCommandSource進展處理。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請求的身體,b)創(chuàng)立一個JsonCommand對象包裝命令細節(jié),c)使用CommandProcessingService處理命令。注意:如果出現RollbackTransactionAsCommandlsNotApprovedByCheckerException。最初的事務將被打掉,我們只有日志條目的命令審計表中設置其狀態(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等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 處理廢物運輸合同范本
- 房產土地測繪合同范本
- 老舊樓改造合同范本
- 工地入股合作合同范本
- 剪紙裝裱合同范本
- 種子資金資助合同范本
- 異地搬家服務合同范本
- 吉林移動施工合同范本
- 老年住宅出租合同范本
- 酒店開發(fā)行業(yè)
- 微測網題庫完整版行測
- DL∕T 466-2017 電站磨煤機及制粉系統(tǒng)選型導則
- DZ∕T 0215-2020 礦產地質勘查規(guī)范 煤(正式版)
- 云南麗江鮮花餅市場推廣調查研究報告
- 鹽酸右美托咪定鼻噴霧劑-臨床用藥解讀
- 《學習遵義會議精神》班會課件
- 干部基本信息審核認定表
- 2024年英語B級考試真題及答案
- 2024年社會工作者職業(yè)水平《社會工作實務(初級)》考試題及答案
- 施工升降機安裝拆卸安全教育
- 長輸管線焊接技術交底
評論
0/150
提交評論