2007年1月31日星期三

权限控制的下一步工作

参看com.hikehi.servlet.TreeView

其中,NodeService.getAclByPrincipalId (String principalId)用于取得某个节点的acl,此处的某个节点(即principalId表示的)可以是folder的id,也可以是node index的id。该方法返回一个com.hikehi.privilege.Acl类型的值。如果返回结果为空,表明该节点的权限是继承而来。每一组 Acl包含若干条ACE。每一组acl包括名字和权限判断的顺序(即先允许后禁止还是先禁止后允许)。每条ace表明了“谁(用户或用户组的id)-能否做-某项操作”。系统的操作由com.hikehi.privilege.Operation定义,一共8种,分别是READ(读,读取node index及其属性),CREATE(创建新的node index或folder),MODIFY(修改,对node index的属性进行修改),DELETE(删除folder或者node index及其属性),OPEN(进入某个folder),RENAME(修改folder或node index的名字),GRANT(修改folder或者node index的权限),CHANGE_OWNER(改变folder或者node index的所有者)。
TreeView已经将提取acl的工作完成了,但是还不能显示在页面上。参照TreeView的代码,实现对库房的权限的显示和修改。在系统初始状态下,/goldentang下的所有folder都是继承了/goldentang的权限。对于继承权限的库房,需要在界面上能够让其拥有自己的权限。修改之后的或者是新加的权限,通过NodeService.grantFolderPrivilege()提交。需要修改权限的粒度只达到“用户组-folder”即可,不需要“用户-folder”或者“用户组-node index”或者“用户-node index”。
注意,admin这个用户仍然要拥有对库房的全部操作权限,这是在程序中需要默认加上的。
对库房的操作不要细分为8种情况,而是分为查看、入库和出库3种。其中,查看=对库房下的所有子folder有READ和OPEN的权限,入库=对ins, remains和materials有OPEN,READ和CREATE权限,出库=对remains有OPEN,READ和MODIFY权限,对 outs有OPEN,READ和CREATE权限,对materials有OPEN和READ权限。


我的整理

系统中现有权限体制

1.权限粒度
权限的粒度只达到“用户组-folder”即可,不需要“用户-folder”或者“用户组-node index”或者“用户-node index”。
2.权限控制
在NodeService.getAclByPrincipalId (String principalId)用于取得某个节点的acl,此处的某个节点(即principalId表示的)可以是folder的id,也可以是node index的id。该方法返回一个com.hikehi.privilege.Acl类型的值。如果返回结果为空,表明该节点的权限是继承而来。每一组 Acl包含若干条ACE。每一组acl包括名字和权限判断的顺序(即先允许后禁止还是先禁止后允许)。每条ace表明了“谁(用户或用户组的id)-能否 做-某项操作”。
3.系统权限划分
系统的权限操作由com.hikehi.privilege.Operation定义,一共8种,分别是READ(读,读取node index及其属性),CREATE(创建新的node index或folder),MODIFY(修改,对node index的属性进行修改),DELETE(删除folder或者node index及其属性),OPEN(进入某个folder),RENAME(修改folder或node index的名字),GRANT(修改folder或者node index的权限),CHANGE_OWNER(改变folder或者node index的所有者)。
4.自定义权限
用户可以对系统中的8种权限进行组合。比如:设定用户组A对库房X的权限
查看
A对X下的所有子folder有READ和OPEN的权限
入库
A对X下ins, remains和materials有OPEN,READ和CREATE权限
出库
A对X下remains有OPEN,READ和MODIFY权限;
A对X下outs有OPEN,READ和CREATE权限;
A对X下materials有OPEN和READ权限。
注:admin这个用户仍然要拥有对库房的全部操作权限,这是在程序中需要默认加上的。
权限设定完成后用户A下的所有用户都有对X相应的权限。
5.用户登录后
用户登录包括:用户名/密码及session id,用户登录成功后所有的操作都是靠session来控制的,其中session中包含两部分,一是session id,另一个是拥有该session 的用户id,也就是说在用户登录成功后可以通过session取出用户id从而标识了该用户。当需要进行权限验证时,系统根据该用户所处的用户组有无相应的权限来做验证。


财务模块的权限要求

1.用户登录统一
2.独立设置权限

2007年1月26日星期五

性能测试

astonia - astonia.shu@gmail.com says:
这样吧,说具体点
astonia - astonia.shu@gmail.com says:
创建一种数据类型,有30个属性,10个浮点、20个文本
astonia - astonia.shu@gmail.com says:
给这个属性录入1w条内容全一样的数据进去,甭管用什么方法
astonia - astonia.shu@gmail.com says:
内容一样,并不是每个属性都一样
astonia - astonia.shu@gmail.com says:
就是说,属性a和属性b未必一样
astonia - astonia.shu@gmail.com says:
而是不同数据的属性a都一样
astonia - astonia.shu@gmail.com says:
然后测试检索,各种组合条件下的检索,1个条件、2个、3个。。。。。
astonia - astonia.shu@gmail.com says:
然后测试合并,1个值合并、2个。。。。。
astonia - astonia.shu@gmail.com says:
不一定把每种组合都测,
astonia - astonia.shu@gmail.com says:
把典型的几种测了
astonia - astonia.shu@gmail.com says:
1 是最快的那种组合,比如最少检索条件的速度最快,就测单一条件的,针对不同类型的属性测一下单条件的
astonia - astonia.shu@gmail.com says:
2 最慢的组合,30个条件全有的
astonia - astonia.shu@gmail.com says:
3 某种单一属性最慢的检索,比如某个文本属性的值是最长的,就主要围绕它来测一下
astonia - astonia.shu@gmail.com says:
录入的文本属性要有比较长和很长的,不能都是极短的那种
astonia - astonia.shu@gmail.com says:
看明白没?

java tomcat OutOfMemoryError heap space

java tomcat OutOfMemoryError heap space
windows 更改系统环境变量
加上JAVA_OPTS=-Xms64m -Xmx512m
Linux 在{tomcat_home}/bin/catalina.sh的前面,加
set JAVA_OPTS='-Xms64 -Xmx512'

2007年1月18日星期四

单据

astonia - astonia.shu@gmail.com says:
(10时11分16秒) astonia - astonia.shu@gmail.com: 1 能够从产品查看其关联的所有单据,包括各个质检单和其他的单子
(10时11分27秒) astonia - astonia.shu@gmail.com: 2 能够查询单据得到关联的产品信息
(10时11分45秒) astonia - astonia.shu@gmail.com: 3 删除数据之后能够删除其相关的所有单据
(10时11分59秒) astonia - astonia.shu@gmail.com: 你想想,设计一个方案出来