对象之间的链接不一致

时间:2016-08-10 13:54:05

标签: object module attributes ibm-doors

这是 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

正如您所看到的,存在严重问题。尽管 obj 确实链接了内部对象,但脚本不会返回内部对象。然而,对于输出链接,我观察到 nameObject 确实返回了对象的字符串名称,但 objectObject 是空的。

如果第二个 更改为:

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

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

1 个答案:

答案 0 :(得分:1)

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

当您遍历链接时,您只能访问链接本身的属性,例如target(类型为object),module(类型为module)。 因此,您需要在访问目标对象之前打开目标模块。

对于inlinks,它甚至有点复杂,因为模块只存储链接。链接不存储在模块中。相反,您有LinkRefs,您也可以使用它来打开源模块,然后您可以访问链接和源对象。

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

请记住,以下指向基线的链接甚至更复杂一步,因为您必须打开(“加载”)正确的基线(请参阅DXL手册中的“版本化链接”)

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

这样的术语