BOS物流项目问题汇总

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_32332777/article/details/79053305

请描述一下这个系统?

从两个方面回答,

第一个方面:系统背景及系统概述

本系统是基于B/S架构而设计开发的,是某物流公司的一个后台管理系统,属于物流公司整个ERP平台的一个组成部分。本系统是此物流公司的一个二期改造项目,原来此公司存在一个C/S架构的系统,后来业务不断扩大,所以公司决定进行改造。该系统主要有基础设置、取派、中转、路由、报表几大部分组成。

第二个方面:系统包括的业务模块及主业务流程

本系统包括了:基础设置、取派、中转、路由、报表几大部分组成。

扩展问题:

这个系统你做了哪些模块?

负责系统管理模块、基础设置模块的开发。其他模块没有接触到,所以不太清楚。

项目周期是多长?团队人数多少?

整个项目周期大概是一年的时间,其中编码阶段大概有4个多月,团队人数20多个人。

说说系统的架构?spring的作用?

  • 功能架构:

本系统是基于B/S架构而设计开发的,是某物流公司的一个后台管理系统,属于物流公司整个ERP平台的一个组成部分。本系统是此物流公司的一个二期改造项目,原来此公司存在一个C/S架构的系统,后来业务不断扩大,所以公司决定进行改造。该系统主要有基础设置、取派、中转、路由、报表几大部分组成。

  • 技术架构:

