Ho la seguente interrogazione Mark Logic che, quando eseguito nella console di query, mi permette di recuperare che hanno privilegi di amministratore di mio utente del sistema:Documento XPath la ricerca con di Mark Logic Java API di ricerca vs API XQuery/XSLT
xquery version "1.0-ml";
import schema namespace bfa="http://bitfood.org/auth" at "schema/auth/bitfood-auth.xsd";
cts:search(/bfa:AppUser[bfa:appAccess/@appRole = "ROLE_SYS_ADMIN"], cts:and-query(()))
Perdonate la mia ignoranza, ma è possibile implementare questa query usando solo l'API del client Java?
So che potrei utilizzare la query non elaborata tramite XCC ma sto cercando di evitarlo il più possibile.
Sto scavando attraverso la documentazione dell'API del client Java che, sfortunatamente, si occupa brevemente di altri metodi di ricerca e non ho trovato nulla che suggerisse che ciò è possibile.
UPDATE 1: Ragazzi, penso di aver raggiunto uno showstopper qui.
In base a this question, le funzionalità di creazione delle opzioni di query dell'API del client Java sono contrassegnate come deprecate.
@ hehennum suggerisce un'alternativa che utilizza le opzioni di query XML o JSON. Tuttavia, tale interrogazione specifiche di opzione sono still essentially defined as raw Strings in the code:
String xmlOptions =
"<search:options "+
"xmlns:search='http://marklogic.com/appservices/search'>"+
"<search:constraint name='industry'>"+
"<search:value>"+
"<search:element name='industry' ns=''/>"+
"</search:value>"+
"</search:constraint>"+
"</search:options>";
Certo, potrei usare JAXB, JDOM, file o qualche altro strumento per creare l'XML, ma la mia opinione personale è che siamo ancora ricorrere a storing queries in resource files in the code, che è non è una cosa negativa di per sé, ma senza un'attenta considerazione potrebbe portare a incubi di manutenzione del codice.
Inoltre, il fatto che queste opzioni debbano essere mantenute tramite REST sul server introduce un ulteriore livello di potenziali problemi nel caso in cui ciò sia obbligatorio poiché le opzioni potrebbero necessitare di essere sincronizzate con ogni istanza di database che deve funzionare con una base di codice.
Quindi, se gli sviluppatori di Marklogic sono in ascolto, penso che l'API del client Java non sia così matura o documentata come mi aspettavo che fosse.
Ho due opzioni finora:
1) ho potuto hardcode mie domande XCC nei file di stringa e tenta di utilizzare segnaposto dei parametri per inserire i dati di cui ho bisogno e recuperare tramite una sessione di XCC. O.
2) Vedere se ci sono dei file XSD per il http://marklogic.com/appservices/search
spazio dei nomi e creare oggetti JAXB statici da loro al fine di costruire una sorta di "criteri" classi a la Hibernate o QueryDSL che, purtroppo devo dire, già supporta un certo livello di Interrogazione di MongoDB.
I ragazzi, in realtà, apportano una sorta di fluenti servizi di interrogazione come QueryDSL a Marklogic e si liberano di questo Rube Goldberg querying machine.
Aggiornamento 2: Sembra che questo indirizzo possa essere risolto in ML7. Non vedere l'ora di.
Grazie!
Dudes, perché il voto negativo? Non ho fatto la mia ricerca? Non sto dimostrando che il codice minimo è migliore? Sigh ... –