找回密码
 注册账号

QQ登录

只需一步,快速开始

手机号码,快捷登录

手机号码,快捷登录

初学者课程:T3自学|T6自学|U8自学软件下载课件下载工具下载资料:通资料|U8资料|NC|培训|年结积分规则 | 使用常见问题Q&A
知识库:U8 | | NC | U9 | OA | 政务U8|U9|NCC|NC65|NC65客开|NCC客开新手必读 | 任务 | 快速增金币用友QQ群[微信群]
查看: 10113|回复: 8

[资料] NC5.6缓存配置和使用说明

[复制链接]
发表于 2011-9-23 08:27:07 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?注册账号

×
NC5.6缓存配置和使用说明
缓存配置和使用方面的内容有以下三方面的内容:缓存配置文件、前台缓存配置、后台的缓存数据生成工具。下面分别说明一下。
1   配置文件的相关说明
缓存的配置文件分为原始配置文件和生成配置文件。原始配置文件有两种,一是tabsqls.xml,存在于UAP模块下,规定了整个系统使用前台缓存的默认参数。另一类是tabconfig.xml,该文件存在于需要使用前台缓存的模块中,位于模块的config目录下,规定了模块需要缓存的表和列。
1.1   原始配置文件tabsqls.xml
<Tables>
    <Params>
        <HeadSql ignoreRrror="true"> <![CDATA[]]>
        </HeadSql>
        <EndSql ignoreRrror="true"> <![CDATA[[]]>
        </EndSql>
        <PageLoadSize>6000</PageLoadSize>
        <CanInit>true</CanInit>
        <CanRefresh>true</CanRefresh>
        <CanConfigure>true</CanConfigure>
        <RefreshCacheWhenLogin>false</RefreshCacheWhenLogin>
        <StartupCache>true</StartupCache>
        <StartupAutoRefresh>true</StartupAutoRefresh>
        <RefreshInterval>90</RefreshInterval>
        <RefreshWhenNoDataFound>false</RefreshWhenNoDataFound>
        <NeedCacheCorps>0001</NeedCacheCorps>        <CheckVersionForUpdatedRefresh>true</CheckVersionForUpdatedRefresh>
        <CanModifyCorps>true</CanModifyCorps>
       <lfuLimit>10000</lfuLimit>
    </Params>
</Tables>
n  HeadSql前置sql,只在初始化缓存前执行。该标签有个属性ignoreRrror,当其值为ture时,则忽略掉执行该sql时发生的异常。
n  EndSql后置sql,只在初始化缓存后执行。其它情况同HeadSql。
n  PageLoadSize下载缓存数据时分页的大小。单位是记录的条数。
n  CanInit是否可以初始化缓存及使用配置文件界面。此变量直接对应到缓存配置板上的“初始化缓存”按钮是否可用。
n  CanRefresh是否可以刷新缓存。此变量将控制前台用户可否手动刷新缓存,对应缓存配置板上的“刷新”按钮是否可用;
n  CanConfigure是否可以配置缓存。此变量将控制前台用户可否配置缓存,对应缓存配置板上的“配置”按钮是否可用;
n  RefreshCacheWhenLogin是否在登陆系统后自动刷新缓存。
n  StartupCache是否启动缓存。该变量是缓存启用停止的总开关。对应缓存配置板上的“启动数据缓存”复选框。
n  StartupAutoRefresh是否启动自动刷新缓存功能,该属性对应缓存配置板上的“启动数据同步服务”复选框。若为true,则系统启动时会开启VersionCheckService线程定时刷新缓存。
n  RefreshInterval刷新间隔,单位分钟。
n  NeedCacheCorps: 需要下载的公司。在缓存信息面板上可配。
n  lfuLimit: 指明所有LFU类型的缓存表最大的缓存行数。如果LFU类型的缓存表下载的行数超过了最大值,再下一次刷新LFU表时,将根据数据的读取次数,删除超过lfuLimit并且读取次数少的数据。
1.2   tabconfig.xml
<?xml version="1.0" encoding='gb2312'?>
<Tables>
    <NeedCache>
        <!-- 人员档案 -->
        <TableInfo name="bd_psndoc">
            <PrimaryKeys>
          <KeyName>pk_psndoc</KeyName>
             </PrimaryKeys>
            <!--需要缓存的列名字用"," 分隔 -->
            <Column>
                 pk_psndoc,pk_psnbasdoc,pk_psncl,psncode,amcode,pk_deptdoc,
indocflag,pk_corp,psnname,sealdate
            </Column>   
            <!--下载数据时是否按公司过滤 -->                              
            <CorpFilter>true</CorpFilter>
            <!--标识公司的列的列名 -->
            <CorpColumnName></CorpColumnName>                  
            <!--建索引语句 -->      
            <SqlIndex><![CDATA[
                create index i_bd_psndoc_1 on bd_psndoc (pk_corp ASC,psncode ASC);
                create index i_bd_psndoc_2 on bd_psndoc (pk_psncl ASC);
                create index i_bd_psndoc_3 on bd_psndoc (pk_deptdoc ASC);
                create index i_bd_psndoc_4 on bd_psndoc (pk_om_job ASC);
            ]]>
            </SqlIndex>
            <isLfuTable>true</isLfuTable>
        </TableInfo>
<NeedCache>
<NotNeedCache></NotNeedCache>
</Tables>
n  TableInfo 它的一个属性值name,用来标识缓存的数据表的名字;
n  PrimaryKeys缓存表的主键;
n  Columns列名。如果缓存该表的所有字段时,这个属性为空,如果缓存该表的部分字段时,列出需要缓存的字段名;每个Column还有一个属性system,表示是否允许用户配置该列。
n  CorpFilter是否按公司过滤;当该属性值为true时,下载公司数据时,就会按选择的公司过滤,而不是下载全部公司的数据;科目、科目辅助核算和科目历史表的数据是按主体账簿过滤的;
n  CorpColumnName标识公司列的别名。默认值为pk_corp。当且仅当CorpFilter的值为true时,CorpColumnName的值才有意义;
n  BusinessSql按某个或某几个条件过滤缓存数据;当某个表有特殊的业务要求,则配置这个属性。其格式为:条件1 and 条件2 and 条件3;
n  SqlIndex: 索引创建语句。在前台创建该表后,会紧接着执行索引创建语句,如果该索引中的列不在缓存的列中,则忽略该条语句;
n  DataTable指名该表为常见档案类型,且其常见档案表为DataTable。前台不同的用户可以缓存不同PK对应的数据,每个前台用户对应着常见档案的一个视图;
n  IsManDoc: 指名该常见档案表是管理档案类型还是基本档案类型。
n  isLfuTable: 指名该表是否为LFU类型。在需要LFU类型的标配置文件中加入该元素并值设为true,则定义了一个需要缓存的LFU表。
1.3   cacheconfig.xml及合并策略
缓存配置文件cacheconfig.xml的合并生成策略:
Uap的配置文件定义了缓存的公共数据表及其规则,各产品定义各自己产品需要缓存的数据表,及在Uap提供的下载部分字段的表的基础上追加新的缓存的字段。
是将各产品tabconfig.xml中的表配置并在一起,取一个最大集;如果两个以上的产品对某个表都做了配置,则合成后的配置文件中这个表的列取他们的并集;表中的各个属性,如果有一个模板取false,则合并后表的属性也取false;如果有的产品配置为全表缓存,而有的产品配置为LFU表,则合并后将为LFU表。
缓存配置文件cacheconfig.xml的合并生成:
新安装的环境,在在第一次运行中间件配置工具ncsysconfig/wassysconfig时自动生成;运行NCHOME/ bin/ genCacheTemplet.bat,系统自动生成新的配置文件。
登录到NC后,在“客户化——二次开发工具——缓存管理——缓存数据管理”结点,点击“生成模板文件”按钮,也可以将配置文件恢复到出厂后的状态。
当修改了任意产品的tabsqls.xml或tabconfig.xml文件后,都需要重新生成一次cacheconfig.xml,客户端需清理缓存数据并重新初始化。
原始配置文件是在软件出厂前配置好的,用户一般不用修改。
生成的cacheconfig.xml文件只是一个缓存配置的模板,是整个系统对缓存使用的默认配置文件。使用时,各个客户端从服务器端下载这个默认的配置文件,同时生成一个“数据源名_cacheconfig.xml”的配置文件,可根据实际情况修改当前数据源的缓存配置文件,来达到不同客户端使用不同缓存文件的目的。
具体做法是在客户端缓存配置中,点“配置”按钮来进行,“表名”列左边的内容可以直接修改,如是否需要下载,是否需要重新初始化等;右边的内容是通过修改配置文件来实现的,如是按公司过滤等。
如果后台的配置文件发生变化,前台必须清缓存才能使后台配置起作用。
缓存配置文件cacheconfig.xml的存放位置:
在服务器端的\nchome\resources\cacheconfig文件夹下;由Uap和各产品的配置文件tabsqls.xml 和tabconfig.xml合并生成,这两个文件保存在服务器端\nchome\modules\产品路径\config”文件夹下。
客户端登录某个账套后,会将这个配置文件下载到客户端,默认保存在“盘符:\Documents and Settings\登录用户\NCCACHE\服务器的IP及路径\CODE\cacheconfig”文件夹下,同时会在这个文件夹下自动生成一个“账套名_cacheconfig.xml”文件,保存登录账套自己独有的配置文件。
2   前台缓存配置
登录到NC系统后,点击右上角“帮助”右边的下拉按钮,选择“缓存配置”选项,就打开了缓存配置的面板。
2.1   缓存管理
打开缓存配置面板。在缓存管理页签上有个缓存状态的图标,打上绿勾表示缓存己经配置并进行数据的同步。第一次使用缓存时,这个图标是一个红叉。虽然“启用数据缓存”已勾选,但是没有做数据的初始化,因此数据缓存是不可用的,必须对前台的缓存做初始化才可使用。
启用数据缓存:默认勾选此项,表明该客户端使用缓存,界面下方的“刷新”和“初始化缓存”两个按钮可用。对应缓存配置文件中的参数“StartupCache”。
启用数据同步服务:默认勾选此项,系统自动启用数据同步服务,和下面的“数据刷新间隔时间”配合使用,即每隔这个间隔时间,系统自动将前台缓存与后台数据库同步。对应参数为“StartupAutoRefresh”和“RefreshInterval”。
登录系统时刷新缓存:默认不勾选此项。若勾选此项,系统在每次登录时,都会自动刷新一次缓存。当缓存更新量比较大时,需要耗费一定的时间,会影响登录速度;对应参数“RefreshCacheWhenLogin”。
刷新:手动同步后台数据;该按钮是否可用,可通过缓存配置文件进行配置;对应参数CanRefresh
配置:修改客户端的缓存配置,如缓存表是否需要下载,下载的字段,配置前置sql、后置sql等;该按钮是否可用,可通过缓存配置文件进行配置;对应参数CanConfigure
初始数据:初始化缓存数据;该按钮是否可用,可通过缓存配置文件进行配置;对应参数CanInit
在同一个客户端,同时打开两个以上的IE时,先打开的IE可以正常使用缓存配置,第二个IE打开缓存配置时,就会提示数据库链接错误。
2.2   缓存信息
在“缓存信息”页签看到的是公司缓存下载的状态,当“状态”和“需要下载”两个复选框没都被选中时,说明有公司未下载缓存。这个页签的“需要下载”复选框是否可选,受缓存参数“CanModifyCorps”控制。
2.3   缓存表配置
在缓存配置面板上,点击“配置”按钮后,在“缓存表配置”页签,可用来个性化配置下载哪些数据表、数据刷新方式、是否需要重新初始化、每个数据表需要下载的字段、业务sql、DLL Sql等。
在下图的界面中,左上角的选择表窗口中列出了所有需要前台缓存的表,表名左边的列是可编辑的,而表名右边的列是不可编辑的,这些项目的修改是需要手工修改配置文件的。
下面对上图所示界面上的可编辑项做一个介绍:
选择表窗口
需要下载:复选框,选择此项表明下载缓存时,下载该表的数据;对应后面表参数的“table”;这里的所有table取自于“cacheconfig.xml”,需要下载的表被保存到“数据源名_cacheconfig.xml”文件中,不需要下载的表则不保存。
增量刷新:复选框,选择此项,那么刷新缓存时,使用和以前版本一样的只刷新增加的数据的方式;不选择此项,那么在刷新缓存时,采用先删除该表数据,然后重新从后台读取数据,再插入到前台缓存表中;对应后面表参数的“UpdatedRefresh”;
重新初始化:复选框,当不选择此项时,使用的是和以前版本一样的方式,刷新缓存时不会对表结构进行初始化;当选择此项时,刷新缓存时,会删除该表,重新建表结构,重新下载数据,该选项在后台数据库结构发生变化,增加了新字段的情况下使用,刷新数据后,系统自动将该项置为否。对应后面表参数的“ReInit”
选择列窗口
在选择表窗口选中一个表,表中所有列就会列在“选择列”窗口。系统默认下载所有列,但也可以根据需要进行选择。
点击“需要下载”复选框进行选择,标识为蓝色的字段是必选项,必须下载。对应后面表参数的“Columns”;
DDLSQL和业务SQL
DDLSQLserver端创建表时的除DDL以外的SQL语句,比如创建索引语句。
业务SQL:用来过滤选中表的数据。在这个页签中定义一些条件,初始化或刷新缓存时,系统会自动按设定的条件对数据进行过滤。例如想只缓存1010公司的bd_subjtype数据,则只需在业务SQL中加入pk_corp=’1010’。 对应后面表参数的“BusinessSql”;
选择公司页签,列出的是系统中所有已建账未封存的公司。在集团,如果不选择公司只下载集团数据;如果选择了公司,那么会下载集团加选中公司的数据;在公司,如果不选择公司,系统默认选中当前登录公司,下载集团及当前登录公司的数据。对于LFU类型的表来说,登录集团只下载集团的数据,登录公司只下载当前登录公司的管理档案数据及其对应的基本档案的数据,选择多公司对该类型表的数据不生效。
对应后面的缓存参数“NeedCacheCorps”。
配置完成后,点击“确定”保存配置文件。
2.4   常用档案
选择“常用档案”页签,可以查看当前配置的常见档案表。点击右上角的“刷新”按钮可以刷新常见档案类型的表。点击“初始化”按钮,可以初始化所有的常见档案类型的表。
2.5   初始数据
服务器初始化:直接从数据库服务器下载需要缓存的数据,当数据量很大时,可能需要很长的时间。
后面两种导入方式需要有通过缓存离线导出工具导出的缓存数据文件。
本地导入:将通过缓存数据离线导出工具导出的缓存包,从本地客户端本地导入;请确保缓存数据与当前数据源相同,否则可能出错;
从服务器导入:将通过缓存数据离线导出工具导出的缓存包,从FTP服务器导入, 建议导入之前测试连接。输入形式如:ftp://user:password@ip/filename
2.6 缓存数据的查看
启用缓存后,打开“客户化” -> “二次开发工具”-> “缓存管理”->“缓存数据管理”结点,可以看到如下图所示界面。
这里列示的是前台缓存的所有的数据表,选中某张表,可以查看当前该表前台缓存的数据。
“生成模板文件”就是前面提到的,通过客户端远程执行后台的cacheconfig.xml配置文件的合并生成,合并后,会覆盖后台原有的配置文件。
发表于 2011-10-3 15:34:26 | 显示全部楼层
发表于 2011-12-9 00:12:02 | 显示全部楼层
楼主好牛啊~~{:soso_e198:}
回复 点赞 拍砖

使用道具 举报

发表于 2012-6-20 16:12:18 | 显示全部楼层
好东西!收藏!谢谢楼主分享!
回复 点赞 拍砖

使用道具 举报

发表于 2012-8-1 19:45:07 | 显示全部楼层
回复 点赞 拍砖

使用道具 举报

发表于 2012-8-2 16:09:13 | 显示全部楼层
回复 点赞 拍砖

使用道具 举报

发表于 2012-11-5 23:55:47 | 显示全部楼层
没找到相应的文件
回复 点赞 拍砖

使用道具 举报

发表于 2012-12-4 13:46:23 | 显示全部楼层
回复 点赞 拍砖

使用道具 举报

发表于 2012-12-7 13:19:05 | 显示全部楼层
回复 点赞 拍砖

使用道具 举报

您需要登录后才可以回帖 登录 | 注册账号

本版积分规则

QQ|站长微信|Archiver|手机版|小黑屋|用友之家 ( 蜀ICP备07505338号|51072502110008 )

GMT+8, 2024-11-18 00:39 , Processed in 0.049247 second(s), 7 queries , Gzip On, Redis On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表