Availability
This routine is available since katl-commons 1.0 .
Syntax:
call(sysname, silprogrampath, arguments)
Description
Executes another SIL script on the current host or someother host.If sysname is equal with "local" (or is empty "") it will execute the script on the current JIRA server.
The execution will automatically define an variable named 'argv' which will contain the parameters, as a string array.
You can use return to return values back to the caller; again, a string array only. If the call is local, current issue is available. If the call is a remote call, the current context is lost (issue variables will have no meaning).
Parameters:
Parameter name | Type | Required | Description |
---|---|---|---|
sysname | string | yes | The system name. The local system (JIRA server machine) is identified by an empty string "" or by the string "local". For remote systems, it should contain the system name, as configured in the configuration page |
silprogrampath | string | yes | Full path to the program being run (absolute path, i.e. "/opt/jira/home/silprograms/myprogram.sil" or "C:/Atlassian/Jira/Home/silprograms/myprogram.sil"). |
arguments | string [] | yes | The arguments, as an array of strings |
Returns:
string []
The return from the script, as an array of strings (values that are returned using the return keyword)
Example:
//Local script, placed in a postfunction (for instance): string [] arrp = "param1|param2"; string [] rec; call("", "/tmp/printme.sil", arrp); //local call rec = call("system_remote", "c:/testme.sil", arrp); //remote call if(isNotNull(rec)) { //The following code prints: "Hello", "from", "remote", "jjupin" for(string s in rec) { print(s); } }
...........................................
//This is the remote SIl script placed in the c:/testme.sil: string p = "Hello world!"; print("Remote called P is " + p + " Parameter at index 1 is=" + arrayGetElement(argv, 1)); return "Hello", "from", "remote", "jjupin";
Notes:
For remote calls, you need additional steps (see the configuration manual).
Windows: We recommend you to use forward slashes "/" in paths instead of "\" since it will simplify your life.
Resolution of the remote system goes as follows: (as you may define the same name for a remote system in multiple places):
- Try to see if the name of the system is empty ('') or the string 'local'. If yes, it will call a local script
- Next, try to find the name of the system as defined by REST. If it is defined, it calls the REST remote system
- If it is not defined, fallback on SOAP
- If it is still not defined, error
Please see the configuration page on how you should configure the Remote Systems.
See Also: