??????????????????????????????????o????????????
????Domain Experts?????????
?????????????????????????????????????
???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????е??????????????????????????????????????????????????????????????????????????????????????????????????????С?????????????????????????????????????????????????????????? CEO????????????????????????????????????????CEO ??????????????????????????????? CEO ?????????????????CEO ????????????к??????????????????????????????????????????????????????????
??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????Ч???????з?????????????????????????????Щ???????磬????????????????????????????????????·???????磬???????????????????????????????????????????????????? Button???????????????? Button ???????????????????????????????????????????????飬????????????????????????????????? Button ???в????????????????????????????????????????????? Button ??????UI ?????????????????????????????е???????????????Χ???????? Button??????????????????????????????????У????????????????????????????????壬?????????? UI??UI ?????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????Щ?????????????????????????????????? UI ??α仯????????????????????з????仯????????????????????????????UI ???????????????????????????????????????????????? UI ?????????????????????????????
????????????????????????????????????????????????????????????????????ò???????????????????е??????????????????????????????????У???????????????????λ??????????????κε??????????????????????????????????????????????????????????£??????????????????????????????????????????Щ??鲼???и???????????????????????????????????????????????????????????????????????????????????????????????????????????飬??????????????????????????????????????????????Щ?????????????????????????????????????????
????????????????????????
???????????????????????????????? Scrum ??????????????????????Backlog Item??????????Sprint???????
???????????????????о???????????????????????Scrum ?????????е????????????????????????????????????????????????????????????????????????
public class BacklogItem extends Entity {
private SprintId sprintId;
private BacklogItemStatusType status;
...
public void setSprintId(SprintId sprintId) {
this.sprintId = sprintId;
}
public void setStatus(BacklogItemStatusType status) {
this.status = status;
}
...
}
?????????????
????// client commits the backlog item to a sprint
????// by setting its sprintId and status
????backlogItem.setSprintId(sprintId);
????backlogItem.setStatus(BacklogItemStatusType.COMMITTED);
????????????????????????? saveCustomer ???????????????????????????????????????????????????о?????Щ???????????????????????????????????????????????????????? BacklogItem ?е?????????????????????????????????????У?????????????????????????????????????????????????????????????????е??????????????????????????????????? setStatus ????????????????? setSprintId ?????????????????????д????????д???????????????????????????????? saveCustomer ????????????????????????????????????????????????????????????? BacklogItem ?????????????????????????
??????????????????????????
public class BacklogItem extends Entity {
private SprintId sprintId;
private BacklogItemStatusType status;
...
public void commitTo(Sprint aSprint) {
if (!this.isScheduledForRelease()) {
throw new IllegalStateException(
"Must be scheduled for release to commit to sprint.");
}
if (this.isCommittedToSprint()) {
if (!aSprint.sprintId().equals(this.sprintId())) {
this.uncommitFromSprint();
}
}
this.elevateStatusWith(BacklogItemStatusType.COMMITTED);
this.setSprintId(aSprint.sprintId());
DomainEventPublisher
.instance()
.publish(new BacklogItemCommitted(
this.tenant()??
this.backlogItemId()??
this.sprintId()));
}
...
}