Jenkins has a $CAUSE variable available to freestyle build jobs.
How can I access this or something similar in workflow?
My team makes use of it in email out
It looks like Workflow builds don't have this variable injected.
However you can retrieve the required info from currentBuild.rawBuild object using hudson.model.Run.getCause() or hudson.model.Run.getCauses() method.
Example:
Workflow script:
println "CAUSE ${currentBuild.rawBuild.getCause(hudson.model.Cause$UserIdCause).properties}"
results with this output:
Running: Print Message
CAUSE [userName:John Smith, userId:jsmith, class:class hudson.model.Cause$UserIdCause, shortDescription:Started by user John Smith]
Other Cause subtypes can be found in the javadoc.
There is also a good get-build-cause example which is based on this answer in the jenkins Pipeline Examples repository.