Task Definition

conductor维护工作任务类型的注册表。 必须在工作流中使用之前注册任务类型。

例如:

{
"name": "encode_task",
"retryCount": 3,
"timeoutSeconds": 1200,
"inputKeys": [
"sourceRequestId",
"qcElementType"
],
"outputKeys": [
"state",
"skipped",
"result"
],
"timeoutPolicy": "TIME_OUT_WF",
"retryLogic": "FIXED",
"retryDelaySeconds": 600,
"responseTimeoutSeconds": 3600
}
name: 任务类型,唯一
retryCount: 任务标记为falure时重新尝试的次数
retryLogic:重试机制
timeoutSeconds:时间(以毫秒为单位),之后任务被标记为TIMED_OUT,如果在转入IN_PROGRESS状态后未完成,设为0就没有timeout
timeoutPolicy:任务超时策略
responseTimeoutSeconds:如果大于0,则如果在此时间后未更新状态,则重新调度任务。 当conductor因为错误/网络故障而轮询任务但无法完成时很有用。
outputKeys:任务输出的一组键。 用于记录任务的输出 Retry Logic
  • FIXED : 在 retryDelaySeconds之后重新调度任务
  • EXPONENTIAL_BACKOFF :  retryDelaySeconds * attempNo 之后重新调度任务

Timeout Policy

  • RETRY :再次重试任务
  • TIME_OUT_WF : 工作流程被标记为TIMED_OUT并终止
  • ALERT_ONLY : 注册计数器(task_timeout)

Workflow Definition

工作流程使用基于JSON的DSL进行定义。

Example

{
"name": "encode_and_deploy",
"description": "Encodes a file and deploys to CDN",
"version": 1,
"tasks": [
{
"name": "encode",
"taskReferenceName": "encode",
"type": "SIMPLE",
"inputParameters": {
"fileLocation": "${workflow.input.fileLocation}"
}
},
{
"name": "deploy",
"taskReferenceName": "d1",
"type": "SIMPLE",
"inputParameters": {
"fileLocation": "${encode.output.encodeLocation}"
} }
],
"outputParameters": {
"cdn_url": "${d1.output.location}"
},
"schemaVersion": 2
} name:工作流的名字
description: 工作流的描述性名称
version:用于标识模式版本的数字字段。 使用增长的数字,执行工作流时如果没有指定,就用最高版本
tasks: 一系列任务定义,如下所述。
outputParameters:用于生成工作流输出的JSON模板,如果未指定,则将输出定义为最后一个执行的任务的输出
inputParameters:输入参数列表 用于记录工作流所需的输入,可选的

Tasks within Workflow(工作流内的任务)

工作流中的tasks属性定义了要按该顺序执行的任务数组。 以下是每个任务所需的强制性最低参数:

name:任务名称 在启动工作流之前,必须将其注册为Conductor的任务类型

taskReferenceName:别名用于引用工作流中的任务。 必须是唯一的。

type: 任务类型 SIMPLE用于由远程工作人员执行的任务或系统任务类型之一

optional: true或false(默认为false)。 当设置为true时 - 即使任务失败,工作流仍然继续。 该任务的状态反映为COMPLETED_WITH_ERRORS

inputParameters: JSON模板定义了给定任务的输入

除了这些参数之外,还需要特定于任务类型的附加参数,如文中所述

Wiring Inputs and Outputs

当触发新的执行时,工作流由客户端输入。 工作流输入是一个JSON有效载荷,可通过$ {workflow.input ...}表达式获得。

基于在工作流定义中配置的inputParameters模板,给出工作流中的每个任务的输入。 inputParameters是一个JSON片段,其值包含用于在执行期间从工作流或另一个任务的输入或输出值映射值的参数。
映射值的语法遵循以下模式:
${SOURCE.input/output.JSONPath}
SOURCE:可以是“工作流程”或任何任务的reference name
input/output:指源的输入或输出
JSONPath: JSON路径表达式从源输入/输出中提取JSON片段     http://goessner.net/articles/JsonPath/
conductor支持JSONPath规范,并从这里使用Java实现。
https://github.com/json-path/JsonPath 例如:
考虑一个任务,使用工作流中的输入/输出参数名为loc_task的任务输入配置
{
"inputParameters": {
"movieId": "${workflow.input.movieId}",
"url": "${workflow.input.fileLocation}",
"lang": "${loc_task.output.languages[0]}",
"http_request": {
"method": "POST",
"url": "http://example.com/${loc_task.output.fileId}/encode",
"body": {
"recipe": "${workflow.input.recipe}",
"params": {
"width": 100,
"height": 100
}
},
"headers": {
"Accept": "application/json",
"Content-Type": "application/json"
}
}
}
}
将以下内容作为工作流输入
{
"movieId": "movie_123",
"fileLocation":"s3://moviebucket/file123",
"recipe":"png"
}
而loc_task的输出如下所示;
{
"fileId": "file_xxx_yyy_zzz",
"languages": ["en","ja","es"]
}
在调度任务时,Conductor将合并来自工作流输入和loc_task输出的值,并将其输入到任务中,如下所示:
{
"movieId": "movie_123",
"url": "s3://moviebucket/file123",
"lang": "en",
"http_request": {
"method": "POST",
"url": "http://example.com/file_xxx_yyy_zzz/encode",
"body": {
"recipe": "png",
"params": {
"width": 100,
"height": 100
}
},
"headers": {
"Accept": "application/json",
"Content-Type": "application/json"
}
}
}


conductor元数据定义的更多相关文章

  1. clr 元数据

    clr相关编译器编译生成的托管模块由四部分组成:PE32或32+头.clr头.元数据.IL代码. 元数据和IL代码完全对应,保持一致(:>)性. 元数据有很多用途: VS的智能感知,自动补全: ...

  2. 照片元数据信息以及在照片中写入gps信息

    /// 照片元数据编码 在下面的文章里,可以看到图片所有的元数据定义信息 https://msdn.microsoft.com/zh-cn/library/system.drawing.imaging ...

  3. 【C#进阶系列】02 PE文件,程序集,托管模块,元数据——还是那个Hello world

    好了,还是这张图,还是一样的Hello world. 因为本章其实很多都是讲一些命令行编译啊什么鬼的配置类的东西,要用的时候直接百度或者回头查书就可以了, 所以了解一下也就行了,也没有记录下来,接下来 ...

  4. 使用Atlas进行元数据管理之Atlas简介

    背景:笔者和团队的小伙伴近期在进行数据治理/元数据管理方向的探索, 在接下来的系列文章中, 会陆续与读者们进行分享在此过程中踩过的坑和收获. 元数据管理系列文章: [0] - 使用Atlas进行元数据 ...

  5. 将replicated数据与元数据关联

    本章介绍元数据的用法以及如何将replicated数据与元数据相关联. 12.1概述 将数据从一个表复制到另一个表时,重要的考虑因素是源表和目标表的列结构(元数据)是否相同. Oracle Golde ...

  6. 最齐全的站点元数据meta标签的含义和使用方法

    最齐全的站点元数据meta标签的含义和使用方法 随着HTML5的流行和Web技术的不断演变,Meta标签队伍也越来越壮大,从Windows XP的IE6到现在Windows 7.Windows 8的I ...

  7. MDA模型定义及扩展

    Tiny框架中.对模型本向没有不论什么强制性约束,也就是说你能够把不论什么类型的对象作为模型.也不必实现不论什么接口. 因此简单的说,你定义一个类.里面有一些描写叙述业务属性或处理的内容,就能够说它是 ...

  8. Hive 官方手册翻译 -- Hive DDL(数据定义语言)

    Hive DDL(数据定义语言) Confluence Administrator创建, Janaki Lahorani修改于 2018年9月19日 原文链接 https://cwiki.apache ...

  9. jdbc元数据

    l  在jdbc中获取数据库的定义,例如:数据库.表.列的定义信息.就用到元数据. l  在jdbc中可以使用: 数据库元数据.参数元数据.结果集元数据 l  (元数据定义相关api,  ..Meta ...

随机推荐

  1. C/C++动态分配连续空间,下标越界导致的free():invalid next size问题

    昨天帮导师做的一个程序出了内存泄露的bug(在VS上程序运行一切正常,等return返回后才出错) 而且是程序运行结束后才出现的错误,在退出前一切代码都顺利执行完了,只是return之后出错. 之后我 ...

  2. monkey亲测

    打开终端: adb devices  查看链接的设备 adb shell 进入手机系统 ls data/data 进入手机目录查看要执行目标app的包名 adb -s emulator-(机器名) s ...

  3. shell 1基础

    shell简介 shell是一个用C语言编写的程序,是用户使用Linux的桥梁.shell既是一种命令语言,又是一种程序设计语言. shell脚本(shell script),是一种为shell编写的 ...

  4. Python 天气预报+微信

    """ Description: 需要提供以下三个信息,在申请到的微信企业号当中可以找到 agentid corpid corpsecret Author:Nod Dat ...

  5. 【Python编程:从入门到实践】chapter2 变量和简单数据类型

    2.1 运行2.2 变量 message = "hello" print(message) 2.2.1 变量的命名和使用 2.2.2 使用变量是避免命名错误2.3 字符串 “Hel ...

  6. mysql5.5版本以后插入中午显示问号的解决办法

    先看看中午变问号的结果 现在看看我们建立数据库和建表的操作 看到这里相信大家都知道创建成功了,没错,数据库跟表是创建成功了,可当你录入的信息带中文的时候就显示问号. 现在用传统的解决办法 在查看下表的 ...

  7. 深度强化学习:入门(Deep Reinforcement Learning: Scratching the surface)

    RL的方案 两个主要对象:Agent和Environment Agent观察Environment,做出Action,这个Action会对Environment造成一定影响和改变,继而Agent会从新 ...

  8. 技术思维VS管理思维

    以下为技术思维与管理思维的不同 在日常的工作中,会出现身兼两职 开发和项目经理 的情况,在此就要学会游刃有余的切换角色,方能一人分身二角 角色转换本质上是思维转换.思维决定一个人的行为,项目经理不像项 ...

  9. python进度条

    #!/usr/bin/env python# -*- coding:utf-8 -*- import urllib url = "http://www.163.com/" #htm ...

  10. 9.简单理解ajax

    #### post 请求需要发送一个header setRequestHeader('Content-Type','application/x-www-form-urlencoded') post请求 ...