Mifos小额信贷标准管理系统平台软件架构文档_第1页
Mifos小额信贷标准管理系统平台软件架构文档_第2页
Mifos小额信贷标准管理系统平台软件架构文档_第3页
Mifos小额信贷标准管理系统平台软件架构文档_第4页
Mifos小额信贷标准管理系统平台软件架构文档_第5页
已阅读5页,还剩6页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

Mifos平台软件架构文档概要本文抓住了关键架构决议平台。文档目标是为平台总体结构提供一个向导;它适合在一个管理信息系统处理方案整体背景及英内部贡献者能够更有效地了解她们正在考虑能够改变,这些改变影响。这个汇报目标受众是系统集成商(谁将使用文档来了解平台结构及英设计原理)和平台贡献者将使用文档来推断未来改变和谁会伴随系统发展更新文档。介绍理念Mifos是一个出于期望创建和布署技术,许可小额信贷行业规模想法。我们目标是:产生一个黄金标准管理信息系统适合小额信贷业务作为小额信贷基础平台开源,拥有和由组员组织在小区使潜在生态系统提供商周用小额信贷机构历史•:项目始于Grameen基金会底:Grameen基金会把全部责任移交给开源小区。:MifosX平台开始。之前项目组员以开源小区小额信贷(COSM/OpenMF)^,义聚在一起• :COSM/OpenMF正式更剑Mifos倡议和接收美国税法条款501c3。

2・3•项目相关项目URL下载下载统计Downloadstats系统概览sddauorsUDOe-6UUBU.2_qndAgentThirdPames/indusiryATM/POS丿CsMServiceso—6dd<r86<adv

aDuegoped-epos现在金融体系经过多种多样手段向用户提供服务。sddauorsUDOe-6UUBU.2_qndAgentThirdPames/indusiryATM/POS丿CsMServiceso—6dd<r86<adv

aDuegoped-epos现在金融体系经过多种多样手段向用户提供服务。用户能够直接打电话到分支机构(岀纳员模型)许可用户能够组织团体(或中心)形式,和金融体系职员在约泄时间和地点开会(传统小额信贷)。金融体系可能有一个公开门而信息门户网站,用户能够使用多种原因包含账户管理(网上银行)。金融体系集成到一个ATM/POS/卡服务网络,用户能够使用金融体系可能和移动支付运行商集成和支持移动货币服务用户(现在/未来小额信贷)。•一个金融体系可能使用第三方代理销售其它银行/金融体系产品/服务如上而图表所表示,各利益相关者利用业务应用程序实施特左用户或金融体系相关操作。这些业务应用程序中包含功效能够以任何方法捆绑打包。在图中,多个应用程序能够组合成一个应用程序或任何一块代表一个应用程序能够依摇需要深入分解。该平台是管理信息系统关键引擎。它隐藏了很多存在复杂金融体系中管理信息系统所需业务和技术领域背后一个相对简单API。这个API,使应用程序开发人员按金融体系她们需要那样进行创新和开发通常或左制应用程序。功效概览作为平台全部功效全部经过一个API,该API文档是最好地方来查看该平台是做什么具体分解。看到网上API文档。????????经过更髙等级上我们看到功效分为以下几类:基础构件O规范O扩展数据表O报表用户管理O用户O角色o权限机构模型O机构O职员O货币产品配置O手续费O贷款产品O存款产品用户资料O了解你用户投资组合管理O贷款账户O存款帐戸O用户/团体总帐账户管理O会计科目表O总帐5.技术Java7:JAX-RS1.0:usingJersey(2・17・x)JSONusing谷歌GSONSpringI/OPlatform:oSpringFrameworkoSpringSecurityoSpringData(JPA)backedbyHibernate•MySQL:5.1.关键技术5.1.1.RESTfulAPI该平台经过practically-RESTfulAPI公开其全部功效,通信使用JSON。我们使用术语practically-RESTful为了使其淸楚我们不是去依从完整REST,但仍然保持关键基于REST属性:无状态:平台维护没有会话或基于会话状态。这么做结果是轻松扩展能力水平。而向资源:API是集中在一组资源经过使用HTTP词汇和约左比如GET、PUT、POST、DELETE,HTTP状态代码。以达成为用户端提供一个简单和一致API。看到网上API文档更多细肖。5丄2•多租户技术mifos平台开发支持多租户设计关键。这意味着它是易于使用软件即服务(SaaS)平台型产品,因为它是为当地安装。平台使用一个方法隔离金融体系数据库/数据/模式(见单独数据库和共享数据库,单独模式)。5.1.3•可扩展同时每个租户将有一组关键表,表平台能够扩展以不一样方法为每个租户经过使用数据表功效。5.1.4•读写分离我们分离写命令(修改数据)和查询(读取数据)。为何?有很多原因选择这种方法,现在不是一个尝试全方而CQRS。现在关键优点是:状态改变命令连续提供审计状态改变。用于支持maker-checker通常方法。状态改变命令使用面向对象模式(所以ORM),而查询能够保持为数据模式。四眼标准也称为四眼标准。使应用程序能够支持maker-checker风格工作流过程。命令,经过验证将被持久化。Maker-checker在细粒度等级能够启用/禁用任何状态改变APL良好权限控制细粒度权限和每个API。管理员有细粒度控制权什么角色或用户访问权。意图是使平台代码以垂直切分方法(而不是层)打包。源代码在这里mifosng-provider/src/main/java/org/mifosplatformorg.mifosplatform・accountinguseradministrationinfrastructureportfolioochargeoclientofundoloanaccount

accounting在每一个垂直部分是部分常见包装结构:org.mifosplatform.useradministration・api-XXXApiResource.java・RESTapi实现文件handler-XXXCommandHandler.java•具体处理程序调用service-包含读+写服务功效区domain・00概念功效区域・data-数据区域概念serialization■为功效区域转换APIJSON7.设计概览注意:经过实现平台代码来处理命令处理程序同时支持maker-checker和授权检验现在有点复杂,一个领域类针对性进行淸理,让新平台开发人员更轻易入门。同时以下内容用于解释其工作原理。1•CheckPermissions2.FetchData(SQLQuery)3.CovertToJSONresponseCobwi^nd5.CovertToJSONresponsei.ChecKPermissions2.LocateCommandHandier4.Updatedvritti

changesiorALxiit3.CommendHandler

UsesDomainServices

ModelORMtopensichanges

Ailcnangospassedback-/一MitosxPianorm&api1•CheckPermissions2.FetchData(SQLQuery)3.CovertToJSONresponseCobwi^nd5.CovertToJSONresponsei.ChecKPermissions2.LocateCommandHandier4.Updatedvritti

changesiorALxiit3.CommendHandler

UsesDomainServices

ModelORMtopensichanges

Ailcnangospassedback-考虑上图所表示例子为用戸资源。査询:GET/用户2・HTTPSAPI:retrieveAII方法org.mifosplatform.useradministration.api.UsersApiResource调用3・UsersApiResource.retrieveAll:检验用户访问该资源权限数据UsersApiResource.retrieveAll:使用,readservice1来获取全部用户数据('readservice'实施简单SQL使用JDBC查询数拯库)UsersApiResource.retrieveAll:返回数据转换成JSON响应命4•:POST/users(注:数据在请求body中)HTTPSAPI:create方法在org.mifosplatform.useradministration.api.UsersApiResource中被调用@POST@Consumes({MediaType.APPLICATIONJSON})@Produces({MediaType.APPLICATIONJSON})publicStringcreate(finalStringapiRequestBodyAsJson){finalCommandWrappercommandRequest=newCommandWrapperBuilder()//createUserf)//.withJson(apiRequestBodyAsJson)//build();finalCommandProcessingResultresult=mandsSourceWritePlatformService.logCommandSourcG(commandRequest);returnthis.toApiJsonSerializer.serialize(result);}描述:创建一个Commandwrapper对象表示这个createuser命令和JSON请求主体©交给PortfolioCommandSourceWritePlatformService.logCommandSource进行处理。@OverridepublicCommandProcessingResultlogCommandSource(finalCommandWrapperwrapper){booleanisApprovedByChecker=false;//checkifisupdateofownaccountdetailsif(wrapper.isllpdateOfOwnUserDetails(this.context.authenticatedllser{).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.getEntityld(),wrapper.getSubentityld(),wrapper.getGroupld(),wrapper.getClientld(),wrapper.getLoanld(),wrapper.getSavingsld(),wrapper.getCodeld(),wrapper.getSupportedEntityType(),wrapper.getSupportedEntityldO,wrapper.getTransactionld(),wrapper.getHref(),wrapper.getProductld());result=cessAndLogCommandScessAndLogCommand(wrapper;command,isApprovedByChecker);}catch(finalRollbackTransactionAsCommandlsNotApprovedByCheckerExceptione){result=cessAndLogCommandService.logCommand(e.getCommandSourceResult());}returnresult;}描述:检验用户许可此操作。假如好,)解析json请求身体,b)创建一个JsonCommand对象包装命令细i「c)使用CommandProcessingService处理命令。注意:假如出现RollbackTransactionAsCommandlsNotApprovedByCheckeException。最初事务将被打掉,我们只有日志条目标命令审计表中设置其状态为"等候”。@Transac廿onal(©OverridepublicCommandProcessingResultprocessAndLogCommand(finalCommandwrapperwrapper,finalJsonCommandcommand,finalbooleanisApprovedByCheckerj{finalbooleanrollbackTransaction=this.configurationDomainService.isMakerCheckerEnabledForTask(wrapper.taskPermissionName())&&JisApprovedByChecker;finalNewCommandSourceHandlerhandler=findCommandHandler(wrapperj;finalCommandProcessingResultresult=cessCommand(command);finalAppUsermaker=this.context.authenticatedUser();CommandsourcecommandSourceResult=null;if(mandld()!=null){commandSourceResult=mandSourceRepository.findOne(mandld());commandSourceResult.markAsChecked(makeGDateTime.now());}else{commandSourceResult=CommandSource.fullEntryFrom(wrappeGcommand,maker);}commandSourceResult.updateResourceld(result.resourceld());commandSourceResult.updateForAudit(result.getOfficeld()zresult.getGroupld(),result.getClientldO,result.getLoanld(),result.getSavingsld(),result.getProductld());Stringchanges

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论