本系统采用ssh框架开发(struts2.3.15、spring3.2.0、hibernate3.6),web层使用struts2、持久层采用hibernate3.6,[[]{#OLE_LINK254
.anchor}]{#OLE_LINK253 .anchor}spring管理web层
的action、业务层的service、持久层的dao。

spring的作用:

spring管理web层
的action、业务层的service、持久层的dao,对struts的action采用多例的方式管理,对service和dao采用单例方式。

本系统采用声明式事务控制方式对service层进行事务控制,spring和hibernate整合后,
spring在service方法开发执行前创建session,开启事务,方法结束提交事务,关闭session。

spring和shiro进行整合开发,spring管理shiro框架的securityManager、realm等bean,另外spring通过cglib方式生成action的代理对象,实现权限控制。

spring和hessian框架整合开发远程调用接口。

spring和activiti整合开发工作流,spring管理activiti的各各service。

项目中如何进行事务管理的?

这个项目的事务管理是通过spring的声明式事务进行管理的,具体做法是使用spring提供的事务注解,为Service创建代理对象,由代理对象进行事务控制。

这个系统hibernate是怎么用的?或这个系统持久层如何实现的?

本系统使用hibernate3.6 版本。

本系统使用hibernate的QBC和HQL两种方式开发。使用hibernate可以大大简化持久层开发。

本系统对Dao层进行封装,采用泛型封装BaseDao,在spring定义bean的配置中通过BaseDao的构造方法动态获得操作的实体类型,这样做的好处是只需要在系统定义一个BaseDao即可,根据模型的不同在spring的配置文件定义不同的Dao。

在开发中是否遇到hibernate延迟加载问题?怎么解决的?

在开发中遇到延迟加载问题了,通过spring的OpenSessionInViewFilter过滤器解决这个问题。但这个还不够,比如在页面中使用easyUI的datagrid展示数据,这时在服务端查询到数据后,需要转为json返回给datagrid,这时如果查询到的对象内部引用了关联对象,而这个关联对象是延迟加载的,就无法转为json,这时就需要使用立即加载策略。

在你们开发过程中是否使用到了hibernate自动建表功能?

没有使用到,我们所有的数据表都是通过sql自己创建的。

这个项目中是否使用到了hibernate的二级缓存?

没有使用到二级缓存,因为虽然缓存可以起到优化的作用,但我们项目要求的都是实时数据,所以没有使用缓存。

这个系统struts是怎么用的?

本系统采用模型驱动方式编写action,视图层采用jsp。

开发中封装BaseAction,采用泛型由子类指定具体的模型对象类型。

struts中的所有action对象都交由spring创建。

这个项目中是否用到struts2的值栈了?

没有用到值栈,因为整个项目页面列表数据展示,都是基于easyUI中datagrid展示的,发送的都是ajax请求,也就是说在服务端都是返回json数据展示到datagrid中,所以不需要值栈。

这个系统UI使用什么框架?都用到jquery easy ui的哪些组件?

系统UI使用Jquery easy UI,及jquery库。

系统框架布局使用layout,系统标签窗口采用tabs,系统菜单使用方accordion,数据列表采用datagrid,

弹出窗口 window

消息提示:messager

菜单:menubutton

这个系统的认证和授权是怎么实现的?如何使用shiro的?

本系统使用了Apache
Shiro框架完成认证和授权。shiro框架中的对象创建由spring负责创建。

shiro框架共提供了4中权限控制方式,本系统中使用到前3种方式:

1、URL拦截权限控制,通过shiro框架提供的过滤器实现

{width=”4.094444444444444in”
height=”2.292361111111111in”}

2、方法注解权限控制,通过为Action创建代理对象实现

{width=”3.6979166666666665in”
height=”1.0833333333333333in”}

3、页面标签权限控制,通过shiro框架提供的标签实现

{width=”3.7083333333333335in”
height=”1.3645833333333333in”}

4、代码级别权限控制,通过在程序中调用shiro的API完成权限控制

{width=”5.34375in” height=”1.6145833333333333in”}

认证及授权流程:

你们如何使用shiro?

1、自定义了realm,从数据库查询用户密码和用户的权限信息,为了避免多次查询realm使用ehcache缓存。

2、使用shiro主要是要在shiroFilter中配置过虑规则,哪些可以匿名访问,哪些必须要认证。

系统中有导入、导出功能吗?怎么实现的?

系统有导入导出功能,对区域数据实现导入和分区数据实现导出。

使用Apache POI组件完成导入和导出Excel

作过接口吗?怎么做的?采用什么技术?

在业务受理、自动分单时,bos系统需要调用物流公司的crm系统获取客户信息。

我参考接口文档进行开发,参考接口文档中的参数定义编写代码。

采用hessian框架实现远程调用,由于接口同步的数据量不大,hessian采用框架定义的二进行协议传输数据,速度很快,本系统采用hessian。

在开发时将服务端的接口拷贝至本系统,[[]{#OLE_LINK264
.anchor}]{#OLE_LINK263 .anchor}在
spring的配置文件中配置代理接口,在本系统的service中直接注入调用,非常方便。

你了解的还有哪些接口技术?

对于大数据量传输的,自己的系统之间一般我们就直接使用socket的方式传输了。

对于一些公开的接口(不同公司的系统之间的调用),大多采用http的方式定义接口,对于服务端现在流行使用rest方式,对于客户端我们一般使用httpclient调用服务端。

还有一些接口采用webservice(soap协议),这个我们使用过cxf这个框架开发。

系统使用工作流了吗?怎么用的?

系统使用activiti工作流引擎对物流配送流程进行管理。

使用方法:

本系统使用Activiti工作流管理物流配送流程,在启动流程实例时将工作单的id设置到businessKey中,这样工作单表和工作流的流程实例表就关联起来了。

任务指派使用组任务完成,在系统用户添加、修改、删除时及角色添加修改删除时将用户和角色信息同步到工作流的表中。

启动流程实例时,将工作单对象记录在流程变量中供每个结点读取业务数据使用。

业务的操作流程是:

1、业务员启动流程实例,并审核工作单

2、仓库管理员进行货物出库

3、取派员进行货物配送

4、取派员进行货物签收操作

你是如何和测试人员配合工作的?

每天定时登录项目管理平台,查看有没有自己名下bug,如果有根据测试人员描述的测试场景进行测试,如果存在bug会及时修改,修改完成将bug提交。如果根据测试人员描述的测试场景进行测试,bug不存在,和测试人员沟通。

如果遇到bug来回驳回,我去现场和测试人员进行沟通,针对测试场景看看双方是否一致。

你参与过系统维护吗?系统维护的流程是?

参与过,系统维护流程如下:

这个项目开发过程中遇到了哪些问题?

遇到的问题很多,有技术方面的,也有非技术方面的:

1、开发工程师的技术水平参差不齐,有些技术稍差的工程师经常不能按时完成项目经理分配的任务,还需要其他人帮忙,导致项目进度缓慢

2、和测试人员沟通困难,有些时候测试人员会提交一些bug,但在我们开发看来根本就不是bug

3、人员不稳定,如果有人离职,新招进来的人不能立即上手,导致项目推进缓慢

从这个项目中你收获了什么?

1、整个项目下来,使自己的技术得到了一定的提升

2、虽然自己只是一个开发工程师,但是可以体会到应该站在更高的层次来看待整个项目

3、意识到沟通的重要性

4、结识了一帮兄弟,一起加班一起奋斗

阅读更多
想对作者说点什么?

博主推荐

换一批

没有更多推荐了,返回首页