我有两个聚合。
Person {
private personID personID;
private nodeID nodeID; //belongs to node
}
Node {
private nodeID nodeID; //node's id
private nodeID parent; //parent node reference by id
public void assign(Person person);
}
现在,我的人员分配服务的域逻辑:
只有属于节点"X"
的节点"Y"
才能将人员分配给节点"X"
,节点Read Model
是父节点或曾祖父或曾祖父或节点Read Model
。
要找出它,我需要查询<!-- jQuery datepicker script -->
<script>
$(function ()
{
var date = new Date();
var currentMonth = date.getMonth();
var currentDate = date.getDate();
currentDate = currentDate;
var currentYear = date.getFullYear();
$('#datepicker1').datepicker(
{
dateFormat: "yy-mm-dd",
minDate: new Date(currentYear, currentMonth, currentDate),
beforeShowDay: $.datepicker.noWeekends
});
});
</script>
<!-- test code for date / no date needed options -->
<form method="POST" action="insert_sql_row.php">
<b>Pick date:</b>
<input type="text" id="datepicker1" name="date_entry" maxlength="10" size="10" />
<b>OR No Date Needed: </b>
<input type="checkbox" name="checkbox1" value="1">
<input type="submit" name="Submit1" value="Submit form"></td></tr>');
</form>
。
我在Domain中,所以我不能只使用我的Read Model来查询它。
我不认为我可以添加到我的存储库,连接到读取模型,因为它连接到我的事件存储。特别是,当private var liveFeedLoader:URLLoader = new URLLoader();
private var feedUpdateTimer:Timer = new Timer(30000);
private function init(e:Event):void {
liveFeedLoader.addEventListener(IOErrorEvent.IO_ERROR, liveFeedLoaderErrFx);
liveFeedLoader.addEventListener(Event.COMPLETE, liveFeedLoaderFx);
feedUpdateTimer.addEventListener(TimerEvent.TIMER, checkForUpdate);
liveFeedLoader.load(new URLRequest("https://s3-us-west-2.amazonaws.com/abcd/XYZ.xml"));
feedUpdateTimer.start();
}
可以放在另一个服务器上并且是另一个应用程序时。
实施它的正确方法是什么?
答案 0 :(得分:2)
以下是禁令:
只有当他属于节点&#34; Y&#34;才能将人员分配到节点&#34; X&#34; 父母或曾祖父或曾曾祖父或...... 节点&#34; X&#34;。
如果是必须强制执行的约束,则可以在写入方的单独聚合中对层次结构建模(例如,Graph
),其唯一目的是确保完整性。
答案 1 :(得分:0)
执行此操作的正确方法是支持命令模型中的祖先检查 。这是您要强制执行不变量的地方,因此模型需要支持此功能。
如果您需要能够进行无限制的祖先检查,树结构通常会导致性能问题。因此,您可能需要实现性能优化,以改进这些类型的查询。
我看到以下可能性: