Как я могу поместить цвет фона в диаграмму Entity-Relationship в PlantUML

В настоящее время я использую PlantUML для разработки ERD моей базы данных. Все хорошо, диаграмма завершена, но я пытаюсь добавить цвет фона к своим объектам, чтобы различать их в соответствующих схемах.

Я думаю о цвете фона для сущностей или, может быть, о цветном прямоугольнике, который содержит сущности внутри него.

Я попытался использовать skinparam с именем объекта, с его псевдонимом...

skinparam entity {
  backgroundColor<<usr>> DarkOrchid
}
skinparam entity {
  backgroundColor<<User>> DarkOrchid
}

Ничего из этого не работает... Кто-нибудь может помочь?

Спасибо

========= РЕДАКТИРОВАТЬ

Как и просили, небольшой пример:

'==========='
'auth schema'
entity "User" as usr {
  *id : number <<PK>>
  --
  password: varchar
  salt: varchar
  role: number <<FK>>
  last_login_at : datetime
  is_active : boolean
}

entity "User Role" as url {
  *id : number <<PK>>
  --
  name: varchar
  clearance_lvl: text
  is_active : boolean
}

'====================='
'personnel data schema'

entity "Professor" as prof {
  *id : number <<PK>>
  --
  name: varchar
  office: integer
  user_id: number <<FK>>
  wage: number
  last_login_at : datetime
  is_active : boolean
}

entity "Student" as stu {
  *id : number <<PK>>
  --
  name: varchar
  semester: text
  user_id: number <<FK>>
  specialization: text
  is_active : boolean
}

usr ||--o{ url
prof ||--|| usr
stu ||--|| usr

Получается следующая диаграмма:

диаграмма по умолчанию

И я хочу увидеть что-то вроде этого:

цветная диаграмма

Или хотя бы что-то вроде этого:

фоновая прямоугольная диаграмма


person Pstr    schedule 16.06.2020    source источник
comment
Не могли бы вы добавить небольшой полный пример, показывающий вашу проблему?   -  person albert    schedule 16.06.2020
comment
Добавлены наглядные пособия и пример диаграммы. Понятно, что я здесь ищу? Я думал, что у этого будет простое решение, но я действительно борюсь, ха-ха. Спасибо.   -  person Pstr    schedule 17.06.2020


Ответы (1)


Объект entity использует параметры кожи объекта class ! Таким образом, вам нужно будет сказать skinparam class вместо skinparam entity, чтобы изменить цвет фона ваших сущностей.

Чтобы применить определенный цвет фона к выбранным объектам, вам нужно добавить к ним стереотип, чтобы их можно было идентифицировать с помощью команды skinparam class. Например, вы можете добавить <<personnel>> к сущностям Professor и Student, а BackgroundColor<<personnel>> к skinparam class.

Это должно соответствовать требованиям вашего первого примера:

skinparam  class {
    BackgroundColor<<personnel>> #A9DCDF
}


'==========='
'auth schema'
entity "User" as usr {
  *id : number <<PK>>
  --
  password: varchar
  salt: varchar
  role: number <<FK>>
  last_login_at : datetime
  is_active : boolean
}

entity "User Role" as url {
  *id : number <<PK>>
  --
  name: varchar
  clearance_lvl: text
  is_active : boolean
}

'====================='
'personnel data schema'

entity "Professor" as prof <<personnel>> {
  *id : number <<PK>>
  --
  name: varchar
  office: integer
  user_id: number <<FK>>
  wage: number
  last_login_at : datetime
  is_active : boolean
}

entity "Student" as stu <<personnel>> {
  *id : number <<PK>>
  --
  name: varchar
  semester: text
  user_id: number <<FK>>
  specialization: text
  is_active : boolean
}

usr ||--o{ url
prof ||--|| usr
stu ||--|| usr

Чтобы реализовать ваш второй пример, вы можете обернуть свои объекты в пакеты и применить другой фон непосредственно как часть оператора package.

'==========='
'auth schema'
package "auth schema" #B4A7E5 {
entity "User" as usr {
}

entity "User Role" as url {
}
}

'====================='
'personnel data schema'
package "personnel data schema" #A9DCDF {
entity "Professor" as prof <<person>> {
}

entity "Student" as stu <<person>> {
}

usr ||--o{ url
prof ||--|| usr
stu ||--|| usr
person khalito    schedule 17.06.2020
comment
Хм, хорошо, но первый подход меняет цвета всех сущностей. Я хотел бы изменить только некоторые, поэтому могу ли я добавить к ним тег, чтобы изменить только некоторые? На моей диаграмме у меня есть 2 объекта со светло-голубым цветом и 2 с желтоватым цветом по умолчанию... Я хочу изменить определенные объекты.. Могу ли я создать какие-то именованные классы или изменить их с помощью идентификаторов? Я мог бы использовать пакетный подход, но я не могу раскрасить их разными цветами, не так ли? - person Pstr; 17.06.2020
comment
Вы абсолютно правы. Извините, я неправильно понял ваши требования. Я обновил ответ, чтобы применить цвета фона к некоторым объектам (используя стереотипы) и добавив цвета непосредственно в оператор пакетов (вместо оператора skinparam). - person khalito; 18.06.2020
comment
Круто, я пытался использовать стереотипы, используя имена или псевдонимы сущностей, и не определял стереотип в реальной сущности. Спасибо огромное! - person Pstr; 19.06.2020