2014-04-01 42 views
2

我正在使用CVS共享模型的多用戶環境中工作。如何列出我已簽出的所有包?

模型很大,有很多包。有時候,我沒有意識到已經檢出了一個包,從而阻止其他人處理包。

是否有某種方式可以列出所有已檢出的軟件包,以便我可以檢查那些不需要的軟件包?

回答

4

企業架構師具有正好滿足您需要的內置查詢:

  1. 打開「查找項目」按Ctrl + F窗口。將顯示一個搜索窗口。

  2. 在頂部,您會看到一個默認設置爲「簡單」的「搜索:」下拉列表。

  3. 從下拉列表中選擇最後一個選項:「My Checked-out Packages」。

  4. 按「運行」按鈕或F5獲取列表。

2

據我所知,(在EA 10)沒有GUI對話框,顯示你這個信息。你可以做的是寫一個項目瀏覽器類型的in-EA腳本來執行這個檢查。這樣的腳本將遍歷一個包層次結構,併爲每個調用Package::VersionControlGetStatus()

檢查自動化和腳本 - Enterprise Architect對象模型 - 參考下的幫助文件。 Package類位於Repository包中,並有代碼示例向您展示如何遍歷層次結構。

4

由於@Uffe指出的那樣,我創建了一個JScript中要解決的問題:

!INC Local Scripts.EAConstants-JScript 

/* 
* Script Name: ListingCheckOutPackages 
* Author: Stepanus David Kurniawan 
* Purpose: List all packages which are checked out by this user or other user recursively 
* Date: 05-05-2014 
*/ 

// CheckOutStatus 
var csUncontrolled = 0; 
var csCheckedIn = 1; 
var csCheckedOutToThisUser = 2; 
var csReadOnlyVersion = 3; 
var csCheckedOutToAnotherUser = 4; 
var csOfflineCheckedIn = 5; 
var csCheckedOutOfflineByUser = 6; 
var csCheckedOutOfflineByOther = 7; 
var csDeleted = 8; 

/* 
* Project Browser Script main function 
*/ 
function OnProjectBrowserScript() 
{ 
    Repository.EnsureOutputVisible("Script"); 
    Repository.ClearOutput("Script"); 

    // Get the type of element selected in the Project Browser 
    var treeSelectedType = Repository.GetTreeSelectedItemType(); 

    switch (treeSelectedType) 
    { 
     case otPackage : 
     { 
      // Code for when a package is selected 
      var thePackage as EA.Package; 
      thePackage = Repository.GetTreeSelectedObject(); 

      Session.Output("----------------------------------------"); 
      Session.Output("... listing check out packages under " + thePackage.Name + "..."); 

      GetSubpackage(thePackage); 

      Session.Output("----------------------------------------"); 

      break; 
     } 

     default: 
     { 
      // Error message 
      Session.Prompt("This script does not support items of this type.", promptOK); 
     } 
    } 
} 

var depth = 0; 

function GetSubpackage(thePackage) 
{ 
    var contextPackage as EA.Package; 
    contextPackage = thePackage; 

    depth++; 

    // Iterate through all child packages 
    for (var i = 0 ; i < contextPackage.Packages.Count; i++) 
    { 
     var currentPackage as EA.Package; 
     currentPackage = contextPackage.Packages.GetAt(i); 

     //Session.Output(new Array(depth * 4 + 1).join(' ') + currentPackage.Name + currentPackage.VersionControlGetStatus()); 

     switch (currentPackage.VersionControlGetStatus()) 
     { 
      case csCheckedOutToThisUser: 
       Session.Output("[Checked out to this user ] " + currentPackage.XMLPath); 
       break; 
      case csCheckedOutToAnotherUser: 
       Session.Output("[Checked out to other user] " + currentPackage.XMLPath); 
       break; 
     } 


     // Recursively process child packages 
     GetSubpackage(currentPackage); 
    } 

    depth--; 
} 

OnProjectBrowserScript(); 
+0

感謝您的腳本。不幸的是,當我運行它,我得到的錯誤:'''這個腳本不支持這種類型的項目.''' –

+0

請點擊項目瀏覽器中的模型或包。上面的腳本通過檢查一個包然後遞歸到它的子包來工作。感覺可以自由修改它。 – David

1

你也可以列出

項目 - >安全 - >下你的鎖管理我的頭髮..

如果您使用基於鎖的訪問控制。

1

對於EA 12州最好的答案是適用的下一種額外的步驟:

    在第一個組合組
  1. 「項目狀態」默認是在第二個組合「通用搜索」
  2. 會被選中「我的簽出包」默認
相關問題