您好,欢迎来到华佗小知识。
搜索
您的当前位置:首页OA项目介绍

OA项目介绍

来源:华佗小知识


OA项目介绍

1、 OA可以用在2个处所.

a) 当局 b) 企业

c) 采取OA就是把他们的流程做成一个软件.

2、 需求分析从界面入手,然则写法度榜样别从界面入手.

a) 分析  设计  实践. 3、 Java三件宝

a) 框架  SSH.

b) 模式.  进修的是它的实用范畴. c) 范畴模型. i. 最重要的,当你获取需求今后.须要应用面向对象技巧开辟范畴模型.

4、 按模块进行迭代开辟.

a) 进一步细化需求. b) 用例模式.

c) 分析模式(概念模型)  最重要的. d) 设计模式  对分析模式的细化.

e) 实现.  所有的设计模式都是和实现相干的. f) 测试, 5、 分析.

a) 需求分析. i. 它们必须是精确的. ii. 它们必须是可行的. iii. 它们必须是对项目来说是必弗成少的. iv. 它们必须是被标明优先次序的. v. 它们必须是不暧昧的. vi. 它们必须是可以或许ioubei证实. vii. 一旦需求确认今后,没有写的不克不及做. b) 需求分析具体过程(切入点). i. 懂得客户. ii. 懂得营业. iii. 懂得行业. iv. 懂得同业产品. v. 这些工作在与客户正式开端沟通之前就尽量懂得,如许在与客户交换时有效的

削减在营业上的陌生感,会尽快使客户对项目团队产生须要的信赖.

6、 OA体系的需求.

a) 根本模块 i. 组织架构. ii. 权限治理. b) 核心模块. i. 公函流转.

1. 例如报销:若何把一个数据,转给别的一小我.

c) 其他次要模块.

7、 流程定义:就是例如以前没有告假单流程,本身可以加一个安排到项目.

a) DOJO书. i. 是一个javascript的树.

8、 hibernate.hbm2ddl.auto.create. hibernate.hbm2ddl.auto.update

a) 当你创建SessionFactory实例时,它会根据你的映射文件导出到数据库里.

OA 第二天.

1、 若何定义接口?

a) 重要看客户端的须要.例如:dao层的客户端就是manager层. 2、 若何读懂需求?

a) 懂得需求中的概念.

b) 例如:考勤  你得懂得过程,还有什么报表,现有的软件. 3、 组织机构.

a) 本能机能型组织架构.  大年夜公司,分部分.

公司 销售部开发部 人员部 张三b)

李四开发小组1

Organization1+children*1+parent*Personi.

念模型图.

c) 集权型组织架构  中小型公司,一级管一级,不分部分

这个图就是上面的概

Person+parenti.

1+children*

d) 混淆型组织架构  前面两种混淆起来.人下面有部分,部分下面有人,在某种情况

可以把他们俩算作一个概念,进行泛化(持续)

party+children*+parent1PersonOrganization

i.

e) 网状组织架构  也叫矩阵型,平日用于大年夜型企业. i. 接洽关系会有一个时光的.

ii.

iii. iiii.

多对多一般会拆分成两个多对一的接洽关系,应当把中心的接洽关系表抽象出来进行扩大.

1. 中心表对应本来表肯定是多对一,中心像两边任何一边看都是多对一.可以

在中心表加一些本身的须要的属性.

规矩就是它们类型的多对多,也就是两个多对一.例如:

1. 部  局  处  科. ,,他们分其余父亲都是上一级,子都是下一级.

PartyStructType**11PartyTypePartyStructType和PartyType是知识级PartyStruct**+parent1+child1MPartyPartyStruct和Party是操作级MTimeLimitPersonOrganization

按照某种职责来建立partyType,

4、 合适的uml用例一般最好是少于10步和10步阁下的,才是一个粒度的,合适的用例

a) 用例其实也就是功能性的需求.

b) 要编写用例文本,介入者的动作,体系的响应,重要路径和扩大路径. c) 重要路径. i. 写重要的内容. d) 扩大点 i. 写一些异常信息,例如删除掉败,撤消操作之类的. e) 弥补解释 i. 主如果用来做弥补的,例如添加机构时,ID生成的规矩之类.

5、 在ssh里避免一个Action办法里,和营业逻辑组件进行2次交互,不然会造成事物不一致. 6、 画次序图实际上就是在实现,画的时刻是根据用例图文本里的重要路径

OA 第三天.

1、 开辟流程  做一点测一点,起首根据范畴模型对象创建实体.因为它是被依附的.采取自

底向上的实现.

