如何列出我签出的所有包裹?

时间:2014-04-01 11:30:34

标签: enterprise-architect

我在使用CVS共享模型的多用户环境中工作。

模型很大,有很多包。有时候,我在没有意识到的情况下检查了包裹,阻止其他人使用包裹。

有没有什么方法可以列出我签出的所有套餐,以便我可以查看我不需要的套餐?

6 个答案:

答案 0 :(得分: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();

答案 1 :(得分:4)

Enterprise Architect具有完全符合您需求的内置查询:

  1. 按Ctrl + F打开“在项目中查找”窗口。将显示搜索窗口。

  2. 在顶部,您会看到一个“搜索:”下拉列表,默认情况下设置为“简单”。

  3. 从下拉列表中选择最后一个选项:“我的签出包裹”。

  4. 按“运行”按钮或F5获取列表。

答案 2 :(得分:2)

据我所知,(在EA 10中)没有显示此信息的GUI对话框。您可以做的是编写项目浏览器类型的in-EA脚本来执行此检查。这样的脚本将遍历包层次结构,并为每个脚本调用Package::VersionControlGetStatus()

检查自动化和脚本 - Enterprise Architect对象模型 - 参考下的帮助文件。 Package类位于Repository包中,并且有代码示例向您展示如何遍历层次结构。

答案 3 :(得分:1)

您还可以在

下列出您的锁

项目 - &gt;安全 - &gt;管理我的锁...

如果您使用的是基于锁的访问控制。

答案 4 :(得分:1)

对于EA 12作为州,最佳答案适用于下一步的其他步骤:

  1. 在第一个组合集&#34;项目状态&#34;默认是&#34;常见搜索&#34;
  2. 第二个组合中的
  3. 将被选中&#34; My Checked Out Packages&#34;默认情况下

答案 5 :(得分:-2)

对于EA 13.5,可以使用内置选项: 菜单配置->子菜单管理->管理我的锁