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.ComponentAccessor import com.atlassian.jira.workflow.JiraWorkflow import com.atlassian.jira.workflow.WorkflowManager import 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.issuetype FROM issuetype, workflowschemeentity, workflowscheme WHERE issuetype.id = workflowschemeentity.issuetype and workflowscheme.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.Logger
import
org.apache.log4j.Level
def log = Logger.getLogger(
"com.scriptname"
)
log.setLevel(Level.DEBUG)
/***********/
//and then, for example to print the variable trem
log.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.EventListener
import
com.atlassian.jira.component.ComponentAccessor
import
com.atlassian.jira.event.issue.AbstractIssueEventListener
import
com.atlassian.jira.event.issue.IssueEvent
import
com.atlassian.jira.event.type.EventDispatchOption
import
com.atlassian.jira.issue.IssueManager
import
com.atlassian.jira.issue.CustomFieldManager
import
com.atlassian.jira.issue.MutableIssue
import
com.atlassian.jira.issue.fields.CustomField
import
org.apache.log4j.Logger
def
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
Map
if
(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 à :
Articles (Atom)