Merge branch 'Xperimental/gs-entity-relationships' into 'master'

Updates to GS entitiy relationships, add packages, flesh out metadeta, esp Disposition

See merge request records-management/records-management!1043
This commit is contained in:
David Webster
2018-07-12 15:08:39 +01:00
2 changed files with 249 additions and 137 deletions

Binary file not shown.

Before

Width:  |  Height:  |  Size: 135 KiB

After

Width:  |  Height:  |  Size: 180 KiB

View File

@@ -1,143 +1,247 @@
@startuml
class RecordCategory {
'Core ACS entities
package "ACS core - content" {
class Content {
}
class Folder {
}
class File {
}
class Site {
}
}
class Record {
package "RM Core" {
class FilePlanComponent {
rootNodeRef: NodeRef
}
class RecordsManagementContainer {
recordComponentIdentifier: String
}
class RmSite {
}
class FilePlan {
}
class RecordCategory {
}
class RecordFolder {
recordComponentIdentifier: String
}
class Record {
recordComponentIdentifier: String
dateFiled: Date
originalName: String
location: String
}
class DodRecord {
publicationDate: Date
originator: String
originatingOrganization: String
mediaType: String
format: String
dateReceived: Date
address: String
otherAddress: String
}
class NonElectronicRecord {
physicalSize: Int
numberOfCopies: Int
storageLocation: String
shelf: String
box: String
file: String
}
class EasyAccessRecord {
}
class UnfiledRecordContainer {
}
class UnfiledRecordFolder {
}
}
class NonElectronicRecord {
package "ACS core - people" {
class User {
}
class Group {
}
}
class FilePlanComponent {
package "RM Roles and Capabilities" {
class Role {
}
class Capability {
name:String
}
}
class Transfer {
location : String
pdfIndicator : boolean
package "Information Lifecycle Management" {
class TransferContainer {
}
class Transfer {
location : String
pdfIndicator : boolean
}
class RetentionSchedule {
authority: String
instructions: String
recordLevelDisposition: Boolean
}
class DispositionActionDefinition {
dispositionActionName: String
dispositionDescription: String
dispositionLocation: String
dispositionPeriod: Period
dispositionPeriodProperty: String
dispositionEvent: String
dispositionEventCombination: String
combineDispositionStepConditions: String
}
class DispositionEvent {
}
class DispositionLifecycle {
}
class DispositionAction {
dispositionActionId: String
dispositionAction: String
dispositionAsOf: Date
manuallySetAsOf: Date
dispositionEventsEligible: Boolean
dispositionActionStartedAt: Date
dispositionActionStartedBy: String
dispositionActionCompletedAt: Date
dispositionActionCompletedBy: String
}
class EventExecution {
}
}
note bottom of RetentionSchedule {
Retention is the new name for disposition.
Retention is the user facing name,
code refers to disposition
}
note bottom of Transfer {
A holding pen for records
that are being transferred
out of the system
A holding pen for records
that are being transferred
out of the system
}
class Hold {
package "Legal Holds" {
class HoldContainer {
}
class Hold {
holdReason: String
}
class Frozen {
frozenAt: Date
frozenBy: String
}
}
class EasyAccessRecord {
package "Security Controls" {
class SecurityGroup <<Enterprise>> {
enum groupType
{HIERARCHICAL,
USER_REQUIRES_ANY,
USER_REQUIRES_ALL}
unmarkedMark: SecurityMark
}
class SecurityMark <<Enterprise>> {
}
class SecurityClassification <<Enterprise>> {
}
class ClassificationReason <<Enterprise>> {
}
class ClassificationExemption <<Enterprise>> {
}
class ClassificationInfo <<Enterprise>> {
classification: SecurityClassification
reason:ClassificationReason[]
classifiedBy: String
agency:String
}
class SourceReference <<Enterprise>> {
name:String
originatingOrg:String
publicationDate:Date
}
class DowngradeSchedule <<Enterprise>> {
date:Date
event:String
instructions:String
}
class DeclassificationSchedule <<Enterprise>> {
date:Date
event:String
exemption:Exemption[]
}
class ClassificationGuide <<Enterprise>> {
}
class DeclassificationTimeframe <<Enterprise>> {
}
}
class RetentionSchedule {
}
class SecurityGroup {
enum groupType
{HIERARCHICAL,
USER_REQUIRES_ANY,
USER_REQUIRES_ALL}
unmarkedMark: SecurityMark
}
class SecurityMark {
}
class SecurityClassification {
}
class Event {
}
class Role {
}
class Capability {
name:String
}
class RmSite {
}
class FilePlan {
}
class UnfiledRecordContainer {
}
class UnfiledRecordFolder {
}
class HoldContainer {
}
class TransferContainer {
}
class RecordsManagementContainer {
}
class RecordFolder {
}
class ClassificationReason {
}
class ClassificationExemption {
}
class Content {
}
class Folder {
}
class File {
}
class User {
}
class Group {
}
class ClassificationInfo {
classification: SecurityClassification
reason:ClassificationReason[]
classifiedBy: String
agency:String
}
class SourceReference {
name:String
originatingOrg:String
publicationDate:Date
}
class DowngradeSchedule {
date:Date
event:String
instructions:String
}
class DeclassificationSchedule {
date:Date
event:String
exemption:Exemption[]
}
class ClassificationGuide <<Enterprise>> {
}
class DeclassificationTimeframe {
}
ClassificationInfo *-- "*" SourceReference
ClassificationInfo *-- "0..1" DowngradeSchedule
Content <|-- Folder
Content <|-- File
File <|-- Record
Folder <|-- RecordFolder
Site <|-- RmSite
Record <|- EasyAccessRecord
Folder "1" o-- "*" EasyAccessRecord
Record <|-- DodRecord
FilePlanComponent <|-- RecordsManagementContainer
FilePlanComponent <|-- RecordFolder
FilePlanComponent <|-- NonElectronicRecord
@@ -149,14 +253,6 @@ RecordsManagementContainer <|-- TransferContainer
RecordsManagementContainer <|-- FilePlan
RecordsManagementContainer <|-- RecordCategory
Hold "*" o- "*" FilePlanComponent : contains
SecurityGroup "1" *- "*" SecurityMark
Content o-- "*" SecurityMark : securityControls
User o-- "*" SecurityMark : clearance
Group o-- "*" SecurityMark : clearance
RecordCategory "1" *- "*" RecordFolder
RecordCategory *- "*" RecordCategory
@@ -166,31 +262,47 @@ note bottom of RecordCategory {
as the child of either another RecordCategory or the FilePlan
}
FilePlan *- "*" RecordsManagementContainer
HoldContainer *- "*" Hold
UnfiledRecordContainer *-- "*" UnfiledRecordFolder
UnfiledRecordFolder *-- "*" Record
RecordFolder *- "*" Record : contains
RecordFolder *-- "*" NonElectronicRecord : contains
File <|-- Record
UnfiledRecordContainer *-- "*" UnfiledRecordFolder
UnfiledRecordFolder *-- "*" Record
FilePlan *- "*" RecordsManagementContainer
FilePlan "1" *- "*" RecordCategory
RmSite "1" *- "1" FilePlan
Hold "*" o- "*" FilePlanComponent : contains
HoldContainer *- "*" Hold
(FilePlanComponent, Hold) .. Frozen
TransferContainer *- "*" Transfer
Transfer *- "*" Record
DispositionLifecycle o- "0..1" DispositionAction: nextDispositionAction
DispositionLifecycle o- "*" DispositionAction: dispositionActionHistory
RetentionSchedule o- "*" DispositionActionDefinition
RetentionSchedule o- "*" FilePlanComponent
DispositionAction O-- "*" EventExecution
Role o- "*" Capability
User o- "*" Role
Group o- "*" Role
Content o-- "*" SecurityMark : securityControls
User o-- "*" SecurityMark : clearance
Group o-- "*" SecurityMark : clearance
SecurityGroup "1" *- "*" SecurityMark
SecurityMark <|-- SecurityClassification
Content o- "0..1" SecurityClassification
Record <|- EasyAccessRecord
Folder "1" o-- "*" EasyAccessRecord
Content <|-- Folder
Content <|-- File
(Content, SecurityClassification) .. ClassificationInfo
ClassificationInfo *-- "*" SourceReference
ClassificationInfo *-- "0..1" DowngradeSchedule
@enduml