java制作oa审批流程,传智播客JAVA培训OA项目 审批流转模块

传智播客JAVA培训OA项目 审批流转模块(未)

做工作,做技术,最主要的就是有一种专研的功能,特别是在学习的初期阶段也很重要,因为,老师永远不可能把所有的知识交给你,就像,你被你母亲生了下来,他手把手的教会了你走路,但是人生的路却是要你自己去走的一样。往日的学校,也仅仅是教会了你做人的道理,或者是学习一个东西的方法。而今,你我走进了社会,社会,很少会有人来教你了,很多东西都得自己去领悟,做人,人与人之间,同事之间 的关系,都需要我们自己去领悟。

我有时候会因为一些困难而心生疲惫,这也人之常情,每一个人都有累的时候,但是如果不能正确的来调节工作,学习,自己或许会越来越受到挑战。希望你也能在这一条路上越走越远,这是他给我的祝福,我也相信,一定会的,和汤阳光老师说的一样,做人比做事更重要。

小知识点:

1.回退。返回到之前的结点,重新执行!JBPM没有直接支持,要自己来实现。所以,要对JBPM的源码有一定了解。

2.流程嵌套。就是子流程。JBPM支持

3.State结点。暂停。一个流程执行时,可以暂停,去执行其它流程。

审批流转:

1.执行审批流转

直接执行是不可能的,因为审批流程,和文档模块。只有这两个才可以。所以先实现如下。(执行审批流程,要用到ProcessDefinition)

2.文档模块管理

3.审批流程管理

4.查询

实现步骤:

1.文档模块管理

a)分析

b)设计实体

主键:  Long id;

文件名:String fileName;

说明:String description;

扩展名:extension

文件所用的流程:String processName;

文件的路径:String path;

文件存放的方式:

1.可以存到数据库中,bolb类型。

2.可以放在文件中,存一个路径。

c)编写对应的domain类和DocumentTemplate类。

d)编写Action类

i.与之前相比,多了一个下载的方法。

ii.写上传文件时注意事项:

1.org.apache.commons.io.FilenameUtils;可以直接根据文件全名,取得其中的文件名和扩展名。

2.防止上传危险文件(.jsp),把上传过来的所有文件都改名。例如用一个随机的字符串。UUID.randomUUID().toString();

小知识点:

1.如果程序中有没有实现的功能,你可以使用一种特别的方式,使用任列表的方式进行标注:加入:

1.//FIXME

2.//TODO

3.//XXX

3.打开一个文件件,如果文件夹中的文件太多了,会速度很慢,相信大家都有过这样的经历。当我们上传的文件在一个文件中,如果文件过多时,也会有这种情况,我们要怎么解决这个问题呢?

4.这儿删除时,也同时要删除上传的文件,因为这个时候这个文件已经没有人引用了,所以,也要删除悼。(但出于历史记录的原因,是不是可以不删除)。解决方法:重写delete,都删除。

5.下载功能。

a)要写头文件

//指定为二进制消息

response.setContentType("application/octet-stream");

response.setHeader("Content-Disposition", "attachment;filename=" + name);

b)编码问题

String name = documentTemplate.getFileName() + "." + documentTemplate.getExtension();

Name = URLEncoder.encode(name,"utf-8");

在做这个的过程中,有一个问题导致异常:

6.错误未能重现,真失败。

2.审批流程管理

a)分析 流程实体不用在设置 jbpm提供

b)ProcessDefActionForm

i.FormFile upload; //用于保存要上传的实体

c)编写Action类

i.该类的写类同上步几乎相对。需要写service层接口和实现类。但需要注意的时候,jbpm他自己的实体是要用他自己提供的session来操作。而这之前定义 的实现都是我们自己设计的方法。所以,这儿要改进。

ii.JbpmContext 是取得Session的关键。

d)每一次请求对应一个线程。而同一个线程中的JbpmContext是相同的。而Jbpm自动提供了JbpmContext与线程绑定的功能。

e)在用HQL查询时,涉及到一个auto-import的属性,默认时,该值为true,但是如果系统出现两个相同的类名,就会出现问题,所以要谨慎采用该属性。

3.执行审批流转