1、之前的管理上述信息的方法是通过excel,很不方便 2、网页看起来更加美观 3、我一个人去客户公司驻场,但工作内容不是很多,客户觉得可以把我给用起来。 4、现有的一些工单软件没法满足定制化的需求
点击空白处退出提示
1、之前的管理上述信息的方法是通过excel,很不方便 2、网页看起来更加美观 3、我一个人去客户公司驻场,但工作内容不是很多,客户觉得可以把我给用起来。 4、现有的一些工单软件没法满足定制化的需求
这个项目主要是给本公司的内部业务使用的,旨在提升管理以及协作的方便性。主要功能分成四个模块,模型、工单、密钥以及通知模块。其中这里的模型指的是机载软件中会用到的各种模型,比如防冰除雨、气动模型等,这个模型需要发给客户(但是涉密了,所以需要加密就要用到密钥管理模块),围绕着这个模型的一些工作有工单创建、指定执行工单的人、工单流转、模型的封装、加密、发送等操作(这些操作是放在工单这个模块里的),没做一个操作需要对接收的人做一个提醒,于是就有了最后的这个通知模块。具体的显示效果看other目录里的项目介绍
技术选型思路:
后端方面
在数据库方面使用的是mysql原生的api,这个用起来更加简单一点。编程语言方面使用的是C++,选择这个语言是因为团队使用比较熟练,另外java跟c++在写后端的时候代码的复杂度也差不多。测试框架使用的是catch2,之所以用测试框架是为了测试的方便(与手动测试相比)。编辑器使用的是vs code,理由是中小型的项目vs code能够胜任(大型就不行了)。构建方面使用的是cmake,因为这个构建工具是跨平台的。前后端通信的框架使用的是crow,因为可以直接调比较方便。
数据库方面
采用分表格的方式来进行设计,比如不同类型的工单会有一个公用的表格,然后各自有各自的表格,这种做法是在用性能来换取可维护性。
一些技术点
1、整体解耦思想的使用,这包括两个方面。首先是整体架构的划分,后端划分成三层架构(service、entity以及controller),其中service专注于处理业务逻辑,比如调用各个entity层封装好的与数据库的沟通方式。然后是根据业务进行的模块划分(工单模块、密钥模块等)。 2、Modern C++的实践,比如通过shared_ptr指针实现工单类型的多态。 3、数据库连接池的实现,避免重复创建以及销毁带来的开销。 4、异常的处理方面,统一交给日志模块进行管理,日志等级分成info以及error。另一个约束方式用户保证的,用户按照约定好的使用方法使用来避免异常。 5、接口与实现的分离(比如IModelDAO跟ModelDAO,后者是继承前者的),这样做是考虑到如果日后有别的实现方式,可以不用更改接口。满足开闭原则。 6、设计模式采用MVC模式,这个是观察者模式的一种,一套数据源可以对应多个试图。 7、配置方面(比如数据库连接的信息)单独放在一个.ini配置文件里 8、前端通过使用分页查询而不是加载全部数据来提升性能。



评论