ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

架构解密分布式到微服务:架构实践公益项目wuhansun实践

2021-06-03 20:58:54  阅读:193  来源: 互联网

标签:入住 酒店 架构 实践 医护人员 核实 wuhansun 界面 申请单


公益项目wuhansun 实践

一个优秀的架构一定始于其优秀的产品设计。一个系统的架构、技术选型、研发成本、迭代计划都蕴藏在一开始的关键步骤——需求分析及产品设计中,我们需要不断提升自己的产品设计能力。本节以实现公益项目wuhansun(武汉Sun)为例,探讨作为架构师的我们应该如何实现有效的需求分析和产品设计。

我们在进行需求分析时,很重要的一个知识点就是目标产品诞生的背景,该背景给出以下几个关键问题。

(1)为什么会开发这个产品(或系统)﹖其答案解释了目标产品存在的根本原因及为什么会有这样一个产品诞生。在开发过程中出现一些无法调和的争论时,我们都可以通过这个答案来思考,究竟哪种观点更正确。

(2)这个产品主要解决什么问题(其价值是什么)﹖我们开发的产品一定要解决某些现实问题,该问题的答案决定了目标产品的成败和最终实现的完美程度。举个例子来说,如果开发一个产品的目标是让整个团队的合作效率更高,但我们开发的产品比较难用,反而使团队的效率降低,那么功能再多也是失败的。

(3)哪些角色会与这个产品打交道?其答案直接给出了系统设计中的角色-用例图,还通过深入分析不同角色的立场、诉求、偏好习惯、在整个业务流程中发挥的作用等多方面的细节,给出了用户界面(UIUE)设计的基本要求和参照标准,而后从原型界面出发,深入结合业务流程分析和设计的常识,推出较为精确的领域数据模型和对应的数据库设计。

接下来用上述思路分析公益项目wuhansun。

第1个问题:为什么会开发这个产品?

先看一下相关背景:在武汉发生疫情期间,来武汉支援的医护人员不断增加,本地很多医护人员因为抗疫需要奔波在不同区域。但是,因为抗疫需要,武汉于2020年1月23日实行全面封城,暂停各类经营活动,包括酒店民宿与公寓类业务。这就导致了社会上有大量空闲房间,而大量医护人员无处住宿的矛盾!所以急需一个有效的、操作简单、直观便利的信息共享系统来改变现状,这就是公益项目 wuhansun 诞生的背景。

第2个问题,这个产品主要解决什么问题?从之前的背景分析来看,wuhansun项目需要解决的关键问题如下。

  • 解决缺乏有效的信息共享系统的问题,单靠志愿者们手工转发住宿需求和住宿供给信息,容易导致信息不全和丢失。
  • 志愿者自发发起的活动缺乏完整、规范的处理流程,效率低下。
  • 缺乏必要的公开记录,对于维持志愿者的信心不利。

总结下来,我们需要一个准确记录了医护人员住宿申请及酒店民宿供应清单的系统,利用这个系统按照规范的流程进行协作,尽可能提升医护人员与酒店的对接能力,让尽可能多的医护人员不再为住宿问题发愁。

第3个问题,哪些角色会与这个产品打交道?

经过背景分析,我们梳理出来的角色有:志愿者、酒店人员、求助者。

志愿者一方面可作为“代理人”,代理求助者的住宿申请;也可参与核实求助者发布的住宿申请,帮助对接目标酒店。至此,我们基本可以给出该系统的角色用例图了。

架构解密分布式到微服务:架构实践公益项目wuhansun实践

根据分析,这里有3个领域对象,分别是:入住申请单;酒店房间清单;核实单。

这里的主要流程是入住流程,即申请→接单→确认入住。根据设计经验,该流程都会与某个领域对象的状态相关联,因此入住申请单这个领域对象对应的状态图如下。

在这里插入图片描述

入住申请单的主流程状态的变迁过程为“待核实(起点状态)→已核实→已接单→已入住(终点状态)”。另一个终点状态为“己取消”,发布者可将还未安排的入住申请单取消发布。

