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

How to get data from one table column in other table column in ServiceNow?

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

  1. 用户使用事件中的 'Create New' 模块创建了一个新事件。

  2. 事件提交后,会根据事件的简短描述等字段为其分配一个KA号(知识文章)。 KA号的分配是通过我的Python脚本完成的。

  3. 事件及其 KA 编号存储在名为 'Knowledge Applied to Tasks (m2m_kb_task)' 的 table 中。事件存储在 'task' 列的 m2m_kb_task 中。它存储为指向 'Task' table 的 link。 (一些背景信息:事件table扩展任务table。任务中的'Number'列用作事件编号)。同理,KA号存储在'kb_knowledge'列下的m2m_kb_task中。它还存储为指向 'kb_knowledge' table 的 link。

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

但是,我也希望将知识文章编号(示例 - KB0000011)存储在事件 table 中。它应该针对它所映射到的事件进行存储。

有办法吗?

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

第 1 步:在 incident 表单

上创建新的 UI 操作

第 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 屏幕截图。