/
Creating a Workflow

Creating a Workflow

Scope

  • Workflow Inputs - entire workflow execution. Inputs are not modified during the course of a workflow execution.

  • Workflow Variables - entire workflow execution. You can modify the values for variables during a workflow execution.

  • User defined Plugin Inputs and Outputs - specific plugin execution for endpoint.

Use unique names for Workflow Inputs, Variables and any user defined Plugin Input or Outputs to avoid any confusion.

Select Workflows from the menu. To create a new workflow, click the plus icon in the Workflows navigation tree. The grid icon will change the navigation tree to sorted flat view.

In the workflow editor, you will see two sections titled Workflow Details and Workflow Properties. The Workflow Details section provides the basic definition for the workflow, as described in the table below.

Field

Required

Description

Field

Required

Description

Workflow Name

Yes

The name of the workflow.

Workflow Type

Yes

The type of workflow (Build, Deploy, Pre-deploy, Test Definition, Utility or Other). Other is reserved for workflows that will be invoked exclusively by parent workflows.

Workflow Group

Yes

Used to categorize workflows into folders.

Workflow Subgroup

Yes

Used to further categorize workflows into subfolders.

Active Version

No

Indicates the active version of this workflow (read-only).

Description

No

An optional description for the workflow.

Workflow Properties

The Workflow Properties section provides the ability to add custom properties for a workflow. Plugins generally provide most of the properties, but it is useful to have custom properties specifically when using plugins like Shell, Groovy, Jython, etc. These properties will then be available for setting values on either the referencing project or target (depending on the selected scope). For example, if you need to define a reusable workflow that deploys files to a specific folder depending on what project is being deployed, in that case, you can add a property to define DEPLOY_FOLDER at the Project scope.

To create a new workflow property, click the Add button. There are two options, creating a New Property or sharing an Existing Property from another workflow. When sharing an existing property you can also select a property defined by a plugin, as a means of convenience. In this case, the referenced plugin property is read-only and cannot be modified.

Choosing Existing Property will display a popup with a drop down menu of available properties.

Selecting a plugin property will add a row to the table populated with the data for that property. The property will not be editable if the plugin property is added. You can add a custom existing property that was created as part of another workflow here as well, in which case that property is editable from both workflows as it is being shared.

Choosing New Property will produce an empty row on the table, populate the values using the table below.

Added by and Added On columns indicate user that added property to workflow properties list.

Enter values for the workflow property as described in the table below. Some property definition values are available in popup (click Pencil icon to access all details of property).

Field

Required

Description

Field

Required

Description

Code

Yes

User-defined code that identifies this property, which is used in the workflow and/or plugin execution.

Note: CODE attribute only allows CAPITAL LETTERS, NUMBERS, and UNDERSCORE

For a custom property it makes sense to prefix with company name like COMPANY1, COMPANY2 etc. Flexagon Plugin properties are prefixed with FD.

Display Name

No

Display name, which is used on the property pages, etc.

Property Scope

Yes

Whether the property scope is Target or Project. Default is Target.

If you select Project scope, then the value for the property is defined for each Project on the project properties screen.

If you select Target scope, then the value for the property is defined on the topology for each applicable Target.

Description

No

A description for the property.

Data Type

Yes

The property's data type. Set to String by default.

Sub Data Type

No

Allows the user to provide additional validation for Directories, JDBC URLs, and URLs.

Encrypted

Yes

Whether the property is encrypted or not. Encrypted property values will not display on the screen or be readable in any of the logs. Set to No by default.

Display Details

Rows

No

Display attribute that defines the number of rows in the input field on the Property page.

Columns

No

Display attribute that defines the number of columns in the input field on the Property page.

List Data CSV

No

Allows the user to define a comma-separated list of values that will be displayed in the Workflow Request page. If given, a Drop-down component will be displayed on the Property page.

Multi Select

No

Determines if multiple items of the List Data CSV values can be selected.

Validation Details

Required

Yes

Whether the Property is required or not. Defaults to No.

Length

No

For properties with String data type, this controls length of value being entered.

Min Value

No

User can control the minimum value for data types such as Integer, Float, Double and Long.

Max Value

No

User can control the maximum value for data types such as Integer, Float, Double and Long.

Default Value

No

Default value can be entered as Groovy script or literal. When using Groovy script, following Groovy variables are available:

  • FD_PROJECT_NAME

  • FD_APPLICATION_NAME

  • FD_ENVIRONMENT_CODE

  • FD_TARGET_GROUP_CODE

Validation Groovy Script

No

Enter Groovy script to define validation for property value. The script should return true or false to indicate validation success or failure.
Groovy script can use these variables:

  • Value – value entered by user for property.

  • ValidationMessage – script can set specific error message in attribute, only used if script returns false.

Updated By

N/A

The user who last updated the property (read-only).

Updated On

N/A

The date/time in which the property was last updated (read-only).

Actions

N/A

Contains the icon to remove and edit the property.


Click the Save button to save the changes. Note that the Definition tab is now enabled. Click the Definition tab to begin modelling the workflow, which is covered in detail in subsequent sections.

Once finished configuring the workflow definition click the Save button to save the changes. To activate the workflow version, making it the live version upon execution, click the Activate button. Note that once you activate a workflow version it is locked from any further edits. To make changes you will first need to create a new version by clicking the Make Copy button.

