Цитирование свойств в Spring Cloud Dataflow

Это кажется такой глупой проблемой, но мы пытаемся определить поток потоков данных из приложения оболочки SCDF, но у нас возникают проблемы с цитированием. Допустим, мы хотим определить фильтр с выражением SpEL, чтобы просто отфильтровать все, где вход JSON не имеет имени John Doe. SpEL будет:

payload.name != 'John Doe'

or

payload.name ne 'John Doe'

Определение потока будет таким:

stream create --name testflow --definition "http | filter --expression=<expression> | log"

Я не могу заключить ‹expression› одинарными кавычками, потому что само выражение содержит одинарные кавычки, и я не могу использовать двойные кавычки, потому что все определение потока использует их. Я не могу просто оставить кавычки, потому что тогда синтаксический анализатор оболочки запутается как из-за пробелов, так и из-за!. Неужели просто невозможно определить этот поток из приложения оболочки? Это можно сделать из приложения браузера, но у других определений потока данных есть проблемы с синтаксическим анализом.


person Greg Charles    schedule 31.01.2018    source источник


Ответы (1)


Определение выражений фильтра с помощью строковых литералов немного сложно. Мы должны заключить строковый литерал (с пробелами) в две одинарные кавычки вместо двойных кавычек.

stream create --name test --definition "http | filter --expression='!(payload.firstName==''Joe Robert'' and (payload.lastname==''Smith'' or payload.prod==''Williams''))' |log" 

Только определение заключено в двойные кавычки выше. Ссылка: https://docs.spring.io/spring-cloud-dataflow/docs/current/reference/htmlsingle/#spring-cloud-dataflow-stream-intro-dsl

person Shubha Ravikumar    schedule 31.01.2018
comment
О, теперь я это вижу. То, что выглядит как двойные кавычки вокруг Смита и Вильямса, на самом деле является удвоенными одинарными кавычками. Теперь это работает! Спасибо! - person Greg Charles; 31.01.2018
comment
Спасибо, Шубха. Мы сделали скринкаст Советы и хитрости Shell, который охватывает рассуждения и другие альтернативы. Я подумал, что тоже может быть полезно поделиться. - person Sabby Anandan; 31.01.2018