Best way to develop modular loosely-coupled solutions?
We find ourselves repeating a lot of functions/automations across different solutions. I was thinking of decoupling these functions in a way that I'd be able to call standalone runtime projects with specific functionalities.
For example, we almost always have recycle an automation that involves getting a token for an internal REST API. Surely there must be a better way than writing this automation over and over again for each solution that demands it. This of course requires the decoupled components to be able to be run with different inputs and pass over any output to the next part of the series.
You can place these shared automations in a separate project that is shared between solutions. This shared project would be coupled to whatever project uses it, and as long as you didn't change the automation signature that you use for existing automations, would work across projects.
As for making the automations themselves generic in terms of inputs and outputs, I am not sure what you mean. If you create a specific function you want to call, it will have specific inputs and outputs. You could potentially pass the inputs and outputs as a DataTable (a key/value pair). That would allow you to pass them generically.