Capacity Planning Application JDL Sample
In this JDL sample for a simple Data Model application, all entities and relationships are indicated in one single file, entities.jdl.
application {
// DOM [java.collectorClass] : [CapacityPlanning]
}
entity Country {
// DOM [primary.keys] : [id]
id String required,
name String
}
entity Plant {
// DOM [primary.keys] : [plantId]
plantId String required,
lat Double,
lng Double,
@Formula("(SELECT SUM(a.duration_in_hours) FROM activity a WHERE a.plant_id = db_gene_internal_id AND a.db_gene_internal_scenario_id = db_gene_internal_scenario_id)")
durationInHours Double
}
entity Parameter {
// DOM [single.row] : [true]
// DOM [java.collectionName] : [Parameter]
currentTime Instant
}
entity Resource {
// DOM [primary.keys] : [id]
id String required,
name String
}
entity ResourceCapacity {
quantity Integer min(1)
}
entity Activity {
// DOM [primary.keys] : [id]
id String required,
name String,
durationInHours Duration,
dueDate Instant
}
entity Precedence {
}
entity Requirement {
@DefaultValue("1")
quantity Integer min(1)
}
entity Schedule {
start Instant,
end Instant
}
entity SolutionSummary {
// DOM [single.row] : [true]
start Instant,
end Instant,
timespan Integer
}
entity ResourceUsagePerDay {
// DOM [primary.keys] : [day]
day Integer,
numberOfHours Integer
}
relationship ManyToOne {
// DOM [affects.primary.key] : [true]
Requirement{activity} to Activity{requirements},
// DOM [affects.primary.key] : [true]
Requirement{resource} to Resource{requirements},
// DOM [affects.primary.key] : [true]
Precedence{first} to Activity{successors},
// DOM [affects.primary.key] : [true]
Precedence{second} to Activity{predecessors},
// DOM [affects.primary.key] : [true]
Schedule{resource} to Resource{schedules}
// DOM [affects.primary.key] : [true]
Schedule{activity} to Activity{schedules}
// DOM [affects.primary.key] : [true]
ResourceUsagePerDay{resource} to Resource{usagePerDay}
// DOM [affects.primary.key] : [true]
Plant{country} to Country{plants}
// DOM [affects.primary.key] : [true]
Activity{plant} to Plant{activities}
}
relationship OneToOne {
// DOM [affects.primary.key] : [true]
ResourceCapacity{resource} to Resource{capacity}
}