Пакетная фиксация для добавления пользователей в Liferay

Мы пытаемся внедрить около 100 тысяч пользователей в Liferay. Есть ли способ обновить все это в одном пакетном коммите вместо того, чтобы делать отдельные вызовы для добавления каждого пользователя?


person Sandeep Nair    schedule 04.11.2015    source источник


Ответы (2)


Думаю, да, это возможно.

Создайте собственный объект удаленной службы, такой как BulkUserServiceUtil.addUsers, в нем вызовите стандартный метод UserLocalServiceUtil.addUser для каждого пользователя.

При возврате из метода BulkUserServiceUtil транзакция фиксируется.

person Daniele Baggio    schedule 04.11.2015
comment
+1 за то, что пошел по пути обслуживания. Не используйте вставки SQL: никогда не выполняйте запись в базу данных с помощью SQL, потому что Liferay нужно больше, чем просто то, что очевидно в пользовательской таблице. Это предупреждение отсутствует, иначе я бы полностью поддержал этот ответ. - person Olaf Kock; 04.11.2015

@сандип:

Да, Liferay не предоставляет нам возможность добавлять/обновлять групповых пользователей, потому что после создания пользователя некоторые таблицы затрагиваются в этом, а также индексируются пользователем, но если вы хотите сделать это, у меня есть два предложения:

  1. Возьмите ссылку на опцию REINDEX для статей: в этом случае вы можете создать пакет диапазона счетчиков с каким-то значением и обновить/добавить этот пакет, но дело в том, что Liferay внутренне вызывает addUser по умолчанию. Так что это итеративный способ, который вы можете использовать.
  2. Без сервиса: создайте какой-нибудь пользовательский скрипт и один раз напрямую обратитесь к БД. которые создают пользователей, но в этом случае вам нужно позаботиться о других таблицах Liferay, в которые необходимо вставить идентификатор пользователя или соответствующие данные.
person Ashish Dadhich    schedule 04.11.2015
comment
Извините, но создать какой-нибудь пользовательский скрипт и сразу попасть в БД можно, но это очень плохая привычка для Liferay. - person Daniele Baggio; 04.11.2015
comment
Вызовите итерацию в 100 000 раз лучше всего, вы можете написать какой-нибудь код сортировки, который не сильно ударит по БД. Если Liferay не позволит, то мы должны сделать что-то другое. - person Ashish Dadhich; 04.11.2015