Tema anterior: Caso práctico 10: Traducción automática básicaTema siguiente: Ejemplos de scripting de lógica de negocios


Caso práctico 11: Actualizaciones del modelo de recurso

Otro uso de scripts de traducción es actualizar el modelo de recurso de CA Business Service Insight con valores tomados de un origen de datos externo. Aunque ya no está estrictamente relacionado con la traducción, esta muestra es una funcionalidad muy valiosa para las actualizaciones automáticas del sistema.

En la sección anterior sobre atributos personalizados se describió un escenario donde los dispositivos de infraestructura de hardware de una organización se almacenan en un CMDB externo, junto con un destino de disponibilidad esperado para cada dispositivo. Esta información tiene que replicarse en el modelo de recurso de CA Business Service Insight para mantener la asignación de la infraestructura (y los destinos del dispositivo) actualizados.

En este caso, el script es obligatorio para realizar las tareas siguientes:

El script es el siguiente:

Opción explícita

'******************************************************************
'Variables globales y constantes
'******************************************************************

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/2007"

'******************************************************************
'Sub OnLoad :
'Preparación de las entidades de infraestructura de la fundación
'******************************************************************

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

   'Buscar la versión de recurso preliminar existente
   Dim ChangeSetMap
   Set ChangeSetMap=Tools.SearchChangeSets(CHANGESET_EFFECTIVE_DATE, CHANGESET_NAME)

   'Si no hay ninguna versión existente, crear una nueva versión
   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")
      'Agregar recursos a la última versión si todavía no existe
      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
   Bucle

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

Resultado de la función
   ' Confirmar la transacción
   Tools.CommitChangeSets CHANGESET_NAME
   Result = added & " resources added and " & updated & " resources updated."
End Function

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