Уведомления

Группа в Telegram: @pythonsu

#1 Окт. 22, 2021 09:21:17

orel_da
Зарегистрирован: 2021-08-24
Сообщения: 17
Репутация: +  0  -
Профиль   Отправить e-mail  

NameError: global name 'fdmAPI' is not defined


Сначала опишу ситуацию. Я пишу скрипты в 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)

Офлайн

#2 Окт. 22, 2021 09:24:13

orel_da
Зарегистрирован: 2021-08-24
Сообщения: 17
Репутация: +  0  -
Профиль   Отправить e-mail  

NameError: global name 'fdmAPI' is not defined

решение я нашла, добавила в список переменных. Но почему так работает? Может кто подстажет?

 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

Офлайн

#3 Окт. 22, 2021 09:47:49

xam1816
Зарегистрирован: 2020-05-11
Сообщения: 1395
Репутация: +  124  -
Профиль   Отправить e-mail  

NameError: global name 'fdmAPI' is not defined

  from datetime import datetime
fdmAPI.logInfo('Begin custom script')
А fdmAPI откуда появился? в примере он просто нарисовался из воздуха

Офлайн

#4 Окт. 22, 2021 09:49:51

orel_da
Зарегистрирован: 2021-08-24
Сообщения: 17
Репутация: +  0  -
Профиль   Отправить e-mail  

NameError: global name 'fdmAPI' is not defined

xam1816
А fdmAPI откуда появился? в примере он просто нарисовался из воздуха
так и есть. Запускаю правило, fdmAPI создает само приложение, код этот скрыт от меня. Это глобальный объект. Я могу им пользоваться у себя в скриптах.

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version