0

0

DMN决策模型的XML是什么样的

星降

星降

发布时间:2026-01-01 12:02:02

|

591人浏览过

|

来源于php中文网

原创

dmn决策模型xml是严格遵循omg规范、可被引擎直接执行的可执行定义,根节点必须为并声明正确命名空间,含至少一个、和,feel表达式需语法正确且大小写敏感。

dmn决策模型的xml是什么样的

DMN 决策模型的 XML 是一个结构清晰、严格遵循 OMG 规范的 XML 文档,后缀通常为 .dmn。它不是随便写的配置文件,而是可被引擎(如 Camunda、Flowable、Drools)直接解析执行的可执行决策定义


根节点 <definitions></definitions> 是唯一入口

所有合法 DMN XML 必须以 <definitions></definitions> 为根,且必须声明正确的命名空间(不同版本略有差异):

<?xml version="1.0" encoding="UTF-8"?>
<definitions xmlns="https://www.php.cn/link/7a9693015c73ae1d46ea1e8fd0c7a1fb"
             xmlns:feel="http://www.omg.org/spec/FEEL/20140401"
             id="simple-dish-decision"
             name="Simple Dish Decision"
             namespace="https://example.org/dmn">
  <decision id="dish" name="Dish">
    <decisionTable id="decisionTable">
      <input label="Temperature">
        <inputExpression typeRef="number">
          <text>temperature</text>
        </inputExpression>
      </input>
      <output label="Dish" name="dish" typeRef="string"/>
      <rule>
        <inputEntry><text><= 20</text></inputEntry>
        <outputEntry><text>"Soup"</text></outputEntry>
      </rule>
      <rule>
        <inputEntry><text>> 20</text></inputEntry>
        <outputEntry><text>"Salad"</text></outputEntry>
      </rule>
    </decisionTable>
  </decision>
</definitions>
  • xmlns 必须匹配你用的 DMN 版本(如 2015113020191111),否则引擎会拒载或报 namespace not supported
  • idname 都要设:前者是部署 key(Camunda 中用于 decisionService.evaluateDecisionByKey("dish")),后者是业务可读名
  • namespace 不是 URL,只是命名空间标识符,但必须全局唯一,避免跨项目冲突

<decisiontable></decisiontable> 的结构不能少三要素

