Cet article est un résumé de la troisième partie de la conception d'agrégats efficaces: obtenir des informations grâce à la découverte .
La deuxième partie a abordé la manière dont les agrégats se réfèrent les uns aux autres et comment utiliser la cohérence éventuelle pour atteindre des objectifs commerciaux spécifiques. Dans une troisième partie, nous verrons comment le respect des règles d'agrégats affecte la conception du modèle Scrum (projet de test de la première partie).
Repenser la conception de modèles
Après une itération de refactorisation qui a éliminé le gros agrégat Product, BacklogItem est devenu un agrégat distinct. La nouvelle version du modèle est illustrée à la figure 1. L'agrégat BacklogItem contient une collection d'instances de tâche. Chaque BacklogItem a un identifiant global unique - BacklogItemId. L'association avec d'autres agrégats se fait via des identifiants. L'agrégat BacklogItem semble être assez petit.
Malgré le résultat positif après la première itération, certaines inquiétudes subsistent. Par exemple, l'attribut histoire vous permet de contenir une grande quantité de texte. Des frais généraux potentiels peuvent en résulter.
, , . . BacklogItem Task? ? ?
. :
, .
0 , . , done.
, done, .
. , . , 1 . , . , , , .
, , . , .
1, Task EstimationLogEntry. , . , Task BacklogItem, EstimationLogEntry Task? . , . .
, . , . 10 15, , 12 .
, . 4 16. , 12 , Scrum . , 12 (1 ). , 12 , , 12 , .
: ? , , 12 ( , ; ). 12 , 12 , 144 (12*12) . , .
, . Scrum , . (24) (6) 144. (24 12) , . 12 12 .
. 144 ? -? , ? , , ? .
. BacklogItem. , BacklogItem . , , .
, , , , , .
, . . . . BacklogItem. , .
, , . BacklogItem Task . . , .
0 , , . , done, , , done, .
? . , , . , . . 12- . , 144 12 , done.
. , (6 ), . , . , .
. , . , . . , , , . , , . , .
? 12 + 12 , 12 . , 12 . , 12 12 , 25 . . , . .
? , .
. , story points, . , . , , . , story points .
Task . . , , .
, , Tak BacklogItem. , , .
Task estimateHoursRemaining(), . :
public class TaskHoursRemainingEstimated implements DomainEvent {
private Date occurredOn;
private TenantId tenantId;
private BacklogItemId backlogItemId;
private TaskId taskId;
private int hoursRemaining;
...
}
. :
BacklogItemRepository BacklogItem .
TaskRepository Task, BacklogItem
BacklogItem estimateTaskHoursRemaining(), hoursRemaining Task. BacklogItem .
, . . , Task, , , .
public class TaskRepositoryImpl implements TaskRepository {
...
public int totalBacklogItemTaskHoursRemaining(
TenantId aTenantId,
BacklogItemId aBacklogItemId) {
Query query = session.createQuery(
"select sum(task.hoursRemaining) from Task task "
+ "where task.tenantId = ? and "
+ "task.backlogItemId = ?");
...
}
}
. , ? - ? « UI». . .
Ajax, . , , Ajax . 143 144 , . Ajax Push.
, – . , , , .
, Task BacklogItem. , . . 50 , 25, .
Task BacklogItem . , , .
, :
.
.
.
, .
, , , , - .