Мне нужно создать собственный аудит для модели User, чтобы отслеживать, кем был удален пользователь. Я попытался создать прослушиватель модуля Liferay для модели пользователя, но не могу получить сведения о том, кто удаляет пользователя.
Есть ли способ получить подробную информацию о том, кто внес изменения в модель пользователя в прослушивателе модуля Liferay?
Детали среды My Liferay
/*
* Below is the sample code that I have tried to create the Liferay module listener for the User model
*/
package com.test.useraudit.modellistner;
import org.osgi.service.component.annotations.Component;
import com.liferay.portal.kernel.exception.ModelListenerException;
import com.liferay.portal.kernel.model.BaseModelListener;
import com.liferay.portal.kernel.model.ModelListener;
import com.liferay.portal.kernel.model.User;
@Component(
immediate = true,
service = ModelListener.class
)
public class CustomUserModelListner extends BaseModelListener<User>{
@Override
public void onBeforeRemove(User user) throws ModelListenerException{
System.out.println("In onBeforeRemove method");
System.out.println("User detail :");
System.out.println(user);
super.onBeforeRemove(user);
}
@Override
public void onAfterRemove(User user) throws ModelListenerException{
System.out.println("In onAfterRemove method");
System.out.println("User detail :");
System.out.println(user);
super.onAfterRemove(user);
}
}
Да, это возможно.
Существует неявная локальная переменная потока с именем ServiceContext
, которая содержит детали контекста вызова.
Образец:
@Override
public void onBeforeRemove(User user) throws ModelListenerException{
ServiceContext serviceContext =
ServiceContextThreadLocal.getServiceContext();
System.out.println("Calling user:" + serviceContext.getUserId());
}
Да, это возможно, и это включает OOTB в Liferay. События удаления уже отслеживаются. Вы можете увидеть таблицу событий аудита и системных событий.
Вы можете использовать Audit Event Framework для своих настроек.