OA系统设计.docx

上传人:b****6 文档编号:6356667 上传时间:2023-01-05 格式:DOCX 页数:14 大小:351.11KB
下载 相关 举报
OA系统设计.docx_第1页
第1页 / 共14页
OA系统设计.docx_第2页
第2页 / 共14页
OA系统设计.docx_第3页
第3页 / 共14页
OA系统设计.docx_第4页
第4页 / 共14页
OA系统设计.docx_第5页
第5页 / 共14页
点击查看更多>>
下载资源
资源描述

OA系统设计.docx

《OA系统设计.docx》由会员分享,可在线阅读,更多相关《OA系统设计.docx(14页珍藏版)》请在冰豆网上搜索。

OA系统设计.docx

OA系统设计

OA系统设计

1.整体说明

1.1.项目说明

1.1.1.OA概述

OA是OfficeAutomation的缩写,本意为利用技术的手段提高办公的效率,进而实现办公的自动化处理。

实现信息化、无纸化办公,可方便的生成统计报表等。

OA是OFFICEAUTOMATION的缩写,本意为利用技术的手段提高办公的效率,进而实现办公的自动化处理。

采用Internet/Intranet技术,基于工作流的概念,使企业内部人员方便快捷地共享信息,高效地协同工作;改变过去复杂、低效的手工办公方式,实现迅速、全方位的信息采集、信息处理,为企业的管理和决策提供科学的依据。

OA软件解决企业的日常管理规范化、增加企业的可控性、提高企业运转的效率的基本问题。

范围涉及日常行政管理、各种事项的审批、办公资源的管理、多人多部门的协同办公、以及各种信息的沟通与传递。

可以概括的说,OA软件跨越了生产、销售、财务等具体的业务范畴,更集中关注于企业日常办公的效率和可控性,是企业提高整体运转能力不可缺少的软件工具。

1.1.2.本系统作用

组织的核心竞争力源自单位对内外部资源的有效利用。

对它们之间的关系进行协调,最大限度的发挥所有资源的作用,并用系统的观点,在整个系统价值最大化的基础上来发挥各个资源的作用,使资源的运作产生协同效用。

因此可通过协同办公系统打造单位的核心竞争力。

本协同办公系统的主要作用为:

1、建立内部的通信平台。

2、建立信息发布的平台。

3、文档管理的自动化。

4、工作流程的自动化。

5、行政日常事务处理。

6、安全机制的可靠性。

本系统旨在加速单位信息化进程,充分利用计算机和现代通讯手段面向单位服务。

建立单位内部信息交流的快速通道,以共享信息资源。

强化部门业务管理,加强各业务部门之间的交流。

实现单位信息的快速上传下达,促进协同办公。

提高办公效率,为各级领导及业务人员提供辅助办公和决策服务。

1、本系统将最大限度地提高办公效率和办公质量,降低管理和办公成本,改善办公环境和条件,提高办公管理和决策的自动化和科学化水平。

2、以人为中心,致力于帮助用户实现共享资源、规范流程、推动执行的目的。

帮助用户节省办公费用,减少中间环节,优化业务流程,提高整体效率,促进管理进步。

简单的说,有以下两点:

1,利用技术的手段提高办公的效率

2,信息化,可方便的生成统计报表等。

1.1.3.设计原则

以应用为核心,要突出“实用、易用、简洁、稳定”。

既注重实效,满足用户的现实需要,又为系统的后续升级和扩展留有余地。

在技术实现上,要突出“结构清晰、实现合理、通俗易懂(简单)”。

1.实用:

满足用户现实需要,解决实际问题,做细核心功能。

2.易用:

使用方便,各项功能一目了然。

满足用户的使用习惯,易使用、易维护、易升级。

实现“傻瓜”式的操作,将实施、培训成本和周期降到最低。

3.简洁:

页面简洁,功能简洁,每一个元素都有存在的意义。

4.稳定:

从底层数据库到功能层经过严格测试,能在不同的硬件环境中长期平稳运行。

1.1.4.功能说明

OA是辅助办公的软件,使用OA与不使用OA相对比的好处是:

可以用计算机管理所有的数据,并可以方便的实现统计与报表的功能。

