Camunda dmengine的无状态使用线程安全吗?



我有一个用例,我使用Camunda(7.12)进行无状态DMN计算。它只是一个用于映射值的大DMN表。该应用程序是在Kotlin的Spring Boot中编写的,并作为REST服务公开。代码看起来像这样:

companion object {
private const val DMN_NAME = "mappingRules.dmn"
private const val DECISION_NAME = "mappingRules"
}
val dmnEngine: DmnEngine
val dmnTableStream: InputStream
val dmnDecision: DmnDecision
init {
dmnEngine = DmnEngineConfiguration.createDefaultDmnEngineConfiguration().buildEngine()
dmnTableStream = MyMappingService::class.java.classLoader.getResourceAsStream(DMN_NAME)
dmnDecision = dmnEngine.parseDecision(DECISION_NAME, dmnTableStream)
}
fun mapValue(source: String) {
val decisionResult: DmnDecisionTableResult = dmnEngine
.evaluateDecisionTable(dmnDecision, Variables.createVariables()
.putValue("source", source)
)
return decisionResult.firstResult.getValue("target") as String
}

mapValuedmnEngine.evaluateDecisionTable可以由多个线程并发执行,这个Camunda方法是线程安全的吗?我在官方文档中找不到关于无状态DMN评估和线程安全使用的信息。

根据Camunda论坛的答案,DmnEngineDmnDecision都应该是线程安全的:https://forum.camunda.org/t/re-use-caching-of-dmn-objects-in-multi-threaded-application/1576/2

相关内容

  • 没有找到相关文章

最新更新