Skripteinbindungen
Skripteinbindungen werden verwendet, um JavaScript zu speichern, das auf dem Server ausgeführt wird.
Erstellen Sie Skripteinbindungen, um JavaScript-Funktionen und -Klassen zur Verwendung durch Serverskripts zu speichern. Jede Skripteinbindung definiert entweder eine Objektklasse oder eine Funktion.
Erwägen Sie die Verwendung von Skripteinbindungen anstelle globaler Business-Regeln, da Skripteinbindungen nur auf Anforderung geladen werden. Siehe Datenschutzeinstellungen für vom Client aufrufbare SkripteinbindungenUnd Discovery-SkripteinbindungenFür weitere Informationen.
Weitere Beispiele für Skripts finden Sie unter Nützliche Skripts.
Skripteinbindungsformular
Skripteinbindungen haben einen Namen, eine Beschreibung und ein Skript. Sie geben auch an, ob sie aktiv sind oder nicht und ob sie über ein Client-Skript aufgerufen werden können. Zeigen Sie vorhandene an, oder erstellen Sie eine neue Skripteinbindung mithilfe des Formulars „Skripteinbindung“.
Um auf Skripteinbindungen zuzugreifen, navigieren Sie zu an.
| Feld | Beschreibung |
|---|---|
| Name | Der Name der Skripteinbindung. Wenn Sie eine Klasse definieren, muss dies mit dem Namen der Klasse, dem Prototyp und dem Typ übereinstimmen. Wenn Sie eine klassenlose Skripteinbindung (bei Bedarf) 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 Umfangs aufzurufen. |
| Glide AJAX aktiviert | Die Skripteinbindung ist für Client-Skripts, Listen-/Berichtsfilter, Referenzqualifizierer oder wenn als Teil der URL angegeben. Vom Client aufrufbare Skripteinbindungen werden über aufgerufen GlideAjax Und erfordern, dass Anwender eine ACL erfüllen, die der Skripteinbindung zugeordnet ist. Wenn ausgewählt, wird Zugriffssteuerungen Zugehöriger Link ist verfügbar. Weitere Informationen finden Sie unter Datenschutzeinstellungen für vom Client aufrufbare Skripteinbindungen. |
| Mobil aufrufbar | Die Skripteinbindung ist für Client-Skripts verfügbar, die von Mobilgeräten aufgerufen werden. |
| Sandbox aktiviert | Die Skripteinbindung wird über die Skript-Sandbox aufgerufen, z. B. eine Abfragebedingung. Diese Methode erfordert keine Authentifizierung. Weitere Informationen zur Sandbox finden Sie unter Configuring Script sandbox property. |
| Anwendung | Die Anwendung, in der sich diese Skripteinbindung befindet. |
| Zugänglich von | Legt fest, welche Anwendungen auf dieses Skript zugreifen können:
|
| Aktiv | Aktiviert die Skripteinbindung, wenn ausgewählt. Deaktivieren Sie das aktive Feld, um die Skripteinbindung zu deaktivieren. |
| Beschreibung | Stellt beschreibenden Inhalt zur Skripteinbindung bereit. |
| Skript | Definiert das serverseitige Skript, das ausgeführt werden soll, wenn es von anderen Skripts aufgerufen wird. Das Skript muss eine einzelne JavaScript-Klasse oder eine globale Funktion definieren. Der Klassen- oder Funktionsname muss mit übereinstimmen Name Feld. |
| Paket | Das Paket, das diese Skripteinbindung enthält. |
| Erstellt von | Der Anwender, der diese Skripteinbindung erstellt hat. |
| Aktualisiert von | Der Anwender, 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 Vom Client aufrufbar Das Kontrollkästchen ist aktiviert und in Standardskripteinbindungen ausgeblendet. Verwenden Sie diese Option, um eine 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 Skripteinbindung erstellen.
Um eine vollständig neue Skripteinbindung zu erstellen, können Sie dem Format einer beliebigen vorhandenen Skripteinbindung folgen. In diesem Beispiel lautet der Name Ihrer Skripteinbindung Neu einbeziehen Und es wird eine einzelne Funktion aufgerufen 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 bereit, in dem die Klasse und der Prototyp ordnungsgemäß eingerichtet sind.
var NewInclude =Class.create();
NewInclude.prototype={
initialize :function(){},
myFunction :function(){<Put function code here>},
type :'NewInclude'};Sie können dann verwenden MyFunction Zeile wie diese:
var foo =new NewInclude();
foo.myFunction();Vom Client aufrufbare Skripteinbindungen
Aufrufbare Clientskripteinbindungen (CCSI) machen die Skripteinbindung für Client-Skripts, Listen-/Berichtsfilter, Referenzqualifizierer oder, wenn als Teil der URL angegeben, verfügbar.
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 nicht von einem nicht angemeldeten Anwender ausgeführt werden.
Öffentliche Datenschutzeinstellung
Eine öffentliche Datenschutzeinstellung bedeutet, dass das Clientskript von nicht angemeldeten Anwendern 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
- PasswortZurücksetzenAjax
Legen Sie den Datenschutz für alle vom Client aufrufbaren Skripteinbindungen fest
Ändern Sie die Datenschutzeinstellung für alle vom Client aufrufbaren Skripteinbindungen.
Um eine weitere Kontrolle über alle vom Client aufrufbaren Skripteinbindungen bereitzustellen, können Administratoren hinzufügen Glide.script.ccsi.isöffentlich Eigenschaft. Diese Eigenschaft ändert die Sichtbarkeit von vom Client aufrufbaren Skripteinbindungen, indem sie alle öffentlich oder privat macht. Konfigurieren Sie die Eigenschaft wie folgt:
| Titel | Eigenschaft |
|---|---|
| Name | Glide.script.ccsi.isöffentlich |
| Typ | Wahr|falsch |
| Wert | falsch |
Ändern Sie den Datenschutz für eine einzelne vom Client aufrufbare Skripteinbindung
Ändern Sie die Datenschutzeinstellung für eine einzelne vom Client aufrufbare Skripteinbindung, indem Sie hinzufügen IsPublic() Funktion.
Die IsPublic() Die Einstellung hat Vorrang vor glide.script.ccsi.ispublicEigenschaft. Beispiel: Wenn die Eigenschaft auf festgelegt ist Falsch , Macht alle vom Client aufrufbaren Skripteinbindungen privat und einen Skriptsatz IsPublic() Bis Wahr , Das Skript ist öffentlich.
Um den Datenschutz 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
P Wechseln Sie Ihre aufrufbare Clientskripteinbindung (CCSI) gegen nicht autorisierte Verwendung. Für alle CCSI-Datensätze, die eine Kundenanwendung erstellt werden, werden Empfehlungen angezeigt, die zur Reduzierung des Sicherheitsrisikos beitragen können .
Beim Erstellen einer CCSI zeigt das System die folgenden Sicherheitsempfehlungen an, wenn sie noch nicht konfiguriert wurden:
- Fügen Sie eine Zugriffssteuerung hinzu oder definieren Sie sie, es sei denn, die CCSI hat öffentlichen Zugriff.
- Verwenden GlideRecordSecure Anstelle von GlideRecord API für bessere Sicherheit, wenn das Skript die Datenbank abfragt.Hinweis:Legen Sie die Eigenschaft fest, um die Sicherheitsempfehlungsnachrichten zu deaktivieren glide.script.ccsi.customer_scoped.security_msgs_enabled Bis Falsch In der Tabelle „sys_properties“. Der Standardwert ist auf festgelegt Wahr .
Siehe Härtungseinstellungen Für Instanzsicherheit Für zusätzliche Informationen zur Sicherheits-Compliance.
Discovery-Skripteinbindungen
DiscoverySkripteinbindungen definieren JavaScript-Klassen, die Sie verwenden können, um sie auszuführen DiscoveryAufgaben.
Verwenden von GlideRecordUtil zur Arbeit mit GlideRecords
GlideRecordUtil Ist eine Dienstprogrammklasse, die Methoden bereitstellt, die für die Arbeit mit GlideRecords während nützlich sind Discovery. Siehe GlideRecordUtil Für Beschreibungen der verfügbaren Methoden.
GlideRecord-Instanz wird abgerufen
var now_GR = new GlideRecordUtil().getCIGR("2dfd7c8437201000deeabfc8bcbe5d56");var now_GR = new GlideRecordUtil().getGR( "cmdb_ci_computer", "2dfd7c8437201000deeabfc8bcbe5d56");Ruft alle Felder in einem GlideRecord ab
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 werden ausgefüllt
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 Werden Abgerufen
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".Verwenden Sie DiscoveryException und AutomationException
Beim Schreiben DiscoverySensoren und sensorbezogene Skripts. Sie können DiscoveryException oder AutomationException verwenden, um anzugeben, dass eine Ausnahme stammt Discovery.
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 Ausnahmeverarbeitung speziell für Discovery bereitzustellen, während AutomationException Wird für die Ausnahmeverarbeitung verwendet, die sowohl für Orchestration als auch gilt Discovery.