批处理变量设置- 调度任务管理-调度与订阅
目录

批处理变量设置

批处理变量的作用

批处理变量是在调度任务中设置的一种特殊变量。

批处理变量可以传递给报表对报表数据进行处理,也可以直接在调度任务中使用,更灵活的控制调度任务的执行:

批处理变量可以是固定值也可以是根据表达式计算得出动态值,亦可以是能被调度任务循环遍历的一组值。

批处理变量值的个数决定了任务在一次执行时会产生的实例数。

应用场景-报表中使用批处理变量

很多时候,报表中的某些内容希望在调度任务执行的时候动态获取。

这时候就可以在批处理变量中定义变量。在调度任务的执行过程中,报表可以动态获取变量值。

示例1

例如在调度任务中,需要在推送的报表中显示当前任务执行时的时间:

通过以上设置,在调度任务执行时推送的报表结果的A1单元格的值就是当前时间。

示例2

例如调度任务需输出多个报表结果,含参数的报表使用批处理变量进行参数遍历。 

报表参数的循环遍历,执行调度任务可能生成多个调度实例,每个实例运算报表时报表接受到的报表参数值都是不一样的,参数值根据批处理变量的集合结果逐一遍历:

  • Step1:报表设计:地区销售情况统计报表,报表中还有参数area(地区),传递不同的area值,返回不同地区销售情况统计结果。
  • Step2:新建调度任务时,批处理设置添加批处理变量,变量名称areas,取值方式为“表达式”,表达式为list("东北","西北","华北","东南")。
  • Step3:调度任务选择任务处理对象为地区销售情况统计报表,并通过“设置条件和参数”绑定报表中参数“area”和批处理变量“areas”的关系。

通过以上设置,在调度任务执行时就会根据批处理变量多个值的结果,分别得出东北,西北,华北,东南多个地区的销售情况统计结果,生成多个实例。

注意:如果报表中的参数名称和批处理变量中的名称一致,无需进行参数和批处理变量的绑定,报表参数会自动读批处理变量中的同名变量值。

应用场景-调度任务中使用批处理变量

例如在推送报表的过程中,报表的推送路径或者报表的名称需要根据情况进行不同的设置。

这种情况下就可以在批处理变量设置中设置好变量,在推送路径和命名调度对象的时候调用。

示例1

例如希望根据任务执行的年月日,将调度对象推送到FTP服务器不同的路径:

  • Step1:在批处理变量设置处添加3个变量,变量名称分别为year、monthday,变量值分别为year(now())、month(now())、day(now())
  • Step2:在任务输出设置中输出FTP设置中FTP目录地址中输入/@year/@month/@day

这样调度任务执行时,报表结果推送到FTP服务器下“年月日”对应目录下。

批处理变量的定义

批处理变量的定义界面如下:

变量名

如果该变量的计算结果要传给报表,那么,变量名称必须与报表对应的参数名称一致。

调度管理其他支持变量的定义项中,均可使用这里定义的变量,调用时,变量名称前加@。

例如:定义一个变量为temp,在“输出ftp设置”的“ftp目录地址”中使用,那么在该文本框输入@temp以调用temp变量。如下图:

取值方式

共分为4种取值方式:

  • 常量:一个确定的值。参数值可输入具体的值(如:数值、字符串等)。
  • SQL:可定义一个可执行的sql语句,调度任务执行时相应计算出结果。SQL语句输入在“SQL”中。
  • 表达式:可定义一个表达式,调度任务在执行时根据表达式计算出变量值。在“表达式”中输入表达式。例如: now()返回系统时间;
    list(user1,user2)返回包括两个用户名user1,user2的数组。
  • 自定义类:可定义一个由用户自己的程序作为变量来源。“自定义类”可定义一个完整的类路径,用于计算变量的值。如:com.runqianapp.schedule.argument.ArgumentTest。详见:调度功能客户化 -> 参数相关API

多个调度对象的变量

当一个任务设置了多个调度对象时,这些调度对象需要使用的变量均在批处理变量设置中进行设置。调度对象根据变量名进行引用。

特别地,批处理变量可以被多个调度对象共用。在不同调度对象中只需要引用同名变量即可。 

调度任务的执行遍历

批处理变量的运算结果可能是包含多个值的集合结果,例如批处理变量类型为表达式、SQL或者自定义时,其返回值均可能为多个值。

调度引擎在执行调度任务时会遍历批处理变量的值,并生成多个任务实例。

任务中如果设置了多个批处理变量(返回值均为多值集合),调度引擎执行时遍历他们的组合结果。

比如设置了批处理变量a3个值集合)和b5个值集合),调度引擎遍历后生成的实例个数为3*5a的个数*b的个数)。

特殊的:提供组合式批处理变量定义,在使用sql取值或者自定义类取值定义批处理变量时可以一次定义多个变量,多个变量名称用英文逗号“,”分割,SQL语句和自定义类返回列和变量依次对应。这种批处理变量主要用于顺次每次遍历都要传入一组变量值的情况。比如idname是两个元素组成的数组,每次遍历都传递一个数组给调度引擎进行任务处理,其中传递id给报表参数,传递name给邮件标题。调度引擎仅会按照返回的数组个数进行遍历,不再按照多个单独的批处理变量组合遍历。

遍历执行的应用示例

1、定义批处理变量如下:

  • 变量名为: id,name
  • sql 语句为: select DEMO_EMPLOYEE. 雇员 ID,DEMO_EMPLOYEE. 销售人员 from DEMO_EMPLOYEE
  • 批处理变量 id 对应 sql 执行后的雇员 ID 列的查询结果,批处理变量 name 对应 sql 执行后的销售人员列的查询结果

2、调度任务选择任务处理对象为工资条,并通过“设置条件和参数”绑定报表中参数“empid”和批处理变量“id”的关系。

3、在输出设置中选择邮件推送,并设置邮件标题为@name工资条

通过以上设置,在调度任务执行时就会根据批处理变量多组值的结果,分别计算出员工的工资条,并按照指定的邮件标题“员工姓名+工资条”推送邮件给员工。