[ServiceNow] GlideQuery를 사용해보기

10120 단어 GlideQueryServiceNow

GlideQuery란?



ITAM에 포함된 Server API이지만 별도의 Plugin으로 설치할 수 있습니다.
우연히 발견했는데, GlideRecord보다 편리한 것 같았기 때문에 조사해 보았습니다.

플랫폼



파리

GlideQuery의 좋은 점



코드가 간단해진다



코드를 단순화하여 가독성을 높입니다.
C#의 LINQ와 비슷합니다.

userquery.js
var gq = new GlideQuery('sys_user')
  .where('company.name',  '!=', '')
  .select('name', 'company$DISPLAY')
  .limit(5)
  .forEach(function (user) {
    gs.info(user.name + '@' + user.company$DISPLAY);
  });

/* 実行結果
*** Script: Lucius Bagnoli@ACME Japan
*** Script: Jimmie Barninger@ACME South America
*** Script: Melinda Carleton@ACME UK
*** Script: Jewel Agresta@ACME UK
*** Script: Sean Bonnet@ACME North America
*/


Fail Fast



GlideRecord는 쿼리가 잘못되어도 실행되지만 GlideQuery는 오류가 있으면 거기에서 멈 춥니 다.

gliderecord.js
var gr = new GlideRecord('sys_user');
gr.addQuery('activate', false); //正しくは'active'
gr.query();
while(gr.next()){
  gs.info(gr.name);
}


GlideRecord도 오류가 발생하지만,
그대로 잘못된 쿼리를 실행합니다.


GlideQuery의 경우 오류를 반환하고 중지합니다.
잘못된 업데이트나 삭제를 피할 수 있습니다.

glidequery.js
var gq = new GlideQuery('sys_user')
  .where('activate',  false)
  .select('name')
  .forEach(function (user) {
    gs.info(user.name);
  });



사용법



스크립트 포함에 GlideQuery가 있는지 확인합니다.
현재는 Platform의 기능이 아니기 때문에 ITAM을 사용하지 않는 경우는 없다고 생각합니다.



GlideQuery가 없으면 플러그인을 설치합니다.



참고







몇 가지 시도한 샘플

레코드 존재 확인



checkexist.js
var isExist = new GlideQuery('sys_user')
  .where('first_name', 'Lucius')
  .selectOne()
  .isPresent();
gs.info(isExist);

레코드 삽입



insertuser.js
var hoge = new GlideQuery('sys_user')
  .insert({
    first_name: 'First',
    last_name: 'Last',
    email: '[email protected]'
  })
  .get();
gs.info(JSON.stringify(hoge));





레코드 일괄 업데이트



updatemultiple.js
var gq = new GlideQuery('sys_user')
  .where('company.name',  '!=', '')
  .limit(3)
  .updateMultiple({ active: false });



좋은 웹페이지 즐겨찾기