我尝试了下面提到的xquery。如果文档未被管理,我想使用DLS查询管理文档,否则我想签出文档。
xquery version "1.0-ml";
import module namespace dls = "http://marklogic.com/xdmp/dls" at "/MarkLogic/dls.xqy";
let $uri :="/root/189966_01.xml"
let $i := dls:document-is-managed($uri)
return
if ($i = fn:false())
then
dls:document-manage($uri, fn:false(), "Baz is now a managed document")
(: dls:document-checkout($uri, fn:true(), "updating doc", 3600) :)
else if ($i = fn:true())
then
dls:document-checkout($uri, fn:true(), "updating doc", 3600)
else
"No action"
如果我身上有任何问题,请纠正我。
答案 0 :(得分:1)
xquery看起来很好。只是重构上面的查询 -
xquery version "1.0-ml";
import module namespace dls = "http://marklogic.com/xdmp/dls" at "/MarkLogic/dls.xqy";
let $uri :="/root/189966_01.xml"
let $i := dls:document-is-managed($uri)
return
if ($i = fn:false()) then
dls:document-manage($uri, fn:false(), "Baz is now a managed document")
else
if ($i = fn:true()) then
dls:document-checkout($uri, fn:true(), "updating doc", 3600)
else
()
答案 1 :(得分:0)
您不能在同一笔交易中结帐和管理。您可以在同一请求中签出2个独立的事务,由父事务管理(只要您在此之前或期间不持有任何锁即可。