Tópico anterior: Estudo de caso 10: Conversão automática básica

Próximo tópico: Exemplos de script de lógica de negócios

Estudo de caso 11: Atualizações do modelo de recurso

Outro uso de scripts de conversão é a atualização do modelo de recurso do CA Business Service Insight com os valores obtidos de uma origem de dados externa. Embora não esteja mais estritamente relacionado à conversão, esta amostra é um valioso recurso para executar atualizações automáticas no sistema.

A seção anterior sobre atributos personalizados descreveu um cenário em que os dispositivos de infraestrutura de hardware de uma organização foram armazenados em um CMDB externo, juntamente com um objetivo de disponibilidade esperado para cada dispositivo. Esta informação deve ser replicada no modelo de recurso do CA Business Service Insight de forma a manter o mapeamento da infraestrutura (e os objetivos do dispositivo) atualizado.

Nesse caso, o script é necessário para executar as seguintes tarefas:

O script é conforme segue:

Option Explicit

'******************************************************************
'Variáveis globais e 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/07"

'******************************************************************
'Sub OnLoad :
'Preparar as entidades da infraestrutura base
'******************************************************************

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

   'Pesquisar a versão preliminar de recursos existentes
   Dim ChangeSetMap
   Set ChangeSetMap=Tools.SearchChangeSets(CHANGESET_EFFECTIVE_DATE, CHANGESET_NAME)

   Se não existir nenhuma versão, crie uma
   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")
      Adicionar recursos à versão mais recente, se eles não existirem
      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
   'Confirmar a transação
   Tools.CommitChangeSets CHANGESET_NAME
   Result = added & " resources added and " & updated & " resources updated."
End Function

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