当用户在控制面板中选择deactivate user的时候:

它会去走到EditUserAction的processAction()方法,在判断清楚动作是Constants.DEACTIVATE之后,它会调用deleteUser()方法:

这段代码如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
protected void deleteUsers(ActionRequest actionRequest) throws Exception {
            String cmd = ParamUtil.getString(actionRequest, Constants.CMD);
            long[] deleteUserIds = StringUtil.split(
                  ParamUtil.getString(actionRequest, "deleteUserIds"), 0L);
            for (int i = 0; i < deleteUserIds.length; i++) {
                  if (cmd.equals(Constants.DEACTIVATE) ||
                        cmd.equals(Constants.RESTORE)) {
                        int status = WorkflowConstants.STATUS_APPROVED;
                        if (cmd.equals(Constants.DEACTIVATE)) {
                              status = WorkflowConstants.STATUS_INACTIVE;
                        }
                        UserServiceUtil.updateStatus(deleteUserIds[i], status);
                  }
                  else {
                        UserServiceUtil.deleteUser(deleteUserIds[i]);
                  }
            }
      }

可以发现deleteUser不仅仅是只删除用户,它是几种情况的糅合体,不仅仅是Delete,而且Deactivate,Restore都会走到这个方法中,我们因为是DEACTIVATE,所以走的分支是第16行,最终它先获取我们操作的用户的id,然后会调用UserServiceUtil.updateStatus(deleteUserIds[i],status)方法:

这个方法接下来会利用动态代理机制调用UserServiceImpl的updateStatus(long userId,int status)方法:

这个方法从调试信息中可以看到,我们要操作的用户id是12113,然后状态位要改成5,这个5应该是对应的Deactivate。

最终,这个方法会调用UserLocalServiceImpl.updateStatus(userId,status)方法:

它其实是对用户表User_进行了操作,并且吧其中UserId 为12113(Jessica这个用户)的状态为改成了5(deactivate):

这个表的DDL如下:

特别注意第2个字段(UserId)和最后一个字段(Status).

而当我们进行操作的时候,很容易从Hypersonic数据库的log中看到我们更新这个字段的操作(不过不明白为什么Update要拆分2条,一条是Delete,一条是insert)

总结:

(1)其实当Deactivate用户时候,并没有真正让用户信息从User_表中删除,仅仅是吧Status位置改成Deactivate.

(2)用户的Restore,Deactivate,Delete操作都合并在了deleteUser()方法中。

(3)Hypersonic操作很不智能,Update方法必须被拆分为一个Delete加一个Insert方法

本文转自 charles_wang888 51CTO博客,原文链接:http://blog.51cto.com/supercharles888/1270716,如需转载请自行联系原作者

关于Liferay的deactivate user的研究相关推荐

  1. Liferay 控制面板在指定文件夹添加Basic Document流程分析

    结论: 当在Liferay中用管理员登录,导航到控制面板->Documents and Media ,在指定文件夹下添加BasicDocument时,服务器做了如下的事情: (1) 在DLFIL ...

  2. Liferay研究-smilingleo

    http://blog.csdn.net/smilingleo/article/details/1859908 Liferay研究之一:Ext环境的搭建 本篇主要介绍如何搭建Ext开发环境.网上也有很 ...

  3. Liferay Portal额外研究-银狐999

    Liferay Portal额外研究(一):初步在新Tomcat下部署 开发者在线 Builder.com.cn 更新时间:2008-03-19作者:银狐999 来源:CSDN 本文关键词: 部署 t ...

  4. Liferay Dynamic CSS Filter方法的研究 - 总体过程

    背景知识: 最近项目组遇到一个问题就是改了一个new theme之后导致某些css文件不起作用了,这也激起了我的好奇心,让我有机会去研究下Liferay Dynamic CSS Filter的原理. ...

  5. Liferay新注册用户缺省页面的研究

    Liferay新注册用户缺省页面的研究 在Liferay的基础上进行二次开发,我们都比较困惑的一个问题是:如何控制新注册用户登录后的页面? 关于新用户的缺省页面,最核心的代码是在com.liferay ...

  6. Liferay研究之廿九:Liferay5.2基础架构变动

    前几天Liferay正式发布了5.2, 抽空Down下来研究了一天,感觉还是有不少变化的,很多底层的东西都发生了变化.因为现在重点关注于MDD的研究,所以这次研究重点在基础架构(liferay inf ...

  7. Liferay研究之廿九:Liferay5.2基础架构变动收藏

    前几天Liferay正式发布了5.2, 抽空Down下来研究了一天,感觉还是有不少变化的,很多底层的东西都发生了变化.因为现在重点关注于MDD的研究,所以这次研究重点在基础架构 (liferay in ...

  8. Liferay MinifierFilter的研究

    大家都知道,在Web应用程序中,为了节省网络开销,往往吧多个小的js文件整合成一个大的js文件,吧多个小的css文件整合成一个大的js文件,这样原本N次小文件的请求就可以合并成单次的网络请求.最典型的 ...

  9. Liferay研究之六:Liferay技巧几则

    在Liferay中添加链接的方式 1.通过liferay-ui:icon标签:    <% ...      PortletURL moreURL = renderResponse.create ...

  10. Liferay Portal学习笔记-coldTear

    [原创]Liferay Portal学习笔记(一):安装 一. 简单安装 1)下载并安装 JDK1.5 1.  下载并安装 Windows Platform J2SE(TM) Development ...

最新文章

  1. Performance — 前端性能监控利器
  2. iOS NSNotificationCenter详解
  3. 日常技术分享 : 一定要注意replcaceAll方法,有时候会如你所不愿!
  4. wso2 esb_使用WSO2 ESB进行邮件内容过滤
  5. ant中table表格的多选框如何清空
  6. 前端学习(2211):网络请求模块的选择--axios的配置相关
  7. [bzoj2850]巧克力王国_KD-Tree
  8. “拖欠货款、裁员降薪”,这家生鲜电商平台无奈回应...
  9. MakeGenericMethod Reflection 反射 ObjectToXmlT Generic XmlSerializer
  10. 一批工业机械网站交换友情链接
  11. 电池充放电设备招投标解决方案
  12. three.js 05-01 之 PlaneGeometry 几何体
  13. C#基础知识(停止更新、移步博客园)
  14. 计算机绘画社团活动教案,电脑绘画社团课教师教案.doc
  15. 当析构函数遇到多线程 转载
  16. WORD/WPS打印目录或输出输出PDF时,目录显示“错误未定义标签”,且无法正常跳转的解决方法
  17. C语言 自定义类型 之 【枚举】
  18. 超链接标签 a (锚点链接)
  19. 手把手教你写专利申请书·如何申请专利
  20. Depix:还原马赛克工具的试用及总结

热门文章

  1. HDU4622- Reincarnation(后缀自动机)
  2. 网吧流媒体服务器系统,网吧视频点播服务器架设完全攻略流媒体服务器 -电脑资料...
  3. Java邮箱正则匹配
  4. 在敏捷2013中寻找答案
  5. 用python扑克随机发牌_python:扑克牌发牌程序
  6. 基于matlab的-数字调制技术仿真
  7. 零基础如何入门激光SLAM
  8. 基于同源策略的移动应用细粒度隐私保护技术
  9. html js css 简明教程,Web前端开发简明教程(HTML+CSS+JavaScript+jQuery)
  10. Object中的同步机制[转]