对象之间的不一致链接

Inconsistent linkage between objects

这是DXL

中的代码
string path = "blablabla...";
Module mod = read(path, false);

Object obj = object(1337, mod);

string nameObject;
Object objectObject;
Link lnk_in;
Link lnk_out;

print "The objects for IN links:\n";
for lnk_in in obj <- "*" do
{
    nameObject = source(lnk_in);
    objectObject = source(lnk_in);
    print identifier(objectObject) " " ;
    print nameObject "_" objectObject."Absolute Number" "\n";
}

print "\nThe objects for OUT links:\n";
for lnk_out in obj -> "*" do
{
    nameObject = target(lnk_out);
    objectObject = target(lnk_out);
    print identifier(objectObject) " ";
    print nameObject "_" objectObject."Absolute Number" "\n";
}

基本上,它有兴趣打印与我们的 obj 对象链接的对象,该对象的给定绝对数等于 1337。我已经仔细选择了这个对象,以便它有到其他对象的内部和外部链接。然而,尽管它很简单,但我还是遇到了一些问题。

脚本本身输出:

The objects for IN links:

The objects for OUT links:
-R-E- DXL: <Line:25> null Object parameter was passed into argument position 1
-I- DXL: execution halted

如您所见,存在一个严重的问题。该脚本没有 return 内部对象,尽管 obj 确实具有链接的内部对象。然而,对于输出链接,我观察到 nameObject 确实 return 对象的字符串名称,但是 objectObject 是一个 null .

如果第二个for改为:

print "\nThe objects for OUT links:\n";
for lnk_out in obj -> "*" do
{
    nameObject = target(lnk_out);
    objectObject = target(lnk_out);
    //print identifier(objectObject) " ";
    print nameObject "\n";
    print nameObject "_" objectObject."Absolute Number" "\n";
}

输出变为:

The objects for OUT links:
etc...System_Req...etc
-R-E- DXL: <Line:27> null Object parameter was passed into argument position 1
-I- DXL: execution halted

会是什么问题?不应该是这样的。

出现此行为的原因是为了访问某个对象,您需要打开包含该对象的模块。

当您循环遍历 link 时,您只能访问 link 本身的属性,例如目标(对象类型),模块(模块类型)。 因此,您需要先打开目标模块才能访问目标对象。

对于 inlinks 它甚至有点复杂,因为一个模块只存储 links。在 link 中未存储在模块中。相反,你有 LinkRefs,你也可以用它来打开源模块,然后你可以访问 links 和源对象。

我建议使用 link 分析向导创建两个 DXL 布局列,一个用于传入 link,一个用于传出 link。从向导生成的代码向您展示了如何访问这些属性。

请记住,遵循 links 到基线甚至更复杂,因为您必须打开(“加载”)正确的基线(请参阅“版本化 links” DXL 手册)

https://www.ibm.com/developerworks/community/forums/html/forum?id=11111111-0000-0000-0000-000000001527 的 Rational DXL 论坛中也有很多关于 links 的帖子,搜索 LinkRef、showOut、showIn 等术语