Skip to content

Instantly share code, notes, and snippets.

@naglm
Last active August 18, 2022 10:33
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save naglm/85e82fb826f6d735c23a43d9bf435876 to your computer and use it in GitHub Desktop.
Save naglm/85e82fb826f6d735c23a43d9bf435876 to your computer and use it in GitHub Desktop.
Camunda DMN problem when passing more than 4000 characters as input
<?xml version="1.0" encoding="UTF-8"?>
<definitions xmlns="https://www.omg.org/spec/DMN/20191111/MODEL/" xmlns:dmndi="https://www.omg.org/spec/DMN/20191111/DMNDI/" xmlns:dc="http://www.omg.org/spec/DMN/20180521/DC/" xmlns:biodi="http://bpmn.io/schema/dmn/biodi/2.0" id="Definitions_03vjjmw" name="DRD" namespace="http://camunda.org/schema/1.0/dmn" exporter="Camunda Modeler" exporterVersion="4.5.0">
<decision id="ChooseDocumentType" name="Choose Document Type">
<decisionTable id="DecisionTable_0dfobum" hitPolicy="FIRST">
<input id="Input_1" label="documentContent" biodi:width="240">
<inputExpression id="InputExpression_1" typeRef="string">
<text>documentContent</text>
</inputExpression>
</input>
<output id="Output_1" label="documentType" name="documentType" typeRef="string" />
<rule id="DecisionRule_02vkemz">
<inputEntry id="UnaryTests_1wnbb1p">
<text>contains(cellInput, "Lorem")</text>
</inputEntry>
<outputEntry id="LiteralExpression_1i0klow">
<text>"LOR"</text>
</outputEntry>
</rule>
<rule id="DecisionRule_1cpdesf">
<inputEntry id="UnaryTests_11f4989">
<text>contains(cellInput, "Invoice")</text>
</inputEntry>
<outputEntry id="LiteralExpression_1o60z4s">
<text>"INV"</text>
</outputEntry>
</rule>
<rule id="DecisionRule_0myrkow">
<inputEntry id="UnaryTests_170srlt">
<text>contains(cellInput, "Reservation")</text>
</inputEntry>
<outputEntry id="LiteralExpression_149budd">
<text>"RES"</text>
</outputEntry>
</rule>
</decisionTable>
</decision>
<dmndi:DMNDI>
<dmndi:DMNDiagram>
<dmndi:DMNShape dmnElementRef="ChooseDocumentType">
<dc:Bounds height="80" width="180" x="290" y="140" />
</dmndi:DMNShape>
</dmndi:DMNDiagram>
</dmndi:DMNDI>
</definitions>
package com.example.workflow;
import static org.camunda.bpm.engine.test.assertions.bpmn.AbstractAssertions.init;
import static org.camunda.bpm.engine.test.assertions.bpmn.BpmnAwareTests.assertThat;
import java.util.Map;
import org.assertj.core.api.Assertions;
import org.camunda.bpm.engine.ProcessEngine;
import org.camunda.bpm.engine.variable.Variables;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
@SpringBootTest
public class ProcessTest
{
@Autowired
protected ProcessEngine processEngine;
@BeforeEach
final void setup()
{
init(processEngine);
}
@Test
public void testDecision() {
// GIVEN a text more than 4000 chars long that starts with "Lorem"
String documentContent = getDocumentContent();
// WHEN decision table evaluated
var result = processEngine.getDecisionService().evaluateDecisionTableByKey("ChooseDocumentType",
Map.of("documentContent", Variables.objectValue(documentContent)));
// THEN result contains variable "documentType" with value "LOR"
Assertions.assertThat(result.get(0).getEntryMap()).containsExactlyInAnyOrderEntriesOf(Map.of("documentType", "LOR"));
}
private String getDocumentContent() {
return """
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Etiam et odio nec velit bibendum blandit sit amet sed dui. Quisque quam augue, ultricies sit amet justo eu, lobortis tristique magna. Nullam volutpat, justo et suscipit mattis, velit dolor sodales nisl, eget ultrices arcu urna et diam. Morbi eleifend lobortis consequat. Nunc porta enim ut massa interdum, cursus hendrerit nisi rutrum. Integer convallis velit in augue eleifend, egestas fermentum justo sagittis. Pellentesque pharetra, mi eget varius fringilla, nisi orci sodales dui, nec sodales sapien enim nec turpis.
Sed sed sagittis magna, at mattis sem. Aliquam a volutpat leo, vel gravida quam. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Aliquam erat volutpat. Suspendisse et elementum sapien. Curabitur sed nulla id risus vehicula euismod. Vivamus nec suscipit ligula. Praesent sodales nisl lectus, id tincidunt neque dignissim ac. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia curae; Nam ac sem sagittis, condimentum libero at, egestas dui. Sed a porta dolor.
Suspendisse dignissim diam nec mattis pulvinar. Aenean mollis, eros vitae fermentum facilisis, enim magna interdum dolor, aliquam commodo metus erat a tellus. Vivamus nisi nisl, fermentum semper eleifend at, commodo convallis urna. Ut interdum viverra urna, sed pharetra ex commodo a. Nunc euismod risus ipsum, nec convallis dolor ullamcorper ac. Proin nec pulvinar massa, finibus luctus nibh. Nulla rhoncus euismod maximus. Nam sollicitudin faucibus lectus. In iaculis elit at sagittis ultricies. Donec tincidunt efficitur enim, quis efficitur tellus sodales quis. Aenean eu est luctus, ornare elit at, dignissim dolor. Proin eleifend lacus sit amet massa pulvinar rutrum. Morbi egestas lacus tellus, vitae lobortis nisi consectetur a. Phasellus convallis libero maximus metus egestas dictum.
In mollis varius augue, et egestas libero convallis nec. Pellentesque porta odio quis ligula ornare feugiat. Aliquam vel feugiat felis. Fusce sollicitudin enim sed nibh fermentum elementum. Maecenas cursus dapibus orci eget euismod. Morbi ut consequat nisi, at commodo quam. Proin vitae tellus vel eros gravida aliquet vitae nec massa. In vulputate, massa euismod tincidunt facilisis, magna sem mattis ipsum, in posuere leo arcu eget diam. Proin vitae mi mattis, varius augue ut, euismod arcu. Nam lobortis ante quis diam cursus, et aliquam velit maximus. Mauris feugiat sem ac orci molestie, a imperdiet ligula tincidunt. Vestibulum nec lacus ultricies dui eleifend dapibus ac id lorem. Ut non libero aliquet, malesuada nulla quis, euismod erat. Nam eget felis a quam vehicula rhoncus.
Sed pharetra neque id pretium blandit. Phasellus ultrices lobortis lectus vitae fringilla. Cras eu sapien fringilla, lobortis elit fermentum, rutrum ligula. Nam efficitur placerat eros, id vestibulum risus sodales quis. Aenean quis nisl eget nibh mattis porttitor at eu urna. Praesent laoreet tincidunt luctus. Integer ligula mi, lobortis non nisi eu, tincidunt varius dui. Nulla varius tortor leo, at iaculis ex sollicitudin quis. Morbi erat risus, molestie sit amet consectetur accumsan, blandit sit amet leo.
Morbi hendrerit posuere eros, vitae fermentum tellus venenatis sed. Nulla sagittis placerat mollis. In ut magna feugiat felis dignissim aliquet a sit amet neque. Etiam egestas lacus quis risus maximus, viverra venenatis mauris egestas. Duis id tincidunt mi, in varius turpis. Suspendisse potenti. Donec arcu ligula, sollicitudin sed sollicitudin nec, viverra vel dolor.
Sed aliquam suscipit felis sit amet tempor. Praesent ac diam lobortis, auctor felis id, congue augue. Orci varius natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Nullam rhoncus lectus eget nunc malesuada convallis. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Quisque pharetra erat vel eros molestie volutpat. Nullam iaculis metus lectus, ac porttitor eros pretium vel. Etiam congue augue ac turpis pulvinar semper. Pellentesque nec diam eget metus faucibus gravida. Integer non dui at erat varius finibus sit amet hendrerit velit. Phasellus imperdiet pellentesque libero, non aliquet turpis sollicitudin ut. Proin at ante sit amet eros porttitor vehicula. Aenean mattis nulla quis euismod mattis. Suspendisse finibus, ipsum ut facilisis gravida, felis ipsum sagittis lectus, quis consequat ante ante quis nibh. Vivamus aliquam, tortor eget condimentum laoreet, lorem libero elementum orci, rutrum auctor nisi lacus et mi.
Nullam felis lacus, iaculis eleifend lacinia et, iaculis nec diam. Suspendisse potenti. Suspendisse egestas nunc sit amet ipsum euismod, nec varius magna condimentum. Integer ac tincidunt est. Sed eu varius justo. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Quisque finibus sem diam, sed laoreet urna tristique ac. Praesent pretium ut velit non facilisis. Pellentesque sit amet sem dolor. Vivamus eu ex at purus efficitur accumsan a vel ligula. Vivamus morbi.
""";
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment