前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >【国产免费】分布式ETL作业调度处理平台TASKCTL变量属性设置

【国产免费】分布式ETL作业调度处理平台TASKCTL变量属性设置

原创
作者头像
taskctl官方频道
发布2022-05-07 16:30:19
6640
发布2022-05-07 16:30:19
举报

变量信息

总控信息中定义的变量属于流程私有变量,主要应用于模块代码。变量信息主要包括:变量名称、变量值、变量类型、是否加密等信息。

变量名称

变量名称是一个流程内所有私有变量的关键索引信息,使用时注意以下几点:

  • 唯一性:一个流程内,私有变量名称是唯一的,不能重复;
  • 长度:变量名称长度不能超过 50 个字符;
  • 输入限制:名称不能数字开头,不能包含特殊字符,如:!@|#*...等;

变量值

在定义私有变量时,必须确定初始变量值。在整个调度应用过程,该值可能会根据用户的行为进行修改。比如业务日期类变量。

长度:变量值长度不能超过 200 个字符

变量类型

TASKCTL 调度平台变量类型主要分三类:日期类(date)、普通类(comm)、常量(const)。

  • 日期类:日期类变量指与自然日期或业务日期相关的变量。一般情况下, 此类变量在调度应用过程会随不同调度批次的变化而变化。
  • 普通类:普通类变量是相对日期类而言的。一般情况下,普通变量不会随不同调度批次的变化而变化,比如作业程序经常用的数据库用户、密码变量等。但是当环境变化后,有可能变量值会改动,如脚本路径。
  • 常量类:通常设定值后,就不能被更改了。比如一些名称标识等。

是否加密

流程变量可能会涉及到一些系统的敏感信息,比如:用户密码,为了信息的安全性,TASKCTL 调度对变量增加的是否加密属性,对于加密的变量值,用户是不可见的。

在流程总控文件中,该属性 Y 代表加密;N 代表不加密。

关于变量应用范围

TASKCTL 的一个流程除了使用自身定义的私有变量以外,流程还可以使用工程变量(v7.0+)和平台常量。

与私有变量主要区别在于变量应用范围不同:

  1. 私有变量:只能应用于流程自身。
  2. 工程变量:可以应用工程下的所有流程
  3. 平台常量:应用于整个平台下的所有流程

流程模块代码

模块是流程核心信息的基本组织单位,其信息既是通过 XML 语言进行描述,同时,以 XML 语言描述的模块文本又是直接面向客户设计应用,因此,TASKCTL 为了信息组织更灵活、更简单、更易懂,借鉴了相关程序语言的设计思想,使模块信息即有一定的规则,又有一定的语法特征。

代码关键字

模块代码采用 XML 描述时,会涉及到很多 XML 标签关键字,用户对这些 XML 标签的了解,是流程模块代码设计的基本条件。

模块代码关键字如下表所示:

​上表列举了模块代码各种 XML 标签。标签主要分节点标签与节点属性标签两大类,节点标签又分组节点与作业节点,作业节点又分缺省作业与自定义作业, 所有这些类型标签分类结构如下图所示:

​节点属性标签

节点属性标签主要用于描述 TASKCTL 流程中各种节点,比如基本属性以及一些控制属性。在实际应用中,各种属性对不同节点的有效性不一致,比如程序属性对组节点无效。

组节点标签

组节点属于流程节点,主要包括串行节点与并行节点,是流程的基本控制节点。

系统缺省作业标签

系统缺省作业属于作业节点,是 TASKCTL 流程节点树状关系模型中的叶节点,代表一个作业,只是这种作业属于 TASKCTL 中内置逻辑作业,它们分别通过固定标签 flow、include、nulljob、begin、end 来表示。

自定义作业类型标签

自定义作业指 ETL 中用户开发的各种作业,比如:shell、datastage 类作业等。对此类作业标签关键字是由用户自定义确定。比如,对于 shell 脚本作业,我们既可以用’sh’表示,也可以用’shell’来表示。在实际应用中,自定义作业类型标签是通过管理平台定义的,TASKCTL 为了方便用户,也预设了一些常用自定义作业,如:ftpget、filewatch、selfmsg 等作业。

模块代码基本特征

模块代码是流程核心信息基本单位,它主要具备以下特征:

固定基本结构

为了统一模块的格式以及一些技术控制,TASKCTL 对模块采用统一的固定基本结构。

该固定结构为:1、根节点始终为串行节点;2、二级节点第一个节点始终为开始节点;二级节点最后一个节点始终为结束节点。如下图所示:

这种不变的结构在代码中体现为:

​属性继承与缺省

模块代码设计时,我们会设计大量的串并节点与作业节点,而每个节点都会存在很多属性,为了设计方便与代码简洁,TASKCTL 基于流程节点特殊的树状特征,引入了各种节点的属性继承与缺省机制。

  • 属性继承:属性继承指下级节点继承上级节点的属性。下级节点只要不显示定义相关属性,下级节点自动继承上级节点的属性。
  • 属性缺省:属性缺省指节点未显示定义某属性,又不能有效继承时,采用系统属性缺省值。

在实际应用中,对于继承与缺省我们必须要注意以下几点:

1.继承与缺省优先级问题

在模块节点树中,继承的优先级比缺省高。当一个节点上级节点相关属性不是缺省值,且下级节点没显示定义时,首先是继承,其次才是采用缺省值。

2.不是所有属性都存在继承与缺省特征

一个流程作业或组节点属性较多,但并不是所有属性都具有继承与缺省特征, 比如:节点 name 属性,该属性即不能继承也无缺省,用户必须显示定义;对于属性继承、缺省与具体属性关系如下表所示:

继承的有效范围

子级模块能继承父级模块的属性,子流程不能继承父级流程的属性

变量

变量是流程模块代码的基本特征,它与传统程序设计中的变量概念有一定区别,TASKCTL 中流程变量的本质是宏替换,目的是为了增加流程代码设计的可移植性与可维护性。

以下是一个变量应用实例:

变量定义

对于流程变量的定义,变量不在模块代码中定义,而是在流程总控文件中定义

变量使用

​在模块代码中我们用特殊格式表示变量,即用’$’加括号的方式表达,如下所示:

在整个模块代码设计中,变量并不是应用于所有属性,让所有属性均能实现宏替换,能够使用变量的属性主要包括以下五种属性:

  • progname:程序名称
  • prevshell:前置脚本
  • nextshell:后置脚本
  • para:作业程序运行参数
  • exppara:作业程序运行环境参数
  • agentid:作业程序代理节点名称
  • hostuser:远程执行用户
  • condition:自定义控制策略
  • ignoreerr:错误忽略条件
  • splitcount:分片作业个数
  • cyclebreak:循环中断条件

流程缺省变量

模块代码除了可以使用自身私有变量以及平台常量以外,还可以使用系统缺省变量。

缺省变量主要包括:

  • cycle:当前循环值,循环值从 1 开始;
  • ctlid:流程 ID,在实际应用中,调度平台会自动给每个流程分配一个 ID 号;
  • renum:重做次数,对于一些错误作业,平台会不断重调,第一次运行前为 0,第一次运行完后为 1,当错误后第二次运行前为 1,当错误后第二次运行该值为 2,以此类推;

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 变量信息
    • 变量名称
      • 变量值
      • 变量类型
      • 关于变量应用范围
      • 流程模块代码
      • 代码关键字
      • ​节点属性标签
        • 模块代码基本特征
          • ​属性继承与缺省
            • 变量
              • 流程缺省变量
              领券
              问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档