Persistent Variables Outside the Issue Context

The usage outside the issue context is very similar. However, due to the nature of the persistent keyword, the variable, in this case, becomes a global variable. Take for instance the following script, run from the SIL™ Runner gadget:

persistent number counter = 1; persistent boolean flag = false; TEST-1.description += "\n" + counter + "(" + flag + ")"; flag = !flag; counter ++;


The counter variable will be incremented as before (starting from 1) and the text above will be re-appended to the issue 'TEST-1'. However, if we change just the issue, say to 'TEST-2', the counter will retain its previous value, incrementing from the value it stopped when you run the above for the TEST-1 issue. Just try it!

Persistent variables are effectively global if used outside of the issue context.

Example Use Cases

Stored Passwords

It is not a good practice to have passwords stored in your script. One way to achieve this is to store the password in a persistent variable. To create the password as global variable run the following script once through the SIL Runner Gadget or the SIL Scheduler:

persistent string apiPassword = "password132";

Then, in a script where the password is required, you can retrieve the value using the getPersistentVar() function.

HttpRequest request; HttpHeader authHeader = httpBasicAuthHeader("admin", getPersistentVar("apiPassword")); request.headers += authHeader; ...

File Path

If you commonly use functions that require the full file path of a file you can save yourself a step by storing the root file path as a persistent variable. To create the password as global variable run the following script once through the SIL Runner Gadget or the SIL Scheduler:

persistent string rootPath = "/var/atlassian/application-data/jira/";

Then, in your script, you can retrieve the value.

string path = getPersistentVar("rootPath") + "silprograms/calls/test.sil";