将Axon的“Sagas”与Camunda的“流程”整合在一起的概念证明开源项目


这是一个简单的POC来展示当前“两个世界中最好的”技术组合成一个真正的强大特工夫妻“风格”......

  • 使用Camunda定义复杂流程,并利用其流动语言表达能力,可视化功能以及状态的生产/实时监控
  • 定义相应的Axon saga来管理消息处理和所需的整个数据处理(例如根据当前的saga状态构造命令)

这不是一个强大的集成实现,而是一个概念证明,证明这两个工具可以轻松集成,并展示如何做到这一点的某种“心理模型”。基本上我的目标是在视觉Camunda模型中定义“pathes”,但是在saga中创建和发出命令等所需的整个“数据处理”。Camunda的流程引擎流程完全解耦,因为集成本身利用了Axon消息。poc实现在某些方面仍然是天真的,例如,必须满足完全异步查询响应处理等的需要。我想我只需要Axon的一些提示来做到这一点。


使用Martin的工作信用卡成功付款

  • POST /accounts?name=martin
  • POST / payment?account=martin&amount=25
  • 请注意日志在saga流程中发生的情况。付款已收到。

使用Kermit的失败信用卡付款
  • POST / accounts?name = kermit
  • POST / payment?account = kermit&amount = 25
  • 请注意日志在saga流程中发生的情况。为信用卡收费失败。
  • 等一分钟,看看信用卡更新提醒,一分钟后失败

(请注意,定时器在大约10秒后触发,而不是两天,大约1分钟而不是两周!)
给Kermit一些信用,并成功获得付款,而无需触摸他的卡
  • POST / accounts / kermit / credit?amount = 30
  • POST / payment?account = kermit&amount = 25
  • 请注意日志在saga流程中发生的情况。帐户余额需要超过“付款”金额。

现在剩余的5欧元Kermit又买了太多
  • POST / payment?account = kermit&amount = 25
  • 请注意,在日志中检索到5的余额并部分涵盖付款
  • 对于剩下的20,信用卡仍然失败。
  • 等一分钟,看看信用卡更新提醒,一分钟后失败
  • 请注意,日志中将再次恢复5的余额

现在Kermit再次尝试。这次他在<1的时间更新了他的信用卡信息
  • POST / payment?account = kermit&amount = 25
  • 请注意,在日志中检索到5的余额并部分涵盖付款
  • 然而,对于剩下的20,他的卡仍然失败......
  • POST / accounts / kermit / updateCard(超时前一分钟!)
  • 现在剩下的20个是收费的,付款成功

(请注意,对于展示,我们只发送没有真实信用卡详细数据的触发器)
Saga运营监控
  • 现在浏览到http:// localhost:8080并使用User:kermit / Pass:kermit登录
  • 点击“Cockpit”进入Camunda的运营监控。
  • 浏览到正在运行的流程实例,然后单击“付款”
  • 您可以在上面看到saga流程定义
  • 使用Kermit的失败信用卡来“实时”查看等待信用卡更新后的正常运行实例