提高办公效率。

(实现信息化)。

以下是一个OA系统的全部功能列表:

说明:

不是所有的OA都有全部的功能,而是根据需求确定的。

1.2.项目实现说明

1.2.1.软件开发的步骤说明

需求确认—概要设计—详细设计—编码—单元测试—集成测试—系统测试—维护。

单元测试是由程序员自己来完成,最终受益的也是程序员自己。

可以这么说,程序员有责任编写功能代码,同时也就有责任为自己的代码编写单元测试。

执行单元测试,就是为了证明这段代码的行为和我们期望的一致。

集成测试,也叫组装测试或联合测试。

在单元测试的基础上,将所有模块按照设计要求(如根据结构图〕组装成为子系统或系统,进行集成测试。

实践表明,一些模块虽然能够单独地工作,但并不能保证连接起来也能正常的工作。

程序在某些局部反映不出来的问题,在全局上很可能暴露出来,影响功能的实现。

系统测试是将已经确认的软件、计算机硬件、外设、网络等其他元素结合在一起,进行信息系统的各种组装测试和确认测试,其目的是通过与系统的需求相比较,发现所开发的系统与用户需求不符或矛盾的地方,从而提出更加完善的方案。

1.2.2.在项目开发中,我们处于什么位置,要做哪些事情?

1.2.3.在课堂上,我们要完成哪些功能,具体需求是什么?

模块

功能

说明

组织与用户管理

岗位管理

部门管理

用户管理

系统权限

初始化权限

分配权限

验证权限

网上交流--论坛

版块管理

看帖、发帖、回帖

文章管理

审批流转(工作流)

表单模板管理

审批流程管理

审批流转

表单查询

说明:

按列出的顺序实现功能。

效果以静态页面为准(需求)。

按静态页面做

1.3.ItcastOA的整体设计

1.3.1.分层

一、JavaEE的三层架构

二、关于分层的说明

1,上面调用下面,即View调用Service,Service调用Dao。

2,层与层之间用接口。

除定义的接口外,不能使用其它层的特有类或接口。

3,使用实体作为DTO(DataTransferObject,数据传输对象)

要做到任一层换掉后,其他层不受影响。

我们在此项目中使用两层:

View+Service即在Service中直接操作Hibernate.Session。

因为如果使用三层,在Service中就会有一部分方法只是直接调用DAO中的方法。

一般情况下只有在多个数据源的场合下适合引入DAO层。

三、有关分层的几个问题

1,一定要分层吗?

不一定。

假如公司要求你写一个可以给指定员工发送短信的小程序,用于开会通知与自动发送生日祝福短信。

这个程序很小,没有多少行代码,而且不变,这时不分层可以吗?

完全可以呀。

但我们在写程序时,还是要分层的,分层的程序结构清晰,可维护性高。

2,一定要3层吗?

不一定。

分3层是推荐的,而不是必须的,应根据自己的具体情况进行安排。

我们如果使用3层的结构,用起来就麻烦,因为在Service中会有一部分方法只是直接调用Dao中的方法,而Dao中的方法只是调用Session完成某操作。

此时分2层更好,即在Service中可直接操作Session,以简化结构。

其实Hibernate已经可以支持多种数据库。

3,一定要使用接口吗?

不一定。

以前就有同学问我:

“在设计程序时确定的技术在开发完成后一般不会更换的,实现类一般也不会更换,这种情况还用接口吗,一般的小项目是不是可以不使用接口?

”。

是的,如果不会变(一般也不会变),这是完全可以的。

我们所学习的框架、技术都是解决问题的推荐方案,而不是必须要用的。

遇到问题后优先使用成熟的技术与方案,以避免很多潜在的问题,避免走不必要的弯路。

1.3.2.所用框架、技术

编号

工具

版本

说明

1.

Struts2

2.1.8.1

2.

Hibernate

3.6.0

实现持久化操作

3.

Spring

2.5

4.

jBPM

4.4

工作流支持

5.

Junit

4

单元测试

6.

jQuery

1.4

说明:

还有jQuery.validate与jQuery.treeview等小插件

1.3.3.开发环境

操作系统

WindowsXP

开发工具

MyEclipse8.6

Eclipse

数据库

MySql5.0.22

Web容器

Tomcat6.0

浏览器

IE6

说明:

1,推荐使用MyEclipse,这样出现工具问题可以一起解决。

当然也可以使用自已熟悉的工具,如Eclipse、NetBeans、IntelliJidea。

现在的重点是代码实现,不是工具。

应使用有效的工具。

2,要注意使用的MySql与JDBC驱动的版本要兼容。

3,显示的技术(js,css)有兼容的问题,写出的代码可能在某些浏览器中不能正常运行,这就需要在写代码时多使用JS框架,让框架帮我们解决兼容的问题。

1.3.4.代码规范

1,命名:

使用驼峰命名法。

a)类、接口:

