Интерфейс веб-службы Grails Нет настоящих доменов

У меня есть приложение, которое является интерфейсным приложением, которое получает всю свою информацию из внешних веб-сервисов. Я хочу воссоздать это приложение, используя платформу Grails, однако случай использования немного странный. Grails управляется моделями. В этом случае у меня действительно нет таблиц базы данных. Мои данные получены в режиме реального времени через вызов веб-службы. Мой вопрос к сообществу: как бы вы реализовали следующий вариант использования:

  1. Поиск сотрудников:

    • Все данные о сотрудниках будут поступать из вызова веб-службы. Мне нужно разрешить пользователю ввести, например, "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 для непостоянных классов - более подробную информацию смотрите в документации.

Другие вопросы по тегам