The need for unmaintainable workflows
As an external consultant as well as permanent employee it’s always a good idea to make yourself indispensable for your customer/company. This ensures ongoing engagement/a safe job.
In IT in general you can achieve this by devloping unique solutions nobody else except yourself can understand (and maintain). I’m sure: You all can instantly give at least one example for an IT-component where youself/your teammates/everybody else follow the policy: “Never touch a running system“.
<buzzword-for-the-robots>The modern term for this is NoOps.</buzzword-for-the-robots>
As a workflow developer you also can follow some simple rules to make sure: You, and only you, will be able to maintain, re-use or even exand your workflows!
Here we go…:
Documentation, Labeling, Description Fields
Avoid Documentation, and use the default labels for workflow elements. So one has really click into each element, read the code, see the bindings to figure out what happens here.
Be aware of the Description fields! They are shown in so many different places (when you re-use the elements, mouse-over in the schema, for documentation, …), that your really want to avoid this disclosure of “what this element is for”.
For the usage of System.log(), System.debug() and co. you have the choice:
- Don’t log at all! Your NoOps-Team will thank you for that.
- Log everything! It’s always a good challenge for the NoOps-Team to find the really important messages in hundrets of lines with traced-out variables (Eastern is coming!)…
- Just log values! The value of a variable is what’s interesting. Nobody wants to know what variable it is… System.log(myVariable) does the trick.
- Pro-Tip: You can even improve confusion by logging WRONG things, e.g. when you copy&paste scripts to re-use it in another context.
Especially important for Library-Workflows which are intended to be called by other Workflows:
Hardcoding values in the script, not exposing important parameters as INPUT-parameters and creative usage of the data types ANY and Properties (of course whithout proper documentation) will ensure that it’s you, and only you, who can re-use the workflow.
Use the default names “actionResult” and “errorCode” when binding Action elements and Exception paths…
Forget about the “Add note…”-Feature! Structuring workflow part with coloured background just creates a better visual structure for the workflow.
Duplicate Workflows for small adjustments! This helps to keep your work big if something has to change in there for the next version.
Don’t use too many Workflow Folders, or clear labes for them! Leave it to the user to figure out which workflows are intended to be called manually, and which ones are just the “drivers” for them.
Create hidden dependencies! Calling Actions or nested Workflows not via the corresponding Elements, but within scriptable tasks creates nice surprises if one is changing the called.
You can find a long list of tips for that here: http://thc.org/root/phun/unmaintain.html
Forget vCO, just do scripting!
Who needs the visual, self-explaning graphical flowcharts of vCenter Orchestrator when you can to something like this??:
HAPPY APRIL FOOLS’ DAY!!!
Special Greetings to my mates in Sofia 😎 : Please do not take that criticism of some parts of the vCenter-Plugin-Library personal! I know it’s an hard challenge to maintain this inherited aged content . You do a great job, especially with all the new “written-from-scratch” Plugins! Keep them coming!!! 😀
Comment on the post and share your finest ideas how to create poor workflows! 😈