问题标签 [dmn]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
java - GraalVM 没有发现 DMN Camunda 资源
我正在 Quarkus 框架中开发一个使用嵌入式 Camunda DMN 引擎的应用程序,但我在使用 GraalVM 进行本机编译时遇到问题。
问题是在运行时它无法找到 camunda 库未放置在资源文件夹中的一些 XSD 文件,它将它们放置在一个包中,如图所示。
我使用了该命令,以便在应用程序执行期间生成配置文件,以便能够在本机中编译。
$JAVA_HOME/bin/java -agentlib:native-image-agent=config-output-dir=native-config -jar target/quarkus-app/quarkus-run.jar
这在 resources-config.json 文件中生成了以下结构
如您所见,对资源的访问是通过模式推断出来的"\\Qorg/camunda/bpm/model/dmn/schema/DMN13.xsd\\E"
。
我的资源配置文件看起来像这样
使用命令本地编译 quarkus 应用程序时./mvnw package -Pnative
。
这会生成本机可执行文件并很好地执行部署,但是当我发出使用 camunda 的请求时,它会生成错误
检查文件的路径,我看到 jar 中有文件。错误是什么?在这里,我对 GraalVM 如何发现资源以及如何编写模式以在编译时包含资源感到困惑。
我也尝试过 pattern {"pattern":".*/DMN1.*xsd$"}
,但问题仍然存在。
注意:
这是使用命令执行应用程序时生成的对那些资源的访问跟踪$JAVA_HOME/bin/java -agentlib:native-image-agent=trace-output=native-config/trace-file.json -jar target/quarkus-app/quarkus-run.jar
我澄清说 GraalVM 正在读取创建的配置文件,因为它需要“捆绑包”的配置。
dmn - 是否已经有一个开源的 Java 库,并且可以通过 Maven 实现 FEEL 语言?
是否已经有一个 Java 库开源并可通过 Maven 获得,它实现了 Drools 以外的 FEEL?
drools - 如何使用 kie-feel-dmn 中的 DecisionTableImpl 类?
有没有办法在不使用整个库集的情况下使用“org.kie.dmn.feel.runtime.decisiontables.DecisionTableImpl”类?由于某些安全策略限制,我想使用我的数据库加载规则。
javascript - 使用 Graalvm js-engine 将 js 外部库添加到嵌入式 Camunda
我正在尝试使用带有spring boot的java嵌入式camunda通过DMN中的JS实现一些复杂的业务验证逻辑。为了避免使用已弃用的 Nashorn 并添加 ES6 支持,我已将其添加到项目 graal js 引擎中。看起来它工作得很好,但我不知道如何将自定义函数添加到 js-script 引擎的上下文中。假设我的资源文件夹中有 index.js 和导出的函数,我怎样才能注册这样的扩展以便能够在 camunda 中使用它?
jbpm - 可循环自定义数据类型列表的 DMN 模型规则
我有一个类似于下面的 json 示例的数据结构,我想遍历嵌套列表以获取“DetailType”,检查单个“DetailType”是否为“ABC”,然后不要检查其余的 Accounts 并返回 true。这如何在 DMN 中建模。基本上,如果客户有一个具有“DetailType”=“ABC”的帐户,那么它就是一个有效的客户。
jbpm - 无法找到要评估的 DMN 决策
如果我添加决策 ID 和决策名称来发布请求/server/containers/{containerId}/dmn
,我会收到错误"Unable to locate DMN Decision to evaluate"
。当这些参数设置为 null 时,它适用于所有返回响应的决策。我只想过滤对主要决策规则的响应。有没有办法只为单个决策 ID 获得响应
drools - DMN 中的日期比较 - 决策表
使用jbpm version 7
DataModel :: Profile 有两个字段(onboarding
类型date
,currentDate
类型date
)
当我写决策表时:它不断抛出错误Skipped Decision Table Analysis of table 'onBoardingDateDecision' because: Gaps/Overlaps analysis cannot be performed for InputEntry with unary test
为什么我无法在决策表中执行日期比较?
如果我给出像 > date("2005-01-01") 这样的简单表达式,它就可以工作!
dmn - 如何扩展 Kogito DMN 编辑器?
是否可以扩展 Kogito DMN 编辑器,例如使用额外的按钮来提供额外的自定义功能,而无需克隆和构建整个存储库?
drools - 将 drools 与 DMN 一起使用时,输入/输出变量名称冲突是否是预期的问题?如果是,我该如何最好地避免它们?
我正在使用带有使用 DMN 编写的规则的 drools 进行一些早期实验。
在我的用例中,输入数据可能很大且多种多样。还有一些输出可能会在单独调用规则引擎期间作为输入传回。
因此,一些输入变量可能与我的一些输出变量同名。这似乎会引起问题。
具体来说,如果我有一个决策表,并且我的输出名称与数据输入中的任何内容匹配(无论 DRD 树是否实际访问它),则 drools 响应会报告错误并且输出值设置为 null。
只需更改我的输出变量的名称即可解决问题。
然而,对于非常动态的数据,这种冲突并不容易预测。
所以我想问:
我的观察正确吗?
是否有避免此类问题的通用模式(可能是某种变量命名空间或范围)?
编辑:
- 回复:我的观察正确吗?
我现在可能已经找到了一些描述为什么输出名称和输入名称不能冲突的 DMN 标准。我认为图表中的最终决定并不特殊,因此鉴于理论上可以存在图表,因此任何决定都可以用作稍后决定的输入,因此决策输出和相同的输入没有意义图形具有相同的名称。
来自标准https://www.omg.org/spec/DMN/1.3/PDF
如上所述,DRG 级别的每个决策、输入数据和业务知识模型都与决策逻辑级别使用的变量相关联。决策表达式引用的每个变量都必须与所需决策、所需输入数据或所需知识相关联。此外,与所需决策、所需输入数据和所需知识相关的每个变量都必须在决策表达式中引用。
• 如果一个决策需要另一个决策,则所需决策的值表达式将值分配给变量以用于评估所需决策。这是 DMN 中用于在决策逻辑级别组合决策的通用机制。
• 如果决策需要输入数据,则在执行时将变量的值分配给附加到输入数据的数据源的值。这是 DMN 中用于实例化决策数据需求的通用机制。
决策的决策逻辑的输入变量不得在该值表达式或其组件值表达式之外使用:决策元素为其决策逻辑定义输入变量的词法范围。为避免名称冲突和歧义,变量的名称在其范围内必须是唯一的。当 DRG 元素映射到 FEEL 时,变量的名称与其关联的输入数据或决策的(可能是限定的)名称相同,这保证了它的唯一性。
rules - 无法为现有 DMN 模型添加新规则(Camunda 7.13.x 到 7.15.x 升级)
我目前在从 Camunda DMN 7.13.0 升级到 7.15.0 时遇到问题。我的项目中存在“合并”决策表内容的现有逻辑,这实际上向已经存在的 DMN 配置添加了新规则。
当我升级版本时,我遇到了这样的问题:
知道如何解决这个问题吗?我错过的 Camunda DMN 库中有什么变化吗?