.NET 有没有 BPMN 2.0 解析器?

use*_*652 9 .net parsing bpmn

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

我下载了一个 BPMN 编辑器并开始使用这个符号。现在我想开始编写一个程序来检查这个 BPMN 2.0 文件(更准确地说,它们是 xml 文件)。是否有任何与此 BPMN 配合使用的 .NET 框架和/或实现?我只是不想为此编写自己的扩展 XML 解析器。

如果不是:还有哪些其他模型可用于对此类模型进行编程检查?

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

use*_*652 5

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

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

第五个文件将由应用程序添加。确保 xsd 的顺序正确。否则它不会工作。

在我的机器上,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作为Assembly,然后你就可以得到这样的Object:

var serialzer = new XmlSerializer(typeof(tDefinitions));
var XmlStream = new StreamReader("bpmn.xml");
var document= (tDefinitions) serialzer.Deserialize(XmlStream);
Run Code Online (Sandbox Code Playgroud)

  • 已确认 - BPMN 模式使用替换组,但标准 .Net XmlSerializer 不支持它们 https://msdn.microsoft.com/en-us/library/bb885287.aspx 因此它将读取您的 BPMN,但忽略除文档根。 (2认同)