Um eine vollständigere Antwort zu haben, hier ist, was ich gelernt habe ... es war nicht offensichtlich (zumindest für mich) aus der Dokumentation. Ich verlor mich zwischen der Verwendung der API zur Erstellung von Regeln und der Verwendung der XQuery-Bibliothek. Ich fand es am besten für meine Zwecke, sich keine Sorgen über die API zu machen. Dieses Beispiel ist speziell auf die Verwendung der Bibliothek alert
beim Einrichten der abfragebasierten flexiblen Replikation ausgerichtet.
-Setup für die Domäne CPF Alarmierung:
xquery version "1.0-ml";
import module namespace flexrep = "http://marklogic.com/xdmp/flexible-replication"
at "/MarkLogic/flexrep.xqy";
import module namespace alert = "http://marklogic.com/xdmp/alert"
at "/MarkLogic/alert.xqy";
(: Run against the content database :)
let $domain-id := 12956765056276017188 (: There are functions to help get this programmatically :)
let $alerting-uri := flexrep:domain-alerting-uri($domain-id)
let $existing := alert:config-get($alerting-uri)
return
if ($existing)
then $alerting-uri
else
(alert:config-insert(
alert:make-config(
$alerting-uri,
"qbfr",
"alerting rules for QBFR",
<alert:options/>
)
), fn:concat("Alerting configuration created- ",$alerting-uri))
Erstellen Sie eine Log-Aktion in der Alarmierung Config
xquery version "1.0-ml";
import module namespace alert = "http://marklogic.com/xdmp/alert"
at "/MarkLogic/alert.xqy";
(: Run against the content database :)
let $alerting-uri :=
"http://marklogic.com/xdmp/flexrep/12956765056276017188/alerting"
return
alert:action-insert($alerting-uri, alert:make-log-action())
Legen Sie die Regel für die beabsichtigten Benutzer
xquery version "1.0-ml";
import module namespace alert = "http://marklogic.com/xdmp/alert"
at "/MarkLogic/alert.xqy";
let $alerting-uri := "http://marklogic.com/xdmp/flexrep/12956765056276017188/alerting"
let $rule-name := "StackFlow-Collection-Alert-Rule"
let $description := "Will alert on documents in the StackFlow collection"
let $user-id := xdmp:user("my-username")
(: The cts query in the rule can use any of the cts constructs! :)
let $rule :=
alert:make-rule(
$rule-name,
$description,
$user-id,
cts:collection-query("StackFlow"),
"log",
<alert:options />
)
return
alert:rule-insert($alerting-uri, $rule)
Ich füge ein Thema dazu in der Dokumentation ein und werde versuchen, weitere Beispiele und ähnliches zu veröffentlichen. Vorerst muss ich mit dem Projekt fortfahren. Hoffe, das hilft jemandem auf der Straße.
Danke, ich werde weiter damit spielen, eine Regel dafür zu machen ... –