Глобальная функция работает в режиме предварительного просмотра, но не работает при запуске кода - PullRequest
0 голосов
/ 15 апреля 2019

У меня есть глобальная функция с именем 'finalPrice', которая определена в моем файле configuration.xml.Функция принимает значение - делает что-то с ним - и возвращает окончательное значение.Я ссылаюсь на функцию изнутри DataWeave.Когда я нажимаю «предварительный просмотр», я вижу правильный вывод в окне предварительного просмотра.Однако, когда я запускаю его, я получаю сообщение об ошибке:


Сообщение: исключение при выполнении:

Нет переменной с именем 'finalPrice'.


IЯ запустил код на моей локальной машине и в CloudHub, и я получил тот же результат

Код XML:

<configuration doc:name="Configuration">
        <expression-language>
            <global-functions>
                <!-- This function is called by the 'Validate and Transform' dataweave component in the 'main' flow-->
                def finalPrice(incoming_value) 
                {
                    import java.lang.String;
                    import java.math.RoundingMode;

                    // Do Stuff

                    return strFinalNumber;
                }
            </global-functions>
        </expression-language>
</configuration>

Код DataWeave:

//Refer to "finalPrice" Global Function in the main.xml configuration file
DB_FINL_PRCE: "field_missing" when payload01.DB_FINL_PRCE == "" otherwise finalPrice(payload01.DB_FINL_PRCE)

Любая помощь приветствуется

1 Ответ

2 голосов
/ 15 апреля 2019

Это проблема с комментариями в глобальных функциях. Поэтому удалите или измените строку:

 <!-- This function is called by the 'Validate and Transform' dataweave component in the 'main' flow-->

и просто иметь:

<configuration doc:name="Configuration">
            <expression-language>
                <global-functions>
                    def finalPrice(incoming_value) 
                    {
                        import java.lang.String;
                        import java.math.RoundingMode;

                        // Do Stuff

                        return strFinalNumber;
                    }
                </global-functions>
            </expression-language>
    </configuration>

Или измените ваши комментарии на //

<configuration doc:name="Configuration">
        <expression-language autoResolveVariables="true">
            <global-functions>
                //This function is called by the 'Validate and Transform' dataweave component in the 'main' flow
                def finalPrice(incoming_value) 
                {

                    // Do Stuff

                    return "somethingelse";
                }
            </global-functions>
        </expression-language>
</configuration>
...