一个可用的决策表必须包含:

  • 至少一个 <input>(带 <inputexpression></inputexpression>
  • 至少一个 <output></output>
  • 至少一个 <rule></rule>(含 <inputentry></inputentry><outputentry></outputentry>

常见错误:

  • 忘写 typeRef(如 typeRef="number"),导致 FEEL 表达式解析失败,报 cannot coerce string to number
  • <inputexpression></inputexpression> 里写 <text>temperature > 20</text> —— 错!这里只允许变量引用(如 temperature),条件逻辑写在 <inputentry></inputentry>
  • <outputentry></outputentry> 中字符串没加双引号("Soup"),FEEL 会当成未定义变量,报 unknown variable 'Soup'

FEEL 表达式必须符合语法,且大小写敏感

DMN 默认使用 FEEL(Friendly Enough Expression Language),不是 JavaScript,也不是 SpEL:

魔法映像企业网站管理系统
魔法映像企业网站管理系统

技术上面应用了三层结构,AJAX框架,URL重写等基础的开发。并用了动软的代码生成器及数据访问类,加进了一些自己用到的小功能,算是整理了一些自己的操作类。系统设计上面说不出用什么模式,大体设计是后台分两级分类,设置好一级之后,再设置二级并选择栏目类型,如内容,列表,上传文件,新窗口等。这样就可以生成无限多个二级分类,也就是网站栏目。对于扩展性来说,如果有新的需求可以直接加一个栏目类型并新加功能操作

下载
  • ✅ 正确:<text>"Hot"</text><text>temperature > 30 and location = "Beijing"</text>
  • ❌ 错误:<text>temperature > 30 && location == "Beijing"</text>(用了 JS 语法)
  • ❌ 错误:<text>TEMPERATURE > 30</text>(变量名大小写不匹配流程传入的 temperature

FEEL 支持:

  • 基本运算:+ - * /
  • 比较:> (注意是 <code>=,不是 ==
  • 字符串:"abc",拼接用 +"Hello" + " " + name
  • 列表:[1,2,3],取值用方括号:list[1]

部署前务必验证 XML 是否符合 XSD

DMN 引擎加载时会校验 XML 结构。如果你手写或拼接生成 XML,最容易漏的是:

  • 忘闭合标签(如 <inputentry></inputentry> 没配
  • 属性值没加引号(typeRef=number → 必须是 typeRef="number"
  • 使用了高版本才支持的元素(如 <context></context> 在 DMN 1.1 不可用,只在 1.3+ 支持)

建议做法:

  • 用官方校验工具:Camunda Modeler 或 Flowable Modeler 导出时自动校验
  • 手动校验:用 IDE(如 IntelliJ)绑定 DMN XSD(如 <a href="https://www.php.cn/link/7a9693015c73ae1d46ea1e8fd0c7a1fb">https://www.php.cn/link/7a9693015c73ae1d46ea1e8fd0c7a1fb</a>),实时标红
  • 运行时报错典型提示:cvc-complex-type.2.4.a: Invalid content was found starting with element 'input'. One of '{input}' is expected. → 说明标签顺序错了(DMN 要求 input 必须在 output 前)

真正容易被忽略的点是:XML 命名空间和 XSD 版本必须完全一致——哪怕只差一个字符,引擎就拒绝加载,且错误信息极其模糊。

热门AI工具

更多
DeepSeek
DeepSeek

幻方量化公司旗下的开源大模型平台

豆包大模型
豆包大模型

字节跳动自主研发的一系列大型语言模型

通义千问
通义千问

阿里巴巴推出的全能AI助手

腾讯元宝
腾讯元宝

腾讯混元平台推出的AI助手

文心一言
文心一言

文心一言是百度开发的AI聊天机器人,通过对话可以生成各种形式的内容。

讯飞写作
讯飞写作

基于讯飞星火大模型的AI写作工具,可以快速生成新闻稿件、品宣文案、工作总结、心得体会等各种文文稿

即梦AI
即梦AI

一站式AI创作平台,免费AI图片和视频生成。

ChatGPT
ChatGPT

最最强大的AI聊天机器人程序,ChatGPT不单是聊天机器人,还能进行撰写邮件、视频脚本、文案、翻译、代码等任务。

相关专题

更多
string转int
string转int

在编程中,我们经常会遇到需要将字符串(str)转换为整数(int)的情况。这可能是因为我们需要对字符串进行数值计算,或者需要将用户输入的字符串转换为整数进行处理。php中文网给大家带来了相关的教程以及文章,欢迎大家前来学习阅读。

910

2023.08.02

pdf怎么转换成xml格式
pdf怎么转换成xml格式

将 pdf 转换为 xml 的方法:1. 使用在线转换器;2. 使用桌面软件(如 adobe acrobat、itext);3. 使用命令行工具(如 pdftoxml)。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

1938

2024.04.01

xml怎么变成word
xml怎么变成word

步骤:1. 导入 xml 文件;2. 选择 xml 结构;3. 映射 xml 元素到 word 元素;4. 生成 word 文档。提示:确保 xml 文件结构良好,并预览 word 文档以验证转换是否成功。想了解更多xml的相关内容,可以阅读本专题下面的文章。

2116

2024.08.01

xml是什么格式的文件
xml是什么格式的文件

xml是一种纯文本格式的文件。xml指的是可扩展标记语言,标准通用标记语言的子集,是一种用于标记电子文件使其具有结构性的标记语言。想了解更多相关的内容,可阅读本专题下面的相关文章。

1142

2024.11.28

mysql标识符无效错误怎么解决
mysql标识符无效错误怎么解决

mysql标识符无效错误的解决办法:1、检查标识符是否被其他表或数据库使用;2、检查标识符是否包含特殊字符;3、使用引号包裹标识符;4、使用反引号包裹标识符;5、检查MySQL的配置文件等等。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

204

2023.12.04

Python标识符有哪些
Python标识符有哪些

Python标识符有变量标识符、函数标识符、类标识符、模块标识符、下划线开头的标识符、双下划线开头、双下划线结尾的标识符、整型标识符、浮点型标识符等等。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

313

2024.02.23

java标识符合集
java标识符合集

本专题整合了java标识符相关内容,想了解更多详细内容,请阅读下面的文章。

290

2025.06.11

c++标识符介绍
c++标识符介绍

本专题整合了c++标识符相关内容,阅读专题下面的文章了解更多详细内容。

172

2025.08.07

Golang 测试体系与代码质量保障:工程级可靠性建设
Golang 测试体系与代码质量保障:工程级可靠性建设

Go语言测试体系与代码质量保障聚焦于构建工程级可靠性系统。本专题深入解析Go的测试工具链(如go test)、单元测试、集成测试及端到端测试实践,结合代码覆盖率分析、静态代码扫描(如go vet)和动态分析工具,建立全链路质量监控机制。通过自动化测试框架、持续集成(CI)流水线配置及代码审查规范,实现测试用例管理、缺陷追踪与质量门禁控制,确保代码健壮性与可维护性,为高可靠性工程系统提供质量保障。

48

2026.02.28

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
React 教程
React 教程

共58课时 | 5.7万人学习

TypeScript 教程
TypeScript 教程

共19课时 | 3.2万人学习

Bootstrap 5教程
Bootstrap 5教程

共46课时 | 3.5万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号