在Enterprise Architect数据模型中从包集合中删除包的结果是什么?

时间:2015-12-15 07:28:35

标签: java enterprise-architect

我想使用Enterprise Architect Java API从Enterprise Architect数据模型中删除一些包。

当我删除包集合中的包时,Enterprise Architect的行为是什么?

我是否会产生孤儿,因为我不会明确地删除底层包(和其他元素)?

我删除特定包的代码:

    org.sparx.Package delPackage = repo.GetPackageByGuid(delPackageGUID);
    org.sparx.Package supraPackage = repo.GetPackageByID(delPackage.GetParentID());

    org.sparx.Collection<org.sparx.Package> packages = supraPackage.GetPackages();
    Iterator<org.sparx.Package> packageIter = packages.iterator();
    org.sparx.Package tempPackage;

    short index = 0;
    short foundIndex = -1;

    packageLoop:
    while (packageIter.hasNext())
    {
        tempPackage = packageIter.next();

        if (tempPackage.GetPackageGUID().equals(delPackageGUID) == true)
        {
            foundIndex = index;
            break packageLoop;
        }

        index++;
    }

    if (foundIndex < 0)
    {
        throw new Exception("some error message");
    }

    if (packages.GetAt(foundIndex).GetPackageGUID().equals(delPackageGUID) == false)
    {
        throw new Exception("some error message");
    }
    else
    {
        delPackage.ApplyUserLock();
        delPackage.GetLastError();

        packages.DeleteAt(foundIndex, false);
        packages.GetLastError();

        //Update
        packages.Refresh();
    }

2 个答案:

答案 0 :(得分:2)

如果您这样做,它应该删除包中的所有内容,但是如果您不确定为什么不尝试呢?

您可以查询t_package和t_object以验证预期的元素和包数,并且可以运行项目完整性检查以验证孤立的对象。

答案 1 :(得分:2)

简单来说:包装及其包含的全部内容将被删除。实际上它与手动删除时的效果相同。

EA帮助当然不会告诉你任何事情。但是,我检查了上述行为。

如果要保留子包,则需要将它们移动到删除包的另一个(父)包。