专注收集记录技术开发学习笔记、技术难点、解决方案
网站信息搜索 >> 请输入关键词:
您当前的位置: 首页 > 信息/网络安全

“个人设立”设计思路

发布时间:2011-07-03 07:06:34 文章来源:www.iduyao.cn 采编人员:星星草
“个人设置”设计思路
系统中用户可以自己定义页面宽度,待办事项列表显示行数,是否自动弹出提醒窗口,审批意见默认项,下面我就这一需求实现思路进行描述。

一、在.config文件中定义“用户自定义属性”栏目的数据结构及默认值。

     <userSettings>
  <applications>
   <add name ="OAPortal" description="门户应用">
    <programs>
     <add name ="Portal" description="门户">
      <properties>
       <add name ="UnCompleteTaskListPageSize" description="待办事项单页显示条数" valueType="Integer" category="列表展示" defaultValue="10"  minValue="1" maxValue="100"/>
       <add name ="UnReadTaskListPageSize" description="通知单页显示条数" valueType="Integer" category="列表展示" defaultValue="10" minValue="1" maxValue="100"/>
       <add name ="CompletedTaskListPageSize" description="已办事项单页显示条数" valueType="Integer" category="列表展示" defaultValue="10" minValue="1" maxValue="100"/>
            <add name ="SearchPageSize" description="全文搜索单页显示条数" valueType="Integer" category="列表展示" defaultValue="10" minValue="1" maxValue="100"/>
       <add name ="CommonOpinion" description ="常用意见" valueType ="String" category="公共设置" defaultValue="同意 不同意 已阅"/>
       <add name ="AutoShowNotify" description ="是否自动弹出日程提醒窗口" valueType ="Boolean" category="公共设置" defaultValue="true"/>
      </properties>
     </add>
    </programs>
   </add>
  </applications>
 </userSettings>

配置信息中包含如下一些信息:

1、应用名称,applications,在大项目中,一个系统可能有多个应用。

2、程序名称,programs,一个应用可能有多个程序。

3、属性,properties,一个属性包含,name(名称),description(描述),valueType(值类型),category(属性类型),defaultValue(默认值)

二、在数据库建入相应表,用于存储用户的自定义设置信息,数据结构如下:

 [USER_ID] [nvarchar](36) NOT NULL,
 [APPLICATION_NAME] [nvarchar](36) NOT NULL,
 [PROGRAM_NAME] [nvarchar](36) NOT NULL,
 [PROPERTY_NAME] [nvarchar](36) NOT NULL,
 [PROPERTY_VALUE] [nvarchar](512) NOT NULL

三、数据读取

    数据读取需要考虑如下方面:

    1、数据读取频繁(必须用缓存来解决)

    2、用户还没有设置“个人设置”(所以取用户的“个人设置”数据前,先要取.config文件中“个人设置”数据项及其默认值来初始化个人设置数据实体对象。

    3、取出数据库中“个人设置”项,更新当前“个人设置”数据实体对象,但更新之前需要判断数据库中某项设置,在定义项中是否还存在,或许某一项“个人设置”已经从.config文件中删除了。

        public static UserSettings GetUserSettings(string userID)
        {
            ExceptionHelper.TrueThrow<ArgumentNullException>(userID == null, "userID");

            UserSettings us;

            //先从Cache中读取,若已过期,则重新构造,并写入Cache
            lock(thisLock)
            {
                if (UserSettingsCacheQueue.Instance.TryGetValue(userID, out us) == false)
                {
友情提示:
信息收集于互联网,如果您发现错误或造成侵权,请及时通知本站更正或删除,具体联系方式见页面底部联系我们,谢谢。

其他相似内容:

热门推荐: