Ich versuche, eine Abfrage zu schreiben, die codierte Abfragen enthält, bin mir aber nicht sicher, ob meine Syntax sogar richtig ist (99,9% ist völlig falsch). Ich möchte, dass diese Abfrage alle verfügbaren Wissensartikel durchläuft und basierend auf der Jobserie und dem Standort dem Benutzer den richtigen Artikel zur Verfügung stellt. Der erste Schritt ist die Job-Serie und Standort des Benutzers zu greifen und sie als Variablen speichern, die ich hier gemacht habe:ServiceNow codierte Abfragesyntax
var gr = new GlideRecord('hr_profile');
gr.addQuery('user', gs.getUserID());
gr.query();
if(gr.next())
{
var occ = gr.job_series.getHTMLValue();
var loc = gr.user.location.getHTMLValue();
}
Als nächstes möchte ich occ und loc auf die Reihe und Position des entsprechen Artikel. Es gibt ein paar Regeln, die ich aufgenommen werden soll, und es kann besser durch diese visuelle erklären:
Unter der Annahme, meine occ = 2210 und meine loc = Rockville, MD, würde ich mit Artikel # 5 (blau serviert). Wenn meine Adresse 2210 ist, aber ich bin in San Francisco, CA, möchte ich Artikel Nr. 4 serviert werden, weil Job-Serie Vorrang vor Ort hat. Wenn meine Adresse 1234 ist und ich in Rockville bin, würde ich mit Artikel # 1 bedient werden, da meine Jobserie nicht vorhanden ist. Schließlich, wenn ich zufällig 0101 und mein Standort in Portland, OR (beide nicht auf dieser Liste) ist, würde ich mit Artikel # 7 serviert werden. Damit habe ich angefangen, die folgende Abfrage zu codieren, aber es funktioniert nicht.
Ich bin mir ziemlich sicher, dass die Syntax falsch ist, insbesondere mit dem codierten Teil des Codes. Kann mir jemand bei der Fehlersuche helfen?
var ka = new GlideRecord('x_knowledge_articles');
ka.addQuery('workflow_state', 'published');
ka.query();
while(ka.next()) {
if("seriesLIKE"+occ+"^locationLIKE"+loc) {
data.article = ka.number.getHTMLValue(); }
else if("seriesLIKE"+occ+"^locationNOT LIKE"+loc) {
var occDefault = "seriesLIKE"+occ+"^locationISEMPTY"
data.article = occDefault.number.getHTMLValue(); }
else if("locationLIKE"+loc+"^seriesNOT LIKE"+occ) {
var locDefault = "locationLIKE"+loc+"^seriesISEMPTY"
data.article = locDefault.number.getHTMLValue();}
else {
data.article = 'KB0010050';
}
}
... und du wirst einen Anruf 'ka.next()' müssen, um tatsächlich auf die Daten in dem abgefragten GlideRecord zu bewegen, so dass der Aufruf von 'ka.number' hat Daten bereit. – Joey