IBM Rhapsody Log пуст, когда я печатаю из плагина с использованием Java API

Я попытался сделать свой первый плагин Rhapsody, и пока мне удалось сделать плагин появляться на вкладке Инструменты.

Я написал это в своем проекте, но вкладка "Журнал" остается неизменной.

    @Override
public void RhpPluginInit(IRPApplication rpyApplication) {
    IRPApplication rpy = RhapsodyAppServer.getActiveRhapsodyApplication();
    rpy.writeToOutputWindow("Log", "test\n");

}

Мой.hep файл выглядит так

MyPluginProfile.hep:

[Helpers]
numberOfElements=2
name1=MyPlugin
JavaMainClass1=Pack.MyPlugin
JavaClassPath1=D:\Work\eclipseWS\rhapsodyIntegr
isPlugin1=1
isVisible1=1
DLLServerCompatible1=1

name2=Invoke MySimplePlugin
isPluginCommand2=1
command2=MyPlugin
applicableTo2=ObjectModelDiagram
isVisible2=1
applicableToProfile1=SimplePluginProfile
DLLServerCompatible2=1

И я импортировал его в Rhapsody из меню "Файл"> "Свойства проекта"> вкладка "Свойства"> "Выбранный" Просмотр, отфильтрованный помощником "" > "Файл помощников". Там я дал полный путь к MyPluginProfile.hep.

В итоге у меня есть два вопроса:

  1. Почему сообщение не печатается на вкладке "Журнал" в Rhapsody?

  2. Если я изменю сообщение, мне придется перезагрузить помощника, чтобы увидеть изменения? Если да, то как мне сделать это правильно?

Спасибо Даниэль

2 ответа

Решение

Даниэль, не думай, что только потому, что у тебя есть запись в меню "Инструменты" в графическом интерфейсе Rhapsody, что твой плагин работает правильно. Если есть какие-либо проблемы с загрузкой вашего плагина в Rhapsody, запись в меню "Инструменты" все равно будет отображаться, но ваш плагин все еще может быть поврежден. Лучший способ устранения неполадок - обновить файл Rhapsody.ini и добавить запись, которая сообщает Rhapsody об отладке активности вашего плагина. В разделе [Общие] введите следующую запись:

[General] JavaAPILogFile = c: \ temp \ rhap814.log

Затем перезапустите Rhapsody и перезагрузите модель. (Кстати, я предполагаю, что у вас есть соответствующий файл.sbs, имя которого совпадает с именем вашего файла.hep и что вы "добавили в модель" этот профиль.sbs.) Затем перейдите к этому файлу журнала, чтобы выяснить, в чем может быть проблема., Обычно это ошибка пути к классу. У вас есть два способа указать, где находятся файлы.class вашего плагина: каталог или файл jar. Ваш hep-файл НЕ определяет файл.jar в свойстве JavaClasspath1, поэтому я предполагаю, что это первый. Если вы создали файл.jar, вам нужно добавить его к значению свойства JavaClasspath1.

ВАЖНО: После того, как ваш плагин работает, УДАЛЯЙТЕ (или, еще лучше, КОММЕНТАРИЙ, добавив точку с запятой ";") запись JavaAPILogFile в Rhapsody.ini. В противном случае вы увидите примерно 10-кратное снижение производительности плагина. Кроме того, проверьте свою запись "applyToProfile1" во втором помощнике. Это, вероятно, должно иметь "2" в конце, а не "1".

  1. Да, к сожалению, каждый раз, когда вы меняете код своего плагина, вам нужно перезапускать Rhapsody.

Есть еще одна возможная ошибка с кодом, который вы разместили. Ваша реализация RhpPluginInit() использования RhapsodyAppServer чтобы получить ссылку на Rhapsody. Если у вас запущено более одного экземпляра Rhapsody, он вернет вам ссылку на экземпляр, который был запущен первым - не обязательно тот, с которого вы запустили плагин. Следовательно, ваше сообщение может появиться в неправильном экземпляре Rhapsody!

Решение простое - измените код на:

@Override
public void RhpPluginInit(IRPApplication rpy) {
    rpy.writeToOutputWindow("Log", "test\n");
}

(RhapsodyAppServer обычно не требуется в коде плагина - обычно он нужен только для надстроек или сценариев, которые запускаются вне Rhapsody.)

С уважением, Саймон

Другие вопросы по тегам