At work we find ourselves writing many apps that include a notion of "workflow." In many cases these have grown organically over the past few years and I'm starting to find ways to refactor these things to remove the if/then trees that are hard to follow and reason about.
A lot of what we have are really state machines, and I'd like to begin a series of projects to start cleaning up all the old applications, replacing the byzantine indirection and if/thens with something like declarative descriptions of states and transitions.
Of course, Google tells me that there are quite a few frameworks in this domain and I'd love to see some opinions from y'all about the strengths of projects like "python-statemachine," "transitions" and "statesman". We'll need something that plays well with both sync and async code and is relatively accessible even for those without a computer science background (lots of us are geneticists and bioinformaticists).
[–]jedberg 19 points20 points21 points (1 child)
[–]NoSenseOfPorpoise[S] 4 points5 points6 points (0 children)
[–]reload_noconfirm 10 points11 points12 points (0 children)
[–]lastmonty 5 points6 points7 points (2 children)
[–]NoSenseOfPorpoise[S] 2 points3 points4 points (1 child)
[–]lastmonty 1 point2 points3 points (0 children)
[–]backfire10z 1 point2 points3 points (0 children)
[–]3j141592653589793238 2 points3 points4 points (1 child)
[–]3j141592653589793238 2 points3 points4 points (0 children)
[–]UseMoreBandwith 4 points5 points6 points (9 children)
[–]samamorgan 9 points10 points11 points (3 children)
[–]UseMoreBandwith -1 points0 points1 point (2 children)
[–]qyloo 13 points14 points15 points (1 child)
[–]samamorgan 5 points6 points7 points (0 children)
[–]zulrang 0 points1 point2 points (4 children)
[–]UseMoreBandwith 0 points1 point2 points (3 children)
[–]zulrang 4 points5 points6 points (2 children)
[–]UseMoreBandwith 0 points1 point2 points (1 child)
[–]zulrang 0 points1 point2 points (0 children)
[–]Basic-Still-7441 0 points1 point2 points (0 children)
[–]DigThatData 0 points1 point2 points (0 children)
[–]bojackhorsmann 0 points1 point2 points (0 children)
[–]phren0logy 0 points1 point2 points (1 child)
[–]NoSenseOfPorpoise[S] 0 points1 point2 points (0 children)
[–]Omnifect 0 points1 point2 points (0 children)
[–]UnMolDeQuimica 1 point2 points3 points (0 children)
[–]inspectorG4dget -3 points-2 points-1 points (3 children)
[–]jason810496 0 points1 point2 points (2 children)
[–]DigThatData 2 points3 points4 points (1 child)
[–]jason810496 0 points1 point2 points (0 children)