スクリプトインクルード
スクリプトインクルードは、サーバー上で実行される JavaScript の格納に使用されます。
スクリプトインクルードを作成して、サーバースクリプトで使用できるように JavaScript の関数およびクラスを格納します。各スクリプトインクルードは、オブジェクトクラスまたは関数のいずれかを定義します。
スクリプトインクルードは要求時にのみロードされるため、グローバルビジネスルールの代わりにスクリプトインクルードを使用することを検討してください。詳細については、「Glide AJAX 対応スクリプトインクルードのプライバシー設定」と「ディスカバリースクリプトインクルード」を参照してください。
スクリプトのその他の例については、「有用なスクリプト」を参照してください。
スクリプトインクルードフォーム
スクリプトインクルードには、名前、説明、およびスクリプトがあります。また、それらがアクティブかどうか、およびクライアントスクリプトから呼び出すことができるかどうかも指定します。スクリプトインクルードフォームを使用して、既存のスクリプトインクルードを表示するか、新しいスクリプトインクルードを作成します。
スクリプトインクルードにアクセスするには、次に移動します: .
| フィールド | 説明 |
|---|---|
| 名前 | スクリプトインクルードの名前。クラスを定義する場合、これはクラスの名前、プロトタイプ、およびタイプと一致する必要があります。クラスレス (オンデマンド) スクリプトインクルードを使用する場合、名前は関数名と一致する必要があります。 |
| API 名 | スクリプトインクルードの内部名。スコープ外のアプリケーションからスクリプトインクルードを呼び出すために使用します。 |
| Glide AJAX 有効 (またはクライアント呼び出し可能) | スクリプトインクルードは、クライアントスクリプト、リスト/レポートフィルター、参照修飾子で使用できます。また、URL の一部として指定することもできます。Glide AJAX 対応スクリプトインクルードは GlideAjax から呼び出され、ユーザーはスクリプトインクルードに関連付けられた ACL を満たす必要があります。選択すると、[アクセス制御] 関連リンクが使用可能になります。詳細については、「Glide AJAX 対応スクリプトインクルードのプライバシー設定」を参照してください。 |
| モバイルコール可能 | スクリプトインクルードは、モバイルデバイスから呼び出されたクライアントスクリプトで使用できます。 |
| サンドボックス有効化 | スクリプトインクルードは、クエリ条件など、スクリプトサンドボックスから呼び出されるスクリプトで使用できます。 重要: スクリプトインクルードは、必要な場合にのみスクリプトサンドボックスで使用できるようにする必要があります。 スクリプトサンドボックスの詳細については、「 スクリプトサンドボックス」を参照してください。 |
| アプリケーション | このスクリプトインクルードが存在するアプリケーション。 |
| アクセス可能 | このスクリプトインクルードにアクセスできるアプリケーションを設定します。
|
| アクティブ | 選択すると、スクリプトインクルードが有効になります。アクティブなフィールドの選択を解除して、スクリプトインクルードを無効にします。 |
| 説明 | スクリプトインクルードに関する説明的なコンテンツを提供します。 |
| スクリプト | 他のスクリプトから呼び出されたときに実行するサーバーサイドスクリプトを定義します。 スクリプトは、単一の JavaScript クラスまたはグローバル関数を定義する必要があります。クラス名または関数名は [名前] フィールドと一致する必要があります。 |
| パッケージ | このスクリプトインクルードを含むパッケージ。 |
| 作成者 | このスクリプトインクルードを作成したユーザー。 |
| 更新者 | このスクリプトインクルードを最後に更新したユーザー。 |
| 保護ポリシー | スクリプトインクルードの保護レベルを設定します。
|
| フォームビューの関連リスト: | |
| バージョン | スクリプトインクルードのすべてのバージョンを表示します。バージョンを比較したり以前のバージョンに戻したりするには、このリストを使用します。「バージョン」を参照してください。 |
| アクセス制御 | [Glide AJAX を有効にする] が選択されている場合に利用可能になり、標準スクリプトインクルードでは非表示になります。パブリックアクセスが許可されていない場合に、スクリプトインクルードを不正使用から保護するために使用します。 |
スクリプトインクルードの使用
スクリプトインクルードは [システム定義] または [システム UI] の下にあります。既存のスクリプトインクルードをスクリプトから呼び出すことも、新しいスクリプトインクルードを作成することもできます。
まったく新しいスクリプトインクルードを作成するときには、既存のいずれかのスクリプトインクルードの形式に従うこともできます。この例では、スクリプトインクルードの名前は NewInclude であり、myFunction と呼ばれる 1 つの関数があります。スクリプトインクルードの名前が、クラスの名前、プロトタイプ、およびタイプと一致することが重要です。新しいスクリプトインクルードを作成して名前を付けると、クラスとプロトタイプが適切に設定されたコードスニペットが提供されます。
var NewInclude =Class.create();
NewInclude.prototype={
initialize :function(){},
myFunction :function(){<Put function code here>},
type :'NewInclude'};次のように myFunction 行を使用できます。
var foo =new NewInclude();
foo.myFunction();Glide AJAX 対応スクリプト インクルード
Glide AJAX 対応スクリプトインクルードを使用すると、クライアントスクリプト、リスト/レポートフィルター、参照修飾子でスクリプトインクルードを使用できるか、URL の一部として指定されている場合にスクリプトインクルードを使用できるようになります。
始める前に
必要なロール:admin
手順
Glide AJAX 対応スクリプトインクルードのプライバシー設定
Glide AJAX 対応スクリプトインクルードのプライバシー設定は、Glide AJAX 対応スクリプトインクルードにアクセスできるユーザーを決定します。
プライベートプライバシー設定
プライベートプライバシー設定は、公開ページにアクセスするゲストが Glide AJAX 対応のスクリプトインクルードにアクセスできないことを意味します。非公開スクリプトは、ログインしていないユーザーは実行できません。
公開プライバシー設定
公開プライバシー設定は、適切な HTTP 要求を作成するログインしていないユーザーが、クライアントスクリプトを実行できることを意味します。クライアントスクリプトが機密情報を提供する場合、これによりセキュリティ上の問題が発生する可能性があります。
- GlideSystemAjax
- SysMessageAjax
- KnowledgeMessagingAjax
- KnowledgeAjax
- PasswordResetAjax
すべての Glide AJAX 対応スクリプトインクルードのプライバシーを設定する
すべての Glide AJAX 対応スクリプトインクルードのプライバシー設定を変更します。
すべての Glide AJAX 対応スクリプトインクルードをさらに制御するために、アドミニストレーターは glide.script.ccsi.ispublic プロパティを追加できます。このプロパティは、すべての公開または非公開にすることで、Glide AJAX 対応スクリプトインクルードのヴィジビリティを変更します。プロパティを以下のとおり構成します。
| タイトル | プロパティ |
|---|---|
| 名前 | glide.script.ccsi.ispublic |
| タイプ | true | false |
| 値 | false |
単一の Glide AJAX 対応スクリプトインクルードのプライバシーを変更する
isPublic() 関数を追加して、単一の Glide AJAX 対応スクリプトインクルードのプライバシー設定を変更します。
isPublic() 設定は glide.script.ccsi.ispublic プロパティよりも優先されます。たとえば、プロパティが false に設定されていて、すべての Glide AJAX 対応スクリプトインクルードがプライベートになり、スクリプトが isPublic() を true に設定した場合、スクリプトは公開されます。
単一の Glide AJAX 対応スクリプトインクルードのプライバシーを変更するには、スクリプトインクルードに次のメソッドを追加します。
isPublic:function(){return[true/false];},var NewInclude =Class.create();
NewInclude.prototype={
initialize:function(){},
myFunction:function(){//Put function code here},
isPublic:function(){return false;},
type:'NewInclude'};
Glide AJAX が有効になっているスクリプトインクルードのセキュリティ
Glide AJAX 対応スクリプトインクルードを不正使用防止対処します。顧客アプリケーションで作成されたすべてのレコードについて、セキュリティリスクの軽減に役立つ推奨事項が表示されます。
Glide AJAX 対応のスクリプトインクルードを作成するときに、次のセキュリティ推奨事項がまだ構成されていない場合は、それらが表示されます。
- スクリプトインクルードにパブリックアクセスがない場合は、アクセス制御を追加または定義します。
- スクリプトがデータベースにクエリを実行する場合は、GlideRecord API の代わりに GlideRecordSecure を使用してセキュリティを強化します。注:セキュリティ推奨メッセージを無効にするには、sys_properties テーブルでプロパティ glide.script.ccsi.customer_scoped.security_msgs_enabled を false に設定します。デフォルト値は true になっています。
セキュリティコンプライアンスの詳細については、「インスタンスセキュリティ強化設定」を参照してください。
ディスカバリースクリプトインクルード
ディスカバリー スクリプトインクルードは、ディスカバリー タスクを実行するために使用できる JavaScript クラスを定義します。
GlideRecordUtil を使用した GlideRecord の操作
GlideRecordUtil は、ディスカバリー 実行時に、GlideRecord 操作に役立つメソッドを提供するユーティリティクラスです。使用可能なメソッドの説明については、「GlideRecordUtil」を参照してください。
GlideRecord インスタンスの取得
var now_GR = new GlideRecordUtil().getCIGR("2dfd7c8437201000deeabfc8bcbe5d56");var now_GR = new GlideRecordUtil().getGR( "cmdb_ci_computer", "2dfd7c8437201000deeabfc8bcbe5d56");GlideRecord のすべてのフィールドの取得
var now_GR = new GlideRecordUtil().getGR("cmdb_ci_computer", "2dfd7c8437201000deeabfc8bcbe5d56");
var fields = new GlideRecordUtil().getFields(now_GR);
gs.log(fields.join(" ")); // List all the fields that are in a computer CIGlideRecord オブジェクトフィールドの入力
var objectToPopulate = { };
var now_GR = new GlideRecordUtil().getGR("cmdb_ci_computer", "2dfd7c8437201000deeabfc8bcbe5d56");
var ignore = {"sys_created_on": true, "sys_updated_by": true};
new GlideRecordUtil().populateFromGR(objectToPopulate, now_GR, ignore);
// Now the objectToPopulate contains field/value pairs from the computer GlideRecordvar now_GR = new GlideRecordUtil().getGR("cmdb_ci_computer", "2dfd7c8437201000deeabfc8bcbe5d56");
var obj = {"name": "xyz", "os": "windows 2000", "sys_created_by", "aleck.lin"};
var ignore = {"sys_created_by": true};
new GlideRecordUtil().mergeToGR(obj, gr, ignore);
gr.update();テーブル階層の取得
var tables = new GlideRecordUtil().getTables("cmdb_ci_linux_server");
gs.log(tables.join(","));
// The result would be "cmdb_ci, cmdb_ci_computer, cmdb_ci_server, cmdb_ci_linux_server".DiscoveryException と AutomationException の使用
ディスカバリー センサーとセンサー関連のスクリプトを記述するときに、 DiscoveryException または AutomationException を使用して、ディスカバリー から例外が発生したことを示すことができます。
function foo() {
if(//condition matches) throw new DiscoveryException("The message", "The cause"); }try {
foo();
}
catch(e) {
if(e instanceof DiscoveryException)
gs.log("A DiscoveryException occurred. It is " + e. getMessage() + " caused by " + e.getCause()); }上記の例は、AutomationException にも適用されます。DiscoveryException は通常、特にディスカバリーに例外処理を提供するために使用され、AutomationException はオーケストレーションと ディスカバリー の両方に適用される例外処理に使用されます。