一个属性可以用于 ALFA 中的多个类别吗?

Can an attribute be used for several categories in ALFA?

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...
      }
}

这很麻烦,而且有很多冗余。我能做些什么来避免这种情况吗?

你是对的。您将重新定义属性。在某种程度上,您正在使用信息模型中的相同对象(例如医生),但在一种情况下,该对象(医生)充当主题。另一方面,它充当您正在保护的对象,例如

  • 医生可以查看分配给他们的患者的医疗记录。
  • HR可以查看医生的工资。

是的,这意味着您必须在多个类别中定义属性本身。只要命名空间和名称的组合保持唯一,您仍然可以利用命名空间结构。

你可以做 acme.user.staff.doctor 和属性 name。然后你可以做 acme.object.doctor 和属性 name.

请注意,Eclipse 也可以让您自动完成: