版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
Mifos平台软件架构文档概要本文抓住了主要架构决策平台。文档的目的是为平台的总体结构提供一个向导;它适合在一个管理信息系统解决方案的整体背景及其内部贡献者可以更有效地了解他们正在考虑可以变化,这些变化的影响。这个报告的目标受众是系统集成商(谁将使用文档来了解平台的结构及其设计原理)和平台贡献者将使用文档来推断未来的变化和谁会随着系统的发展更新文档。简介理念Mifos是一个出于希望创建和部署技术,允许小额信贷行业的规模的想法。我们的目标是:产生一个黄金标准管理信息系统适合小额信贷业务作为小额信贷的基础平台开源的,拥有和由成员组织在社区使潜在的生态系统提供商周边的小额信贷机构历史2006:项目始于Grameen基金会2011年底:Grameen基金会把全部责任移交给开源社区。2012:MifosX平台开始。之前的项目成员以开源社区小额信贷(COSM/OpenMF)的名义聚在一起2013年:COSM/OpenMF正式更名Mifos倡议和接收美国税法条款501c3。项目相关项目URL/openMF/mifosx下载/projects/mifos/下载统计Downloadstats系统概览如今金融体系通过各种各样的手段向客户提供服务。客户可以直接打电话到分支机构(出纳员模型)允许客户可以组织团体(或中心)的形式,与金融体系的员工在约定时间和地点开会(传统的小额信贷)。金融体系可能有一个公开的门面信息门户网站,客户可以使用各种原因包括账户管理(网上银行)。金融体系集成到一个ATM/POS/卡服务网络,客户可以使用金融体系可能与移动支付运营商集成和支持移动货币服务客户(现在/未来小额信贷)。一个金融体系可能使用的第三方代理销售其他银行/金融体系的产品/服务如上面的图表所示,各利益相关者利用业务应用程序执行特定客户或金融体系相关操作。这些业务应用程序中包含的功能可以以任何方式捆绑打包。在图中,几个应用程序可以组合成一个应用程序或任何一块代表一个应用程序可以根据需要进一步分解。该平台是管理信息系统的核心引擎。它隐藏了很多存在的复杂的金融体系中的管理信息系统所需的业务和技术领域背后的一个相对简单的API。这个API,使应用程序开发人员按金融体系他们需要的那样进行创新和开发一般或定制的应用程序。功能概览作为平台的所有功能都通过一个API,该API文档是最好的地方来查看该平台是做什么的详细分解。看到网上API文档。/api-docs/apiLive.htm通过更高的级别上我们看到的功能分为以下几类:基础构件规范扩展数据表报表用户管理用户角色权限机构模型机构职员货币产品配置手续费贷款产品存款产品客户资料了解你的客户投资组合管理贷款账户存款帐户顾客/团体总帐账户管理会计科目表总帐技术Java7:/technetwork/java/javase/downloads/index.htmlJAX-RS1.0:usingJersey(1.17.x)JSONusingGoogleGSONSpringI/OPlatform:http://spring.io/platformSpringFrameworkSpringSecuritySpringData(JPA)backedbyHibernateMySQL:/us/products/mysql/overview/index.html主要的技术RESTfulAPI该平台通过practically-RESTfulAPI公开其所有功能,通信使用JSON。我们使用术语practically-RESTful为了使其清楚我们不是去依从完整的REST,但仍然保持重要的基于REST的属性:无状态:平台维护没有会话或基于会话的状态。这样做的结果是轻松扩展能力水平。面向资源:API是集中在一组资源通过使用HTTP的词汇和约定例如GET、PUT、POST、DELETE,HTTP状态代码。以达到为客户端提供一个简单的和一致的API。看到网上API文档的更多细节。/api-docs/apiLive.htm多租户技术mifos平台开发支持多租户设计的核心。这意味着它是易于使用的软件即服务(SaaS)的平台型产品,因为它是为本地安装。平台使用一个方法隔离金融体系数据库/数据/模式(见单独的数据库和共享数据库,单独的模式/en-us/library/aa479086.aspx#mlttntda_topic2)。可扩展同时每个租户将有一组核心表,表平台可以扩展以不同的方式为每个租户通过使用数据表的功能。读写分离我们分离写命令(修改数据)和查询(读取数据)。为什么?有很多原因选择这种方法,目前不是一个尝试全面的CQRS。目前的主要优点是:状态改变命令持续提供审计的状态改变。用于支持maker-checker的一般方法。状态改变命令使用面向对象模式(因此ORM),而查询可以保持为数据模式。四眼原则也称为四眼原则。使应用程序能够支持maker-checker风格工作流过程。命令,通过验证将被持久化。Maker-checker在细粒度级别可以启用/禁用任何状态变化的API。良好的权限控制细粒度的权限与每个API。管理员有细粒度的控制权什么角色或用户访问权。代码打包意图是使平台代码以垂直切分的方式(而不是层)打包。源代码在这里mifosng-provider/src/main/java/org/mifosplatformorg.mifosplatform.accountinguseradministrationinfrastructureportfoliochargeclientfundloanaccountaccounting在每一个垂直部分是一些常见的包装结构: org.mifosplatform.useradministration.api-XXXApiResource.java-RESTapi实现文件handler-XXXCommandHandler.java-具体处理程序调用service-包含读+写服务功能区domain-OO概念功能区域data-数据区域的概念serialization-为功能区域转换APIJSON设计概览注意:通过实现平台的代码来处理命令处理程序同时支持maker-checker和授权检查目前有点复杂的,一个领域类针对性进行清理,让新平台的开发人员更容易入门。同时以下内容用于解释其工作原理。考虑上图所示的例子为用户资源。查询:GET/用户HTTPSAPI:retrieveAll方法org.mifosplatform.useradministration.api.UsersApiResource调用UsersApiResource.retrieveAll:检查用户访问该资源的权限数据UsersApiResource.retrieveAll:使用'readservice'来获取所有用户数据('readservice'执行简单的SQL使用JDBC查询数据库)UsersApiResource.retrieveAll:返回的数据转换成JSON响应命令:POST/users(注:数据在请求body中)HTTPSAPI:create方法在org.mifosplatform.useradministration.api.UsersApiResource中被调用@POST@Consumes({MediaType.APPLICATION_JSON})@Produces({MediaType.APPLICATION_JSON})publicStringcreate(finalStringapiRequestBodyAsJson){finalCommandWrappercommandRequest=newCommandWrapperBuilder()//.createUser()//.withJson(apiRequestBodyAsJson)//.build();finalCommandProcessingResultresult=mandsSourceWritePlatformService.logCommandSource(commandRequest);returnthis.toApiJsonSerializer.serialize(result);}描述:创建一个CommandWrapper对象表示这个createuser命令和JSON请求主体。交给PortfolioCommandSourceWritePlatformService.logCommandSource进行处理。@OverridepublicCommandProcessingResultlogCommandSource(finalCommandWrapperwrapper){booleanisApprovedByChecker=false;//checkifisupdateofownaccountdetailsif(wrapper.isUpdateOfOwnUserDetails(this.context.authenticatedUser().getId())){//thenallowthisoperationtoproceed.//makercheckerdoesntmeananythinghere.isApprovedByChecker=true;//settotrueincasepermissionshave//beenmaker-checkerenabledby//accident.}else{//ifnotuserchangingtheirowndetails-checkuserhas//permissiontoperformspecifictask.this.context.authenticatedUser().validateHasPermissionTo(wrapper.getTaskPermissionName());}validateIsUpdateAllowed();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.getClientId(),wrapper.getLoanId(),wrapper.getSavingsId(),wrapper.getCodeId(),wrapper.getSupportedEntityType(),wrapper.getSupportedEntityId(),wrapper.getTransactionId(),wrapper.getHref(),wrapper.getProductId());result=cessAndLogCommandScessAndLogCommand(wrapper,command,isApprovedByChecker);}catch(finalRollbackTransactionAsCommandIsNotApprovedByCheckerExceptione){result=cessAndLogCommandService.logCommand(e.getCommandSourceResult());}returnresult;}描述:检查用户允许此操作。如果好,)解析json请求的身体,b)创建一个JsonCommand对象包装命令细节,c)使用CommandProcessingService处理命令。注意:如果出现RollbackTransactionAsCommandIsNotApprovedByCheckerException。最初的事务将被打掉,我们只有日志条目的命令审计表中设置其状态为“等待”。@Transactional@OverridepublicCommandProcessingResultprocessAndLogCommand(finalCommandWrapperwrapper,finalJsonCommandcommand,finalbooleanisApprovedByChecker){finalbooleanrollbackTransaction=this.configurationDomainService.isMakerCheckerEnabledForTask(wrapper.taskPermissionName())&&!isApprovedByChecker;finalNewCommandSourceHandlerhandler=findCommandHandler(wrapper);finalCommandProcessingResultresult=cessCommand(command);finalAppUsermaker=this.context.authenticatedUser();CommandSourcecommandSourceResult=null;if(mandId()!=null){commandSourceResult=mandSourceRepository.findOne(mandId());commandSourceResult.markAsChecked(maker,DateTime.now());}else{commandSourceResult=CommandSource.fullEntryFrom(wrapper,command,maker);}commandSourceResult.updateResourceId(result.resourceId());commandSourceResult.updateForAudit(result.getOfficeId(),result.getGroupId(),result.getClientId(),result.getLoanId(),result.getSavingsId(),result.getProductId(
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 《证劵基础知识最终》课件
- 《激光切割工艺》课件
- 荒山绿化项目可行性研究报告
- 《人力资源管理奥秘》课件
- 股份解禁协议三篇
- 专业毕业实习报告4篇
- 2023年-2024年企业主要负责人安全教育培训试题及答案(易错题)
- 2024员工三级安全培训考试题带解析答案可打印
- 2023年-2024年项目部安全管理人员安全培训考试题附答案【培优A卷】
- 2023年-2024年企业主要负责人安全培训考试题(预热题)
- (完整word版)Word信纸(A4横条直接打印版)模板
- 钢结构件运输专项方案
- 物业公司车辆进出登记表
- DCS基础培训课程(和利时)课件
- 员工消防安全教育培训
- HART-375手操器说明书
- 文学批评与实践-四川大学中国大学mooc课后章节答案期末考试题库2023年
- (52)-12.1服装的审美形态11.4
- 力行“五育”并举融合“文化”育人
- 上海中心大厦介绍
- 管道试压记录表
评论
0/150
提交评论