Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

...

...

...

...

...

...

...

This section has use cases which help you in understand the usage of Validators provided by JMWE.

On this page:

Table of Contents

Field has been modified validator

This validator can be used to block the user from progressing to a destination status unless a field has been modified.

Sample use cases:

(lightbulb)(lightbulb) Validate the change in Resolution provided when closing an issue

  • Add the Field has been modified validator to the Close transition.

  • Select Resolution from Field.

Expand
titleSteps
Panel

(lightbulb) Validate that the Fix Version/s has been modified when the resolution is "Fixed"

  • Add the Field has been modified validator to the Close transition.

  • Select Fix

Versions from
  • Versions from Field.

  • Select the Conditional execution section

  • Input the following script: 

Expand
titleSteps
Panel
Code Block
issue.getAsString("resolution") == "Fixed"

Field is required validator

This validator can be used to ensure that a field has a value during a transition.

Sample use cases:

(lightbulb)(lightbulb) Validate the Affects Version/s and Assignee fields for a non-empty value on creating a Bug.

  • Add the Field is required validator to the Create transition.

  • Select Affects Version/s and Assignee from Fields.

Expand
titleSteps
Panel

Comment required validator

This validator can be used to force the users to enter a comment while transitioning to destination status.

Sample use cases:

(lightbulb)(lightbulb) Validate that a comment is entered when rejecting a Bug fix.

  • Add the Comment required validator to the Reject transition of the Bug workflow.

Expand
titleSteps
Panel

...

(lightbulb) Validate that a comment is entered when the resolution is "Won't Do"

  • Add the Comment required validator to the Done transition

  • Select the Conditional execution option

  • Input the following script: 

Expand
titleSteps
Panel
Code Block
issue.getAsString("resolution") == "Won't Do"

Field has single value validator

This validator can be used to check that a multi-valued field does not have more than one value during a transition.

Sample use cases:

Lightbulb on (on)(lightbulb) Validate the Fix Version/s for a single value on an issue when the issue is fixed.

panel
Expand
titleSteps
  • Add the Field has single value validator to the Close transition.

  • Select Fix Version/s from Field.

...

(lightbulb) Validate that the Component/s field has only one value if the issue type is Story

panel
Expand
titleSteps
  • Add the Field has single value validator to the Close transition.

  • Select Component/s from Field.

  • Select the Conditional execution option

  • Input the following script: 

    Code Block
    issue.issuetype.name == "Story"

Previous status validator

This validator can be used to stop the user from transitioning to a status unless the issue has previously been in a specified status in the workflow.

Sample use cases:

(lightbulb)(lightbulb) Block the transition of an issue to Close status if it has not been approved.

panel
Expand
titleSteps
  • Add the Previous status validator to the Close transition.

  • Select Approved from Previous Status

Parent status validator

This validator can be used to stop the user from transitioning to a status unless the issue's parent has been in a selected status in the workflow.

Sample use cases:

(lightbulb)(lightbulb) Block the trigger of "Start Progress" on subtasks until its parent is approved.

  • Add the Parent status validator to the Start Progress transition.

  • Select Approved from Parent Status

Expand
titleSteps
Panel


Scripted (Groovy) validator

This validator can be used to perform a validation with a groovy expression. Based on the result of the expression, the user is either allowed or blocked to transition to the destination status.

Sample use cases:

(lightbulb)(lightbulb) Block the creation of a Bug if no Attachment is provided.

  • Add the Scripted (Groovy) validator to the Create transition.

  • Write the following in the Groovy script

Expand
titleSteps
Panel
Code Block
languagegroovy
linenumberstrue
  • try {
      return issue.get("issuetype").name != "Bug" && issue.getModifiedFields()?.get("attachment")?.getNewValue()?.size() > 0
    } catch (Exception e) {
      return false
    }

(lightbulb) Validate the Cascade select for values in parent and child select dropdowns

  • Add the Scripted (Groovy) validator to the transition.

  • Write the following in the Groovy script

Expand
titleSteps
Panel
Code Block
languagegroovy
linenumbers
true
  •  issue.get("Cascade")?.get(null) != null && issue.get("Cascade")?.get("1") != null

(lightbulb) Block the approving of the Change request if it has no confluence page linked

Expand
titleSteps
  • Add the Scripted (Groovy) validator to the Approve transition.

  • Write this content in the Groovy script.

    Code Block
    issue.getRemoteLinks("confluence").size() > 0

  • Type the error message in Error message, to display if the validation script returns false

(lightbulb) Block the approval of an issue if there is no PDF attached either from before or added during the transition

Expand
titleSteps
  • Add the Scripted (Groovy) validator to the Approve transition.

  • Write this content in the Groovy script.

    Code Block
    import com.atlassian.jira.issue.IssueFieldConstants
    import com.atlassian.jira.issue.attachment.Attachment
    import com.atlassian.jira.issue.attachment.TemporaryWebAttachment
    import com.atlassian.jira.issue.attachment.TemporaryWebAttachmentManager
    
    if (issue.get("attachment").any{it.filename.endsWith(".pdf")}) 
      return true;
    
    TemporaryWebAttachmentManager attachmentManager = getComponent(TemporaryWebAttachmentManager)
    try {
        List<Long> ids = issue.getModifiedFields().get(IssueFieldConstants.ATTACHMENT).getNewValue();
        if (ids)
            return ids.any { id ->
                def attachment = attachmentManager.getTemporaryWebAttachment(id).getOrNull()
                return attachment?.filename?.endsWith(".pdf")
            }
    } catch (Exception e) {
    }
    return false


  • Type the error message in Error message, to display if the validation script returns false


Related Issues Status validator

This validator ensures that the current issue's related issues (such as linked issues, Stories of an Epic, Epic of a Story, subtasks of an issue, issues returned by a Groovy script or a JQL search, etc.) are in  are in one of the specified statuses.

Sample use cases:

(lightbulb)(lightbulb) Block the transition of the Epic to Closed status, if its stories aren't closed.

  • Add the Related issues status validator to the Close transition.

  • Select the issue link type Epic of the current issue from Which Issue(s) field.

  • Select the statuses the linked issues must be in, from Statuses

  • Add the error message, "The Stories of the Epic are not yet resolved"

Expand
titleSteps
Panel

Related Issue(s) validator

This validator ensures that a link to one (or more) issue(s) from the current issue is being created during the transition, and/or that existing and/or newly related issues (such as linked issues, Stories of an Epic, Epic of a Story, subtasks of an issue, issues returned by a Groovy script or a JQL search, etc.) have certain characteristics.

Sample use cases:

(lightbulb)(lightbulb) Block the creation of a Bug, if it is not linked to the corresponding functionality requirement.

panel
Expand
titleSteps
  • Add the Related issue validator to the Create transition.

  • Select the Issues linked to the current issue through the following link type from the Issue Link Type field.

  • Select the issue link type relates to from the Issue Link Type field.

  • Add the error message, "Associate/Link the Bug to the respective requirement ticket"