1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/polarloves-Polar-idea

Присоединиться к Gitlife
Откройте для себя и примите участие в публичных проектах с открытым исходным кодом с участием более 10 миллионов разработчиков. Приватные репозитории также полностью бесплатны :)
Присоединиться бесплатно
В этом репозитории не указан файл с открытой лицензией (LICENSE). При использовании обратитесь к конкретному описанию проекта и его зависимостям в коде.
Клонировать/Скачать
Внести вклад в разработку кода
Синхронизировать код
Отмена
Подсказка: Поскольку Git не поддерживает пустые директории, создание директории приведёт к созданию пустого файла .keep.
Loading...
README.md

1. Установка и развёртывание

1. Введение

  • Платформа использует Maven в качестве инструмента для управления зависимостями, проект разделён на несколько модулей, между которыми существуют зависимости. Каждый модуль упакован в файл .jar и добавлен через файл pom.xml. В процессе разработки общие модули можно разместить в Maven-библиотеке без необходимости загружать их исходный код.
  • Процесс установки следует следующим правилам: сначала устанавливаются зависимые модули, а затем — модуль проекта, который является веб-приложением и может быть развёрнут на сервере Tomcat.

2. Скрипт базы данных

  • Скрипт базы данных находится в модуле webapp, его точное местоположение: /src/main/resources/mysql.sql.
  • На данный момент существует только скрипт для MySQL, остальные скрипты можно экспортировать с помощью Navicat.

3. Конфигурационный файл

3.1. База данных и другая конфигурация

3.1.1. Конфигурация источника данных

Конфигурационный файл базы данных расположен в модуле webapp и находится по адресу: /src/main/resources/config/config.properties. Если используется база данных MySQL, необходимо изменить файл /src/main/resources/config/config.properties, где нужно изменить следующее содержимое:

<properties>
   <!-- Устанавливаем тип базы данных, поддерживаемые типы: mysql, sqlServer, oracle -->
     <property name="polar_dataBaseType" value="mysql" />
</properties>

3.1.2. Конфигурация страницы ошибки

В платформе используется унифицированный JSON для возврата данных. В контроллере используются методы для выброса исключений и перенаправления на разные страницы ошибок. Исключение содержит «код значения», который можно использовать для указания на определённую страницу. Путь к конфигурационному файлу: /src/main/resources/config/mapping.properties, ключ называется MP_код_значения, а его конфигурация по умолчанию выглядит следующим образом:

Key Value Объяснение
DEFAULT /view/sys/error.jsp Страница ошибки по умолчанию
MP_000001 /view/sys/error.jsp Нет
MP_000008 /view/sys/login.jsp Нет
MP_000009 /view/sys/error.jsp Нет
MP_000010 /view/sys/login.jsp Нет

3.1.3. Конфигурация отображения текста ошибки

Принцип тот же, что и выше, путь к файлу конфигурации: /src/main/resources/config/msg.properties, а ключ называется MSG_код_значения.

3.2. Настройка кэша

Платформа имеет два встроенных метода кэширования: Redis и Ehcache. Кэширование в основном используется для следующих целей:

  • Spring-интерфейс кэширует данные, полученные в результате запросов.
  • Shiro кэширует информацию о пользователях, учётных данных и разрешениях.

3.2.1. Переключение кэша

При переключении на другой метод кэширования, например, на Redis, необходимо внести изменения в файл spring-context.xml и импортировать файл spring-jedis.xml. Способ переключения кэша следующий:

3.2.1.1. Ehcache (Spring) кэширование

Файл конфигурации находится по адресу /src/main/resources/xmls/spring-context.xml, убедитесь, что следующий код работает:

<cache:annotation-driven cache-manager="ehCacheManager"/>  
<bean id="ehCacheManager"  class="org.springframework.cache.ehcache.EhCacheCacheManager">
   <property name="cacheManager" ref="ehCacheManagerFactory"></property>
