Versions Compared

Key

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

Before using SIL Script Custom Field check out the Simple Issue Language documentation for a better grasp of SIL usage and capabilities.

...

Go to the Administration page, choose Custom Fields link and add a SIL script custom field.

Image RemovedImage Added

After you create the field, go to the corresponding Configure link. A page like in the image below will appear:

Image RemovedImage Added

Click on the Edit SIL Script link to see the SIL editor.

Image RemovedImage Added

Click on the Save button and the script is associated to the current custom field.

Image RemovedImage Added

The value returned by the script will be the value of the custom field.

 


Warning

The script is read-only. You must avoid changing any issue values in the script. In fact, you may change the issue variables BUT they will not be changed (issue will not be saved). However, routines may have side effects.

...


Thread Local Caching

Note

If you are not fully aware of what this implies, it is recommended that you leave the option off.

...

Code Block
interval age = currentDate() - created;
return "This issue is " + age + " old";

Image Modified

 


Number of subtasks

Code Block
number noSubtasks = size(subtasks(key)); 
return "This issue has " + noSubtasks + " subtasks";

Image Modified

...


Average Issue Age

Code Block
date now = currentDate(); // just to make sure we use the same reference date
string [] subtasks = subtasks(key);
interval age;
for(string task in subtasks){
 age = age + (now - %task%.created);
}
return "Average age of subtasks is " + (age / size(subtasks));

Image Modified

...


Results from Database

Code Block
//select the city from the specified region
return sql("TestSQL", "select city from cities c, district d, region r where c.iddistrict=d.id and d.idregion=r.id and r.region='Bucharest'");

Image Modified

...


Status Age

Code Block
string field_name = "status";
string[] field_history = fieldHistory(key, field_name);
number n = arraySize(field_history);
date startDate; 
if (n > 0) {
 startDate = arrayGetElement(field_history, n - 2);
 return "Current issue has been " + status + " for " + (currentDate() - startDate);
}
return "Current issue has been " + status + " for " + (currentDate() - created);

Image Modified

...


Issue Statuses Count

Code Block
string[] statuses;
string[] statusHistory = fieldHistory(key, "status");
for(number i = 1; i < size(statusHistory); i = i + 2) {
 string statusStr = getElement(statusHistory, i);
 statuses = addElementIfNotExist(statuses, statusStr);
}
return size(statuses);

Image Modified

 


Issue Assignees

Code Block
string[] assignees;
assignees = addElementIfNotExist(assignees, userFullName(assignee)); 
string[] assigneeHistory = fieldHistory(key, "assignee"); 
for(number i = 1; i < size(assigneeHistory); i = i + 2) {
 string assigneeName = userFullName(getElement(assigneeHistory, i));
 assignees = addElementIfNotExist(assignees, assigneeName); 
}
return assignees;

Image Modified


Search Issues

If you want a Sil Script Custom Field to be searchable you must select a Search Template for that custom field.

Image RemovedImage Added

If the custom field already exists, in Administration->Custom fields, click Edit for the desired custom field, and choose the proper Search Template for your custom field according the value type returned by it.

If you are about to add a new Sil script custom field, you can choose the Search Template at the step 'Create Custom Field - Details (Step 2 of 2)'.

 


Note

Perform a re-index
After changing the Search Templates for all the custom field that you want, perform a re-index in JIRA for the search to work fine.

After a searcher has been set for the Sil Script custom field, you can perform a search for all issues containing the desired value for that custom field.

Image RemovedImage Added


For a detailed explanation on searching issues in JIRA, you can check the Searching for Issues tutorial from the JIRA documentation.