Maximo - Добавление элементов в CustomMboSet с помощью сценария

Можно ли добавить в CustomMboSet в Maximo с помощью сценариев? Я пишу настраиваемое приложение, используя настраиваемый объект под названием TIMESHEET. В рамках приложения я пишу сценарий (Jython), который должен динамически создавать MboSet (набор TIMESHEET). Код извлекает существующий CustomMboSet и пытается добавить к нему элементы. Он работает при использовании готового набора MboSet, но когда я пытаюсь запустить тот же код на настраиваемом MboSet, похоже, что он не работает. Ошибка не возникает, но код ниже проблемной строки не запускается.

Другими словами, это работает (LABTRANS - это готовый MBO):

myMboSet = mbo.getMboSet("LABTRANS")
newMbo = myMboSet.add()
# Set attributes on newMbo, everything is happy

Но это не так (TIMESHEET - это настраиваемый MBO):

myMboSet = mbo.getMboSet("TIMESHEET")
newMbo = myMboSet.add()
# Code does not execute after the above line

Кто-нибудь знает, почему я наблюдаю такое поведение? Неужели среда сценариев Maximo просто не поддерживает динамическое построение CustomMboSets? Любая помощь приветствуется. Спасибо.


person stevepoll    schedule 06.11.2014    source источник


Ответы (3)


Вы должны убедиться, что существует связь между Current MBO и Custom MBO в конфигурации базы данных, иначе это не сработает.

В качестве альтернативы вы можете использовать следующий код для создания нового mboSet на лету:

timeSheetMboSet = mxServer.getMboSet("TIMESHEET", userInfo)
person Andrew Timmins    schedule 11.11.2014
comment
Спасибо за ответ, Эндрю, и извиняюсь за поздний ответ. Я решил проблему. Оказалось, что это связано с одним из атрибутов настраиваемого объекта. Поскольку настраиваемый объект был создан на уровне организации, orgid был обязательным атрибутом. Выяснилось, что для атрибута orgid в качестве типа поиска указано значение «Нет». Изменение этого значения на любое другое (я выбрал подстановочный знак) позволило моему сценарию работать. Еще раз спасибо за вклад! - person stevepoll; 31.12.2014

mbo.getMboSet(RELATIONSHIPNAME).

LABTRANS и TIMESHEET должны быть именами отношений к объекту в автоматическом скрипте.

Если вы хотите получить / добавить записи в какой-либо объект, используйте

mxServer.getMboSet(OBJECTNAME, userInfo)
person Sri    schedule 02.05.2015

Еще немного объяснений. Вы можете создать свои собственные отношения из сценария автоматизации. Уловка состоит в том, чтобы убедиться, что он еще не существует. Вот почему я использую для себя знак доллара.

переменная = mbo.getMboSet (tempRelationshipName, Object, where clause)

previousPhaseSet = mbo.getMboSet("$wophasetranstemp1", "exitdate is null")
person theShadraq    schedule 13.10.2016