Может ли атрибут использоваться для нескольких категорий в ALFA? - PullRequest
0 голосов
/ 24 мая 2018

A doctor может принадлежать subjectCat (пользователь, который пытается получить доступ) или resourceCat (направляющий врач медицинского осмотра, к которому субъект пытается получить доступ).

Как мне кажется, для поддержки обоих случаев мне нужно определить doctor для каждой категории в отдельности:

namespace subject {
     namespace doctor {
          attribute id {
                    category = subjectCat
                    id = "id"
                    type = string
          }
          attribute lastname {
                    category = subjectCat
                    id = "lastname"
                    type = string
          }
          //and 20 more attributes...
      }
}


namespace resource {
     namespace doctor {
          attribute id {
                    category = resourceCat //this line is the only difference
                    id = "id"
                    type = string
          }
          attribute lastname {
                    category = resourceCat //this line is the only difference
                    id = "lastname"
                    type = string
          }
          //and 20 more attributes...
      }
}

Это довольно громоздко и несет много избыточности.Что я могу сделать, чтобы избежать этого?

1 Ответ

0 голосов
/ 24 мая 2018

Вы правы.Вы бы переопределить атрибуты.Таким образом, вы используете тот же объект из вашей информационной модели (например, доктор), но в одном случае этот объект (доктор) выступает в качестве субъекта.В другом случае он действует как объект, который вы защищаете, например:

  • Врач может просматривать медицинскую карту пациента, которому он назначен.
  • Сотрудники отдела кадров могут просматривать зарплатудоктор.

Да, это означает, что вам придется определять сам атрибут в нескольких категориях.Вы все еще можете использовать структуру пространства имен, поскольку комбинация пространства имен и имени остается уникальной.

Вы можете сделать acme.user.staff.doctor и атрибут name.Затем вы можете сделать acme.object.doctor и атрибут name.

Обратите внимание, что Eclipse также позволит вам выполнять автозаполнение:

Auto-completing attribute names in ALFA inside Eclipse

...