Вызов метода groovy в Mule 4

#groovy #mule4

#заводной #mule4

Вопрос:

Я создал полный проект groovy с использованием JPA repo для операций сохранения данных. Теперь я хочу вызвать методы из скрипта в Mule 4, ничего не меняя в проекте groovy.

например. CustomerService.groovy (псевдокод)

 import com.example.dao.CustomerDao.groovy
... other imports...

@Service
class CustomerService {
@Autowired
CustomerDao cDao

@Transactional
publid Customer createCustomer(Customer customer) {
    return cDao.save(customer)
}

... other methods...
}
 

CustomerDAO.groovy

 import spring.JPA  (the original import path may vary)

@Repository
class CustomerDao implements JPARepository<Customer, Integer> {
}
 

Этот проект работает в Mule 3. В Mule 3 у нас есть компонент Invoke, который можно использовать для вызова методов из скрипта groovy. Мул 4 компонент Invoke совместим только с Java, а не с groovy.

Компонент «Execute» модуля сценариев может вызывать сценарий groovy, но не уверен, как вызвать этот метод. Есть ли какие-либо обходные пути для этого в Mule 4?

На данный момент возникли проблемы

  1. В компоненте ‘Execute‘, если я импортирую другой файл, я получаю сообщение об ошибке следующим образом
 Unalbe to resolve class com.example.dao.CustomerDao
@ line 3 column 1,
import com.example.dao.CustomerDao.groovy
^
 

Найдено решение аналогичной проблемы https://help.mulesoft.com/s/article/Compilation-exception-in-Mule4-x-when-using-Groovy-script-with-Import-statement но не в состоянии это реализовать.

В статье у разработчика возникла проблема с зависимостью apache, которую он / она мог получить из репозитория mvn. Я пытаюсь импортировать файл groovy, который я разработал. Поэтому невозможно добавить его в зависимость. Я попытался добавить проект groovy в свой локальный репозиторий и извлечь его, но это не сработало. Более того, когда это приложение Mule 4 будет развернуто на CloudHub, у него возникнет проблема, поскольку оно не сможет получить доступ к моему локальному репозиторию.

Нужно решение для добавления проекта spring-groovy в Mule 4

Спасибо 🙂

Комментарии:

1. Если у вас это работает в mule3, я думаю, было бы более полезно, если бы вы добавили это к вопросу, а также то, что вы пробовали с mule4 и как это не удалось.

2. @cfrick обновили вопрос. Пожалуйста, изучите это.

3. Почему вы не можете реализовать решение, описанное в статье KB? Вы не предоставили никаких подробностей об этом.

4. @aled В статье у разработчика возникла проблема с зависимостью от apache, которую он / она мог получить из репозитория mvn. Я пытаюсь импортировать файл groovy, который я разработал. Поэтому невозможно добавить его в зависимость.

5. Импортируемый скрипт Groovy находится в том же приложении? Используете ли вы какой-либо плагин Groovy Maven?

Ответ №1:

Проблема в том, что сценарий Groovy, выполняемый модулем сценариев, пытается импортировать класс, которого нет в пути к классу Java. Таким образом, он выдает ошибку. Класс находится в другом исходном файле Groovy. Что вы можете сделать, так это скомпилировать Groovy-код в реальный Java-класс. Вы можете попробовать один из методов, описанных в документации Groovy, для интеграции плагина Maven с вашим приложением Mule pom.xml досье.

Другой альтернативой, если у вас большое количество классов Groovy, является создание отдельного проекта для создания библиотеки Jar, затем используйте решение из упомянутой вами статьи KB.