In C#-Skripten muss es die Möglichkeit geben mit dem aktuellen Teil des cmdbcores zu kommunizieren. Dies ist über Kontextvariablen geschafft.
Kontextvariable | Typ | Beschreibung |
cmdb | rimacon.cmdb.IPublicCMDB | Über dieses Interface wird einen Teil der omniSuite zur Verfügung gestellt. |
db | rimacon.cmdb.scripting.IDBConnection | Ermöglicht direkten Zugriff auf die Datenbank. |
Request | rimacon.cmdb.CUSTHTTPRESP.IRequest | Abfrage. |
Response | rimacon.cmdb.CUSTHTTPRESP.IResponse | Antwort. |
Kontextvariable | Typ | Beschreibung |
cmdb | rimacon.cmdb.IPublicCMDB | Über dieses Interface wird einen Teil der omniSuite zur Verfügung gestellt. |
db | rimacon.cmdb.scripting.IDBConnection | Ermöglicht direkten Zugriff auf die Datenbank. |
ServerLogin | string | E-Mail-Kontologin |
rimacon.cmdb.EMAILIN.EmailContext | Informationne über den angekomennen E-Mail. |
Kontextvariable | Typ | Beschreibung |
cmdb | rimacon.cmdb.IPublicCMDB | Über dieses Interface wird einen Teil der omniSuite zur Verfügung gestellt. |
db | rimacon.cmdb.scripting.IDBConnection | Ermöglicht direkten Zugriff auf die Datenbank. |
ctx | rimacon.cmdb.ImportScript.ImportContext | Datenaustauschkontext. |
Dieses Objekt enthält die Abfrage.
Hashtable CloneHeader()
Gibt alle Header-Variablen und Werte als Hashtable zurück (Kopie)
string Content {get;}
Enthält dens HTTP-Protokoll-Inhalt als Zeichenfolge. Bei Web-Seiten sind dies z.B. die POST-Daten (Formular-Objekte). Bei Web-Diensten ist dies die ganze Web-Nachricht.
Beispiel:
<?xml version="1.0" encoding="utf-8"?> <methodCall> <methodName>getCatalog</methodName> <params> <param> <value><string>catalog1</string></value> </param> </params> </methodCall>
byte[] FileContent(string varname)
Diese Funktion gibt den Inhalt der hochgeladener Datei als byte[] zurück.
bool FileExists(string varname)
Diese Funktion prüft, ob eine Datei unter angegebene Variable vorhanden ist (d.h. wurde uploadet).
string FileOriginalName(string varname)
Diese Funktion gibt den Originalname der hochgeladener Datei zurück (z.B. "Dsc00814.jpg").
string FileStringContent(string varname)
Diese Funktion gibt den Inhalt der hochgeladener Datei als Zeichenfolge zurück.
string Header(string name)
Gibt die Header-Variable zurück, zum Beispiel "User-Agent", "Keep-Alive", ...
string Page {get;}
Enthält den geforderten Seitennamen, z.B. "/meine_auswertung"
bool QueryExists(string name)
bool QueryExists(string name,int index)
Diese zwei Funktionen prüfen, ob angegebene Variablen (POST oder GET) vorhanden sind.
int QueryInt(string name)
int QueryInt(string name,int index)
string QueryString(string name)
string QueryString(string name,int index)
Diese vier Funktionen geben den Wert der POST- oder GET-Variable zurück.
Beispiele:
http://server/meine_seite?summe=123 QueryInt("summe") http://server/meine_seite?vorname=meyer QueryString("vorname") http://server/meine_seite?alter[0]=20&alter[1]=30 QueryInt("alter[1]") oder QueryInt("alter",1)
Das IResponse-Interface beinhaltet Eigenschaften und Methoden, die zur Steuerung der Ausgabe an den Clienten dienen.
void AddHeader(string name, string val)
Die AddHeader-Methode fügt einen HTTP-Header an den response an. Als Parameter werden dazu der Headername sowie der Headerwert erwartet.
string ContentType{set;}
Die ContentType-Eigenschaft setzt den gleichnamigen HTTP-Header und gibt damit an, um welchen Typ von Dokument es sich handelt.
Beispiel:
Response.ContentType="text/xml";
void Redirect(string new_url)
Die Redirect-Methode weist den Clienten per HTTP-Header an, eine andere Adresse aufzusuchen. Hierzu wird als Parameter die Zieladresse benötigt.
Beispiel:
Response.Redirect("http://www.google.de");
int ReturnCode{get;set;}
Die ReturnCode-Eigenschaft gibt die Statuscode des response an (erste Zeile der HTTP-Meldung). Standardwert ist 200.
void SetRawContent(byte[] bytes)
Die SetRawContent-Methode setzt der Ausgabe als Binärdaten. Als Parameter werden dazu die zu schreibenden Daten erwartet.
void Write(string tx)
Die Write-Methode schreibt einen beliebigen Text in die Ausgabe. Als Parameter wird der zu schreibende Text erwartet.
Beispiel:
Response.Write("ich bin http-endpoint");
public string FullName
public string Name
public string Email
public string Filename
public string ContentType
public byte[] BinaryBody
Diese Klasse enthält Informationne über den angekomennen E-Mail.
public int EMAIL_ID
EMAIL.EMAIL_ID in Datenbank.
public string PlainTextBody
Inhalt als Klartext.
public string HtmlBody
Inhalt als HTML.
public string Subject
Betreff.
public EmailAttachment[] Attachment
Änhänge. Mehr unter rimacon.cmdb.EMAILIN.EmailAttachment
public EmailAddress From
Sender. Mehr unter rimacon.cmdb.EMAILIN.EmailAddress
Über dieses Interface werden die Ergebnisse von Import-Routine an das allgemeines import-Alghoritmus gesendet. Das Ergebnis ist ein 2D-Array.
void setColumns(int count)
void setColumns(string[] names)
Legt die Spaltenanzahl und evtl. die Spaltenname fest.
void setColumnName(int index, string name)
Legt eine Spaltename fest.
int appendDataRow()
Fügt eine neue leere Zeile hinzu.
string this[int ColumnIndex, int RowIndex] { set; }
string this[int ColumnIndex] { set; }
string this[string ColumnName, int RowIndex] { set; }
string this[string ColumnName] { set; }
Legt Inhalt einer Zelle in der 2D-Array fest. In den Varianten ohne RowIndex wird die letzte Zeile benutzt.
Diese Klasse dient für Datenaustausch zwischen dem allgemeinen import-Alghoritmus und dem Skript das die Daten generiert.
public Data data
In dieses Objekt werden die eingelesene Daten geschrieben. Mehr unter rimacon.cmdb.ImportScript.Data
public int maxrows
Definiert, wieviel maximal Zeilen sollte zurückgegeben werden. Negative Wert bedeutet "alle Zeilen".
Über dieses Interface wird einen Teil der omniSuite zur Verfügung gestellt.
int LastErrorNumber { get; }
Diese Eigenschaft ist für Zukunft reserviert.
string LastErrorText { get; }
Gibt die letzte Fehlermeldung zurück.
IPublicWeb web { get; }
Mehr unter rimacon.cmdb.IPublicWeb
IPublicDiscovery discovery { get; }
Mehr unter rimacon.cmdb.IPublicDiscovery
IUpdateSDFor1HWMResult UpdateSDFor1HWM(string xml, int mdtid, int caller_anwid, string caller, bool can_create_new_hwm, bool use_serialnumber)
Diese Funktion übernimmt Scanangaben in die Datenbank.
Variable | Beschreibung |
Rückgabewert | rimacon.cmdb.IUpdateSDFor1HWMResult |
xml | Inhalt wie in einer HWM-Datei |
mdtid | Mandant-ID (normalerweise 1) |
caller_anwid | Webbenutzer-ID (ANW.ANW_ID) für Logging. Wenn unbekannt, benutzen Sie 0. |
caller | Anrufer für Logging. Z.B. "aus E-Mail-Eingang". |
can_create_new_hwm | Legt fest, ob ein neuer Rechner erstellt werden darf. |
use_serialnumber | Wenn gleich "true", für die Identifizierung wird die BIOS=>SerialNumber-Eigenschaft benutzt. Wenn gleich "false", wird Rechnername benutzt. |
int ID { get; }
Gibt die Sicht-ID (Report.ReportID) zurück.
void hideAllColumns()
Versteckt alle Spalten.
void showColumn(string columnname,bool show)
Zeigt oder versteckt eine konkrete Spalte.
void setTitle(string title)
Legt die Überschrift fest.
void setShowOrder(string[] columns)
Legt die Sortierungsreihenfolge fest.
string generPathForShow(string sessionkey)
Gibt das Pfad für Anzeige der Sicht zurück.
int LastErrorNumber {get;}
Reserviert für Zukunft.
string LastErrorText {get;}
Die letzte Fehlermeldung.
string login(string user, string password, Hashtable htMisc)
string login(string user, Hashtable htMisc)
In der Variante mit password wird user/password geprüft und wenn ok sind, gibt die Funktion ein neues SessionKey zurück, sonst gibt eine leere Zeichenfolge zurück.
In der Variante ohne password wird ein neues SessionKey ohne Prüfung (user muss natürlich einem Webbenutzer entsprechen) generiert. Dies ermöglicht über HTTP-Endpoint eigene Anmeldeseite mit eigenem Authentifizierungsalghoritmus programmieren.
Die Variable htMisc (kann auch null sein) enthält zusätzliche Information zu der Anmeldung. Zur Zeit sind zwei Informationen unterstützt:
IP: IP-Addresse des Webbenutzer
LANG: Sprache. Zur Zeit "EN" oder "DE". Alle andere Werte werden als "DE" interpretiert.
Beispiel:
Hashtable misc = new Hashtable(); misc["IP"]="192.168.1.50"; misc["LANG"]="EN"; string sessionkey=cmdb.web.login("admin","admin",misc); if (sessionkey=="") { // Fehler => cmdb.web.LastErrorText } else { // OK }
bool logout(string sessionkey)
Führt eine Abmeldung für das angegebenes SessionKey aus. Üblicherweise werden alle temporären Report gelöscht.
int getANWforSessionKey(string sessionkey)
Gibt die Webbenutzer-ID (ANW.ANW_ID) für das angegebenes SessionKey zurück.
string generPathForUserFormular(string sk,int userformid,int objid,bool is_readonly)
Gibt das Pfad für die über userformid-angegebene individuelle Maske zurück.
IPublicReport createReport(string table, string sesionkey)
Erstellt einen Standardsicht und gibt ein Interface zurück. Mehr unter rimacon.cmdb.IPublicReport.
string ErrMsg { get; }
Fehlermeldung.
int HwmID { get; }
Rechner-ID (HWM.HWM_ID).
string CompName { get; }
Rechnername (HWM.HWM_COMPNAME)
StringCollection ErrorLog { get; }
Fehlerliste.
StringCollection DetailLog { get; }
Details beim Übernahme.
int CountNew { get; }
Wieviele Zeilen in Scantabellen wurden erstellt.
int CountUpdated { get; }
Wieviele Zeilen in Scantabellen wurden aktualisiert.
int CountDeleted { get; }
Wieviele Zeilen in Scantabellen wurden gelöscht.
Ermöglicht den direkten Zugriff auf die Datenbank.
string ExecuteInto1Var(string sql,string field_value,out string errmsg)
string ExecuteInto1Var(string sql,string field_value, OleDbParameter prm, out string errmsg)
string ExecuteInto1Var(string sql,string field_value, OleDbParameter[] prms, out string errmsg)
Führt eine SQL-Anweisung aus und gibt den Wert der ersten Zeile und der angegebenen Spalte zurück. Wenn "field_value" leer ist, wird die erste Spalte genommen.
Beispiel:
string errmsg; Response.Write( db.ExecuteInto1Var("select top 1 HWM_COMPNAME from HWM","",out errmsg) );
Hashtable ExecuteIntoHashtable(string sql, out string errmsg)
Unter "Usings" muss System.Collections definiert werden.
Führt eine SQL-Anweisung aus und gibt das Ergebnis als Hashtable zurück.
Beispiel:
string errmsg; string ret="<table cellspacing=0 cellpadding=2 border=1><tr style='font-weight:bold'><td>Name</td><td>RAM</td></tr>"; Hashtable ht= db.ExecuteIntoHashtable("select top 10 HWM_COMPNAME, HWM_RAM from HWM",out errmsg); for (int i=0; i<ht.Count; i++) { Hashtable row=(Hashtable)ht[i]; ret+="<tr>"; ret+="<td>" + row["HWM_COMPNAME"].ToString() + "</td>"; ret+="<td>" + row["HWM_RAM"].ToString() + "</td>"; ret+="</tr>"; } ret+="</table>"; Response.Write(ret);
Hashtable ExecuteIntoHashtable1xNperID(string sql, string field_id, string field_value, out string errmsg)
Unter "Usings" muss System.Collections definiert werden.
Führt eine SQL-Anweisung aus und gibt das Ergebnis als Hashtable zurück.
Beispiel:
string errmsg; Hashtable ht = db.ExecuteIntoHashtable1xNperID("select HWM_ID, HWM_COMPNAME from HWM","","", out errmsg); Response.Write("ID 20 ist " + ht["20"] + "<br>"); Response.Write("ID 30 ist " + ht["30"] + "<br>");
int[] ExecuteIntoIntArray(string sql, string field_value, out string errmsg)
Führt eine SQL-Anweisung aus und gibt die angegebene Spalte als int-Field zurück.
Beispiel:
string errmsg; int[] ids = db.ExecuteIntoIntArray("select top 10 HWM_ID from HWM", "", out errmsg); for (int i=0; i<ids.Length; i++) Response.Write(ids[i].ToString() + "<br>");
string[] ExecuteIntoStringArray(string sql, string field_value, out string errmsg)
Führt eine SQL-Anweisung aus und gibt die angegebe Spalte als string-Field zurück.
Beispiel:
string errmsg; string[] rechner = db.ExecuteIntoStringArray("select top 10 HWM_COMPNAME from HWM order by HWM_COMPNAME", "", out errmsg); Response.Write( string.Join("<br>",rechner) );
void ExecuteNonQuery(string sql, out string errmsg)
void ExecuteNonQuery(string sql, OleDbParameter prm, out string errmsg)
void ExecuteNonQuery(string sql, OleDbParameter[] prms, out string errmsg)
Führt eine SQL-Anweisung aus und gibt kein Ergebnis zurück. Wird üblicherweise bei UPDATE-, INSERT- oder DELETE-Anweisungen genutzt.