Неделя 2 [22 мая - 28 мая 2018 г.]

Это вторая неделя Google Summer of Code 2018, я все еще работаю со своим наставником, чтобы завершить дизайн проекта. На этой неделе я полностью поиграл с аспектно-ориентированным программированием с помощью OpenMRS.

Что такое АОП?

Аспектно-ориентированное программирование (АОП) - это подход к программированию, который позволяет глобальным свойствам программы определять, как она компилируется в исполняемую программу. АОП - это парадигма программирования, направленная на повышение модульности за счет разделения сквозных задач. Это в основном поможет решить общие проблемы программирования. Обычно методы АОП используются для задач регистрации, авторизации и аутентификации.

АОП с OpenMRS

OpenMRS использует АОП в основном для модульной системы, что позволяет расширять базовый API (службы) бесконечным числом способов. Вместо того, чтобы предоставлять перехватчики в определенных точках кода для конкретных целей, каждый метод службы в API может быть обернут методом в модуле. Услуги модуля также могут быть расширены через АОП.

Есть три способа обернуть метод API в OpenMRS:

  1. Перед вызовом метода API
  2. Вокруг метода API, называемого
  3. После вызова метода API

Как я планировал использовать АОП в своем проекте?

На самом деле мне нужно сохранить информацию о доступе для каждого пользователя, пока он регистрируется в системе. Поскольку я реализую это как новый модуль, мне нужно использовать методы АОП, чтобы обернуть базовые службы OpenMRS.

Текущий план этой реализации:

  1. Сохраните информацию accessLocation как personAttribute автоматически.
  2. Оберните метод saveUser () в класс personService, используя методы АОП для решения этой задачи.

Ход реализации проекта представлен ниже,

  • Первоначальная структура проекта была создана и объединена с репозиторием кода.


  • Реализовал план, используя методы АОП, чтобы обернуть метод saveUser в класс personService для автоматического сохранения атрибута пользователя accessLocation.


Я работал со своим наставником над улучшением этой части для поддержки выбора места доступа при регистрации пациентов или пользователей. Надеюсь, я смогу завершить эту часть на этой неделе :-)