Tformalexpression in sequenceflow gives parsingerror

I am creating a dropwizard service which uses the process engine to handle bpmn flows. I have created a user task that has a conditional sequence flow with the following code:

<bpmn:sequenceFlow id="SequenceFlow_1x3p2i8" sourceRef="Task_088dhgw" targetRef="EndEvent_1hc01v6">
  <bpmn:conditionExpression xsi:type="bpmn:tFormalExpression">${true}</bpmn:conditionExpression>
</bpmn:sequenceFlow>

When the engine parses the file, an exception is thrown:

ERROR [2016-07-26 14:52:31,503] org.camunda.bpm.engine.context: ENGINE-16004 Exception while closing command context: ENGINE-09005 Could not parse BPMN process. Errors: 
* Invalid type, only tFormalExpression is currently supported | bicycles.bpmn | line 22 | column 85
* Invalid type, only tFormalExpression is currently supported | bicycles.bpmn | line 79 | column 67

What is wrong here?

Hey Jeroen,

can you please omit the bpmn: in the property xsi:type="bpmn:tFormalExpression" and try it again?

Best regards,
Chris

That does not work either:

Caused by: org.camunda.bpm.engine.ProcessEngineException: ENGINE-09005 Could not parse BPMN process. Errors: 
* <Line 22, Column 63>: XML-24065: (Error) xsi:type "tFormalExpression" not resolved to a type definition | bicycles.bpmn | line 22 | column 63
* <Line 79, Column 63>: XML-24065: (Error) xsi:type "tFormalExpression" not resolved to a type definition | bicycles.bpmn | line 79 | column 63
    at org.camunda.bpm.engine.impl.util.EngineUtilLogger.exceptionDuringParsing(EngineUtilLogger.java:58)
    at org.camunda.bpm.engine.impl.util.xml.Parse.throwExceptionForErrors(Parse.java:191)
    at org.camunda.bpm.engine.impl.bpmn.parser.BpmnParse.execute(BpmnParse.java:307)
    at org.camunda.bpm.engine.impl.bpmn.deployer.BpmnDeployer.transformDefinitions(BpmnDeployer.java:106)
    at org.camunda.bpm.engine.impl.AbstractDefinitionDeployer.transformResource(AbstractDefinitionDeployer.java:96)
    at org.camunda.bpm.engine.impl.AbstractDefinitionDeployer.parseDefinitionResources(AbstractDefinitionDeployer.java:71)
    at org.camunda.bpm.engine.impl.AbstractDefinitionDeployer.deploy(AbstractDefinitionDeployer.java:61)

Hi,

could you please share your complete XML file or a minimal example which reproduces this error?

Cheers,
Sebastian

bicycles.bpmn (12.8 KB)

Here is the file.

Hi,

thanks for the XML. In the file you attached is the BPMN XML namespace prefix set to bpmn2. So the tFormalExpression has also to be prefix with bpmn2 otherwise it has the wrong namespace.

After adding the bpmn2 prefix I can successfully deploy your process on Camunda BPM 7.5.0.
bicycles-prefix.bpmn (12.8 KB)

If you still have problems deploying the process. Please describe how you deploy the process.

Cheers,
Sebastian

Thanks for your investigation. The bpmn2 change was part of what I was trying out, but that does not solve the problem, I still get:

Exception in thread "main" org.camunda.bpm.engine.ProcessEngineException: ENGINE-08043 Exception while performing 'Deployment of Process Application Camunda Servlet Process Application' => 'Deployment of process archive 'null': ENGINE-09005 Could not parse BPMN process. Errors: 
* Invalid type, only tFormalExpression is currently supported | bicycles.bpmn | line 22 | column 69
* Invalid type, only tFormalExpression is currently supported | bicycles.bpmn | line 79 | column 69
    at org.camunda.bpm.container.impl.ContainerIntegrationLogger.exceptionWhilePerformingOperationStep(ContainerIntegrationLogger.java:312)
    at org.camunda.bpm.container.impl.spi.DeploymentOperation.execute(DeploymentOperation.java:130)
    at org.camunda.bpm.container.impl.jmx.MBeanServiceContainer.executeDeploymentOperation(MBeanServiceContainer.java:156)
    at org.camunda.bpm.container.impl.spi.DeploymentOperation$DeploymentOperationBuilder.execute(DeploymentOperation.java:203)
    at org.camunda.bpm.container.impl.RuntimeContainerDelegateImpl.deployProcessApplication(RuntimeContainerDelegateImpl.java:94)
    at org.camunda.bpm.application.AbstractProcessApplication.deploy(AbstractProcessApplication.java:62)

I use the camunda-bpm-dropwizard module. This module looks for bpmn files on the classpath to deploy.

When debugging BpmnParse.java, I see that the prefix array that should contain the namespaces, is not initialized. This causes the expression type not to be correctly resolved. I am checking why this is.

Hi,

I never used the dropwizard module but I’m quite sure it doesn’t change the parser. :slight_smile: If you want to share your code we could have a look at it.

As I’m not able to reproduce the issue with your process I can only suggest to completely remove the xsi:type attribute. The parser doesn’t require them.

Cheers,
Sebastian

I think it has to do with the underlying XML parser. when parsing for namespace attributes, BpmParse expects attributes that start with xmlns:prefix but instead it receives entries with the format http://www.w3.org/2000/xmlns:prefix.

Interesting. Which OS and JDK are you using?

Hey Jeroen,

I tried your bpmn model on the latest snapshot of the camunda engine and it was parsed without any errors.
I only had to add the bpmn: again to the tFormalExpression, sorry for that.

My question is: What version of the camunda engine do you use?

Best regards,
Chris

Hi!
I am using version 7.5.0 (using the maven bom) and running on java 8 (which I suspect may be part of the problem, will test that out later today).

Kind regards,
Jeroen

Hello,
was any progress made with this issue? I’m still experiencing the problem on camunda 7.5.0 and camunda 7.6.0-alpha4, modeler 1.3.0. I’m embedding the camunda-engine into my application using maven and camunda-bom.

I’ve however been able to deploy the exact same bpmn to wildfly-camunda (camunda 7.5.0 and wildfly 10.0.0-Final) and start the process without any problems.