Adding support for multi-step manual approvals


I was asking in the Support topic about how to implement mult-step approvals using Automate, but I have been told that there is basically no way to do it without modifying the backend code.

So I offered our help in implementing a general solution - but didn’t receive any answer there, so I thought I will copy my post here in the development topic as well:

We have been discussing this with my colleagues, and we decided that we might make an effort to implement (or to take part in implementing) a general solution for this and upstream it for the community, given that we get some architectural guidelines to make sure that we end up with a solution that complies with the general design of ManageIQ.

From what I learned so far, I see two main directions to start with:

  1. Since the underlying data model is already prepared to handle multiple approval steps per request, it should not require substantial effort to enhance the frontend to make use of this capability. I think that this can be achieved just by exposing the underlying relations through $evm, and by a few additional UI enhancements.
  1. This might be far-fetched (and I’m just getting to know the overall architecture), but wouldn’t it make sense to have a way of representing human tasks in the automate model? I imagine a solution by which one could create a “HumanServiceRequest” from the automate model which in turn would generate a pending approval with a custom dialog. And after approving, the task context of this HumanServiceRequest would represent the completion of the human task by emitting an event in the automation engine. This would make it possible to add human task interactions in the automation workflows.

I’m really not an expert in the architecture of ManageIQ (yet :slight_smile: ), so I might be off with these suggestions. However, if someone is willing to give us some conceptual guidance I believe we’ll be able to do a valuable contribution.