Uploaded image for project: 'camunda BPM'
  1. camunda BPM
  2. CAM-4896

Minimize the Public API of the DMN Engine

    • Icon: Task Task
    • Resolution: Fixed
    • Icon: L3 - Default L3 - Default
    • 7.4.0, 7.4.0-alpha3
    • None
    • dmn-engine
    • None

      The public API should be as minimal as possible. This may change in the Future but as DMN is quite new we shouldn't commit on our first approach.

      Also secretly rewrite the DMN engine while doing this.

        This is the controller panel for Smart Panels app

            [CAM-4896] Minimize the Public API of the DMN Engine

            Sebastian Menski added a comment - public API prototype https://github.com/camunda/camunda-engine-dmn/tree/minimize

            Note: I didn't update the docs to the new naming yet. I will do that during my reviews of all the DMN doc tickets.

            Sebastian Menski added a comment - Note: I didn't update the docs to the new naming yet. I will do that during my reviews of all the DMN doc tickets.

            Review feedback:

            DmnEngine:

            • remove the API methods that take a fileName
            • remove the convenience methods for the first definition
            • evaluateDecisionTable methods: state in the docs for the variables parameter that the variables are available when expressions are evaluated during decision evaluation

            DmnEngineConfiguration:

            • in the class javadoc, add a note that a change of a configuration property can affect all DmnEngines previously built with that config
            • move the default expression language properties into the impl class (=> let's see if they cover relevant use cases before exposing them)
            • add a way to build DmnEngine without using an impl class (e.g. make DmnEngineConfiguration abstract and add a static factory method for a new impl configuration)
            • move the feel factory and engine to the impl class (or else people might assume that evaluating standalone FEEL expressions is a feature, while being able to replace the FeelEngine is more important to us)

            DmnEvaluatedOutput:

            • in the javadoc, make the distinction between #getName and #getOutputName more clear. This could be done by providing an example in the class javadoc for how a DmnEvaluatedOutput maps to an output entry/output element of a DMN decision table

            Thorben Lindhauer added a comment - Review feedback: DmnEngine: remove the API methods that take a fileName remove the convenience methods for the first definition evaluateDecisionTable methods: state in the docs for the variables parameter that the variables are available when expressions are evaluated during decision evaluation DmnEngineConfiguration: in the class javadoc, add a note that a change of a configuration property can affect all DmnEngines previously built with that config move the default expression language properties into the impl class (=> let's see if they cover relevant use cases before exposing them) add a way to build DmnEngine without using an impl class (e.g. make DmnEngineConfiguration abstract and add a static factory method for a new impl configuration) move the feel factory and engine to the impl class (or else people might assume that evaluating standalone FEEL expressions is a feature, while being able to replace the FeelEngine is more important to us) DmnEvaluatedOutput: in the javadoc, make the distinction between #getName and #getOutputName more clear. This could be done by providing an example in the class javadoc for how a DmnEvaluatedOutput maps to an output entry/output element of a DMN decision table

              thorben.lindhauer Thorben Lindhauer
              sebastian.menski Sebastian Menski
              Votes:
              0 Vote for this issue
              Watchers:
              2 Start watching this issue

                Created:
                Updated:
                Resolved: