19.6 应用数据库揭秘
Excel服务器的每个应用系统,背后都是一个SQL Server数据库,熟悉SQL Server 的用户,进入到SQL Server的管理界面,能看到这个数据库的存在。
19.6.1 应用数据库中的表
我们知道,数据库中有一个个的数据表,数据存储在表中,是表中的一条条记录。在Excel服务器的应用数据库中,有以下几种表。
Excel服务器系统表
在应用数据库中有许多“ES_”开头的表,它们是Excel服务器软件需要用的系统表,安装时就已建好,这些表用户不要随意删除,也不要自行改动其中的数据。
用户数据表
另外一些表,是我们在定义模板上的数据项时,所创建的数据表,比如我们在订单模板上创建了两个数据表“订单_主表”和“订单_明细”,则在数据库中也有这两个表,其中的字段,就是我们所定义的那些数据项。
工作流快照表
对于带工作流的模板,其上的每个数据表,在应用数据库中都有一个配对的工作流快照表,表名是用户数据表表名,加上“_wi”后缀,例如,订单模板上定义了工作流,其上定义了两个数据表“订单_主表”和“订单_明细”,则在应用数据库中,会有两个配对的表“订单_主表_wi”和“订单_明细_wi”。
用户数据表中存储的是每份表单的最新数据,而快照表中存储的是一份表单在工作流的每一步提交的那个时刻的数据。假如一份订单经历了三步,则这份订单在“订单_主表”中有一条记录,而在“订单_主表_wi”表中有三条记录。
19.6.2 用户数据表中的系统字段
用户数据表和工作流快照表中,除了我们在模板上定义的那些字段之外,还有7个特殊的系统字段,是在创建时系统自动加进去的,它们都以ExcelServer开头,这7个系统字段的含义如下:
系统字段 | 含义说明 |
ExcelServerRtId | 对应的模板号。每个模板,系统会自动产生一个唯一的模板号。通过用户数据表中的这个字段的值,能看出每条记录的是通过哪个模板填报进来的。 |
ExcelServerRcId | 表单号。系统填报的每份表单,都会自动产生一个唯一的表单号。如果用户数据表是模板上定义的主表,则每条记录的ExcelRcId各不相同;如果用户数据表是模板上定义的明细表,同一张表单的明细记录,其ExcelServerRcId是相同的。 |
ExcelServerRn | 同一张表单上的明细记录号。如果用户数据表是模板上定义的明细表,则同一张表单的明细记录,其ExcelServerRcId都相同,但是ExcelServerRn不同,按在表单上从上到下的顺序,从1开始递增 |
ExcelServerCn | 只有用户数据表是模板上定义的交叉表时,此字段才有用。交叉表上,数据区域中的一个单元格,就会产生用户数据表中的一条记录。对交叉表而言,ExcelServerRn表示该记录在表单数据区域上,相对于数据区域左上角的行号(从1开始),ExcelServerCn表示其相对于数据区域左上角的列号(从1开始) |
ExcelServerWiid | 待办事项号。对于不带工作流的模板上定义的用户数据表,此字段无意义;对于带工作流的用户数据表,因为其每条记录对应着表单的最新数据,此字段为该表单最近一次办理完成的待办事宜号(不管其前面经过了多少步,只记录最近完成的);对于工作流快照表,因为其每条记录都对应着一个待办事项,此字段就是待办事项号。 |
ExcelServerCHG | 系统操作过程中使用的控制字段,操作完成后其值始终为0,没有实际意义。 |
ExcelServerRC1 | 系统操作过程中使用的控制字段,没有实际意义。 |