Specification as a Library (Vol.4)

Introduction In the previous blog post, I discussed the difference between workflows and attempts. In summary, a workflow accepts a command as input, and as a result, emits a list of domain events. Thus, an attempt also accepts a command as input, but instead, returns a status. Furthermore, the status of an attempt requires the …

Wiring a ViewModel to a DDD-Workflow

Intro I recently connected a viewmodel to a workflow that I was inspired to write as a result of reading the book: Domain Driven Design Made Functional. All of my source code can be found on GitHub/Nikeza. ViewModel In the viewmodel, I handle validating and submitting a form. The interesting part of this exercise is …

F#: Akka.Net (Cluster.Sharding)

Intro This post is intended to document my current understanding of the Cluster.Sharding feature within Akka.Net. This feature is in pre-release as of 3/17/2017. I identified from this documentation that a cluster represents a fault-tolerant, elastic, decentralized, peer-to-peer network of programs. The Akka.Net framework provides a library that supports creating and managing a cluster. Akka.Cluster.Sharding Akkling.Cluster.Sharding …

F#: Bank Account Kata

I wrote some F# code for handling bank account transactions. I wrote the program by using a function driven approach instead of a type driven approach. The main handlers are the following: The supporting functions that back the handlers are as follows: Here are the types: The entire program is below: