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

问题描述 投票:4回答:2

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

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

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

关于检查:我想搜索是否可以在模型中找到不同类型的信息,并在无法找到此信息时抛出警告。

.net parsing bpmn
2个回答
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
投票

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

我用flowElementSemantics.xsd取代了rootElement ref与它的祖先(在BPMN20.xsd)和process ref(在collaboration)。你可能会替换所有rootElement的祖先。尽管生成的xsd不是标准的,并且可以验证一些无效的BPMN XML,但它满足了我的需求

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

© www.soinside.com 2019 - 2024. All rights reserved.