DevOps/Confluence

teamscript에서 목록형 레코드 반환 예제

nabiro@gmail.com 2012. 9. 24. 14:50

/**
* 문서번호: nabiro_201209241446
* 검색어: nabiro, list, sbm, teamscript, teamtrack, script, 목록, 레코드, 반환
* 참조:
**/

 

'2012.09.24 nabiro@gmail.com
'Teamscript에서 단일 레코드 검색이 아니라 복수의 레코드를 검색할 때 사용하는 list type 예제입니다.
'

'이 예제가 사용되는 목적보다는 목록형의 레코드를 검색할 때 CreateAppRecordList () 를 사용한다는 것과
'For Each 를 사용하는 것을 주의깊게 봐야 합니다.
'
'즉 코드를 재활용하기 위해 참조하는 소스 입니다.

IssueTableId = 1000 'ts_tables 테이블에서의 ts_id (table id)
IssueId = 2704 '해당 테이블의 ts_id


Set myRecord = Ext.CreateAppRecordList (Ext.TableId ("TS_SUBTASKS"))
whereClause = "TS_MASTERTABLEID="&IssueTableId&" AND TS_MASTERITEMID="&IssueId


If myRecord.ReadWithWhere (whereClause) Then
  For Each TaskItem in myRecord
    call TaskItem.GetFieldValue ("SUBTABLEID", nTaskTbl)
    call TaskItem.GetFieldValue ("SUBITEMID", nTaskId)
    If nTaskTbl <> "" AND nTaskId <> "" Then
      call GetTaskIdAndState(nTaskTbl,nTaskId)
    End If
  Next
End If


' additional functions
function GetTaskIdAndState(nTaskTableId, nTaskId)
  Dim myTaskRec,whereTClause,nt1,nt2

  Set myTaskRec = Ext.CreateAppRecord(nTaskTableId)
  whereTClause = "TS_ID="&nTaskId

  If myTaskRec.ReadWithWhere (whereTClause) Then
    call myTaskRec.GetFieldValue ("ISSUEID", nt1)
    call myTaskRec.GetFieldValue ("STATE", nt2)

    ' if task state not in Closed(71) say Boo
    If nt2 <> 71 Then
      Shell.RedoMessage = Shell.RedoMessage&" Transition can't be executed task:"&nt1&" not Closed"
    End If
  End If
end function