java - Apache ACE 中是否有任何规则引擎可以跳过 UI 操作 : register target, 安装分发?

标签 java osgi apache-ace

有没有我可以通过这种方式配置的规则引擎:

  • 注册与过滤器匹配的目标 (targerID=com.acme.ace.test.target.*)
  • 将 distribution1 安装到与过滤器匹配的目标 (targerID=com.acme.ace.test.target.local-*)
  • 将 distribution2 和 3 安装到与过滤器匹配的目标 (targerID=com.acme.ace.test.target.remote-*)
  • 等等

最佳答案

Apache ACE 中的关联允许您使用过滤器表达式在工件、功能、分布和目标之间创建多对多关系。

如果您使用 Web UI,则只要在任何列之间拖放即可创建关联。在幕后,这始终会与过滤条件创建一对一的关系,这些关系与拖放中涉及的实体完全匹配。

但是,一旦您开始使用 GoGo shell 或 REST API,您就可以创建更强大的关联。每个都有左侧和右侧,您可以为每一侧指定一个过滤条件。这些过滤器几乎与您提到的示例完全相同。

一个示例(从 Eclipse 运行 server-allinone.bndrun)并在 shell 中键入:

w = (cw)

创建一个要使用的工作区,然后:

$w cd dist-1
$w ct target-1
$w ct target-2

创建一个发行版和两个目标。然后创建关联:

$w cd2t "(name=dist-1)" "(id=target-*)" 1 n

这会在匹配第一个表达式的分布和匹配第二个表达式的目标之间创建关联。左侧只能匹配一个实体,右侧可以匹配“n”(多个)。最后:

$w commit

提交工作区。如果您现在登录到 Web UI,检索最新版本并选择“dist-1”,您将看到它与两个目标关联。尝试添加第三个目标,同样以“target-”开头,并查看它是否也自动关联。添加具有不同名称的第四个目标,以确认该目标不匹配。

过滤条件(如 OSGi 中的过滤条件)也可以更复杂,因此您还可以使用属性(如果需要,也可以由用户定义)来创建更复杂的关联。

关于java - Apache ACE 中是否有任何规则引擎可以跳过 UI 操作 : register target, 安装分发?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21772299/

相关文章:

android - 0x00000000 处的致命信号 7 (SIGBUS)(代码=2)

osgi-bundle - 在 Apache ACE 中添加目标

java - 了解为什么 Java 选择排名返回 max() 作为最终结果

java - Gradle:如果我将依赖项从 "implementation"更改为 "runtime"并且项目仍在编译,是否会有问题?

java - 为什么 String 被视为抽象数据类型?

java - 滑下金字塔时通过位移来决定向左或向右的方向

maven - BND 将相同的包放入 manifest.mf 的导出和导入部分

java - 代码在 Eclipse 中编译但不通过命令提示符编译

java - 如何在 Apache Ace 中测试或查看已安装的 OSGI 包