2、 Hibernate为什么要强迫定义inverse呢?

a) 只有如许,才能强迫包管在多的一端保护,假如强迫在一的一端保护,则无法运行. b) 最重要的是在更新的时刻,假如不设置inverse,在保护的时刻会更麻烦. i. 照样 学生 –--- 班级,当你更新一个班级时,假如班级里只是从ActionForm里

获取数据,然则更新了今后此时学生集合是空的,它会去掉落学生与班级的所有接洽关系关系.

3、 切记Hibernate的get加载的是一个代理对象.

4、 在测试单位类中,可以持续测试父类.在setup中打开session,避免session Closed异常.因为

在测试类中,并不克不及应用OpenSessionInView.

a) 持续父类  AbstractTransactionalSpringContextTests i. 须要实现getConfigLocations. ii. 注入营业逻辑层对象,它会主动注入,根据类型. b) 参加spring的spring-mock.jar包.

c) 当一个办法调用完,它会主动回滚事物,和封闭Session.

假如想提交事物的话,调用setComplete().

5、 状况图最好用在页面的流程分析.

a) 每一个状况代表一个页面,也就代表调用了一个action,因为在struts中,进入一个页

面都是要经由struts.

6、 切记struts  ActionMappings里的scope 是代表的是actionform存储的范围.

OA 第四天.

1、 Struts设备文件里Action的attribute属性是用来给Form从新定名的,在jsp页面就可以用

从新定名的名字来取值.

2、 没事别从form取值,在存在request里,鄙人一个页面直接从form取就行了 3、 切记struts刷新请求会反复提交.

a) 因为当你请求一个Action时,它会把你的请求做为此页面的url,你假如刷新,它不会

加载页面,会反复提交你的请求.

b) 要切记Action也可以本身顶一个Forward,用来跳转. 4、 模态窗口.

a) 当应用模态窗口时,此时只能对子窗口做操作,不克不及对父窗口操作. b) window.Locale…xxxx代表父窗口. 5、 一般的删除操作.

a) 一般的是打开一个新窗口,可以避免了任何问题,例如传参数,刷新反复提交之类的

问题..

6、Struts局部异常设备会根据input的路径来转发.

OA 第五天.

1、 懂得taglib-pager分页标签.

a) 主如果帮你生成主页下一页的连接的.

b) 当生成今后它会把值存在page范围,名字是${pageUrl}

c) 假如想应用页码变中心的那种,例如goolge,可以应用pager标签里的pages,生成之后

的Url就存在page属性的pageNumber里.

d) 当前页数也存在pageNumber里,会有冲突,我们可以应用pager的export来给它重定

名.例如export=”currentPageNumber=pageNumber”,如许之后,我们也可以实现goolge的分页时刻不克不及连接到本页,直接断定currentPageNumber和上面的pageNumber(中心显示本页).

e) 假如须要设置参数,可以直接应用pg:param标签,可以直接name=parentId,假如不设

置值,它会从request里获取parenjtId. f) 具体具体拜见 – taglib-pager应用解释.txt 2、 分页 –>

a) 须要传一个当前页数,并且须要一个每页显示的大年夜小. b) 查询完查询的是一页的数据.

3、 数据的封装,抽象  找出雷同的,反复的过程,把须要的参数之类的器械全部定义成办法

的参数.

4、 截取字符串  包头不包尾.,截取时不算最后一个,得算上第一个.

5、 在J2EE中,要推敲多线程影响变量的问题,假如要共享变量,尽量应用ThreadLocal,不会有

线程安然的问题.

6、 假如要把Object转换成整形时,切切不要直接写int I = (Intger)Object. 如许有时刻会抛异

常,因为你起首把一个Object转换成Integer.没任何缺点,然则当Integer转换成整形时,JDK会主动解包,所以会掉足  NullPointException. 7、 Xdoclet 可以解决手工编写映射文件.

OA 第六天.

1、 权限控制三元素:主体(who)、 资本(What)、 操作(How)、

模块文件、目录数据库、记录类的方法<<主体(Principal)>><<资源(Resouce)>>Who**What*用户地点组角色时间*<<操作(Operation)>>HowC/R/U/D发布2、 RBAC模式.  Role Base Access Controll.

a) RBAC-0. 永远都不许可直接把权限付与给用户.

i.

b) RBAC-1.在RBAC-0上做的扩大.

i.

c) RBAC-2,也是在RBAC-0长进行了扩大.在进行用户和角色之间建立一种束缚. i. 例:角色根别的一个角色授权有冲突,根据某种规矩,不许可这个角色分派给这

个用户.

ii.

d) RBAC3 = RBAC1 + RBAC2.

i.

3、 权限的设计.

a)

b) 因为ALC表被读取的频率很大年夜,所以要放在Hibernate缓存里,然则假如它里面

变量是对象的话.那么里面对应的对象也得存进缓存里.所以如今给它改变一下, c) 主体类型可以取角色和用户、

d) aclState.如安在ACL扩大(操作/c/r/u/d)呢?不要采取一个字段代表一个操作,我们可

以应用一个整形,后四位标识c/r/u/d,一个整形是32位,只有0和1,0代表不许可,1代表许可.

e) aclTriState.表示当我零丁给用户授予权限时,此时用户的角色是否有效.我们也采取

一个整形, 这个额外状况位用-1表示针对用户的授权无效,0表示有效.一个整形32位,只有0和1,1表示不许可,0表示许可

OA第七天.

1、 懂得UniqueResult办法的感化,假如查询不到对象,就返回null,假如查询到两条,则抛出异

常.

2、 必定要留意义务分派模式(GRAPS).

3、 假如一个处所要用到常量,写逝世,最好定义一个变量,免的今后换的时刻要换很多多少

处.

4、 IF ELSE断定哪个有个原则,要尽快返回,哪个先返回,就断定它,例如acl不等于null提前

返回,我们就IF (acl != null)

5、 切记操作属性,或者读取时,不该该改变属性的状况

6、 MAP的存储方法,假如key一样,后面的会把前面覆盖掉落. 7、 获取用户拥有的权限读取查找方法.

a) 从低到高的级别查询,然后在查询用户是否持续了角色,

b) 因为我们采取的是map 存储方法,所以必须从低到高,例如1许可,2不是许可,2比一

高,先查1的,放进map,在查2一看不许可,我们可以急速放到map里覆盖到1.

8、 切记ACL表里可以存储用户和角色.

OA第八天.

1、 应用document.location.href=”url”,完了今后会主动刷新

a) 例如:我设置分页的主动参加每页显示行数,我直接可以应用这个url传输到action

查询全部,页数得显示在第一页,当它查询完返回到首页会主动刷新,意思是还会回来到当前页面,我们就没须要传输一些数据.

2、 xml解析,dom方法支撑比较小的文件,而SaxReader支撑比较大年夜的文件. 3、 在AJAX中,一般返回的数据就两种,数组或者JSON.

a) 下面4的介绍就是对JSON数据的描述,在JAVA中,如许拜访就是MAP. 4、 在javascript中若何拜访名值对呢

a) 例:var v1 = {\"username\":\"张三\"} ;

b) 拜访方法为v1[\"username\"] 或 v1.password

5、 假如要在javascript中调用一个bean的办法时,办法参数要接收的是一个对象的话,那我们

得在dwr.xml中采取convert标签进行类型转换.

6、 DWR集成spring,以前careator写new 如今直接写spring即可

OA 第九天.

1、 所有持续DispatchAction的类,都邑履行一个execute办法,因为DispatchAction其实是持

续Action,所以会履行Action的Excute

OA 第十天.

1、 JBPM(对象),工作流.

a) 什么是工作流 ?只是一个工作流程的实现. 2、 在项目中,不克不及硬编码营业逻辑放办法.

a) 难以保护.

3、 工作流治理体系构成.

a) 工作流设计器 i. 应用ur设计器,设计流程,应用jbpm的设计器. b) 流程的操作. i. 可以根据工作流定义,然后对它做任何操作. c) 工作流客户端法度榜样. i. 调用工作流的哪些法度榜样  本项目中当然是OA了. d) 流程监控. i. 看看如今有若干流程在流转,流动的一些信息. e) 表单设计器、与表单的持续、与应用法度榜样的集成 i. 这些都是属于额外的功能. ii. 表单设计器,例如:只有一个报销流程,还想要一个告假流程,不想改器械,只能在

已有的情况下,设计出告假流程,这就是表单设计器,可以设计新的表单,更改本来的表单.

4、 WFMC是工作流的一个标准. 5、 核心调剂算法

a) FSM(有限状况机),经由过程调用一些函数,来流转.

b) PetriNet,异常有名的调剂算法,它的核心概念就在于一个令牌—ToKen.,指向拥有一

个节点的引用. 6、 JBPM

a) 什么是BPM? b) JBPM的架构.

i. ii.

在图里,履行办事面对的是某某某的告假单,例如:张三的告假单,李四的告假单.

7、 JBPM

a) 在oa体系中,JBPM是实现公函流转的基本。JBPM的流程定义说话是JPDL。JBPM

的流程定义包含如下概念: i. 肇端节点 – start state,必须包含肇端节点 ii. 停止节点 – end state iii. 节点 – node

1. 义务节点 – 可以分派义务的节点,在task-node中,可以创建task,并

assignment到不合的actor-id 2. fork – 分支节点 3. join – 结合节点

iv. 流向(或转换) - transition 8、 UML里同步杆是成对出现的.

9、 会定义一个属性资本线程实例变量的容器.

a) 从你定义的类里取. 10、 所有流程实例变量(比如张三的告假单,这个流程实例实际中 :告假者张三、告假数

是5天、),经由过程ContextInstance来存放. 11、 Token.

a) 当我们创建流程实例的时刻,它会主动创建一个Token,ToKen最开端指向的是起点,

履行今后实际上就是把Token的指向让它指向下一个节点.

12、 总结 :

在创建一个ProcessInstance对象的时刻,会同时创建一个rootToken对象,这个对象一开端是指向StartState,Token老是会根一个节点相接洽关系,经由过程调用Token的Signal办法,可以使得这个指向产生变更(及指向下一个节点). 13、 这个就是Token在树形中履行的过程,subtoken1和subtoken2都是Token的子

14、 假如一个流程已经停止,则不克不及对它做任何操作. 等待

状况. 15、 xmlns=\"urn:jbpm.org:jpdl-3.2\有时刻采取这个会出现必定的提示. 16、 流程在运行过程中都有:

a) 流程的进入 。

17、 凡是Action都得必须持续ActionHandler,调用它的execute办法. 18、 可以定义本身的变量,在定义文件里可以直接注入. 19、 Junit最重要的功能是主动化测试,它是可以完成这个功能的.主动化测试就是只需

要一个敕令,它会本身去测试,完了给我们供给一份测试申报.

OA 第十一天.

1、 调用TaskInstance.end办法将它的状况(isOpen)改成false.然后主动调用Token的signal().

OA 第十二天.

1、 Spring-modules.zip包是专门针对spring不支撑的框架的持续.

a) 先把JBPM的映射文件里的mapping全部copy过来,如许在后续会出问题, 因为如

今的设备文件是应用ant主动生成的.所以我们如今应用归并功能,把两个映射文件

归并起来.

b) 若何归并呢?应用老李牌修改版的xdoclet. i. 在原有的ant.xml,找到生成Hibernate设备文件标签,参加属性mergecfgxml=”

你的别的一个设备文件地址”

c) 若何解决冲突呢?两个实体类的名字是一样. i. 参加auto-import=”false” ii. 它根我们的查询有关,我们查询应用from User,假如有两个,它就不知道了,所以

我们得更改查询语句,参加全局路径(包名+类名).

d) 集成spring和jbpm时,应用spring-modules-jbpm31.jar.

OA 第十四天.

1、 切记Hibernate的list映射规矩,你把它假如当成一个实体类,就得应用one-to-many,假如当

成一个组件就应用compsite-element.

2、 轮回删除list里空数据时,最好应用迭代删除,因为假如你应用list的删除的话,那么size

就会少1,所以如许会造成数据的损掉,或拜访不到.

3、 FreeMarker须要定义模板,不消设备在容器里,可以解决与容器(tomcat)的依附.

a) freeMarker须要定义模板,文件扩大名一般采取ftl

4、 FreeMarker输出变量时,假如变量为null时,则会把异常信息输出到我们的目标地.

a) 当然,我们可以应用一个特点来忽视异常.

cfg.setTemplateExceptionHandler(false);

b) 假如我们在freemarket模块中须要填充一个集合数据的话,我们可以应用<# list> 5、 假如ActionForm里设置了一个Map集合,我们假如要想给Map里存储数据的话.

a) 页面的name就应当设置为map(你的页面name ),这种主如果针对动态表单的. b) 假如是list的话,就是list[你的页面name].

6、 有时刻if,else太多的话,细心不雅察实现,能采取开辟技能的,最好采取.

a) 最好得记得  商定优胜设备. 7、 CopyProperties和CopyProperty的差别

a) CopyProperty三个参数.(目标对象,属性名称,值) i. 例:(“Person”,”age”,18);

b) 在这里,只要把值设置到目标对象里,她会主动调用struts的convert(转换器).

因篇幅问题不能全部显示,请点此查看更多更全内容

Copyright © 2019- huatuo0.cn 版权所有 湘ICP备2023017654号-2

违法及侵权请联系:TEL:199 18 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务