我需要一个有效的 DMN 模型来完成我的项目

I need a working DMN model for my Project

提问人:njco 提问时间:8/10/2023 最后编辑:njco 更新时间:8/10/2023 访问量:29

问:

我目前正在做一个 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/“格式。 我也不确定正确的模型最初是什么样子的,所以识别一个有效的替代方案可能很困难。

先谢谢你

Flutter 模型 命名空间 DMN

评论


答: 暂无答案