Skripteinbindungen
Skripteinbindungen werden zum Speichern von JavaScript-Code verwendet, der auf dem Server ausgeführt wird.
Erstellen Sie Skripteinbindungen zum Speichern von JavaScript-Funktionen und -Klassen zur Verwendung durch Serverskripts. Jede Skripteinbindung definiert entweder eine Objektklasse oder eine Funktion.
Erwägen Sie die Verwendung von Skripteinbindungen anstelle von globalen Business Rules, da Skripteinbindungen nur auf Anforderung geladen werden. Siehe Datenschutzeinstellungen für vom Client aufrufbare Skripteinbindungen und Discovery-Skripteinbindungen, um weitere Informationen zu erhalten.
Weitere Beispiele für Skripts finden Sie unter Nützliche Skripts.
Skripteinbindungsformular
Skripteinbindungen haben einen Namen, eine Beschreibung und ein Skript. Sie geben außerdem an, ob sie aktiv sind oder nicht, und ob sie von einem Client-Skript aus aufgerufen werden können. Zeigen Sie eine vorhandene an, oder erstellen Sie eine neue Skripteinbindung mithilfe des Formulars „Skripteinbindung“.
Um auf Skripteinbindungen zuzugreifen, navigieren Sie zu .
| Feld | Beschreibung |
|---|---|
| Name | Der Name der Skripteinbindung. Wenn Sie eine Klasse definieren, muss dieser Name mit dem Namen der Klasse, des Prototyps und des Typs übereinstimmen. Wenn Sie eine klassenlose (On-Demand-)Skripteinbindung verwenden, muss der Name mit dem Funktionsnamen übereinstimmen. |
| API-Name | Der interne Name der Skripteinbindung. Wird verwendet, um die Skripteinbindung aus Anwendungen außerhalb des Bereichs aufzurufen. |
| Glide AJAX aktiviert | Die Skripteinbindung ist für Client-Skripts, Listen-/Berichtsfilter, Referenzqualifizierer oder, wenn sie als Teil der URL angegeben ist, verfügbar. Vom Client aufrufbare Skripteinbindungen werden über GlideAjax aufgerufen und erfordern, dass Benutzer eine ACL erfüllen, die der Skripteinbindung zugeordnet ist. Wenn diese Option ausgewählt ist, ist der zugehörige Link Zugriffssteuerungen verfügbar. Weitere Informationen finden Sie unter Datenschutzeinstellungen für vom Client aufrufbare Skripteinbindungen. |
| Mobil aufrufbar | Die Skripteinbindung steht Client-Skripts zur Verfügung, die über Mobilgeräte aufgerufen werden. |
| Sandbox aktiviert | Die Skripteinbindung wird aus der Skript-Sandbox aufgerufen, z. B. über eine Abfragebedingung. Diese Methode erfordert keine Authentifizierung. Weitere Informationen zur -Sandbox finden Sie unter Configuring Script sandbox property. |
| Anwendung | Die Anwendung, in der diese Skripteinbindung enthalten ist. |
| Zugänglich von | Legt fest, welche Anwendungen auf diese Skripteinbindung zugreifen können:
|
| Aktiv | Aktiviert die Skripteinbindung, wenn ausgewählt. Deaktivieren Sie das Feld „Aktiv“, um die Skripteinbindung zu deaktivieren. |
| Beschreibung | Enthält eine Beschreibung der Skripteinbindung. |
| Skript | Definiert das serverseitige Skript, das bei Aufruf durch andere Skripts ausgeführt wird. Das Skript muss eine einzelne JavaScript-Klasse oder eine globale Funktion definieren. Der Klassen- oder Funktionsname muss mit dem Wert im Feld Name übereinstimmen. |
| Paket | Das Paket, das diese Skripteinbindung enthält. |
| Erstellt von | Der Benutzer, der diese Skripteinbindung erstellt hat. |
| Aktualisiert von | Der Benutzer, der diese Skripteinbindung zuletzt aktualisiert hat. |
| Schutzrichtlinie | Legt die Schutzstufe für die Skripteinbindung fest:
|
| Zugehörige Listen in der Formularansicht: | |
| Versionen | Zeigt alle Versionen der Skripteinbindung an. Verwenden Sie diese Liste, um Versionen zu vergleichen oder eine vorherige Version wiederherzustellen. Siehe Versionen. |
| Zugriffssteuerungen | Wird verfügbar, wenn das Kontrollkästchen Vom Client aufrufbar aktiviert ist und in Standard-Skripteinbindungen ausgeblendet wird. Verwenden Sie diese Option, um ein CCSI vor nicht autorisierter Verwendung zu schützen, wenn kein öffentlicher Zugriff gewährt wird. |
Skripteinbindungen verwenden
Skripteinbindungen finden Sie unter „Systemdefinition“ oder „System-UI“. Sie können vorhandene Skripteinbindungen aus einem Skript aufrufen oder eine neue erstellen.
Um eine völlig neue Skripteinbindung zu erstellen, können Sie das Format einer der vorhandenen Skripteinbindungen verwenden. In diesem Beispiel lautet der Name Ihrer Skripteinbindung NewInclude, und es gibt eine einzelne Funktion namens myFunction. Es ist wichtig, dass der Name der Skripteinbindung mit dem Namen der Klasse, des Prototyps und des Typs übereinstimmt. Wenn Sie eine neue Skripteinbindung erstellen und ihr einen Namen geben, stellt das System ein Codefragment mit ordnungsgemäß eingerichteter Klasse und Prototyp bereit.
var NewInclude =Class.create();
NewInclude.prototype={
initialize :function(){},
myFunction :function(){<Put function code here>},
type :'NewInclude'};Sie können die Zeile myFunction dann wie folgt verwenden:
var foo =new NewInclude();
foo.myFunction();Vom Client aufrufbare Skripteinbindungen
Vom Client aufrufbare Skripteinbindungen (CCSI) stellen die Skripteinbindung für Client-Skripts, Listen-/Berichtsfilter, Referenzqualifizierer oder, wenn sie als Teil der URL angegeben sind, zur Verfügung.
Vorbereitungen
Erforderliche Rolle: Administrator
Prozedur
Datenschutzeinstellungen für vom Client aufrufbare Skripteinbindungen
Datenschutzeinstellungen für vom Client aufrufbare Skripteinbindungen (CCSI) bestimmen, wer auf eine vom Client aufrufbare Skripteinbindung zugreifen kann.
Private Datenschutzeinstellung
Die private Datenschutzeinstellung bedeutet, dass Gäste, die auf öffentliche Seiten zugreifen, nicht auf die vom Client aufrufbare Skripteinbindung zugreifen können. Ein privates Skript kann nur von einem angemeldeten Benutzer ausgeführt werden.
Öffentliche Datenschutzeinstellung
Eine öffentliche Datenschutzeinstellung bedeutet, dass das Client-Skript von nicht angemeldeten Benutzern ausgeführt werden kann, die eine entsprechende HTTP-Anforderung erstellen. Dies kann zu einem Sicherheitsproblem führen, wenn das Client-Skript vertrauliche Informationen bereitstellt.
- GlideSystemAjax
- SysMessageAjax
- KnowledgeMessagingAjax
- KnowledgeAjax
- PasswordResetAjax
Legen Sie den Datenschutz für alle vom Client aufrufbaren Skripteinbindungen fest
Ändern Sie die Datenschutzeinstellung für alle vom Client aufrufbaren Skripteinbindungen.
Um weitere Kontrolle über alle vom Client aufrufbaren Skripteinbindungen zu ermöglichen, können Administratoren die Eigenschaft „glide.script.ccsi.ispublic“ hinzufügen. Diese Eigenschaft ändert die Sichtbarkeit der vom Client aufrufbaren Skripteinbindungen, indem sie alle als öffentlich oder privat definiert. Konfigurieren Sie die Eigenschaft wie folgt:
| Titel | Eigenschaft |
|---|---|
| Name | glide.script.ccsi.ispublic |
| Typ | Wahr|Falsch |
| Wert | falsch |
Datenschutz für eine einzelne vom Client aufrufbare Skripteinbindung ändern
Ändern Sie die Datenschutzeinstellung für eine einzelne vom Client aufrufbare Skripteinbindung, indem Sie die Funktion isPublic() hinzufügen.
Die Einstellung „isPublic()“ hat Vorrang vor der Eigenschaft glide.script.ccsi.ispublic. Beispiel: Wenn die Eigenschaft auf falsefestgelegt ist, wodurch alle vom Client aufrufbaren Skripteinbindungen privat sind, und ein Skript isPublic() auf truefestlegt, ist das Skript öffentlich.
Um die Datenschutzeinstellung für eine einzelne vom Client aufrufbare Skripteinbindung zu ändern, fügen Sie der Skripteinbindung die folgende Methode hinzu:
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'};
Sicherheit für vom Client aufrufbare Skripteinbindungen
Pschützen Sie Ihre vom Client aufrufbare Skripteinbindung (Client Callable Script Include, CCSI) vor nicht autorisierter Verwendung. Für alle CCSI-Datensätze, die in einer Kundenanwendung erstellt werden, werden Empfehlungen angezeigt, die das Sicherheitsrisikoreduzieren können.
Beim Erstellen eines CCSI zeigt das System die folgenden Sicherheitsempfehlungen an, sofern sie noch nicht konfiguriert wurden:
- Fügen Sie eine Zugriffssteuerung hinzu, oder definieren Sie sie, es sei denn, das CCSI hat öffentlichen Zugriff.
- Verwenden Sie GlideRecordSecure anstelle der GlideRecord -API, um die Sicherheit zu erhöhen, wenn das Skript die Datenbank abfragt.Hinweis:Um die Sicherheitsempfehlungsnachrichten zu deaktivieren, legen Sie die Eigenschaft „glide.script.ccsi.customer_scoped.security_msgs_enabled“ in der Tabelle „sys_properties“ auf „falsch“ fest. Der Standardwert ist auf truefestgelegt.
Weitere Informationen zur Sicherheits-Compliance finden Sie unter Einstellungen für die Härtungseinstellungen für die Instanzsicherheit.
Discovery-Skripteinbindungen
DiscoverySkripteinbindungen enthalten definierte JavaScript-Klassen, die für Discovery-Aufgaben verwendet werden können.
GlideRecordUtil für die Arbeit mit GlideRecords verwenden
GlideRecordUtil ist eine Dienstprogrammklasse, die nützliche Methoden für die Arbeit mit GlideRecords während Discovery bietet. Beschreibungen der verfügbaren Methoden finden Sie unter GlideRecordUtil.
Eine GlideRecord-Instanz erhalten
var now_GR = new GlideRecordUtil().getCIGR("2dfd7c8437201000deeabfc8bcbe5d56");var now_GR = new GlideRecordUtil().getGR( "cmdb_ci_computer", "2dfd7c8437201000deeabfc8bcbe5d56");Alle Felder in einem GlideRecord abrufen
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-Objektfelder ausfüllen
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();Tabellenhierarchien abrufen
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 und AutomationException verwenden
Beim Schreiben von Discovery-Sensoren und sensorbezogenen Skripts möchten Sie möglicherweise DiscoveryException oder AutomationException verwenden, um anzuzeigen, dass eine Ausnahme von Discovery aufgetreten ist.
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()); }Das obige Beispiel gilt auch für AutomationException. DiscoveryException wird normalerweise verwendet, um die Ausnahmebehandlung speziell für Discovery bereitzustellen, während AutomationException für die Ausnahmebearbeitung, die sowohl für Orchestration als auch für Discovery gilt, verwendet wird.