Атрибут ресурса DataWeave в Mule не принимает переменную потока

Моя конфигурация кода dataweave xml выглядит следующим образом:

<dw:transform-message doc:name="Transform Message">
    <dw:set-payload  resource="#[flowVars['sample']]" />
 </dw:transform-message>

где sample - это переменная потока, которая содержит путь к файлу .dwl, который имеет фактическую логику преобразования.

<set-variable doc:name="Variable" value="file:D:/Transformer/sample.dwl" variableName="sample"/>

Ошибка, которую я вижу при развертывании приложения, выглядит следующим образом:

org.mule.module.launcher.DeploymentInitException: FileNotFoundException: class path resource [#[flowVars['sample']]] cannot be opened because it does not exist
at org.mule.module.launcher.application.DefaultMuleApplication.init(DefaultMuleApplication.java:197) ~[mule-module-launcher-3.7.3.jar:3.7.3]
at org.mule.module.launcher.artifact.ArtifactWrapper$2.execute(ArtifactWrapper.java:62) ~[mule-module-launcher-3.7.3.jar:3.7.3]
at org.mule.module.launcher.artifact.ArtifactWrapper.executeWithinArtifactClassLoader(ArtifactWrapper.java:129) ~[mule-module-launcher-3.7.3.jar:3.7.3]
at org.mule.module.launcher.artifact.ArtifactWrapper.init(ArtifactWrapper.java:57) ~[mule-module-launcher-3.7.3.jar:3.7.3]
at org.mule.module.launcher.DefaultArtifactDeployer.deploy(DefaultArtifactDeployer.java:25) ~[mule-module-launcher-3.7.3.jar:3.7.3]
at org.mule.module.launcher.DefaultArchiveDeployer.guardedDeploy(DefaultArchiveDeployer.java:324) ~[mule-module-launcher-3.7.3.jar:3.7.3]
at org.mule.module.launcher.DefaultArchiveDeployer.deployArtifact(DefaultArchiveDeployer.java:345) ~[mule-module-launcher-3.7.3.jar:3.7.3]
at org.mule.module.launcher.DefaultArchiveDeployer.deployPackagedArtifact(DefaultArchiveDeployer.java:163) ~[mule-module-launcher-3.7.3.jar:3.7.3]
at org.mule.module.launcher.DefaultArchiveDeployer.deployPackagedArtifact(DefaultArchiveDeployer.java:268) ~[mule-module-launcher-3.7.3.jar:3.7.3]
at org.mule.module.launcher.DefaultArchiveDeployer.deployPackagedArtifact(DefaultArchiveDeployer.java:83) ~[mule-module-launcher-3.7.3.jar:3.7.3]
at org.mule.module.launcher.DeploymentDirectoryWatcher.deployPackedApps(DeploymentDirectoryWatcher.java:275) ~[mule-module-launcher-3.7.3.jar:3.7.3]
at org.mule.module.launcher.DeploymentDirectoryWatcher.start(DeploymentDirectoryWatcher.java:150) ~[mule-module-launcher-3.7.3.jar:3.7.3]
at org.mule.module.launcher.MuleDeploymentService.start(MuleDeploymentService.java:104) ~[mule-module-launcher-3.7.3.jar:3.7.3]
at org.mule.module.launcher.MuleContainer.start(MuleContainer.java:170) ~[mule-module-launcher-3.7.3.jar:3.7.3]
at org.mule.tooling.server.application.ApplicationDeployer.main(ApplicationDeployer.java:15) ~[tooling-support-3.7.3.jar:?]
Caused by: org.mule.api.config.ConfigurationException: IOException parsing XML document from URL [file:/C:/Users/Satyakeerthika_Ch/AnypointStudio/workspaceLatest/.mule/apps/sample/sample.xml]; nested exception is java.io.FileNotFoundException: class path resource [#[flowVars['sample']]] cannot be opened because it does not exist (org.mule.api.lifecycle.InitialisationException) (org.mule.api.config.ConfigurationException)
at org.mule.config.builders.AbstractConfigurationBuilder.configure(AbstractConfigurationBuilder.java:49) ~[mule-core-3.7.3.jar:3.7.3]
at org.mule.config.builders.AbstractResourceConfigurationBuilder.configure(AbstractResourceConfigurationBuilder.java:69) ~[mule-core-3.7.3.jar:3.7.3]
at org.mule.context.DefaultMuleContextFactory$1.configure(DefaultMuleContextFactory.java:89) ~[mule-core-3.7.3.jar:3.7.3]
at org.mule.context.DefaultMuleContextFactory.doCreateMuleContext(DefaultMuleContextFactory.java:222) ~[mule-core-3.7.3.jar:3.7.3]
at org.mule.context.DefaultMuleContextFactory.createMuleContext(DefaultMuleContextFactory.java:81) ~[mule-core-3.7.3.jar:3.7.3]
at org.mule.module.launcher.application.DefaultMuleApplication.init(DefaultMuleApplication.java:188) ~[mule-module-launcher-3.7.3.jar:3.7.3]
... 14 more

Может ли кто-нибудь помочь мне прочитать переменную в ресурсе?


person keerthi ch    schedule 06.01.2016    source источник


Ответы (2)


Вы не можете сделать это таким образом, но вы можете использовать функцию MEL для оценки сценариев dataweave внутри set-payload.

#[dw(<dw-script-string>)]
#[dw(<dw-script-string>, <out-content-type>)]

Если вы не укажете тип содержимого, по умолчанию будет java.

Итак, в итоге получилось бы:

<set-payload value="#[dw(<dw-script-string>)]" doc:name="Set Payload"/>

Ссылка на документы

person Shoki    schedule 06.01.2016
comment
Спасибо за ответ. Я пробовал использовать предложенную вами функцию dw (). Значение в установленной полезной нагрузке, которую я использую, выглядит следующим образом: # [dw (payload map {First: $ .First Name, number: $ .Age, Last: $. Last Name, Date: $ .DOB}, application / csv )] Но при попытке сохранить xml возникает некоторая ошибка. [Ошибка: неизвестный класс или недопустимый оператор: org.mule.mvel2.ParserContext@2689a2] [Рядом: {... dw (карта полезной нагрузки {....}] ^ [Line1 Column16] - person keerthi ch; 07.01.2016
comment
Сейчас он работает. Я сделал сценарий в виде строки. Могу ли я не добавлять директивы ввода и вывода перед полезной нагрузкой? Потому что, когда я пытаюсь добавить, он выдает ошибки. - person keerthi ch; 07.01.2016
comment
Ошибка: недопустимый ввод 0%, ожидаемая версияMinor, wsnoeol или eol - person keerthi ch; 07.01.2016

У меня также возникла та же проблема в моей студии Anypoint с Mule 3.9.0. Мне пришлось исправить библиотеку java в моей студии Anypoint, используя приведенное ниже руководство.

  1. щелкните правой кнопкой мыши проект
  2. выберите свойства из контекстного меню
  3. на странице свойств проекта выберите путь сборки java
  4. в пути сборки java щелкните библиотеки
  5. выберите Добавить библиотеку -> щелкните Системную библиотеку JRE
  6. выберите альтернативный JRE и перейдите к JDK, который вы хотите добавить в проект.

это должно решить вашу проблему

person Afeez Olawale    schedule 10.10.2019