是否有任何BPMN 2.0 Parser for .NET?

时间:2013-09-07 19:51:15

标签: .net parsing bpmn

总的来说,我正在寻找一种模拟业务流程的方法。 我经常发现UML和BPMN作为答案。现在我想用程序检查这个模型。只有一个UML规范这些元素应该是什么样子,而不是如何保存这些不同的模型。这就是为什么我仔细观察BPMN。 BPMN 2.0规范是对象管理组。

我下载了一个BPMN编辑器并开始使用这种表示法。现在我想开始编写一个程序来检查这个BPMN 2.0文件(更确切地说,它们是xml文件)。是否有任何.NET Framework和/或实现与此BPMN一起使用?我只是不想为此编写自己的扩展XML Parser。

如果没有:可以使用哪些其他模型对这种模型进行编程检查?

关于检查:我想搜索模型中是否可以找到不同类型的信息,如果找不到这些信息则抛出警告。

2 个答案:

答案 0 :(得分:4)

似乎没有BPMN 2.0 Parser for .NET,但是使用xsd.exe,它是Microsoft SDK的一部分,可以自己创建一个,而不仅仅是BPMN。怎么做:

  • 从omg:http://www.omg.org/spec/BPMN/2.0/下载5个xsd文件,并将它们放在同一个文件夹中。
  • 使用四个参数运行xsd.exe:xsd.exe DC.xsd DI.xsd BPMNDI.xsd BPMN20.xsd /classes

应用程序将添加第五个文件。 一定要有正确的xsd顺序。否则它将无法工作。

在我的Maschine上,Call看起来像这样:

"C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\bin\xsd.exe" "C:\Users\me\DC.xsd" "C:\Users\me\DI.xsd" "C:\Users\me\BPMNDI.xsd" "C:\Users\me\BPMN20.xsd" /classes

因此,您将收到包含所有类的BPMN20.cs。您甚至可以更改输出语言(默认为C#)。只需在没有参数的情况下运行xsd.exe即可查看所有选项。

要在.Net中使用它,请确保将System.Xml添加为程序集,然后您可以像这样获取Object:

var serialzer = new XmlSerializer(typeof(tDefinitions));
var XmlStream = new StreamReader("bpmn.xml");
var document= (tDefinitions) serialzer.Deserialize(XmlStream);

答案 1 :(得分:1)

解决@user2757652问题的一种解决方法是修改从http://www.omg.org/spec/BPMN/2.0/下载的BPMN20.xsdSemantic.xsd。其他文件可以不变地使用。

我将flowElement ref的祖先(在Semantics.xsd中)和rootElement ref(在BPMN20.xsd中)替换为processcollaboration。您可以重新安排rootElement的所有祖先。尽管生成的xsd不是标准的,并且可以验证一些无效的BPMN XML,但它满足了我的需求

您可以从Github Gist

下载修改后的版本