using Adaptavist Script Runner plugin > Behaviour
def desc = getFieldById ("description")
def defaultValue = """ *Some text in bold*
since we have a multiline string, we can put some more
but keep it short, this is a template...
What / Why / How ...""".replaceAll(/ . /, '')
if (! underlyingIssue.descrption) {
desc.setFormValue(defaultValue)
}
Affichage des articles dont le libellé est groovy. Afficher tous les articles
Affichage des articles dont le libellé est groovy. Afficher tous les articles
vendredi 10 janvier 2020
mardi 1 octobre 2019
JIRA - find a plugin usage in a Workflow (groovy Script Runner + SQL version)
Know where/if a plugin is used. Both have to be adapted to match a specific plugin.
First version gives more data but requires ScriptRunner.
Second version only uses SQL, but is less extensive.
You need to know what you're looking for : com.innovalog.jmwe.jira-misc-workflow-extensions
Script Groovy
Adapted from : https://answers.atlassian.com/questions/205094/how-to-find-all-workflows-which-are-using-postfunctions-of-a-plugin
import com.atlassian.jira.component.ComponentAccessorimport com.atlassian.jira.workflow.JiraWorkflowimport com.atlassian.jira.workflow.WorkflowManagerimport java.util.regex.Matcher String searchText = 'com.innovalog.jmwe.jira-misc-workflow-extensions' WorkflowManager workflowManager = ComponentAccessor.getWorkflowManager()Collection<JiraWorkflow> workflows = workflowManager.getWorkflows() String result = "Workflow;Function;Type;Action;Step\r\n<br/>" workflows.each{workflow -> def workflowXml = workflow.descriptor.asXML() Matcher m = workflowXml =~ /${searchText}/ if (m.find()) { String workflow_name = "${workflow.name}${if(!workflow.isActive()){";(inactive)"} else ';active'}${if(workflow.isDraftWorkflow()){"(draft)"} else ''}" def wf = new XmlParser().parseText(workflowXml) List<Node> wf_flat = wf.depthFirst() wf_flat.each{ if (it.text() ==~ /.*${searchText}.*/){ result += "$workflow_name;${getNodeInfo(it,searchText)}\n\n<br/>" } } }}result String getNodeInfo(Node n, String search) { String nodetext = '' nodetext += "${n.text() - search}" def p = n.parent() while (p) { switch (p.name()) { case '"post-functions"': nodetext += ";post-function "; break case 'validators': nodetext += ";validator "; break case 'conditions': nodetext += ";condition "; break case 'action': nodetext += ";${p.attribute('name')} (${p.attribute('id')})"; break case 'step': nodetext += ";${p.attribute('name')} (${p.attribute('id')})"; break case 'global-actions': nodetext += ";GLOBAL "; break case 'initial-actions': nodetext += ";INITIAL "; break } p = p.parent() } return nodetext} |
SQL Query
SELECT workflowscheme.name, workflowschemeentity.scheme, issuetype.pname, workflowschemeentity.issuetypeFROM issuetype, workflowschemeentity, workflowschemeWHEREissuetype.id = workflowschemeentity.issuetype andworkflowscheme.id = workflowschemeentity.scheme and workflowschemeentity.workflow in (SELECT jiraworkflows.workflowname FROM jiraworkflows WHERE jiraworkflows.descriptor like '%com.company.plugin%'); |
vendredi 7 juin 2019
JIRA Script Runner log debug
snippet of code to use the output logs in ScriptRunner Adaptavist groovy scripts
ScriptRunner log.debug
| tool | ScriptRunner for JIRA |
|---|---|
| version | 8.1.1 |
| use case | log.debug SR script |
/***********/import org.apache.log4j.Loggerimport org.apache.log4j.Level def log = Logger.getLogger("com.scriptname")log.setLevel(Level.DEBUG)/***********/ //and then, for example to print the variable tremlog.debug "trem=${trem}"
|
example :
lundi 30 janvier 2017
JIRA Script Runner / split cascading field in two text fields
JIRA 7.1.7
Script Runner 4.3.16
Script Runner 4.3.16
import com.atlassian.event.api.EventListenerimport com.atlassian.jira.component.ComponentAccessorimport com.atlassian.jira.event.issue.AbstractIssueEventListenerimport com.atlassian.jira.event.issue.IssueEventimport com.atlassian.jira.event.type.EventDispatchOptionimport com.atlassian.jira.issue.IssueManagerimport com.atlassian.jira.issue.CustomFieldManagerimport com.atlassian.jira.issue.MutableIssueimport com.atlassian.jira.issue.fields.CustomFieldimport org.apache.log4j.Loggerdef cfNameCascading = "Cascading Field Name";def cfNameFirst = "Cascading Field Name : part 1";def cfNameSecond = "Cascading Field Name : part 2";IssueManager issueManager = ComponentAccessor.getIssueManager()CustomFieldManager customFieldManager = ComponentAccessor.getCustomFieldManager()/** Get the different CF objects**/CustomField cfCascading = customFieldManager.getCustomFieldObjectByName(cfNameCascading)CustomField cfFirst = customFieldManager.getCustomFieldObjectByName(cfNameFirst)CustomField cfSecond = customFieldManager.getCustomFieldObjectByName(cfNameSecond)/** Get Cascading Field values (map) **/Map cfVal = issue.getCustomFieldValue(cfCascading) as Mapif (cfVal) { String valFirst = cfVal.get(null); String valSecond = cfVal.get("1"); List allValues = cfVal.values() as List; log.info("First - second: $valFirst - $valSecond"); log.info("All: $allValues"); /** Set each separate CF **/ issue.setCustomFieldValue(cfFirst, valFirst); issue.setCustomFieldValue(cfSecond, valSecond); /** update the issue **/ issueManager.updateIssue(event.getUser(), issue, EventDispatchOption.DO_NOT_DISPATCH, false);} else { log.info("Custom field not present on this issue")}
Inscription à :
Commentaires (Atom)
