Die Asset Klassendefinition
Die Klassendefinition ist das Grundgerüst einer Asset-Klasse. Sie enthält Attribute, welche die Eigenschaften einer Asset-Klasse abbilden. Jede Asset-Klasse besitzt ihre eigenen, klassenspezifischen Attribute. So besitzt bspw. die Klasse Computer u. a. die Attribute Hersteller, Modell und Seriennummer; die Klasse Raum hingegen besitzt u. a. die Attribute Gebäude, Geschoss und Raumtyp.
Sie können diese Attribute (Eigenschaften) ändern, indem Sie im Quellcode der Klassendefinition Attribute hinzufügen oder entfernen oder deren Eigenschaften ändern. Im Agentenportal bilden diese Attribute dann die Formularfelder, die beim Anlegen oder Bearbeiten eines Assets zur Verfügung stehen.
Alle Änderungen an den Klassendefinitionen werden historisiert und versioniert. In der Detailansicht einer Asset-Klasse können Sie jederzeit auf eine vorherige Version zurückblicken.

Abb.: In der Klassendefinition werden die Formularfelder definiert
Hinweise zur Migration KIX 17 > KIX 18
Die Klassedefinition einer Asset-Klasse besteht aus einem Perl-Quellcode. Mit diesem wird definiert, welche Formularfelder beim Anlegen bzw. Bearbeiten eines Assets zur Verfügung stehen.
Benötigen Sie weitere Formularfelder oder sollen Formularfelder bspw. anders angeordnet werden, können Sie den Quellcode dahingehend ändern. Die Grundelemente eines Assets wie Name, Verwendungsstatus, Vorfallstatus oder Asset-Verknüpfung können Sie jedoch nicht ändern.
Eine Übersicht der in einer Klassendefinition verwendeten Attribute und Attributtypen finden Sie unter:
Achtung
Änderungen an der Klassendefinition können Systemfehler verursachen. Sie sollten daher Kenntnisse im Umgang mit Quellcodes (insbesondere mit Perl) haben und Ihre Änderungen mit Bedacht vornehmen. Zögern Sie bitte nicht, uns zu kontaktieren, wenn Sie Hilfe benötigen.