每个单词的首字母大写。

例:

MyDateConverter

b)变量、方法:

第一个单词的首字母小写,其他单词的首字母都大写。

例:

myDateConverter

c)常量:

全部字母都大写,单词之间使用’_’隔开。

例,DEFAULT_PAGE_SIZE

2,使用有意义的名称,慎用缩写。

3,注释:

在代码中加入适当的注释:

说明步骤,与说明非简单逻辑。

4,空行:

在代码中加入适当的空行,就像写文章时要分段一样(增强可读性)。

5,要格式化代码、一个java文件中的代码不要过多、一个方法中的代码不要过多。

总之,要保证代码的有效、清晰、简洁(à可读)。

1,有效:

这是第一目标,代码要是可以解决问题的。

2,清晰:

在有效的前提下,让代码结构与思路清晰。

3,简洁:

代码与逻辑应尽量的简单,不要是给别人讲别人都听不明白。

1.3.5.约定

1,工程中所有的文件都采用utf-8编码。

所有的页面都是使用utf-8编码,这样方便解决表单内容的乱码问题。

乱码一般情况下是乱用编码产生的。

2,实体的主键属性的类型使用Long型。

1.3.6.项目计划

功能

知识点

预计时间

1.搭建环境+基础功能

a)Dao设计

1.Struts基础

2.Hibernate基础

1天

2.组织用户管理

a)岗位管理

b)部门管理

c)用户管理

1.一般的实体设计

2.实体映射(映射文件)

3.增删改查功能

4.树状显示

5.使用jQuery.validate进行表单验证

2天

3.系统权限

a)创建权限

b)分配权限

c)使用权限

1.jQuery的一般使用

2.权限控制方案

2天

4.论坛

a)论坛管理

b)论坛基本功能

c)文章管理

1.分页

2.在线编辑器FCKeditor

3天

5.jBPM+审批流转

a)工作流框架jBPM

b)审批流转功能

1.工作流框架jBPM

2.工作流的一般应用

4天

2.准备环境

2.1.创建数据库,要注意编码

1,使用MySql数据库。

2,创建数据库时,要注意编码要支持中文。

3,建表语句如下:

createdatabaseitcastoadefaultcharactersetutf8;

showcreatedatabaseitcastoa;

说明:

需要先运行Mysql的配置向导,把编码配为GBK或UTF8。

如果配成UTF8,在mysql命令行客户端中就有乱码,所以最好用GBK。

2.2.新建Web工程并进行配置

2.2.1.配置工具

2.2.1.1.配置快捷键

1,把ContentAssist设为Alt+/

2,把WordCompletion设为Alt+.

3,其他常用快捷键说明:

Alt+/

ContentAssist代码提示

Ctrl+T

显示类的继承结构

Ctrl+O

列出类中的成员(成员变量、方法等)

Ctrl+/

注释/取消注释

Ctrl+Shift+O

导入要使用的包、并去除不使用的包

Ctrl+Shift+F

格式化当前文件中的代码/格式化选中的代码

Ctrl+Alt+Up

复制当前行到下面

Ctrl+Alt+Down

复制当前行到上面

Ctrl+D

删除当前行/删除选中文本占的所有行

Shift+Enter

相当于按End后再按Enter

Alt+Left

Alt+Right

Ctrl+Shift+X

变为大写

Ctrl+Shift+Y

变为小写

