I have developed a few custom workflows for customers and every time this ended with mixed feelings. They were all impressed by the extensibility of the product, being able to be integrated with the inhouse tools. But they were also worried about the complexity of the development : no designer, only the Automation Engine tree and Ruby code.
And to be honest, it is the same for me. Designing workflows with
automation.log is not what I would call user friendly. Of course, I now have a library of recipes that I import in the Automation Engine to bootstrap my development. And I have created my own conventions that enforce a good level of consistency across all my classes and methods.
What I would expect from a Cloud Management Platform is a strong set of graphical designers that are linked by conventions, so that one could interact from command line also. Let’s take an example: you want to create a new service catalog item. The service implementation would require a few actions in a specific order, also called a workflow. People would thus expect to have a workflow designer that allows to pick actions from a library, as well as decision points based on the environment or action result. Some of the actions could be forms in order for the user to provide information. People would then expect to have a form designer that does ask only label, description and type for each element. The data from the form would then be available to the actions. And of course, for advanced users, actions could be created/modified to fit their needs: Ruby would be a good choice.
Regarding the workflow and form designers, my first thought is that Business Process Model and Annotation, aka. BPMN, could be used for modelization. Additionally, Business Process Execution Language, aka. BPEL, would provide execution description. And in the community, jBPM provides tools to work with them. I don’t know exactly how they could be integrated or even if that would be a good choice, but they could be a source of inspiration for ManageIQ tooling.
Continuing with Policy, it is easier to use/extend than Automate, but again could be more user friendly. Once again, I don’t know how to integrate it or if it is relevant but a Business Rules Management System, aka. BRMS, could improve rules definition. In the community, Drools is well known and provides a human readable language, that one can extend with a Domain Specific Language (DSL), and a Complex Event Processing (CEP) module (Drools Fusion), that could be used to filter/aggregate events. And it is well integrated with jBPM…
As these tools do not have the look-and-feel of ManageIQ, they could be separated in a « CloudForms Studio » that would be dedicated to bending CloudForms to the customers needs. And indeed, very few users edit the Policy and Automation engines. Most of them just want to manage resources.