jqassistant - jQAssistant 的 EJB3 插件是否应该创建手册中列出的概念?
问题描述
我正在尝试几个 jQAssistant 插件,在本例中是 EJB3 插件。
我想我还没有掌握概念的概念。我期待在扫描包含一些 EJB 的 Maven 模块后出现像“Ejb”、“Local”和“Remote”这样的节点标签。
但是,我没有看到类似的东西。
但是,如果我在手册中运行查询,例如
MATCH (t:Type)-[:ANNOTATED_BY]->()-[:OF_TYPE]->(a:Type)
WHERE a.fqn="javax.ejb.Local"
SET t:Ejb:Local
RETURN t AS LocalBean
然后我看到标签“本地” - 毕竟,查询设置了它:-)
这可能是一个新手问题......但是我应该在扫描后运行查询吗?还是应该由 EJB3 插件设置这些标签?
解决方案
扫描仅将“原始”数据导入图形数据库,对于 Java,它仅表示字节码的结构,其中包含包类、方法、字段、注释或调用等元素。
的目的concepts
是使用更高级别的抽象来丰富此信息,例如,表示带有注释的 Java 类的节点@Local
被标记为Ejb
并Local
更容易被其他概念或约束使用。然后那些可以仅仅依靠标签Ejb
来执行检查,例如在服务层包中的正确位置。根据项目特定的命名规则,它们本身将被一个概念标记:
[[adr:ServiceLayer]]
[source,cypher]
.The package named `service` within the root package represents the `Service` `Layer`.
----
MATCH
(root:Package)-[:CONTAINS]->(serviceLayer:Package)
WHERE
root.fqn = "my.project.root"
and serviceLayer.fqn = "service"
SET
serviceLayer:Service:Layer
RETURN
serviceLayer as `Service Layer`
约束现在将取决于这两个概念并使用如下查询:
[[adr:EjbsMustBeLocatedInServiceLayer]]
[source,cypher,role=constraint,requiresConcepts="ejb:*,adr:ServiceLayer"]
.All EJBs must be located in the service layer.
----
MATCH
(ejb:Ejb)
WHERE NOT
(:Service:Layer)-[:CONTAINS*]->(ejb)
RETURN
ejb as `EJB Outside Service Layer`
----
必须显式应用概念,通常将它们定义为依赖项:
推荐阅读
- tensorflow - 如何在 tensorflow 1.11 中使用 keras InceptionV3 模型?
- c++ - 如何将图形保持在主窗口的中心
- css - 捆绑 SCSS 并从 node_modules 导入
- javascript - 将图像从 Javascript 显示到 Processing.js 画布
- git - 在 Windows 上配置 git p4
- javascript - 如何创建具有多个单选按钮/复选框的表单并在提交时重定向到另一个页面?
- javascript - React 渲染 - 性能
- c++ - c++静态变量初始化问题——引用另一个静态常量
- php - Laravel 模型动态属性
- html - 我们可以在 Phaser 中嵌入 youtube 视频吗