




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
绪论1.1研究背景伴随着现代社会的发展,人民群众的精神文化和物质文化都得到了很好的发展。随着社会对个人卫生的重视,对个人卫生的要求也在不断提高。在各部门积极进行每年一次的健康检查,做到了发现疾病,早治疗、早预防。在医疗卫生检查工作中,运用现代的计算机技术,对医疗卫生检查工作进行了深入研究,为医疗卫生检查工作的开展和开展,使医疗卫生工作更加有效和方便。为了减少医疗费用,提升体检的效率,对体检中心的工作过程进行更加科学化的标准化,将医院的体检报告的自动打印系统进行运用,采用手机代替了外接的终端机,并在其内部安装了RFID存储读取卡,从而减少了系统的运行费用。此外,本项目还将实现手机端的身份验证与支付功能,降低手机端对外界信息的依赖性。此外,该软件还能为维护者和管理者分别设计相应的软件,从而增强了维护者的实时性。1.2研究目的和意义针对当前我国尚无一种较为完善的面向手机的医学检查报告自助打印系统,本课题拟以REST为基础,通过对手机的辅助功能进行改进,建立一套面向手机的医学检查报告自助打印系统。为所有参加医疗检查的人员提供方便和有效的服务。(1)移动打印的需求者对那些想要手机打印的人来说,他们可以通过手机来完成自己的医疗检查,这样就不会再带着RFID储值卡之类的银行卡来进行身份验证,也不会再收取打印费了。上传文件,验证身份,支付费用,都可以用手机来完成。而且,当该印刷工作结束时,该印刷工作的结束情况将由该移动终端向使用者反馈。为用户节约了等候时间。(2)打印设备的维护者同时,也为印刷装备的维修提供了一种方便、快捷的方式。因此,维修人员能够及时地补充消耗品,例如:纸、墨粉等。并能迅速地对出现异常情况的打印装置进行处理。(3)打印设备的管理者针对印刷装置的管理者,采用了一种可移动的装置来取代外部的终端机和卡片读取机。该方法能够有效地减少部署费用、维护费用和失效修复费用。为手机上的列印服务设定不同的收费。该系统还能通过数据分析,使用者更容易、更快捷地了解体检报告的发展趋势。
2相关技术2.1REST架构的特点2.1.1概述REST隐含的状态迁移是一种跨平台跨语言的体系结构。该体系结构是由罗伊·托马斯·费尔丁教授在2000年度的一篇文章《架构风格与基于网络的软件架构设计》中提出的。在这篇文章里,Fielding教授提出了6个关于REST体系结构类型的体系结构限制。一个可以符合这6种体系结构要求的
Web服务叫做RESTful。费尔丁教授还是HTTP协定规格书的第一个撰写者。REST体系结构样式的限制:(1)client/server体系结构。只有客户机才可以启动这个要求,并且服务器要对这个要求做出回应。(2)nonstatussession。客户机与服务器通讯不受状况限制。通讯的工作阶段在客户机上被完整地记录下来。(3)Cache。在一个网络中,当一个信息被高速缓存时,一个信息要求被高速缓存器的信息必须被显示出来或者隐藏出来。因此,客户机可以重复使用这些数据。(4)集成界面。通信链路各部件之间采用了一个标准的界面,使得整个体系结构得到了进一步的优化,并且使得体系结构更加简单明了。(5)阶层划分。在此基础上,提出了一种新的体系结构,以满足日益扩大的网络结构。这还会约束元件间的互动,让他们仅限于邻近的层级。(6)按需播放的程序。REST让客户可以将一个正在执行的指令码进行卸载,这样就可以减少客户机预先执行的许多特性。2.1.2AndroID平台下的REST实现安卓系统在进行软件设计时,必然会涉及联网技术,而安卓系统的收发一般都采用HTTP通信方式。在AndroID中,有两个API用于向用户发出HTTP的要求,ApacheHTTPClient和HTTPURL连接。所以,这两种类型的API将被大部分的与互联网有关的程序所采用。尽管Google的正式建议就像ApacheHTTPClient那样,在向HTTP请求发出时也可以用HTTPURL连接。如果不对它们进行包装,那么很可能会很简单地对它们进行复制。此外,OKHTTP代替了HTTPURLConnection在AndroID4.4及其后的源代码中的执行。与ApacheHTTPClient有关的API已经从AndroID6.0中移除了。所以,OKHTTP就成了一个无法避免的选项,它可以向HTTP请求发出。OKHTTP是由Square公司开发的一个非常出色的HTTP申请工具,它可以在HTTP的基础上处理GET申请,POST申请,还可以在HTTP上处理文档。利用响应快取技术来防止出现重复的网络要求。利用线程共享来降低回应时延。OKHTTP也解决了很多普通的联网问题.比如,如果有一个以上的IP位址被设定为服务器。当上一个IP的连接不成功时,OKHTTP将会在下一个IP上进行切换,从而增强了该网络的鲁棒性。OKHTTP还提供了一种针对ProxyServer和SSL交换失效的方法。2.2WebService构建技术2.2.1Spring框架SpringFramework是一种基于JAVAEE的轻量化开发工具,它可以提供一种一站式的方法来构造企业的程序。Spring可以很容易地处理事务,Bean容器,切割要求。这样既可以减少中间件的设计,又可以减少设计过程的复杂度,同时也可以大大的提升设计效率。在4.x中,Spring的架构由如下模块组成:核心容器(corecontainer)模块(dataaccessandintegration)模块(DataAccessandIntegration)模块(web模块)、AOP模块(AudioOrganization)、工具模块(ToolsModule)、消息发送(Module)、以及Test模块(Module)。如图2-1所示。图2-1Spring框架图核心容器模块主要包含Core、Beans、Context和SPEL。核心与Bean为该架构的架构奠定了基石,并为其带来了对倒置与相依关系的影响。Bean工厂能协助使用者从程式的逻辑上将相依性与组态分开。上下文是建立在核心和Beans之上的。通过JNDI,context可以为通过JNDI来登记的物体提供一种存取方式。SPEL为一种表示语言,它能在执行阶段对一个目标进行询问并操纵。其中,数据库的存取与整合部分由JDBC,ORM,OXM,JMS,事务等组成。JDBC模型为JDBC的应用程序设计了一个JDBC的抽象化层次,从而降低了对数据库进行存取、分析时所产生的冗长代码所需的冗长代码。ORM模型是一种面向对象的关联地图API的整合平台。Spring的全部功能都可以用于ORM模块。例如:交易。OXM模组为物件/XML的对应关系,并为物件/XML的对应关系提供一个抽象化的架构。JMS模块的作用是实现信息的某些处理。交易模组支援编程与宣告的交易。2.2.2EclipseLink框架JPA2.1是一个正式的Java持久性标准,该标准利用了一种面向对象的关联映射技术,在一个应用中实现了关联数据的有效处理。而EclipseLink则是JPA2.1的参照实施方案。Eclipse链接被称为顶级链接。Oracle通过启动和主导持久性EclipseLink这个被称为EclipseLink的企业ORM平台的编码来帮助Eclipse社群。EclipseLink持久性工程包含了许多构件,其中包含了ORM,OXM,SDO,DAS,DBWS,XR,EIS等构件。在这些构件中,EclipseLink-ORM构件为面向JPA的可扩充ORM架构提供了一种新的方法。给工程以强有力的缓冲能力,并对集群缓冲进行缓冲。EclipseLink-OXM构件为JAXB的目标与XML的数据结构之间的关系,提供了一种新的方法。EclipseLink在ORM、OXM基础上,还为SOA提供了一些新的技术,例如,在Web服务中,通过ORM、SDO等技术,实现对领域模型的配置,以及通过DAS等技术,实现对实体的配置。3需求分析3.1系统需要解决的主要问题通过对现行体检报告自动印刷的分析,我们认为该自动印刷系统的缺陷有:(1)依赖于RFID储值卡的问题在已有的应用中,一般都是利用RFID技术来完成对客户的身份认证和打印收费等功能。但其不足之处在于:要想获取RFID储值卡的相关数据,必须另外配置一台卡片阅读器,从而提高了配置的费用;当RFID存储卡的读写器发生错误时,将不能对其进行认证。另外,由于不能支付医药费,也给医疗机构提供了方便快捷的医疗服务。(2)依赖于PC端的问题目前,体检报告的自动打印主要包括打印文件的上传,打印设备的维护,打印服务的资金的使用等。但是,为了达到以上目的,使用者需要将已完成的文件以便携式记忆体储存于与医疗检查结果自动显示系统连接的个人电脑中;印刷装置的维修工,要经常在电脑前巡视,检查印刷装置的工作状况;医生们只有在电脑上才可以使用医疗检查结果的自动印刷功能。所以,过分依靠PC会降低系统的服务质量。(3)尚没有支持移动设备的方案在手机及手机网络快速发展的今天,已有的面向个人电脑的医疗诊断服务已无法适应手机医疗服务的需要。但是,目前尚无一种基于手机的医疗健康检查结果自动打印系统。3.2系统的功能需求医疗卫生服务中心在医疗卫生服务中心工作中发挥着重要作用。通过对患者自我印刷医疗检查结果的统计,可以帮助患者找到并确定医疗检查结果的具体要求。在图3.1中显示了该系统的角色:(1)移动打印的需求者1.文档管理最大的作用就是对需要印刷的文档进行处理。这包括增加文件,更新文件,删除文件,向服务器上载文件。并且可以获得从服务器上载档案的清单。2.任务管理负责对印刷工作进行控制。在选定了一个工作表之后,使用者可以看到工作表中的工作表,也可以对工作表中的工作表进行更改或删除。开始或终止按实际需求的印刷工作。并可以从服务器取得工作清单。3.订单管理命令有两种类型。其中一种是印刷订单。工作细节,被用来说明一个印刷工作。另外一种类型是支付凭证。使用者说明整个订单的付款状况。而订单的处理则是对两种类型的定单进行检视与追踪,以保证印刷工作的顺利进行。(2)打印设备的维护者对已登记的打印机进行管理。在打印现场,按照现场的具体状况,进行打印设备的登记和撤销,检查设备的工作状况,确保其工作状况良好。可以随时修改打印地点的资料。(3)打印设备的管理者1.用户管理获得来自服务器的使用者清单的能力。在实现了对名单中使用者的资讯进行资讯处理时,针对使用者所扮演的角色设定了相应的使用者授权。2.财务管理您可以根据您的印刷工作来设定费用。并且可以按照实际情况,对有关的经营数据进行自动化的统计。比如每一种用纸的用纸量等等。在完成真实的商业过程的基础上,为用户提供医学报表的自动打印系统。在此基础上,结合医疗机构的实际情况,对医疗机构的医疗服务进行了全面、深入的研究,并提出了相应的解决方案。该软件包括:用户管理,设备管理,文件管理,订单管理,任务管理,以及资金管理。在图3.1中给出了详细的说明,在图3.2中给出了各个功能的说明。图3.1用例图图3.2系统功能模块图
4系统总体设计4.1系统架构概述同时,还解决了在手机上使用的客户识别、打印收费等方面的问题。因此,在REST框架下,设计并实现了医疗诊断报表的自动打印。系统包括移动终端,系统服务器,以及印刷装置。由于采用了一种新型的手机端取代了传统的印刷设备和阅读机,使得系统的部署、维护和修复费用大大减少。该系统服务器将会由原始的列印装置来进行运作。在此基础上,提出了以手机为核心的C/S体系结构。在此基础上,提出了一种基于REST体系结构的手机和系统服务器之间的通信方式。使用者可利用手机的无线网路,透过手机接驳到电脑的电脑上。利用HTTP通讯协定和系统服务器通讯。手机和服务器之间的信息以JSON形式交换。通过手机进行通讯,实现了对使用者资料、印刷资料的收集、上载,以及对系统服务器所需要的使用者资料的收集。该系统的工作是对用户提出的各种要求作出相应的回应。实现了对商业逻辑及数据的接收,检查,分析及存储。印刷装置分为印刷、复制一台或一台纯粹的印刷机,它的基本作用是实现印刷工作。系统部署视图如图4.1所示:图4.1系统部署图4.1.1系统交互过程在图4.2中,说明了该手机和该系统服务器之间的互动过程。在此基础上,通过对数据流的分析,提出了一种面向数据流的数据流模型,并通过数据流模型向数据流模型中的数据流模型来实现对数据流的分析。最后,手机终端会在接口上显示出使用者的动作。图4.2系统时序图4.1.2系统服务器该系统的服务器是一种层次结构,它包括RESTAPI(SystemResourceLayer,RESTAPI)、业务逻辑层(业务逻辑层)以及数据存取层。JAVA是一种用于发展的语言,而Tomcat则是一种用于Web服务的服务(Servlet
Container)。在图4.3中显示了该系统的服务器体系结构:图4.3系统服务器架构图4.1.3移动终端该系统采用MVP(模型-视图-Presenter)体系结构,并在开放源代码安卓系统上实现。以安卓Studio为平台,以Gradle为平台,以Gradle为平台。将该移动终端划分成一个数据层,一个视图层,以及一个视图层。在MVP体系结构中,这个资料层与模型相对应。图4.4移动终端架构图(1)数据层(DataLayer)该数据层基本上包括了一个数据管理器,以及几个根据需要产生的次要类。这一层次的工作是从系统的服务器端获取资源,对数据库中的信息进行处理,以及对第三方软件开发工具的访问。在此基础上,通过Rxjava架构,将其作为一种非同步的事件流进行操作。在该架构中,操作符可以对帮助人员类别所传回的资料进行合并,筛选,以及转换。其中,次要类的作用是完成特定的模块功能。例如:请求资源,数据持久性处理,对微信支付SDK的调用等。针对资源需求,提出一种新的解决方案,以改善系统对任务的反应速度,降低任务负载。利用由Square提供的Retrofit和OKHTTP两个工具,来建立一个支持网络助手的类。Retrofit架构是一组允许帮助用户以REST方法进行资源的REST级别的网络要求架构。OKHTTP架构能够执行HTTP的网路要求,并利用Gson架构来分析及包装JSON资料。三种方法在REST语言中互相帮助,共同完成了REST语言中对REST语言的要求以及对REST语言中的表达方式的分析。至于持久性,则是依赖于优先级助手和数据库助手来处理共享优先级和SQL数据库中的数据。WxpayHelper的功能是通过对“微信付款”软件包的调用实现的。(2)视图层(ViewLayer)其中,视图的作用是对接口的事件进行处理,并对接口的视图进行渲染。在安卓系统中,以上的交易主要是通过片段,活动,视图组等来进行的。(3)视图处理层(PresenterLayer)视图处理层的目的是为了减轻视图的负担,让视图更多地关注于渲染接口。在这个层次中,将所要显示的接口信息通过这个层次的变换而产生,并且在这个层次中,可以从这个层次中调用对应的方式,作为一个视图的调度者。在此期间,为了进行接口的展示,这个层次也订购了数据管理器所传回的可查看的对象。4.2系统功能详细设计4.2.1身份认证设计在使用手机网络时,需要对手机的使用者进行身份验证。该系统采取了一种以Token为基础的身份验证方法,并且具有一种在图4.5中表示的互动时间序列:该手机终端利用一个用户名称和口令要求登陆。该系统的服务器将会确认使用者名称及口令是否正确。在确认了身份之后,按照相应的规则,将身份认证的身份认证结果输入到手机上。手机端保存使用者的注册资讯。该手机通过登录托克来要求该系统的资源。在确认登录Token是否通过后,该系统服务器将它所要求的资源发送给该手机。在这个认证过程中,可以执行“User-login/login”的操作。上面的过程还说明了一个手机终端对网络的要求。图4.5身份认证时序图在进行身份验证时,首先要向服务器上载使用者名称及口令。然而,由于用户的口令十分机密,因此对口令的保密就变得十分关键。另外,验证、更新、更新的登录记录和更新对验证系统的安全运行起着至关重要的作用。(1)用户密码加密哈希方法是一种能把任何一段的输入变换成一段一段的输出的方法。报文提取是目前被普遍采用的一种密码哈希方法。罗纳德·利维开发了其第5版本MD5,能够产生128比特的哈希数(16比特)。利用MD5算法对该使用者的口令进行了加密。然而,由于不了解哈希变换后的加密域,通常不能恢复为原始加密域,因此,需要对加密区域进行加密。然而,由于大虹光表技术的出现,使得对哈希密码的解密有了可能。在虹光表格中,只要在MD5的数值上进行查找,就能快速地破译出原来的口令。这对于整个体系的安全性来说,是一个巨大的隐患。在MD5的加密过程中,要对使用者的口令“加盐”,以达到更好的保密性。“加盐”就是把一个特定的字符放到一个特定的地方,就是一个特定的代码。而“加盐”则是将一个已被嵌入了一个已知的字串中的一个字段用哈希表示,它与未被嵌入的字段用哈表示是两个完全不同的概念。将“加盐”后的口令域设置为最小化了由于用户资料被拦截所引起的口令泄漏的危险。虽然在MD5的加密之前,从彩虹表格中可以获得原来的域,但因为经过了盐分的加工,所以获得真正的口令的可能性也会大幅度下降。(2)用户登录信息设计在手机申请登陆的时候,该软件会对用户名称、登陆口令进行认证。若验证成功,就会按照规定产生使用者的登入资讯。登录信息包含:登录信息ID,创建时间,用户ID,移动端IP,上次请求时间,LoginToken,以及LoginToken的期限。登录Token是一个惟一的证书,用于向一个手机申请一个资源。LoginToken包含32比特的字段,它是按照UUID规范产生的.在用户提出请求后,对用户提交的日志Token进行认证。并在此基础上,建立了一个新的注册标记,并对注册标记的有效期进行了设定,并对注册标记进行了更新。然后将新的登录标签传回至手机,从而实现了对登录标签过期时间的延展。在MD5的加密过程中,要对使用者的口令“加盐”,以达到更好的保密性。“加盐”就是把一个特定的字符放到一个特定的地方,就是一个特定的代码。而“加盐”则是将一个已被嵌入了一个已知的字串中的一个字段用哈希表示,它与未被嵌入的字段用哈表示是两个完全不同的概念。将“加盐”后的口令域设置为最小化了由于用户资料被拦截所引起的口令泄漏的危险。虽然在MD5的加密之前,从彩虹表格中可以获得原来的域,但因为经过了盐分的加工,所以获得真正的口令的可能性也会大幅度下降。图4.6文档上传时序图4.2.2移动支付设计为了完成报关费的付款,使用了微信的密码进行付款。首先要在手机上进行登记,然后才能在手机上整合到手机上来。在经过审查之后,您将得到一个
APPID。APPID是一个独一无二的申请,它表示这个申请可以使用手机付款。在图4.7中显示了这些交互的次序。为使其与第三个系统的模组呈现一致,在此,在此将此影像中的手机代表成一个医疗检查的自取的服务器,而在此影像中,则代表着医疗检查的自取的服务器形态。图4.7移动支付时序图在手机上填写自己的订购信息,然后在手机上点击“微信付款”。当系统服务器接收到付款要求时,会透过“微信付款”的“通用订购界面”来取得付款指示码。当您获得了一个预先订购的ID之后,您可以加入一个用于产生一个使用者付款的订购的签名。对API的访问,该特征是一种安全性增强。在接收到“统一订单”API的呼叫后,会对其进行签字验证,并对其进行判定。并由该系统的服务器产生及储存使用者的付款指示。在确定了付款请求之后,手机端就可以通过SIM卡的SDK来启动付款请求。在确认了付款条件之后,会有一个弹出的弹出的弹出的口令。在此过程中,使用者只需在手机上键入付款口令,就可以在手机上进行付款。事务处理的结果会被以不同步的方式告知给系统服务器。该系统服务器从该服务器收到付款的讯息,并将其储存。不过,要确保付款协议的可靠。手机终端对该系统服务器发出该申请,并在该申请中,重新经由该申请,在该申请中,手机终端对该申请的申请进行了申请。将该查询的结果向使用者显示为付款事务的最后结果。并对客户的付款次序进行了更新。在以上步骤中,使用者要对印刷工作进行确定,然后要选择微信支付,然后才能确定的付款订单,然后再输入自己的密码,然后才能进行付款。本公司将于手机上呈现使用者之付款指示,并请使用者验证及填上付款口令。支付订单的内容是以微信支付的统一订单
API为基础,并以呼叫支付所需的参数为基础来进行的。此外,还必须考虑到了对自助打印医学检查报告的业务要求。4.2.3任务执行设计工作的实现就是把使用者所提交的文件,经由印刷装置进行输出。该移动终端向该工作发出一个请求,以完成该工作。通过该方法,该方法可以实现对该打印作业的操作。接着,对进行该作业的印刷装置的状况进行查询,并向该移动终端回送该印刷装置的状况。调节印刷装置的工作状况。该手机端定期地询问其工作的执行情况。它的互动定时显示在图4.8中:图4.8任务执行时序图4.3系统数据集的设计对系统中的数据进行适当的计划,是进行
REST全功能
Web服务的前提。该软件包括:用户管理,设备管理,文件管理,订单管理,任务管理,资金管理等。用户管理的主要内容有:权限,角色,角色权限,用户信息,标记信息等。装置管理模组所包含的资料包含装置布置面积与装置资讯。文件管理的主要内容是文件的内容。其中,订单处理的主要对象为客户订单以及订单的付款情况。在此基础上,提出了一种基于时间序列的时间序列分析方法。所述的金融管理模式包含有单位价格资讯。授权列表(Authority)是用来记载和维护该系统的授权的。其中含有域:许可ID,许可名称,以及建立的日期。表4.1权限表数据项字段名数据类型备注权限IDauthority_IDint(10)主键权限名称authority_namevarchar(20)创建时间authority_create_timedatetime角色表(role)是一个用来记录和保持一个人物的人物信息的列表。其中包括:角色
ID,角色名称,以及建立的日期。表4.2角色表数据项字段名数据类型备注角色IDrole_IDint(10)主键角色名称role_namevarchar(20)创建时间role_create_timedatetime角色权限表(authority_role)记录保存角色与权限的对应关系。其包含字段:角色权限ID、角色ID以及权限ID。表4.3角色权限表数据项字段名数据类型备注角色权限IDauthority_role_IDint(10)主键角色IDauthority_role_role_IDint(10)权限IDauthority_role_authority_IDint(10)用户表(user_info)将该使用者的帐号资料记载在使用者表格(user_info)中。包括域:用户ID,用户名,用户密码,用户性别,用户删除标志,用户状态标志,用户角色ID,用户登录标志。表4.4用户表数据项字段名数据类型备注用户IDuser_IDint(10)主键用户名user_namevarchar(10)用户密码user_passwordvarchar(10)用户性别user_sexvarchar(2)删除标记user_delete_flagchar(1)状态标记user_state_flagchar(1)登录标记user_is_login_flagchar(1)用户角色IDuser_role_IDint(10)用户登录信息表(logininfo)使用者登入资讯(Login
Info),记载和储存使用者的登入资讯。包括的域有:用户登录信息ID,用户ID,移动端IP,登录标签,创建时间,上次请求时间,登录标签年龄。表4.5用户登录信息表数据项字段名数据类型备注用户登录信息IDlogin_IDint(10)主键用户IDlogin_user_IDint(10)移动终端iplogin_client_ipvarchar(20)LoginTokenlogin_tokenvarchar(32)创建时间login_create_timedatetime最近一次请求时间login_lastest_requestdatetimeLoginToken时效login_expired_timedatetime文档信息表(file_info)其中包括:文件ID,文件名称,文件路径,文件大小,文件类型,文件使用标记。表4.6文档信息表数据项字段名数据类型备注文档IDfile_IDint(10)主键用户IDfile_user_IDint(10)文档名称file_namevarchar(100)文档路径file_pathvarchar(100)文档大小file_sizevarchar(100)文档类型file_typechar(10)文档使用标记file_use_flagchar(1)设备放置区域表(area)用于记载和存储印刷装置的安装区信息。包含以下字段:装置安装区ID,装置安装区名称,装置安装区编号,装置安装区删除标记,创建时间,上次编辑时间。表4.7设备放置区域表数据项字段名数据类型备注设备放置区域IDarea_IDint(10)主键设备放置区域名称area_namevarchar(20)设备放置区域编号area_novarchar(10)设备放置区域删除标记area_delete_flagchar(1)创建时间area_create_tidatetime最后一次编辑时间area_last_edit_timedatetime设备信息表(device)记载和保持该印刷装置的相关信息。包括域:装置ID,装置号,装置名称,装置存储区ID,装置状态,装置删除标志,装置故障代码,装置故障标志。表4.8设备信息表数据项字段名数据类型备注设备IDdevice_IDint(10)主键设备编号device_novarchar(10)设备名称device_namevarchar(30)设备类型IDdevice_type_IDint(10)设备存放区域IDdevice_area_IDint(10)设备状态device_statechar(1)设备删除标记device_delete_flagchar(1)设备故障代码device_failure_codeint(11)设备故障标记device_failure_flagchar(1)用户订单表(order_info)中记载和保持UserOrderOrder的信息。包括域:订单ID,任务确认ID,订单使用者ID,订单单价,订单总额,订单时间,支付标志,文件总数。表4.9用户订单表数据项字段名数据类型备注订单IDorder_info_IDint(10)主键任务确认IDorder_info_job_info_IDint(10)订单用户IDorder_info_user_IDint(10)订单单价order_info_unit_pricefloat(7,1)订单总价order_info_total_priceloat(7,1)下单时间order_info_order_timedatetime支付标记order_info_payment_flagchar(1)文档总数order_info_file_numint(11)支付订单表(payment)记载和保持付款订单的信息。包括域:流水号码,订单ID,用户ID,支付方式,创建时间,发票标签,备注,商品描述,交易标题,第三方支付订单号码,订单总额,收款ID。表4.10支付订单表数据项字段名数据类型备注流水号payment_stream_IDint(10)主键订单IDpayment_order_IDint(30)用户IDpayment_user_IDint(10)支付手段payment_pay_wayvarchar(50)创建时间payment_create_timedatetime发票标记payment_give_bill_flagchar(1)备注payment_remarkvarchar(50)商品描述payment_detailchar(255)交易标题payment_subjectchar(255)第三方支付订单号payment_out_trade_nochar(64)订单总额payment_total_amountchar(9)收款IDpayment_seller_IDchar(16)5系统服务器的实现在这一章中,我们将从该体系结构出发,详细地阐述该体系结构中各个层次的整合技术及整合方式。以身份认证,文件上传,手机支付,以及完成工作等为实例,对以上各方面的应用进行了说明。5.1运行环境搭建系统服务器采用Maven被该系统的服务器用于建立并管理该工程。Maven是一个出色的自动化项目建设,依赖关系管理,以及项目资讯管理的软件。在表格5.1中列出了构建该系统服务器所需要的架构与Maven相关性。表5.1Maven依赖列表GroupIDArtifactIDVersionRemarkorg.apache.tomcattomcat-servlet-api8.0.32Servletorg.glassfish.jersey.containersjersey-container-servlet2.22.2Jerseyorg.glassfish.jersey.extjersey-spring32.22.2Springorg.springframeworkspring-core4.2.5Springorg.springframeworkspring-beans4.2.5Springorg.springframeworkspring-web4.2.5Springorg.springframeworkspring-test4.2.5Springorg.springframeworkspring-tx4.2.5Springorg.springframeworkspring-orm4.2.5Springorg.eclipse.persistenceEclipseLink2.6.0EclipseLinkmysqlmysql-connector-java5.1.38MySQL5.2系统资源层的实现在接收到用户的请求之后,该系统将与相应的
RESTAPI相匹配,完成特定的业务流程。要实现以上的配对,必须先由系统服务器来确定所需的资源。资源包含:实体类,实体集合类,资源路径,资源类。5.2.1实体类的定义首先您必须为一个资源定义一个Entity类别。例如,任务信息类别中,任务信息类别中,包含了主键信息,任务服务时间,任务删除标签,任务备注,任务颜色,任务纸张类型,任务页数,任务副本数等等。对于以上的特性应该有获取和设置的方式,并且在图4-1中显示了一个任务的类型。图5.1任务信息类5.2.2集合类的定义在对数据收集的过程中,将其进行了包装,并进行了相应的定义。通过对一种类型的资源进行注释来包装,可以在返回的值中再包装一次
XML或
JSON的数据。在图5.2中显示了一个任务资讯收集类:图5.2任务信息集合类5.2.3资源类的定义在这里,@Path用于声明任务信息资源的路径,在这里,@Path_Path_press_press_press_press。而@GET用于处理HTTPGET的要求,它与getJobInfosByUserID()相匹配。@Produces为GET要求的返回提供了一个MIME的形式。请指出,特定的商业逻辑通过JobInfoService和PrinterService这两个商业类型来实施,它们都是@Autowired注释的。对于Spring框架来说,@Autowired注释是必需的,它可以通过@Autowired注解完成JavaBean的依赖注入来实现对JavaBean进行分类。在图5.3中显示了一个TaskInformationResources类别:图5.3任务信息资源类按照上述的方法,构建了一个系统的资源层。表5.2列出了与该系统有关的重要资源和它们的关系。在此基础上,利用系统资源层中的
RESTAPI,实现了对系统服务器的资源请求。表5.2资源列表实体类实体集合类资源类资源路径UserUsersUserResource/usersLoginfo-LoginfoResource/loginfosDeviceDevicesDeviceResource/devicesFileInfoFileInfosFileInfoResource/filesJobInfoJobInfosJobInfoResource/jobsOrderInfoOrderInfosOrderInfoResource/ordersPaymentPaymentsPaymentResource/paymentsUnitPriceUnitPricesUnitPriceResource/unitprices5.3数据访问层的实现5.3.1EclipseLink的配置首先,将实体类的信息登记到persistence.xml文件中,以便将实体类和数据库表相结合。要求注册的实体类有用户、日志信息、文件信息、设备信息、Job信息、Order信息、付款信息和UnitPrice等,见图5.4:图5.4实体类的注册其次,它相应的JDBC驱动是基于MySQL数据库来进行配置的。它包含驱动资讯,资料库存取位址,使用者名称与口令等资讯。在图5.5中可以看到:图5.5数据库的JDBC配置5.3.2实体类的映射为了实现实体类与数据库表单之间的关系,实体类通过实体注释@Entity和表单注解@Table来实现实体类与数据库表单之间的对象关系映射和表单注释@Table实现。在窗体中的主关键字被映射为一个主关键字注释@ID。通过field注释@Column来定义field名称,field长度,field约束。所以,从任务信息到数据库窗体job_info之间的映射是通过@Entity和@Table(名称为“job_info”)来完成的。在窗体中,通过@ID把主关键字映射到一个变量JobInfoID上。并且通过@Column来为主关键字(unique=true,nullable=false,名称='job_info_code')来设定域注释。5.4业务逻辑层的实现5.4.1Spring框架的集成在该系统中,应用了商业逻辑类来处理具体的商业逻辑。Spring
Framework通过注释@Service来定义资源服务类,这是一个很好的例子。当系统开始运行时,Spring框架的IoC机制会对带有注释的@Service的类进行扫描,然后把这些类以带有注释的@Component的组件类加载。然后,对ResourceServices类中注释为@Autowired的业务逻辑类进行了扫描,以使得它们能够按照类型自动地组合在一起,以完成依赖性注入。xml是Spring的一个通用的Context.xml,它为Spring提供了一个用于处理数据库事务的统一的容器管理功能。这样,就实现了对数据库的存取,实现了对数据的控制与管理。对数据库写入进行注释@Transactional,从而在容器层实现了面向切面的事务。SpringFramework将在写入操作执行前开始一个事务的开始方法。当该方法被成功地执行时,该容器将会执行该提交方法。当执行失败时,会呼叫回退的方法。避免由于资料出错而造成资料混淆。5.4.2身份认证的实现系统服务器会先对使用者所提交的使用者名称与口令进行确认。若确认,则按照设定的程序产生使用者的登入资讯,并将登入资讯传回至手机端。移动端会将LoginToken带到随后的请求中,并由系统服务器利用LoginToken对用户进行身份验证,以确定用户是否登录。而“洛书”又是一种时效性很强的语言。登录标记在使用者登出或长期没有要求系统资源的情况下失效。使用者必须再次登入以取得新的登入记号。(1)用户密码处理该系统产生的口令是按照数字与大小写的结合方式产生的口令,每个口令的个数不得低于8个位数。基于该方法,该方法将16个字符中的“盐”随机地添加到该密码中,再利用MD5算法产生一个加密字段。在一个48比特的加密区中,按照内插的规则,将“salt”与一个新的加密区结合起来。所有使用者的口令均以此方式存入资料库。口令确认是通过比较资料库中的口令和使用者所递交的口令来完成的。如果他们是一样的,那么就是成功的,否则就是失败的。用户口令确认函数是一个商业逻辑类型的UserService,它通过表格5.3中描述的核心方式来提供的。表5.3用户密码验证的方法名称checkUserPassword()功能验证密码是否正确格式PublicbooleancheckUserPassword(Stringpassword)参数说明password:用户密码返回值返回密码是否验证成功。描述判断用户密码是否与数据库所存的密码相同。(2)用户登录信息生成在REST样式的环境中,用户的注册信息实际上也是一种资源。使用者的登入与退出,可被抽象为使用者登入与退出资讯的产生与删除。通过LoginfoService来创建和删除用户注册信息,并通过表5.4和5.5中的中心方式来实现。表5.4用户登录信息的生成方法名称createUserLogin()功能用户登录后,系统生成用户登录信息格式publicUserLogincreateUserLogin(finalintuserID)参数说明userID:用户ID返回值返回用户登录信息。描述基于用户ID生成用户登录信息表5.5用户登录信息的删除方法名称deleteUserLogin()功能用户登出后,系统删除用户登录信息格式publicbooleandeleteUserLogin(finalintuserID)参数说明userID:用户ID返回值返回删除用户登录信息是否成功。描述基于用户ID删除用户登录信息。(3)使用LoginToken实现资源请求手机端通过登录标记来要求更多的系统资源。当一个要求被发出时,将登录标记加入HTTP要求标头的验证域。当系统服务器接收到一个HTTP请求时,它会在请求标题中抽取一个Authorization域所对应的值。确认登入标记的正确性。如果有效,在延长登录托oken到期日的情况下,该移动终端所请求的资源被返回。若无效,则会返回没有访问权限的HTTP状态代码401。表5.6详细描述了登录工具检查和更新的核心方法:表5.6LoginToken的验证和刷新方法名称checkLoginToken()功能验证和刷新LoginToken格式publicUserLogincheckLoginToken(Stringtoken)参数说明token:Logintoken返回值返回用户登录信息。描述根据Logintoken,判断Logintoken是否有效。若有效延长Logintoken的时效,同时返回用户登录信息。5.4.3文档上传的实现该系统服务器将移动终端上载的文件以表格的方式进行处理。在手机的HTTP请求主体中,内容类型被设定为多段/格式数据的媒体类型。系统资源层从HTTP的要求主体获得多部件的实体,然后把这个实体转化成一个文件的输入流。在这个过程中,也会使用查询参数来获得一个用户ID。然后,按照文件存储的路径准则,与用户ID信息相结合,产生文件存储路径。向业务逻辑层发送文件输入流,用户ID,文档存储路径等信息。其中,文件的存取、文件的存取等工作主要是由业务逻辑层来实现。上述的能力都被包装在文件信息服务这种业务逻辑类型中。在储存档案前,您必须先判断档案的型别及档案是否已存在。在此基础上,把文件按规定的路径保存,并把文件的内容写到数据库中,从而实现文件的保存。并且向移动终端返回文件信息。
表5.7文档格式判断的方法名称checkFileFormat()功能识别和判断文档类型格式publicbooleancheckFileFormat(Filefile)参数说明file上传的文档内容返回值是否符合系统上传文档的要求。描述判断文档的后缀名是否在PDF/WORD/EXCEL和PNG和JPEG的范围内。表5.8添加文档的方法名称addFile()功能实现文档存储格式publicFileaddFile(finalintuserID,finalFilefile)参数说明file上传的文档内容userID:用户ID返回值返回已在数据库保存的文档信息。描述判断文档已存储在用户路径之下。若不存在,则存储文档,并将文档信息写入数据库。返回文档信息。若已存在,则检索数据库,返回已存在的文档信息。5.4.4移动支付的实现为了完成手机的付款功能,本系统服务器的工作包括:产生付款命令,并将付款命令传回至手机。支持在通知网址下的付款指示,也就是不同步地进行付款指示的更新。支持微信付款查询界面的付款指令的更新,也就是付款指令的同步更新。(1)支付订单的生成当用户确定了打印工作,并选择了微信付款时,在手机上使用RESTAPI实现了一个简单的功能。ID=“用户ID”)POST要求为用户产生一个付款指令。系统服务器根据用户ID对用户订单进行查询,并对调用微信支付统一下单界面所需要的参数进行整理。通过API来获得预先订购的信息。表5.9中详细说明了核心方法:表5.9获取预付费订单的生成方法名称getPrepayInfo()功能用户登录后,系统生成用户登录信息格式publicPrepayGetPrepayInfo(finalintuserID)参数说明userID:用户ID返回值返回预付费订单信息。描述基于用户ID组织预付费订单,并向微信支付服务器请求生成预付费订单。在获得了预付款订单信息后,该系统服务器对该信息增加了一个特征以及一个随机的字符串,从而产生了该付款订单信息,并且将该付款订单信息返回至该移动终端,由该移动终端来调整该微信支付交易。添加一个随机字串到付款指令资讯中,以保证指令的签署是无法预测的。而付款单特征则是根据密钥的大小,按照参数名称的ASCII词典次序将付款单特征参数组成的字符串。近期加入的微信API,是利用MD5的算法产生的.在表5.10中详细说明了产生一个签名的主要方法签名形如:MD5(key1=value1&key2=value2…&keyn=APIKEY)表5.10签名的生成方法名称CreateSign()功能生成订单签名格式publicStringcreatePackageSign(List<NameValuePair>params)参数说明params:订单参数列表返回值返回签名字符串。描述基于支付订单参数生成支付订单签名。(2)支付订单异步更新付款程序结束后,微信付款将通过短信的方式向系统服务器发送付款结果。在此基础上,针对不同的用户请求,由系统服务器对请求进行接收、处理,并将请求反馈给用户。通知是通过一个统一的命令API发送到微信的付款服务器。该系统使用url实现了对付款指令的实时更新,并使用了REST样式。返回API:(分组/分组更新)POST。在表5.11中详细说明了用于执行付款指令的非同步更新的核心方法:表5.11支付订单异步更新的方法名称updatePaymentAsyn()功能用户登录后,系统生成用户登录信息格式publicPaymentupdatePaymentAsyn(Stringreturn_code)参数说明return_code:返回状态码返回值返回支付订单信息。描述基于微信支付返回的状态码,更新支付订单。5.4.5任务执行的实现在此基础上,利用手机上的taskID和动作命令完成了任务。在接收到来自手机端的
HTTP请求之后,系统服务器根据该请求的参数获得了任务ID和操作指示。在此基础上,再利用查询资料库中的资料,以获取所需的资料。该系统服务器按照该任务的要求来完成该任务。PrinterService是一个商业逻辑类,它把工作信息转换成印刷参数,并按照行动指令来完成印刷的启动和终止。(1)查询任务信息工作信息的查询功能大部分是通过JobInfoService这个商业逻辑类来实现的,它对工作信息进行了处理。在此基础上,提出了一种基于JobInfoDao的方法,该方法将JobInfoDao用于数据存取层,并将其作为参数。在表5.12中详细介绍了用于询问任务信息的主要方式:表5.12查询任务信息的方法名称updatePaymentSyn()功能用户登录后,系统生成用户登录信息格式publicPaymentupdatePaymentSyn(Stringreturn_code)参数说明return_code:返回状态码返回值返回支付订单信息。描述基于实际查询API返回的支付结果,更新支付订单(2)设置打印参数PrinterService类为输出业务逻辑提供了支持。在此基础上,建立了一套完整的打印流程。取得印表机的属性;返回打印服务,并按照打印机登记的名字进行打印;设定一个印刷参数只是把一个任务的信息转换成印刷参数,也就是印刷属性。印刷的主要参数包括:版面名称,版面数量,版面颜色,版面尺寸。即使是PDF,Word,或EXCEL文档,也会产生打印页面。要知道,这个作业的颜色与作业是用黑白印刷或彩色印刷有关。在表格5.13中提供了用于设定印刷参数的主要方法:表5.13设置打印参数的方法名称GetJobInfo()功能查询任务信息格式publicJobInfoGetJobInfo(finalintjobInfoID)参数说明jobInfoID:任务ID返回值返回已在数据库保存的任务信息。描述在try-catch中调用JobInfoDao类的findByID()方法,在数据库中,通过任务ID查询任务信息。
6系统测试通过对医疗诊断单自动查询的应用,实现了医疗诊断单自动查询的自动化,并对其进行了层次式的管理。针对易发生错误的部位,增加了例外情况,确保了整个程序的可靠性。这一章着重于对该软件进行了实验,并对其进行了实验,以证明该软件能够达到所需的功能。6.1测试方案本文从系统的资源、功能,性能三个方面对该系统进行了评价。所以,对网络服务的测试,就是对网络服务的测试,对功能的测试,以及对网络服务的测试。网络服务的检测就是为了确认网络服务与该系统所要求的网络服务的一致性。功能试验是对软件开发过程中所涉及到的关键技术进行分析和研究。在有限的时间段里,当一个用户对一个用户进行了大规模的资源访问后,该用户对该用户访问行为的反映情况,并对其进行了验证。6.2测试环境该系统的工作空间由系统服务器,移动终端,印刷装置组成。(1)本系统的服务器使用的是英特尔XeonE6.2680v3(哈斯韦),主频率为2.5
GHz,实体记忆体8GB,硬碟记忆体60GB。(2)手机方面,将以小米5为代表,其核心技术包括:高通骁龙820,主频1.8Gg,物理内存在3G,数据容量32G,5.15英寸的HDMI屏幕,MIUI(安卓6.0)。(3)本项目所使用的印刷装置包括两类:全一式印刷机和一台印刷机。为此,我们选择了FX文档中心S2011作为本系列产品的典型。作为一种印刷装置,DELL5130cdn。6.3WebService测试REST网络应用描述语言是一种接口,它在目前网络服务中,以XML形式展示能够被使用的REST服务。对WADL的存取,可以让你看到哪些
Web服务是被供应的。所以,这一试验的首要目标就是要检验该服务器所能达到所设定之需求。“printsystem/webapi/application.wadl”是该软件的一个WADL的存取地址。通过此途径,可以看到WADL在该系统中的目录。在图6.1中可以看到:WADL用应用程序根标记来代表应用程序,从顶部到底部依次为文档,图形,资源。资源是一个由一个或多个系统所提供的一系列的、用来说明这些资源。图6.1应用程序描述语言通过一组资源标记来说明
REST服务。每一个“资源”选项卡包括了一个“方法”选项卡,该选项卡用来说明要求和回应的内容和形式。Request选项卡确定了怎样填充Request的信息,并按要求确定了对应的Request和HTTP头部。其中,反应标记用于确定相应的反应及相应的反应过程的反应代码。这个变量的值是用来说明这个函数的值。在REST资源被产生和公布之后,手机用户可以根据在REST中对REST的资源进行查询。对Web服务进行的试验显示在表格6.1中:表6.1WebService测试结果系统资源测试内容测试结果User获取用户资源。通过Loginfo获取用户登录信息资源。通过Device获取设备资源。通过FileInfo获取文档信息资源。通过JobInfo获取任务信息资源。通过OrderInfo获取用户订单信息资源。通过Payment获取支付订单信息资源。通过UnitPrice获取单价信息资源。通过6.4功能测试医疗诊断单自动印鉴机的主要性能指标,主要用于检验医疗诊断单自动印鉴机的主要性能指标与设计阶段所确定的指标相符合。主要包括:用户注册,用户登录,文件列表,文件上传,订单支付,任务执行等。上述的性能都是在小米5的AndroID6.0平台下进行的。6.4.1用户注册医疗诊断单自动印鉴机的主要性能指标,主要用于检验医疗诊断单自动印鉴机的主要性能指标与设计阶段所确定的指标相符合。主要包括:用户注册,用户登录,文件列表,文件上传,订单支付,任务执行等。上述的性能都是在小米5的AndroID6.0平台下进行的。图6.2新用户注册当使用者所建立的使用者名称与资料库中所建立的使用者名称一致时,会出现“使用者名称已经存在”的提示;若使用者所建立之使用者名称未被载入本资料库,本使用者名称将被视为合法,并可供使用者登记使用。当使用者设定的口令与设定的口令不符时,将会出现口令必须以英文或英文首字加八个位数的的提示;当使用者输入的口令与设定的口令相符时,会出现“注册成功”的提示,使用者的资料会被储存在资料库中。在图6.3中显示了该使用者登记的结果:图6.3新用户注册结果6.4.2用户登录用户登录检测是指在登陆过程中对用户的身份进行验证。使用者登陆基本上是靠使用者手工输入使用者所建立的使用者名称与口令,再按“登录”键以回到使用者的主页面。在图6.4中显示了用户登录界面:图6.4用户登录当你的用户名和口令与你的系统资料库相吻合时,你就会看到“登录成功”的提示,然后你就会进入你的主页。当登录使用者输入的使用者名称及口令与目前的资料库资料不一致时,会有“使用者名称或口令错误”的提示,让使用者再输入一次。6.4.3文档列表获取文件清单采集试验的目的是验证
LoginToken是否能够准确地采集到系统资源。其中,实验的重点是向手机用户发送文件的请求。如果文件的清单是正确的,那么就说明这些信息已经保存在了你的系统服务器上,并且可以用日志标记来精确的读取和显示。文档列表如图6.5所示:图6.5文档列表6.4.4文档上传文件上载试验,是对系统服务器是否能够将手机上载的文件准确地储存到规定的文件路径中。其中,要识别和判断文档的类型、检测文档是否为重复上传、文档是否准确地存储在指定路径下、文档信息是否准确地存储在数据库中。图6.6中显示了一个用于用户上载文件的选项。图6.6文档选择当使用者按下“上载”键时,便会将档案上载的要求传送至电脑服务器。由系统服务器来判定。若上载的档案是不支援的,则会有“此档案不支援,请上载”的讯息。如果系统侦测到这个档案已经在你的系统里,会有一个“档案已经存在”的讯息。如果你上载的文件资讯被加入文件清单。代表已成功地上载了档案。图6.7显示了上载文件的结果:图6.7文档上传结果6.4.5订单支付订单付款测试的重点是检测付款的定单是否被正确的付款。当使用者按下“确认支付”按钮时,便会收到手机上的付款申请,然后便会使用手机上的“微信支付”软件包,开始付款过程。在图6.8中显示了订单的付款界面:图6.8订单支付界面6.4.6任务执行在任务执行方面,本文对系统服务器的
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 安全教育:遵守规定不乱走动
- 成品仓库管理员述职报告
- 2025年一建《机电工程管理与实务》考试施工组织设计题库冲刺练习
- 安全事故应急处置流程
- 2025年小学英语毕业考试模拟卷(语法专项突破:情态动词运用解析)
- 2025年韩语TOPIK中级考试真题卷:写作与口语表达篇
- 2025年小学教师资格考试《综合素质》文化素养教育语文试题试卷(含答案)
- 2025年乡村医生考试题库(农村中医适宜技术)公共卫生与预防医学试题
- 2025年钳工高级工鉴定题库:金属加工工艺分析与应用试题
- 安徽省江南十校2024-2025学年高一上学期12月分科诊断联考生物试题 无答案
- 中共一大会址
- 云南省烟草买卖合同(标准版)
- 2023个人独资企业清算报告(精选4篇)
- 诗词大会训练题库-十二宫格课件
- 卫生统计学(全套课件)
- xx县精神病医院建设项目可行性研究报告
- 2021年6月浙江省高考读后续写课件-高考英语复习备考
- 小学古诗词80首(硬笔书法田字格)
- 城市轨道交通供电技术442页完整版教学课件汇总全书电子教案
- 儿歌:妈妈过生日
- 《计算机网络基础》第1章计算机网络概论
评论
0/150
提交评论