尝试访问命令内部的聚合

Trying to access aggregates inside commands

如何从对象的命令或事件中获取另一个对象的状态,比方说 usermanagement.user,比方说 administration.regulation?场景:我在包含简单规则集的法规中有配置文件,在用户完成某些操作后,我想看看是否符合规则。我尝试在用户内部的命令和操作中执行此操作,并尝试在流程中获取规则,但我似乎无法完成。

wolkenkit offers an option to access other aggregates from within an aggregate's command handler. This is done by using services.

例如,命令处理程序通常如下所示:

const commands = {
  doSomething (file, command) {
    // ...
  }
};

现在,通过使用服务,您可以像客户端一样访问 app 对象本身。为此,使用 services 作为命令处理程序的第三个参数。然后,在命令处理程序中,您可以使用 services.app 来读取其他聚合。请注意,您必须在此处使用 await 关键字:

const commands = {
  async doSomething (file, command, services) {
    // ...

    const otherAggregate = await services.app.someContext.someAggregate(id).read();

    // ...
  }
};

可选地,您可以使用对象解构并稍微简化代码:

const commands = {
  async doSomething (file, command, { app }) {
    // ...

    const otherAggregate = await app.someContext.someAggregate(id).read();

    // ...
  }
};

您可以在 documentation 中找到所有详细信息。

希望对您有所帮助