欢迎来到淘文阁 - 分享文档赚钱的网站! | 帮助中心 好文档才是您的得力助手!
淘文阁 - 分享文档赚钱的网站
全部分类
  • 研究报告>
  • 管理文献>
  • 标准材料>
  • 技术资料>
  • 教育专区>
  • 应用文书>
  • 生活休闲>
  • 考试试题>
  • pptx模板>
  • 工商注册>
  • 期刊短文>
  • 图片设计>
  • ImageVerifierCode 换一换

    OA项目介绍7589.docx

    • 资源ID:63525730       资源大小:182.44KB        全文页数:14页
    • 资源格式: DOCX        下载积分:20金币
    快捷下载 游客一键下载
    会员登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录   QQ登录  
    二维码
    微信扫一扫登录
    下载资源需要20金币
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    OA项目介绍7589.docx

    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.updatea) 当你创建SessionFactory实例时,它会根据你的映射文件导出到数据库里.OA 第二天.1、 如何定义接口?a) 主要看客户端的需要.例如:dao层的客户端就是manager层.2、 如何读懂需求?a) 理解需求中的概念.b) 例如:考勤 à 你得了解过程,还有什么报表,现有的软件.3、 组织机构.a) 职能型组织架构. à 大公司,分部门.b)i. 这个图就是上面的概念模型图.c) 集权型组织架构 à 中小型公司,一级管一级,不分部门i.d) 混合型组织架构 à 前面两种混合起来.人下面有部门,部门下面有人,在某种情况可以把他们俩看成一个概念,进行泛化(继承)i.e) 网状组织架构 à 也叫矩阵型,通常用于跨国大型企业.i. 关联会有一个时间的限制.ii. 多对多一般会拆分成两个多对一的关联,应该把中间的关联表抽象出来进行扩展.1. 中间表对应原来表肯定是多对一,中间像两边任何一边看都是多对一.可以在中间表加一些自己的需要的属性.iii. 规则就是它们类型的多对多,也就是两个多对一.例如:1. 部 à 局 à 处 à 科. ,他们分别的父亲都是上一级,子都是下一级. iiii. 按照某种职责来建立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) 继承父类 à AbstractTransactionalSpringContextTestsi. 需要实现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.Localexxxx代表父窗口.5、 一般的删除操作.a) 一般的是打开一个新窗口,可以避免了任何问题,例如传参数,刷新重复提交之类的问题.6、Struts局部异常配置会根据input的路径来转发.OA 第五天.1、 了解taglib-pager分页标签.a) 主要是帮你生成主页下一页的连接的.b) 当生成以后它会把值存在page范围,名字是$pageUrlc) 如果想使用页码变中间的那种,例如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使用说明.txt2、 分页 > 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)、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.password5、 如果要在javascript中调用一个bean的方法时,方法参数要接受的是一个对象的话,那我们得在dwr.xml中采用convert标签进行类型转换.6、 DWR集成spring,以前careator写new 现在直接写spring即可OA 第九天.1、 所有继承DispatchAction的类,都会执行一个execute方法,因为DispatchAction其实是继承Action,所以会执行Action的ExcuteOA 第十天.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、 JBPMa) 什么是BPM?b) JBPM的架构.i.ii. 在图里,执行服务面对的是某某某的请假单,例如:张三的请假单,李四的请假单.7、 JBPMa) 在oa系统中,JBPM是实现公文流转的基础。JBPM的流程定义语言是JPDL。JBPM的流程定义包含如下概念:i. 起始节点 start state,必须包含起始节点ii. 结束节点 end stateiii. 节点 node 1. 任务节点 可以分配任务的节点,在task-node中,可以创建task,并assignment到不同的actor-id2. fork 分支节点3. join 联合节点iv. 流向(或转换) - transition8、 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需要定义模板,文件扩展名一般采用ftl4、 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(转换器).

    注意事项

    本文(OA项目介绍7589.docx)为本站会员(jix****n11)主动上传,淘文阁 - 分享文档赚钱的网站仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知淘文阁 - 分享文档赚钱的网站(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于淘文阁 - 版权申诉 - 用户使用规则 - 积分规则 - 联系我们

    本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

    工信部备案号:黑ICP备15003705号 © 2020-2023 www.taowenge.com 淘文阁 

    收起
    展开