</bean> 
3.2.1.2. Redis (Spring) кэширование

Файл конфигурации расположен по адресу /src/main/resources/xmls/spring-context.xml, убедитесь, что следующий код работает:

<cache:annotation-driven cache-manager="redisSpringCacheManager"/> 
3.2.1.3. Redis (Shiro) кэширование

Измените файл spring-shiro.xml, чтобы убедиться, что следующий код работает:

<bean id="shiroCacheManager" class="polar.island.core.cache.JedisShiroCacheManager"/>
3.2.1.4. Ehcache (Shiro) кэширование

Измените файл spring-shiro.xml, чтобы убедиться, что следующий код работает:

<bean id="shiroCacheManager" class="polar.island.security.cache.ShiroCacheManager">
   <property name="cacheManagerConfigFile"  value="classpath:cache/shiroCache.xml" />
</bean>  

3.3. Настройка рабочего процесса

В качестве механизма рабочего процесса в платформе используется Activiti версии 6.0. Модуль называется activiti, и проект представляет собой модульный проект, позволяющий загружать и выгружать рабочий процесс в любое время. Для этого достаточно изменить файл pom.xml модуля webapp и добавить или удалить зависимость от activiti. После удаления рекомендуется скрыть меню, связанное с рабочим процессом.

3.4. Настройка интерфейса API

В платформе используется Swagger2 для создания документации по интерфейсу. После официального выпуска проекта рекомендуется отключить онлайн-документацию, выполнив следующие действия:

  • Измените файл spring-MVC.xml, закомментируйте следующие две строки:
<context:component-scan base-package="springfox"/>
<bean class="polar.island.web.api.DocConfig" />
  • Измените класс polar.island.web.api.DocConfig.java, закомментировав аннотацию класса.
    PS: Если вы хотите полностью удалить зависимость swagger, вам необходимо изменить корневой файл pom.xml и удалить зависимость swagger. При этом необходимо сохранить зависимость от аннотаций swagger, чтобы избежать ошибок из-за отсутствия зависимостей в проекте. 4.2. Распределённая версия

4.2.1. Зависимости

4.2.2. Модуль

Название Значение
parent Платформа, родительский конфигурационный файл
core Базовый модуль платформы
inlay Модуль с внутренними функциями платформы: управление пользователями, организациями и словарями
flow Модуль для работы с потоками
components Компонентный модуль
web Проектный вход, включает некоторые страницы, JS и CSS
Подмодули core
Название Значение
common Базовые классы и другие общие элементы
front Поддержка веб-интерфейса
Подмодули components
Название Значение
file-mongo Хранение файлов с использованием MongoDB
mongodb-service Поддержка MongoDB
mybatis-service Поддержка MyBatis
mybatis Основной модуль MyBatis
payment Платёжный модуль
rocketmq Модуль очереди сообщений
shiro Модуль авторизации Shiro
Подмодули flow
Название Значение
flow-joggle Интерфейс и сущности для рабочих процессов
flow-service Реализация сервиса рабочего процесса, включая хранение данных в базе данных. Рабочий процесс поддерживает только SQL базы данных, не поддерживает MongoDB
flow-web Переходы страниц и связанные с интерфейсом классы
Подмодули inlay
Название Значение
inlay-joggle Интерфейсы и сущности внутренних модулей
inlay-service Сервисные реализации внутренних модулей, включая скрипты для публикации сервисов
inlay-service-mongodb Сервисная реализация внутренних модулей с использованием MongoDB для слоя DAO
inlay-web Страницы внутренних модулей и связанные с ними классы интерфейса

4.2.3. Порядок установки

parent-->core-->inlay,flow-->web

5. Развёртывание

5.1. Обычная версия

После завершения установки проекта можно запустить проект через Tomcat в среде IDEA или развернуть WAR-файл из каталога webapp/target в каталог Tomcat.

5.2. Распределённая версия

Развёртывание сервисов

После установки проекта в каталоге XX-service/target будет создан файл XX.tar.gz, который является пакетом развёртывания для Linux-систем. Этот файл необходимо загрузить на сервер Linux и распаковать. Затем выполнить команду: sh service.sh start, чтобы запустить сервис.

Сервис также поддерживает следующие команды:

sh service.sh stop — остановить сервис
sh service.sh status — проверить статус сервиса
sh service.sh restart — перезапустить сервис

Также поддерживается развёртывание сервиса в Windows:

  • Скопируйте содержимое каталога XX-service/target/deploy на сервер Windows.
  • Запустите командную строку в этом каталоге.
  • Выполните команду: java -jar xx-service.jar.

Развёртывание веб-проекта

После установки проекта его можно запустить через Tomcat в среде IDEA или развернуть WAR-файл из каталога webapp/target в каталог Tomcat.

Часть II. Бизнес-описание

1. Управление словарями

В различных проектах словари широко используются для выпадающих списков. В этой структуре словари разделены по группам, и они используют кэширование. В JSP предоставляются теги, которые позволяют использовать следующие формы для получения данных словаря:

  • ${fns:getDict(groupId)} — возвращает коллекцию;
  • ${fns:getDictJson(groupId)} — возвращает данные JSON.

Таблица t_polar_dict:

Поле Имя Описание
id Номер Идентификатор данных
text Текст Текст, отображаемый в выпадающем списке
value Значение Истинные данные словаря
remark Примечание Примечание к словарной статье
orderNum Порядковый номер Порядковый номер в группе
groupId Групповой идентификатор Идентификатор группы словаря
groupName Название группы Название группы словаря

2. Управление древовидной структурой

Управление древовидными структурами похоже на управление словарями. Оно также основано на групповых идентификаторах. Предоставляются два способа вычисления отношений между родителями и детьми: кодирование и номера родителей и детей. На странице JSP можно использовать следующие способы для получения данных древовидной структуры:

  • ${fns:getTree(groupId)} — возвращает коллекцию;
  • ${fns:getTreeJson(groupId)} — возвращает данные JSON.

Кодирование: Данные древовидной структуры, использующие кодирование, вычисляют отношения между родителями и детьми на основе кода в древовидной структуре. Код в древовидной структуре состоит из шести цифр, где каждые две цифры представляют уровень. «00» обозначает корневой узел. Пример простой области кодирования:

Код Область Родительская область Уровень
000000 Китай Нет 0
010000 Шаньдун Китай 1
020000 Шаньси Китай 1
020100 Тайюань Шаньси 2
010100 Цзинань Шаньдун 2
010101 Новый район Цзинань 3
010102 Центральный район Цзинань 3
010103 Нижний район Цзинань 3

Номера родителей и детей: Этот метод может использоваться для сложных древовидных структур. Он использует номера родителей и детей для определения отношений уровней. Значения сортируются по возрастанию.

Таблица t_polar_tree:

Поле Имя Описание
id Номер Идентификатор
text Текст Отображаемый текст в древовидной структуре
value Значение Данные древовидной структуры
textAlias Псевдоним Псевдоним древовидной структуры
parentId Номер родителя Номер родительского узла
groupId Групповой идентификатор Идентификатор группы древовидной структуры
groupName Название группы Название группы древовидной структуры
textId Номер Используется для вычисления отношений между родителями и детьми
type Тип 1 — кодирование, 2 — номера родителей и детей

Ресурсы в платформе используются для динамического подключения к базе данных. Через них можно контролировать доступ к определённым интерфейсам, устанавливая права доступа к путям. Пользователи без соответствующих прав не смогут получить доступ к этим путям.

Права доступа и пути связаны через кэш. Если вносятся изменения, необходимо нажать кнопку «Перезагрузить ресурсы». В случае балансировки нагрузки рекомендуется использовать Redis для организации очередей и распределения задач между машинами.

