fraktalio/fmodel-spring-demo:Spring + kotlin DDD示例源码


这个项目正在使用Fmodel - Kotlin,多平台库。

特点:

  • 使用 Kotlin 编程语言启用函数式、代数和反应域建模。
  • 受到 DDD、EventSourcing 和函数式编程社区的启发,但在惯用的 Kotlin 中实现了这些想法和概念,这反过来又使我们的代码
    • 不易出错,
    • 更容易理解,
    • 更容易测试,
    • 类型安全和
    • 线程安全的。
  • 启用使用示例说明需求
    • 这些要求是作为情景提出的。
    • 从用户的角度来看,场景是系统行为的一个例子,
    • 并且使用 Given-When-Then 结构指定它们以创建可测试/可运行的规范
      • 鉴于Given< some precondition(s) / events >
      • 什么时候When< an action/trigger occurs / commands>
      • 然后Then < some post condition / events >

with(orderDecider) {
    givenEvents(listOf(orderCreatedEvent)) {         // PRE CONDITIONS
        whenCommand(createOrderCommand)              
// ACTION
    } thenEvents listOf(orderRejectedEvent)          
// POST CONDITIONS
}

检查测试

Fstore-SQL
该项目使用PostgreSQL 支持的事件存储,针对事件源和事件流进行了优化。
Fstore-SQL仅通过使用 SQL (PostgreSQL)启用事件源和基于池的事件流模式。

  • event-sourcing数据模式(通过使用 PostgreSQL 数据库)持久存储事件
    • 将事件追加到有序的、仅追加的日志中,使用entity id/decider id作为键
    • entity id使用/decider id作为键,按有序顺序加载单个实体/决策程序的所有事件
    • 支持乐观锁/并发
  • event-streaming同时协调读取来自多个消费者实例的事件流
    • 支持实时并发消费者将事件投射到视图/查询模型中

工具

  • EventModeling - 一种描述系统的方法,使用信息如何随时间变化的示例来描述系统。

详细点击标题