Posted on 2007-03-08 16:40
帥子 閱讀(843)
評論(0) 編輯 收藏 所屬分類:
J2EE技術專區
ArcEngine中版本的使用
使用版本的過程分為以下幾個步驟
1.將Workspace或者數據集注冊為使用版本的Workspace或者數據集
IVersionedObject verObj= ds as IVersionedObject;//假設ds 是一個數據集
if(verObj!=null&&(!verObj.pVerdObj.IsRegisteredAsVersioned))
{
?//數據集可以被注冊而且還沒有被注冊為版本數據集
?//下面的方法 如果使用參數 false 那么表示注冊為沒有版本的數據
?//也就是反注冊
?verObj.RegisterAsVersioned(true);
}
2.獲取版本數據
?獲取版本數據的過程比較簡單。在連接數據庫的時候 需要提供版本字符串。
?默認是使用sde.Default這個版本。如果使用其他版本字符串就會獲得其他版本的數據。
3.建立新版本
?//假設space 是一個Workspace 而且是一個企業數據庫的Workspace。個人數據庫和文件工作空間是
?//沒有版本功能的。
?IVersionedWorkspace pVerWS=(IVersionedWorkspace)space;
?IVersion pV=pVerWS.DefaultVersion;//上一級版本 這里使用默認版本作為上一級版本???
?IVersion pVC=pV.CreateVersion(verName);?//建立版本???
?pVC.Description=verDesc;//版本的描述
?pVC.Access=esriVersionAccess.esriVersionAccessPrivate;//版本的存取策略為私有
?pNewVerWS=(IVersionedWorkspace)pVC;//獲取使用新版本的Workspace的一種快捷方式
4.合并版本數據
?合并數據使用IVersionEdit接口
?這個接口有VersionedWorkspace 實現。
?下面介紹這個接口
?CanPost 當前正在編輯的版本是否可以提交到目標版本中去 。
??CommonAncestorVersion 當前版本和目標版本的共同祖先 。
??ConflictClasses 有沖突的Class。
??ModifiedClasses 在兩個版本中發生變化的Class 。
??Post 提交版本數據
??PreReconcileVersion? 目標版本在檢測沖突之前的狀態(?)。
??Reconcile 測試數據是否沖突 如果返回true表示有沖突
??ReconcileVersion? 目標版本在沖突檢測開始的時候的狀態(?)
??StartEditingVersion 目標版本開始編輯的時候的狀態 (?)
??在提交數據之前 一定要調用Reconcile 否則很有可能會返回錯誤。
5.瀏覽工作版本元數據
?瀏覽版本元數據是指統計工作空間中一共有哪些版本。某個指定的版本的父親或祖先是誰?
?他又有哪些派生的版本?
?IVersionInfo 接口提供了這些信息
?下面是IVersionInfo接口的詳細信息:
?Access 接口的訪問策略
?Ancestors 版本的所有祖先,按照由近到遠的次序排列
?Children 該版本的直接派生版本。
?Created 創建的時間
?Description 版本的描述
?IsOwner 當前用戶是不是擁有該版本
?Modified 最后修改時間
?Parent 版本的直接父親接電
?VersionName 版本的名稱
?
?注意VersionInfo 實現了上述接口 但是VersionInfo 不是一個可以用來創建對象的類。我們只能通過
?別的方式獲取他
?IVersionedWorkspace.FindVersion("目標版本名稱");
?或者
?IVersionedWorkapce.Versions 獲取所有當前用戶可以獲得的版本。包括自己建立 別人建立的public 和protected的版本
?但是如果別人建立的版本是protected 的那么 你就只能看到數據。不能編輯。