Workflow Variables

A workflow variable is transient to a workflow execution, and is used to hold any required intermediate state. Example usages for workflow variables include loop counters, assigning error codes, or holding the value of a plugin output. Note these are available within the workflow only, and are not available for use by plugins.

To access the workflow variables, click the  button in workflow definition toolbar. Click the Create button to create a variable.


Enter values as described in the table below.

Field

Required

Description

Field

Required

Description

Code

Yes

The name of the workflow variable.

Data Type

Yes

The data type of the workflow variable.

Encrypted

Yes

Whether the variable is encrypted or not. Encrypted variables values will not display on the screen or be readable in any of the logs. Default is No.

Initial Value

No

An optional default initial value for the workflow variable.

Return as Output

Yes

Indicates whether the value of this variable should be returned as an output. Used exclusively by child workflows to return a value to its parent. Default is No.

Constant

Yes

If a variable is marked as constant its value cannot be changed. Any attempt to set the value of a constant variable will result in an error.

To delete a workflow variable, select an existing variable and click the Delete button.

Workflow Inputs

A Workflow Input is used to pass user defined data into a workflow. When a workflow request is submitted by a user they will be prompted to enter values for the configured inputs. If a workflow is invoked by a parent workflow the values for the inputs must be configured at development time. An example usage for a workflow input would be allowing the user or parent workflow to specify the branch or tag to use for an SCM operation. Note these are available within the workflow only, and are not available for use by plugins.

To access the workflow inputs, click the  button in workflow definition toolbar. Click the Create button to create a new input.


Enter values as described in table below.

Field

Required

Description

Field

Required

Description

Code

Yes

User-defined code that identifies this input, which is used in the workflow.

Display Name

No

Display name of the workflow input.

Description

No

A description for the input.

Data Type

Yes

The data type of the workflow input.

Encrypted

Yes

Whether the input is encrypted or not. Encrypted input values will not display on the screen or be readable in any of the logs. Default is No.

Display Details

Rows

No

Display attribute that defines the number of rows in the input field on the Property page.

Columns

No

Display attribute that defines the number of columns in the input field on the Property page.

List Data CSV

No

Allows the user to define a comma-separated list of values that will be displayed in the Workflow Request page. If given, a Dropdown component will be displayed on the Property page.

MultiSelect

No

Determines if multiple of the List Data CSV values can be selected.

Validation Details

Required

No

Whether the Property is required or not. Defaults to No.

Length

No

For String data type, this controls length of value being entered.

Min Value

No

User can control the minimum value for data types such as Integer, Float, Double and Long.

Max Value

No

User can control the maximum value for data types such as Integer, Float, Double and Long.

Initial Value

No

An optional default initial value for the workflow input.

Validation Groovy Script

No

Enter Groovy script to define validation for the input. The script should return true or false to indicate validation success or failure. See an example.
Groovy script can use these variables:
EnvironmentCode – environment for deployment request.
Value – value entered by user for input.
ValidationMessage – script can set specific error message in attribute, only used if the script returns false

To delete a workflow input, select an existing input and click the Delete button.

Workflow Steps

The workflow editor provides a drag-n-drop interface for constructing build and deploy processes, which can be composed of plugin operations, other sub-workflows, and basic workflow operations such and variable assignments, conditionals, and looping constructs.


The main workflow editor is displayed in the center of the screen. The FlexDeploy workflows are available in the Workflows navigation tree on the left. The basic Workflow Operations are available in the upper right-hand pane. The available Plugin Operations are available on the lower right-hand pane.

To add a new step to the workflow, drag a workflow or plugin operation onto the workflow editor and drop it on the arrow located between the two steps where you want to place it. Configure the fields in the subsequent workflow step editor and click the OK button to save. See subsequent sections for specific instructions pertaining to each workflow operation type.

Lookup Script Variables

Many workflow steps allow the user to enter expressions, often these expressions require the use of variables, inputs or properties, but it can be difficult to remember the exact variable, input or property.  Just click on the Lookup Script Variables icon: 

The following window will open.  As you type the script variable, it will filter the entire list of available inputs, properties, and variables to only those that contain the string you entered. Select one variable from suggestions. Press the Copy and Return button to make the variable name be available to paste (Ctrl + V) into the expression.

Assign

The Assign step provides the ability to assign a value to a workflow variable or a property. Drag the Assign workflow operation onto the workflow editor, and configure its parameters as depicted in the table below. Property values that are overridden will keep the new value for the rest of the workflow execution.

Field

Required

Description

Field

Required

Description

Step Name

Yes

The display name of the step to appear in the workflow editor.

To (left operand)

Yes

The workflow variable to assign a value to.

From (right operand)

Yes

The value of an assignment can be one of the following:

  • A constant value

  • A referenced value of another variable, input, or property1

  • A Groovy Script expression which can include references to another variable, input, or property2

1 Properties from another target group can be qualified by using target group code followed by a "_", prior to the property name (e.g. TGP1_MY_PROPERTY).
2 Groovy Script expressions may include variables, inputs, or properties as defined above (e.g. FName + ' ' + LName).

Wait

The Wait step provides the ability to halt the workflow for the specified number of milliseconds. Drag the Wait workflow operation onto the workflow editor, and configure its parameters as depicted in the table below.

Field

Required