我想使用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();
}
答案 0 :(得分:2)
如果您这样做,它应该删除包中的所有内容,但是如果您不确定为什么不尝试呢?
您可以查询t_package和t_object以验证预期的元素和包数,并且可以运行项目完整性检查以验证孤立的对象。
答案 1 :(得分:2)
简单来说:包装及其包含的全部内容将被删除。实际上它与手动删除时的效果相同。
EA帮助当然不会告诉你任何事情。但是,我检查了上述行为。
如果要保留子包,则需要将它们移动到删除包的另一个(父)包。