入住申请单是用户发布的,每个用户都负责自己发布的入住申请单,所以入住申请单还需要与用户表相关联,增加用户ID。此外,在入住申请单里还需要两个用来匹配酒店的关键字段:希望入住的城区及位置。除此之外,还需要入住人员的联系方式、身份信息(如医护人员、志愿者、工地建设者等)、单位、入住人员的数量、期待入住日期、入住天数及其他特殊要求等信息。为了证明身份,通常还需要一些纸质文件,比如医院或红十字会开具的证明,这些可以作为附件关联到入住申请单,方便志愿者核实。

酒店房间清单这个领域对象则相对简单很多:可认为不涉及流程,只有简单的增删改查功能。它也关联酒店用户,主要字段包括:酒店或民宿名称、所属城区、位置、联系电话、可安排房间数量、已接待医护人员数量、房间描述、酒店描述、是否针对医护人员免费、优惠房费(在不免费的情况下)等信息。其中,可安排房间数量、已接待医护人员数量这两个字段由酒店人员灵活编辑和维护,不针对性关联,因为酒店房间可能会通过其他渠道被安排。增加“己接待医护人员数量”这个信息,是为了让求助者或志愿者清楚这个酒店安排住宿的可能性。另外,考虑到部分求助者是愿意付费的,酒店在这种情况下也愿意安排更多的住宿,因此我们给酒店提供了一个明码收费的可选项。

如果你觉得自己学习效率低,缺乏正确的指导,可以加入资源丰富,学习氛围浓厚的技术圈一起学习交流吧!
[Java架构群]
群内有许多来自一线的技术大牛,也有在小厂或外包公司奋斗的码农,我们致力打造一个平等,高质量的JAVA交流圈子,不一定能短期就让每个人的技术突飞猛进,但从长远来说,眼光,格局,长远发展的方向才是最重要的。

核实单这个领域对象比较简单,也有其重要价值,因为这是一个没有审核的自由平台。为了鉴别入住申请的真实性、有效性,需要更多的志愿者及酒店工作人员去核实,每次核实都增加了该申请的可信度,在每次核实时都需要记录核实时间,以及核实的文字性描述,比如“今天电话联系了对方,的确属实,希望能有人帮助”。因此,核实单与入住申请单之间是多对一的关系。在核实单里只有几个字段:是否真实、核实时间、核实内容及关联的核实人的ID等信息。

下面给出了系统中主要用例与领域对象的关系图。

架构解密分布式到微服务:架构实践公益项目wuhansun实践

本系统的最终ER图如下所示。按照医护人员的实际需求,该系统增加了“按照医院找酒店”的功能,所以增加了酒店与附近酒店的关联表。考虑到当时交通不便,因此距离就成为很重要的参考因素。

架构解密分布式到微服务:架构实践公益项目wuhansun实践

我们继续接下来的重要分析和设计,即设计UIUE或者原型界面,该过程及其输出成果也很重要:首先,该过程也是对我们“角色-用例-流程”的分析设计结果的一个验证,可能会补充遗漏的重要用例和流程节点;其次,原型界面直接验证了我们的领域模型对象设计的完备性,一些遗漏的属性都会在这里被直接反馈出来;最后,原型界面的设计过程也在很大程度上决定了我们可选的前端框架。以上面的公益项目wuhansun为例,从背景分析的信息来看,目标产品需要能在手机上完成所有操作,而不依赖计算机端的业务操作,因为大部分人可能不具备计算机办公的条件。此外,所有的功能界面都应该简洁、易操作,不用经过任何培训。鉴于以上两点考虑,这里给出如下原型设计。

首先,用户进入系统看到的主界面只有四个入口,如下图所示。

  • 查看入住需求入口:显示所有处于活动状态的入住申请单,志愿者、酒店人员可以进入查看列表,在核实或者联系后接单。
  • 查找房源入口:提供简单、高效的房源查询,按照城区及地址关键字查询是否有可用的房源,求助者和志愿者都可以查询并联系或者下单相关酒店。
  • 酒店入口:酒店用户专用,用来录入和维护房源、订单等信息。
  • 管理入口:系统管理专用,只实现必要的字典表维护及用户管理功能。
    架构解密分布式到微服务:架构实践公益项目wuhansun实践

接下来给出上述菜单对应的几个复杂点的主界面设计,先是“查看当前入住需求”菜单对应的主界面,如下图所示。

架构解密分布式到微服务:架构实践公益项目wuhansun实践

这是一种以非表格方式展示的查询列表,如果仔细看,你会发现每一行都像一个完整的句子,由表格中的列合理组合而成,这种展示方式有利于我们快速阅读和理解。另一种常见的设计技巧也在这个界面展示出来:根据数据(状态)的不同提供不同的操作按钮,在避免误操作的同时提升了用户体验。此外,在设计表格类界面的时候,我们很容易忽视以下几个重要的细节,这些细节会影响用户体验,也是设计经验和功力的一个体现。

  • 选择怎样的默认排序?究竟哪些数据需要排在最前面?可能会有多个字段的组合,在更复杂的情况下,可能不是简单的一个SQL语句就能解决的。
  • 哪些查询是最有价值的?这里应该是基于业务的深度思考,而不是简单地罗列各种字段让用户组合选择。在某些情况下,用户的一个查询输入都可能涉及复杂的查询逻辑。

首先,在上述界面中默认显示所有待核实与已核实的申请,即活动状态的申请及最新申请排最上面,以便最新的申请能快速得到响应。此外,酒店人员也可以通过“我来接单”按钮快速接单或者抢单。

上述界面中的“查看详情”界面也很关键,因为这是个使用频率比较高的功能。比较好的设计是在详情页面中显示此域对象相关的一些重要信息,比如该酒店附近的医院分布及距离、大家的评价、最近一周的接单情况等。

其次,“查找房源”菜单对应的主界面如下图所示。

架构解密分布式到微服务:架构实践公益项目wuhansun实践

列表按照可安排房间的数量+城区两个字段排序,将每个城区空房数量最多的排在最前面,这通常意味着酒店规模比较大,接待能力强。在列表中查询时可以选择医院,从而过滤出该医院附近的所有酒店列表,方便医护人员快速查找酒店。上述界面的最好实现方式,是当选择某个医院查询时,在酒店信息中增加“距离目标医院100米”一项,方便用户准确选择;此外,这里增加了“申请住宿”的功能按钮,可以实现快速申请。在求助者点击该按钮后,会出现下面的生成入住申请界面。

架构解密分布式到微服务:架构实践公益项目wuhansun实践

在上述界面中给出了与目标医院相关的所有酒店,如果在上面的查询界面能增加酒店与医院距离的信息,则这个界面是可以省去的。用户在选择了目标酒店以后,就可以开始录入入住申请单并提交了。此时入住申请单里的酒店ID已经被赋值,酒店人员可以在“我相关的入住申请”列表里看到如下图所示的申请。

架构解密分布式到微服务:架构实践公益项目wuhansun实践

如果可以接此单,则点击“接单”按钮完成订单;如果放弃,则点击“拒绝”按钮,操作起来很直观、方便。该系统的其他几个界面相对简单,功能也直观,这里就不一一罗列了。

写在最后

最近我整理了整套《JAVA核心知识点总结》,说实话,作为一 名 Java 程序员,不论你需不需要面试都应该好好看下这份资料。拿到手总是不亏的~我的不少粉丝也因此拿到腾讯字节快手offer,点击下面图片↓直达领取

好了,以上就是本文的全部内容了,如果觉得有收获,记得三连,我们下期再见。

标签:入住,酒店,架构,实践,医护人员,核实,wuhansun,界面,申请单
来源: https://blog.csdn.net/m0_58479954/article/details/117534478

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有