Jython: открыть URL в браузере (без импорта библиотек Python) - PullRequest
1 голос
/ 21 октября 2019

Maximo 7.6.1.1:

Используя Jython, я хочу открыть URL в браузере (в Windows 10).

Я нашел Пример Java :

import java.awt.Desktop;
import java.net.URI;

if (Desktop.isDesktopSupported() && Desktop.getDesktop().isSupported(Desktop.Action.BROWSE)) {
    Desktop.getDesktop().browse(new URI("http://www.example.com"));
}

И я попытался преобразовать его в Jython:

from java.awt import Desktop
from java.net import URI

desktop = Desktop.getDesktop()
uri = URI("http://google.com/#q=wonum1%2Cwonum2%2Cwonum3")
desktop.browse(uri)

Хотя Jython успешно компилируется, он не открывает браузер.


Как открыть URL в браузере с помощью Jython?

Ответы [ 2 ]

3 голосов
/ 23 октября 2019

Как уже указывали некоторые, скрипты автоматизации в Maximo запускаются на стороне сервера. Эти сценарии настраиваются на основе определенных типов точек запуска, которые активируются при запуске сценария на стороне сервера. В общем случае сценарии автоматизации нельзя использовать для управления элементами пользовательского интерфейса, поскольку они управляются на уровне веб-клиента.

Какой тип точки запуска использовался в приведенном выше примере кода Jython? Это могло бы работать, если бы это была точка запуска типа действия, связанная с кнопкой в ​​пользовательском интерфейсе. Но я не уверен в контексте того, как и когда вы хотите, чтобы это действие произошло. Но, скорее всего, он все равно не будет работать, потому что код Java по-прежнему выполняется со стороны сервера, а не с клиента. Как правило, вам нужно создать пользовательское расширение файла класса Java для приложения, чтобы добавить его на уровень веб-клиента. Хотя большинство организаций стараются держаться подальше от этого типа истинных настроек из-за проблем, которые могут возникнуть при будущих обновлениях и обновлениях базового продукта Maximo.

В Maximo встроена встроенная функциональность, которая позволяетпользователя для запуска в контексте URL-адресов. Вот ссылка IBM, в которой есть pdf-файл примера запуска адреса, связанного с записью в Maximo, в Google Maps.

https://www.ibm.com/developerworks/community/groups/service/html/communityview?communityUuid=a9ba1efe-b731-4317-9724-a181d6155e3a#fullpageWidgetId=W5f281fe58c09_49c7_9fa4_e094f86b7e98&file=a6af8bfb-8b72-4b57-945c-786ab4d71b14

Кроме того, я точно не знаю, какова цельдля требования. Но я также видел, что если вы просто пытались получить информацию из внешнего источника, вы можете фактически отобразить информацию непосредственно в приложении Maximo, если доступ к внешнему веб-приложению возможен посредством взаимодействия типа веб-сервиса.

3 голосов
/ 22 октября 2019

Краткий ответ

"Вы не можете."Или, точнее, «Это, вероятно, не стоит усилий / риска».

Длинный ответ

Из предыдущего опыта, используя VB для написания CGI (который я НЕ рекомендую), я быПредположим, что помещение кода из вашего вопроса в скрипт автоматизации может привести к запуску сеанса браузера на сервере, на котором был запущен ваш скрипт. С тех дней VB, 20+ лет назад, ситуация могла измениться, но я все равно хотел бы проверить.

@ Думаю, Мильтон был на правильном пути, но с Maximo это было бы немного большесложный. Это потому, что когда он сказал: «Вы могли бы [скрипт] вернуть ответ», этот ответ будет возвращен со уровня бизнес-логики на стороне сервера на уровень пользовательского интерфейса на стороне сервера, который затем должен будет вернуть егобраузер, в котором вам нужно было бы «большой C», настроить Maximo для ожидания этого ответа и знать, что с ним делать.

Альтернатива

Возможно, вы вернете ошибку из своего скриптаи сообщение должно содержать URL. Или используйте Autoscript + условный пользовательский интерфейс + запуск в контексте + сочетание непостоянных атрибутов, чтобы предоставить пользователю ссылку для нажатия.

...