随着DMN标准的推出并日益成熟,在企业实践过程中表现出强大技术优势,越来越多的被市场认可和采用。DMN标准从图形化逻辑建模、数据类型、盒式装箱表达式、基础表达式语言、内置函数等功能形态,到元模型和输出格式,以及规则模型与第三方开发资源,人工智能技术的融合等方面,完整系统的定义了规则引擎(或决策引擎)的技术标准。结束了规则引擎领域无统一标准的现状,实现了通用模型的交换和互操作性。同时DMN标准的推出改变了以往规则引擎领域由于技术不统一造成的学习成本高昂,过度依赖IT资源,维护成本高昂,互不通用的混乱局面,使企业应用过程中敏捷性迅速提高,运维成本大幅降低。
DMN标准最为重要的意义是打破了规则引擎(或决策引擎)领域的藩篱,使规则引擎由原来比较单一的规则匹配演变成功能更为强大的算法引擎,实现复杂的业务逻辑,使其成为企业重要的核心IT组件和快速开发底座。您可以把它当作企业内部的规则中心、决策中心、逻辑中心使用,也可以将它与机器学习、数字优化相结合实现透明可执行的人工智能,构建更高维度的商业智能体系。
简单回顾一下历史
规则引擎(或决策引擎)起源于70年代的专家系统,尤其在金融保险领域专业性的要求,需进行大量合规性审核,因此从业者要具备专业的知识背景和长期的实践经验才能胜任,在此背景下专家系统应运而生。此类系统试图穷举业务专家头脑中的业务规则,将它们存储到知识库中,然后通过用户输入条件与这些业务规则匹配的方式输出以提高效率,减少误差。系统中业务规则采用“如果这些条件为真,则采取一些操作”的形式,提供了一种简单的提取格式,用于将知识从规则存储库或知识库中提取出来,由此基本结构演化出Rete等一系列行业成熟的推理算法。从功能层面通过规则集、决策表、评分卡、决策树、决策流的形态,编写定义业务规则,但是要实现更为复杂的逻辑,能力还是比较有限。

随着企业信息化的进程,规则引擎从知识密集型朝着计算密集型的方向发展,不同的业务领域都有规则引擎的应用需求。同时代表着新技术革命的大数据、云计算,尤其人工智能的爆发,要求规则引擎支持更为复杂的算法和逻辑结构,并且具有良好的扩展性和通用性。

同时企业界关于标准统一的诉求也比较强烈,OMG组织在此背景下,与企业界、IT厂商、行业组织、行业专家共同制定了DMN标准。

DMN使规则引擎蜕变成算法引擎
DMN标准除了重新定义和标准化了规则引擎的原有的推理匹配功能以外,还赋予了规则引擎强大的逻辑处理能力。使其可以实现几乎所有代码所能实现的业务逻辑,并且拥有开发语言所能实现的执行性能。其中最大的变化就是算法结构的变化,传统的规则引擎(或决策类引擎)其功能的核心是规则集,推理匹配算法都是围绕其进行,这就造成其局限性和扩展能力的不足,这也造成其应用领域比较局限。而DMN标准重新规范定义了规则(或决策)的元模型体系,其核心功能都是围绕规则模型展开,其模型结构既可以向前兼容满足规则匹配的需求,又平行扩展了新的功能结构,以及对外部资源的整合。原有的规则匹配只是其体系的一个平行部分,不同的功能结构又可以嵌套引用,这样就形成了一个强大的算法结构,这使得采用DMN标准的引擎能应用到几乎所有的业务逻辑领域,让规则引擎脱胎换骨蜕变成算法引擎,这得益于DMN标准优秀的技术体系。

1.决策需求图(DRG和DRD)
你画的就是你要执行的,通过DMN标准图元,用户可以快速定义决策需求图(DRG和DRD)的逻辑结构,它是规则模型建模的基础,非常适合非技术背景的业务专家定义领域规则模型。这个过程将业务需求和建模完美的结合到一起,而不需要IT翻译和参与,这极大的提高了效率和业务的响应速度。

