模块信息组织思路

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

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 属性来实现个性化的批次命名规则。

比如:可以跟业务逻辑日期变量进行关联:

<ctlbatch>核心系统第 $(work_date)批次流程</ctlbatch>

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

模块信息

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

模块名称

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

  1. 唯一性:一个流程内,模块名称是唯一的,不能重复
  2. 长度:模块名称长度不能超过 30 个字符
  3. 输入限制:名称不能数字开头,不能包含特殊字符,如:!@|#*...等。

模块描述

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

  • 长度:名称长度不能超过 100 个字符
  • 输入限制:不能包含特殊字符,如:!@|#*...等

ETL自动化运维调度管理工具 TASKCTL 流程文件系统相关推荐

  1. 【国产】大数据自动化运维调度工具TASKCTL流程触发方式

    关于TASKCTL TASKCTL是塔斯克信息技术有限公司,专为数据仓库批量调度自动化打造的一款[国产免费]企业级调度管理监控平台:该平台拥有完善的体系.全面的功能.简易的操作和超前的设计风格,使产品 ...

  2. 自动化运维批量管理saltstack

    让运维的日常工作--实现自动化 0)需求分析 1)机房设备上下架 2)系统初始化 3)应用环境初始化 4)应用部署 调试 配置 5)代码的发布 6)服务监控  应用   系统监控 7)数据备份 Sat ...

  3. 运维批量管理工具-clustershell

    ClusterShell 轻量级集群管理工具,它是基于ssh和scp命令进行封装.而其中最常用的就是Clush命令. Clush是一个非常方便的集群管理命令,通过它可以批量管理多台服务器执行相同的命令 ...

  4. Python自动化运维——系统进程管理模块

    模块:psutil psutil是一个跨平台库,可以很轻松的为我们实现获取系统运行的进程和资源利用率等信息. 功能:主要是为了系统监控 安装: 学习python中有什么不懂的地方,小编这里推荐加小编的 ...

  5. CrazyWing:Python自动化运维开发实战 六、流程控制

    Python 条件语句 Python条件语句是通过一条或多条语句的执行结果(True或者False)来决定执行的代码块. Python程序语言指定任何非0和非空(null)值为true,0 或者 nu ...

  6. 构建自动化运维平台:PAS工具和方法

    目    录 01 PAS运维基本介绍‍‍ 02 PAS自动化运维的工具和方法‍‍‍‍‍‍ 03 自动化运维实施总结 尽管微服务平台逐渐成为互联网技术发展的主流,很多企业也已经转向微服务来构建自己的业 ...

  7. 一个颜值低但脾气超好的自动化运维实战入门教程

    注:本教程由廖高祥发布于实验楼,版权归原作者所有. 什么是自动化运维? 自动化运维是指将IT运维中日常的.大量的重复性工作自动化,把过去的手工执行转为自动化操作.自动化运维不单纯是一个维护过程,更是一 ...

  8. 自动化运维时代,我们该如何是好?

    关注嘉为科技,获取运维新知 写这篇文章的时候,时间是2018年10月31日,还有两个月就将步入2019年,想一想,都很激动呢. 这个时间点跟我们今天要谈论的主题有啥关系吗? 并没有. 只是单纯感慨下时 ...

  9. Linux-Ansible自动化运维

    一,Ansible介绍 一.Ansible是什么? Ansible是最近几年越来越火的一款开源运维自动化工具,通过ansible可以实现运维自动化,提高运维工程师的工作效率,减少人为的失误! 二.An ...

最新文章

  1. Gradle 使用技巧(四) - 如何定位和解决依赖冲突
  2. 【 Vivado 】在工程模式下通过jou文件来学习 Tcl 命令
  3. 在.NET中使用脚本引擎
  4. java 注解 long转date_Spring data jpa时间注解
  5. python update_python 字典中的Update()函数
  6. Jupiter黑客松——IPFS开发者大赛火热报名中!
  7. mysqldump: Got error: 1449
  8. 扩展WCF的消息分发行为
  9. LeetCode 40. 组合总和 II(排列组合 回溯)
  10. unexpected error ConnectionError object has no attribute
  11. mysql pdo 获取最后一条sql_一条sql语句的执行过程-mysql
  12. 徐州计算机专业技校,2021徐州所有的中专技校职高排名
  13. oracle 安装包_【Oracle监控】-Spotlight On Oracle安装和使用
  14. DjangoBook2.0 中文版:电子书
  15. 开源dns软件PowerDNS BIND9 mydns
  16. ibm x60 学习linux,IBM X60 T60系列安装系统时SATA设置问题
  17. 中职计算机教学工作随笔,教师随笔日记(精选6篇)
  18. 微信公众账号分为哪几类?区别是什么
  19. 用linux设计应用程序,ARM设计的uClinux及其应用
  20. 硬件开发——语音模块开发 (包含语音识别模块代码等资料包 )

热门文章

  1. 【Charles】小米手机安装证书问题
  2. 【C语言-函数的声明与定义】
  3. 设计师选择自由职业好还是全职工作好
  4. linux系统中设置acl的命令,Linux的ACL配置
  5. 患上视神经萎缩,需要针对不同病因进行治疗!
  6. verilog中有符号数和无符号数的相关运算
  7. 腾讯云AMD云服务器使用体验?
  8. keepalived高可用mysql一:判断服务并vip
  9. 学python软件开发要多久_python软件开发好学吗
  10. 游程检验 matlab,游程检验(matlab专题)