浅谈BuildForge中的环境变量的继承关系

来源:互联网 发布:蒙古骑兵为什么知乎 编辑:程序博客网 时间:2024/05/20 14:15

作者:陈弘

 

在BuildForge中,运行时的一系列变量就组成了环境。一旦被定义,环境变量可用于以下用途:

  • 1. 在任务的步骤中使用
  • 2. 在计划的任务中使用
  • 3. 在适配器中使用

环境变量的分类和基本继承原则

按照环境变量作用的范围,可以分为服务器变量,项目变量,步骤变量三种类型。

 

环境变量能被赋予服务器,项目和任务中的步骤,在任务执行过程中,一个被执行的步骤能从这三种变量中依次得到赋值,变量之间的继承关系的基本原则为:

1. 服务器变量:服务器变量在任务执行时被拷贝到步骤变量中。

2. 项目变量:项目变量被应用到步骤变量中,如果在项目变量和服务器变量中有同名变量,那么变量的最终值将根据变量定义时的动作来决定。

3. 步骤变量:如果在步骤变量中有和服务器变量,项目变量同名的变量,那么变量的最终值将根据变量定义时的动作来决定。

 

下面举例来说明这种继承原则:

例 1:

服务器变量: X = 1, action: Set

项目变量: X = 100, action: Set

步骤变量: X = 3, action: Set

任务步骤执行中的最终赋值结果: X = 3

变量X先是被赋值1,然后是100,然后是3,最终的赋值结果是3。

例 2:

服务器变量: Y = 1, action: Set

项目变量: Y = 100, action: Set

步骤变量: Y = 3, action: Set if Not Set

任务步骤执行中的最终赋值结果: x = 100

变量Y先是被赋值1,然后是100,由于Y的变量动作在步骤变量定义中为Set if Not Set,而现在Y已经有了值100,所以步骤变量中的值将不会被赋给Y,项目变量的值100被继承了下来。

环境变量继承中的特殊用法

除了上述的基本原则,变量的继承还在某些情况下遵循一些特殊的原则。

  • 1. 内嵌项目 (inline projects)

在一个任务步骤中可以内嵌调用另外一个项目,在这种情况下,被调用的项目的服务器变量和项目变量将不会起作用。在这种情况下,变量继承的顺序为:

正在执行的任务步骤的服务器变量 -> 正在执行的任务步骤的项目变量 ->正在执行的任务步骤的步骤变量 -> 被调用的项目的任务步骤变量

  • 2. 链接项目 (chained projects)

我们可以在一个项目或者步骤中指定某个项目为成功链接或失败链接。在这种情况下,被链接的项目将使用自己的变量(服务器,项目和步骤变量),它也能访问所有调用它的项目或步骤的变量,但对这些变量,将会加以前缀BF_CALLER_来区别。

  • 3. 计划项目 (scheduled projects)

如果一个项目被预定在某个时间来执行,那么我们可以为这个项目指定不同于缺省变量的其他变量。这些被指定的新变量也同样遵循我们的基本继承原则。

  • 4. 最高继承顺序 (Overriding inheritance order)

如果系统定义Apply server environment last被赋值为Yes,那么继承顺序为:

项目变量 -> 步骤变量 -> 服务器变量

 

结束语

弄清楚了这些环境变量中的继承关系,就能在 BuildForge中灵活正确的使用各种环境变量来实现自己的应用。