本文上接《Azkaban Flow 2.0 使用简介》,对Azkaban Condition Flow (条件工作流) 做简单介绍

目录

条件工作流 介绍

作用

条件工作流,允许用户根据条件指定是否运行某些作业

使用方式

  1. 用户可以根据运行时参数(如先前作业的输出)运行或禁用某些作业
  2. Azkaban提供了一些预定义的宏,用户可以直接使用,用于比较父作业的运行状态来运行或禁用某些作业

支持的运算符

运算符 含义
== 等于
!= 不等于
> 大于
>= 大于等于
< 小于
<= 小于等于
&&
||
!

作业运行时参数的条件:

  1. 使用 ${jobName:param} 来定义作业运行时参数的条件
  2. “:” 用于分隔jobName和参数
  3. job运行时,使用参数与条件中的字符串或数字进行比较
  4. 用户需要事先将参数的值写入 $JOB_OUTPUT_PROP_FILE

支持的预定义宏

预定义宏 含义
all_success 默认值,所有父job全部成功
all_done 所有父job全部完成
all_failed 所有父job全部失败
one_success 至少有一个父job成功
one_failed 至少有一个父job失败

每个预定义宏的相应作业状态:

预定义宏 作业状态
all_done FAILED, KILLED, SUCCEEDED, SKIPPED, FAILED_SUCCEEDED, CANCELLED
all_success / one_success SUCCEEDED, SKIPPED, FAILED_SUCCEEDED
all_failed / one_failed FAILED, KILLED, CANCELLED

一些有效的条件 举例

${JobA:param1} == 1 && ${JobB:param2} > 5
one_success
all_done && ${JobC:param3} != "foo"
(!{JobD:param4} || !{JobE:parm5}) && all_success || ${JobF:parm6} == "bar"

条件工作流 实例

  1. 新建两个文件:flow20.project 和 .flow 为扩展名的文件
  2. 打包zip & 上传zip & 运行

详细过程略(可参见上一篇博文中的“简单的Flow”一节),.flow 文件举例:

# 文件名:condition_2flow.flow
nodes:
- name: JobA
type: command
config:
command: sh /azkaban/job/write_to_props.sh - name: JobB
type: command
dependsOn:
- JobA
config:
command: echo "This is JobB."
condition: ${JobA:param1} == "AAA" - name: JobC
type: command
dependsOn:
- JobA
config:
command: echo "This is JobC."
condition: ${JobA:param1} == "BBB" - name: JobD
type: command
dependsOn:
- JobB
- JobC
config:
command: echo "This is JobD."
condition: one_success

/azkaban/job/write_to_props.sh 文件的内容:

echo '{"param1":"1"}' > $JOB_OUTPUT_PROP_FILE

Condition Flow在web页面中的显示是如下图的样子

  1. 实例中“JobC”的condition不成立,所以不会执行
  2. “JobD”的condition是只要“JobB”和“JobC”有一个成功即可执行

所有上述实例最终的执行结果为:“JobC”不执行,其他均执行成功。如下图:

附录

官方文档

https://azkaban.readthedocs.io/en/latest/conditionalFlow.html#

例子源码

https://github.com/remainsu/azkaban_job

Azkaban Condition Flow (条件工作流) 使用简介的更多相关文章

  1. Azkaban Flow 2.0 使用简介

    官方建议使用Flow 2.0来创建Azkaban工作流,且Flow 1.0将被弃用 目录 目录 一.简单的Flow 1. 新建 flow20.project 文件 2. 新建 .flow 文件 3. ...

  2. 工作流调度器azkaban(以及各种工作流调度器比对)

    1:工作流调度系统的作用: (1):一个完整的数据分析系统通常都是由大量任务单元组成:比如,shell脚本程序,java程序,mapreduce程序.hive脚本等:(2):各任务单元之间存在时间先后 ...

  3. Activiti工作流引擎简介

    Activiti工作流引擎简介 一.概述 Activiti是由Alfresco软件在2010年5月17日发布的业务流程管理(BPM)框架,它是覆盖了业务流程管理,工作流,服务协作等领域的一个开源,灵活 ...

  4. python笔记11-多线程之Condition(条件变量)

    前言 当小伙伴a在往火锅里面添加鱼丸,这个就是生产者行为:另外一个小伙伴b在吃掉鱼丸就是消费者行为.当火锅里面鱼丸达到一定数量加满后b才能吃,这就是一种条件判断了. 这就是本篇要讲的Condition ...

  5. 工作流--JBPM简介及开发环境搭建

    一. 工作流简介 项目中不断的接触工作流,点点滴滴积累了一些,下面把一些学习到的东西整理记录下来. 工作流一般的适用场景:公文流转.行政审批.订单处理.产品研发.制造过程等.用专业一点的语言来描述工作 ...

  6. activiti工作流框架简介

    常见的工作流框架:activiti, JBPM, OSWorkflow activiti框架基于23张基础的表数据, 基于Mybatis操作数据库. JBPM框架基于18张基础的表数据, 基于hibe ...

  7. Java代码实现对Azkaban的Flow进行设置定时

    代码如下: public class CurlToAzkaban{ public static void scheduleExecute(String flow, String cronExpress ...

  8. python多线程之Condition(条件变量)

    #!/usr/bin/env python # -*- coding: utf-8 -*- from threading import Thread, Condition import time it ...

  9. 条件随机场CRF简介

    http://blog.csdn.net/xmdxcsj/article/details/48790317 Crf模型 1.   定义 一阶(只考虑y前面的一个)线性条件随机场: 相比于最大熵模型的输 ...

随机推荐

  1. js 动态操作元素

    <!DOCTYPE html><html lang="en" xmlns="http://www.w3.org/1999/xhtml"> ...

  2. nodejs dateformat date-utils

    https://www.npmjs.org/package/dateformat https://www.npmjs.org/package/date-utils 来自为知笔记(Wiz)

  3. 【wpf】在win10系统上弹出toast和notification

    原文:[wpf]在win10系统上弹出toast和notification 老规矩,先看效果 右下角的notification: 操作中心的notification: 整体效果: 前提条件 1.需要在 ...

  4. 数据绑定(十一)多路绑定MultiBinding

    原文:数据绑定(十一)多路绑定MultiBinding 有时候UI要显示的信息又不止一个数据来源决定,就需要使用MultiBinding,MultiBinding具有一个名为Bindings的属性,其 ...

  5. 零元学Expression Blend 4 - Chapter 31 看如何简单的把SampleData 绑进ListBox里

    原文:零元学Expression Blend 4 - Chapter 31 看如何简单的把SampleData 绑进ListBox里 前面几章连续讲到ListBox的运用,本章要讲得是如何简单的把Sa ...

  6. Win10的UWP之进度条

    原文:Win10的UWP之进度条 关于UWP的进度条的处理的方案有两种方案 我们新建一个项目,然后处理的界面如下的代码 <Grid.RowDefinitions> <RowDefin ...

  7. RoboVM 1.1 发布,Java 转原生平台代码

    分享 <关于我> 分享  [中文纪录片]互联网时代                 http://pan.baidu.com/s/1qWkJfcS 分享 <HTML开发MacOSAp ...

  8. delphi dispose释放内存的方法

    delphi dispose释放内存的方法 2010-06-08 19:39:59|  分类: DELPHI |  标签: |举报 |字号大中小 订阅     dispose使用方法的简单介绍在本文末 ...

  9. 浅谈js闭包(closure)

    相信很多从事js开发的朋友都或多或少了解一些有关js闭包(closure)的知识. 本篇文章是从小编个人角度,简单地介绍一下有关js闭包(closure)的相关知识.目的是帮助一些对js开发经验不是很 ...

  10. JavaScript规定了几种语言类型?

    JavaScript中的每一个值都有它自己的类型,JavaScript规定了七种语言类型: 1.Undefined 2.Null 3.Boolean 4.String 5.Number 6.Symbo ...