提问人:njco 提问时间:8/10/2023 最后编辑:njco 更新时间:8/10/2023 访问量:29
我需要一个有效的 DMN 模型来完成我的项目
I need a working DMN model for my Project
问:
我目前正在做一个 flutter Web 项目,该项目使用 DMN 处理更复杂的决策表。 然而,当我加入这个项目时,整个部分已经差不多完成了,而且已经有一段时间没有被触及了,所以对我来说都是遗留代码。
现在需要对文本和属性进行一些小的更改,这导致整个应用程序不再加载,没有抛出错误。 因此,我查看了旧代码,发现 reader 类使用指向 DMN 模型的链接作为命名空间。
http://www.omg.org/spec/DMN/20180521/MODEL/
此链接不再可用,我有限的知识的工作理论是,一旦进行任何更改,DMN 文件就会根据不再存在的模型进行验证,因此进行任何微小的更改都会破坏整个项目。
这里是读取器类,命名空间被列为可选,但是删除它会导致同样的问题
class DMNReader {
static const String defaultNullString = "null";
static const namespace = "http://www.omg.org/spec/DMN/20180521/MODEL/";
XmlDocument document;
DMNReader._(String data) : document = XmlDocument.parse(data);
static Future<DMNReader> forDocument(String path) async {
String data = await rootBundle.loadString(path);
return DMNReader._(data);
}
List<DMNInputData> getAllInputs() {
List<DMNInputData> inputs = [];
document
.findAllElements("inputData", namespace: namespace)
.forEach((element) {
inputs.add(DMNInputData.fromElement(element));
});
inputs.sort((a, b) => a.questionId - b.questionId);
return inputs;
}
List<DMNDecision> getAllDecisions() {
List<DMNDecision> decisions = [];
document
.findAllElements("decision", namespace: namespace)
.forEach((element) {
decisions.add(DMNDecision.fromElement(element));
});
return decisions;
}
static String? getAnnotation(String sourceId, XmlDocument document) {
String? targetId = document
.findAllElements("association", namespace: namespace)
.firstWhere((element) =>
element
.getElement("sourceRef", namespace: namespace)
?.getAttribute("href")
?.substring(1) ==
sourceId)
.getElement("targetRef", namespace: namespace)
?.getAttribute("href")
?.substring(1);
String? annotationText = document
.findAllElements("textAnnotation", namespace: namespace)
.firstWhere((element) => element.getAttribute("id") == targetId)
.getElement("text", namespace: namespace)
?.text;
return annotationText;
}
}
我已经从上面的链接中搜索了该页面,以寻找可能有效的替代 DMN 模型,但到目前为止还没有成功。此外,它们都没有 http://www.omg.org/spec/DMN/'number'/MODEL/“格式。 我也不确定正确的模型最初是什么样子的,所以识别一个有效的替代方案可能很困难。
先谢谢你
答: 暂无答案
评论