??xml version="1.0" encoding="utf-8" standalone="yes"?>亚洲精品无码专区在线在线播放,毛茸茸bbw亚洲人,婷婷亚洲综合五月天小说在线http://www.tkk7.com/tsylo/日月累积zh-cnSun, 11 May 2025 10:31:45 GMTSun, 11 May 2025 10:31:45 GMT60扩展OSWorkflow(一、引子,从WPS到EOSC国企业工作流)http://www.tkk7.com/tsylo/archive/2008/08/30/225733.html江上一叶舟江上一叶舟Sat, 30 Aug 2008 05:48:00 GMThttp://www.tkk7.com/tsylo/archive/2008/08/30/225733.htmlhttp://www.tkk7.com/tsylo/comments/225733.htmlhttp://www.tkk7.com/tsylo/archive/2008/08/30/225733.html#Feedback5http://www.tkk7.com/tsylo/comments/commentRss/225733.htmlhttp://www.tkk7.com/tsylo/services/trackbacks/225733.html     在该目前期Q我曄带领一个团队用wps做了一个项目,q个目中有八九条流E,在用wps的过E当中,我发现wpsҎ不适合做一些复杂的人工审批工作,ibm软g日趋全球化,但却忽略了很多本土化的东西,譬如说wpsQ作为金融行业融合企业内部服务的soaȝU品,其内嵌的ESBҎ达不到应有的性能(每笔交易旉)Q而作为电信行业流E引擎,却忽略了最重要的中国国?-人工审批。在前几天上分公司信息化部召开的技术讨Z议中Q我q前公司内部系l中几个技术难点发出提问,ibm的工E师与老板都不知所云?br />     中外文化差异很大Q国外的工作希望自动化环节更多一些,减少人工参与Q降低上行下达过E中Zؓ的,可能造成误差Q而中国则不然Q中国要求自动化环节一些,决策都由人来审批Q从处长到经理,从经理到分管领导Q审扚w过q不能作敎ͼ要签字盖章,留作日后证据。ؓ什么会有这L差异Q这个问题暂且交l余U雨之流去论qͼ我们只讲技术,既然中国企业工作中讲究的是审批Q那问题来了,人工审批工作复杂无比,譬如说会{、联{、发散、汇聚、选择下一节点、选择下一节点处理人等{,q都不是一个符合wfmc或bpel标准的工作流p做出来的Q包括最初的普元Q几q前来我们公司做技术交和产品介绍的时候,我们p些技术难Ҏ出疑问,EOS完全无法满电信行业需求,于是其回去闭门苦l,一q后再来介绍Ӟ工作已l基本上能满?9%的审批要求,而WPS刚刚q入中国市场在中国做审批工作连一个像L大型成功案例都没有,更无法满需求了?br />     但介于公司内部系l的现状Q用WPSq是有一些benefit?公司内部理pȝ使用了Websphere portalQDominoQTivoliQMQQMB{YӞ在集成展C使用portalQ内部oa使用lotusQ统一认证Q统一用户理使用了TAMQTIMQEAI使用了MBQ这样如果工作流使用wps的话Q至做一些展现、SSO、UM{都不存在问题,再加上IBM几个销售卖力的忽悠Q领D骗进Q公司吃药,使用了wpsQ秉承技术h员认证负责的态度Q用q了,把它用到最好,是我的责任,于是我进行了一pd的探索,前期使用wps时候,׃其无法满?#8220;选择下一节点处理?#8221;的需求,我自己封装了一大堆的代码,补充wps的流E预知功能,{项目结束后Q我惊讶的发玎ͼ我自己写的那部分代码Q居然已l构成了一个小型工作流引擎Q汗颜的同时Q我也在思考,既然q样Q我不然q脆做一个轻量的工作流引擎来取代wps的HumanTasklgq行人工审批Q让wps发挥其ESB的功能,当系l之间窜接的q程中遇C别简单的审批Q则采用wps本n的h工Q务,但如若需要进行复杂的人工审批程Q则q入我自q轻量U工作流引擎q行审批Q我qq个x感到兴奋、跃跃欲试,接下来的工作是选型了,目前市面上的工作引擎很多,普元的,西安协同的,q些都需要购买licenseQ不考虑Q开源框枉有jbpmQosworkflow,shark{,l过考虑再三Qjbpm和sharkq于闭Q不利于攚w成适应行业需求的程引擎Q于是采用osworkflow(以下Uos)Q自己在os上扩展了一层,我把它叫做ExtOSWorkflowQ从取英文首字母来命名简Uͼ变成了EOSQ我狂晕Q于是不hQ我把它叫做ExtOSQ在ExtOS中,我扩展改造了很多功能Q差不多Ҏ了除核心以外的一半的源码Q完成功能其中包括:完整的待办Q务列表、在办Q务列表、已办Q务列表、流E历双Ӏ流E会{、流E回退、流E委z、子程、流E时限监控,程版本控制{,其中会签与版本控制功能尚在l开发,其余的已l实玎ͼȝ之余发表文章到blog、圈子、论坛,也想借机引v正在做同cM品的同行的讨论,抛砖引玉吧,关于osworkflow的封装,请听下回分解

江上一叶舟 2008-08-30 13:48 发表评论
]]>
l奎鼠也落个户口Q?/title><link>http://www.tkk7.com/tsylo/archive/2007/04/04/108548.html</link><dc:creator>江上一叶舟</dc:creator><author>江上一叶舟</author><pubDate>Wed, 04 Apr 2007 15:04:00 GMT</pubDate><guid>http://www.tkk7.com/tsylo/archive/2007/04/04/108548.html</guid><wfw:comment>http://www.tkk7.com/tsylo/comments/108548.html</wfw:comment><comments>http://www.tkk7.com/tsylo/archive/2007/04/04/108548.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.tkk7.com/tsylo/comments/commentRss/108548.html</wfw:commentRss><trackback:ping>http://www.tkk7.com/tsylo/services/trackbacks/108548.html</trackback:ping><description><![CDATA[         今天奛_C两只奎鼠Q两个小家伙一回来开打,?点开qԌ一直到8点的时候终于双双入睡。。。?br>         其实我更喜欢狗Q小狗长得可爱,水汪汪的眼睛。当你大|坐下Q小狗似乎能听懂你的话立d下,此时你的成就感不亚于完成一套系l~~。不q据说现在养狗要l狗上户口,真是奇谈Q我奛_都没有上h口,买来的一条狗却轻易的得到了上h口,不知道户c制定者是怎么想的?br>         我讨厌户c制度,L制度本来是国情所q,而不得不出台的一个本质上是反人类反h权反文明的规定,q只是权衡之计,哪天废除Q说明这个国家哪天真正强大了。但看见那么多h沉h在这权衡之计里,我也不得不大|"让那些制定户c制度的Z因户c的不便而多׃钱,抓v来判刑,p搞臭他们Q让他们不能nQ定在耻i׃"。呵呵,恶毒了点? <img src ="http://www.tkk7.com/tsylo/aggbug/108548.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.tkk7.com/tsylo/" target="_blank">江上一叶舟</a> 2007-04-04 23:04 <a href="http://www.tkk7.com/tsylo/archive/2007/04/04/108548.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>感冒了~http://www.tkk7.com/tsylo/archive/2007/04/04/108543.html江上一叶舟江上一叶舟Wed, 04 Apr 2007 14:24:00 GMThttp://www.tkk7.com/tsylo/archive/2007/04/04/108543.htmlhttp://www.tkk7.com/tsylo/comments/108543.htmlhttp://www.tkk7.com/tsylo/archive/2007/04/04/108543.html#Feedback0http://www.tkk7.com/tsylo/comments/commentRss/108543.htmlhttp://www.tkk7.com/tsylo/services/trackbacks/108543.html
w上的衣服没注意及时配合气候,得瑟感冒了,今天本来惛_Ҏ钟v床写写早惛_的代码,可一觉醒来已l八点了Q哎

