如何在自定义概念中使用JQAssistant内部节点标签

问题描述 投票:0回答:1

我目前正在研究 JQAssistant 以及如何在我的项目中使用它。

我想做的一件事是用它来验证 ADR。因此,我想检查给定的 ADR 是否有可用的 JQA 约束。

我计划使用内部 JQA 节点标签

JQAssistant
Rule
Constraint
,并编写了以下概念,它在具有相同 ID 的 ADR 和 JQA 约束之间创建了关系
:ENSURED_BY

<concept id="adr:matchingConstraint">
        <requiresConcept refId="adr:document"/>
        <description>Links ADRs with JQL Constraints which ensure the ADR</description>
        <cypher><![CDATA[
            match (a:Adr)
            match (c:Constraint) where c.id STARTS WITH a.adrId
            merge (a)-[r:ENSURED_BY]->(c)
            return a.adrId as adr, c.id, type(r)
        ]]></cypher>
    </concept>

Cypher Query 本身运行良好。 但当我想应用这个概念时,我收到以下错误:

[WARNING] --[ Concept Application Failure ]----------------------------------
[WARNING] Concept: adr:matchingConstraint
[WARNING] Severity: MINOR
[WARNING] Number of rows: 0
[WARNING] 
[WARNING] Links ADRs with JQL Constraints which ensure the ADR
[WARNING] -------------------------------------------------------------------
[WARNING] 

问题似乎是,当应用这个概念时,JQA 相关的节点标签尚未设置。当我第二次运行

analyze
时,这个概念就得到了应用,没有错误。

我想用

<requiresConcept />
来确保执行顺序,但我找不到,哪个概念创建了JQA标签。

有人知道我怎样才能等待这些标签吗? 解决方法是基于 XML 插件创建我自己的概念和标签,但由于 JQA 已经提供了这一点,我认为更好的解决方案是使用它们。

jqassistant
1个回答
0
投票

代表执行规则的节点(例如标有

:jQAssistant:Concept
)是在执行每个相应规则后立即创建的。预期目的是跟踪结果状态并为后续分析启用跳过规则。

因此,对于您的用例来说,最安全的方法确实是运行第二次分析,否则很难确保上述概念作为最后一条规则执行。

© www.soinside.com 2019 - 2024. All rights reserved.