Using JavaScriptProbe for getting return value

cloudboy
ServiceNow Employee
ServiceNow Employee

Hello,

I want to read xml file from mid sever, i have created below mid server script include and calling this from a background script using javascript probe mentioned below.

I can see my background script is able to create record in ECC Queue, but my requirement is to get the XML string-- xml2String back to my calling script.

Is there a way we can return a value from javascript probe ? or do i need to leverage ECC queue for getting output parameter value.

1) Mid Server Script Include

var ImportFromMidServer = Class.create();

ImportFromMidServer.prototype = {

     

      initialize: function () {

                this.File = Packages.java.io.File;

              this.FileReader = Packages.java.io.FileReader;

              this.BufferedReader = Packages.java.io.BufferedReader;

              this.StringBuilder = Packages.java.lang.StringBuilder;

              this.verbose = probe.getParameter("verbose");

      },

     

      execute: function () {

              var xmlFile = new this.File("C://test.xml");

             

              var fileReader = new this.FileReader(xmlFile);

              var bufReader = new this.BufferedReader(fileReader);

              var sb = new this.StringBuilder();

              var line = bufReader.readLine();

             

              while( line != null){

                      sb.append(line).append("\n");

                      line = bufReader.readLine();

              }

              var xml2String = sb.toString();

             

              this.debug("xml2String=" + xml2String);

             

              bufReader.close();

             

              probe.setParameter("Output", xml2String);

             

              return xml2String;

      },

      debug: function (m) {

              if (this.verbose == "true") {

                      ms.log(m);

              }

      },

      type: ImportFromMidServer

};

2)

Background Script->

              var jspr = new JavascriptProbe('mymidserver');

              jspr.setName('ImportFromMidServer');

              jspr.addParameter("verbose", "true");

              jspr.setJavascript('var exp = new ImportFromMidServer(); res = exp.execute();ms.log(res);');

            //gs.print(probe.getParameter('Output'));

            jspr.create();

3 REPLIES 3

Ujjawal Vishnoi
Mega Sage
Mega Sage

Hi Amit,



You will have to fetch the string from ecc queue because you are just creating javascript probe and it will be executed based on the availability of the server. So i think we need to leverage ECC queue for getting output parameter value.



Hope this helps.



Regards


Ujjawal


Hi Ujjwal, Thanks for the reply, yes we need to leverage the ECC Queue because there is no way to return value from javascript probe as output.


Create an ECC Queue record

Agent=mid.server.<MY_MIDServer_Name>

Queue=Output 

Topic=JavascriptProbe
Payload=<?xml version="1.0" encoding="UTF-8"?><parameters><parameter name="script" value="result='helloworld';"/><parameter name="skip_sensor" value="true"/></parameters>

 

This will return something like ...

<?xml version="1.0" encoding="UTF-8"?><results probe_time="2" result_code="0"><result><output>helloworld</output></result><parameters><parameter name="agent" value="mid.server.  ...etc.....