0

有没有我可以这样配置的规则引擎:

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

1 回答 1

2

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 中一样,也可能更复杂,因此您还可以使用属性(如果您愿意,也可以使用用户定义)来创建更复杂的关联。

于 2014-02-17T13:42:12.267 回答