Интерфейс веб-службы Grails Нет настоящих доменов
У меня есть приложение, которое является интерфейсным приложением, которое получает всю свою информацию из внешних веб-сервисов. Я хочу воссоздать это приложение, используя платформу Grails, однако случай использования немного странный. Grails управляется моделями. В этом случае у меня действительно нет таблиц базы данных. Мои данные получены в режиме реального времени через вызов веб-службы. Мой вопрос к сообществу: как бы вы реализовали следующий вариант использования:
Поиск сотрудников:
- Все данные о сотрудниках будут поступать из вызова веб-службы. Мне нужно разрешить пользователю ввести, например, "EmployeeID" и выбрать "Клиент".
- Затем приложение Grails отправляет запрос веб-службы в соответствующий веб-сервис и возвращает результаты.
ЗДЕСЬ НЕИЗВЕСТНАЯ ЧАСТЬ: Как лучше всего взять эти результаты и вписать их в модель Грааля? Другими словами, мне нужно отобразить таблицу данных результатов (Результаты поиска). Сетка должна работать как действие списка Grails, позволяя пользователю сортировать по определенным столбцам, нумерации страниц и т. Д.
- Я должен был бы думать, что этот вариант использования является распространенным? Каков наилучший способ положить такой проект? Должен ли я использовать внешние библиотеки javaScript, такие как Dojo или JQuery, для обеспечения функциональности сетки?
- Производительность также является проблемой для подхода
1 ответ
Не существует единого способа создания приложений Grails. Часто приложения используют доменные классы, которые обеспечивают легкий доступ к данным в таблицах реляционной базы данных, но вы можете легко переключиться на хранилище данных NoSQL или даже не использовать прямое сохранение, как в вашем приложении.
Простой ответ на ваш вопрос заключается в том, что вы должны просто создать непостоянные классы данных в src/groovy
а также src/java
которые представляют данные, с которыми вы работаете, из вызовов веб-службы. Вы по-прежнему можете использовать Grails для его контроллеров и GSP, библиотек тегов, сервисов (конечно, не транзакционных, поскольку не будет доступа к базе данных), а также воспользоваться многими доступными плагинами.
Вам не нужно много делать, чтобы использовать стандартные сгенерированные контроллеры и GSP для отображения данных с сортировкой и разбиением на страницы. Сценарии генерации ожидают доменные классы, но вы можете немного обмануть, чтобы получить сгенерированные (и, конечно, вы всегда можете кодировать вещи вручную). Например, если у вас есть класс Person в src / groovy / com / yourcompany, переместите его в grails-app/domain
:
package com.yourcompany
class Person {
String firstName
String lastName
}
Тогда беги grails generate-all com.yourcompany.Person
и он создаст контроллер и его модульное тестирование, а также GSP. Теперь вернитесь к src/groovy
и используйте его как хотите. GSP не ожидают классов доменов, они просто ожидают отдельных экземпляров классов или списков экземпляров.
Вам нужно будет преобразовать вызовы контроллера в такие вещи, как person.save()
вместо этого использовать ваши веб-сервисы, но большая часть кода должна быть многоразовой.
Одна вещь, которой вы можете воспользоваться, это проверка. Вы можете комментировать свои классы с @Validateable
и определить ограничения, чтобы воспользоваться преимуществами валидации Grails для непостоянных классов - более подробную информацию смотрите в документации.