Как получить доступ к списку Maximo, где предложение программно

В приложении WOTRACK для Maximo мне нужно найти какой-нибудь способ программного доступа к предложению where текущего оконного запроса. Ясно, что он существует где-то в Maximo, поскольку вы можете получить к нему доступ в пользовательском интерфейсе в разделе «Расширенный поиск» > «Где пункт». Мне нужно найти способ получить эту информацию программно и передать ее приложению, с которым я работаю.

В прошлом я придумал способ захвата этих данных, когда пользователь открывал окно предложения where в Maximo, а затем просто извлекал значение элемента textarea, содержащего предложение where. Я надеюсь найти какой-нибудь способ получить к нему доступ через Java-классы Maximo, чтобы пользователю не приходилось открывать это окно. Я просмотрел Javadocs от Maximo и вижу, что есть класс WhereClauseTextArea, который, как мне кажется, будет отвечать за создание текстовой области. Я хотел бы иметь возможность передавать идентификатор сеанса пользовательского интерфейса в классы Java Maximo и возвращать текущее предложение where для списка. Есть ли простой способ сделать это? Я хотел бы иметь возможность использовать JavaScript для доступа к этому из внешнего интерфейса, или Java для доступа к нему из серверной части Maximo, или сценарий автоматизации в крайнем случае.


person Jesse Williams    schedule 21.06.2019    source источник
comment
Этот связанный пост может представлять интерес: Новые классы и методы Java в версии 7.6.1.2?.   -  person User1973    schedule 08.05.2021


Ответы (2)


В Maximo 7.6.1.1/Jython мы можем использовать метод getWebClientSession():

wclause = service.webclientsession().getCurrentApp().getResultsBean().getMboSet().getUserAndQbeWhere() 

service.error("The WHERE clause is : ", wclause);
person User1973    schedule 21.10.2019
comment
Я удивлен, что IBM улучшает (или создает и использует) класс пакета psdi для этого вместо своего контекста службы или чего-то нового в пакете ibm. - person Dex; 22.10.2019
comment
Знаете ли вы, почему я получаю эту ошибку при попытке доступа к набору mbo: AttributeError: объект 'psdi.common.context.UIContext' не имеет атрибута 'getWebClientSession' - person Quinn; 22.04.2020
comment
@Quinn Вы можете попробовать задать об этом отдельный вопрос здесь или на страница сообщества Maximo. - person User1973; 22.04.2020
comment
Импорт UIContext не требуется, так как на UIContext никогда не ссылаются напрямую. - person Preacher; 28.08.2020
comment
@Проповедник Спасибо. Я удалил это из ответа. - person User1973; 28.08.2020

В Maximo имеется несколько различных источников предложений where (ограничения приложений, ограничения объектов, отношения, фильтры QBE (Query By Example), ограничения сайтов и т. д.). С помощью сценария автоматизации (Python или JavaScript) вы сможете получить то, что ищете, из mbo.getThisMboSet().getUserWhere(), .getUserAndQbeWhere() или .getWhere(). Как заметил комментатор, .getCompleteWhere() также может быть полезным.

Вы можете найти JavaDocs по этим методам psdi.mbo.MboSet или найти другие методы «получения предложения where», здесь.

person Preacher    schedule 21.06.2019
comment
В зависимости от того, какую часть предложения where он или она хочет и хочет собрать воедино, существует также .getAppWhere(). .getCompleteWhere() соберет все эти фрагменты/слои воедино, что, я полагаю, и есть то, что вы на самом деле видите в диалоговом окне поиска предложения where. - person Dex; 22.06.2019
comment
Я пробовал mbo.getThisMboSet.getUserWhere() и getUserAndQbeWhere(). getUserWhere дает мне пустую строку, а getUserAndQbeWhere дает мне предложение where, такое как (workorderid = 2), которое мне не нужно, поскольку оно относится только к этому единственному mbo. Мне нужно предложение where для всего окна списка. @Dex, я изучал ваше предложение, мне нужно получить доступ к WebClientSession, чтобы получить доступ к этим методам? Похоже, что они будут на одном из bean-компонентов в WebClientSession... Как я могу получить доступ к этим методам? - person Jesse Williams; 24.06.2019
comment
@Jesse Все эти методы (getUserWhere(), geUserAndQbeWhere(), getCompleteWhere() и т. д.) находятся в psdi.mbo.MboSet, экземпляр которого вы получаете из mbo.getThisMboSet() в своем скрипте автоматизации. Перейдите по ссылке на документацию, которую я предоставил в своем ответе, щелкните пакет psdi.mbo в верхнем левом фрейме, затем щелкните класс MboSet в нижнем левом фрейме, затем используйте свой браузер для поиска Where, чтобы найти все методы для получения различных части предложения Where, действующего для этого MboSet. - person Preacher; 24.06.2019
comment
Хорошо, верно. Моя проблема с доступом через mbo в сценарии автоматизации заключается в том, что MboSet, прикрепленный к mbo, с которым я работаю, имеет только один mbo, а не весь список на вкладке списка в Maximo, и я не знаю, почему это так. Я фактически решил проблему, обратившись к WebClientSession и вызвав wcs.getCurrentApp().getResultsBean().getMboSet().getUserAndQbeWhere(). Это дает мне MboSet, содержащееся на вкладке списка, из которого я затем получаю предложение where. Спасибо за помощь! - person Jesse Williams; 24.06.2019
comment
Ах да, компонент результатов управляет экраном списка отдельно от остального приложения. Я помню, как имел дело с этим 7 или 8 лет назад, теперь, когда вы упомянули об этом. С появлением сценариев автоматизации большинству людей не нравится использование настроек Java, что означает отсутствие доступа к классам bean-компонентов, поэтому о таких вещах забывают. Извиняюсь. - person Dex; 25.06.2019
comment
@Jesse, похоже, это хороший повод для подачи запроса на улучшение (RFE) - person Preacher; 25.06.2019