7. Шаблоны меню

Для разных пользователей могут быть предусмотрены разные меню. Шаблоны меню позволяют настраивать различные меню для пользователей. Если пользователь не имеет назначенного меню, он будет использовать стандартное меню по умолчанию.

В шаблонах меню можно связать конкретное меню с пользователем, выбрав опцию «Назначить меню» в меню шаблона.

8. Управление меню

Меню на платформе представляют собой иерархическую структуру. Здесь можно управлять различными аспектами меню, включая значки, названия, пути доступа и их видимость. Значки меню создаются с использованием библиотеки иконок Font-Awesome.

9. Управление пользователями

Система предоставляет инструменты для управления пользователями. Можно добавлять новых пользователей, назначать им роли, исключать активных пользователей из системы, настраивать меню и включать или отключать учётные записи.

  • Добавление пользователя: после добавления нового пользователя ему не предоставляются никакие права. После этого необходимо настроить его роль.
  • Назначение ролей: здесь можно определить роли для каждого пользователя. После назначения роли пользователь получает соответствующие права. Если пользователь ещё не вошёл в систему, информация о правах не сохраняется в кэше. В этом случае нет необходимости очищать кэш прав пользователя. Однако если пользователь уже вошёл в систему, кэш прав должен быть очищен.
  • Отключение/включение пользователей: отключённый пользователь не может войти в систему. Активные пользователи будут автоматически отключены. Включённые пользователи могут входить в систему.
  • Настройка меню: здесь можно задать меню для административного интерфейса пользователя. Перед настройкой необходимо очистить кэш меню.
  • Управление активными пользователями: можно просматривать информацию о количестве входов в систему для каждой учётной записи, а также получать данные о сеансах. Также можно принудительно отключить активных пользователей.

10. Управление организациями

Пользователи могут принадлежать к определённым организациям. Организации имеют свои уникальные права доступа. Когда пользователь присоединяется к организации, он также получает все права этой организации.

Организации организованы в виде иерархии. Подразделения не наследуют права от родительских организаций.

11. Журнал доступа

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

По умолчанию интерфейсы не регистрируют обращения. Чтобы включить регистрацию, необходимо добавить аннотацию @ErrorMsg к интерфейсу. Параметр tag указывает на название интерфейса, type определяет тип возвращаемых данных при возникновении ошибки, а writeLogs указывает, следует ли записывать журнал (по умолчанию — да).

12. Группы операций

Группы операций предназначены для управления процессами. Они группируют пользователей и предоставляют им доступ к операциям в соответствии с их принадлежностью к группе.

13. Управление формами

Управление формами связано с процессами и включает настройку и редактирование форм для каждого действия. В процессе необходимо связать операции с соответствующими формами.

14. Управление процессами

  1. Для управления процессами используется движок рабочего процесса Activiti. Он работает на основе стандарта BPMN 2.0 и не поддерживает стандарт BPMN 1.0. Поддерживается онлайн-редактирование процессов. После завершения редактирования процесс должен быть опубликован для запуска.

  2. В графическом представлении процесса каждый шаг требует участия пользователя и ввода данных. Необходимо связать шаги с формами.

  3. Символы ${start.xx} и ${current.xx} используются для обозначения параметров в начале процесса и данных, введённых во время текущего шага соответственно.

  4. Если процесс только начинается, данные обозначаются как ${xx}.

15. Генератор кода

Генератор кода поддерживает три типа форм: одиночные таблицы, родительско-дочерние таблицы и древовидные структуры.

  • Одиночные таблицы: содержат данные одной таблицы. Используются для простых бизнес-логик. Пример — модуль словаря, где каждая запись связана с другой таблицей.

  • Родительско-дочерние таблицы: состоят из двух частей — родительской и дочерней таблиц. Например, личная информация в резюме является родительской, а опыт работы и проекты — дочерними таблицами. На платформе одна родительская таблица может иметь несколько дочерних таблиц.

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

При использовании генератора кода необходимо выполнить следующие шаги:

  1. Проектирование базы данных: имена таблиц не должны начинаться с «t_polar» или «act_», так как это зарезервированные имена. В таблицах следует добавлять комментарии к полям.

  2. Импорт таблиц: платформа не позволяет создавать новые таблицы, поэтому необходимо импортировать их из базы данных.

  3. Изменение параметров таблицы: после импорта таблиц можно настроить параметры.

  4. Изменение параметров столбцов: после настройки параметров таблицы можно изменить параметры столбцов, такие как добавление, удаление и изменение порядка. Некоторые типы столбцов имеют дополнительные параметры, которые нельзя оставить пустыми.

  5. Генерация кода: после завершения настройки можно сгенерировать код. Путь к сгенерированному коду указан в файле /src/main/resources/config/config.properties в свойстве CODE_PATH. Для родительско-дочерних таблиц сначала необходимо создать код для родительской таблицы.

  6. Создание разрешений: после генерации кода система автоматически создаёт разрешения для администратора.

  7. Настройка меню: после создания кода необходимо настроить меню в соответствии с шаблонами меню и управлением меню.

  8. Перезапуск сервиса: после выполнения всех шагов сервис можно перезапустить, чтобы увидеть новые функции. Перевод текста на русский язык:

Таблица:

@Dao注解内的value值 Имя класса сущности
Значение Имя класса сущности

Таблица:

Имя класса сущности Имя класса сущности
Имя класса сущности Имя класса сущности

Таблица:

Конфигурация Mapper
Название папки
Название файла

Таблица:

Проверка способа Проверка способа
Layui, bootstrapTable Layui, bootstrapTable
Шаблон списка Шаблон списка
Наименование страницы списка Наименование страницы списка
Наименование редактирующей страницы Наименование редактирующей страницы

15.1.2. Таблица обзора параметров столбцов

Поле Значение
Имя поля Имя поля в базе данных
Имя столбца Java Имя столбца в классе сущности
Китайское имя Китайское название поля
Комментарий Комментарий к полю
Тип поля Тип поля
Способ сопоставления Способ сопоставления поля при запросе списка
Расширенные параметры См. таблицу расширенных параметров
Отображение Отображается ли поле на странице запроса и списка, отображается ли в списке запросов, возвращается ли при запросе списка, разрешено ли редактирование в строке
Проверка Способ проверки данных поля при добавлении или редактировании

15.1.3. Таблица расширенных параметров

Таблица:

Имя поля Обязательное Примечание
Однострочный текст, целое число, число с плавающей точкой, большое целое число
maxlength Нет Максимальная длина текстового поля по умолчанию составляет 50. Если указано -1, максимальная длина не ограничена
minLength Нет Минимальное значение не требуется, можно не указывать
Выпадающий список
emptyValue Нет Текст по умолчанию, отображаемый в словаре, если не выбран
name Да Номер группы словаря
Дата Формат даты по умолчанию: гггг-ММ-дд
Формат Нет Формат даты, по умолчанию: yyyy-MM-dd
Одиночное изображение
height Нет Высота изображения по умолчанию равна 80px
width Нет Ширина изображения по умолчанию равна 80px
Несколько файлов
type Нет Поддерживаемые типы файлов для загрузки: images (изображения), file (все файлы), video (видео), audio (аудио), по умолчанию file
max Нет Максимальное количество файлов, которые можно загрузить. По умолчанию -1 означает отсутствие ограничений
Редактор форматированного текста
maxlength Нет Максимально допустимое количество символов для ввода в редакторе форматированного текста, включая знаки препинания, по умолчанию 2000
Текстовая область
maxlength Нет Максимально допустимая длина ввода в текстовой области, включая знаки препинания, по умолчанию 500
Много изображений
height Нет Высота изображения по умолчанию равна 80px
width Нет Ширина изображения по умолчанию равна 80px
max Нет Максимальное количество форматов изображений, которые можно загрузить, по умолчанию -1 означает отсутствие ограничений
Один файл
type Нет Типы файлов для загрузки, поддерживаемые: images (изображения), file (все файлы), video (видео), аудио (аудио), по умолчанию file
Одноуровневый выбор дерева
name Да Идентификатор группы дерева
Множественный выбор дерева
name Да Идентификатор группы дерева
Выбор провинции, города, района, скрытие

15.1.4. Другие инструкции

  • Когда форма представляет собой форму родитель-потомок, внешний ключ родительского поля должен быть скрыт в дочерней форме.
  • Когда форма является формой древовидной структуры, поля родительского и дочернего идентификаторов не могут быть пустыми.
  • После завершения редактирования формы рекомендуется сбросить атрибуты столбца, чтобы избежать проблем с некоторыми полями.

Три, часто задаваемые вопросы

Q: Зачем нужна модульность программы и в чём её преимущество?

После модульности программы можно легко загружать различные функции. Например, если вам не нужен рабочий процесс, просто удалите соответствующие зависимости из pom.xml.

Q: Почему каждый модуль разделен на интерфейс, сервис и веб три модуля?

Проект разделён таким образом для того, чтобы обеспечить развязку между различными проектами. Например, если вы хотите использовать MongoDB, вы можете ввести службу MongoDB, а для обычной службы — обычную службу. Кроме того, в распределённой версии необходимо разделить проект таким образом, чтобы веб-программа вводила интерфейс и веб-интерфейс, не заботясь о фактической реализации класса, и осуществляла удалённый вызов через Dubbo.

Q: В каких случаях используется очередь сообщений?

Очередь сообщений используется для кластерного планирования, распределённых транзакций и асинхронных уведомлений. Она делится на широковещательный и режим очереди.

  • Широковещательная передача: любое сообщение может быть получено.
  • Очередь: только одна машина может получить сообщение.

Распределённые транзакции: они используют принцип компенсации транзакций. Когда система выходит из строя, сообщение отправляется в очередь сообщений, и фиксированная машина обрабатывает это сообщение. Если количество обработок слишком велико, оно будет сохранено постоянно, и пользователь обработает его вручную.

Q: Каковы требования к базе данных?

Версия MongoDB не должна превышать 4.0, и требуется сделать репликацию, иначе невозможно управлять транзакциями. Поддержка базы данных SQL: Oracle, MySQL, SQL Server, тип базы данных можно изменить с помощью файла конфигурации. Вопрос 1: Почему после появления Redis всё ещё используется Ehcache?

Ehcache предназначен для использования на одном компьютере. В среде одного компьютера Ehcache использует только скорость чтения с диска, в то время как Redis будет использовать пропускную способность системы и влиять на производительность.

Вопрос 2: Как выполнить сборку для производственной среды и тестовой среды?

Добавьте profile в файл pom.xml, выберите profile и используйте команду maven для сборки.

Вопрос 3: Красив ли автор?

Что насчёт Ву Ияньцзу?

Комментарии ( 0 )

Вы можете оставить комментарий после Вход в систему

Введение

Полярная звезда — это фреймворк для быстрой разработки, включающий в себя часто используемые модули. Генератор кода для создания форм однотабличных, родительско-дочерних таблиц и древовидных структур. Поддерживает быстрое переключение с традиционных баз данных на MongoDB. Развернуть Свернуть
Отмена

Обновления (2)

все

Участники

все

Недавние действия

Загрузить больше
Больше нет результатов для загрузки
1
https://api.gitlife.ru/oschina-mirror/polarloves-Polar-idea.git
git@api.gitlife.ru:oschina-mirror/polarloves-Polar-idea.git
oschina-mirror
polarloves-Polar-idea
polarloves-Polar-idea
master