Created
March 23, 2022 17:22
-
-
Save kaelfeitosa/de01352bdb4d2c4e0432dda7cdb14dfe to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
@startuml | |
allow_mixing | |
skinparam componentStyle rectangle | |
component "BacklogItem Aggregate" { | |
component "BacklogItem" as BacklogItemC <<aggregate root>> | |
component "State" as StateC <<value object>> | |
component "Task" as TaskC <<entity>> | |
} | |
BacklogItemC -- StateC | |
BacklogItemC -- "many" TaskC | |
newpage | |
package Classes <<Rectangle>> { | |
package BacklogItemAggregate { | |
class BacklogItem <<aggregate root>> { | |
- String id | |
- State state | |
- List<Task> tasks | |
+ BacklogItem(...) | |
+ Task getTaskByID(String taskID) | |
+ int getTotalHoursRemaining() | |
+ setState(State state) | |
} | |
enum State <<value object>> { | |
IN_PROGRESS | |
DONE | |
} | |
class Task <<entity>> { | |
- String id | |
- int hoursRemaining | |
+ Task(...) | |
+ void setHoursRemaining(int hours) | |
} | |
} | |
BacklogItem *-- State | |
BacklogItem *-- "many" Task | |
} | |
newpage | |
object backlogItem <<aggregate root>> { | |
id: "ADD_PRICE" | |
} | |
object state <<value object>> { | |
IN_PROGRESS | |
} | |
object task <<entity>> { | |
id: "CREATE_FIELD" | |
hoursRemaining: 12 | |
} | |
backlogItem *-- state | |
backlogItem *-- task | |
note as N | |
<code> | |
String taskID = "CREATE_FIELD"; | |
var task = new Task(taskID, 1); | |
var backlogItem = new BacklogItem("ADD_PRICE", Status.IN_PROGRESS, List.of(task)); | |
backlogItemRepository.save(backlogItem) | |
</code> | |
end note | |
newpage | |
object backlogItem <<aggregate root>> { | |
id: "ADD_PRICE" | |
} | |
object state <<value object>> { | |
IN_PROGRESS | |
} | |
object task <<entity>> { | |
id: "CREATE_FIELD" | |
hoursRemaining: 0 | |
} | |
backlogItem *-- state | |
backlogItem *-- task | |
note as N | |
<code> | |
var backlogItem = backlogItemRepository.findById('ADD_PRICE'); | |
var task = backlogItem.getTaskByID('CREATE_FIELD'); | |
task.setHoursRemaining(0); | |
backlogItemRepository.save(backlogItem); | |
</code> | |
end note | |
newpage | |
object backlogItem <<aggregate root>> { | |
id: "ADD_PRICE" | |
} | |
object state <<value object>> { | |
DONE | |
} | |
object task <<entity>> { | |
id: "CREATE_FIELD" | |
hoursRemaining: 0 | |
} | |
backlogItem *-- state | |
backlogItem *-- task | |
note as N | |
<code> | |
var backlogItem = backlogItemRepository.findById('ADD_PRICE'); | |
var task = backlogItem.getTaskByID('CREATE_FIELD'); | |
task.setHoursRemaining(0); | |
if (backlogItem.getTotalHoursRemaining() == 0) { | |
backlogItem.setState(State.DONE) | |
} | |
backlogItemRepository.save(backlogItem); | |
</code> | |
end note | |
newpage | |
package Classes <<Rectangle>> { | |
package BacklogItemAggregate { | |
class BacklogItem <<aggregate root>> { | |
- String id | |
- State state | |
- List<Task> tasks | |
- int getTotalHoursRemaining() | |
+ BacklogItem(...) | |
+ setHoursRemainingForTask(String taskID, int hours) | |
} | |
enum State <<value object>> { | |
IN_PROGRESS | |
DONE | |
} | |
class Task <<entity>> { | |
- String id | |
- int hoursRemaining | |
+ Task(...) | |
~ void setHoursRemaining(int hours) | |
} | |
} | |
BacklogItem *-- State | |
BacklogItem *-- "many" Task | |
} | |
newpage | |
object backlogItem <<aggregate root>> { | |
id: "ADD_PRICE" | |
} | |
object state <<value object>> { | |
DONE | |
} | |
object task <<entity>> { | |
id: "CREATE_FIELD" | |
hoursRemaining: 0 | |
} | |
backlogItem *-- state | |
backlogItem *-- task | |
note as N | |
<code> | |
BacklogItem { | |
void setHoursRemainingForTask(String taskID, int hours) { | |
task.setHoursRemaining(hours); | |
if (getTotalHoursRemaining() == 0) { | |
backlogItem.setState(State.DONE) | |
} | |
} | |
} | |
var backlogItem = backlogItemRepository.findById('ADD_PRICE'); | |
var task = backlogItem.setHoursRemainingForTask('CREATE_FIELD', 0); | |
backlogItemRepository.save(backlogItem); | |
</code> | |
end note | |
newpage | |
@enduml | |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment