Неделя 2 [22 мая - 28 мая 2018 г.]
Это вторая неделя Google Summer of Code 2018, я все еще работаю со своим наставником, чтобы завершить дизайн проекта. На этой неделе я полностью поиграл с аспектно-ориентированным программированием с помощью OpenMRS.
Что такое АОП?
Аспектно-ориентированное программирование (АОП) - это подход к программированию, который позволяет глобальным свойствам программы определять, как она компилируется в исполняемую программу. АОП - это парадигма программирования, направленная на повышение модульности за счет разделения сквозных задач. Это в основном поможет решить общие проблемы программирования. Обычно методы АОП используются для задач регистрации, авторизации и аутентификации.
АОП с OpenMRS
OpenMRS использует АОП в основном для модульной системы, что позволяет расширять базовый API (службы) бесконечным числом способов. Вместо того, чтобы предоставлять перехватчики в определенных точках кода для конкретных целей, каждый метод службы в API может быть обернут методом в модуле. Услуги модуля также могут быть расширены через АОП.
Есть три способа обернуть метод API в OpenMRS:
- Перед вызовом метода API
- Вокруг метода API, называемого
- После вызова метода API
Как я планировал использовать АОП в своем проекте?
На самом деле мне нужно сохранить информацию о доступе для каждого пользователя, пока он регистрируется в системе. Поскольку я реализую это как новый модуль, мне нужно использовать методы АОП, чтобы обернуть базовые службы OpenMRS.
Текущий план этой реализации:
- Сохраните информацию accessLocation как personAttribute автоматически.
- Оберните метод saveUser () в класс personService, используя методы АОП для решения этой задачи.
Ход реализации проекта представлен ниже,
- Первоначальная структура проекта была создана и объединена с репозиторием кода.
- Реализовал план, используя методы АОП, чтобы обернуть метод saveUser в класс personService для автоматического сохранения атрибута пользователя accessLocation.
Я работал со своим наставником над улучшением этой части для поддержки выбора места доступа при регистрации пациентов или пользователей. Надеюсь, я смогу завершить эту часть на этой неделе :-)