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

Documentation - dmnFeelCustomFunctionProviders property does not work

XMLWordPrintable

    • Icon: Bug Report Bug Report
    • Resolution: Unresolved
    • Icon: L3 - Default L3 - Default
    • None
    • 7.13.0
    • documentation, engine

      As per https://docs.camunda.org/manual/7.14/reference/deployment-descriptors/tags/process-engine/#dmnFeelCustomFunctionProviders, you can define dmnFeelCustomFunctionProviders configuration of type list in process engine configuration. However, after it is defined in bpm-platform.xml, it throws an error.

      bpm-platform.xml

       <property name="dmnFeelCustomFunctionProviders">CustomFunctionProvider</property>
      

      Error

      23-Sep-2021 16:37:08.194 SEVERE [main] org.apache.catalina.startup.Catalina.start The required Server component failed to start so Tomcat is unable to start.
      	org.apache.catalina.LifecycleException: Failed to start component [StandardServer[8005]]
      		at org.apache.catalina.util.LifecycleBase.handleSubClassException(LifecycleBase.java:440)
      		at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:198)
      		at org.apache.catalina.startup.Catalina.start(Catalina.java:772)
      		at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
      		at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
      		at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
      		at java.base/java.lang.reflect.Method.invoke(Method.java:567)
      		at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:342)
      		at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:473)
      	Caused by: org.camunda.bpm.engine.ProcessEngineException: ENGINE-08043 Exception while performing 'deploy BPM platform' => 'Start process engine default': ENGINE-08039 Cannot set property 'dmnFeelCustomFunctionProviders' on instance of class 'org.camunda.bpm.engine.impl.cfg.StandaloneProcessEngineConfiguration'
      		at org.camunda.bpm.container.impl.ContainerIntegrationLogger.exceptionWhilePerformingOperationStep(ContainerIntegrationLogger.java:316)
      		at org.camunda.bpm.container.impl.spi.DeploymentOperation.execute(DeploymentOperation.java:136)
      		at org.camunda.bpm.container.impl.jmx.MBeanServiceContainer.executeDeploymentOperation(MBeanServiceContainer.java:160)
      		at org.camunda.bpm.container.impl.spi.DeploymentOperation$DeploymentOperationBuilder.execute(DeploymentOperation.java:216)
      		at org.camunda.bpm.container.impl.tomcat.TomcatBpmPlatformBootstrap.deployBpmPlatform(TomcatBpmPlatformBootstrap.java:83)
      		at org.camunda.bpm.container.impl.tomcat.TomcatBpmPlatformBootstrap.lifecycleEvent(TomcatBpmPlatformBootstrap.java:61)
      		at org.apache.catalina.util.LifecycleBase.fireLifecycleEvent(LifecycleBase.java:123)
      		at org.apache.catalina.util.LifecycleBase.setStateInternal(LifecycleBase.java:423)
      		at org.apache.catalina.util.LifecycleBase.setState(LifecycleBase.java:366)
      		at org.apache.catalina.core.StandardServer.startInternal(StandardServer.java:923)
      		at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:183)
      		... 7 more
      	Caused by: org.camunda.bpm.engine.ProcessEngineException: ENGINE-08039 Cannot set property 'dmnFeelCustomFunctionProviders' on instance of class 'org.camunda.bpm.engine.impl.cfg.StandaloneProcessEngineConfiguration'
      		at org.camunda.bpm.container.impl.ContainerIntegrationLogger.cannotSetValueForProperty(ContainerIntegrationLogger.java:285)
      		at org.camunda.bpm.container.impl.metadata.PropertyHelper.applyProperty(PropertyHelper.java:91)
      		at org.camunda.bpm.container.impl.metadata.PropertyHelper.applyProperties(PropertyHelper.java:110)
      		at org.camunda.bpm.container.impl.deployment.StartProcessEngineStep.performOperationStep(StartProcessEngineStep.java:101)
      		at org.camunda.bpm.container.impl.spi.DeploymentOperation.execute(DeploymentOperation.java:120)
      		... 16 more
      	Caused by: java.lang.IllegalArgumentException: argument type mismatch
      		at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
      		at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
      		at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
      		at java.base/java.lang.reflect.Method.invoke(Method.java:567)
      		at org.camunda.bpm.container.impl.metadata.PropertyHelper.applyProperty(PropertyHelper.java:88)
      

      We should change the description of the property in https://docs.camunda.org/manual/7.14/reference/deployment-descriptors/tags/process-engine/#dmnFeelCustomFunctionProviders to something like:

      Define a list of instances of FeelCustomFunctionProvider. You can only set this property programmatically. Read more about it in the user guide.
      

      Also in https://docs.camunda.org/manual/7.14/user-guide/dmn-engine/feel/custom-functions/#process-engine, we should may be give an example code to register this property via plugin.

      Note
      Registering this property via Plugin works.

        This is the controller panel for Smart Panels app

              emma.pollum Emma Pollum
              garima.yadav Garima Yadav
              Votes:
              0 Vote for this issue
              Watchers:
              4 Start watching this issue

                Created:
                Updated: