Transactional system that defines a set of primitive and composable concepts. It is inspired by Finite State Grammars.
Finite State Transactional Grammar. I don't know if I made up this term, so I won't claim to have invented this, but I'm running with it. What is sketched here is a transactional system inspired by finite state machines, finite state grammars, rule engines, map-reduce algorithms, functional programming (namely Clojure and LISP), business intelligence, and the rubygem Hero.
Each modular application is a hub
. A hub
is a center of activity for its dedicated formula
. It is responsible for verifying the integrity of inputs-outputs and compliance of its transactions.
Any step
or set of steps
defined by either business and technical needs.
Algorithms, processes, change of state, events.
Each hub
has at least one node
. Each node
is responsible for returning a Boolean/Binary value to determine whether or not its dedicated operation executed sucessfully.
If a node
successfully executed then all transactional data is complete
and sound
.
Integrity = complete + sound
All data relevant to a transaction exists.
All data within a transaction is correct.
Transactional system is considered stable
if the integrity
returns true.
Composables are composed of the outputs of allowed primitives (in some cases a composable can be composed of themselves).
- Hub (hub, node) [A Hub can be composed of at least one
hub
and/or onenode
] - Node (formula) [A Node can be composed of at least one
formula
] - Formula (formula, step) [A Formula can be composed of at least one
step
and/or oneformula
] - Step (step) [A Step can be composed of at least one
step
] - Integrity (complete + sound) [Integrity is composed of at least one
complete
AND onesound
] - Stable (integrity) [Stable is composed of at least one
integrity
]
- Step (from the transaction system's point of view a step is primitive)
- Complete
- Sound
A Boolean
is a True/False, a State
is any other kind of value.
- Hub returns [State (accepts from Formula, no change), Boolean (accepts from Formula)]
- Formula returns [State (accepts from Step, no change), Boolean (accepts from Step)]
- Step returns [State (set values), Boolean (set values for sound and complete)]
- Node returns [Boolean (accept from Step, pass to Integrity), State (passes State from Step to Formula, no change)]
- Integrity returns [Boolean (accepts from Node(sound(true/false),complete(true/false)))]
- Stable returns [Boolean (accepts from Integrity(true/false))]
- Step returns [State (set state, only piece that can change state), Boolean]
- Complete returns [Boolean]
- Sound returns [Boolean]
In other words, only Steps are allowed to change and persist state, while Formulas manage and co-ordinate Steps. Since Formulas are composed of Steps, and Hubs compose of Formulas the States are accessible by, and percolate up to, the heirarchy.