A workflow is an orchestration of steps which define a build or deployment process. These steps can be a combination of plugin operations or basic workflow operations such as variable assignment, conditionals, or looping constructs.
There are 4 main types of workflows that FlexDeploy users will work with.
Build - used for building a project. This is used to get source files from SCM or other sources and creates Artifacts that is deployed to target environment.
Pre-deploy - used for performing any activity prior to running Deploy workflow in an instance. At the end of the workflow, you can use the default output variables FD_REVIEW_REQUIRED and FD_REVIEW_GROUP to create a review task(Human Task) and assign it to one or more groups. Certain plugins have the ability to override the value of FD_REVIEW_REQUIRED automatically when used in a Pre-deploy workflow.
Deploy - used for deploying artifacts to target environment.
Utility - used for executing specific operations on target environment against specific instance. Utility workflow does not deal with any artifacts.
Workflows are built using Plugin Operations like SOA Build, WebLogic Deploy or Unix Shell as well as other constructs like If, Assign, While etc. In most cases out of box plugins are very useful, but when necessary users can use plugins like Shell, Groovy, Ant, Maven etc. to perform specific tasks.
Pre-deploy workflow will execute when a deploy request it submitted. The project should have the Pre-deploy workflow selected in the configuration screen. The workflow inputs for Pre-deploy should be setup to match the corresponding Deploy workflow of the project. The deploy workflow's inputs will show on the project deployment and release configuration screen. If they aren't also present in the Pre-deploy workflow, the data will not make it through to the deploy workflow.
The Pre-deploy workflow inputs flow into the Deploy workflow inputs. For this to work, workflow developers must use the same name and data type for the Pre-deploy output(with "Return As Output" selected) and Deploy input variables in the respective workflows.
Workflows are configured on each project which allows project to perform Build and Deploy operations and in case of Utility projects allows for execution of desired commands. The Pre-deploy workflow can be used to perform any review for certain deployments like Terraform, Database etc prior to running actual Deploy operations to eliminate any unwanted changes in an environment.
If you want to control project version based on discovery made during build workflow execution, then return FD_BUILD_VERSION output from build workflow.