How can i extract global value of checklist

laumain jerome December 6, 2016

Hello,
with groovy, how can i extract options from checklist?

i know, how i can extract value of option , but this show me only the name of the item like 'priority , not the option "checked", "mandatory" etc..
How can i do?
thanks for you reponse

3 answers

0 votes
Yves Riel [Okapya]
Marketplace Partner
Marketplace Partners provide apps and integrations available on the Atlassian Marketplace that extend the power of Atlassian products.
December 9, 2016

Bonjour Jérôme,

Je n'utilise pas Groovy donc je ne peux valider la syntaxe mais je vais quand même essayer smile

Par contre, il y a souvent confusion avec le mot option (valeur globale pour toutes les Checklists) donc je ne suis pas certains que le code fasse exactement ce que vous voulez faire mais voici:

 

import com.atlassian.jira.ComponentManager
import com.atlassian.jira.component.ComponentAccessor
import com.atlassian.jira.issue.CustomFieldManager
import com.atlassian.jira.issue.fields.CustomField
import com.atlassian.jira.issue.Issue


def customFieldManager = ComponentAccessor.getCustomFieldManager()
   
def cf = customFieldManager.getCustomFieldObjectByName("Association - statuts conformes")
def cfType = cf.getCustomFieldType()
def checklistItems = issue.getCustomFieldValue(cf)
   
checklistItems.each { checklistItem ->
	// To get the name of the item
	checklistItem.name
 
	// To get the checked status
	checklistItem.isChecked()
 
	// To see if it is mandatory
	checklistItem.isMandatory()
 
	// To conditionally do something if it is an option
	if (checklistItem.isOption()) {
 
	}
			
	// To retrieve a JSON representation of the checklist item for storage
	cfType.getStringFromSingularObject(checklistItem)
 
	// To create a new checklist item from a JSON String
	cfType.getSingularObjectFromString('{"name" : "My Checklist Item", "checked" : true, "mandatory" : false}')
}
return
laumain jerome December 9, 2016

bonjour,

merci ça m' a l'air parfait smile.

je n'ai plus qu'à tester tout ça.

