0

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

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

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

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

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

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

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

导入操作系统

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

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

操作系统(cmd)

别的:

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

在 jython 代码下面,我们尝试在 ODI 12.2.1 中设置 ODI 变量,因为上面的代码在 ODI 12.2.1 中不起作用:-

导入操作系统

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

POG_IMPORT_3.IsWindows = '是'

别的:

#POG_IMPORT_3.IsWindows='否'

一旦执行上述过程,我们将使用“刷新”变量来获取变量中的最新值,即 SELECT '#IsWindows' FROM DUAL。

并评估变量以检查它是否具有“YES”或“NO”。

但是“#IsWindows”变量没有设置/保存在运行时设置的值。

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

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

关于如何将运行时值存储到 ODI 变量的任何提示非常有帮助?

4

1 回答 1

1

我发现变量是强类型的。这意味着如果您的变量#isWindows 应作为“#BIAPPS.IsWindows”的前缀。这在 11g 中没有发生,但 12c 需要所有权,因此不要键入变量,而是从存储局部变量的下方窗格中使用它。

于 2017-05-31T16:38:35.503 回答