GlideRecord および Glidequery の代替Summary<!-- /*NS Branding Styles*/ --> .ns-kb-css-body-editor-container { p { font-size: 12pt; font-family: Lato; color: var(--now-color--text-primary, #000000); } span { font-size: 12pt; font-family: Lato; color: var(--now-color--text-primary, #000000); } h2 { font-size: 24pt; font-family: Lato; color: var(--now-color--text-primary, black); } h3 { font-size: 18pt; font-family: Lato; color: var(--now-color--text-primary, black); } h4 { font-size: 14pt; font-family: Lato; color: var(--now-color--text-primary, black); } a { font-size: 12pt; font-family: Lato; color: var(--now-color--link-primary, #00718F); } a:hover { font-size: 12pt; color: var(--now-color--link-primary, #024F69); } a:target { font-size: 12pt; color: var(--now-color--link-primary, #032D42); } a:visited { font-size: 12pt; color: var(--now-color--link-primary, #00718f); } ul { font-size: 12pt; font-family: Lato; } li { font-size: 12pt; font-family: Lato; } img { display: ; max-width: ; width: ; height: ; } } 定義 GlideQuery は、Now Platform への最新の、表現力豊かで安全なインターフェイスです。 通常はサーバーサイドの GlideRecord を使用する場所で使用します。GlideRecord のラッパーとして、開発プロセスの早い段階で間違いを検出し、多くのクエリを簡素化できます。 データのクエリー用のサーバーサイド API すべて JavaScript で記述 (グローバルのスクリプトインクルード)GlideRecord をバックグラウンドで使用するParis リリースから利用可能 どうしてですか? GlideQuery は、次の 3 つの原則に基づいています。 有効にする方法は? GlideQueryでは、GlideQuery(com.sn_glidequery) プラグインをインストールする必要があります。 [システム定義] -> [プラグイン] に移動します。GlideQuery を検索します。[インストール] ボタンを選択する[プラグインのアクティブ化] ウィンドウには、アクティブ化される追加のプラグインも表示される場合があります。[アクティブ化] ボタンを選択してプラグインをインストールします。 プラグインをインストールするもう 1 つの方法は、スクリプトを使用することです。このメソッドを使用して GlideQuery のプラグインをインストールするには、次の手順に従います。[システム定義] -> [修正スクリプト] に移動します。以下のスクリプトを作成し、保存してスクリプトを実行し、[続行] を選択します。スクリプトの実行に要した時間を示すメッセージが表示されます。[システム定義 - > プラグイン] を使用してインストールされたスクリプトを検証します。 利点 GlideQuery:迅速に失敗する - フィードバックループを改善する GlideRecord は長年使用されてきました。GlideQueryは新しいものであり、このタイプのコードは初めてかもしれません。特徴の 1 つはコードが少なくなることです。これらの例では、4 行が 3 になり、6 行が 4 になり、7 行が 5 になりました。行数を減らすためにフォーマットの少ないコードを書くことはできますか?きれいに整形した上で行数を減らすことができれば、開発時間を短縮でき、管理もしやすくなります。 ビジネスルールの更新/挿入チェック この例では、GlideRecord は、start_date が end_date より後であることを拒否するビジネスルールが設定されたテーブルのレコードを更新しようとします。コードの実行は継続しますが、レコードは更新されません。 GlideQuery:Java から JavaScript を隔離 単純に言うと、「stringly-typed」(文字列多用型)とは、より適切で効率的なデータ型が利用可能であるにもかかわらず、プログラマがあらゆるデータ型に文字列を使用することで発生します。 JavaScript スタックトレース 変更で便利になったことの 1 つが NiceError です。なぜこれが大きな変化なのかを見てみましょう。GlideRecord のエラーでは Java スタックトレースが使用され、紛らわしい場合があります。 GlideRecord の Java スタックトレース QueryEventLogger: Invalid query detected, please check logs for details [Unknown field las_namein table sys_user]Invalid query detected, stack trace below [Unknown field las_namein table sys_user] com.glide.db.QueryEventLogger.logInvalidQuery(QueryEventLogger.java:56) com.glide.db.QueryEventLogger.logInvalidQuery(QueryEventLogger.java:47) com.glide.script.GlideRecord.isInvalidTableField(GlideRecord.java:2380) com.glide.script.GlideRecord.jsFunction_addQuery(GlideRecord.java:2031) sun.reflect.GeneratedMethodAccessor44.invoke(Unknown Source) sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) java.lang.reflect.Method.invoke(Method.java:498) org.mozilla.javascript.MemberBox.invoke(MemberBox.java:138) org.mozilla.javascript.FunctionObject.doInvoke(FunctionObject.java:670) org.mozilla.javascript.FunctionObject.call(FunctionObject.java:614) GlideQueryNiceErrorの比較: NiceError: [2020-08-04T05:19:17.028Z]: Unknown field 'las_name' in table 'sys_user’. Known fields: [ "country", "calendar_integration", ... ] --------STACK TRACE ---------at [global] 'Schema' [sys_script_include:4e115aed73512300bb513198caf6a749]:358 (anonymous) at [global] 'GlideQueryActions' [sys_script_include:89cffabe29300010fa9b76addd33871b]:40... GlideQuery:作成、取得、更新、削除 (CRUD) glideQuery.insert(keyValues, [selectedFields]) ⇒オプション レコードを 1 つ挿入し、新しく作成されたレコードの [オプション] を返します。 glideQuery.select(...フィールド) ⇒ストリーム 返すフィールドを指定し、クエリの結果を含むストリームを返します。 glideQuery.selectOne(...フィールド) ⇒オプション select() と似ていますが、単一のレコードを含むことができる Optional のみを返します。 これは、レコードが 1 つだけ必要な場合、またはレコードが存在するかどうかをテストしたい場合は、select() よりも効率的です。 glideQuery.update(changes, [selectedFields]) ⇒オプション 既存のレコードを更新します。すべての既存のプライマリキー (通常は sys_id) を指定する where 呼び出しが必要です。 新しく更新されたレコードのオプションを返します。理由文字列を渡します (GlideRecord の更新と同様)。 glideQuery.deleteMultiple() ⇒nothing 前の where 句で指定されたテーブル内のすべてのレコードを削除します。 GlideQuery:オプションのクラスの例 GlideQuery:パフォーマンスに関する考慮事項 パフォーマンスに関する考慮事項 GlideQuery がデータを操作するための最新の手法であるのに、なぜデータのクエリに時間がかかるのか疑問に思われるかもしれません。GlideQuery は GlideRecord の API です。GlideRecordrecord の値は JavaScript の値に変換する必要があります。これはクエリーで 4 ~ 6 % のオーバーヘッドとなります。また、挿入と更新では、チェックが発生するため、オーバーヘッドが発生します。パフォーマンスが低下しても、パフォーマンスが低下しても、GlideQuery はその構文が利用可能な最も効率的なコードを使用するように設計されているため、不適切に記述された GlideRecord コードを回避できます。 今後の対応予定 GlideQuery は多くの新機能をもたらしますが、まだやるべき作業があります。スコープ対象テーブルの権限チェック:テーブルがロックダウンされており、GlideQuery にスコープ対象テーブルへの書き込み権限がない場合、GlideQuery はスコープ対象データにアクセスできません。フィールド/選択肢のチェックのオプトアウトを許可する:特別な場合、フィールドが存在しない可能性があり、オプトアウトすると解決します。