9

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

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

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

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

4

2 回答 2

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 的顺序正确。否则它将无法正常工作。

在我的机器上,呼叫看起来像这样:

"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);
于 2013-09-10T15:19:20.840 回答
2

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

flowElement用它的祖先 (in Semantics.xsd) 和rootElementref (in BPMN20.xsd)替换了 refprocess和 and collaboration。你可能会替换所有的祖先rootElement。尽管生成的 xsd 不是标准的并且可以验证一些无效的 BPMN XML,但它满足了我的需求

你可以从Github Gist下载修改后的版本

于 2019-04-13T10:03:32.110 回答