L开始肆虐,伙Q该ȝw体了!  阅读全文

江上一叶舟 2007-04-04 22:24 发表评论
]]>
SOA的组件实?--EJB+Spring+Hibernatehttp://www.tkk7.com/tsylo/archive/2007/01/30/96811.html江上一叶舟江上一叶舟Tue, 30 Jan 2007 15:29:00 GMThttp://www.tkk7.com/tsylo/archive/2007/01/30/96811.htmlhttp://www.tkk7.com/tsylo/comments/96811.htmlhttp://www.tkk7.com/tsylo/archive/2007/01/30/96811.html#Feedback1http://www.tkk7.com/tsylo/comments/commentRss/96811.htmlhttp://www.tkk7.com/tsylo/services/trackbacks/96811.html      最q项目很变态,是要把Domino的东西往J2EE上搬Q说什么文档型数据库无法跨系l,我觉得如果照目前电信的系l结构来_q把Domino上的所有东西,包括process都搬到J2EE上,也无法解军_个系l之间很好协作的问题QPortal和统一认证已经在某U程度上帮了大忙Q如果实在很惛_个应用系l之间进行数据交互,开发webservice接口ok了,甚至在系l开始规划的时候就不应该出现Dominoq种东西Q现在想起关pd数据库的好来了,未免累死了开发h员,所以我q是U持我自q原则Q我们无限制的追求Y件程序的完美Qƈ不是Z那帮傻逼客P而是Z让我们之后的E序员能够以更少的精力来更轻杄拿这份工资!
      牢骚完毕来说说目前的J2EE做法。既然涉及到程Q那不免那两种QWFMC和BPELQ我们选择BPELQ原因是IBM支持BPELQ不要问我两U东襉KU更优秀Q我会告诉你Q你搞清楚了也没意义Q用户只怿IBM?br />      既然用BPELQIBM的Websphere Process Server首当其冲Q项目组C几百万的软g和服务就开始开发了Q说实话QWPS真的是一个很好的SOA解决ҎQ但我个为绝对不适合中国政府、国企的程开发,因ؓ他无法很好的解决人工节点的问题,哪怕是引入了human taskQ于是我们又自己装了一层小的流E引擎,当然我所要说的重点不是这个,而是我们在wps中所需要的JCA方式l定的组件的实现方式QEJB+Spring+HibernateQ做好的EJB包可以以EJB Bind的Java component形式打入wps的assembly里,在bpel process中referenceq来可以了。下面我们主要说说EJB的实现?br />      ׃wps有个特点是在流E实例结束后删除其自带数据库中的所有实例数据,所以我们必d程的最后一部将数据记录在我们自q业务库中来,我们开发的EJB实Cq个功能?br />首先是业务逻辑Q业务逻辑分成三个包,ejb、face、pojoQ其中ejb是组件的本地接口Qface是组件的功能性接口,pojo是具体实现类?br />      具体逻辑代码不脓了,贴一个我写的例子Q?br />      face中的功能接口Q?/p>
1 package  com.ideal.core.biz.face;
2
3 import  java.rmi.RemoteException;
4
5 public   interface  SimpleService 
6 {
7    public  String sayHello(String message)throws Exception;
8 }

9

   ejb中本地接口:
 1package com.ideal.core.biz.ejb;
 2
 3import javax.ejb.EJBLocalObject;
 4import com.ideal.core.biz.face.SimpleService;
 5
 6public interface SimpleLocal
 7    extends EJBLocalObject, SimpleService
 8{
 9    public String sayHello(String message) throws Exception;
10}

11
  ejb的home接口不脓了,直接贴beanc,我们q里用Stateless?br />
 1package com.ideal.core.biz.ejb;
 2
 3import javax.ejb.SessionBean;
 4import javax.ejb.SessionContext;
 5import javax.ejb.CreateException;
 6import com.ideal.core.biz.face.SimpleService;
 7import org.springframework.ejb.support.AbstractStatelessSessionBean;
 8import java.rmi.RemoteException;
 9
10public class SimpleBean
11    extends AbstractStatelessSessionBean
12    implements SimpleService
13{
14    SessionContext sessionContext;
15    private SimpleService m_simple_service;
16
17    public void onEjbCreate() throws CreateException
18    {
19        m_simple_service = (SimpleService) getBeanFactory().getBean("SimpleService");
20    }

21
22    public String sayHello(String message) throws Exception
23    {
                 String message = "";
                       try {
                message = m_simple_service.sayHello(message);

        }
        catch (Exception ex)
        {
            this.sessionContext.setRollbackOnly();
            throw new EJBException();
        }
24        return message;
25    }

26}

27
pojoQ?br />
 1package com.ideal.core.biz.pojo;
 2
 3import com.ideal.core.biz.face.SimpleService;
 4
 5public class SimpleServiceImpl implements SimpleService
 6{
 7    IUserInfoDAO user_dao;
 8    public SimpleServiceImpl()
 9    {
10    }

11    public String sayHello(String message)  throws Exception
12    {
13            Userinfo user = new Userinfo();
14            user.setName("2");
15            user.setPassword("2");
16            user.setUserid("2");
17            user_dao.saveUser(user);
18            user.setPassword("asddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddd");
19            user_dao.saveUser(user);
20        return "hello," + message + "!";
21    }

22}

23
l过试Q容器事务可以正常回滚,前提是spring与hibernate的配|文仉寏V?br />最l打包发布到Websphere上可以正常运行,做个web客户端简单测试一下就ok了?br />攑օwps上也q行正常?br />最后说一句:不一定所有的国外产品都适用于我们的现状?img src ="http://www.tkk7.com/tsylo/aggbug/96811.html" width = "1" height = "1" />

