如何从ServiceNow中其他表列的一个表列获取数据?

时间:2018-04-17 06:30:00

标签: servicenow

我制作了一个ServiceNow应用程序,其工作流程为:

  1. 用户使用“事件”中的“新建”模块创建新事件。

  2. 提交事件后,根据其简短描述和其他字段为其分配KA编号(知识文章)。 KA编号的分配由我的Python脚本完成。

  3. 事件及其KA编号存储在名为“知识应用于任务(m2m_kb_task)”的表中。事件存储在'task'列中的m2m_kb_task中。它存储为指向“任务”表的链接。 (一些背景信息:事件表扩展了任务表。任务中的'Number'列用作事件编号)。以相同的方式,KA编号存储在'kb_knowledge'列下的m2m_kb_task中。它也存储为指向'kb_knowledge'表的链接。

  4. 当用户点击列表中出现的事件时,她可以在相关链接中看到该事件附带的知识文章 - >附加知识选项卡

  5. 但是,我希望知识文章编号(示例 - KB0000011)也存储在事件表中。它应该根据映射到的事件进行存储。

    有没有办法解决这个问题?

1 个答案:

答案 0 :(得分:1)

点击相关链接上的Attached Knowledge tab ui操作后,请按照以下步骤打开文章页面。

第1步:在incident表单

上创建新的操作系统操作

步骤2:打开ui操作表单,看到form link复选框已选中(true)。并且Client复选框未选中(false)

步骤3:将以下代码粘贴到“脚本”部分。

var m2mGr = new GlideRecord('m2m_kb_task');
m2mGr.addQuery('task', current.sys_id); // current represents incident on opened page
m2mGr.query();

if(m2mGr.next()){
    action.setRedirectURL("/kb_view.do?sys_kb_id="+m2mGr.kb_knowledge); // Open article view

  //In case you what to open knowledge record instead of view.
   /*
    var kbGr = new GlideRecord('kb_knowledge');
    kbGr.get(m2mGr.kb_knowledge)
    action.setRedirectURL(kbGr);
   */
} else {
    gs.addInfoMessage("No article found related to incident :" + current.sys_id)
}

如果您认为会有多篇文章附加到事件中,那么最好将知识列表页面显示给任务。你可以简单地使用下面的代码来做到这一点。

action.setRedirectURL("/m2m_kb_task_list.do?sysparm_query=task.sys_id%3D" + current.sys_id + "&sysparm_first_row=1&sysparm_view=");

UI动作表单的PFA屏幕截图。

enter image description here