Work Items can be customized from the Administration page to better fit your business needs. Navigate to the main work item screen and find the Administration section in the table header. Work item types, statuses, and fields will be configurable there.
Work Item Types
Work item type is a container for the work item. You can use types to group your work items together in a way that makes sense for your team or company. By default, FlexDeploy will come with “Feature”, “Bug”, “Debt”, and “Risk” types out of the box. You can choose to use to keep using those types or scrap them and create your own.
For example:
A single small unit of work from the users perspective is typically called a “Story” work item - This is not a default Type and therefore would need to be created by the FlexDeploy user if desired.
A defect in a code base is typically called a “Bug” work item
A collection of “Stories” is typically called a “Feature” work item
A collection of “Features” which requires a larger group effort is typically called a “Epic” work item - This is not a default Type and therefore would need to be created by the FlexDeploy user if desired.
Work Item Status
The work item status indicates its current place in the project’s development cycle. Users can click and select an option from the dropdown to change the status of the work item. You can also configure FlexDeploy to change the status automatically on a build or deployment execution.
A work item status is essentially a label with name and description.
Work Item Fields
Work Item Fields are used to provide additional information to your work item. The “Details” work item field group is created by default. To create a field:
Select a Work Item Field Group or create a new one. The name of the field group will display after the “Commits” section when viewing a work item.
Create a new field.
Customize the field with various parameters and/or groovy validations. This is the definition of the field, while the value is set on the work item.
Edit Field
Work item fields containing the following properties:
Property Name | Required | Description |
---|---|---|
Code | Yes | Work item field code. Uniquely identifies the field. |
Display Name | No | Work item display name. |
Description | No | Work item description. |
Work Item Types | Yes | The work item types this field will apply to. In other words, if a field is assigned the “Feature” Work Item Type, then all Work Items of type “Feature” will display that field. One or more Work Item Types can be set. |
Field Group | Yes | Work item field group. The group which contains the current field. The field group name will appear as a section on the work item. |
Field Data Type | Yes | Work item field data type sets the visual format of the field on UI along with simple validation. For more complex validation see “Validation Script”. The following data types are supported:
Example of how each input would display on the work item |
Definition Script | No | Work item definition script. This is a groovy script to set various values like defaults or basic validations. Example Definition script to set default value for the property based on work item type: // empty check if (field.value == '' || field.value == null) { if (form.type.equalsIgnoreCase("Emergency") { field.value = "Priority 1" } else if (form.type.equalsIgnoreCase("Expedite") { field.value = "Priority 2" } else if (form.type.equalsIgnoreCase("Normal") { field.value = "Priority 3" } else { field.value = "Priority 4" } } |
List Data Script | No | Work item list data script. This is a groovy script which defines a set of options the user can choose from for this fields value. List Data Script will only apply to String based fields i.e. TextField and not DateTime. The script is expecting one of 3 return types: // An array of values return ["PROD", "NON-PROD"] // A comma separated string return "Break Fix,Enhancement,Problem,Project,request,Risk remediation" // An array of ListValueDataObject // Use the constructor or setters on the ListValueDataObject objects to set appropriate values return [new ListValueDataObject("value1"), new ListValueDataObject("label2", "value2"), new ListValueDataObject("label3", "value3", "Description")] //////////////////////////////////////////////////////////////////////////////////// // ListValueDataObject has the following variables private String mLabel; private String mValue; private String mDescription; // ListValueDataObject has the following constructors public ListValueDataObject() { super(); } public ListValueDataObject(String pLabel, String pValue, String pDescription) { mLabel = pLabel; mValue = pValue; mDescription = pDescription; } public ListValueDataObject(String pLabel, String pValue) { mLabel = pLabel; mValue = pValue; } public ListValueDataObject(String pValue) { mLabel = pValue; mValue = pValue; } // ListValueDataObject has the following methods public void setLabel(String pLabel) { this.mLabel = pLabel; } public String getLabel() { return mLabel; } public void setValue(String pValue) { this.mValue = pValue; } public String getValue() { return mValue; } public void setDescription(String pDescription) { this.mDescription = pDescription; } public String getDescription() { return mDescription; } |
Validation Script | No | Work item validation script. This is a groovy script allowing for more complex validations beyond simple UI validations like isRequired or min/max value. Example Date based Validation script: // Validation script must return or true or false // ValidationMessage is a variable specific to this script which will be display on the UI if this script returns false if (form.PLANNEDSTART != null && form.PLANNEDEND != null) { if (form.PLANNEDEND.before(form.PLANNEDSTART)) { ValidationMessage = "Planned end date is not before start date " return false } } return true This script is executed when the status of a work item is changed. Status change will not go through if the validation script fails. |
Field Script Objects and Variables
Definition, List Data, and Validation Script have access to the following variables and methods which can used to retrieve values of other fields, set the value of the current field, and other functions to achieve your business requirement.
Objects | Description |
---|---|
form | Allows access to other property in the field i.e. title, keyname, status, value, etc.. |
field | Set field value or definition values. |
currentUser | The current user details flexagon.fd.model2.pojo.common.CurrentUser. |
Variables for the form object
Variables | Description |
---|---|
form.title | Title of the field for the work item. |
form.description | Description of the field for the work item. |
form.changeField | Property key name of changed field for the current work item, available when one field value is changed. |
form.status | Status name of the field for the work item. |
form.type | Work item type of the field for the work item. |
form.tags | Tags for the work item. |
form.keyname | Keyname for the work item. |
form.assignee | Assignee for the work item. |
Variables for the field object
Variables | Description |
---|---|
field.value | Returns the current field value |
field.state | Returns a map containing state information |
field.state.required | Returns the value of the required property. True or False. |
field.state.disabled | Returns the value of the disabled property. True or False. |
field.state.hidden | Return the value of the hidden property. True or False. |
field.state.maxValue | Return the value of the maxValue property. Integer. |
field.state.minValue | Return the value of the minValue property. Integer. |
field.state.precision | Return the value of the precision property. Integer. |
Methods for the currentUser object
Method | Description |
---|---|
setUserId(Long userId) | Sets the user id on the object. |
getUserId() | Returns the user id as type Long. |
setUserName(String userName) | Set the username on the object. |
getUserName() | Returns the username as a String. |
setFirstName(String firstName) | Sets the first name on the object. |
getFirstName() | Returns the first name as a String. |
setLastName(String lastName) | Sets the last name on the object. |
getLastName() | Returns the last name as a String. |
setEmail(String email) | Sets the email on the object. |
getEmail() | Returns the email as a String. |
setRoles(Collection<String> roles) | Sets the roles on the object. |
getRoles() | Returns the roles as a list of String. |