gpt4 book ai didi

javascript - ServiceNow 编码查询语法

转载 作者:行者123 更新时间:2023-11-30 15:26:59 27 4
gpt4 key购买 nike

我正在尝试编写一个包含编码查询的查询,但我不确定我的语法是否正确(99.9% 是完全错误的)。我希望此查询循环遍历所有可用的知识文章,并根据工作系列和位置为用户提供正确的文章。第一步是获取用户的工作系列和位置并将它们保存为变量,我已在此处完成:

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();
}

接下来,我要将occ和loc匹配到文章的系列和位置。我想包括一些规则,可以通过这个视觉效果更好地解释它:

enter image description here

假设我的 occ = 2210 和我的 loc = Rockville, MD,我将收到文章 #5(蓝色)。如果我的 occ 是 2210,但我位于加利福尼亚州旧金山,我希望收到文章 #4,因为工作系列优先于位置。如果我的 occ 是 1234 并且我位于 Rockville,我将收到文章 #1,因为我的工作系列不存在。最后,如果我的 occ 是 0101 并且我的位置在俄勒冈州波特兰(两者都不在此列表中),我将收到第 7 条文章。有了这个,我开始编写以下查询,但它不起作用。

我很确定语法是错误的,尤其是处理代码的编码部分时。有人可以帮我解决问题吗?

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';
}
}

最佳答案

在我看来,当 GlideRecord 的扩展会更有效时,您正在使用 IF 语句。我们还将利用 'CONTAINS' operator of addQuery , 用作 LIKE 语句。如果 occloc 变量实际上是 HTML 字段,我们将需要使用 'CONTAINS',但我们需要使用更准确的'='(也称为默认操作)如果值为空。

试试下面的代码,OP:

// To the best of my knowledge, the hr_profile code is fine
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();
}


var ka = new GlideRecord('x_knowledge_articles');
ka.addQuery('workflow_state', 'published');

// We'll want to take blank values into account
// because using a CONTAINS addQuery on blank would return everything
if(occ == ''){
// The line below is no different from ka.addQuery('series', occ)
ka.addQuery('series', '=', occ);
}
else{
ka.addQuery('series', 'CONTAINS', occ);
}

if(loc == ''){
ka.addQuery('location', '=', loc);
}
else{
ka.addQuery('location', 'CONTAINS', loc);
}
ka.query();

if(ka.hasNext()){
// I don't know if you need .getHTMLValue() for a number. Have you tried a vanilla getValue()?
data.article = ka.number.getValue();
}
// If the queries above fail, fall back on KB0010050
else{
data.article = 'KB0010050';
}

关于javascript - ServiceNow 编码查询语法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42815753/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com