diff --git a/CHANGELOG.md b/CHANGELOG.md index d06a5a4..e23b748 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -6,6 +6,10 @@ All notable changes to [@bpmn-io/variable-resolver](https://github.com/bpmn-io/v ___Note:__ Yet to be released changes appear here._ +## 1.3.5 + +* `FIX`: do not try to find unresolved variables of a broken expression ([#50](https://github.com/bpmn-io/variable-resolver/issues/50)) + ## 1.3.4 * `FIX`: preserve variables with same name but different scopes ([#56](https://github.com/bpmn-io/variable-resolver/pull/56)) diff --git a/lib/zeebe/util/feelUtility.js b/lib/zeebe/util/feelUtility.js index 697341f..b42ecc5 100644 --- a/lib/zeebe/util/feelUtility.js +++ b/lib/zeebe/util/feelUtility.js @@ -141,10 +141,17 @@ export function getResultContext(expression, variables = {}) { }); const contextualParser = parser.configure({ - contextTracker: customContextTracker + contextTracker: customContextTracker, + strict: true }); - contextualParser.parse(expression); + try { + contextualParser.parse(expression); + } catch (error) { + + // bail out in case of an error + return latestVariables; + } return latestVariables; } @@ -424,4 +431,4 @@ export function getElementNamesToRemove(moddleElement, inputOutput) { } return namesToFilter; -} \ No newline at end of file +} diff --git a/test/fixtures/zeebe/long-broken-expression.bpmn b/test/fixtures/zeebe/long-broken-expression.bpmn new file mode 100644 index 0000000..fadd8da --- /dev/null +++ b/test/fixtures/zeebe/long-broken-expression.bpmn @@ -0,0 +1,33 @@ + + + + + + + + + + + Flow_1imcl82 + + + + Flow_1imcl82 + + + + + + + + + + + + + + + + + + diff --git a/test/spec/zeebe/ZeebeVariableResolver.spec.js b/test/spec/zeebe/ZeebeVariableResolver.spec.js index b797f0d..60f0de5 100644 --- a/test/spec/zeebe/ZeebeVariableResolver.spec.js +++ b/test/spec/zeebe/ZeebeVariableResolver.spec.js @@ -13,6 +13,7 @@ import emptyXML from 'test/fixtures/zeebe/empty.bpmn'; import complexXML from 'test/fixtures/zeebe/complex.bpmn'; import connectorsXML from 'test/fixtures/zeebe/connectors.bpmn'; import ioMappingsXML from 'test/fixtures/zeebe/ioMappings.bpmn'; +import longBrokenExpressionXML from 'test/fixtures/zeebe/long-broken-expression.bpmn'; import VariableProvider from 'lib/VariableProvider'; import { getInputOutput } from '../../../lib/base/util/ExtensionElementsUtil'; @@ -1039,6 +1040,37 @@ describe('ZeebeVariableResolver', function() { }); + + describe('parsing', function() { + + beforeEach(bootstrapModeler(longBrokenExpressionXML, { + container, + additionalModules: [ + ZeebeVariableResolverModule + ], + moddleExtensions: { + zeebe: ZeebeModdle + } + })); + + + it('should NOT error on a long broken expression', inject(async function(elementRegistry, variableResolver) { + + // given + const task = elementRegistry.get('Task_1'); + const bo = getBusinessObject(task); + const input = getInputOutput(bo).inputParameters[1]; + + // when + const variables = await variableResolver.getVariablesForElement(bo, input); + + // then + expect(variables).to.variableEqual([ + { name: 'target' } + ]); + })); + }); + }); // helpers //////////////////////