江上一叶舟 2007-01-30 23:29 发表评论
]]>
web开发中的权限设计拙见一?3) ----资源配置与权限判?/title><link>http://www.tkk7.com/tsylo/archive/2007/01/03/91527.html</link><dc:creator>江上一叶舟</dc:creator><author>江上一叶舟</author><pubDate>Wed, 03 Jan 2007 05:56:00 GMT</pubDate><guid>http://www.tkk7.com/tsylo/archive/2007/01/03/91527.html</guid><wfw:comment>http://www.tkk7.com/tsylo/comments/91527.html</wfw:comment><comments>http://www.tkk7.com/tsylo/archive/2007/01/03/91527.html#Feedback</comments><slash:comments>15</slash:comments><wfw:commentRss>http://www.tkk7.com/tsylo/comments/commentRss/91527.html</wfw:commentRss><trackback:ping>http://www.tkk7.com/tsylo/services/trackbacks/91527.html</trackback:ping><description><![CDATA[     摘要: 在上文中我们提到了一个资源对应一个数据库表,在T_ResourceInfo表中我们也提C有一个字D专门来记录表名Q然后我书写一个资源配|文Ӟ用来配置我的业务cM资源的对应关p,代码如下Q?<?xml version="1.0" encoding="GB2312"?>2<data>3    <mapping SysName="s">4        <m...  <a href='http://www.tkk7.com/tsylo/archive/2007/01/03/91527.html'>阅读全文</a><img src ="http://www.tkk7.com/tsylo/aggbug/91527.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.tkk7.com/tsylo/" target="_blank">江上一叶舟</a> 2007-01-03 13:56 <a href="http://www.tkk7.com/tsylo/archive/2007/01/03/91527.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>web开发中的权限设计拙见一?2) ----数据库设?/title><link>http://www.tkk7.com/tsylo/archive/2007/01/02/91467.html</link><dc:creator>江上一叶舟</dc:creator><author>江上一叶舟</author><pubDate>Tue, 02 Jan 2007 15:41:00 GMT</pubDate><guid>http://www.tkk7.com/tsylo/archive/2007/01/02/91467.html</guid><wfw:comment>http://www.tkk7.com/tsylo/comments/91467.html</wfw:comment><comments>http://www.tkk7.com/tsylo/archive/2007/01/02/91467.html#Feedback</comments><slash:comments>8</slash:comments><wfw:commentRss>http://www.tkk7.com/tsylo/comments/commentRss/91467.html</wfw:commentRss><trackback:ping>http://www.tkk7.com/tsylo/services/trackbacks/91467.html</trackback:ping><description><![CDATA[      首先上文权限设计拙见(1)中只是想记录下自己权限设计上的一点看法,以及自己日常最常用的权限解x案记录下来以供日后回,没想到有朋友x此类的设计,那就只能先把代码拿出来献丑了Q抛砖引玉,大家共同探讨学习<img height="19" src="http://www.tkk7.com/Emoticons/teeth_smile.gif" width="19" border="0" /><br />      接着上文来说Q上文所讨论的权限设计是一条思\Q但既然是web应用Q少不了数据库的支持Q本文我们来讨论一下数据库的设计。(以下x及思\仅仅代表本h拙见Q?br />      说到权限的数据库设计Q必先理清权限中几种实体及其关系Q此部分惛_有过设计权限l验的同仁都知道怎么设计了,|上摆渡一下也是一裤衩子一裤衩子的Q我们就在最q_直观的数据库关系的基上来建立权限。下面是我的几个表(所有的表都带有一个pk_id,作ؓ表的自动生成的唯一主键Q:<br />用户?T_UserInfo)Q?br /><div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><span style="COLOR: #008080"> 1</span><img id="Codehighlighter1_0_65_Open_Image" onclick="this.style.display='none'; Codehighlighter1_0_65_Open_Text.style.display='none'; Codehighlighter1_0_65_Closed_Image.style.display='inline'; Codehighlighter1_0_65_Closed_Text.style.display='inline';" src="http://www.tkk7.com/images/OutliningIndicators/ExpandedBlockStart.gif" align="top" /><img id="Codehighlighter1_0_65_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_0_65_Closed_Text.style.display='none'; Codehighlighter1_0_65_Open_Image.style.display='inline'; Codehighlighter1_0_65_Open_Text.style.display='inline';" src="http://www.tkk7.com/images/OutliningIndicators/ContractedBlock.gif" align="top" /><span id="Codehighlighter1_0_65_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff">/**/</span><span id="Codehighlighter1_0_65_Open_Text"><span style="COLOR: #008080">/*</span><span style="COLOR: #008080">==============================================================</span><span style="COLOR: #008080">*/</span></span><span style="COLOR: #000000"><br /></span><span style="COLOR: #008080"> 2</span><span style="COLOR: #000000"><img id="Codehighlighter1_67_132_Open_Image" onclick="this.style.display='none'; Codehighlighter1_67_132_Open_Text.style.display='none'; Codehighlighter1_67_132_Closed_Image.style.display='inline'; Codehighlighter1_67_132_Closed_Text.style.display='inline';" src="http://www.tkk7.com/images/OutliningIndicators/ExpandedBlockStart.gif" align="top" /><img id="Codehighlighter1_67_132_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_67_132_Closed_Text.style.display='none'; Codehighlighter1_67_132_Open_Image.style.display='inline'; Codehighlighter1_67_132_Open_Text.style.display='inline';" src="http://www.tkk7.com/images/OutliningIndicators/ContractedBlock.gif" align="top" /></span><span id="Codehighlighter1_67_132_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff">/**/</span><span id="Codehighlighter1_67_132_Open_Text"><span style="COLOR: #008080">/*</span><span style="COLOR: #008080"> Table: T_UserInfo                                            </span><span style="COLOR: #008080">*/</span></span><span style="COLOR: #000000"><br /></span><span style="COLOR: #008080"> 3</span><span style="COLOR: #000000"><img id="Codehighlighter1_134_199_Open_Image" onclick="this.style.display='none'; Codehighlighter1_134_199_Open_Text.style.display='none'; Codehighlighter1_134_199_Closed_Image.style.display='inline'; Codehighlighter1_134_199_Closed_Text.style.display='inline';" src="http://www.tkk7.com/images/OutliningIndicators/ExpandedBlockStart.gif" align="top" /><img id="Codehighlighter1_134_199_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_134_199_Closed_Text.style.display='none'; Codehighlighter1_134_199_Open_Image.style.display='inline'; Codehighlighter1_134_199_Open_Text.style.display='inline';" src="http://www.tkk7.com/images/OutliningIndicators/ContractedBlock.gif" align="top" /></span><span id="Codehighlighter1_134_199_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff">/**/</span><span id="Codehighlighter1_134_199_Open_Text"><span style="COLOR: #008080">/*</span><span style="COLOR: #008080">==============================================================</span><span style="COLOR: #008080">*/</span></span><span style="COLOR: #000000"><br /></span><span style="COLOR: #008080"> 4</span><span style="COLOR: #000000"><img src="http://www.tkk7.com/images/OutliningIndicators/None.gif" align="top" /></span><span style="COLOR: #0000ff">create</span><span style="COLOR: #000000"> </span><span style="COLOR: #0000ff">table</span><span style="COLOR: #000000"> T_UserInfo <br /></span><span style="COLOR: #008080"> 5</span><span style="COLOR: #000000"><img src="http://www.tkk7.com/images/OutliningIndicators/None.gif" align="top" />(<br /></span><span style="COLOR: #008080"> 6</span><span style="COLOR: #000000"><img src="http://www.tkk7.com/images/OutliningIndicators/None.gif" align="top" />    pk_id                </span><span style="FONT-WEIGHT: bold; COLOR: #000000">NUMBER</span><span style="COLOR: #000000">                         </span><span style="COLOR: #808080">not</span><span style="COLOR: #000000"> </span><span style="COLOR: #0000ff">null</span><span style="COLOR: #000000">,<br /></span><span style="COLOR: #008080"> 7</span><span style="COLOR: #000000"><img src="http://www.tkk7.com/images/OutliningIndicators/None.gif" align="top" />    name                 </span><span style="FONT-WEIGHT: bold; COLOR: #000000">VARCHAR2</span><span style="COLOR: #000000">(</span><span style="FONT-WEIGHT: bold; COLOR: #800000">20</span><span style="COLOR: #000000">),<br /></span><span style="COLOR: #008080"> 8</span><span style="COLOR: #000000"><img src="http://www.tkk7.com/images/OutliningIndicators/None.gif" align="top" />    sex                  BOOLEAN,<br /></span><span style="COLOR: #008080"> 9</span><span style="COLOR: #000000"><img src="http://www.tkk7.com/images/OutliningIndicators/None.gif" align="top" />    age                  </span><span style="FONT-WEIGHT: bold; COLOR: #000000">int</span><span style="COLOR: #000000">,<br /></span><span style="COLOR: #008080">10</span><span style="COLOR: #000000"><img src="http://www.tkk7.com/images/OutliningIndicators/None.gif" align="top" />    emp_num              </span><span style="FONT-WEIGHT: bold; COLOR: #000000">NUMBER</span><span style="COLOR: #000000">,<br /></span><span style="COLOR: #008080">11</span><span style="COLOR: #000000"><img src="http://www.tkk7.com/images/OutliningIndicators/None.gif" align="top" />    polity               </span><span style="FONT-WEIGHT: bold; COLOR: #000000">int</span><span style="COLOR: #000000">,<br /></span><span style="COLOR: #008080">12</span><span style="COLOR: #000000"><img src="http://www.tkk7.com/images/OutliningIndicators/None.gif" align="top" />    unit                 </span><span style="FONT-WEIGHT: bold; COLOR: #000000">VARCHAR2</span><span style="COLOR: #000000">(</span><span style="FONT-WEIGHT: bold; COLOR: #800000">50</span><span style="COLOR: #000000">),<br /></span><span style="COLOR: #008080">13</span><span style="COLOR: #000000"><img src="http://www.tkk7.com/images/OutliningIndicators/None.gif" align="top" />    department           </span><span style="FONT-WEIGHT: bold; COLOR: #000000">VARCHAR2</span><span style="COLOR: #000000">(</span><span style="FONT-WEIGHT: bold; COLOR: #800000">20</span><span style="COLOR: #000000">),<br /></span><span style="COLOR: #008080">14</span><span style="COLOR: #000000"><img src="http://www.tkk7.com/images/OutliningIndicators/None.gif" align="top" />    specialty            </span><span style="FONT-WEIGHT: bold; COLOR: #000000">int</span><span style="COLOR: #000000">,<br /></span><span style="COLOR: #008080">15</span><span style="COLOR: #000000"><img src="http://www.tkk7.com/images/OutliningIndicators/None.gif" align="top" />    position             </span><span style="FONT-WEIGHT: bold; COLOR: #000000">VARCHAR2</span><span style="COLOR: #000000">(</span><span style="FONT-WEIGHT: bold; COLOR: #800000">10</span><span style="COLOR: #000000">),<br /></span><span style="COLOR: #008080">16</span><span style="COLOR: #000000"><img src="http://www.tkk7.com/images/OutliningIndicators/None.gif" align="top" />    offtel               </span><span style="FONT-WEIGHT: bold; COLOR: #000000">VARCHAR2</span><span style="COLOR: #000000">(</span><span style="FONT-WEIGHT: bold; COLOR: #800000">20</span><span style="COLOR: #000000">),<br /></span><span style="COLOR: #008080">17</span><span style="COLOR: #000000"><img src="http://www.tkk7.com/images/OutliningIndicators/None.gif" align="top" />    famtel               </span><span style="FONT-WEIGHT: bold; COLOR: #000000">VARCHAR2</span><span style="COLOR: #000000">(</span><span style="FONT-WEIGHT: bold; COLOR: #800000">20</span><span style="COLOR: #000000">),<br /></span><span style="COLOR: #008080">18</span><span style="COLOR: #000000"><img src="http://www.tkk7.com/images/OutliningIndicators/None.gif" align="top" />    post_state           </span><span style="FONT-WEIGHT: bold; COLOR: #000000">VARCHAR2</span><span style="COLOR: #000000">(</span><span style="FONT-WEIGHT: bold; COLOR: #800000">10</span><span style="COLOR: #000000">),<br /></span><span style="COLOR: #008080">19</span><span style="COLOR: #000000"><img src="http://www.tkk7.com/images/OutliningIndicators/None.gif" align="top" />    remark               </span><span style="FONT-WEIGHT: bold; COLOR: #000000">VARCHAR2</span><span style="COLOR: #000000">(</span><span style="FONT-WEIGHT: bold; COLOR: #800000">100</span><span style="COLOR: #000000">),<br /></span><span style="COLOR: #008080">20</span><span style="COLOR: #000000"><img src="http://www.tkk7.com/images/OutliningIndicators/None.gif" align="top" />    </span><span style="COLOR: #0000ff">constraint</span><span style="COLOR: #000000"> PK_T_USERINFO </span><span style="COLOR: #0000ff">primary</span><span style="COLOR: #000000"> </span><span style="COLOR: #0000ff">key</span><span style="COLOR: #000000"> (pk_id)<br /></span><span style="COLOR: #008080">21</span><span style="COLOR: #000000"><img src="http://www.tkk7.com/images/OutliningIndicators/None.gif" align="top" />);</span></div>用户表就不多说了Q都是一些常用字D,q龄、电话、职位等Q徏议大家徏立一个通用一些,字段多一些的一个用戯Q便于以后扩展,以后如果有特D需求,不用扩这个基本表Q可以通过d键关pL新徏一个表Q用于扩充字D?br />角色?T_RoleInfo)Q?br /><div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><span style="COLOR: #008080"> 1</span><img id="Codehighlighter1_0_65_Open_Image" onclick="this.style.display='none'; Codehighlighter1_0_65_Open_Text.style.display='none'; Codehighlighter1_0_65_Closed_Image.style.display='inline'; Codehighlighter1_0_65_Closed_Text.style.display='inline';" src="http://www.tkk7.com/images/OutliningIndicators/ExpandedBlockStart.gif" align="top" /><img id="Codehighlighter1_0_65_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_0_65_Closed_Text.style.display='none'; Codehighlighter1_0_65_Open_Image.style.display='inline'; Codehighlighter1_0_65_Open_Text.style.display='inline';" src="http://www.tkk7.com/images/OutliningIndicators/ContractedBlock.gif" align="top" /><span id="Codehighlighter1_0_65_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff">/**/</span><span id="Codehighlighter1_0_65_Open_Text"><span style="COLOR: #008080">/*</span><span style="COLOR: #008080">==============================================================</span><span style="COLOR: #008080">*/</span></span><span style="COLOR: #000000"><br /></span><span style="COLOR: #008080"> 2</span><span style="COLOR: #000000"><img id="Codehighlighter1_67_132_Open_Image" onclick="this.style.display='none'; Codehighlighter1_67_132_Open_Text.style.display='none'; Codehighlighter1_67_132_Closed_Image.style.display='inline'; Codehighlighter1_67_132_Closed_Text.style.display='inline';" src="http://www.tkk7.com/images/OutliningIndicators/ExpandedBlockStart.gif" align="top" /><img id="Codehighlighter1_67_132_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_67_132_Closed_Text.style.display='none'; Codehighlighter1_67_132_Open_Image.style.display='inline'; Codehighlighter1_67_132_Open_Text.style.display='inline';" src="http://www.tkk7.com/images/OutliningIndicators/ContractedBlock.gif" align="top" /></span><span id="Codehighlighter1_67_132_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff">/**/</span><span id="Codehighlighter1_67_132_Open_Text"><span style="COLOR: #008080">/*</span><span style="COLOR: #008080"> Table: T_RoleInfo                                            </span><span style="COLOR: #008080">*/</span></span><span style="COLOR: #000000"><br /></span><span style="COLOR: #008080"> 3</span><span style="COLOR: #000000"><img id="Codehighlighter1_134_199_Open_Image" onclick="this.style.display='none'; Codehighlighter1_134_199_Open_Text.style.display='none'; Codehighlighter1_134_199_Closed_Image.style.display='inline'; Codehighlighter1_134_199_Closed_Text.style.display='inline';" src="http://www.tkk7.com/images/OutliningIndicators/ExpandedBlockStart.gif" align="top" /><img id="Codehighlighter1_134_199_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_134_199_Closed_Text.style.display='none'; Codehighlighter1_134_199_Open_Image.style.display='inline'; Codehighlighter1_134_199_Open_Text.style.display='inline';" src="http://www.tkk7.com/images/OutliningIndicators/ContractedBlock.gif" align="top" /></span><span id="Codehighlighter1_134_199_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff">/**/</span><span id="Codehighlighter1_134_199_Open_Text"><span style="COLOR: #008080">/*</span><span style="COLOR: #008080">==============================================================</span><span style="COLOR: #008080">*/</span></span><span style="COLOR: #000000"><br /></span><span style="COLOR: #008080"> 4</span><span style="COLOR: #000000"><img src="http://www.tkk7.com/images/OutliningIndicators/None.gif" align="top" /></span><span style="COLOR: #0000ff">create</span><span style="COLOR: #000000"> </span><span style="COLOR: #0000ff">table</span><span style="COLOR: #000000"> T_RoleInfo <br /></span><span style="COLOR: #008080"> 5</span><span style="COLOR: #000000"><img src="http://www.tkk7.com/images/OutliningIndicators/None.gif" align="top" />(<br /></span><span style="COLOR: #008080"> 6</span><span style="COLOR: #000000"><img src="http://www.tkk7.com/images/OutliningIndicators/None.gif" align="top" />    pk_id                </span><span style="FONT-WEIGHT: bold; COLOR: #000000">number</span><span style="COLOR: #000000">                         </span><span style="COLOR: #808080">not</span><span style="COLOR: #000000"> </span><span style="COLOR: #0000ff">null</span><span style="COLOR: #000000">,<br /></span><span style="COLOR: #008080"> 7</span><span style="COLOR: #000000"><img src="http://www.tkk7.com/images/OutliningIndicators/None.gif" align="top" />    role_name            </span><span style="FONT-WEIGHT: bold; COLOR: #000000">VARCHAR2</span><span style="COLOR: #000000">(</span><span style="FONT-WEIGHT: bold; COLOR: #800000">20</span><span style="COLOR: #000000">),<br /></span><span style="COLOR: #008080"> 8</span><span style="COLOR: #000000"><img src="http://www.tkk7.com/images/OutliningIndicators/None.gif" align="top" />    role_desc            </span><span style="FONT-WEIGHT: bold; COLOR: #000000">VARCHAR2</span><span style="COLOR: #000000">(</span><span style="FONT-WEIGHT: bold; COLOR: #800000">100</span><span style="COLOR: #000000">),<br /></span><span style="COLOR: #008080"> 9</span><span style="COLOR: #000000"><img src="http://www.tkk7.com/images/OutliningIndicators/None.gif" align="top" />    parent_role_id       </span><span style="FONT-WEIGHT: bold; COLOR: #000000">NUMBER</span><span style="COLOR: #000000">,<br /></span><span style="COLOR: #008080">10</span><span style="COLOR: #000000"><img src="http://www.tkk7.com/images/OutliningIndicators/None.gif" align="top" />    </span><span style="COLOR: #0000ff">constraint</span><span style="COLOR: #000000"> PK_T_ROLEINFO </span><span style="COLOR: #0000ff">primary</span><span style="COLOR: #000000"> </span><span style="COLOR: #0000ff">key</span><span style="COLOR: #000000"> (pk_id)<br /></span><span style="COLOR: #008080">11</span><span style="COLOR: #000000"><img src="http://www.tkk7.com/images/OutliningIndicators/None.gif" align="top" />);</span></div>角色表中需要说明的׃个parent_role_id父角色idQ此字段用来扩展角色的承关pR?br />资源?T_ResourceInfo)Q?br /><div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><span style="COLOR: #008080"> 1</span><img id="Codehighlighter1_0_65_Open_Image" onclick="this.style.display='none'; Codehighlighter1_0_65_Open_Text.style.display='none'; Codehighlighter1_0_65_Closed_Image.style.display='inline'; Codehighlighter1_0_65_Closed_Text.style.display='inline';" src="http://www.tkk7.com/images/OutliningIndicators/ExpandedBlockStart.gif" align="top" /><img id="Codehighlighter1_0_65_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_0_65_Closed_Text.style.display='none'; Codehighlighter1_0_65_Open_Image.style.display='inline'; Codehighlighter1_0_65_Open_Text.style.display='inline';" src="http://www.tkk7.com/images/OutliningIndicators/ContractedBlock.gif" align="top" /><span id="Codehighlighter1_0_65_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff">/**/</span><span id="Codehighlighter1_0_65_Open_Text"><span style="COLOR: #008080">/*</span><span style="COLOR: #008080">==============================================================</span><span style="COLOR: #008080">*/</span></span><span style="COLOR: #000000"><br /></span><span style="COLOR: #008080"> 2</span><span style="COLOR: #000000"><img id="Codehighlighter1_67_132_Open_Image" onclick="this.style.display='none'; Codehighlighter1_67_132_Open_Text.style.display='none'; Codehighlighter1_67_132_Closed_Image.style.display='inline'; Codehighlighter1_67_132_Closed_Text.style.display='inline';" src="http://www.tkk7.com/images/OutliningIndicators/ExpandedBlockStart.gif" align="top" /><img id="Codehighlighter1_67_132_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_67_132_Closed_Text.style.display='none'; Codehighlighter1_67_132_Open_Image.style.display='inline'; Codehighlighter1_67_132_Open_Text.style.display='inline';" src="http://www.tkk7.com/images/OutliningIndicators/ContractedBlock.gif" align="top" /></span><span id="Codehighlighter1_67_132_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff">/**/</span><span id="Codehighlighter1_67_132_Open_Text"><span style="COLOR: #008080">/*</span><span style="COLOR: #008080"> Table: T_ResourceInfo                                        </span><span style="COLOR: #008080">*/</span></span><span style="COLOR: #000000"><br /></span><span style="COLOR: #008080"> 3</span><span style="COLOR: #000000"><img id="Codehighlighter1_134_199_Open_Image" onclick="this.style.display='none'; Codehighlighter1_134_199_Open_Text.style.display='none'; Codehighlighter1_134_199_Closed_Image.style.display='inline'; Codehighlighter1_134_199_Closed_Text.style.display='inline';" src="http://www.tkk7.com/images/OutliningIndicators/ExpandedBlockStart.gif" align="top" /><img id="Codehighlighter1_134_199_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_134_199_Closed_Text.style.display='none'; Codehighlighter1_134_199_Open_Image.style.display='inline'; Codehighlighter1_134_199_Open_Text.style.display='inline';" src="http://www.tkk7.com/images/OutliningIndicators/ContractedBlock.gif" align="top" /></span><span id="Codehighlighter1_134_199_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff">/**/</span><span id="Codehighlighter1_134_199_Open_Text"><span style="COLOR: #008080">/*</span><span style="COLOR: #008080">==============================================================</span><span style="COLOR: #008080">*/</span></span><span style="COLOR: #000000"><br /></span><span style="COLOR: #008080"> 4</span><span style="COLOR: #000000"><img src="http://www.tkk7.com/images/OutliningIndicators/None.gif" align="top" /></span><span style="COLOR: #0000ff">create</span><span style="COLOR: #000000"> </span><span style="COLOR: #0000ff">table</span><span style="COLOR: #000000"> T_ResourceInfo <br /></span><span style="COLOR: #008080"> 5</span><span style="COLOR: #000000"><img src="http://www.tkk7.com/images/OutliningIndicators/None.gif" align="top" />(<br /></span><span style="COLOR: #008080"> 6</span><span style="COLOR: #000000"><img src="http://www.tkk7.com/images/OutliningIndicators/None.gif" align="top" />    pk_id                </span><span style="FONT-WEIGHT: bold; COLOR: #000000">NUMBER</span><span style="COLOR: #000000">                         </span><span style="COLOR: #808080">not</span><span style="COLOR: #000000"> </span><span style="COLOR: #0000ff">null</span><span style="COLOR: #000000">,<br /></span><span style="COLOR: #008080"> 7</span><span style="COLOR: #000000"><img src="http://www.tkk7.com/images/OutliningIndicators/None.gif" align="top" />    </span><span style="COLOR: #000000">module_name          </span><span style="FONT-WEIGHT: bold; COLOR: #000000">VARCHAR2</span><span style="COLOR: #000000">(</span><span style="FONT-WEIGHT: bold; COLOR: #800000">20</span><span style="COLOR: #000000">),<br /></span><span style="COLOR: #008080"> 8</span><span style="COLOR: #000000"><img src="http://www.tkk7.com/images/OutliningIndicators/None.gif" align="top" />    module_code          </span><span style="FONT-WEIGHT: bold; COLOR: #000000">VARCHAR2</span><span style="COLOR: #000000">(</span><span style="FONT-WEIGHT: bold; COLOR: #800000">10</span><span style="COLOR: #000000">),<br /></span><span style="COLOR: #008080"> 9</span><span style="COLOR: #000000"><img src="http://www.tkk7.com/images/OutliningIndicators/None.gif" align="top" />    module_desc          </span><span style="FONT-WEIGHT: bold; COLOR: #000000">VARCHAR2</span><span style="COLOR: #000000">(</span><span style="FONT-WEIGHT: bold; COLOR: #800000">100</span><span style="COLOR: #000000">),<br /></span><span style="COLOR: #008080">10</span><span style="COLOR: #000000"><img src="http://www.tkk7.com/images/OutliningIndicators/None.gif" align="top" />    privilege_name       </span><span style="FONT-WEIGHT: bold; COLOR: #000000">VARCHAR2</span><span style="COLOR: #000000">(</span><span style="FONT-WEIGHT: bold; COLOR: #800000">10</span><span style="COLOR: #000000">),<br /></span><span style="COLOR: #008080">11</span><span style="COLOR: #000000"><img src="http://www.tkk7.com/images/OutliningIndicators/None.gif" align="top" />    privilege_code       </span><span style="FONT-WEIGHT: bold; COLOR: #000000">CHAR</span><span style="COLOR: #000000">,<br /></span><span style="COLOR: #008080">12</span><span style="COLOR: #000000"><img src="http://www.tkk7.com/images/OutliningIndicators/None.gif" align="top" />    privilege_desc       </span><span style="FONT-WEIGHT: bold; COLOR: #000000">VARCHAR2</span><span style="COLOR: #000000">(</span><span style="FONT-WEIGHT: bold; COLOR: #800000">100</span><span style="COLOR: #000000">),<br /></span><span style="COLOR: #008080">13</span><span style="COLOR: #000000"><img src="http://www.tkk7.com/images/OutliningIndicators/None.gif" align="top" />    </span><span style="COLOR: #0000ff">constraint</span><span style="COLOR: #000000"> PK_T_RESOURCEINFO </span><span style="COLOR: #0000ff">primary</span><span style="COLOR: #000000"> </span><span style="COLOR: #0000ff">key</span><span style="COLOR: #000000"> (pk_id)<br /></span><span style="COLOR: #008080">14</span><span style="COLOR: #000000"><img src="http://www.tkk7.com/images/OutliningIndicators/None.gif" align="top" />);<br /></span><span style="COLOR: #008080">15</span><span style="COLOR: #000000"><img src="http://www.tkk7.com/images/OutliningIndicators/None.gif" align="top" /></span></div>q个表需要说明的比较多了,首先该表用来记录资源与资源权限,我这Ҏ谓的资源是实体Q就是数据库表,角色需要对应到资源Q有些角色对该资源有权限Q有些角色则对该资源无权限,角色可对此资源操作的权限也不同。说白了Q就是不同的角色对不同的数据库表的操作权限不同。因此我们这里的资源是数据库表?br />module_nameQ资源名Qmodule_codeQ资源代码(存放数据库表名)Q?br />privilege_nameQ权限名Qprivilege_codeQ权限代码(代表权限的code,也就是我们上文所说的权|<br />例如角色aҎ据库表T_UserInfo有添加与删除的权限则该表应该按照如下配置Q?br />module_nameQh员信息;<br />module_codeQT_UserInfo<br />privilege_nameQ添加与删除<br />privilege_codeQ?<br />q里我们假设的是2?ơ方为添加权限,2?ơ方为添加权限,2?ơ方为删除权限,2?ơ方为更新权限,则拥有添加与删除权限应该ؓ2?ơ方+2?ơ方=6Q其?的几ơ方代表什么含义我们可以另外开个数据库表来配置Q或者xml文gQ此处我们忽略这些步骤。当然如果你的权限较多,譬如你还希望aq个角色对h员信息表有上传得权限Q我们可以将上传权限定义ؓ2?ơ方Q?6Q?6?6q制Cؓ10Q记录在数据库里的Ş式应该ؓ0x10如果a角色拥有d、删除、更新、上传权限,则a的权值应该ؓ2?ơ方+2?ơ方+2?ơ方+2?ơ方=30,?6q制来表C就应该?x1EQ记?6q制数据Q你不用担心位数不够?br />剩余的就是几张关p表了:<br />人员角色关系?T_R_User_Role)Q?br /><div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><span style="COLOR: #008080"> 1</span><img id="Codehighlighter1_0_65_Open_Image" onclick="this.style.display='none'; Codehighlighter1_0_65_Open_Text.style.display='none'; Codehighlighter1_0_65_Closed_Image.style.display='inline'; Codehighlighter1_0_65_Closed_Text.style.display='inline';" src="http://www.tkk7.com/images/OutliningIndicators/ExpandedBlockStart.gif" align="top" /><img id="Codehighlighter1_0_65_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_0_65_Closed_Text.style.display='none'; Codehighlighter1_0_65_Open_Image.style.display='inline'; Codehighlighter1_0_65_Open_Text.style.display='inline';" src="http://www.tkk7.com/images/OutliningIndicators/ContractedBlock.gif" align="top" /><span id="Codehighlighter1_0_65_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff">/**/</span><span id="Codehighlighter1_0_65_Open_Text"><span style="COLOR: #008080">/*</span><span style="COLOR: #008080">==============================================================</span><span style="COLOR: #008080">*/</span></span><span style="COLOR: #000000"><br /></span><span style="COLOR: #008080"> 2</span><span style="COLOR: #000000"><img id="Codehighlighter1_67_132_Open_Image" onclick="this.style.display='none'; Codehighlighter1_67_132_Open_Text.style.display='none'; Codehighlighter1_67_132_Closed_Image.style.display='inline'; Codehighlighter1_67_132_Closed_Text.style.display='inline';" src="http://www.tkk7.com/images/OutliningIndicators/ExpandedBlockStart.gif" align="top" /><img id="Codehighlighter1_67_132_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_67_132_Closed_Text.style.display='none'; Codehighlighter1_67_132_Open_Image.style.display='inline'; Codehighlighter1_67_132_Open_Text.style.display='inline';" src="http://www.tkk7.com/images/OutliningIndicators/ContractedBlock.gif" align="top" /></span><span id="Codehighlighter1_67_132_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff">/**/</span><span id="Codehighlighter1_67_132_Open_Text"><span style="COLOR: #008080">/*</span><span style="COLOR: #008080"> Table: T_R_user_role                                         </span><span style="COLOR: #008080">*/</span></span><span style="COLOR: #000000"><br /></span><span style="COLOR: #008080"> 3</span><span style="COLOR: #000000"><img id="Codehighlighter1_134_199_Open_Image" onclick="this.style.display='none'; Codehighlighter1_134_199_Open_Text.style.display='none'; Codehighlighter1_134_199_Closed_Image.style.display='inline'; Codehighlighter1_134_199_Closed_Text.style.display='inline';" src="http://www.tkk7.com/images/OutliningIndicators/ExpandedBlockStart.gif" align="top" /><img id="Codehighlighter1_134_199_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_134_199_Closed_Text.style.display='none'; Codehighlighter1_134_199_Open_Image.style.display='inline'; Codehighlighter1_134_199_Open_Text.style.display='inline';" src="http://www.tkk7.com/images/OutliningIndicators/ContractedBlock.gif" align="top" /></span><span id="Codehighlighter1_134_199_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff">/**/</span><span id="Codehighlighter1_134_199_Open_Text"><span style="COLOR: #008080">/*</span><span style="COLOR: #008080">==============================================================</span><span style="COLOR: #008080">*/</span></span><span style="COLOR: #000000"><br /></span><span style="COLOR: #008080"> 4</span><span style="COLOR: #000000"><img src="http://www.tkk7.com/images/OutliningIndicators/None.gif" align="top" /></span><span style="COLOR: #0000ff">create</span><span style="COLOR: #000000"> </span><span style="COLOR: #0000ff">table</span><span style="COLOR: #000000"> T_R_user_role <br /></span><span style="COLOR: #008080"> 5</span><span style="COLOR: #000000"><img src="http://www.tkk7.com/images/OutliningIndicators/None.gif" align="top" />(<br /></span><span style="COLOR: #008080"> 6</span><span style="COLOR: #000000"><img src="http://www.tkk7.com/images/OutliningIndicators/None.gif" align="top" />    pk_id                </span><span style="FONT-WEIGHT: bold; COLOR: #000000">NUMBER</span><span style="COLOR: #000000">                         </span><span style="COLOR: #808080">not</span><span style="COLOR: #000000"> </span><span style="COLOR: #0000ff">null</span><span style="COLOR: #000000">,<br /></span><span style="COLOR: #008080"> 7</span><span style="COLOR: #000000"><img src="http://www.tkk7.com/images/OutliningIndicators/None.gif" align="top" />    </span><span style="COLOR: #ff00ff">user_id</span><span style="COLOR: #000000">              </span><span style="FONT-WEIGHT: bold; COLOR: #000000">NUMBER</span><span style="COLOR: #000000">,<br /></span><span style="COLOR: #008080"> 8</span><span style="COLOR: #000000"><img src="http://www.tkk7.com/images/OutliningIndicators/None.gif" align="top" />    role_id              </span><span style="FONT-WEIGHT: bold; COLOR: #000000">NUMBER</span><span style="COLOR: #000000">,<br /></span><span style="COLOR: #008080"> 9</span><span style="COLOR: #000000"><img src="http://www.tkk7.com/images/OutliningIndicators/None.gif" align="top" />    </span><span style="COLOR: #0000ff">constraint</span><span style="COLOR: #000000"> PK_T_R_USER_ROLE </span><span style="COLOR: #0000ff">primary</span><span style="COLOR: #000000"> </span><span style="COLOR: #0000ff">key</span><span style="COLOR: #000000"> (pk_id)<br /></span><span style="COLOR: #008080">10</span><span style="COLOR: #000000"><img src="http://www.tkk7.com/images/OutliningIndicators/None.gif" align="top" />);<br /></span><span style="COLOR: #008080">11</span><span style="COLOR: #000000"><img src="http://www.tkk7.com/images/OutliningIndicators/None.gif" align="top" /></span></div>角色资源关系?T_R_Role_Resource)<br /><div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><span style="COLOR: #008080"> 1</span><img id="Codehighlighter1_0_65_Open_Image" onclick="this.style.display='none'; Codehighlighter1_0_65_Open_Text.style.display='none'; Codehighlighter1_0_65_Closed_Image.style.display='inline'; Codehighlighter1_0_65_Closed_Text.style.display='inline';" src="http://www.tkk7.com/images/OutliningIndicators/ExpandedBlockStart.gif" align="top" /><img id="Codehighlighter1_0_65_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_0_65_Closed_Text.style.display='none'; Codehighlighter1_0_65_Open_Image.style.display='inline'; Codehighlighter1_0_65_Open_Text.style.display='inline';" src="http://www.tkk7.com/images/OutliningIndicators/ContractedBlock.gif" align="top" /><span id="Codehighlighter1_0_65_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff">/**/</span><span id="Codehighlighter1_0_65_Open_Text"><span style="COLOR: #008080">/*</span><span style="COLOR: #008080">==============================================================</span><span style="COLOR: #008080">*/</span></span><span style="COLOR: #000000"><br /></span><span style="COLOR: #008080"> 2</span><span style="COLOR: #000000"><img id="Codehighlighter1_67_132_Open_Image" onclick="this.style.display='none'; Codehighlighter1_67_132_Open_Text.style.display='none'; Codehighlighter1_67_132_Closed_Image.style.display='inline'; Codehighlighter1_67_132_Closed_Text.style.display='inline';" src="http://www.tkk7.com/images/OutliningIndicators/ExpandedBlockStart.gif" align="top" /><img id="Codehighlighter1_67_132_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_67_132_Closed_Text.style.display='none'; Codehighlighter1_67_132_Open_Image.style.display='inline'; Codehighlighter1_67_132_Open_Text.style.display='inline';" src="http://www.tkk7.com/images/OutliningIndicators/ContractedBlock.gif" align="top" /></span><span id="Codehighlighter1_67_132_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff">/**/</span><span id="Codehighlighter1_67_132_Open_Text"><span style="COLOR: #008080">/*</span><span style="COLOR: #008080"> Table: T_R_role_resource                                     </span><span style="COLOR: #008080">*/</span></span><span style="COLOR: #000000"><br /></span><span style="COLOR: #008080"> 3</span><span style="COLOR: #000000"><img id="Codehighlighter1_134_199_Open_Image" onclick="this.style.display='none'; Codehighlighter1_134_199_Open_Text.style.display='none'; Codehighlighter1_134_199_Closed_Image.style.display='inline'; Codehighlighter1_134_199_Closed_Text.style.display='inline';" src="http://www.tkk7.com/images/OutliningIndicators/ExpandedBlockStart.gif" align="top" /><img id="Codehighlighter1_134_199_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_134_199_Closed_Text.style.display='none'; Codehighlighter1_134_199_Open_Image.style.display='inline'; Codehighlighter1_134_199_Open_Text.style.display='inline';" src="http://www.tkk7.com/images/OutliningIndicators/ContractedBlock.gif" align="top" /></span><span id="Codehighlighter1_134_199_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff">/**/</span><span id="Codehighlighter1_134_199_Open_Text"><span style="COLOR: #008080">/*</span><span style="COLOR: #008080">==============================================================</span><span style="COLOR: #008080">*/</span></span><span style="COLOR: #000000"><br /></span><span style="COLOR: #008080"> 4</span><span style="COLOR: #000000"><img src="http://www.tkk7.com/images/OutliningIndicators/None.gif" align="top" /></span><span style="COLOR: #0000ff">create</span><span style="COLOR: #000000"> </span><span style="COLOR: #0000ff">table</span><span style="COLOR: #000000"> T_R_role_resource <br /></span><span style="COLOR: #008080"> 5</span><span style="COLOR: #000000"><img src="http://www.tkk7.com/images/OutliningIndicators/None.gif" align="top" />(<br /></span><span style="COLOR: #008080"> 6</span><span style="COLOR: #000000"><img src="http://www.tkk7.com/images/OutliningIndicators/None.gif" align="top" />    pk_id                </span><span style="FONT-WEIGHT: bold; COLOR: #000000">NUMBER</span><span style="COLOR: #000000">                         </span><span style="COLOR: #808080">not</span><span style="COLOR: #000000"> </span><span style="COLOR: #0000ff">null</span><span style="COLOR: #000000">,<br /></span><span style="COLOR: #008080"> 7</span><span style="COLOR: #000000"><img src="http://www.tkk7.com/images/OutliningIndicators/None.gif" align="top" />    role_id              </span><span style="FONT-WEIGHT: bold; COLOR: #000000">NUMBER</span><span style="COLOR: #000000">,<br /></span><span style="COLOR: #008080"> 8</span><span style="COLOR: #000000"><img src="http://www.tkk7.com/images/OutliningIndicators/None.gif" align="top" />    res_id               </span><span style="FONT-WEIGHT: bold; COLOR: #000000">NUMBER</span><span style="COLOR: #000000">,<br /></span><span style="COLOR: #008080"> 9</span><span style="COLOR: #000000"><img src="http://www.tkk7.com/images/OutliningIndicators/None.gif" align="top" />    </span><span style="COLOR: #0000ff">constraint</span><span style="COLOR: #000000"> PK_T_R_ROLE_RESOURCE </span><span style="COLOR: #0000ff">primary</span><span style="COLOR: #000000"> </span><span style="COLOR: #0000ff">key</span><span style="COLOR: #000000"> (pk_id)<br /></span><span style="COLOR: #008080">10</span><span style="COLOR: #000000"><img src="http://www.tkk7.com/images/OutliningIndicators/None.gif" align="top" />);<br /></span><span style="COLOR: #008080">11</span><span style="COLOR: #000000"><img src="http://www.tkk7.com/images/OutliningIndicators/None.gif" align="top" /></span></div>当然如果你不怕麻烦,可以dq去l?group)、系l?system)、组l?organization)Q徏立v一套属于你自己的完整的权限解决ҎQ作为系l无关的模块d用到每个你所架构的应用中去,那是一件极爽的事情?br />q箋剧开始了Q暂时搁W~~<img src ="http://www.tkk7.com/tsylo/aggbug/91467.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.tkk7.com/tsylo/" target="_blank">江上一叶舟</a> 2007-01-02 23:41 <a href="http://www.tkk7.com/tsylo/archive/2007/01/02/91467.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>web开发中的权限设计拙见一?1)----设计思\http://www.tkk7.com/tsylo/archive/2007/01/02/91353.html江上一叶舟江上一叶舟Tue, 02 Jan 2007 04:11:00 GMThttp://www.tkk7.com/tsylo/archive/2007/01/02/91353.htmlhttp://www.tkk7.com/tsylo/comments/91353.htmlhttp://www.tkk7.com/tsylo/archive/2007/01/02/91353.html#Feedback21http://www.tkk7.com/tsylo/comments/commentRss/91353.htmlhttp://www.tkk7.com/tsylo/services/trackbacks/91353.html最q项目的目很奇怪,一个大目(pȝ)里包含了很多的子系l,而这些子pȝ中都有权限控制的部分Q这件事情挺让我头痛的,记得一q前在沈阻I我曾l有一D|间也因因q个问题而疲于奔命,Z么说疲于奔命呢?׃当时目q度不允许,D最l系l权限模块草草了事,每个模块都是p权限字符串来控制用户ACLQ当用户无法讉KӞ提示权限不够。这么做对用h很不负责ȝQ既然让用户看到了操作的方式和界面,Z么又告诉用户没有权限呢?我开始怀疑我们是否应该在底层封杀用户的访问权限?

现在目开展v来了Q虽然目前我已经有了Ҏ限控制的一套方案,q且实施成了我的可重用框架代码,虽然目前的权限也是基于众星捧月的AOP思想Q但我至今对权限设计仍有两个疑惑Q?

疑惑一Q很多同行提出方案,惌在底层就截取用户权限Q控制用户对Ҏ或者类的访问。这样做的好处在于可以将pȝ功能与业务逻辑松散耦合Qƈ且实现简单,l构清晰Q三两个advisor、filterQ或者acegip搞定Q但在webE序中体现出了他的劣势,当我们将用户的访问拒l在业务逻辑之外的时候,我们此时是否应该抛出异常提示用户Q一旦提C用h有相应的权限Q我认ؓ对于用户来说Q这׃是一个perfect practice。由此得出,我们Ҏ׃应该让用户做此次操作Q而控制用h作的源头是界面Q也是_在界面上我们应该对用户的权限元?如添加按钮、功能菜单等)q行控制。此Ӟ一对矛监ևCQ要控制界面上Ş形色色的元素只有两种办法Q一Q将权限与你的界面结合v来设计,q将q背AOP的思想Q也使得pȝ控制模块的重用性大大下降,二,我们借鉴primeton的想法,权限控制的理念抽取出来Q单独做成一套权限系l,解决你所有的需要权限控制的pȝ需求,q样也有令h头痛的问题,你的所有想用它来控制权限的pȝQ必ȝ面上l一风格。或许这L方式对商业webpȝ是合适的Q毕竟需要你大刀阔斧个性化的地方不多,但我们却很难保证在未来几q内商业webpȝ的风g改变。再者,开发这么一个系l也不是一y而就的事Q在q个问题上一直让我困惑不巌Ӏ?/p>


疑惑二:大多应用的权限判定是Z权限字符串的Q但存储在数据库中的权限字符串能够判定的权限q不多,在我们这ơ项目中Q我引用了基于二q制?421权限判定法则Q我深深的感觉到权限字符串的弱势Q这使我惌v了中国古老一套数学理?“盈不术”,递增序列的魅力在我眼前滑q,

首先我来解释一下盈余不理论:有十只盒子,W一个盒子里放一个盘子,W二个盒子里放两只,W三个盒子里攑֛只,W四个盒子里攑օ只……第九个盒子里放256只,W十个盒子放512只,即第N只箱子里?^(N-1)只盘子,一?023只。那么命题如下:?023q个数字之内QQ何一个数目都可以p十只盒子里的几只l合相加而成。那?????6?2?4?28?56?12q个序列Z么有q么个魔力?q个数列的特点:1、每Ҏ后一的二倍,2、每w比前面所有项的和大,而且?。这?是关键Q就因ؓq个1Q它才可以按1递增Q拼出d之内L一个整数。这个序列叫做超递增序列Q它是解册包问题的基础?、拼出d之内L一个整数可以由q个序列中的一些数构成Q且构成Ҏ唯一Q据说是密码学中的NP定理。譬如说q个数列d?0q个敎ͼ只能?6+4一U方法构成,由此延出来Q如果综合中q个数据代表一个权|我们可以解出它的所有构成参敎ͼ操作Q,?0q个数据Q我们可以挨个和序列中每一Ҏ位与Q得出来如果不等?Q就说明他是p个数构成的?

