Option Explicit
Private Sub Print_TriggerTypes(VOB As CCVOB)
' VOB からトリガ タイプ コレクションを取得します。
Dim TriggerTypes As CCTriggerTypes
Set TriggerTypes = VOB.TriggerTypes
Dim str As String
str = "Found " & TriggerTypes.Count & " trigger type(s)" & vbCrLf
' コレクションを反復し、各トリガ タイプに関する情報を集めます。
Dim TriggerType As CCTriggerType
For Each TriggerType In TriggerTypes
str = str & "Name: " & TriggerType & " Type: "
' トリガの種類を取得します。
Select Case TriggerType.KindOfTrigger
Case ccKind_Type
str = str & "Type"
Case ccKind_Element
str = str & "Element"
Case ccKind_AllElement
str = str & "All Element"
Case Else
str = str & "Unknown"
End Select
' トリガ タイプの所有者およびグループを取得します。
str = str & vbCrLf & vbTab & "Owner: " & TriggerType.Owner & _
", Group: " & TriggerType.Group & vbCrLf
' 起動条件を取得します。
str = str & vbTab & "Firing On: "
Select Case TriggerType.Firing
Case ccFiring_PreOp
str = str & "Pre-operation(s)"
Case ccFiring_PostOp
str = str & "Post-operation(s)"
Case Else
str = str & "'Bad Value'"
End Select
str = str & vbCrLf
' アクション配列を取得します。
Dim Num as Long
Num = TriggerType.NumberOfActions
If Num = 0 Then
str = str & vbTab & "No actions"
Else
Dim Actions As Variant
Dim vtype As Variant
Actions = TriggerType.ActionsArray
str = str & vbTab & "Actions array: "
For I = 0 to Num - 1
If I <> 0 Then str = str & ", "
Select Case Actions(I, 0)
Case ccAction_Exec
str = str & "Exec '" & Actions(I, 1) & "'"
Case ccAction_ExecUnix
str = str & "ExecUNIX '" & Actions(i, 1) & "'"
Case ccAction_ExecWin
str = str & "ExecWin '" & Actions(i, 1) & "'"
Case ccAction_Mklabel
Set vtype = Actions(I, 1)
str = str & "Mklabel-" & vtype
Case ccAction_Mkattr
Set vtype = Actions(I, 1)
str = str & "Mkattr-" & vtype & "=" & Actions(I, 2)
Case ccAction_MkhlinkTo
Set vtype = Actions(I, 1)
str = str & "Mkhlink-" & vtype & ",to=" & Actions(I, 2)
Case ccAction_MkhlinkFrom
Set vtype = Actions(I, 1)
str = str & "Mkhlink-" & vtype & ",from=" & Actions(I, 2)
Case Else
str = str & "'Unknown Action'"
End Select
Next
str = str & vbCrLf
End If
' 望むなら、操作の種類、包含オブジェクト (タイプ トリガの場合)、
' 制限 (エレメント トリガの場合)、および免除ユーザー リストも
' 表示するために集めることができます。
Next
' 結果を表示します。
MsgBox str
End Sub
' 最上位の ClearCase オブジェクトに接続します。
Dim CC As New ClearCase.Application
' トリガ タイプ ビルダーを作成します。
Dim VOB As CCVOB
Set VOB = CC.VOB("¥caroltest")
Dim Builder As CCTriggerTypeBuilder
Set Builder = VOB.CreateTriggerTypeBuilder
' トリガ タイプ パラメータをセットアップします。
Builder.DebugPrinting = True
Builder.Name = "TempTriggerType"
Builder.KindOfTrigger = ccKind_Type
Builder.Firing = ccFiring_PreOp
Builder.FireOn ccOp_unlock
Builder.FireOn ccOp_rntype
Builder.IncludeOn VOB.BranchType("main")
Builder.IncludeOn ccAll_HyperlinkTypes
Builder.AddExecAction "%SystemRoot%¥system32¥echo.exe hello"
Builder.DebugPrinting = False
' ビルダーからトリガ タイプを作成します。
Dim TriggerType As CCTriggerType
Set TriggerType = Builder.Create _
("Test creating trigger type from CAL example")
' すべてのトリガ タイプに関する情報を出力します。
Print_TriggerTypes VOB
' タイプを削除します。
TriggerType.RemoveType
' 再度情報を出力します。
Print_TriggerTypes VOB