00:00
各位同学大家好,刚才呢,咱们完成了第一步引入依赖进行数据库初始化,然后第二部分我们部署了流程设计工具,通过工具完成了流程图的绘制。咱们看到啊,我们画的图应该就是我们在这里边看到的这么一个效果,咱们开始张三审批,张三审批之后李四审批最终结束,所以这是我们刚才完成的前两步,那下面呢,我们来做第三步,第三步呢,咱们把流程进行部署,部署之后启动一个流程实例,然后完成相关的任务操作,包括任务的查询以及任务的办理,那下面呢,我们来做第三部分,进行流程的定义部署。那流程定义怎么进行部署,咱们来做个说明,首先我们看一下啊。这个过程各位可以这么理解,就是把我们在设计器里边的绘制好那个流程,在里边进行部署,最终把它的过程加到里边的数据库中,这过程就是流程域部署。那这里边怎么做?给大家先说一下它的部署方式,然后再用代码进行测试,因为咱们现在做的是入门,所以一会儿测试的时候呢,我采用单元测试的方式进行咱们后面的具体功能中,再在项目中教你使用,那我们做个介绍啊,首先部署到第一种方式,咱们可以单个文件部署,也就是把我们的文件一个一个部署到里面去,咱们刚才有一个叉文件,还有一个PND图片,所以把这两个可以一个一个进行部署,这是第一种方式叫单个文件部署。
01:44
然后还有第二种方式叫压缩部署,什么意思呢?就是我现在啊可以把这文件Z,然后把这包一个文件完成部署,就是你看我这代码中通过输入,然后最终完成里这个部署过程,最终操作过程中会向这个表里边加入相关的数据,那下面呢,我们就来具体操作一下,完成流程定义部署。
02:13
咱们来做一下啊,首先我现在这里边已经提前做到了,在result的里边建立一个文件夹,里边加入两个文件一个P,然后下面呢,我在这个里边咱们个,然后里写咱们这个测试这个我给起个名字叫activity。然后在里边我们加入相关的代码,那咱们创建一个类,我们来写一下啊,因为它是流程定义部署,咱们叫这个。太的。加上之后在类上边加上相关的注解,这各位应该清楚啊,是词中的基础,我们加一个test,把这个加上,然后加上之后在里怎么来做呢?我强调啊,因为咱们现在要做这个流程定义的,所以用到里给我们装一个口,把它注入就可以了,那这接口是什么?咱们上来看一下啊,之前我们是做了一个介绍大家的一个。
03:23
我们看到它叫什么ary service,它是一个资源管理类,负责流程部署定义就是流程定义部署,然后里面还有runtime service task service,包括其他的部分,所以现在我们进行流程定义部署,用这个report service进行实现,所以咱下面来做一下啊,首先在里边注入repary service,然后用里边的方法进行实现,那咱们做个注入。加上这个凹凸。然后加上privatepary。
04:00
把这个加上,加上之后呢,在下面我们加上一个方法,我们加上一个test的,然后这个test加的时候啊,给各位特别说明啊,你注意啊,这应该能看到这里是不是两个包中的test,一个就是org一个后面多了一个A,最后强调什么意思啊,如果说啊,你用的是g unit5,那咱们导的第一个包,如果用g unit4导第二个,当然用g unit于四的时候呢,直接这么测试会出错,你还需要在类上边再加上一个注解,这注解叫做runways这个注解。包括大家看啊,我课件中就这么写的,找到我的课件里边啊,你看到课件中在类上边加上损部test,是不是加一个run with,然后里边的test用的是这orgg unit里边的这个test,这是g unit4的写法,如果用j unit5,那这个就是不需要加了,那我现在就不加了啊,咱用这一的五进实现就特别注意这T子包一定不要导错,导错的话里边它测试会出问题。
05:09
我们先写上啊,Public,我们部署流程定义。我们叫deep。Process。把这个方法加上,然后加上之后把这个依赖给它引入啊,注意不要错,不是这个啊。刚才我提到引的是这个依赖,然后引入之后在里边我们写上我们具体方法,按照刚才说到的啊,第一种方式我们先这么来做实现这个叫单个文件的部署。用这个完成这个流程的一个部署,那咱看怎么来做啊,这个过程其实代码很简单啊,我们就直接写一下,它的做法就是我们调用py service里边有一个方法,这方法就叫createlement啊,看这名字啊,很明确是不是创建这个部署。
06:07
然后这里完之后怎么做入咱们的大家看啊这么一个法。Pass什么意思?什么类路径resource呢?是不叫资源,它就表示加载类路径下的资源,什么叫类路径?各位看这里边啊,在target,就是编译之后内容中有一个叫class里边那种,就是类路径下那种,咱们目前内容是不是在这个process里边,所以把里边内容给它加入就可以了,那我现在啊给他来加一下,首先加入里边那个文件。注意啊,名字一定不要写错啊,我加一下。加上你的XL文件,我们是这个请假。
07:02
上果你把它复制一下,我这里再复制一下啊,防止我写错。这是加的第一个文件,然后这个加入之后,我们再加第二个,就是里面那个PNG这个文件就是请假点PNG,那我现在加上啊,跟写法一样,A的加上这个。这样的话就完成,完成之后呢,咱给这个部署的流程定义起个名字,我们加一个name,然后里面加个名字啊,就叫这个请假。申请流程啊,当然你可以叫别的名字啊,给它起个名字,然后最后调个方法叫play,这样的话就完成这个部署过程,通过这个代码进行实现,我这里加个注释啊,咱们是流程的部署,然后各位注意这个写法啊,调用create里这个加载类注,这个不要写错。
08:20
然后之后呢,给他这个部署之后起个名字,最后调deeply方法完成这个操作,完成操作之后,它里边会返回这么一个对象啊,就是里边这个play这个对象。所以现在这个就完成,完成之后呢,在里边咱们输入一些相关的信息,那我做个输出啊,第一个信息叫get ID就是之后那个ID址,然后第二个有他的那个名称啊,第咱们叫get,就刚才我给他起的名字,所以现在啊,这就是一个部署的一个代码编写,用pary service里的方法最终进行实现。
09:02
这个位给他明确啊,然后这个之后呢,下面咱做个测试,试一下这个效果是怎么样的,那现在啊,我来试一下啊,把这个直接运行,咱看它会怎么样。然后强调啊,这个过程中呢,当你部署之后,其实它会把一些数据加到咱们的数据库表里边,这个表咱们一会儿进行查看,先看一下它这个运行能不能成功。让他执行啊。这个稍微慢点,咱们稍微多等一会儿,因为这里边啊,就是加了很多这个相关的其他的部分,比如那个plus等等,就这个稍微慢点啊。稍微等一会儿。然后大家看啊,现在执行完成了,但是执行完成之后,咱们发现啊,这里边是报错了,是不是有问题啊,那咱看一下什么问题啊,我说明啊,遇到问题各位不用着急,因为咱写代码写程序不可能没有问题,遇到问题很正常,咱们看到问题,定位问题,最终解决才是咱们要做的事情,而你不要期望写代码没有任何问题,那是不可能的啊,肯定会有问题,那咱们看问题是哪里啊,首先他报了一个错,然后咱往后看看这错误啊,很明确什么问题。
10:21
这句话各位应该都能看懂啊,如果这句话你看不懂,那我觉得你的英文水平好好去提高提高啊,然后再来学我们这课程,大家看什么意思啊,Resource not found是没有发现就告诉你啊,说你的这个资源找不到,这个请假点P个文没有到,这条报错了,而这里边大家看啊,在我代码中应该就是我们的这行。或者说你看里面有提示说在你代码的第23行出错了,什么出错说这个图片资源没有找到,他找不到这个东西,所以他加载或者说部署这个失败了,那咱看一下为什么会失败,我们看到啊,首先第一个得先看一下我的名字是不是写错了。
11:07
咱发现名字是没有写错,就叫这个名字,但是他为什么会出现找不到的问题呢?给大家说明啊,咱们看个地方,大家看这个位置。你看啊,这是什么?Target目录是干什么的?是不是咱们代码编译之后的一个目录,比如说你看里边啊,在com中有很多这个文件,包括里边其他的配置文件,就是代码变异之后目录,但是大家发现啊,在变异之后这个process里边咱们明明放了两个文件,但是最终变之后是只有一个件没有P,所以这里边造成他就没有到,它是因为这个造成的,之后这个PNG的文件没有进行加载,所以里边就没有找到,那他为什么没有加载?给大家说明啊,咱之前曾经提过类似这问题,不知各位是否记得啊,当时咱们说过这么一个问题。
12:02
这个map里边的插了文件,默认是不会进行加载的,咱们需要做一些配置才可以实现,而这配置中咱们找到po点插完了文件里边,如果这个不记得啊,那把之前我讲那个自己好好看一看,咱们看我们当前的问题。然后大家看里边啊,就是这一段配置中。什么意思是资它就表示啊,你这过程中会加载哪些类型的资源,首先第一个sc Java里边有这三个类型,然后在我们的里,我们目前的是不是有这三个类型,但是问题就出来了,你看我当前类型不是样文件,不是pro文件,也不是叉L,咱们是什么是不叫PNG文件呀,所以这里边你看这个include中没有包含这个文件,这个文件就没有加载,所以咱怎么做,给它改一下就可以了,我在里边啊,注意啊,别加错位置在你的下,因为目前是在下这个文这个置,我再加上一个,然后把名改成什么是不叫P。
13:13
这样的话就可以了。可以之后把这个重新刷新一下,然后咱们再测试,试一下它的效果是怎么样啊,现在我再进行测试。刚才是找不到,因为它没有加载啊,现在我们再试一下啊,等它出来注意这个特点啊,在OA的po文件中,把之前咱那个加载类型中给它加上一个叫PNG这个类型的文件,然后它就能够加载到,因为按照之前配置中这个类型文件是不会进行加载的,咱们只加载这些文件。这个明确啊,注意别改错位置啊里的。现在啊就可以了啊,然后可以之后等它平行出来,咱们看效果啊,大家看是不是成功了就没有报错啊,然后你看成功之后,它返回两个值,第一个值就是这个部署之后这个ID,然后第二个是咱们刚才起的名字叫请假申请流程,现在我们就完成了。
14:16
然后完成之后,这个部署就做到了啊部署做到之后呢,其实他会向我们这个表里边会加入一些数据,那咱把这数据我们来看一下啊,它会加哪些表,然后加入哪些数据。我现在把这个数据库打开,我们来看一下啊,因为最终咱部署之后,它的操作都会在表里边有具体的体现。咱们找到啊,在我们这个硅谷OA的这个数据库里边。找到里边的表,表有很多,我们现在做这个流程部署的时候,主要有三个表,这三个表咱们看第一个表就这个。叫re开头的,它是流程定义表,每部署一次就会增加一条记录,那咱找一下这个表啊,就是我们找到啊。
15:08
Re,把这个打开。大家看啊,在数据中咱发现是不是有这个新闻内容,咱们看主要的啊,刚才我的名字叫。请假申请流程,所以你看他在里边就完成了部署,就是咱刚才部署这个内容,大家对照一下这个ID啊,就记几部分,比如里边这个叫178开头,4677结束,看我刚才返回这个值,1784677是不是就它,所以现在啊,这是咱们部署之后那条信息啊,在里面进行存储。然后这里还有一个叫这个。啊,就是pro,然后在这个表里就是流程定义表,我们部署每个新的流程定义,都会在这张表中加一条数据,那咱找一下这个表啊,Re,开头proc这个表。
16:03
也就是它打开咱们看里边是不是这个数据,就刚才咱们部署这个内容,然后大家看啊,这位这个ID就是刚才啊,这位置有一个ID叫请假,然后里边有个K叫请假,这个请假是咱当时部署那个里边那个请假中那个K。就是咱们之前看到的啊,咱们看一下。就是里边的这个。你的这个ID叫请假,所以现在啊,就是我们的这张表,然后另外有一个叫流程资源表。然后你看里边有相关的信息,包括有PNG,有这个现在啊,这个过程我们就完成了,咱们是通过单个文件方式进行这个流程的部署,就是各位知道这个过程啊。然后这个之后呢,下面还有一种方式,用压缩包的方式进行部署,这个同样可以做到,这个我就不测试了,因为过程是类似的。
17:03
咱们说一下怎么做啊,就是现在我可以这么来实现,我现在啊,把这两文件打成一个压缩包,叫什么什么点zip的文,然后用这个的方式把它加载进来,你看这个叫ZP,然后加载之后我们通过还是这个。把它完成流程部署,只是说我们调的方法的时候呢,咱们调的是这个方法啊,我们来大概写一下啊,就这个方法和小对位置,这里有一个法叫这个z input是一个Z格式个输入,所以通过进行加载,然后完成部署。完成部署之后,同样返回ID,返回名称,所以以上啊就是咱做的流程定义的部署方式,各位把这个清楚啊,特别注意我们刚才遇到这个问题,P文件没有加载,咱们可以在点插文件中加上它含的加载的类型,最终完成部署,完成部署之后在表里边我们也看到了相关的这个数据。
18:23
所以以上啊,就是流程部署定义的这么一个实现。
我来说两句