保存权值到intq是varchar对于我们来说是个问题Q当Ӟ保存字符串的好处是运压力小。我们可能听q一个故事,是把这个超递增序列延到第64,是那个术士和皇帝在国际象棋盘上要c粒的传说?4的和是一个天文数字!但计机本n是一个只认识二进制的机器Q很多程序员整天只关心架构,甚至不知道或者不兛_位操作是什么玩意,当然我们有朋友担心数据库的int不够长,那么既然可以保存一个只??l成的varchar字符ԌZ么不能保存一个十六进制的字符Ԍ有h规定varchar只能保存01吗?十六q制串的长度正好是二q制的四分之一?

由此我们可以无限制的扩展权值操作?

在最q的目里,我对权限的控制分成两个部分,W一是用户体验上,我设|了一个权限标{,从数据库中抽取权限信息,然后做到标签里,也凑或算成是界面AOP了,W二是底层的拦截,用了Spring 的AOPQؓ的是防止权限冲突Q双齐下。暂时解x限所需Q另外在法上我用了16q制的权限判别代码,虽然配置较麻烦,写完代码q要写文档说明,不过也解决了权限J杂又多的问题,暂时p样了Q嘿嘿,以后有空再研I?



江上一叶舟 2007-01-02 12:11 发表评论
]]>
վ֩ģ壺 þóѴƬ| ػɫĴƬۿƵ| Ƶѹۿ| www.޾Ʒ.com| ޾Ʒ2021| ts߹ۿƵ| avƬ߹ۿ| һƬ| һa| պƷһ| aëƬվ| ѵƵ| ߹ۿƬ˳Ƶ| AVվþþƷ| һպƵ| ɫö| ѹۿŮˮƵ| йŮר| ٸaëƬ˳| ĻƵѹۿ| av| ѹۿëƬaƬ2008| ߹ۿһbd| ҹAVƬ| 99߹ۿƵ| Ʒһ| ĻӰԺѹۿ| ĻѸƵ | ѿAAƬƵ| Vþþ| þþƷר| ޹Ʒվ߲| ùƷӰ˾þ| þһ| ޾Ʒbv߹ۿ| ޾ƷƷþ99| 91Ƶ| ձ߿ѹۿ| 鶹Ʒý| ѹһػƾþ| 16Ůڵ|