Я думаю о том, как/если XQuery можно использовать для проверки того, существует ли определенный шаблон в файле XML.Ищите определенный шаблон последовательности в XML
Пример: Подумайте о (упрощенный) XML, представляющего собой поток процесса (StartEvent> UserTask> AutoTask> EndEvent).
<process>
<startEvent id="start1">
<outgoing>flow1</outgoing>
</startEvent>
<userTask id="user1">
<incoming>flow1</incoming>
<outgoing>flow2</outgoing>
</userTask>
<autoTask id="auto1">
<incoming>flow2</incoming>
<outgoing>flow3</outgoing>
</autoTask>
<endEvent id="end1">
<incoming>flow3</incoming>
</endEvent>
<flow id="flow1" source="start1" target="user1"/>
<flow id="flow2" source="user1" target="auto1"/>
<flow id="flow3" source="auto1" target="end1"/>
</process>
Теперь я хочу, чтобы проверить, где-то в файле, является ли элементом типа «userTask», который сразу же следует элемент типа «Autotask». Обратите внимание, что эту последовательность необходимо проверить, выполнив определения входящих/исходящих потоков и не может быть получена из заказа в документе.
Есть ли способ сделать это с помощью xquery/xpath?
Заранее благодарим за идеи!
Я не получить вашу концепцию потока. Так как ваш заказ определенные в этом примере, то есть, как потоки 1, поток2, поток3 соединяются? Таким образом, поток1 начинается с элемента с id start1 из-за атрибута start. Но как он определяет, куда идти - просто используя @target (так что «поток» имеет просто два момента, начало и конец?). Но если это будет так, то какая информация делает фактически входящие и исходящие элементы? – dirkk
@dirkk: указание источника/цели в элементах потока и внутри задач gh входящие/исходящие элементы, безусловно, являются дублированием информации. Тем не менее, это структура, которую специфицирует спецификация BPMN, так что это вряд ли ошибка OP. – joergl
@ joergl Я не критиковал OP, я, честно говоря, не понял (и до сих пор не понимаю) синтаксиса потока здесь. Я не знаю эту спецификацию BPMN – dirkk