Abb.: Klassendefinition der Asset-Klasse "Computer"
Beginn einer Formulargruppe
![]() | Der Parameter In der Formulargruppe sind weitere Formularelemente (Attribute) wie Textfelder, Dropdown-Listen, Schaltflächen etc. enthalten. |
Dropdown
![]() | Dieser Codeblock generiert ein Dropdown-Element mit zugehörigem Textlabel. Im Beispiel enthält das Dropdown alle im General Catalog angelegten Computertypen. Sie können solch einen Codeblock kopieren, an gewünschter Stelle einfügen und nach Erfordernis anpassen. |
Textfeld
![]() | Dieser Codeblock generiert ein Textfeld mit zugehörigem Textlabel. Im Beispiel ist dies das Feld "Hersteller" mit einer Breite von 50px. Sie können solch einen Codeblock kopieren, an gewünschter Stelle einfügen und nach Erfordernis anpassen. |
Kommentare
![]() | Codezeilen mit vorangestellter Raute (#) kennzeichnen Kommentare. Sie werden vom System nicht berücksichtigt. Bei initial auskommentierten Zeilen handelt es sich um Hinweise und Beispiele oder um bereits für Sie vorbereitete Attribut-Eigenschaften. Entfernen Sie bei Bedarf eine Raute, um die entsprechende Codezeile zu aktivieren. Sie können eigene Kommentare oder Notizen in den Code schreiben, bspw. um einzelne Codeblöcke zu kennzeichnen oder um Hinweise zum Codeblock zu notieren. Setzen Sie vor jede Kommentarzeile eine Raute. |
Sie können die Klassendefinition einer Asset-Klasse ändern, indem Sie Änderungen an deren Quellcode vornehmen. Damit legen Sie fest, welche Formularfelder (Attribute) beim Anlegen/Bearbeiten eines Assets zur Verfügung stehen, wie diese aussehen und wie sie gruppiert sind. Die Grundelemente eines Assets wie Name, Verwendungsstatus, Vorfallstatus oder Asset-Verknüpfung können jedoch nicht geändert werden.
Achtung
Änderungen an der Klassendefinition können Systemfehler verursachen. Sie sollten daher Kenntnisse im Umgang mit Quellcodes (insbesondere mit Perl) haben und Ihre Änderungen mit Bedacht vornehmen. Zögern Sie bitte nicht, uns zu kontaktieren, wenn Sie Hilfe benötigen.

Abb.: Die Klassendefinition der Asset-Klasse Computer
Um den Quellcode einer Klassendefinition zu ändern, können Sie bspw.:
die bestehenden Attribute und Werte direkt im Quellcode ändern
Teile des Quellcodes kopieren, an anderer Stelle im Quellcode wieder einfügen und anschließend ggf. anpassen
eigene Zeilen in den Quellcode schreiben
Teile des Quellcodes löschen oder ersetzen
den gesamten Quellcode löschen oder ersetzen.
den gesamten Quellcode löschen oder ersetzen.
So bearbeiten Sie die Klassendefinition
Wichtig
Achten Sie bei Ihren Änderungen auf eine korrekte Syntax im Quellcode! Setzen Sie u. a. Zeichenketten in Hochkommas, beenden Sie jede Zeile mit einem Komma und schließen Sie alle geöffneten Klammern. Wenn Sie Teile des Quellcodes kopieren, achten Sie darauf, diese an syntaktisch richtiger Stelle wieder einzufügen. Beachten Sie hierbei die Hierarchie der geöffneten Klammern. Gern unterstützen wir Sie mit unserem Support.
Navigieren Sie im Admin Modul zu
.Im Contentbereich wird eine Tabelle geöffnet, welche alle im System angelegten Asset-Klassen enthält.
Wählen Sie in der Tabelle die Asset-Klasse aus, deren Klassendefinition Sie ändern möchten.
Die Detailansicht der gewählten Asset-Klasse wird geöffnet.
Klicken Sie in der Titelzeile der Detailansicht auf
, um den Formular-Dialog zum Bearbeiten der Asset-Klasse zu öffnen. Im Formular-Dialog finden Sie das Feld "Klassendefinition", welches den Quellcode der Klassendefinition enthält.Zum leichteren Bearbeiten der Klassendefinition ziehen Sie das Textfeld an der unteren rechten Ecke auf die gewünschte Größe.
Alternativ können Sie den Quellcode in einen externen Text-Editor (z. B. Notepad++ ) kopieren, ihn dort bearbeiten und anschließend zurück ins Formular kopieren.
Ändern Sie den Quellcode indem Sie weitere Codezeilen einfügen oder bestehende Angaben ändern.
Lesen Sie dazu auch
Speichern Sie Ihre Änderungen mit
.
Ihre Änderungen sind sofort in allen neuen und bestehenden Assets dieser Klasse wirksam.
Anmerkung
Wenn Sie eigene Attributbezeichnungen verwenden, können Sie für diese die Übersetzungen selbst pflegen. Navigieren Sie dafür zum Menü
und pflegen Sie dort die entsprechenden Patterns ein.Damit Formularfelder im Self Service Portal angezeigt werden, setzen Sie das Attribut CustomerVisible = 1
(s. auch Sichtbarkeiten im SSP steuern)
Die Attribute einer Klassendefinition erzeugen die Formularfelder für das Anlegen von Assets. Die Eigenschaften und Werte der Attribute sowie ihre Anordnung und Gruppierung gestalten die Anordnung und das Aussehen der Formularfelder und somit den Aufbau des Formulars. Nachfolgend finden Sie eine Auswahl an Attributen, die Sie im Quellcode einer Klassendefinition verwenden können:

Abb.: Attribute in der Klassendefinition
Attribut | Beschreibung | Werte | Beispiel |
---|---|---|---|
CountDefault | Standardanzahl der Einträge (wenn Array-Attribut) | 0... n |
|
CountMax | Maximale Anzahl der Einträge (wenn Array-Attribut) | 0... n |
|
CountMin | Minimale Anzahl der Einträge (wenn Array-Attribut) | 0... n |
|
CustomerVisible | Steuert die Sichtbarkeit im Self Service Portal 0 - nicht sichtbar (false) 1 - sichtbar (true) | 0 | 1 |
|
Input | Beschreibt die Datenstruktur des Objekts. Es können weitere Attribute enthalten sein wie Das Attribut | Hash | Input => { Type => 'Text', Size => 50, MaxLength => 55, Translation => 1, Required => 0, GUIReadOnly => 1 } |
Key | Interner Bezeichner des Attributs. Unter dieser Bezeichnung wird das Formularfeld in der Datenbank hinterlegt. Das Schlüsselwort muss eindeutig sein und darf nur Zahlen und Buchstaben enthalten. Wird es im Nachgang geändert, sind die Daten aus alten Definitionen nicht mehr lesbar. | String alphanumerisch |
|
MaxLength | Maximale Länge des Eintrags im Feld | 1... n |
|
Name | Beschriftung des Feldes im Formular. Der Name erzeugt das Textlabel vor einem Formularfeld. Er kann aus Buchstaben, Zahlen, Leerzeichen, Bindestrichen und Unterstrichen bestehen. Verwenden Sie bitte keine Steuerzeichen wie einfache oder doppelte Hochkommas oder Klammern, da dies zu Diskrepanzen mit dem Quellcode führen würde. Wir empfehlen die Verwendung von englischen Wörtern, so können Sie die Übersetzung anhand von Patterns regeln (Menü ) | String |
|
Required | Definiert Pflichtfelder 0 - kein Pflichtfeld (false) 1 - Pflichtfeld (true) | 0 | 1 |
|
Searchable | Legt fest, ob das Feld durchsuchbar ist. 0 = nicht durchsuchbar (false) 1 = durchsuchbar (true) In Jobs bzw. Aktionen stehen nur Attribute zur Auswahl, die durchsuchbar sind ('Searchable' => 1) | 0 | 1 |
|
Translation | Wertübersetzung ja/nein? Nur möglich bei Feldern, mit vorbelegten Werten. 0 - Der Text im Feld wird nicht automatisch übersetzt 1 - Der Text im Feld wird übersetzt | 0 | 1 |
|
Size | Größe des Eingabefeldes | 1... n |
|
Sub =>[…] | Legt eine Substruktur (Unterordnung) an. Dadurch wird eine Verschachtelung der Formularelemente wie in einer Baumstruktur erzeugt. Das Unterelement kann wiederum weitere Sub-Elemente enthalten. | Sub => [ { Key => 'Type', Name => 'Type', Searchable => 1, Input => {...} } ] | |
Type | Definiert den Attributtyp, z. B.:
(s. auch Attributtypen in der Klassendefinition) | String ohne Leer-/Sonderzeichen |
|
Attributtypen und ihre Werte spezifizieren die Attribute einer Klassendefinition. Sie definieren bspw. welcher Art ein Textfeld (Input) ist, wie viele Zeichen eingegeben werden können oder woher die Daten in einem Auswahlfeld referenziert werden. Nachfolgend finden Sie eine Auswahl an Attributtypen.
Verweisen Attributtypen auf in KIX definierte Werte oder Objekte, unterliegen sie der Zugriffskontrolle entsprechend des Berechtigungskonzepts. Um Einträge pflegen zu können, benötigt ein Nutzer die entsprechenden READ-Berechtigungen, um Auswahlwerte nutzen zu können.

Abb. Der Attributtyp "Text" erzeugt ein Textfeld, hier mit einer Maximallänge von 50px.
Ermöglicht das Hinterlegen von Dateianhängen an Asset-Versionen.
Konfigurationsbeispiel
{
'Key' => 'Attachment',
'Name' => 'Attachment',
'Input' => {
'Type' => 'Attachment',
},
'CountMin' => 0,
'CountMax' => 5,
},
Hinweise
Es kann max. 1 Datei pro Attribut angehangen werden.Sollen mehrere Dateien angehangen werden können, muss dies über die Array-Struktur von CI-Attributen abgebildet werden.
Wird kein spezifisches Attributtyp für Anhänge verwendet, werden diese nicht versioniert. Sie können in früheren Versionen nicht wiederhergestellt werden.
Verweis auf andere Asset-Klassen. Ermöglicht die Auswahl gültiger Assetklassen.
Konfigurationsbeispiel:
{ 'CountDefault' => 0, 'CountMax' => 1, 'CountMin' => 0, 'CustomerVisible' => 0, 'Input' => { 'ReferencedCIClassLinkDirection' => 'Reverse', 'ReferencedCIClassLinkType' => 'Includes', 'ReferencedCIClassName' => [ 'Location', 'Building', 'Room' ], 'ReferencedCIClassReferenceAttributeKey' => 'Name', 'Required' => 1, 'Type' => 'CIClassReference' }, 'Key' => 'ParentLocation', 'Name' => 'Parent Location', 'Searchable' => 1 },
ReferencedCIClassName:
Es können n Assetklassen als Wertebereich in Form eines Arrays angegeben werden.
Soll nur eine Assetklasse benutzt werden, kann diese als einzelner String angegeben werden.
ReferencedCIClassReferenceAttributeKey: (optional)
Optionale Angabe.
Steuert für den Import/ Export von Assetklassen die Auflösung der Werte.
Wenn angegeben:
Export: Es werden die Namen/Werte der referenzierten Objekte ausgegeben anstatt deren IDs
Import: Die importierten Werte werden aufgrund des angegebenen Asset-Attributs aufgelöst ("Name" für Assetname).
Es können auch klassenspezifische Attribute-Keys angegeben werden, z.B. "SerialNumber" bei referenzierter Klasse "Computer".
Wenn nicht angegeben: Es wird die Nummer des referenzierten Objekts ausgegeben.
Parameter:
Name: Gibt den Namen des referenzierten Objekts anstelle seiner ID aus
Im o.a. Beispiel wird der Name des im Feld "Übergeordneter Standort" referenzierten Assets exportiert und nicht dessen Asset-Nummer (ID).
Key: Key eines klassenspezifischen Attributes.
Es wird der Wert des am Asset referenzierten Objekts exportiert.
Existieren mehrere Einträge, wird der erste Eintrag des Attributes verwendet.
Ist das Attribut am Asset nicht gesetzt, wird auf die Asset-Nummer zurückgegriffen.
Beispiel 1. Beispiel:ReferencedCIClassReferenceAttributeKey' => 'GLN',
Es wird der im Feld "Globale Lokationsnummer" angegebene Wert ausgegeben (bei Referenz auf Klasse "Gebäude").
Ermöglicht das Hinterlegen eines im System hinterlegten und gültigen Kontakts (filterbare Auswahlliste) und ist die Grundlage für die Zuordnung persönlicher Geräte zu Kontakten.
Auswahl über filterbare Auswahlliste.
Konfigurationsbeispiel
{
'Key' => 'OwnerUser',
'Name' => 'Assigned User',
'Input' => {
'Type' => 'Contact',
},
},
Assigned User: Zugeordneter Nutzer
Ermöglicht das Hinterlegen eines Datumswertes (Kalenderauswahl).
Im Backend wird das Datum im Format YYYY-MM-DD hh:mm:ss gespeichert, wobei der Zeitwert auf 00:00:00 fixiert ist.
Konfigurationsbeispiel
{
'Key' => 'FirstUsageDate',
'Name' => 'First Usage Date',
'Searchable' => 1,
'Input' => {
'Type' => 'Date',
'Required' => 1,
'YearPeriodPast' => 20,
'YearPeriodFuture' => 10,
},
},{
'Key' => 'OwnerUser',
'Name' => 'Assigned User',
'Input' => {
'Type' => 'Contact',
},
},
Parameter | Beschreibung |
---|---|
YearPeriodPast | Auswählbare Werte in der Vergangenheit |
YearPeriodFuture | Auswählbare Werte in der Zukunft |
Ermöglicht das Hinterlegen eines Zeitstempels (Kalender-Zeit-Auswahl).
Die Eingabe erfolgt über eine Kalender-Zeitauswahl.
Im Backend wird das Datum im Format YYYY-MM-DD hh:mm:ss gespeichert.
Konfigurationsbeispiel
{
'Key' => 'SeomDateTime',
'Name' => 'Some Date with Time',
'Searchable' => 1,
'Input' => {
'Type' => 'DateTime',
'Required' => 1,
'YearPeriodPast' => 20,
'YearPeriodFuture' => 10,
},
},
Parameter | Beschreibung |
---|---|
YearPeriodPast | Auswählbare Werte in der Vergangenheit |
YearPeriodFuture | Auswählbare Werte in der Zukunft |
Beinhaltet keinen Wert; dient der Strukturierung untergeordneter Attribute.
Konfigurationsbeispiel:
{
'Key' => 'SectionOwner',
'Name' => 'Owner Information',
'CustomerVisible' => 1,
'Input' => {
'Type' => 'Dummy'
},
'Sub' => [
{
'Key' => 'OwnerOrganisation',
'Name' => 'Assigned Organisation',
'Searchable' => 1,
'CustomerVisible' => 0,
'Input' => {
'Type' => 'Organisation'
},
},
{
'Key' => 'OwnerContact',
'Name' => 'Assigned Contact',
'Searchable' => 1,
'CountDefault' => 1,
'CountMin' => 0,
'CountMax' => 25,
'CustomerVisible' => 1,
'Input' => {
'Type' => 'Contact'
},
},
],
},
Ermöglicht das Hinterlegen von Werten aus dem General Catalog. Diese werden als filterbare Auswahlliste angezeigt.

Konfigurationsbeispiel
{
'CountDefault' => 0,
'CountMax' => 1,
'CountMin' => 0,
'CustomerVisible' => 0,
'Input' => {
'Class' => 'ITSM::ConfigItem::Computer::Type',
'Translation' => 1,
'Type' => 'GeneralCatalog',
},
'Key' => 'Type',
'Name' => 'Type'
'Searchable' => 1
},
Parameter | Beschreibung |
---|---|
Class | Verweis auf die General Catalog Klasse, welche den Wertebereich definiert |
Translation | Auswahlwerte werden übersetzt |
ValueDefault | Auswahlwert aus Liste vorauswählen |
Der Typ "Integer" ist entfallen und wird durch den Typ "Text" mit entsprechender RegEx-Konfiguration abgelöst.
Integer ermöglichte die Auswahl von Ganzzahlen (ohne Komma) in einer Einfachauswahlliste.
Ermöglicht das Hinterlegen eines im System hinterlegten und gültigen Kunden (Organisation) und ist die Grundlage für die Zuordnung von Kunden zu Geräten.
Auswahl über filterbare Auswahlliste.
Konfigurationsbeispiel
{
'Key' =>'CustomerCompany',
'Name' => 'CustomerCompany',
'Input' => {
'Type' => 'Organisation',
},
},
Erlaubt die Eintragung von gültigen SLA an Asset-Versionen.
Die Eingabe erfolgt über eine filterbare Auswahlliste. Das Verhalten in Eingabe, Suche und Anzeige entspricht dem des Typs CIClassReference.
In den vorgegebenen Assetklassen findet der an einem Asset hinterlegte SLA Verwendung bei Eintragung des SLA "SLA by Affected Asset" an einem Ticket. Zu diesem Zweck darf genau ein SLA eingetragen werden.
Konfigurationsbeispiel:
{
'CountDefault' => 0,
'CountMax' => 1,
'CountMin' => 0,
'CustomerVisible' => 0,
'Input' => {
'Type' => 'SLAReference'
},
'Key' => 'AssignedSLA',
'Name' => 'Assigned SLA',
'Searchable' => 1
},
Ermöglicht die Eingabe von einzeiligen, kurzen, unformatierten Texten.
Es kann ein regulärer Ausdruck und/oder eine Maximallänge angegeben werden, dem der Text entsprechen muss.
Konfigurationsbeispiel
{
'Key' => 'IPAddress',
'Name' => 'IP Address',
'Searchable' => 1,
'Input' => {
'Type' => 'Text',
'RegEx' => '^(?:[0-9]{1,3}\.){3}[0-9]{1,3}$',
'RegExErrorMessage' => 'Bitte vollständige IP Adresse eingeben: 123.123.123.123.',
'MaxLength' => 40
}
},
Parameter | Beschreibung |
---|---|
Size | Länge des Eingabefeldes |
MaxLength | max. Eingabelänge |
RegEx | Regulärer Ausdruck, auf den die Eingabe geprüft wird |
RegExErrorMessage | Anzeige, wenn regulärer Ausdruck nicht zutrifft |
Ermöglicht die Eingabe von mehrzeiligen, längeren unformatierten Texten.
Es kann ein regulärer Ausdruck angegeben werden, dem der Text entsprechen muss.
Konfigurationsbeispiel:
{
'Key' => 'Description',
'Name' => 'Description',
'Searchable' => 1,
'Input' => {
'Type' => 'TextArea',
'RegEx' => '\.$',
'RegExErrorMessage' => 'Please enter full stop.'
},
},