ODI 12.2.1变量未在Jython过程中动态设置值

时间:2016-11-03 09:41:18

标签: oracle variables jython oracle12c oracle-data-integrator

我们在Jython脚本中设置ODI变量时遇到了问题。对以下问题的任何帮助都很棒。

问题陈述:我们必须从当前的操作系统获取操作系统名称,并且基于操作系统,我们必须执行ODIOSCommand(Linux或Windows)。

但是我们无法在变量中设置操作系统名称(即使用Jython变量OR ODI变量)。它似乎只取第一个值(默认值)而不是动态设置值。

问题: - 我们无法通过jython脚本设置ODI变量并获得动态值。

我们正在尝试通过Jython脚本设置ODI变量,此变量值用于运行ODIOS命令以在相应的操作系统上创建文本文件。

请在下面找到详细信息。 •创建运行jython脚本的过程。 •运行命令“os.get_os_type()”并获取操作系统类型。 •如果操作系统类型为Windows或NT,则将ODI变量(#IsWindows)设置为“是”。 •如果操作系统类型为Linux,则将ODI变量(#IsWindows)设置为“NO”。 •如果值为YES,则评估ODI变量(#IsWindows)然后运行windows命令创建文本文件,否则运行Linux命令在Linux机器上创建文本文件。

11g版本中的现有代码: -

导入os

如果os.get_os_type()==' nt':

 cmd = 'dir "#ProcessingFolder*.xml" /s /b /a:-d > "#CurrFileName"'

使用os.system(CMD)

其他:

 os.system("ls -d #ProcessingFolder*.[x,X][m,M][l,L] > #CurrFileName")

在jython代码下面,我们试图在ODI 12.2.1中设置ODI变量,因为上面的代码在ODI 12.2.1中没有工作: -

导入os

如果os.get_os_type()==' nt':

POG_IMPORT_3.IsWindows ='是'

其他:

#POG_IMPORT_3.IsWindows ='否'

执行上述程序后,我们使用“刷新”变量来获取变量中的最新值,即SELECT' #IsWindows'来自双重。

并评估变量以检查它是否为“是”或“否”。

但"#IsWindows"变量未设置/保持在运行时设置的值。

注意:这是一个从11.1.1.7迁移到12.2.1的项目,我们是第一次在12.2.1中创建变量。

在12.2.1版本中,12.2.1变量创建/使用是否不同?

有关如何将运行时值存储到ODI变量的任何提示都非常有用吗?

1 个答案:

答案 0 :(得分:1)

我发现变量是强烈的类型。这意味着如果你的变量#isWindows应该以"#BIAPPS.IsWindows"为前缀。这在11g中没有发生,但12c需要所有权,所以不要输入变量,而是从存储局部变量的下面的窗格中使用它。