00:00
各位同学大家好,下面开始呢,我们要讲解一个新的技术点,技术点的名字叫activity,这个技术呢,为了咱们后面的功能进行准备,在这个里边呢,我们主要从几个方面给各位讲解,首先第一个给大家会介绍里边的基本概念,包括什么是工作流,什么是工作流引擎,以及activity里边相关的基本概念。这个之后呢,第二部分我们会通过一个详细的案例给大家演示一下activity到底该怎么进行使用,那首先呢,咱先看第一个内容,什么是工作流,那大来看一下啊工作呢,它的英文全称叫work flow指的是什么呢?我这里边啊有一段定义,这个定义呢是我从百度上给大家复制过来的,咱们先读一遍,然后我会用更通俗的语言给大家来解释一下,我这里写到啊工作流是什么?就是通过计算机对业务流程自动化执行管理。
01:03
啊,但是这句话读完之后我们可能没有理解,咱们继续往后来看,它解决什么问题呢?可以使多个参与者之间按照某顶预定义的规则自动传递文档信息或任务的过程,从而实现某个预期的业务目标。那这个大家看啊,在里面提到一个部分,我这里加错了,叫做预定义的规则,说的简单点就是咱们约定好一个规则,按照这个规则自动往下执行,从而达到一个预期的目标,通俗来讲就是业务上一个完整的审批流程。那下面呢,给大家来举几个具体例子说明,比如各位想一下啊,我们在日常的工作中,各位应该都见过这么一些流程,第一个最常见流程,那就是请假流程,因为大家都清楚啊,我们到一个公司里边,其实在公司里边呢,我们最不想做的就是这么几件事情,第一个事情什么?那就是加班,第二个什么,那就是请假,第三个什么,那就是离职嘛,这几件事情我们都不好说出口,比如说加班。
02:08
领导让你加班,你说我不想加班,那这话可能不好说,第二个请假,这里边这假也不太好请,第三个离职,有时候你也说不出口,一般我们就不想做这几件事情,而这个请假呢,其实就是一个典型的审批流程,包括比如这个出差,比如说外出合同审核等等,这些呢都是一个工作流,咱们就具体说一下这个请假这个流程啊,给大家举个例子啊,我这里有一个简单的模型,我把这个复制过来,来用它来说明这个工作流这个相关的特点。我把这个拿过来啊,大家看啊,比如说我现在啊,我要进行请假,那请假怎么做呢?第一部分大家看,我现在要填写一个请假单,比如说你现在啊是请几天假,比如现在我请2月1号到2月3号这三天假,或者说我请这个2月1号到2月10号这一天假,包括这里边我请假要做什么事情,比如我请假要去旅游,我请假去结婚,请假去干什么事情啊,这是填写请假单,然后填写之后呢,第二部分。
03:13
是不是要由你公司那个部门经理审批,就是你的主管领导审批,领导看到你这个啊,看他是否合适,然后进行审批通过或者不通过,如果说审批通过之后,在很多公司里边,可能总经理还要审批,假如说我现在这个公司里边啊,就是约定员工请假,总经理必须要审批,比如说你公司只有几十个人,那总经理任何事情都要事必躬亲嘛,都要去问一下。然后总经理审批之后,那公司的人事要进行备案,比如为什么要备案,很明确啊,你请了假肯定要扣你工资嘛,不可能说请假不扣工资,人事要备案,最终核算工资,这是一个比较完整一个请假的审批流程,而这个流程,这个过程我们理解为就是一个工作流,也就是刚才提到的按照预定义的规则进行传递或者近期任务的这个过程,从而达到预期目标。那我现在请假,按照流程第一个流程,那咱就填写请假单。
04:15
然后第二个我们部门经理进行审批,第三个总经理审批,然后第四个人事备案,把这个预定的过程完成之后,我这请假是不是生效了,然后请假一生效,那我就可以离开公司做自己想做的事情了,这就是一个工作流的一个基本描述。在实际中有很多这种场景,比如你现在出差啊,你现在做这个什么采购,做这个合同审核等等,都是按照这些流程进行的,包括你从公司离职,按照这个流程,比如你离职填写离职申请,然后你的部门经理审批,总经理审批什么人事谈话,最终人事备案,结算工资啊,办理各种的业务等等。这个就是工作留一个基本说明,在实际中有很多很多的场景,如果各位还不理解,那你可以闭着眼想象啊。在日常生活中,我们这个请假、出差、采购合同审核、离职等等,这些都叫工作流,这是我们最通俗的说明。
05:18
那再总结一遍啊,什么意思?就是我现在按照某种预定义的规则,最终实现某个预期的业务目标,就咱说的请假,实际上就是业务上一个完整的审批流程,这个就叫工作流,所以咱们把第一个做了一个说明,然后这个说完之后我们继续来看啊,比如我现在想实现这个审批流程,我们该怎么实现呢?给大家分它这个演变的过程。那我们来看啊。首先我们看第一个,比如我现在啊,用最原始的方式想实现这个流程,注意我的描述啊,最原始方式大家想怎么做?
06:01
各位可以想到啊,因为我记得啊,我在十多年前工作的时候啊,那个年代呢,比如说我现在我想请假,想做个事情,这过程会特别不方便,当时是怎么做的呢?比如现在我到那个公司的人事那里,或者到公司那个什么助理那里领一个表,然后我填写我的请假申请,某年某月某日请几天假,什么理由,然后填完之后怎么做,我找到我部门的经理,让他手写签字,他可能问了一会儿啊,说你干什么事情去啊,做什么啊,你是旅游去还是干什么,然后给我签字同意,同意之后呢,这事怎么做,我拿着部门经理签字之后,这个单子再找总经理签字,总经理签字之后,然后我再交到人事进行备案,一般要拿这个单子到处去跑,找不同的人进行签字,这是最原始方式,我写一下啊,就是拿着这个请假的这个单子。然后到不同的这个人那里去签字。
07:08
然后最终才能完成这个过程啊,但是大家想一下啊,这个过程虽然说能实现,但是他有太多的弊端了,比如我现在啊,我拿着单子找部门经理签字,而我这个部门经理,比如今天他正好请假了,他请假了,所以我找不到人了,那我只能等这个时候,比如我找总经理,总经理可能别的事情外出了,我也找不到他,需要等他回来,然后再做这个事情,因为总经理嘛,可能一般我们都很少见到啊,所以这个时候,这个过程可能你得请假就耽误了,或者说这个流程可能走很久才能完成,另外这过程也会特别的不方便咱们跑来跑去,如果有的公司它的流程很复杂,可能你跑一天都跑不完。因为我清楚记得啊,我在十多年前,当时从一个公司离职的时候,我清楚记得我签字嘛,到这个部门到那个部门签了一没签完,第二天来了,继续签,又签了一天,最终结束啊,所以你发现这种方式太原始了,随着我们时代的发展,这种方式已经严重落后了,所以咱目前可能就不这么做了,那咱怎么做呢?所以这里写一下啊,我们的第二种方式。
08:16
咱们可以通过这个软件的系统实现这个流程,就是我们做个软件,通过软件把这完成,那这个怎么做,这里写一下啊,首先我们先说一下比较原始的这种软件实验方式,大家看我课件中这里都写到了啊,这个我就不读了,给大家详细来讲解一下怎么做。比如现在啊,我们用比较原始这种软件系统实现,那怎么做?首先我们这个过程中,咱们肯定是最终把这个数据都用数据库进行存储,比如现在我约定啊,我这几个就是填写请假单,部门经理审批,总经理审批,人事备案是四个流程,而每个流程中我用一个状态值进行表示,我写一下啊它的实验方式。
09:05
每个流程部分使用一个状态值进行表示。这是我们要做的这个事情啊,也是一种比较原始的方式,比如说我现在约定啊,我这里边填写请假单,它的状态值就是一。部门经理审批状态值是二,总经理审批是三,人事备案是四,那这个时候怎么做?比如现在啊,我这里边填写完请假单之后,我把数据库里面状态值改成一,然后部门经理就查询状态值一的数据进行审批,他审批之后把状态值改成二,总经理查询状态是二的数据,然后改成三,三之后人事查状态是三的这个记录,最终他完成备案,把状态改成四。而这个流程他具体实验方式就是每次就是完成你的审批,都去修改我们的状态值,最终完成你这个预定的这个目标,这是我们比较原始的系统实验过程,这各位应该很明确啊,谁做完什么事情之后改状态,我改完了这个状态,请假单状态只改成一,部门经理他审批之后改成二。
10:23
总经理审批之后改成三,人事备案之后改成四,以此类推,分别查这个值进行后面的操作。这是原生方式,但是这种方式啊,虽然说能实现,我们这么看也没有发现什么不好的地方,但是它有一个致命的缺点。大家想一下啊,这么实现,你想一下有什么缺点呢。给各位说明啊,我这里写一下,就是如果说啊,我这个审批的流程是固定不变的。那这个时候这样做,那肯定是完全没有问题,或者说完全是可以的,但是问题来了。
11:05
如果说啊,我的流程发生了变化。什么变化,比如现在我公司约定啊,比现在一般公司这个原则,比如说我约定我一个员工请假,如果小于三天,总经理就不再审了,如果说我这个大于三天总经理在审批,或者说有的公司里面可能约定我请假天数小于三天不扣工资,大于三天才够工资,这流程是不是变了,如果流程变的话呢,那咱们用这种方式,我的代码是不是要跟着发生变化?大家想一下啊,你这个流程变,代码也变,咱是不是要做很大的改动,那这个时候你每次变都要改代码,这过程肯定是特别特别不方便你系统维护,也会带来很大的困扰,所以这是用原生方式实现,有这个缺点,当你流程变了,那我代码要跟着变,比如现在我这过程中没有总经理这个流程了,那我再查的话,应该就没这段东西了,那我这代码要变化,比如现在我改的这个过程,提前请查单,部门经理直接审批,然后人事直接备案,那这个环节没有了,你这职是不是都要跟着发生变化,所以这是他一个致命的缺点。
12:20
比如我这里写到的啊。如果说你这个流程变了,那你的代码也需要跟着改变,这种方式肯定是不可取的,而我现在想实验一个效果,什么效果,我这里写一下啊,就是最终啊,我想实现这样的一个效果,什么效果,我的流程变化了,而我的代码是不需要跟着修改的。另外呢,我这个流程它能够自动完成,什么叫自动,我写完请假单,部门经理就能看到,部门经理审批之后,总经理能看到,然后他审批之后人事能看到,就能备案。所以现在我想做这个两个效果,具体说就是流程变了,代码不需要跟着改,然后流程能自动往下进行,或者说自动完成。
13:11
这时候我们要最终这样的目的,然后这样的效果怎么做呢?大家看我的课件中啊,这个时候我们就需要用到一个东西,什么东西叫工作流引擎了,通过工作流引擎就能把这个效果做到,所这个啊是我们引出咱们目前这个背景。我写一下啊,使用工作流引擎就能实现上述的这个效果,用工作流引擎它流程变了,不需要改代码,然后流程能自动往下完成。以上啊,是咱们对于它的一个说明,我再重复一遍啊。工作留指的就是一个业务上一个完整的审批流程,比如说请假啊,比如说你这个出差,比如说离职等等,而这种方式呢,如果咱用最原始的方式,那肯定是拿着一个纸质单子到不同人那里去签字,这个流程肯定是他的过程会特别不方便,比如说总经理可能连续一周没有来公司,那你假就请不了,所以这种方式肯定是不可取的。那咱怎么做?我们可以通过软件系统实现,在软件系统中如果用原生方式,那咱就根据这个状态值进行操作,每次改状态值进行实现。而这种方式的缺点就是如果流程一直不变,完全可以,假如说流程发生了变化,你代码还要跟着修改,这种方式也是不可取的。而我最终想达到什么效果,流程变了,代码不需要修改,另外流程能自动往下完成,那怎么做?这个时候就需要用到一个。
14:50
东西。叫工作流引擎,我们通过工作流引擎就能把上述效果进行实现,所以咱们最终啊,引出咱的概念,大家把这明确,然后咱们继续来看啊,就是工作里有引擎的,咱先看第一个,它为什么不用改代码,流程变了,代码还是不发生变化,那它是怎么来实现的呢?我们简单看一下它的基本的一个原理给大家说明啊,我这里写到。
15:18
我们用工作这个引擎呢,就是它是实现了一个规范,这个规范呢跟我们这个状态字段无关,就是状态值没有关系,你是一还是二,跟这个规范没有关系,而规范怎么做,大家可以这么理解,我这里边啊有一张流程图,比如说你看我刚才写到这位置。这是流程图,流程图里边呢,假如说这是我们的第一部分。然后这是第二部分。这是第三部分,人事备案是第四部分,这是一个流程图,然后流程图里边我们要实现代码是一个固定,一个规范,规范是什么?每次就是执行他的下一个,取到他上一个那个值,比如说按照这个固定的流程做到,比如请假单写完之后,他就到这个部门经理,部门经理能拿到纸,然后审批到下一个环节,这过程与你的状态值无关,只跟你的流程有关,始终是读取业务流程图的下一个节点中的内容,这是我们一个基本过程,比如说咱把规范规定好了,始终读取业务图中的下一个节点,这样的话,就算你改了业务,那里边的代码不需要改,因为它的代码的规范都是读取下一个里面内容。
16:32
这是我们说的第一个,我们改了流程,不需要改代码,只要按照规范进行实现。然后这个流程图怎么做,后面咱会讲解它的画的方式,然后再看第二个啊,咱们说这过程是不是自动往下完成的,那这个怎么做呢?其实这个过程呢,也是通过数据库操作的,比如说我现在啊,咱就举个例子,我填写完请假单之后,那这个时候呢,我当前这个节点是不是在请假单填写这个过程中,那我们就向这个表里边第二条数据,当我请假单完成之后,那这个时候他就需要那个部门经理审批了,那怎么做,咱就可以把请亚单这条数据删掉,然后加一条部门经理信,这个信息,部门经理看到之后再审批,他审批之后把数据删掉,再加一条总经理审批信息,以此类推,最终完成就是自动往下执行,这是一个基本过程,而这些过程,我们通过工作流引擎都会帮我们自动进行实现。
17:36
总之,两点。第一点改完流程之后,不需要修改代码,然后第二个他把这流程能自动往下完成,而自动推进的过程中也是通过数据库进行实现的,每次记录当前这个节点或者当前所在这个状态,然后最终进行实现,具体说是节点,比如说你现在填写完请假单之后,把这条数据删掉,加一条部门经理的信息,部门经理得到,得到之后他审批,把他信息删掉,再加一条总经理的信息,以此类推,这样就实现了流程的自动提交。
18:14
所以以上啊,是咱们对于这个工作流的一个基本介绍,大家把这个有一个简单的认识啊,但这过程呢,确实比较抽象,各位就想一下我们日常生活中一些典型的场景,比如说请假啊,比如出差,比如说离职等等。这个啊,我们就流到这里,然后咱再来看啊,在我们实际中呢,有很多常见的工作流引擎有哪些呢?咱目前的是这个叫啊,这是一目最除之,还有他的如啊,另外有些如国的。盘古BM等等,咱目前讲的是activity啊,这是我们对于他的一个基本介绍。
我来说两句