在custusX中的自定义插件中,我使用mServices->patientModelService->getPatientLandmarks()->setLandmark
以编程方式更改某些地标。我想用已经存在的卷执行注册。
在LandmarkPatientRegistrationWidget
的{{1}}中,org.custusx.registration.method.landmark
来电performRegistration()
。
但是,我不确定我获取mServices.registrationService->doPatientRegistration()
实例的方法是否正确。
到目前为止,我已将registrationService
添加到CMakeLists.txt文件中,并添加了org_custusx_registration
和"cxRegistrationService.h"
作为包含。
现在我可以定义<cxRegServices.h>
并在构造函数中使用插件的RegServices mRegServices
对其进行初始化。
但是,我是否创建了自己的注册服务,还是可以访问已有的注册服务?如何访问已经运行的注册服务?
答案 0 :(得分:2)
您的方法正确地重用了现有的正在运行的注册服务。
CustusX的默认设置注册实现cx::RegistrationService接口的单实例(对象)。 cx::RegServices助手类包含cx::RegistrationServiceProxy,它充当引用对象的智能指针。服务对象仅由实现它们的插件创建:用户只需访问这些对象。
RegistrationServiceProxy使用ctkServiceTracker及相关类来实现它,例如参见this tutorial on OSGi,第5.4节(在java中,但原则适用)。