Vorheriges Thema: Fallstudie 10: Grundlegende automatische Übersetzung

Nächstes Thema: Beispiele für das Business-Logik-Skripting

Fallstudie 11: Aktualisieren der Ressourcenmodelle

Eine weitere Verwendung von Übersetzungsskripten ist, das CA Business Service Insight-Ressourcenmodell mit Werten, die von einer externen Datenquelle übernommenen wurden, zu aktualisieren. Dieses Beispiel bezieht sich streng genommen nicht mehr auf die Übersetzung an sich, sondern ist eine sehr nützliche Möglichkeit, das System automatisch zu aktualisieren.

Im vorherigen Abschnitt zu anwenderspezifischen Attributen wurde ein Szenario beschrieben, in dem die Hardware-Infrastrukturgeräte einer Organisation zusammen mit einem zu erwartenden Verfügbarkeitsziel für jedes Gerät in einer externen CMDB gespeichert wurden. Diese Informationen müssen im CA Business Service Insight-Ressourcenmodell repliziert werden, um die Infrastrukturzuordnung (und die Geräteziele) auf dem neuesten Stand zu halten.

In diesem Fall muss das Skript die folgenden Aufgaben ausführen:

Das Skript sieht wie folgt aus:

Option Explicit

'******************************************************************
'Global Variables and constants
'******************************************************************

Dim added
Dim updated
Dim ChangeSetName

added = 0
updated = 0

Const RESOURCE_TYPE = "Infrastructure Devices"
Const RESOURCE_GROUP = "InfraServers"
Const CHANGESET_NAME = "Infrastructure Devices"
Const CHANGESET_EFFECTIVE_DATE = "01.01.07"

'******************************************************************
'Sub OnLoad :
'Preparing the foundation infrustructure enteties
'******************************************************************

Sub OnLoad()
   Tools.log "Translation Script : In OnLoad procedure", "D"

   'Search for existing preliminary resource version
   Dim ChangeSetMap
   Set ChangeSetMap=Tools.SearchChangeSets(CHANGESET_EFFECTIVE_DATE, CHANGESET_NAME)

   'If no existing version create a new version
   If ChangeSetMap.EMPTY Then
      Tools.AddChangeSet CHANGESET_NAME, CHANGESET_EFFECTIVE_DATE, CHANGESET_NAME
      Tools.Log "Changes set '" & CHANGESET_NAME & "' added."
   End If

   Set ChangeSetMap = Nothing
End Sub

Sub OnTranslationEvent(EntryDetails)
End Sub

Sub Main()
   Dim conn, rs, resource, deviceTarget, resource_id, resMap, custAttrib, custAttribValue
   Set conn = CreateObject("ADODB.Connection")
   Set rs = CreateObject("ADODB.RecordSet")
   conn.open "DSN=HardwareDevices"
   rs.Open "select * from tblServers", conn

   Do While Not rs.EOF
      resource = rs("serverName")
      deviceTarget= rs("DeviceTarget")
      'Add resources to latest version if it doesnt exist already
      If Not Tools.IsResourceExists(resource) Then
         resource_id = Tools.AddResource(resource, CHANGESET_NAME, "Infrastructure Device", RESOURCE_TYPE, RESOURCE_GROUP, Null, Null)
         Tools.UpdateResourcesCustomAttribute resource, CHANGESET_NAME, "DeviceTarget", deviceTarget
         Tools.Log "AddingResource: " & resource & " with target: " & deviceTarget & " ; assigned ID= " & resource_id
         added = added + 1 
      Else
         Set resMap = Tools.GetResourceDetails(resource,CHANGESET_NAME, False)
         Set custAttrib = resMap("CustomAttributes")
         custAttribValue = CDbl(custAttrib("DeviceTarget")("CustomAttributeValue"))
         If CDbl(deviceTarget) <> custAttribValue Then
            Tools.UpdateResourcesCustomAttribute resource, CHANGESET_NAME, "DeviceTarget", deviceTarget
            Tools.Log "Updating Resource target for : " & resource & " from: " & deviceTarget & " to " & custAttribValue
            updated = updated + 1
         End If
      End If

      Tools.Commit
      rs.MoveNext
   Loop

   rs.Close
   conn.Close
   Set rs = Nothing
   Set conn = Nothing
End Sub

Function Result
   ' Commit the transaction
   Tools.CommitChangeSets CHANGESET_NAME
   Result = added & " resources added and " & updated & " resources updated."
End Function

'********************************************************************************