Расширение HP Quality Center с помощью Groovy и Jacob

Я пытаюсь взаимодействовать с HP Quality Center, используя Groovy с оболочкой Jacob COM, но у меня возникают проблемы.

Когда я пытаюсь запустить следующий код:

import com.jacob.activeX.ActiveXComponent
import com.jacob.com.*

def QCUrl = "http://qc.example.com/qcbin"
def QCcom = new ActiveXComponent("TDApiOle80.TDConnection")
def conQC = QCcom.getObject()
Dispatch.call(conQC, 'InitConnectionEx', QCUrl)

Я получаю это исключение:

com/jacob.com.ComFailException: Can't map name to dispid: InitConnectionEx

OTA Центра качества HP дает понять, что меня интересует InitConnectionEx метод; однако я чувствую, что где-то пропустил шаг. Любая помощь будет принята с благодарностью.


person Josh Ripley    schedule 22.11.2011    source источник


Ответы (2)


Когда-то я имел сомнительное удовольствие работать с Quality Center и его API. Я использовал не Jacob напрямую, а модуль Groovy Scriptom, который значительно упрощает создание сценариев COM. терпимо. В Scriptom код для подключения к QC выглядит так:

import org.codehaus.groovy.scriptom.*

Scriptom.inApartment
{
    def tdc = new ActiveXObject ('TDApiOle80.TDConnection')
    tdc.InitConnectionEx('http://qc.example.com/qcbin')
    tdc.Login('user', 'password')
    tdc.Connect('domain','project')
}
person Christoph Metzendorf    schedule 22.11.2011
comment
Спасибо за ответ Кристоф. Мне очень нравится синтаксис Scriptom по сравнению с голым интерфейсом Jacob. Однако после того, как я все настроил и запустил приведенный выше пример кода, я все еще получаю ошибку: com.jacob.com.ComFailException: Can't map name to dispid: InitConnectionEx. Любой совет? - person Josh Ripley; 22.11.2011

После долгих поисков в Google я пришел к решению моей проблемы. Ошибка происходила из-за того, что я не запускал SoapUI с правами администратора.

Судя по всему, если приложение, которое вы запускаете, не имеет прав администратора, то оно не может создавать необходимые ActiveXObjects. Когда я пытался создать экземпляр ActiveXObject, я не получал никакой ошибки, но объект TDConnection не был создан и, следовательно, InitConnectionEx не присутствовал.

После запуска SoapUI с правами администратора я могу подключиться.

Я получил эту идею, прочитав этот статья.

person Josh Ripley    schedule 22.11.2011