ServiceNow - 开发
ServiceNow 提供了许多内置功能和应用程序,我们可以轻松地使用它们在任何组织中实施 ITSM。同时,还有业务需求来设置不同的流程和功能。ServiceNow 具有高度可定制性,开发人员可以使用 Javascript 原理根据客户的要求轻松创建应用程序和模块。
ServiceNow 脚本编写必须使用 JavaScript。在本节中,我们将为您概述 ServiceNow 的开发。
应用程序创建概述
ServiceNow 提供了一个名为“Studio”的应用程序,您可以在其中创建新应用程序、提供源代码、为应用程序创建新表等。Studio 提供了用于创建新应用程序的引导且易于使用的界面。让我们为以下 BookWorm ltd 案例创建一个新应用程序。
前端 IT 团队需要 ServiceNow 中的一个应用程序,其中经理可以发布轮班 ROTA(轮班轮换)。每位员工轮班 6 小时,团队必须提供 24 X 7 的支持。
从导航器转到 Studio,将打开一个新窗口。单击创建应用程序。系统将提示您输入应用程序名称和描述。最后,单击“创建”。
您将在下面找到申请页面。现在,是时候为我们的应用程序创建一个表了。转到“创建应用程序文件”。
单击“数据模型”下的“表”,然后单击“创建”。系统将提示您输入新表的详细信息。给出表的名称并将其余详细信息保留为默认值。
现在向下滚动并开始定义这些表的列。我们有下面的列定义,这里要注意的重要一点是,我们在成员列中选择了 sys_user 的引用。
现在,单击“班次”列并选择“创建选择列表”,如下所示,我们将创建班次选择,例如上午 6 点至中午 12 点、中午 12 点至下午 6 点、下午 6 点至上午 12 点和上午 12 点至上午 6 点。
现在我们已经创建了表,我们在工作室中的应用程序如下所示。
工作室已经自动为我们创建了表单、列表、模块、应用菜单。我们可以通过创建应用程序文件选项创建其他模块、表、UI 等,就像我们创建 ROTA 表一样。
现在让我们看看我们的应用程序在服务中的样子。在导航栏中搜索 Frontend_IT_ROTA 并转到我们的新模块。
让我们继续在应用程序中添加一些新的 ROTA 记录。单击新建按钮。
用户界面政策和行动
ServiceNow 将 UI 策略定义为一种工具,通过该工具,我们可以动态更改表单上信息的Behave并控制任务的自定义流程。另一方面,UI 操作用于使 UI 更具交互性、定制性和针对用户活动的特定性。让我们通过一个例子来理解这一点。
假设,我们必须以这样的方式配置事件表单:如果将任何事件分配给前端 IT 团队分配组,则服务字段应变为不可见,并且配置项应被禁用。这里的 UI 策略是“如果分配组被选为前端 IT 团队”,这里的 UI 操作是“服务字段应该变得不可见,配置项字段应该被禁用”。
UI 操作可以通过简单的界面使用方式以及客户端脚本来实现。编写客户端脚本将帮助我们在该领域进行高级操作。我们还将在本节后面演示客户端脚本。
这里需要注意的重要一点是,UI 操作速度更快,并且首先执行,然后是客户端脚本。让我们为我们的用例创建一个 UI 策略和操作。从导航栏中,打开“系统 UI”应用程序下的“UI 策略”模块,然后单击“新建”按钮。
给出表的名称,在我们的例子中是“事件”。将应用程序保持为全局。如果您找不到全局选项,请导航到右上角的齿轮,然后从开发人员选项卡中选择应用程序作为全局。
现在,开始在下一节中给出条件。在我们的例子中,这将是“分配组是前端 IT 团队”。接下来,有一些复选框,如下 -
全球- 如果您愿意,请勾选您的 UI 政策在全球范围内实施。
加载时- 如果需要,请勾选以在每次刷新页面时运行 UI 策略。
如果为假则反转- 如果需要,请勾选,以反转我们在条件更改时创建的所有操作。
继承 - 如果需要,扩展指定表的表(在其中创建 UI 策略)将继承此 UI 策略,请勾选。
填写所有必需的详细信息并按提交。
现在,再次打开 UI 策略,您将找到输入 UI 操作的选项。让我们根据我们的用例给出 UI 操作。单击 UI 操作部分中的新建按钮。
我们将为服务和配置项字段选择以下操作。
单击“提交”以确认您的 UI 操作,最后单击“更新”以保存 UI 策略中的更改。您现在可以转到事件表单并验证您的 UI 策略和操作。
ServiceNow 脚本
ServiceNow中有两种类型的脚本编写,即客户端和服务器端。服务器端脚本意味着处理发生在 Web 服务器上,而客户端脚本意味着处理发生在用户计算机上。每种类型的脚本都可以完成特定的任务。让我们讨论一下这两个脚本的示例 -
客户端脚本编写
客户端脚本可用于各种场景,例如在表单字段中填充一些默认值、显示一些警报消息、根据用户在表单中另一字段中的响应在一个字段中设置值、更改选择列表、等等。客户端脚本主要分为三种类型。
Onload() - 当加载表单时执行。
Onchange() - 当表单中的特定字段更改时执行。
Onsubmit() - 当表单提交时执行。
让我们为两个用例创建一个客户端脚本。在我们的新应用程序“前端 IT 团队 ROTA”中,一旦加载应用程序,我们将实施警报“请每周使用此应用程序一次,以设置轮班轮换”。然后,如果轮班时间选择为上午 12 点至早上 6 点,我们将显示一条提醒“会员有权获得轮班津贴”。
导航到 Studio 模块,打开应用程序并单击“创建应用程序”文件。然后,在客户端开发选项下选择客户端脚本并提供所需的详细信息,如下所示 -
向下滚动并给出脚本。我们将发出如下警报。
Function onLoad() { alert (“Please use this application once a week to set the shift rotation”); }
单击“提交”并加载您的新应用程序以查看结果。
现在,让我们实现下一个用例。在这里,我们将使用onChange。ServiceNow 自动向 onChange 函数传递 5 个参数。
Control - 这是配置客户端脚本的字段
OldValue - 这是加载表单时(更改之前)的字段值。
newValue - 更改后字段的值。
isLoading - 它是布尔值,指示更改是否作为表单加载的一部分发生。如果更改是由于表单加载导致的,则值为 true。当表单加载时,表单上的所有字段值都会发生变化。
isTemplate - 它是一个布尔值,指示发生的更改是否是由于模板填充字段所致。如果变化是由于模板填充造成的,则值为 true。
function onChange(control, oldValue, newValue, isLoading, isTemplate) { if (isLoading || newValue === '12am-6pm') { alert("The member is entitled for shift allowance"); return; } }
Glideform (g_form) 类
glideform 是用于控制表单和表单字段的类。我们可以执行诸如隐藏字段值、根据其他字段的响应设置字段值、将字段添加到选择列表等任务。
滑动表单类带有许多方法。一些重要的方法是 addOption()、clearOptions()、showFieldMsg()、clearMessages()、clearValue()、setValue() 等。
如果分配组被选为前端 IT 团队,那么让我们以事件形式创建一个客户端脚本,以在描述字段中填充一些消息。转到 UI 策略并创建新策略。在“申请地点”部分中将条件指定为“分配组是前端 IT 团队”。
提交 UI 策略,再次打开它,然后单击高级视图。稍后,您将找到提供脚本的选项。
该脚本会自动填充函数 onCondition()。一旦满足我们在 UI 策略中给出的条件,onCondition 函数就会自动执行。还要注意的一点是,有两个脚本,“如果为真则执行”和“如果为假则执行”。
一旦条件匹配,“execute if true”脚本就会执行,如果我们更改字段中的值,使得不再满足我们提到的条件,那么“execute if false”中的脚本将执行。
让我们为两者编写一个脚本。在这里,我们将使用 setValue 和clearValue 方法。要获取脚本中需要提及的字段名称,请打开事件表单并右键单击所需的字段,您可以找到格式为“Show - <fieldname>”的字段名称
真实剧本上
function onCondition() { g_form.clearValue('description'); g_form.setValue(‘description’,'**Please mention server name, instance name and error code**'); }
关于虚假脚本
function onCondition() { g_form.clearValue('description'); }
现在,打开事件表单并检查结果。
服务器端脚本
服务器端脚本在 ServiceNow 服务器或数据库上执行。服务器端脚本有两类 -
商业规则
脚本包括
让我们一一看看每个类别。
商业规则
业务规则模块可以在系统定义应用程序中找到。要创建业务规则,请单击“新建”。我们可以使用业务规则操作创建一个简单的业务规则,它有一个简单的下拉界面。
您可以使用业务规则操作来设置字段的值或在表单中添加消息。我们可以选择何时运行业务规则,如下所示 -
Before - 业务规则中的逻辑在数据库操作之前执行
After - 业务规则中的逻辑在数据库操作之后执行
异步- 异步业务规则在数据库操作发生后执行其逻辑,但调度程序将任务排队以尽快运行,但不一定在数据库操作后立即运行。
显示- 当加载表单并从数据库加载记录时,显示业务规则执行其逻辑。
我们还可以选择业务规则应执行的数据库操作。让我们在上一节中创建的前端 IT 团队 ROTA 应用程序中创建一个业务规则操作。
如果班次时间是中午 12 点到早上 6 点,我们必须将“备注”字段中的值设置为“监视 XO887 批处理作业”。提供名称和表 frontend_it_rota。在里面,何时运行选项卡给出了条件,因为班次是上午 12 点到早上 6 点,并选中“插入”和“更新”框。
在“操作”选项卡内为备注字段提供您的条件。
我们还可以在此业务规则中提供我们的自定义脚本。要开始编写自定义脚本,请选中“高级”复选框,您将看到用于编写脚本的新“高级”选项卡。
让我们编写一个脚本,在未给出成员、时间或日期字段时中止插入事务。为此,我们将使用“当前”和“先前”对象。
(function executeRule(current, previous /*null when async*/)) { if((current.member = ' ') || (current.date = ' ') || (current.shift = ' '){ current.setAbortAction(true); } }
脚本包含
使用脚本包含,我们可以编写自定义函数或类,然后在其他脚本中根据需要多次使用它们。它们是可重用的脚本;我们可以在其他客户端或服务器端脚本中使用。但是,它们仅在被其他脚本显式调用时才会执行。为了创建新的脚本包含,我们在“系统定义”应用程序下有一个“脚本包含”模块。单击“新建”以创建新的脚本包含。
在脚本包含表单中,给出脚本包含的名称。API 名称字段是脚本包含的内部名称,当从其他应用程序调用此脚本包含时,将使用它。如果您想将此脚本包含在客户端脚本中,请选中客户端可调用复选框。在应用程序中,给出使用该脚本的应用程序。在“可访问范围”字段中,给出应用程序范围。
让我们在前端 IT 团队 ROTA 应用程序中为以下案例编写一个脚本。首先,我们将编写一个脚本 include,它将检查任何字段中的无效字符。我们将定义一个函数,它将参数作为字符串,并根据字符串中的字符返回 true 或 false。
我们将在业务规则脚本中使用此函数来验证提交表单时“成员(名称)”字段(在前端 IT 团队 ROTA 应用程序中)中给出的值是否不包含任何无效字符。
打开脚本包含模块,下面是我们将使用的脚本。
function validatefieldcharacters(fieldinput) { var validcharacters = /^[a-zA-Z]+$/; if(fieldinput.value.match(validcharacters)) { return true; } else { return false; } }
现在,让我们编写业务规则脚本来验证成员字段。打开业务规则模块并为我们的应用程序前端 IT 团队 ROTA 创建新的业务规则。
var memberfieldstatus = validatefieldcharacters(current.member) if(memberfieldstatus == false) { gs.addErrorMessage(" Special characters not allowed in member field"); current.setAbortAction(true); }
调试
如果我们的脚本未按预期执行,或者出现一些错误,我们可以使用各种调试技术。让我们讨论调试客户端和服务器端脚本的各种方法。
调试客户端脚本
调试客户端脚本的最佳方法是参考日志。Javascript 提供了 jslog() 方法来在 Javascript 日志中写入消息。jslog() 方法接受消息,我们希望这些消息出现在参数的日志中。下面是我们如何实现 jslog() 的示例。您可以在业务规则脚本中使用以下脚本。
function onLoad(){ jslog("This log is displayed from jslog()."); jslog("The value of Member field is = " + g_form.getValue('Member')); }
这将给出日志中成员字段中给出的值。在本例中,我们使用了 getvalue 方法来检索成员字段的值。现在,下一步是打开日志。转到右上角的设置选项,然后单击开发人员选项卡。打开“Javascript 日志和字段观察器”选项。
JavaScript 日志将在 ServiceNow 主浏览器窗口底部的新部分中打开。
除了 jslog() 之外,我们还可以使用通常在 Javascript 中使用的 try/catch 语句来调试脚本。
调试服务器端脚本
调试服务器端脚本的最常见方法是使用“脚本调试器”模块。脚本调试器可用于放置断点、单步遍历代码、查看变量值等。要访问脚本调试器,请在导航栏中找到“脚本调试器”。它存在于“系统诊断”应用程序中。
除此之外,我们还可以参考“应用程序日志”模块,该模块位于“系统日志应用程序”内。