Sostengo il post di Dave come risposta appropriata. Tuttavia, per completezza, ho incluso un tuffo più profondo nel modo in cui CPF e trigger funzionano insieme e in che modo è possibile ottenere ciò che si desidera con gli strumenti disponibili. Ma anche se "riesci a" acclimatarlo, i tagli sarebbero solo più ordinati.
Sono d'accordo con il suggerimento di Dave sul "/". Iniziare con una barra è una buona cosa in ML (non richiesto, ovviamente). Tuttavia, ho attraversato una manciata di cose che presuppongono che all'inizio ci sia una barra.
Ma, questo richiede di cambiare quello che hai - e MarkLogic ha un sacco di chicche sotto il cofano, così possiamo avere un po 'di rovistare intorno e vedere quali altre borse di trucchi possiamo provare.
Che cos'è CPF? È un'applicazione basata su trigger che fa alcune cose davvero convenienti ed è altamente configurabile per le pipeline. - La cosa importante è che sotto il cofano, gira sui grilletti. - I trigger richiedono un ambito (nessun carattere jolly o ambito vuoto).
Ora MarkLogic è molto chiaro in quanto una "directory" termina con una barra. E questo vale per la directory radice. Quindi non è possibile utilizzare l'ambito della directory o l'ambito del documento nell'esempio basato su URIS.
Ma abbiamo ancora trgr: collection-scope() con cui giocare. Come? Bene, questo è facile: - Per qualsiasi utente viene utilizzato per inserire i documenti, aggiungere una raccolta predefinita (sotto il pannello di amministrazione) -> sicurezza -> utenti [o ruoli] - Quindi definire il trigger.
Per quanto mi riguarda, ho aggiunto una raccolta predefinita denominata 'default' e la seguente definizione di innesco:
trgr:create-trigger("myTrigger2", "Simple trigger example",
trgr:trigger-data-event(
trgr:collection-scope("default"),
trgr:document-content("create"),
trgr:post-commit()),
trgr:trigger-module(0, "/dae/", "log.xqy"),
fn:true(), xdmp:default-permissions())
Così, ora i documenti possono essere attivate perché l'utente inserendoli ha già definito una collezione (che è già disponibile al momento dell'esecuzione di questo trigger). Sì, questa è la fine aziendale di CPF: l'ambito di raccolta è lo stesso delle configurazioni CPF.
In sostanza, i documenti sono associati a una raccolta da parte dell'utente utilizzato per inserirli (una raccolta predefinita). Con ciò, è possibile affermare che il trigger è applicato anche agli inserimenti di quell'utente. E in MarkLogic hai SEMPRE un utente, anche se di default.
Il percorso è questo: documento -> inserito con raccolta predefinita -> trigger viene attivato perché l'ambito di raccolta è definito per la raccolta predefinita.
Solo curioso, hai provato l'ambito della directory con una stringa vuota come uri param? – grtjn