RailsEventStore / rails_event_store

A Ruby implementation of an Event Store based on Active Record
http://railseventstore.org
MIT License
1.42k stars 121 forks source link

Saga's DSL #1170

Closed swistak35 closed 3 years ago

swistak35 commented 5 years ago

Code for sagas is often quite similar, but there's always some boilerplate in maintaining sagas state. We could make some nice DSL for that, which would make long live transactions easier to make with event store. For starters, we could focus on saga which is: 1) always serialized (so there are no steps which can be done in parallel) 2) always sync

And go further from that.

paneq commented 5 years ago

Eventuate Tram

https://github.com/eventuate-tram/eventuate-tram-sagas https://github.com/eventuate-tram/eventuate-tram-sagas/tree/234fe3d58559c791053b9708013dd323a6bf850f/eventuate-tram-sagas-simple-dsl/src/main/java/io/eventuate/tram/sagas/simpledsl https://github.com/xstefank/eventuate-tram-service/blob/master/order-service/src/main/java/org/eventuate/saga/orderservice/saga/OrderSaga.java

Axon Framework

https://docs.axoniq.io/reference-guide/implementing-domain-logic/complex-business-transactions/implementing-saga https://github.com/AxonFramework/Axon-trader/blob/master/orders/src/main/java/org/axonframework/samples/trader/orders/command/SellTradeManagerSaga.java https://github.com/abuijze/webinar-axon-bank/blob/master/src/main/java/org/axonframework/sample/axonbank/transfer/MoneyTransferSaga.java https://github.com/xstefank/axon-service/blob/master/order-service/src/main/java/org/learn/axonframework/orderservice/saga/OrderManagementSaga.java

Narayana Long Running Actions (LRA)

http://jbossts.blogspot.com/2017/12/narayana-lra-implementation-of-saga.html http://jbossts.blogspot.com/2017/12/saga-implementations-comparison.html https://github.com/xstefank/lra-service

AWS Step Functions

https://aws.amazon.com/step-functions/ https://docs.aws.amazon.com/step-functions/latest/dg/concepts-states.html https://aws.amazon.com/getting-started/tutorials/create-a-serverless-workflow-step-functions-lambda/?&trk=el_a131L000005unTnQAI&trkCampaign=pac_q2-04-2019_stepfunctions_tutorial_offering_link_2&sc_channel=el&sc_campaign=pac_q2-04-2019_stepfunctions_tutorial&sc_outcome=PaaS_Digital_Marketing&sc_geo=mult https://aws.amazon.com/getting-started/tutorials/handle-serverless-application-errors-step-functions-lambda/ https://docs.aws.amazon.com/step-functions/latest/dg/concepts-amazon-states-language.html