Bash/Shell - Вложенные переменные для свойства Dynamic UDeploy
Мне нужна небольшая помощь с процессом, который мы пытаемся построить, который должен быть способен динамически реагировать.
Процесс идет немного примерно так. Пользователь отправит запрос процесса в среду, отправив массив строковых значений в качестве значения времени выполнения. Процесс примет их в качестве массива в bash и перебирает их, проверяя их на соответствие заранее заданному списку строк на достоверность. После обнаружения они действительны, реагируя по-разному, исходя из того, какие значения находятся в строке.
Пример: пользователь отправляет запрос процесса со значениями "abc", "bcd", "cde", "def"
Ценности "abc", "bcd", and "def"
действительны.
Мы делаем немного манипуляций, чтобы сделать их пригодными для использования:
echo ${p:inputArray}
inputArray="${p:inputArray}"
inputArray=${inputArray//]/}
inputArray=${inputArray//[/}
inputArray=${inputArray//,/}
inputArray=( "${inputArray[@],,}" )
Затем выполните цикл по каждому значению и отреагируйте:
for inputValue in $inputArray; do
if [[ "${validInputArray[@]}" =~ "${inputValue}" ]]; then
// Check if value is the outlier case "A"
// Or if the value is normal (but multiple) case "B"
// If case "B" then we'll build a variable for it
// It should be something like ${p:environment/$inputValue.action}
Это, в идеале, даст мне значение ${p:environment/abc.action}, например. Но это не так. Это дает мне строку. У меня нет возможности оценить динамически созданный запрос свойства, так как все свойства оцениваются при инициализации, а не на лету.
Мы можем справиться с этим методом "case" - но это немного уродливо, и будет только уродливее, когда наше количество допустимых входных данных будет расти.
1 ответ
Вместо того, чтобы отправлять ему массив значений, вы можете настроить UCD, чтобы запрашивать их для определенных значений. Вы можете сделать это в процессе подачи заявки. Таким образом, когда пользователь запускает развертывание, нет сомнений в правильности ввода.
На странице процесса приложения нажмите ссылку Свойства процесса приложения.
Оттуда вы можете настроить его так, чтобы он требовал определенного шаблона (проверяется с помощью регулярных выражений) или явных значений из выпадающего списка, необработанного текста, dateTime и т. Д. Здесь я настроил свойство множественного выбора, чтобы разрешить конкретную JVM максимальные значения кучи. Ограничивая это конкретными значениями, вы можете избежать опечаток и неудачных развертываний.
После настройки при запуске процесса вам предоставляется свойство в интерфейсе: