2009-11-11 27 views
1

我正在尝试使用Quartz Composer来创建持续集成散热器。Quartz Composer - 结构关键成员的错误?

我把一个简单的XML文件来描述项目和他们的每一个工作流程的最新成就:

<projects> 
    <project> 
    <title>Project A</title> 
    <workflows> 
     <workflow> 
     <title>Build 1.0</title> 
     <status>success</status> 
     </workflow> 
     <workflow> 
     <title>Build 2.0</title> 
     <status>success</status> 
     </workflow> 
    </workflows> 
    </project> 
    <project> 
    <title>Project B</title> 
    <workflows> 
     <workflow> 
     <title>Build 1.0</title> 
     <status>success</status> 
     </workflow> 
    </workflows> 
    </project> 
</projects> 

这显然有更多的信息,但我只是想获得基本工作现在。我设置了一个组合,并使用XML Downloader从文件系统加载上述XML文件。

因为我遇到的问题是:当我在具有多个子元素的元素上使用Structure Key Member修补程序时,我找回多个子元素,但是当我仅使用一个孩子的元素时使用Structure Key Member单个孩子而不是1个物品的集合。

我在一个实例组成所示的问题如下:

Quartz Composition

难道我做错了什么?这是预期的行为?为什么下面的链条不能返回QCS结构?

回答

2

不幸的是,XML Downloader补丁不能正确处理多个相邻的空元素。

一个可能的解决方法可能是调整你的XML删除“项目”组,才使“项目”,每个“工作流”的属性:

<workflows> 
    <workflow project="Project A"> 
    <title>Build 1.0</title> 
    <status>success</status> 
    </workflow> 
    <workflow project="Project A"> 
    <title>Build 2.0</title> 
    <status>success</status> 
    </workflow> 
    <workflow project="Project B"> 
    <title>Build 1.0</title> 
    <status>success</status> 
    </workflow> 
</workflows> 

这将产生一个结构有用的结果。

(当XML Downloader建立从XML结构,属性是等价的子标签,那么“项目”可能是要么,你会得到相同的结果。)

+0

那么这臭(在XML下载问题)。 我试过没有包装我的工作流程,并使用结构关键成员来拉动“工作流程”而不是“工作流程”。这导致上面的补丁不返回任何内容,底部链返回项目B中的单个工作流程。 我更倾向于在我的文件中引入额外的空白,并在遍历它们时将计数减1。 – 2009-11-11 20:14:09

+0

我意识到我可以将您的建议进一步提供一个很好的解决方案。我决定完全删除项目,并将项目标题存储在每个工作流程中。现在我只有一大堆工作流程,不必担心单个项目集合。 – 2009-11-12 19:31:53

+0

如果你可以改变你的答案来反映我的改变(根据你的建议),那将是很棒的。 – 2009-11-13 20:58:56