Hi everyone!
After tinkering with the concept, exploring some implementation approaches, and speaking more with some of you, we have a first draft of a utility library that lets you explore your business logic once it is expressed in terms of machines (think of it as splitting the single onEvent function and its huge switch statement into classes and methods, for states and incoming events, respectively).
You can see the timelines of two different machine types with timestamps indicated above and event types below. Clicking on any of the marks on the timelines shows that machine’s state at that point and the event that caused it to be computed. The astute reader will notice that one timestamp is shown in red because time jumped backwards — this can happen due to clock skew or disconnected Actyx nodes that are then reconnected.
Getting this UI in a React application takes roughly the following lines:
const where = Tag<TaxiEvents>('taxi').withId('1234')
...
<AuditMachines
actyx={actyx} // an @actyx/sdk instance
machines={[
{ name: 'passenger', where, initial: new InitialP() },
{ name: 'taxi1', where, initial: new InitialT('one') },
]}
/>
While it basically works, we’re not yet ready to release the new libraries — needs more testing and some polish. What do you think of the above? Let me know!
Have a nice weekend,
Roland