CN109976721A - 基于ddd的移动端航油加注控制系统 - Google Patents
基于ddd的移动端航油加注控制系统 Download PDFInfo
- Publication number
- CN109976721A CN109976721A CN201910123588.2A CN201910123588A CN109976721A CN 109976721 A CN109976721 A CN 109976721A CN 201910123588 A CN201910123588 A CN 201910123588A CN 109976721 A CN109976721 A CN 109976721A
- Authority
- CN
- China
- Prior art keywords
- flight
- task
- information
- unit
- list
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/20—Software design
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06Q—INFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
- G06Q10/00—Administration; Management
- G06Q10/10—Office automation; Time management
- G06Q10/103—Workflow collaboration or project management
Abstract
本发明属于航油加注系统技术领域,公开了一种基于DDD的移动端航油加注控制系统,包括人员登录模块、任务信息模块、航班信息模块等。本发明基于领域驱动设计的分层架构思想,结合MVC设计模式,利用ES6语法、React Native移动端框架、React和Redux框架以及Android数据库框架Realm等新技术设计了系统的分层架构。有效地划分软件的层次设计,降低了系统各层之间的耦合性,提高了软件的开发效率和可维护性。最后,实现了加油员平板终端操作的航油加注系统,提出了离线加油作业过程的解决方案,使得机场加油作业方式从传统的人工操作到实现电子化、智能化控制成为了可能,对机场管理以及民航产业的现代化、信息化发展都具有重要意义。
Description
技术领域
本发明属于航油加注系统技术领域,尤其涉及一种基于DDD(领域驱动设计)的移动端航油加注控制系统及方法
背景技术
目前,业内常用的现有技术是这样的:航空产业的增速及辐射范围将进一步拓展,对航空燃油(简称航油)的需求也将大幅增加,机场航油的加注业务也因此高速增长。然而,现有的航油加注系统却难以满足快速增长的加油业务需求。长期以来,各大公司的航油保障业务整体信息化水平较低,除个别机场外,大多数机场都处于以对讲机和人工填写油单为特点的传统作业模式下,大量作业过程依赖于手工操作,效率低下,数据和信息无法共享,在一定程度上制约了民航事业的发展。
机场航油加注时,加油员需要人工记录加油数据如航班号、飞机号、加油量、油料密度等十几项内容,存在效率低下、容易出错的问题,且需要和机组人员手工签字确认,这个过程所实现的纸质油单以及签字确认方式未实现电子化,不利于管理,不能自动生成电子数据与留存。人工填写纸质油单对加油员的素质要求较高,需要具备准确填写的能力,耗费了较大的管理成本和人力成本。在生成油单方面,纸质油单无论从其生成、保存和查询等各个方面都有很多局限。
综上所述,现有技术存在的问题是:
(1)现有航油加注时大量作业过程依赖于手工操作,效率低下;数据和信息无法共享,在一定程度上制约了民航事业的发展。
(2)现有航油加注时需要人工记录多项数据,存在效率低下、容易出错的问题,且需要手工签字确认,不利于管理,不能自动生成电子数据与留存。
(3)人工填写纸质油单对加油员的素质要求较高,需要具备准确填写的能力,耗费了较大的管理成本和人力成本。
(4)纸质油单的生成成本高、保存方式具有局限性,且不易查
询。解决上述技术问题的难度:
受系统使用环境的限制,航油加注系统需支持离线操作功能,要能够解决移动终端通讯异常时正常完成航油加注作业任务的难题。需要解决本地数据库缓存,又不能影响系统整体性能的难题。需要解决数据传输过程的安全性问题以及外部数据接口加密问题。
解决上述技术问题的意义:
系统离线操作问题的解决大大提高了工作人员的业务效率,避免了受机场网络环境的影响带来的业务中断问题。本地数据库的缓存采用了优势明显的移动端数据库框架Realm技术,在不失系统性能的前提下有效的解决了数据持久化问题。系统安全性及接口加密问题的解决避免了重要数据泄露的风险,为用户利益提供了安全保障。
发明内容
针对现有技术存在的问题,本发明提供了一种基于DDD的移动端航油加注控制系统及离线航油加注作业方案。
本发明是这样实现的,一种领域驱动模型,所述领域驱动模型包括:
1)区分实体Entity和值对象Value Object;从需求分析以及加油作业的场景中抽象领域对象,如StaffInfo、VehicleInfo、FlightInfo、TaskInfo、OilSheet、FuelInfo,具有唯一的标识,都是Entity;像flgtFlon,taskContent,flrcType,staffName描述实体的特征,不需要连续的标识,是Value Object;
2)分析关联关系,保持单向的关联,多对多或者一对多简化为一对一的关系,并将对象之间不存在的关联关系去除;
3)设定聚合边界,确定聚合根,定义模型的关系和边界,每个聚合都有一个根,根是一个实体,并且是唯一可被外访问的;
4)选择仓储对象Repository,根据DDD建模方法,对聚合根考虑资源库。
5)对象创建分析,初始化操作等创建对象的细节,考虑工厂模式封装,将创建对象的细节隐藏,避免领域层的逻辑泄露到应用层。
本发明的另一目的在于提供一种基于所述领域驱动模型的基于DDD的移动端航油加注控制系统,所述基于DDD的移动端航油加注控制系统包括:
人员登录模块,用于管理加油员登录登出状态,验证加油员ID和密码信息;
任务信息模块,用于管理任务信息,获取任务列表,新增加油任务,取消当前任务,查看任务详情,结束任务,检索任务;
航班信息模块,用于管理航班信息,获取航班列表,创建离线航班,查看航班详情,检索航班,订阅航班,任务申请,修改航班;
油单信息模块,用于读取油料信息,显示加油进度,生成油单信息,电子签名,上传油单信息到数据库,调用打印机接口发送打印油单请求;
人车绑定模块,用于加油员执行加油任务时与加油车绑定,可显示加油员信息、手动输入车辆号、根据车辆编号实现人车绑定;
导航栏信息模块,用于创建APP头部常用快捷按钮,可查看加油员个人信息,弹窗显示告警消息,退出登录,与PC端调度员沟通。
进一步,所述人员登录模块,包括加油员登录单元、加油员注销单元;
任务信息模块,包括任务列表单元、任务详情单元、任务检索单元;任务列表单元包括,添加任务子单元、任务取消子单元;任务详情单元包括:接收任务子单元;
航班信息模块,包括创建航班单元、航班列表单元、航班详情单元、修改航班单元;航班列表单元包括:新增航班子单元、查询航班子单元;航班详情单元包括:订阅航班子单元、申请任务子单元;
油单信息模块,包括生成油单单元、油单签名单元、上传油单单元、打印油单单元;
人车绑定模块,包括显示人员信息单元、输入车辆号单元、绑定车辆单元;
导航栏信息模块,包括加油员信息单元、警告提醒单元、推出系统单元、聊天窗口单元。
进一步,所述基于DDD的移动端航油加注控制系统从MVC的角度设计分层架构为User Interface和模型层Model;模型层Model按照DDD进一步为Application、Domain和Infrastructure三层;其中User Interface层包括View和Controller;
1)用户接口层User Interface,用于向用户展现信息,并且解析用户行为;包括视图层和控制层,视图层为APP的各种操作页面,是ReactNative的各个组件Component;控制层基于REST风格接口,把用户的请求转成针对Model的操作和完成前端APP页面到后台接口的路由;
2)应用层Application,组件是Service,所有的Service协调并委派业务逻辑给领域对象进行处理,用于协调不同领域对象之间的动作或领域模型与基础结构层组件之间的工作,以完成一个特定的、明确的系统任务;
3)领域层Domain,维护一个使用面向对象技术实现的领域模型;Domain层包含实体Entity、值对象Value Object、领域事件Domain Event和仓储Repository多种重要的领域组件;
4)基础结构层Infrastructure,作为基础结构层,Infrastructure为UserInterfaces、Application和Domain三层提供底层依赖操作。
本发明的另一目的在于提供一种运行所述基于DDD的移动端航油加注控制系统的基于DDD的移动端航油加注控制方法,所述基于DDD的移动端航油加注控制方法包括以下步骤:
第一步,登录后后台会根据加油员ID推送当天的航班信息和任务列表;如果当前任务列表中无任务,则在航班列表中查看航班详情,可申请任务,此时任务列表中新增任务信息,点击查看任务详情,确认接受任务;如果当前任务列表中有加油任务,则直接查看任务详情,确认信息接受任务;
第二步,开始加油,根据车载设备读取油料信息、显示加油进度,待加油完成,确认生成油单信息并与机组人员核对油单信息,核对无误后签名确认,上传打印;
第三步,通过车载联网设备生成油单,一次加油任务结束。
进一步,移动端航油加注离线操作方法具体包括:
在平板终端无法联网时,APP使用离线模式执行任务;如果加油员登录后一开始就出现断网状况,事前没有本地缓存的航班信息时,就需要手动创建航班,填写航班信息,确认后保存到航班列表,然后查看航班详情,离线申请任务,任务列表新增加油任务,然后确认接受任务,开始后续加油作业过程;
如果之前系统有一次成功联网,本地有事前联网缓存的航班信息,则不用手动创建航班,可直接查看本地航班详情进行离线任务申请,然后接受任务,完成后续加油作业过程。
本发明的另一目的在于提供一种实现所述基于DDD的移动端航油加注控制方法的计算机程序。
本发明的另一目的在于提供一种实现所述基于DDD的移动端航油加注控制方法的信息数据处理终端。
本发明的另一目的在于提供一种计算机可读存储介质,包括指令,当其在计算机上运行时,使得计算机执行所述的基于DDD的移动端航油加注控制方法。
本发明的另一目的在于提供一种实现所述基于DDD的移动端航油加注控制方法的移动终端。
综上所述,本发明的优点及积极效果为:本发明基于领域驱动设计思想,采用C/S架构设计并实现了灵活可扩展的平板终端航油加注系统APP,改变了传统人工作业模式,提高了加油作业效率,实现了油单的电子化,对机场的信息化管理以及推动民航产业的发展都具有重要意义。本发明能够实现自动接入、读取、整合油单相关数据;自动生成电子油单,自动上传、存储,打印油单;提升开单效率与准确率;同时,通过电子签名等方式取代纸质油单签名,实现无纸化签单,节约成本。
本发明基于领域驱动设计的分层架构思想,结合MVC设计模式,利用ES6语法、React Native移动端框架、React和Redux框架以及Android数据库框架Realm等新技术设计了系统的分层架构。有效地划分软件的层次设计,降低了系统各层之间的耦合性,提高了软件的开发效率和可维护性。最后,实现了加油员平板终端操作的航油加注系统,使得机场加油作业方式从传统的人工操作到实现电子化、智能化控制成为了可能,对机场管理以及民航产业的现代化、信息化发展都具有重要意义。
附图说明
图1是本发明实施例提供的基于DDD的移动端航油加注控制系统结构示意图;
图中:1、人员登录模块;2、任务信息模块;3、航班信息模块;4、油单信息模块;5、人车绑定模块;6、导航栏信息模块;7、加油员登录单元;8、加油员注销单元;9、任务列表单元;10、任务详情单元;11、任务检索单元;12、创建航班单元;13、航班列表单元;14、航班详情单元;15、修改航班单元;16、生成油单单元;17、油单签名单元;18、上传油单单元;19、打印油单单元;20、显示人员信息单元;21、输入车辆号单元;22、绑定车辆单元;23、加油员信息单元;24、警告提醒单元;25、推出系统单元;26、聊天窗口单元;27、添加任务子单元;28、任务取消子单元;29、接收任务子单元;30、新增航班子单元;31、查询航班子单元;32、订阅航班子单元;33、申请任务子单元。
图2是本发明实施例提供的基于DDD的移动端航油加注控制方法流程图。
图3是本发明实施例提供的加油作业整体业务流程图。
图4是本发明实施例提供的基于DDD的移动端航油系统部分领域模型图。
图5是本发明实施例提供的机场航油加注总体流程图。
图6是本发明实施例提供的领域驱动设计的经典分层架构图。
图7是本发明实施例提供的基于React+Redux的MVC设计模式图。
图8是本发明实施例提供的基于DDD思想的MVC分层架构图。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
本发明基于领域驱动设计思想,采用C/S架构设计并实现了灵活可扩展的平板终端航油加注系统APP,改变了传统人工作业模式,提高了加油作业效率,实现了油单的电子化,对机场的信息化管理以及推动民航产业的发展都具有重要意义。
下面结合附图对本发明的应用原理作详细的描述。
如图1所示,本发明实施例提供的基于DDD的移动端航油加注控制系统包括:人员登录模块1、任务信息模块2、航班信息模块3、油单信息模块4、人车绑定模块5、导航栏信息模块6。
人员登录模块1,包括加油员登录单元7、加油员注销单元8,用于管理加油员登录登出状态,验证加油员ID和密码信息。
任务信息模块2,包括任务列表单元9、任务详情单元10、任务检索单元11;任务列表单元9包括,添加任务子单元27、任务取消子单元28;任务详情单元10包括:接收任务子单元29;用于管理任务信息,获取任务列表,新增加油任务,取消当前任务,查看任务详情,结束任务,检索任务。
航班信息模块3,包括创建航班单元12、航班列表单元13、航班详情单元14、修改航班单元15;航班列表单元13包括:新增航班子单元30、查询航班子单元31;航班详情单元14包括:订阅航班子单元32、申请任务子单元33;用于管理航班信息,获取航班列表,创建离线航班,查看航班详情,检索航班,订阅航班,任务申请,修改航班。
油单信息模块4,包括生成油单单元16、油单签名单元17、上传油单单元18、打印油单单元19;用于读取油料信息,显示加油进度,生成油单信息,电子签名,上传油单信息到数据库,调用打印机接口发送打印油单请求。
人车绑定模块5,包括显示人员信息单元20、输入车辆号单元21、绑定车辆单元22;用于加油员执行加油任务时与加油车绑定,可显示加油员信息、手动输入车辆号、根据车辆编号实现人车绑定。
导航栏信息模块6,包括加油员信息单元23、警告提醒单元24、推出系统单元25、聊天窗口单元26;用于创建APP头部常用快捷按钮,可查看加油员个人信息,弹窗显示告警消息,退出登录,与PC端调度员沟通。
如图2所示,本发明实施例提供的基于DDD的移动端航油加注控制方法包括以下步骤:
S201,登录后后台会根据加油员ID推送当天的航班信息和任务列表;如果当前任务列表中无任务,则在航班列表中查看航班详情,可申请任务,此时任务列表中新增任务信息,点击查看任务详情,确认接受任务;如果当前任务列表中有加油任务,则直接查看任务详情,确认信息接受任务;
S302,开始加油,根据车载设备读取油料信息、显示加油进度,待加油完成,确认生成油单信息并与机组人员核对油单信息,核对无误后签名确认,上传打印;
S403,通过车载联网设备生成油单,一次加油任务结束。
下面结合附图对本发明的应用原理作进一步的描述。
如图3所示,本发明实施例提供的移动端航油加注离线操作方法具体包括:
在平板终端无法联网时,APP使用离线模式执行任务;如果加油员登录后一开始就出现断网状况,事前没有本地缓存的航班信息时,就需要手动创建航班,填写航班信息,确认后保存到航班列表,然后查看航班详情,离线申请任务,任务列表新增加油任务,然后确认接受任务,开始后续加油作业过程;
如果之前系统有一次成功联网,本地有事前联网缓存的航班信息,则不用手动创建航班,可直接查看本地航班详情进行离线任务申请,然后接受任务,完成后续加油作业过程。
如图4所示,本发明实施例提供的基于DDD的移动端航油加注系统架构设计包括:
基于领域驱动设计的分层架构思想,结合MVC设计模式,利用ES6语法、ReactNative移动端框架、React和Redux框架以及Android数据库框架Realm等新技术设计了系统的分层架构。
本发明实施例提供的移动端航油加注系统的DDD即领域模型设计具体包括:
设计的仓储对象有FlightTask和StaffVehiTask等;为OilSheet设计了工厂,OilSheet是核心领域对象,涉及到整个领域的大部分内容。
下面结合具体实施例对本发明的应用原理做进一步描述。
具体实施例1:
加油员在平板作业终端打开系统APP,进入登录页面,输入账户和密码,和后台进行信息验证,通过后进入APP首页,即任务列表页。APP在线时,登录后会自动获取当前的任务,可点击可查看每条任务内容。APP离线时,任务列表页空白,不显示任务信息。
点击侧边栏航班按键,APP在线时可自动获取航班列表,APP离线时需要创建航班保存到本地航班列表。
在APP离线时,航班列表和任务列表都无法从后台获取,则需要离线创建航班。
加油员在点击任务列表页的某条任务后跳转到任务详情即油单页,在此之前开始加油按键状态是接受任务。接受任务是生成油单的基本信息,如油单号和部分航班信息。点击开始加油按键后,获取到加油数据后上传到油单页,此时按键状态变成生成油单。
生成油单完成之后,可以看到油单数据的全部信息,核对后可以在签名触控区域进行电子签名确认,最后上传打印。
经测试,系统能够正常完成各项功能的操作,后台能够正常接收到APP发送的请求,并且后台能测试到APP成功发给车载设备的油单数据。
具体实施例2:
1、系统需求分析及业务流程分析
(1)需求分析
机场航油加注的总体作业流程如图5所示:
机场航油加注的主要步骤为中航油管理人员和航空公司人员生成加注任务表,机场航油中心调度员收到任务表后下发任务给航油车加油员,加油员接收任务,进行加注作业以及生成油单并签字,最后将加油信息上传给服务器保存。
在以往的作业中,加油员需要人工记录加油数据如航班号、飞机号、加油量、油料密度等十几项内容,存在效率低下、容易出错的问题,且需要和机组人员手工签字确认,这个过程所实现的纸质油单以及签字确认方式未实现电子化,不利于管理,不能自动生成电子数据与留存。人工填写纸质油单对加油员的素质要求较高,需要具备准确填写的能力,耗费了较大的管理成本和人力成本。在生成油单方面,纸质油单无论从其生成、保存和查询等各个方面都有很多局限。
基于以上问题分析,本发明要求能够实现自动接入、读取、整合油单相关数据;自动生成电子油单,自动上传、存储,打印油单;提升开单效率与准确率;同时,通过电子签名等方式取代纸质油单签名,实现无纸化签单,节约成本。
(2)业务流程分析
根据系统需求分析,考虑到机场复杂网络环境的影响,作业终端加油系统APP不仅能够在网络环境良好的情况下完成加油作业任务,而且需要在断网离线状态下能够保证加油任务的正常进行,并能够在复杂状态下正常实现系统的各向业务功能。总结加油员作业过程的整体业务流程如图3所示。
加油员在加油作业过程中受机场复杂网络环境的影响,平板终端加油系统APP可能会出现断网情况,分为在线操作和离线操作两种状态。加油员提前登录系统,在APP在线时,登录后后台会根据加油员ID推送当天的航班信息和任务列表。如果当前任务列表中无任务,则在航班列表中查看航班详情,可申请任务,此时任务列表中新增任务信息,点击查看任务详情,确认接受任务;如果当前任务列表中有加油任务,则直接查看任务详情,确认信息接受任务。然后开始加油,系统根据车载设备读取油料信息、显示加油进度,待加油完成,确认生成油单信息并与机组人员核对油单信息,核对无误后签名确认,上传打印,最后通过车载联网设备生成油单,一次加油任务结束。
在平板终端无法联网时,APP使用离线模式执行任务。如果加油员登录后一开始就出现断网状况,事前没有本地缓存的航班信息时,就需要手动创建航班,填写航班信息,确认后保存到航班列表,然后查看航班详情,离线申请任务,任务列表新增加油任务,然后确认接受任务,开始后续加油作业过程。如果之前系统有一次成功联网,本地有事前联网缓存的航班信息,则不用手动创建航班,可直接查看本地航班详情进行离线任务申请,然后接受任务,完成后续加油作业过程。
2、系统功能模块及领域模型设计
(1)系统功能模块设计
根据前面的需求分析以及业务流程分析,系统整体的功能模块包括有:人员登录、任务信息、航班信息、油单信息、人车绑定,导航栏信息等六大模块,功能框图,如图1所示。
下面简要介绍各模块功能:
1)人员登录模块。管理加油员登录登出状态,验证加油员ID和密码信息。
2)任务信息模块。管理任务信息;包括获取任务列表,新增加油任务,取消当前任务,查看任务详情,结束任务,检索任务等功能。
3)航班信息模块。管理航班信息;包括获取航班列表,创建离线航班,查看航班详情,检索航班,订阅航班,任务申请,修改航班等功能。
4)油单信息模块。包括读取油料信息,显示加油进度,生成油单信息,电子签名,上传油单信息到数据库,调用打印机接口发送打印油单请求等功能。
5)人车绑定模块。指的是加油员执行加油任务需要和加油车绑定。包括显示加油员信息;手动输入车辆号;根据车辆编号实现人车绑定。
6)导航栏信息模块。创建APP头部常用快捷按钮,包括加油员个人信息;弹窗显示告警消息;退出登录;以及后面会增加的聊天窗口(与PC端调度员沟通)等功能。
(2)系统领域模型设计
领域驱动设计(DDD:Domain-Driven Design),是一套综合软件系统分析和设计的面向对象建模方法。DDD思想的价值在于在软件开发时首先需要领域专家、设计人员、开发人员面向同一个模型进行交流,彼此共享知识与信息,防止需求走样,从而建立正确的领域模型;其次通过领域模型驱动软件设计,用代码来实现该领域模型。由此可见,领域驱动设计的核心是建立正确的领域模型。
根据平板加油系统的需求分析和功能设计,可对其进行领域模型的设计。由于系统逻辑较为复杂,给出部分领域模型如图4所示。
建立领域模型,区分领域对象和领域对象之间的逻辑关系,需要分析出系统中哪些对象是实体,哪些是值对象,哪些是服务。以下简要介绍领域模型中主要的领域组件。
1)区分Entity(实体)和Value Object(值对象)
从需求分析以及加油作业的场景中我们可以抽象出以下一些领域对象,如StaffInfo、VehicleInfo、FlightInfo、TaskInfo、OilSheet、FuelInfo等,这些对象都是必须被跟踪的,具有唯一的标识,都是Entity。而像flgtFlon,taskContent,flrcType,staffName等它们只是描述这些实体的特征,不需要连续的标识,是Value Object。
2)分析关联关系
对象之间复杂的关联关系容易形成对象的关系网,对于理解和维护单个对象很不利,同时也很难划分对象与对象之间的边界。所以在设计关联时,关联应尽可能的少,而且尽量保持单向的关联,把多对多或者一对多简化为一对一的关系,并将对象之间不存在的关联关系去除。
3)设定聚合边界,确定聚合根
聚合被看作是多个模型单元间的组合,它定义了模型的关系和边界。每个聚合都有一个根,根是一个实体,并且是唯一可被外访问的。例如,StaffInfo、OilSheet、FlightInfo、TaskInfo等都有自己的唯一标识,并且需要单独对其进行跟踪,它们都是个体的聚合根。
4)选择仓储对象(Repository)
领域模型中的对象自从创建后不会一直留在内存活动,当它不活动时会被持久化到数据库中,当需要的时候会重建该对象。根据DDD建模方法,通常需要对聚合根考虑资源库。例如本领域模型中设计的仓储有FlightTask和StaffVehiTask等。
5)对象创建分析
考虑创建对象,对于较为简单的领域对象,应该首先考虑通过对象的构造函数来创建。对于一些较为复杂的聚合根对象,在创建领域对象时不仅仅是简单的new操作,还有实例化对象,初始化操作等创建对象的细节,就需要考虑工厂模式来封装,将创建对象的细节隐藏起来,避免领域层的逻辑泄露到应用层。本领域模型中为OilSheet设计了工厂,OilSheet是核心领域对象,涉及到整个领域的大部分内容。
3、系统分层架构设计
(1)领域驱动设计的分层原则
DDD分层的基本原则是:1)需要分离关注点,隔离地设计软件的不同部分。2)某一层中的所有元素都只能依赖于同一层中的其它元素或者依赖于其直接的下层元素。3)向上的信息传递必须经过一些间接机制。分层的意义在于每层都只负责系统软件的某一个特定方面,使得各层职责分工明确。这种基于专责的划分,可以使各层的设计更加具有内聚性,并且使得这些设计更加容易解释,软件架构更为清晰。大多数成功的分层设计都可以使用DDD的经典分层架构来实现,如图6所示。
DDD的经典架构分成接口层(Interfaces)、应用层(Applications)、领域层(Domain)以及基础结构层(Infrastructure)。以下结合MVC设计模式详细说明各层的职能。
(2)React+Redux中的MVC设计模式
React和Redux都是前端框架,React是一个负责View层渲染的框架,其采用的Diff算法和虚拟DOM思想使得当前JS在操作DOM时耗费效率方面的问题得到了有效的解决。Redux是一个轻量级的数据层框架,可以使我们存储数据方式更为清晰,而且能够在应用的任何位置快速获取该数据。
React+Redux中的MVC模式是对传统MVC框架的细化,在Redux中Controller分为action和reducer,通过action去派发一个事件,然后在reducer里定义这个事件,对store中的state进行修改。Redux中store里的state表示Model,而React主要负责UI层的显示,里面的各个Component表示View。其之间的通信方式如图7所示。
(3)基于DDD思想的MVC分层架构
对于业务逻辑较为复杂、设计规则灵活多变的软件系统,则需要一种适用于复杂业务逻辑的业务建模方法来构建项目,DDD正是以系统业务建模为中心,解决复杂逻辑业务的先进建模方法。而基于React和Redux框架的MVC设计模式可以更加清晰地组织软件结构,同时能降低系统各层之间的耦合,提高程序的可维护性和可扩展性。两者的有机组合更符合系统对可维护性和可扩展性的要求。在MVC模式的基础上进一步将系统层次细化得到基于DDD思想的MVC分层架构,如图8所示。
系统从MVC的角度设计分层架构为User Interface和Model(模型层)。Model可按照DDD进一步细分为Application、Domain和Infrastructure三层。其中UserInterface层包括View和Controller。
1)UserInterface(用户接口层)
用户接口层负责向用户展现信息,并且会解析用户行为,即常说的展现层,包括视图层和控制层。视图层在本系统中主要表现为APP的各种操作页面,具体来说就是ReactNative的各个Component(组件)。控制层基于REST风格接口,基本不做任何业务逻辑的处理,只负责把用户的请求转成针对Model的操作和完成前端APP页面到后台接口的路由。
2)Application(应用层)
应用层主要组件就是Service,所有的Service只负责协调并委派业务逻辑给领域对象进行处理,其本身没有任何的业务逻辑代码,主要用于协调不同领域对象之间的动作或领域模型与基础结构层组件之间的工作,以完成一个特定的、明确的系统任务。
3)Domain(领域层)
领域层是整个系统的核心层,该层维护一个使用面向对象技术实现的领域模型,几乎全部的业务逻辑会在该层实现。Domain层包含Entity(实体)、Value Object(值对象)、Domain Event(领域事件)和Repository(仓储)等多种重要的领域组件。
4)Infrastructure(基础结构层)
作为基础结构层,Infrastructure为User Interfaces、Application和Domain三层提供底层依赖操作。该层不涉及逻辑,所有与具体平台、框架相关的实现会在Infrastructure中提供。Infrastructure中最常见的一类设施是对象持久化的具体实现,因此对该层可以再分出持久化层,将领域模型的状态都直接或间接地存储在这一层(持久化至数据库),而保持Domain层业务逻辑的纯净。
4、实现与测试
根据前面系统需求分析和领域模型设计,移动端航油加注系统实现的主要业务功能有,航班信息显示、任务列表显示,离线创建任务、电子油单生成、电子签名、同步数据、油单上传及打印等核心业务功能。
加油员在平板作业终端打开系统APP,进入登录页面,输入账户和密码,和后台进行信息验证,通过后进入APP首页,即任务列表页。APP在线时,登录后会自动获取当前的任务,可点击可查看每条任务内容。APP离线时,任务列表页空白,不显示任务信息。
点击侧边栏航班按键,APP在线时可自动获取航班列表,APP离线时需要创建航班保存到本地航班列表。
在APP离线时,航班列表和任务列表都无法从后台获取,则需要离线创建航班。
加油员在点击任务列表页的某条任务后跳转到任务详情即油单页,在此之前开始加油按键状态是接受任务。接受任务是生成油单的基本信息,如油单号和部分航班信息。点击开始加油按键后,获取到加油数据后上传到油单页,此时按键状态变成生成油单。
生成油单完成之后,可以看到油单数据的全部信息,核对后可以在签名触控区域进行电子签名确认,最后上传打印。
经测试,系统能够正常完成各项功能的操作,后台能够正常接收到APP发送的请求,并且后台能测试到APP成功发给车载设备的油单数据。
本发明首先详细分析了系统业务需求和业务流程;其次通过需求设计系统功能,结合领域建模分析方法,更深层次地挖掘出项目核心需求,使得软件的设计更符合实际的需求。然后,基于领域驱动设计的分层架构思想,结合MVC设计模式,利用ES6语法、ReactNative移动端框架、React和Redux框架以及Android数据库框架Realm等新技术设计了系统的分层架构,有效地划分软件的层次设计,降低了系统各层之间的耦合性,提高了软件的开发效率和可维护性。最后,实现了加油员平板终端操作的航油加注系统,使得机场加油作业方式从传统的人工操作到实现电子化、智能化控制成为了可能,对机场管理以及民航产业的现代化、信息化发展都具有重要意义。
在上述实施例中,可以全部或部分地通过软件、硬件、固件或者其任意组合来实现。当使用全部或部分地以计算机程序产品的形式实现,所述计算机程序产品包括一个或多个计算机指令。在计算机上加载或执行所述计算机程序指令时,全部或部分地产生按照本发明实施例所述的流程或功能。所述计算机可以是通用计算机、专用计算机、计算机网络、或者其他可编程装置。所述计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输,例如,所述计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如同轴电缆、光纤、数字用户线(DSL)或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输)。所述计算机可读取存储介质可以是计算机能够存取的任何可用介质或者是包含一个或多个可用介质集成的服务器、数据中心等数据存储设备。所述可用介质可以是磁性介质,(例如,软盘、硬盘、磁带)、光介质(例如,DVD)、或者半导体介质(例如固态硬盘SolidState Disk(SSD))等。
以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。
Claims (10)
1.一种领域驱动模型,其特征在于,所述领域驱动模型包括:
1)区分实体Entity和值对象Value Object;从需求分析以及加油作业的场景中抽象领域对象,如StaffInfo、VehicleInfo、FlightInfo、TaskInfo、OilSheet、FuelInfo,具有唯一的标识,都是Entity;像flgtFlon,taskContent,flrcType,staffName描述实体的特征,不需要连续的标识,是Value Object;
2)分析关联关系,保持单向的关联,多对多或者一对多简化为一对一的关系,并将对象之间不存在的关联关系去除;
3)设定聚合边界,确定聚合根,定义模型的关系和边界,每个聚合都有一个根,根是一个实体,并且是唯一可被外访问的;
4)选择仓储对象Repository,根据DDD建模方法,对聚合根考虑资源库;
5)对象创建分析,初始化操作等创建对象的细节,考虑工厂模式封装,将创建对象的细节隐藏,避免领域层的逻辑泄露到应用层。
2.一种基于权利要求1所述领域驱动模型的基于DDD的移动端航油加注控制系统,其特征在于,所述基于DDD的移动端航油加注控制系统包括:
人员登录模块,用于管理加油员登录登出状态,验证加油员ID和密码信息;
任务信息模块,用于管理任务信息,获取任务列表,新增加油任务,取消当前任务,查看任务详情,结束任务,检索任务;
航班信息模块,用于管理航班信息,获取航班列表,创建离线航班,查看航班详情,检索航班,订阅航班,任务申请,修改航班;
油单信息模块,用于读取油料信息,显示加油进度,生成油单信息,电子签名,上传油单信息到数据库,调用打印机接口发送打印油单请求;
人车绑定模块,用于加油员执行加油任务时与加油车绑定,可显示加油员信息、手动输入车辆号、根据车辆编号实现人车绑定;
导航栏信息模块,用于创建APP头部常用快捷按钮,可查看加油员个人信息,弹窗显示告警消息,退出登录,与PC端调度员沟通。
3.如权利要求2所述的基于DDD的移动端航油加注控制系统,其特征在于,所述人员登录模块,包括加油员登录单元、加油员注销单元;
任务信息模块,包括任务列表单元、任务详情单元、任务检索单元;任务列表单元包括,添加任务子单元、任务取消子单元;任务详情单元包括:接收任务子单元;
航班信息模块,包括创建航班单元、航班列表单元、航班详情单元、修改航班单元;航班列表单元包括:新增航班子单元、查询航班子单元;航班详情单元包括:订阅航班子单元、申请任务子单元;
油单信息模块,包括生成油单单元、油单签名单元、上传油单单元、打印油单单元;
人车绑定模块,包括显示人员信息单元、输入车辆号单元、绑定车辆单元;
导航栏信息模块,包括加油员信息单元、警告提醒单元、推出系统单元、聊天窗口单元。
4.如权利要求2所述的基于DDD的移动端航油加注控制系统,其特征在于,所述基于DDD的移动端航油加注控制系统从MVC的角度设计分层架构为UserInterface和模型层Model;模型层Model按照DDD进一步为Application、Domain和Infrastructure三层;其中UserInterface层包括View和Controller;
1)用户接口层User Interface,用于向用户展现信息,并且解析用户行为;包括视图层和控制层,视图层为APP的各种操作页面,是ReactNative的各个组件Component;控制层基于REST风格接口,把用户的请求转成针对Model的操作和完成前端APP页面到后台接口的路由;
2)应用层Application,组件是Service,所有的Service协调并委派业务逻辑给领域对象进行处理,用于协调不同领域对象之间的动作或领域模型与基础结构层组件之间的工作,以完成一个特定的、明确的系统任务;
3)领域层Domain,维护一个使用面向对象技术实现的领域模型;Domain层包含实体Entity、值对象Value Object、领域事件Domain Event和仓储Repository多种重要的领域组件;
4)基础结构层Infrastructure,作为基础结构层,Infrastructure为UserInterfaces、Application和Domain三层提供底层依赖操作。
5.一种运行权利要求2所述基于DDD的移动端航油加注控制系统的基于DDD的移动端航油加注控制方法,其特征在于,所述基于DDD的移动端航油加注控制方法包括以下步骤:
第一步,登录后后台会根据加油员ID推送当天的航班信息和任务列表;如果当前任务列表中无任务,则在航班列表中查看航班详情,可申请任务,此时任务列表中新增任务信息,点击查看任务详情,确认接受任务;如果当前任务列表中有加油任务,则直接查看任务详情,确认信息接受任务;
第二步,开始加油,根据车载设备读取油料信息、显示加油进度,待加油完成,确认生成油单信息并与机组人员核对油单信息,核对无误后签名确认,上传打印;
第三步,通过车载联网设备生成油单,一次加油任务结束。
6.如权利要求5所述的基于DDD的移动端航油加注控制方法,其特征在于,移动端航油加注离线操作方法具体包括:
在平板终端无法联网时,APP使用离线模式执行任务;如果加油员登录后一开始就出现断网状况,事前没有本地缓存的航班信息时,就需要手动创建航班,填写航班信息,确认后保存到航班列表,然后查看航班详情,离线申请任务,任务列表新增加油任务,然后确认接受任务,开始后续加油作业过程;
如果之前系统有一次成功联网,本地有事前联网缓存的航班信息,则不用手动创建航班,可直接查看本地航班详情进行离线任务申请,然后接受任务,完成后续加油作业过程。
7.一种实现权利要求5~6任意一项所述基于DDD的移动端航油加注控制方法的计算机程序。
8.一种实现权利要求5~6任意一项所述基于DDD的移动端航油加注控制方法的信息数据处理终端。
9.一种计算机可读存储介质,包括指令,当其在计算机上运行时,使得计算机执行如权利要求5~6任意一项所述的基于DDD的移动端航油加注控制方法。
10.一种实现权利要求5~6任意一项所述基于DDD的移动端航油加注控制方法的移动终端。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910123588.2A CN109976721A (zh) | 2019-02-18 | 2019-02-18 | 基于ddd的移动端航油加注控制系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910123588.2A CN109976721A (zh) | 2019-02-18 | 2019-02-18 | 基于ddd的移动端航油加注控制系统 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN109976721A true CN109976721A (zh) | 2019-07-05 |
Family
ID=67077117
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910123588.2A Pending CN109976721A (zh) | 2019-02-18 | 2019-02-18 | 基于ddd的移动端航油加注控制系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109976721A (zh) |
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111062691A (zh) * | 2019-12-16 | 2020-04-24 | 武汉云辅材科技有限公司 | 一种零售连锁响应式方法 |
CN111080049A (zh) * | 2019-08-31 | 2020-04-28 | 青岛民航凯亚系统集成有限公司 | 机场地面保障电子签单管理方法 |
CN112668968A (zh) * | 2020-12-24 | 2021-04-16 | 大唐互联科技(武汉)有限公司 | 一种基于领域驱动设计的仓储管理建模方法及系统 |
CN113256122A (zh) * | 2021-05-26 | 2021-08-13 | 中国电子信息产业集团有限公司第六研究所 | 加油员作业资格的认证方法、装置、系统及可读存储介质 |
CN113256120A (zh) * | 2021-05-26 | 2021-08-13 | 中国电子信息产业集团有限公司第六研究所 | 一种飞机加油订单的分配方法、装置及可读存储介质 |
CN115796554A (zh) * | 2023-01-31 | 2023-03-14 | 中国航空油料有限责任公司 | 一种离线加油单的创建方法及装置 |
CN115796555A (zh) * | 2023-01-31 | 2023-03-14 | 中国航空油料有限责任公司 | 一种航油加注系统 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8338785B2 (en) * | 2011-04-29 | 2012-12-25 | Rosemount Aerospace Inc. | Apparatus and method for detecting aircraft icing conditions |
CN105550968A (zh) * | 2016-01-15 | 2016-05-04 | 中国民用航空总局第二研究所 | 航班加油调度控制系统、方法、发送及接收方法、装置 |
-
2019
- 2019-02-18 CN CN201910123588.2A patent/CN109976721A/zh active Pending
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8338785B2 (en) * | 2011-04-29 | 2012-12-25 | Rosemount Aerospace Inc. | Apparatus and method for detecting aircraft icing conditions |
CN105550968A (zh) * | 2016-01-15 | 2016-05-04 | 中国民用航空总局第二研究所 | 航班加油调度控制系统、方法、发送及接收方法、装置 |
Non-Patent Citations (2)
Title |
---|
PURSUE: ""浅析DDD(领域驱动设计)"", 《HTTPS://WWW.JIANSHU.COM/P/B6EC06D6B594》 * |
叶彦廷: ""飞机加油信息管理系统的建设与应用"", 《民航管理》 * |
Cited By (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111080049A (zh) * | 2019-08-31 | 2020-04-28 | 青岛民航凯亚系统集成有限公司 | 机场地面保障电子签单管理方法 |
CN111080049B (zh) * | 2019-08-31 | 2023-09-01 | 青岛民航凯亚系统集成有限公司 | 机场地面保障电子签单管理方法 |
CN111062691A (zh) * | 2019-12-16 | 2020-04-24 | 武汉云辅材科技有限公司 | 一种零售连锁响应式方法 |
CN112668968A (zh) * | 2020-12-24 | 2021-04-16 | 大唐互联科技(武汉)有限公司 | 一种基于领域驱动设计的仓储管理建模方法及系统 |
CN113256122A (zh) * | 2021-05-26 | 2021-08-13 | 中国电子信息产业集团有限公司第六研究所 | 加油员作业资格的认证方法、装置、系统及可读存储介质 |
CN113256120A (zh) * | 2021-05-26 | 2021-08-13 | 中国电子信息产业集团有限公司第六研究所 | 一种飞机加油订单的分配方法、装置及可读存储介质 |
CN113256120B (zh) * | 2021-05-26 | 2023-09-26 | 中国电子信息产业集团有限公司第六研究所 | 一种飞机加油订单的分配方法、装置及可读存储介质 |
CN115796554A (zh) * | 2023-01-31 | 2023-03-14 | 中国航空油料有限责任公司 | 一种离线加油单的创建方法及装置 |
CN115796555A (zh) * | 2023-01-31 | 2023-03-14 | 中国航空油料有限责任公司 | 一种航油加注系统 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109976721A (zh) | 基于ddd的移动端航油加注控制系统 | |
Hatley et al. | Strategies for real-time system specification | |
Rozanski et al. | Software systems architecture: working with stakeholders using viewpoints and perspectives | |
US20130117060A1 (en) | System for Collaboration and Meeting Management | |
US8166130B2 (en) | Methods and systems for exchanging data between a command and control information system and an enterprise resource planning system | |
US20070038683A1 (en) | Business intelligence system and methods | |
Unhelkar | Big data strategies for agile business | |
CN104657903A (zh) | 基于ietm的装备综合保障系统 | |
CN102567840A (zh) | 基于混合任务板和关键路径方法的项目管理应用界面 | |
Schumann et al. | Concurrent systems engineering in aerospace: From excel-based to model driven design | |
CN104680325A (zh) | 基于Oracle数据库的无人机飞行试验任务单自动规划方法 | |
Al-Fedaghi et al. | Business process mapping: a case study | |
Neumayr et al. | Providing packages of relevant ATM information: An ontology-based approach | |
Jensen et al. | A practical blockchain-based maintenance record system for better aircraft security | |
CN112258091A (zh) | 一种数据传输方法、装置、设备及存储介质 | |
Marinescu et al. | Domain-driven design Quickly | |
Afaneh et al. | Airport enterprise service bus with three levels self-healing architecture (AESB-3LSH) | |
Godlewska | Agent system for managing distributed mobile interactive documents in knowledge-based organizations | |
de Weck | Knowledge Management and Technology Transfer | |
Fuller | Continuous Integration/Continuous Delivery Pipeline for Air Force Distributed Common Ground System (AF DCGS) | |
Forero Velasco | Microservices for a carrying hailing service system: management of cargo transports in real-time | |
McNally et al. | US Department of Energy, Office of Science High Performance Computing Facility Operational Assessment 2018 Oak Ridge Leadership Computing Facility | |
Cecchetti et al. | A communication platform demonstrator for new generation railway traffic management systems: Testing and validation | |
Kularatne | Tri Lingual Cabinet Paper Processing System (CPPS) | |
Wheaton et al. | Mission Assurance Considerations for Model-Based Engineering for Space Systems |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |