Python интерактивная оболочка в Maximo? - PullRequest
0 голосов
/ 12 февраля 2020

В Maximo 7.6.1.1 есть ли способ выполнять скрипты Python / Jython по требованию?


Например, в других программах, таких как ArcGIS Desktop, в приложении есть окно под названием Окно Python:

enter image description here

В окне ArcGIS python я могу написать любой скрипт, какой захочу.

  • Например, я могу написать скрипт, который просматривает записи в таблице и обновляет значения на основе определенных критериев. И я могу выполнить его по требованию.

Есть ли способ сделать эквивалент в Maximo? Может быть в Eclipse?

Ответы [ 2 ]

2 голосов
/ 12 февраля 2020

Вы можете выполнить скрипт - даже без точки запуска - из любого класса Java (в пределах maximo), используя этот фрагмент кода:

ScriptDriverFactory.getInstance().getScriptDriver(ScriptName).runScript(ScriptName, Context);

..., где Context является hashmap для всех переменных, которые могут понадобиться в скрипте.

2 голосов
/ 12 февраля 2020

Это не поддерживается, но вы можете создать и предоставить себе опцию EXECUTE sig в ​​приложении autoscript. Это активирует действие «Выполнить», позволяя вам выполнять скрипт по требованию. Однако, поскольку ни одна точка запуска не использовалась для предоставления контекста, неявные переменные и другой контекст, к которому вы можете привыкнуть, будут недоступны.

«Автоскрипт по требованию» - это то, что я называю сценарием, который я разрабатываю с намерение быть выполненным из этого действия Выполнить. Я написал сценарии по требованию для выполнения таких операций, как повторная синхронизация вложенных рабочих процессов или подготовка наших данных для обновления. Скрипты по требованию, хотя и создаются таким же образом, отличаются от того, что в документации 7.6 называется «Библиотечные скрипты» тем, что, хотя скрипты библиотеки (не обязательно) вызываются из своих собственных точек запуска, скрипт, который их вызывает, обычно обеспечивает некоторые контекстные / неявные переменные.

Автоскрипт по требованию обычно выглядит примерно так, с которым вы можете ознакомиться в документации по JavaDocs Maximo API.

from psdi.server import MXServer
server = MXServer.getMXServer()
security = server.lookup("SECURITY")
userInfo = security.getSystemUserInfo()

mboSet = server.getMboSet("SOMEOBJECT", userInfo)
try:
    mboSet.setWhere("somecol = 'somevalue'")
    mbo = mboSet.moveFirst()
    while mbo:
        print "do something with mbo %s: %s" % (
            mbo.getUniqueIdentifer(), mbo.getString("DESCRIPTION"))

        mbo = mboSet.moveNext()

    if "applicable":
        mboSet.save()

finally:
    if not mboSet.isClosed():
        mboSet.close()

Из приведенного выше следует, что Я хочу сказать, что вы можете легко «написать скрипт, который просматривает записи в таблице и обновляет значения на основе определенных критериев. И я могу выполнить его по требованию».

...