Переменная ODI 12.2.1 не устанавливает значение динамически в процедуре Jython

Мы столкнулись с проблемой установки переменной ODI в скрипте Jython. Любая помощь по приведенной ниже проблеме великолепна.

Постановка проблемы: мы должны получить имя ОС из текущей операционной системы и, в зависимости от операционной системы, мы должны выполнить ODIOSCommand (Linux или Windows).

Но мы не можем установить имя ОС в переменной (т.е. используя переменную Jython ИЛИ переменную ODI). Кажется, что он принимает только первое значение (значение по умолчанию) и не устанавливает значение динамически.

Проблема: - Мы не можем установить переменную ODI через скрипт jython и получить динамическое значение.

Мы пытаемся установить переменную ODI через сценарий Jython, и это значение переменной используется для запуска команды ODIOS для создания текстового файла в соответствующей операционной системе.

Пожалуйста, ознакомьтесь с подробностями ниже. • Создайте процедуру для запуска скрипта jython. • Запустите команду «os.get_os_type()» и получите тип ОС. • Если тип ОС — Windows или NT, установите для переменной ODI (#IsWindows) значение «Да». • Если тип ОС — Linux, установите для переменной ODI (#IsWindows) значение «НЕТ». • Оцените переменную 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 в ODI 12.2.1, потому что приведенный выше код не работает в ODI 12.2.1: -

импорт ОС

если os.get_os_type() == 'nt':

POG_IMPORT_3.IsWindows = 'ДА'

еще:

#POG_IMPORT_3.IsWindows= 'НЕТ'

После выполнения описанной выше процедуры мы используем переменную «Обновить», чтобы получить последнее значение в переменной, т.е. ВЫБРАТЬ '#IsWindows' FROM DUAL.

И Оцените переменную, чтобы проверить, есть ли у нее «ДА» или «НЕТ».

Но переменная «#IsWindows» не устанавливает/удерживает значение, установленное во время выполнения.

Примечание. Это проект, который перенесен с 11.1.1.7 на 12.2.1, и мы впервые создаем переменную в 12.2.1.

Отличается ли создание/использование переменных 12.2.1 в версии 12.2.1?

Любая подсказка о том, как сохранить значение времени выполнения в переменной ODI, очень полезна?


person Pramod Kokane    schedule 03.11.2016    source источник


Ответы (1)


Я обнаружил, что переменные СИЛЬНО ТИПИРОВАНЫ. Это означает, что если ваша переменная #isWindows должна иметь префикс «#BIAPPS.IsWindows». Этого не происходило в 11g, но 12c требует владения, поэтому не вводите переменную, а используйте ее из нижней панели, где хранятся локальные переменные.

person James    schedule 31.05.2017