前のトピック: ケース スタディ 10: 基本的な自動変換

次のトピック: ビジネス ロジック スクリプティングの例

ケース スタディ 11: リソース モデルの更新

変換スクリプトの別の利用法は、外部データ ソースで CA Business Service Insight リソース モデルを更新することです。 厳密にはもはや変換とは関連しませんが、この例は、システムの自動更新として非常に価値のある機能です。

カスタム属性についての前のセクションでは、組織のハードウェア インフラストラクチャ デバイスが、各デバイスに対する可用性目標と共に外部 CMDB に格納されているシナリオを説明しました。 インフラストラクチャ マッピング(およびそのデバイス目標)を常に最新にしておくために、この情報は CA Business Service Insight リソース モデルに複製しておく必要があります。

この場合、スクリプトは以下のタスクを実行する必要があります。

スクリプトを以下に示します。

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

'******************************************************************
'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
   ループ

   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

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