2009年8月1日 星期六

PDM/PLM (SmarTeam) 二次開發 - Lesson Six - 進階功能 - 以資料庫管理專案預建的資料夾結構

此篇是上一篇「建立專案時預建資料夾」的進階版

上一篇是將要欲新增的資料夾名稱及結構寫在程式裡,那其實就跟 SDE 沒啥兩樣了,要修改就很麻煩,除了改程式外還要一一更新客戶端

故此篇要將資料夾的名稱及結構存於資料庫,維護時只要從資料庫下手,改完資料庫後就馬上生效,不用一一更新客戶端

首先先建立一存放資料夾結構的 Table「FolderStructureTest」##CONTINUE##

CREATE TABLE [dbo].[FolderStructureTest](
 [ID] [int] IDENTITY(1,1) NOT NULL,
 [ParentID] [int] NULL,
 [FolderName] [nvarchar](50) COLLATE Chinese_Taiwan_Stroke_CI_AS NULL
) ON [PRIMARY]

建立的資料內容如下圖,如果 ParentID 為 null 的表示直接link 於 Project,若有 ID 的表示成為 Folder 子階


再來只要修改上一篇範例中建立資料夾的 function (CreateProjectFoldersTest),改由讀取資料庫即可,其他 function 不改

Function CreateProjectFoldersTest(ByVal SmSession As SmApplic.SmSession, ByVal Operation As SmApplic.ISmOperation, ByVal FirstPar As SmRecList.SmRecordList, ByVal SecondPar As SmRecList.SmRecordList, ByVal ThirdPar As SmRecList.SmRecordList) As String

 Dim Project As ISmObject
 Dim smObject As ISmObject
 Dim sRetObjectID As String
 Project = SmSession.ObjectStore.ObjectFromData(FirstPar.GetRecord(0), False)

 GetConnectionString()
 Dim dbh As New DbHelperSQL(sSH_ConnectionString)
 Dim sSql As String = "select ID, ParentID, FolderName from FolderStructureTest"

 Dim dt As DataTable
 dt = dbh.Query(sSql).Tables(0)

 Dim retObject As ISmObject
 Dim tmpObject As ISmObject
 Dim sProjectID As String = Project.Value("TDMX_ID").ToString()

 Dim i As Integer = 0
 For i = 0 To dt.Rows.Count - 1
  If dt.Rows(i)("ParentID").ToString = "" Then
   retObject = CreateProjectSubfolderTest(SmSession, dt.Rows(i)("FolderName").ToString, Project)
   Dim dv As New DataView(dt)
   dv.RowFilter = "ParentID=" + dt.Rows(i)("ID").ToString
   If dv.Count > 0 Then
    For Each row As DataRowView In dv
      CreateSubfolderTest(SmSession, row("FolderName").ToString(), retObject)
    Next
   End If
  End If
 Next

 Return sRetObjectID
End Function

執行後結果如下圖

5 則留言:

  1. 網誌管理員已經移除這則留言。

    回覆刪除
  2. hi 你好
    我也是從事smarteam導入開發相關工作
    不知道有沒有榮幸可以認識你 彼此互相交流?

    回覆刪除
  3. sure, 很高興認識你
    只是近年來 SmarTeam 在台灣已經快消失了
    我也已經一年多沒碰 SmarTeam 的案子了

    回覆刪除
  4. 我們最近到是有不少新的SmarTeam的案子~
    其實ST的架構是真的很不錯
    看過一些客戶是國外協助導入都用得挺不錯的

    P.S. 不知道方便給我您的mail 我們交流一下

    回覆刪除
  5. 作者已經移除這則留言。

    回覆刪除