Versions Compared

Key

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


Excerpt

This tutorial will guide you through writing simple and complex Groovy conditions. The result of a scripted condition is a boolean. 

It can be used either to control the

...

This section of the tutorial will teach you writing a simple condition and test testing it in the Groovy script tester on the JMWE administration pages - Check . Let us write a simple condition to check that the priority of an issue is Critical or Highest

...

Step 2 - Write the script in the editor

  1. Write the following script in the editor.

    Code Block
    languagegroovy
    linenumberstrue
    if(issue.getAsString("priority") == "Critical" || issue.getAsString("priority") == "Highest"){
      return true
    }
    else{
      return false
    }


  2. Your script will look like this:

Step 3 - Test your script

  1. Click on Test Groovy Script.
  2. Input the issue key GIJ-3
  3. Click on Test
  4. The following result will be displayed. 
  5. Image Modified

Step 4 - Simplify your script

You can simplify the script removing the if-else and returning the result of the comparison , which is a Groovy truthy or falsy

  1. Go to the editor
  2. Replace the script with the following code:

    Code Block
    languagegroovy
    linenumberstrue
    issue.getAsString("priority") == "Critical" || issue.getAsString("priority") == "Highest"


Step 5 - Retest your script

  1. Click on Test again.
  2. The following result will be displayed. 
  3. Image Modified

Use cases

The output of the code is a boolean value. You can use this script in any relevant context, such as, Assign the issue to the Project lead only if the priority of the issue is Critical or Highest.

...

  1. Go to the Administration icon  and click on it.
  2. Go to Issues - > Workflows
  3. Locate the workflow GIJ: Process Management Workflow
  4. Edit it
  5. Click on transition Start Progress
  6. Go to the Conditions tab
  7. Edit the first condition in the list.

Step 2 - Write the script in the condition

  1. Write the following script in ValueGroovy script.

    Code Block
    languagegroovy
    linenumberstrue
    issue.get("assignee") == currentUser


  2. Your configuration should look like this:

Step 3 - Test your script

  1. Click on Test Groovy Script.
  2. Input the issue key GIJ-35
  3. Click on Test
  4. The following result will be displayed.
  5. Image RemovedImage Added

Step 4 - Save the configuration

  1. Click on Update
  2. Publish the workflowworkflow (you dont need to save a backup copy).

Step 5 - Test it on an issue

  1. View the issue GIJ-5 in a new tab.
  2. Check that the transition Start Progress is not available for a trigger on the issue GIJ-5.
  3. Click on Assign to me, to assign it to the logged in user.
  4. Check that the transition Start Progress is now available for a trigger on the issue GIJ-5. 

Use cases

The output of the code is a Boolean. You can use this script in any relevant context, such as

  • Allow Allowing progress on an issue only if the issue is assigned to the logged in user
  • Allow Allowing only the reporter of the issue to close the issue

...

  1. Go back to the previous tab.
  2. Edit the workflow in Diagram mode.
  3. Click on the Create transition
  4. Click on Post-functions
  5. Edit the second post-function in the list.

Step 2 - Write the script in the post-function

  1. Write the following script in Value.

    Code Block
    languagegroovy
    linenumberstrue
    def component = issue.getAsString("components")
    def priority = ""
    switch (component) {
     case "Finance" : priority = "Highest"; break
     case "Production Planning" || "Quality Management" : priority = "High"; break
     default : priority = "Medium"; break
    }


  2. Your script should look like this:

Step 3 - Test your script

  1. Click on Test Groovy Script.
  2. Input the issue key GIJ-5
  3. Click on Test
  4. The following result will be displayed.

Use cases

The output of the code is a String representing the priority of an issue. You can use this script in any relevant context, such as, Set setting the priority of the issue to based on the Component/s.

References