Mit expliziten Transformationszuordnungsskripts zuordnen

  • Freigeben Version: Xanadu
  • Aktualisiert 1. August 2024
  • 3 Minuten Lesedauer
  • Definieren Sie Zuordnungsbeziehungen explizit im Datensatz der Transformationszuordnung selbst.

    Ein explizites Skript für die Transformationszuordnung definiert Zuordnungsbeziehungen explizit im Datensatz der Transformationszuordnung selbst. Sie wird ausgeführt, nachdem die Quellfeldwerte in den Zieldatensatz kopiert wurden und bevor sie in die Datenbank geschrieben werden.

    CMDB-Softwareimport durch explizites Zuordnungsskript erleichtert

    Dies ist ein Beispiel, das zeigt, wie explizites Zuordnungsskripting verwendet werden kann, um den Import von Softwareinstanzen in die CMDB zu erleichtern, wobei die Anzahl in der Tabelle der Softwarepakete die Anzahl der Instanzen widerspiegeln muss.

    In der CMDB gibt es Tabellen für Softwarepakete und Softwareinstanzen. Ein Softwarepaket bezieht sich auf einen einzelnen Softwaretitel, z. B. Mozilla Firefox. Eine Softwareinstanz bezieht sich auf eine einzelne Instanz eines Softwaretitels, z. B. Mozilla Firefox auf Jared_T60_Laptop.

    Technisch gesehen ist eine Softwareinstanz eine Viele-zu-Viele-Beziehung mit einem Softwarepaket und einem Configuration Item. Dieses Skript importiert Softwareinstanzen. Dabei wird geprüft, ob ein Softwarepaket für die Instanz vorhanden ist. Wenn das Softwarepaket nicht vorhanden ist, wird es erstellt, und die sys_id für das neu erstellte Paket wird der Instanz über das Feld Software des Instanzdatensatzes zugeordnet.

    //First we will initialize some temporary variables, 
    //referencing values from the Import Set table source that will be used to 
    //reference software package records and create them if necessary. 
     
    var name= source.u_name;
    var version = source.u_version;
    var sid =""; 
     
    //Next we will perform a glide query on the software package table (Note: The target table 
    //for the import is software instances) 
    var sgr =new GlideRecord("cmdb_ci_spkg");
     
    //Here we are building our query to search for software packages where the name and 
    //version of the package matches the name and version of the instance being imported 
    sgr.addQuery("name",name);
    sgr.addQuery("version", version);
    sgr.query();
     
    //Now if a software package with the correct name and version are found then we record 
    //the sys_id of the package record otherwise we create the package and then record the sys_id
    if(sgr.next()){
       sid = sgr.sys_id;}else{// create it
       sgr.initialize();
       sgr.newRecord();
       sgr.name=name;
       sgr.version= version;
       sid = sgr.insert();
       
       //Here we make an entry in System Import Set Log saying that we had to create a software package  
       log.info("Created new spkg: "+name+" - "+ version);
    }
    //Finally we set the reference field on our software instance record to the sys_id we have 
    //recorded for the software package. In doing so we are also relating the 
    //software package with the instance and so the count, which keeps track of
    //the number of instances associated with a package, will automatically be incremented.
    target.software= sid;

    Untergeordnete Tabellen werden durch Festlegen von Klassennamen in einem CMDB-Import gefüllt

    Beispiel für den Import von Servern in die Configuration Management Database.

    Die Zieltabelle für den Import ist die Tabelle „cmdb_ci_servers“.
    var operating_system = source.u_operating_system.toString();
     
     
    //This if statement uses JavaScript regular expressions to search the operating system
    if( operating_system.match(/linux/i)!=null){
       target.sys_class_name="cmdb_ci_linux_server";
    };
     
    if( operating_system.match(/win/i)!=null){
       target.sys_class_name="cmdb_ci_win_server";
    };

    Anwender importieren Datenbereinigung

    Beispielskript, das zeigt, wie Anwenderdaten vor dem Import bereinigt werden.

    //Note: The field names referenced from an import set are 
    //prefixed with an "u_", also note that it is necessary  to use the java method
    // toString() to so that we can use JavaScript functions to 
    //manipulate the data.
    var name= source.u_name.toString();
     
    //Use native JavaScript function split to create an array for each word in the name "splitting" it 
    //anywhere that there is a space
    var split_names =name.split(" ");
     
    //Find the number of of names (i.e., first and last name only, or first middle and last name, etc.)
    var num_names = split_names.length;
     
    // If there is only one name then map it to the last name field in the user table
    if(num_names ==1){
       target.last_name= split_names[0];
    }
     
    //if there are two names then map the first one to first name and the last one to last name
    if(num_names ==2){
       target.first_name= split_names[0]; 
       target.last_name= split_names[1];
    }
     
    //if there are more than 3 names then all middle names get combined into one middle name this is done 
    //by shifting off the first name (array element 0 ) and mapping to first name and popping off the last
    // name and returning it to the last name field
    if(num_names >=3){
       target.first_name= split_names.shift();
       target.last_name= split_names.pop();
       target.middle_name= split_names.join(" ");
    }