Найти - Пользователи
Полная версия: NameError: global name 'fdmAPI' is not defined
Начало » Python для новичков » NameError: global name 'fdmAPI' is not defined
1
orel_da

Сначала опишу ситуацию. Я пишу скрипты в web приложении на Jython. Эти скрипты как бы дополнение функционала самого приложения. В приложении есть глобальный объект fdmAPI, где он создается, я не знаю, но в своих скриптах я могу им пользоваться, например,
 fdmAPI.logInfo("Begin") #вывод сообщения в лог
fdmAPI.executeQuery('select * from aif_procecces where process_id = ?', [fdmContext['LOADID']]) 
#запрос информации из таблицы с передачей параметра
Работает так: в приложении есть ссылки с событиями, я нажимаю ссылку, открывается чистый лист, в нем пишу код. Потом запускаю правило, в процессе работы вызываются мои скрипты в определенным местах.
Вопрос:
Я описала функцию, в которой использую объект fdmAPI, но при выполнении выдает ошибку
NameError: global name ‘fdmAPI’ is not defined. Как исправить? Если код не выносить в функцию, то все работает.
 from datetime import datetime
fdmAPI.logInfo('Begin custom script')
proc_id = fdmContext['LOADID']
def updateStatus(entity_type, state, process_id):
    global fdmAPI  #убирала строку, та же ошибка
    querySt = "UPDATE AIF_PROCESS_DETAILS  SET STATUS = ? ,EXECUTION_END_TIME = ? WHERE PROCESS_ID = ? AND ENTITY_TYPE = ?"
    cnt = fdmAPI.executeDML(querySt, [state,datetime.now() , process_id, entity_type], True)
    return cnt
updateStatus('PROCESS_CUSTOM_SCRIPT', 'SUCCESS', proc_id)
orel_da
решение я нашла, добавила в список переменных. Но почему так работает? Может кто подстажет?
 def updateStatus(entity_type, state, process_id, datetime,fdmAPI):
    querySt = "UPDATE AIF_PROCESS_DETAILS  SET STATUS = ? ,EXECUTION_END_TIME = ? WHERE PROCESS_ID = ? AND ENTITY_TYPE = ?"
    cnt = fdmAPI.executeDML(querySt, [state,datetime.now() , process_id, entity_type], True)
    return cnt
xam1816
  from datetime import datetime
fdmAPI.logInfo('Begin custom script')
А fdmAPI откуда появился? в примере он просто нарисовался из воздуха
orel_da
xam1816
А fdmAPI откуда появился? в примере он просто нарисовался из воздуха
так и есть. Запускаю правило, fdmAPI создает само приложение, код этот скрыт от меня. Это глобальный объект. Я могу им пользоваться у себя в скриптах.
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB