我们面临在 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 变量的任何提示非常有帮助?