1

ステートレス DMN 評価に Camunda (7.12) を使用するユース ケースがあります。つまり、値のマッピングに使用される単なる大きな 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 評価とスレッド セーフの使用法に関する公式ドキュメントの情報を見つけることができませんでした。

4

1 に答える 1