【问题标题】:Inconsistent linkage between objects对象之间的链接不一致
【发布时间】:2016-08-10 13:54:04
【问题描述】:

这是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 为空。

如果第二个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

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

【问题讨论】:

    标签: object module attributes ibm-doors


    【解决方案1】:

    这种行为的原因是为了访问一个对象,你需要打开包含这个对象的模块。

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

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

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

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

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

    【讨论】:

    • 从我的测试来看,使用分析向导,它确实帮助我输出了正确的值。
    猜你喜欢
    • 2012-04-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-12-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多