2.FEEL表达式语言
FEEL语言是专门为DMN标准设计的开发语言,它是一种强类型语言,但它足够友好,适合非技术背景的业务人员使用,使规则模型设计彻底摆脱了对IT的依赖,其语法具有以下特点:
l 无副作用(即在执行过程中不会改变外部状态,也不依赖于外部状态的变化。)
l 包含数字、日期、字符串、列表和上下文的简单数据模型
l 为广大受众设计的简单语法
l 三值逻辑(真、假、空)
FEEL是一种简单的语言,其灵感来自Java、JavaScript、XPath、SQL、PMML、Lisp等。DMN完全定义了不调用外部定义函数的FEEL表达式的含义。FEEL表达式(不调用外部定义的函数)没有副作用,并且在每个一致的实现中具有相同的解释。其使用难度比编辑EXCEL公式还低,支持不限层级的嵌套。
3.盒装表达式
DMN标准中决策逻辑定义了一种图形表示法,称为盒装表达式。它革命性的装箱结构,赋予了规则模型强大的算法能力。

以最为经典的盒装上下文为例,通过表格块的形式提供给用户图形化的块结构来定义复杂逻辑。表格中每行键值块可以任意嵌套所有类型的盒装表达式结构,你可以在键值块中采用盒装FEEL表达式,也可以是盒装决策表等,如果子键值块是上下文又可以再在里面嵌套其他盒装结构,而且不限层级无线嵌套。这类似开发语言中的代码块结构,每个键值块类似代码块,键值块之间如代码块一样可以相互调用,也可以引用外部的逻辑块,整个逻辑结构以图形化的形式展现,非常方便开发维护,而且简单清晰没有代码开发环境那么复杂,需要专业的技术背景才能使用。但你不要担心它的能力,因为它简约而不简单,可以轻松实现以往代码才能实现的复杂业务逻辑。革命性的装箱结构,通过图表的形式极大的简化了逻辑建模过程。

盒装上下文既可以输出简单类型的对象结果,也可以输出复杂集合类型对象结果。使决策块拥有了强大的变量对象的组装能力。
盒装函数即业务知识模型,用户同样可以通过它设定参数自定义函数逻辑,它同样可以使用上下文的结构嵌套定义复杂的业务函数。函数定义好后可以方便的被其他决策块调用。

4.内置函数
DMN标准同样定义了大量的内置函数,这些函数基本涵盖了您逻辑建模的方方面面,而且开可以扩展。这些函数同样支持不限层级的嵌套。

5.其他资源调用
传统规则(或决策)类引擎想要调用其他开发资源都需要通过编码,但在DMN中这些都极其简单,其元模型结构上允许内置如Java静态类及类方法,不需要编程,只需要配置好要引用的类名称及类方法,就可以无缝调用,这极大的扩展了其能力范围。另外,通过简单整合也可以用同样方法调用用户自定义的实体类及类方法。因此可以做到与代码开发等效的算法能力。

Java静态类及方法调用除了定义业务知识模型(即自定义函数),也可以通过一元表达式的形式调用。

DMN除了可以使用常规的Java资源以外还可以引入并且调用机器学习模型算法,它们构成了商业智能的基本结构,机器学习算法以往只能止步于预测模型分析,但是与DMN整合以后便可以将预测模型结果通过决策变的可执行,这样就实现了真正的人工智能。
预测模型算法示例:

线性回归模型
该模型的典型应用是确定因变量与一个或多个自变量之间的关系。

PMML函数定义

PMML函数调用
Together规则引擎完全遵循DMN标准构建,不仅局限于决策规则,它还拥有媲美代码开发的能力和执行效率,完全可以做为您IT系统的算法引擎,实现各种复杂的业务逻辑。你可以通过Together完成规则模型的图形化逻辑定义、变量定义、以装箱表达式如决策表、文字表达、上下文、自定义函数、函数调用、关系表、列表的形式实现数据对象组装、逻辑表达式、遍历循环、排序、递归、各种算法定义、嵌套调用、外部方法调用等等,实现以往只有代码开发才能实现的复杂逻辑,颠覆传统的软件开发方式,成为您杀手级的快速规则开发引擎。