2015-07-01 2 views
2

В пользовательском плагине custusX я использую mServices->patientModelService->getPatientLandmarks()->setLandmark для программного изменения некоторых ориентиров. Я хочу выполнить регистрацию с уже существующим томом.Как получить доступ к службе регистрации в плагине CustusX?

В LandmarkPatientRegistrationWidget в org.custusx.registration.method.landmark, performRegistration() звонки mServices.registrationService->doPatientRegistration().

Однако, я не уверен, правильно ли подходит мой подход, чтобы получить экземпляр registrationService.

Я до сих пор добавил org_custusx_registration в файл CMakeLists.txt и добавил "cxRegistrationService.h" и <cxRegServices.h> как включает.

Теперь я могу определить RegServices mRegServices и инициализировать его в конструкторе с помощью mContext плагина.

Но я создаю собственную регистрационную службу или получаю доступ к уже существующему? Как я могу получить доступ к уже запущенной службе регистрации?

ответ

2

Ваш метод правильно повторно использует существующую службу регистрации.

Установка по умолчанию CustusX регистрирует один экземпляр (объект), реализующий интерфейс cx::RegistrationService. Вспомогательный класс cx::RegServices содержит cx::RegistrationServiceProxy, который действует как интеллектуальный указатель, ссылающийся на объект. Сервисные объекты создаются только плагином, который их реализует: пользователи просто получают доступ к этим объектам.

RegistryServiceProxy реализует это с использованием ctkServiceTracker и связанных с ним классов, см., Например, this tutorial on OSGi, раздел 5.4 (в Java, но принципы применяются).

Смежные вопросы