(en fait il me manquait les méthodes associées à votre objet checklistItem.

par contre j'ai toujours pas vraiment compris le isOption.

merci beaucoup pour la rapidité des réponses!

c'est un super plug in.

 

ps: j'avais posé une autre question par contre sur le fait de rajouter par workflow des checklists ... mais que celles-ci n'apparaissaient que si il existait au moins un item global déjà paramétré.
je ne sais pas si c'est une restriction de JIRA ou de votre plug in? 

Yves Riel [Okapya]
Marketplace Partner
Marketplace Partners provide apps and integrations available on the Atlassian Marketplace that extend the power of Atlassian products.
December 9, 2016

Pour les options, rérérez-vous au lien suivant dans la documentation. Pour ce qui est de l'autre question, je vais y répondre mais où elle a été posée. Je n'ai jamais été avisé de la question car vous n'aviez pas mis le label de l'add-on.

laumain jerome February 6, 2017

Bonjour yves,

je reviens tardivement vers vous concernant ma problématique.

j'ai copié le code ci-dessus, mais il ne reconnait pas checklistItem.name.

j'ai pensé importer votre class ChecklistItem  : 

import com.okapya.jira.customfields.ChecklistItem

mais à ce moment, il ne connait pas non plus la Class dans scriptRunner.

vous a t on remonté cette problématique?

merci.

 

Yves Riel [Okapya]
Marketplace Partner
Marketplace Partners provide apps and integrations available on the Atlassian Marketplace that extend the power of Atlassian products.
February 6, 2017

Bonjour Jérome,

Probablement mon erreur: Java vs Groovy smile 

Pourrais-tu essayer avec

checklistItem.getName()

 

Pour ce qui est de l'import, je ne connais pas vraiment Groovy.

laumain jerome February 6, 2017

j'ai pensé à ça aussi, mais pas plus de résultat.

En fait, comme ScriptRunner ne peut importer la class, il ne reconnait pas la méthode getName().

Si je passe en Java, ça devrait donc fonctionner.

j'ai plus qu'à tester smile.

merci tout de même.

bonne journée.

0 votes
laumain jerome December 7, 2016

hello,

i saw that. I realised my script with this code.

But i have always my problem sad

i can extract the option of items (name, checked, mandatory) :

my code :

(Script Field)

import com.atlassian.jira.ComponentManager
import com.atlassian.jira.component.ComponentAccessor
import com.atlassian.jira.issue.CustomFieldManager
//import com.atlassian.jira.issue.fields.CustomField
import com.atlassian.jira.issue.fields.*
import com.atlassian.jira.issue.Issue
import com.atlassian.jira.config.SubTaskManager
import com.atlassian.jira.issue.customfields.manager.OptionsManager
import com.atlassian.jira.issue.customfields.option.Options
import com.atlassian.jira.issue.customfields.option.*
//return "";
def result = "";
def customFieldManager = ComponentAccessor.getCustomFieldManager();  
def OptionsManager optManager = ComponentAccessor.getOptionsManager();
  
def cf = customFieldManager.getCustomFieldObjectByName("Association - statuts conformes")
def cfVal = issue.getCustomFieldValue(cf)
def fieldConfig = cf.getRelevantConfig(issue)
def cfType = cf.getCustomFieldType()
def valueOb = cfType.getDefaultValue(fieldConfig);
  
def option = optManager.getOptions(fieldConfig)
def optionCfgTest = cf.getConfigurationItemTypes()
def List<Option> optionsList = option.getRootOptions();
def List<String> buildOptions = new ArrayList<String>();
 
if(optionsList.size()>0){
 
	
	for(Option optionI : optionsList){
 
	buildOptions.add(optionI.getValue());
    result = buildOptions
	}
}
return valueOb

I tested several possibilities.
Result or valueOb gives me, the same result, I just saw a list of the name of the article like this :

[Article Objet dans les statuts : l'objet de l'association est-il bien la promotion de l'enseignement et de la connaissance scientifique ?, Article Ressources dans les statuts : les ressources autorisées incluent le paiement de prestations de services rendus ?, Absence de risque de conflit d'intérêt avec l'entité organisatrice du stand (ex : un conseil de l'ordre) rendant l'opération inappropriée].

how can i see :

[{"name" : Article Objet dans les statuts : l'objet de l'association est-il bien la promotion de l'enseignement et de la connaissance scientifique ?,"checked" : false, "mandatory" : false}]

thanks for your help

Yves Riel [Okapya]
Marketplace Partner
Marketplace Partners provide apps and integrations available on the Atlassian Marketplace that extend the power of Atlassian products.
December 8, 2016

Bonjour,

It would definitely help to know what you are trying to do as it is not clear from the code itself. Why do you want to have the JSON representation of the field?

From the script, you are always pulling out the options used to configure the field. Not the issue values themselves. That is why Result or valueOb return the same values.

If I understand you correctly, what you should be doing is using cfVal and not valueOb. cfVal should return a list of ChecklistItems. Loop over the object in the list and call isOption() on each one. When the return value is true, then call "checked" to see if is checked or not.

En espérant que ça vous aide ...

laumain jerome December 8, 2016

Bonsoir,

je me permet de vous répondre en français (mon anglais n'étant pas fameux smile ).

comment faire pour boucler sur un objet? (j'ai testé de split avec "," dans une liste, mais scriptrunner me signale que je ne peux le faire)

auriez vous svp la syntaxe avec isOption()?

Mon besoin, est de boucler sur chaque item de la checklist, sans connaitre le nom de l'option.

merci pour vos renseignements (et cool les petits mots en français smile ).

cdt,

jérôme

0 votes
Yves Riel [Okapya]
Marketplace Partner
Marketplace Partners provide apps and integrations available on the Atlassian Marketplace that extend the power of Atlassian products.
December 7, 2016

Hi,

You should take a look at this other thread. It should guide you in doing so.

Cheers,

Suggest an answer

Log in or Sign up to answer
TAGS
AUG Leaders

Atlassian Community Events