2.2.1.2.配置文件的默认编码

1,设置工程的默认编码为UTF-8。

2,配置JSP的默认编码为utf-8

2.2.1.3.配置格式化的代码样式

1,使用Ctrl+Shift+F可以格式化代码。

2,在WindowàPreferencesàJavaàCodeStyleàFormatter中可以设置代码样式。

要把Java代码与注释的行宽设为130。

(其他使用默认样式)

3,搜索XMLSources,修改xml的行宽为130。

(不考虑打印的情况)

2.2.1.4.MyEclipse工具使用说明

1,导入工程时可以直接选择一个zip文档:

FileImportExistingProjectsintoWorkspace-->Selectarchivefile。

2,工程改名后,发果发布到Tomcat下,对应的应用的名称不一定改变。

这个名称是在MyEclipseWeb中的WebContext-root中配置的。

新建一个WebProject,并设置工程的编码为UTF-8。

 

2.2.2.添加框架环境

说明:

1,不要引用外面的Jar包,应全部拷贝到工程中。

2.2.3.配置数据库

修改Hibernate.cfg.xml中的数据库连接信息。

并在hibernate.cfg.xml中做如下配置:

--显示sql语句-->

true

--自动更新表结构-->

update

 

2.3.工程中的资源分类(目录与包结构)

2.3.1.目录结构

源码文件夹

src项目源代码

conf配置文件

test单元测试

WebRoot文件夹下

scriptJavaScript脚本文件

styleCSS样式文件

WEB-INF/jspjsp页面文件(再创建子文件夹分类存放)

2.3.2.包结构

使用三层:

显示层(View),业务层(Service),数据访问层(Dao)

(部分)

包名

说明

cn.itcast.oa.domain

实体(Domain)

cn.itcast.oa.dao

Dao接口

cn.itcast.oa.dao.impl

Dao的实现类

cn.itcast.oa.service

Service接口

cn.itcast.oa.service.impl

Service的实现类

cn.itcast.oa.struts2.action

Struts的Action

cn.itcast.oa.util

一些工具类

cn.itcast.oa.cfg

cn.itcast.oa.filter

View显示Jsp+JSTL+Struts+jQuery

Service业务逻辑JBPM

Dao数据访问Hibernate

3.基础功能

3.1.设计BaseDao接口与BaseDaoImpl类

每个实体都应有一个对应的Dao,他封装了对这个实体的数据库操作。

实体Dao接口实现类

========================================================

User-->UserDao-->UserDaoImpl

Role-->RoleDao-->RoleDaoImpl

Department-->DepartmentDao-->DepartmentDaoImpl

Article-->ArticleDao-->ArticleDaoImpl

...

说明:

4,实体的Dao接口要继承BaseDao接口。

5,Dao的实现类要继承DaoImplBase类。

6,也可以不继承指定的接口或类,这样就要自己写相应的方法。

7,TgetById(Longid)与ListgetByIdList(Long[]idList)不要合并为ListgetById(Long...ids),因为获取一个对象时也是返回List,不方便。

 

获取BaseDao的类型参数T的Class

问题:

1,有了DaoBase与DaoImplBase,还要用UserDao、RoleDao吗?

答:

要用。

因为UserDao或RoleDao中的方法可以分为有公有的方法与特有的方法两部分。

公有的方法是通过继承BaseDao得到的,特有的方法要写在自己里面(BaseDao中是没有的)。

2,UserDaoImpl已经继承了BaseDaoImpl,就不实现UserDao可以吗?

答:

不可以。

否则UserDaouserDao=newUserDaoImpl();就不成立。

使用反射获取类型参数的真实类型的代码如下:

publicDaoBaseImpl(){

Typetype=this.getClass().getGenericSuperclass();

ParameterizedTypept=(ParameterizedType)type;

this.clazz=(Class)pt.getActualTypeArguments()[0];

}

说明:

1,使用Session时,不要自己创建,也不要管理事务,直接调用getSession()即可。

2,暂时不实现getSession()方法,在后面的事务管理中实现:

protectedSessiongetSession(){

thrownewUnsupportedOperationException();

}

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 表格模板 > 合同协议

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1