【问题标题】:Is stateless usage of Camunda dmnEngine thread-safe?Camunda dmnEngine 的无状态使用是线程安全的吗?
【发布时间】:2021-02-16 22:21:42
【问题描述】:

我有一个用例,我使用 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
    }

mapValue 然后dmnEngine.evaluateDecisionTable 可能被多个线程同时执行,这个 Camunda 方法线程安全吗?我在官方文档中找不到关于使用无状态 DMN 评估和线程安全的信息。

【问题讨论】:

    标签: multithreading kotlin concurrency camunda dmn


    【解决方案1】:

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

    【讨论】:

      猜你喜欢
      • 2011-10-14
      • 1970-01-01
      • 1970-01-01
      • 2012-06-26
      • 1970-01-01
      • 2011-09-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多