Versions Compared

Key

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

You might find Smart Checklist integration with ScripRunner useful for updating checklists using automated scripts. Below you can find the example of adding a checklist to a Jira Issue by means of updating Issue Property with the key com.railsware.SmartChecklist.checklist. 

...

Code Block
languagegroovy
themeMidnight
titleScriptRunner
linenumberstrue
def issueKey = 'SAM-8'
def propertyKey = 'com.railsware.SmartChecklist.checklist'
def propertyValue  = '"- ToDo List\\n+ Checked\\nx Skipped\\n~ In Progress\\n# Another ToDo List\\n- Unchecked\\n> Quote line 1 https://rw.rw\\n> Quote line 2\\n> Quote line 3\\n"'

def result = put('/rest/api/2/issue/' + issueKey + '/properties/' + propertyKey)
        .header('Content-Type', 'application/json')
        .body(propertyValue)
        .asString()
if (result.status == 204) {
    return 'Success'
} else {
    return "${result.status}: ${result.body}"
}


Result

Image RemovedImage Added


Set Checklist depending on Custom Field Value after Issue Creation

...

Assume that you have a custom field named "Environment" with 2 values: Production/Staging. So you expect that while adding a new issue - you'll have a proper checklist assigned.

Image RemovedImage Added


Implementation flow

  1. Go To Workflow Editor
  2. Choose "ScriptRunner Post-Function" (Runs a script in a post-function, or a built-in script)
  3. Choose "Run Script" (Run arbitrary code on transition)
    Image RemovedImage Added
  4. Add inline Script Code


    Image RemovedImage Added



    Code Block
    languagegroovy
    themeMidnight
    titleScriptRunner
    linenumberstrue
    //package com.adaptavist.sr.cloud.samples.events
    def issueKey = issue.key
    def newSummary = 'Updated by a script'
    def cfName = 'Environment'
    
    //get custom field of "seelct" type
    def customFields = get('/rest/api/2/field')
            .asObject(List)
            .body
            .findAll { (it as Map).custom } as List<Map>
            
    def cfEnvironmentId = customFields.find { it.name == cfName }?.id
    def cfEnvironment = issue.fields[cfEnvironmentId]
    
    //get custom field
    def environment = cfEnvironment['value'] as String
    
    def propertyKey = 'com.railsware.SmartChecklist.checklist'
    def propertyValue
    
    //compare field values
    if (environment == 'Production') { 
        propertyValue  = '"- ToDo List\\n+ Checked\\nx Skipped\\n~ In Progress\\n# Another ToDo List\\n- Unchecked\\n> Quote line 1 https://rw.rw\\n> Quote line 2\\n> Quote line 3\\n"'
    }else if (environment == 'Staging') { 
        propertyValue  = '"- Uno\\n+ Dos\\nx Tres\\n~ Quatro\\n"'
    }
    logger.info('property' + environment)
    
    def result = put('/rest/api/2/issue/' + issueKey + '/properties/' + propertyKey)
            .header('Content-Type', 'application/json')
            .body(propertyValue)
            .asString()
    if (result.status == 204) {
        return 'Success'
    } else {
        return "${result.status}: ${result.body}"
    }


  5. Save the script 
    Image RemovedImage Added
  6. Publish workflow

Result

The needed checklist is created.

...