总的来说,我正在寻找一种模拟业务流程的方法。
我经常发现UML和BPMN作为答案。现在我想用程序检查这个模型。只有一个UML规范这些元素应该是什么样子,而不是如何保存这些不同的模型。这就是为什么我仔细观察BPMN。 BPMN 2.0规范是对象管理组。
我下载了一个BPMN编辑器并开始使用这种表示法。现在我想开始编写一个程序来检查这个BPMN 2.0文件(更确切地说,它们是xml文件)。是否有任何.NET Framework和/或实现与此BPMN一起使用?我只是不想为此编写自己的扩展XML Parser。
如果没有:可以使用哪些其他模型对这种模型进行编程检查?
关于检查:我想搜索模型中是否可以找到不同类型的信息,如果找不到这些信息则抛出警告。
答案 0 :(得分:4)
似乎没有BPMN 2.0 Parser for .NET,但是使用xsd.exe,它是Microsoft SDK的一部分,可以自己创建一个,而不仅仅是BPMN。怎么做:
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.xsd
和Semantic.xsd
。其他文件可以不变地使用。
我将flowElement
ref的祖先(在Semantics.xsd
中)和rootElement
ref(在BPMN20.xsd
中)替换为process
和collaboration
。您可以重新安排rootElement
的所有祖先。尽管生成的xsd不是标准的,并且可以验证一些无效的BPMN XML,但它满足了我的需求
您可以从Github Gist
下载修改后的版本