2016-11-03 3 views
0

Мы сталкиваемся с проблемой с установкой переменной ODI в сценарии Jython. Любая помощь по нижеследующей проблеме замечательна.Переменная ODI 12.2.1, не устанавливающая динамически динамически в процедуре 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() == 'нт':

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 переменную в ODI 12.2.1, потому что выше код не workign в ODI 12.2.1: -

импорт ОС

если os.get_os_type() == «нт «:

POG_IMPORT_3.IsWindows = 'ДА'

еще:

# POG_IMPORT_3.IsWindows = 'NO'

После того, как выше процедура выполняется, Вт e используют переменную «Обновить», чтобы получить последнее значение в переменной i.e. SELECT '#IsWindows' FROM DUAL.

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

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

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

Является ли 12.2.1 переменной создания/использования в версии 12.2.1?

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

ответ

1

Я обнаружил, что переменные STRONGLY TYPED. Это означает, что если ваша переменная #isWindows должна быть префиксной как «# BIAPPS.IsWindows». Это не произошло в 11g, но 12c требует владения, поэтому не вводите переменную в нее, а используйте ее на панели ниже, где хранятся локальные переменные.

Смежные вопросы