【发布时间】:2014-11-06 13:02:49
【问题描述】:
我正在考虑如何/是否可以使用 XQuery 检查 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 做到这一点?
提前感谢您的想法!
【问题讨论】:
-
我不太明白你的流程概念。那么在这个例子中你的顺序是如何定义的,即 flow1、flow2、flow3 如何互连?因此,由于 start 属性,flow1 从 id start1 的元素开始。但是它如何确定去哪里 - 只需使用 @target (所以“流”只有两个点,开始和结束?)。但如果是这样的话,传入和传出元素实际上传递了哪些信息?!
-
@dirkk:通过传入/传出元素在流程元素和任务内部指定源/目标肯定是信息重复。然而,这是 BPMN 规范要求的结构,所以这不是 OP 的错。
-
@joergl 我没有批评 OP,老实说,我没有(现在仍然不)理解这里的流语法。我不知道这个 BPMN 规范
标签: xml xpath xml-parsing xquery bpmn