Skip to content

Instantly share code, notes, and snippets.

@kr4uzi
Created May 7, 2023 22:18
Show Gist options
  • Select an option

  • Save kr4uzi/164e7cf6521df77fa1693ce95f9da654 to your computer and use it in GitHub Desktop.

Select an option

Save kr4uzi/164e7cf6521df77fa1693ce95f9da654 to your computer and use it in GitHub Desktop.
Generate XML and send to Mid Server
var doc = new XMLDocument2();
var importNode = doc.createElement('Import');
createPers(doc, importNode, '12345', 'update', 'Disabled', [{ id: '1', operation: 'delete' }, { id: '2', operation: 'delete' }, { id: '2', operation: 'delete' }]);
createPers(doc, importNode, '23456', 'update', 'Disabled', [{ id: '1', operation: 'delete' }, { id: '2', operation: 'delete' }, { id: '2', operation: 'delete' }]);
createPers(doc, importNode, '34567', 'update', 'Disabled', [{ id: '1', operation: 'delete' }, { id: '2', operation: 'delete' }, { id: '2', operation: 'delete' }]);
sendToMid('helloWorld.xml', doc.toString());
function sendToMid(fileName, fileContent) {
var saveScript = '(function () {'
+ ' try {'
+ ' var fileName = probe.getParameter("file_name");'
+ ' var file = new Packages.java.io.File(fileName);'
+ ' if (!file.canWrite()) {'
+ ' return "Cannot write " + fileName;'
+ ' }'
+ ' var os = new Packages.java.io.FileOutputStream(file);'
+ ' try {'
+ ' var buffer = new Packages.java.lang.String(probe.getParameter("file_content") || "").getBytes();'
+ ' os.write(buffer);'
+ ' } catch (e) {'
+ ' return e.message;'
+ ' } finally {'
+ ' os.close();'
+ ' }'
+ ' } catch (e) { return e.message; }'
+ '})();';
var params = { 'skip_sensor': true, 'file_name': fileName, 'file_content': fileContent, 'script': saveScript };
var payload = new XMLDocument2();
payload.createElement("parameters");
for (var param in params) {
var el = payload.createElement("parameter");
el.setAttribute("name", param);
el.setAttribute("value", params[param]);
}
var eccGr = new GlideRecord("ecc_queue");
eccGr.newRecord();
eccGr.topic = "JavascriptProbe";
eccGr.queue = "output";
eccGr.state = "ready";
eccGr.name = "SaveXMLOnMID";
eccGr.source = "";
eccGr.agent = "mid.server.Ubuntu";
eccGr.payload = payload.toString();
return eccGr.insert();
}
function createPers(doc, root, id, operation, status, cards) {
doc.setCurrentElement(root);
var pers = doc.createElement('Pers');
pers.setAttribute('id', id);
pers.setAttribute('operation', operation);
doc.setCurrentElement(pers);
doc.createElementWithTextValue('Status', status);
cards.forEach(function (card) {
createCard(doc, pers, card.id, card.operation);
});
}
function createCard(doc, pers, id, op) {
doc.setCurrentElement(pers);
var node = doc.createElement('Card');
node.setAttribute('id', id);
node.setAttribute('operation', op);
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment