00:01
好,那接下来呢,我们来看这个条件工作流的第一个案例啊,那第一个案例当中呢,我们这个呃,执行条件是由呃运行时参数构成的。啊好,那它的基本原理是什么样的呢?哎,我们来看一下啊,这个运行时参数的这个基本原理其实很简单啊呃,首先副照呢,会将参数啊写入一个文件当中。啊,它会将参数写到一个文件里啊,那每个文件呢,那是这样的,就是每一个job,那它都会有一个自己的这样的环境变量,这个环境变量的名字呢,叫做output pro,会有一个这样的变量,那这个变量呢,它所指向的是一个文件。啊,会,他所指向的是一个文件啊,那附照呢,将参数写到哎,这个环境变量所指向的文件当中。啊,那斜去之后呢,我们的子job呢,就能够通过这样的一个一表达式去获取负job输出的参数了。
01:08
啊,是这样的啊,那咱们在这呢,需要去重点看一下这个ER表达式啊,这个ER表达式里边呢,它的内容主要有两部分组成,一个是job name,一个是哎parameter对吧?Job name呢,指的就是咱们副job的名称,那parameter呢,指的就是那个参数的名字,参数名对吧?咱们其实可以思考一下,就是为什么呃,这个一儿表达式要由这两部分内容组成。啊,其实很简单啊,大家可以思考一下,呃,我们的每一个兆吧,它是不是都可能会有多个负兆位啊,对吧,比如说像我们刚才那个案例ABC对吧,那C是不是就有两个负照吧。对不对,那我们是不是得通过job name,哎去呃明确或者去定位,那这个参数它获取的到底是谁的,是A的还是B的,对吧?那为什么后边还有一部分这个parameter,也就是参数名呢?哎,也很简单,因为每个副照吧呀,都可以输出一个或者是多个参数。
02:06
那我为了精确的找到我想要使用的那个参数,那所以说这个一表达式是不是得由这两部分内容组成啊,一个job name啊,一个parameter。啊,这个呢是大家需要去注意的,好了,那也就是它的基本原理就是这样啊,就是负照将参数写到一个文件里,那子照呢,就可以使用这个一表达式去从该文件里边获取我们想要的参数了。啊好,那子job获取到想要的参数之后,需要做哪些工作呢?很简单啊,那是不是就可以用啊,我们子job就可以用我获取到的这个哎,负job的输出参数,然后呢,再通过这个条件运算符啊和我们的期望值进行比较,那这样一来是不是就得到了一个我们的执行条件呀,对吧?啊比如说咱们举一个例子啊,比如说我们这样呢,就可以哎,构造一个这样的执行条件啊,当然这是一个具体参数,对吧?这是子照获取一个具体参数,然后呢,如果它等于一。
03:05
哎,我就执行啊,否则就不执行。对不对,那是不是就是通过这个参数,然后呢,哎,那在使用这个条件运算符跟我们的期望值进行比较,是不是就得到了一个所谓的执行条件呀,对吧?哎,只有满足这个条件,哎,这个job这个子job才会执行,否则的话呢,就不执行。哎,这就是它的基本原理。好,那当然当然了,咱们光这么说,呃,大家可能还是,呃感觉到还不是不是那么的直观,那接下来我们有一个具体的案例,咱们来一起看一下,好,那这个案例,呃,这有一个需求啊,咱们看一下这个需求。还有一个需求啊,那这个需求是什么呢?是job a执行一个脚本,哎,一个LL脚本啊,那job b呢,哎,也执行一个shell脚本。啊,但是大家注意观察了啊,Job b呢,它不需要每天都执行,而只需要每周一执行。
04:03
啊,只需要每个周一进行执行。那显然我们这个照温B这个位置是不是就需要我们去自定义一个,呃什么呀,执行条件对吧,咱们需要去判断一下,判断一下现在是不是周一,如果是周一我就执行,否则就不执行。对不对,显然,呃该需求呢,会用到我们刚刚所讲的这个条件工作流。对不对,那这块到底如何去实现这个功能呢?来我们一起来看一下啊。此处呢,大家来看一下,我们这呢,有两个脚本,一个是job a.SH一个是job b.SH。啊,然后呢,这俩脚本分别是什么呢?分别是哎,咱们这个job a需要执行的shell脚本,那这个呃,Job b.SH呢,就是这个job b所需要执行的shell脚本。啊是这样,我们接下来呢,看一下这个脚本当中的内容啊,咱们先看这部分啊。啊,这一部分呢,相当于是呃,我们这个job a啊,所需要执行的这个业务逻辑。
05:06
啊,那当然这里边没有具体的逻辑啊,我们呃,用一个E语句啊,代替了这个job a的执行逻辑啊,那接下来再看job b的SH,那这部分内容呢,嗯,很显然应该是谁,应该是咱们job博B所需要执行的删要逻辑这个脚本,呃,这个业务逻辑,那当然了,我们这也没有具体的逻辑啊,没有具体逻辑啊,就一个打印啊这样的一句话啊好了,这是我们这个A和job b这两个脚本的哎,核心逻辑对吧,和咱们就说完了,那完之后呢,我们再看一下,呃,我们这个job a里边是不是还多了一部分内容啊,对吧?来看一看它多的这部分内容是什么,来我们看一下。多的这部分内容呢,一共有这样的呃两行啊,一共这样的两行,那第一行呢是什么?是week等于呃这个date啊,加上百分号W,那date是什么意思呢?给大家解释一下啊,呃,首先我们可以先把后边这个date加百分号W可以去执行一下,嗯,比如我放到我们的一个shell窗口啊,执行date加百分之W,你会发现它会返回一个这个数字,对吧?那它返回这个数字是什么呢?返回数字呢,指代的今天是周几。
06:15
啊,指的是今天是周几啊,那比如说今天是周几呢?咱看一下日历对吧,今天是不是周二,那从作业它返回来就是二。啊,实际上相当于对我们这个日期呢,做了一个格式化的输出啊输出啊,它的这个周几啊,那这个输出的时候有什么规则呢?啊,如果是周一到周六,那返回对应的数字就可以了啊,那如果说它是周日的话呢,它返回的是零啊完了之返回是零啊这个呢,大家要注意一下啊好,那也就是说我们这个job a是不是已经获取到了当天的日期对不对,那注意一下这个反引号的作用啊,那这个反引号呢,在这儿的作用是什么呢?是将啊咱们这个date加百分号W这个命令的结果啊作为具体的值,然后呢,赋予我们前面的这个变量。
07:02
啊,这个是一定要注意的啊,一定要注意的啊来,那接下来我们继续下走,那接下来你看啊,这个罩杯干什么事了。他是不是在最这个脚本的最后的位置将什么,是不是将一个这样的东西给它写到了这个里边啊,大家还记得这个东西是啥吧?这是不是一个环境变量,对吧?这个环境变量前面讲过,它会指向一个文件对不对,那咱们现在是不是Dollar加环境变量,相当于引用这个环境变量的值啊,对吧,也就是那个具体的文件路径,那相当于我会把这样的一个东西给它写到,哎,咱们那个文件里边啊,大家可以看一看这个东西是什么。啊,这个东西呢,其实是一个阶son字符串啊,就是我们再去使用这个就是啊运行参数去构造我们的这个执行条件的时候呢,我们往这个文件里边写参数,它有一个要求,你的格式必须得是啊接损字符串啊,那大来看一看这个能不能看懂,我们这个间字符串里边呢,其实只有一个KV键值段,那它的K是什么呢?K就是它WK。
08:06
啊,那value是什么,Value是不是引用我们刚刚的那个WK的这个参数啊,对吧,是这样的啊,然后咱们都知道杰森当中呢,咱们的K是不是得用双引号引着呀,对吧?所以这呢,我们需要有一个双引号,那当然现在最外层是不是有一个双引号,所以里边要想呃保留这个双引号的话,需要怎么需要加一个转移字符进行转义。那就是这样的一个一个操作啊好了,那现在我们这个job a,咱们试想一下赵博A再去执行这个脚本的时候,那执行完自己的业务逻辑了之后,是不是就会获取当天的这个周几这个信息,然后呢,把这个信息呢,通过一个金字符串的形式写到这个文件当中。没错吧,啊好,那现在我们已经完成了,哎,咱们实际上已经完成了第一步了,对吧?啊,这一步已经完成了啊,那第二步是不是子job使用这样的一个一尔表达式去获取负job所写入的参数啊,对吧?那这个怎么去做呢?往下翻啊,我们看哪,我们看这个condition.flow文件啊,咱们看这看一下这啊。
09:04
那这个文件呢,我们大家应该格式应该还比较熟悉吧,页面格式对吧?啊,那这是no no下面是一个数组,数组呢我们有两个元素,一个job a啊,一个job b。啊,那看一下job a的内容,Name job a Type Command,那command是什么呢?就是sh job.sh是不是要执行哎,Job a.SH这个脚本呀,对吧?啊,那继续往下走。那看job b name job b啊,然后可的啊,这是它的这个什么东西啊,这是呃,它的一个类型啊,那它依赖于谁呢?依赖于哎照A,那赵博也就是A是不是就是B的一个副照吧呀,对吧?啊,A就是B的一个副照吧啊他们的依赖关系是这样的啊啊你再往下走,照个B,他要做的工作是什么呢?就是执行照个B这个脚本。啊,现在大家要注意了,如果我们只看到这个位置啊,只看这部分内容是不是应该是大家所熟悉的对吧?那如果你这么写的话,那我们的这个A和B它俩的执行逻辑是什么样的呀,是不是只要A成功,B就执行对吧?A成功B就执行。
10:10
啊,A成功B就执行是这样,但是我们现在呢,哎,不想要这样的效果,我们想怎么样,我们想是不是得自定义这个B的一个执行条件呀,对吧,实现什么样的效果呢?哎,只是周一才执行,别的时候就不执行了,对吧?那怎么办呢?在下边呢,加上一个condition这样的一个属性,注意condition跟跟谁对齐,是跟name type depends on以及con对齐的,这一定得注意啊,Condition后边呢,是不是就写这个job b的,咱们自定义的执行条件就可以了呀,对吧?什么条件呢,往后看。是不是通过一个ER表达式ERER表达式里边两部分内容job a是不是就指向了咱们job a了,对吧?那完之后呢,冒号WK,这个WK是不是就哎会找到我们写到这个文件当中的WK这个参数啊,对吧,那完全它会获取里边的值啊,那后边呢,我们是不是通过一个条件运算符去跟我们期望的这个一做一个比较啊,对吧,就是等于一就证明这一天是周一,周一我就执行,否则赵博B呢就不执行。
11:11
啊是这样的啊,这个其实就是我们使用啊这个运行时参数啊,去构造咱们这个执行条件的一个具体理。那其实这里边咱们需要去做的呢,主要就是两部分,我们需要在附照当中啊,是不是去做一定的这个操作,然后把我们哎这个预期的参数写到这个文件里,对吧?然后呢,在我们编辑文件的时候呢,在这个子job当中加上一个这样的condition,也就是一个执行条件。啊,那这样一来就能实现咱们这个条件工作流了啊OK,那接下来我们把这个所需的文件全部创建出来,然后呢,来去做一个演示啊,首先我们需要建一个这样的job a.SH那CTRLC创建出来。打开note加加,我们在这新建一个文件吧,来,CTRLV。这个CTRLS保存一下。
12:01
啊,保存一下,那我们给它保存成这个,嗯,保存到桌面啊完桌面,然后呢,这个叫做job a.SH那上面呢,我们需要改一下啊,把这个改了,那照va a.SH然后呢,点击保存,那这个脚本已经保存完毕了,那接下来呢,我们再新建一个文件。来,我们继续往下走。CTRLC来拿过来这个的CTRLV放在这啊,然后呢,CTRLS保存,那这个呢,我们管它叫做job b.SH。啊,然后同样是改一下这个后缀啊,然点击保存,嗯,好,那A和B这两个脚本我们就都准备好了啊,那紧接着呢,我们需要去创建一个啊condition.flow这样的一个flow文件,CTRLC拿过来,拿来之后呢,我们还是呃,也新建一个文件吧,啊CTRLVCTRLV,好,那现在呢,我们给它CTRLS保存一下,那这个叫做ccon.flow啊,就是条件工作流,然后点击all types,然后点击保存。
13:07
嗯,好,那这个flow文件也有了啊,那接下来我们需要做哪些工作呢?来看一下,接下来呢,我们需要将job a job b这两个脚本,以及conditioner flow,还有一个project文件,这个不能丢啊,这个不能丢啊,那我们就还用之前那个first.project就可以,那把他们四个打到一个zip包里啊来,那接下来我们做一个测试,好,我们找到我们所需的这个文件啊,第一个project文件,那第二一个呢,Job a.sh job b.SH以及这个文件啊,那他们四个打到一个包里。右键添加到这个包。那咱这呢,给他改个名字吧,啊,叫做condition con Di啊好了,那这个包已经准备好了,接着我们去做一个测试,打开阿兹卡班的工作界面,然后我们点击create product,呃,在这里边我们给它起个名字啊,叫做condition con。
14:02
啊,然后点击create,好,那接下来我们上传刚刚咱们准备好的zip包,啊,来到桌面啊,找到condition.zip点击upload,好,那接下来呢,我们点击flow。啊好,那现在大家看一下啊,那这边是不是就给我们把这个图给咱们展示出来的呀,对吧,这个job下边是job a job b,然后这个job b呢,能看到它是不是一个condition呀,对吧,它是有一个执行条件的,好了接下来咱们来点击cute执行好,然后点击continue。哎,那这个结果是不是就正如我们所预期的那样,对吧?啊,那你可以看到那这个job b它的状态是什么呢?是cons的是不是取消了对吧。它是取消了,那A执行成功了,然后呢,这个B它取消了B为什么会取消呢?因为我们是一个条件工作流对吧,那我们条件工作流我们要求什么是周一才执行对吧?只有等于一才执行,但是刚才我们自己已经执行过了啊,对吧?我们那个date啊,加百分号W返回值是几啊,今天是周二,它返回的是二,所以不满足条件,不满足条件它就会被取消掉,就不执行了。
15:09
啊好,那这个效果呢,已经出来了。
我来说两句