ETL任务调度-运维自动化-数据仓库工具 TASKCTL 流程文件设计

130 阅读7分钟

模块信息组织思路

模块作为流程核心信息的基本组织单位,同时也是用户开发设计流程的主要对象。为了更好地设计流程,首先需要深入理解模块信息的组织思路。

TASKCTL 流程以模块为单位的流程核心信息组织思路是有别传统的思路,是一种创新的思路。以下我们以与传统思路比较的方式对该思路进行描述。

传统设计思路

在调度业界,流程核心信息主要组织思路为:将作业节点化,并将作业控制策略属性化,其中依赖关系、并行关系是最主要的控制策略内容。

关系表达图形思路在 ETL 调度界,流程图主要根据流程作业节点以及节点关系进行表达。图形表达如下:

由图可知,该图简洁且直观描述了各作业的依赖关系与并行关系。

数据表达思路

面向用户的设计方案

传统设计思路比较简洁直观,每个节点之间相对独立。在面向用户实施方面, 主要是对每个作业节点直接以记录方式描述。

具体实施手段,主要是图形拖拽以及节点表单方式描述。比如:Control-M 的作业对话框描述以及 Excel 方式描述。

TASKCTL 设计思路

关系表达图形思路

TASKCTL 设计思路与传统设计思路相比,共同点是将作业节点化,而不同点是对主要控制策略信息依赖并行关系表达方式的不同,TASKCTL 未采用对依赖以简单节点属性方式描述,而是站在整个流程的角度,采用串并节点方式进行结构化描述。

该方式相对传统方式有一定的抽象。

表达思路如下图所示:

该方式与传统方式相比,主要是增加了串并节点的思想,作业之间的运行关系不是主要通过依赖属性确定,而是通过上级组节点的串并属性决定。

数据表达思路

面向用户的设计方案 由 TASKCTL 结构化示意图得知,流程整个组织思路结构化特征非常明显, 其结构是具有唯一根节点的标准树结构。

为此,TASKCTL 在流程核心信息组织时,直接采用面向用户并以 XML 语言为载体的文本进行描述。

以下是对前面 TASKCTL 结构化示意图的 XML 描述:

由以上信息可以简单看出,流程的模块信息是通过 XML 语言对图形直接描述,该信息具有明显的结构特征。由于是以文本的方式组织,使信息更为扁平化, 更易编辑。

实际 TASKCTL 方案中,为了使流程设计更容易、更简单,TASKCTL 提供了专业的流程集成设计开发环境,在该开发环境中,用户既可以通过文本代码方式设计,又可以图形拖拽方式设计。

设计思路总结

从设计思路的角度,传统方式比 TASKCTL 思路简单,更容易让人理解, TASKCTL 组织思路相对有一定的抽象,但由于采用了一定结构化特征,在面对大量作业面前,该思路在理解的基础上,使用会更灵活、更快捷方便,完成同样调度设计,信息总量也相对较少。

流程总控文件

流程总控文件是通过 XML 语言描述的流程概述总控信息文件。该文件与模块文件不一样,不直接面向用户,其信息主要通过相应的流程设计工具软件中相关命令与界面操作完成。

虽然流程总控文件不直接面向用户,但对该文件的具体了解,不仅可以加深对整个流程的理解,同时也会对流程具体设计带来更大的帮助。

另外,在TASKCTL 的发展计划中,今后该文件会公开且直接面向用户,使用户可以对该文件直接进行编辑设计,从而增加设计的灵活性。 一份简单的流程总控文件例子

通过以上范例得知,流程总控信息主要由三部分构成,它们包括:流程基本信息、模块信息、流程变量信息等。

XML 关键字

流程总控文件 XML 标签关键字如下:

流程基本信息

流程基本信息主要包括:流程名称、流程描述、启动模块、流程最大作业并行度、是否为子流程等信息构成。

flowname-流程名称

流程名称是调度平台对流程的关键索引信息,使用时注意以下几点:

  1. **唯一性:**流程名称相对调度服务器是唯一的,不能重复

  2. **长度:**流程名称长度不能超过 20 个字符

  3. **输入限制:**名称不能数字开头,不能包含特殊字符,如:!@|#*...等。

desc-流程描述

流程描述指流程的说明信息,该信息可以由任意字符组合。另外,流程描述虽然不是必输项,但通过客户端工具具体应用时,该信息具有特殊的展示意义。

  • **长度:**名称长度不能超过 100 个字符

  • **输入限制:**不能包含特殊字符,如:!@|#*...等。

startmodul-启动模块

一个流程可能由多个模块组成,用户必须指定启动模块,以表示流程的调度运行入口。这与一个程序必须定义主函数类似。 

在 TASKCTL 平台中,启动模块即为流程主模块。

issubflow 是否为子流程

子流程是 TASKCTL 调度平台重要概念,它从信息内容上与普通流程没区别。唯一区别是:子流程能被其他普通流程调用。

**TASKCTL 引入子流程概念的主要目的:**一方面与模块一样,是为了有效结构化管理流程信息,另一方面,是为了达到更佳的调度控制效果。

**子流程与模块本质区别在于:**模块是流程的组成部分,而子流程不是调用流程的组成部分;子流程有自己独立的私有变量空间,而模块与调用流程具有同样的变量空间。

该区别就像实际程序一样,模块类似程序内部的一个类,而子流程是一个独立程序,可以通过其它程序调用。

对于子流程的具体应用意义,在本文相关章节会有具体举例说明。在流程总控文件中,该属性 Y 代表子流程;N 代表普通流程。

ctlbatch 业务批次规则

流程从头到尾运行一次,称之为一个批次。通过设定流程批次命名规则,以便于更好的理解和划分业务流程的逻辑运行批次。

在 TASKCTL 中,可以利用流程的 ctlbatch 属性来实现个性化的批次命名规则。**比如:**可以跟业务逻辑日期变量进行关联:

核心系统第$(work_date)批次流程

通过以上批次规则,可以直观的在运行数据信息中进行展示:“核心系统第20200701 批次流程”

模块信息

在总控信息中,模块信息主要列举流程的所有模块概要信息,内容主要包括: 模块名称、模块描述。

模块名称

模块名称是一个流程内模块的关键索引信息,使用时注意以下几点:

  1. **唯一性:**一个流程内,模块名称是唯一的,不能重复

  2. **长度:**模块名称长度不能超过 30 个字符

  3. **输入限制:**名称不能数字开头,不能包含特殊字符,如:!@|#*...等。

模块描述

模块描述指模块的说明信息,该信息可以由任意字符组合。另外,模块描述虽然不是必输项,但通过客户端工具具体应用时,该信息具有特殊的展示意义。

  • **长度:**名称长度不能超过 100 个字符

  • **输入限制:**不能包含特殊字符,如:!@|#*...等。

产品官网:www.taskctl.com