浅说BOS的设置内容与后台表原创
金蝶云社区-山抹微云
山抹微云
42人赞赏了该文章 2,179次浏览 未经作者许可,禁止转载编辑于2019年12月24日 16:51:49

    打开开发集成平台(BOS),会被里面简单而强大的功能折服。随意打开一个业务(如销售订单),再进去 编辑--批量编辑字段属性, 在这里可以修改很多东西并且会持久保存会生效。问题就来了,能持久保存,那是保存在哪里呢?以什么方式保存么??

    还好我有个强大的师傅,当时我问他销售订单这一业务,他告诉我了后台数据库有T_META_O    JECTTYPE表,以XML的方式保存。一用 语句select  FKERNELXML,  * from T_META_OBJECTTYPE  where  FID='SAL_SaleOrder'  即可了。系统BOS(项目 这一工具栏)有不同的类型,如 基础资料、单据、动态表单、系统参数、监控对象、账表等不同类型。我又要猜想下,肯定有个字段规定它们的type值,顾名思义,我猜想是 字段FMODELTYPEID 了,写了个SQL语句做下验证,代码如下:

select  FID  as 'FormId',   FMODELTYPEID as '类型编码',  '销售价目表' as '对象名',    FSUBSYSID as '系统ID',  FSUBSYSID as '子系统ID' ,

  '基础资料' as '类型'  from  T_META_OBJECTTYPE  where FID='BD_SAL_PriceList' 

union all 

select  FID  as 'FormId',   FMODELTYPEID as '类型编码',  '销售条款' as '对象名',    FSUBSYSID as '系统ID',  FSUBSYSID as '子系统ID' ,

  '基础资料' as '类型'  from  T_META_OBJECTTYPE  where FID='BD_SALCLAUSE' 

union all 

select  FID  as 'FormId',   FMODELTYPEID as '类型编码',  '销售订单' as '对象名',    FSUBSYSID as '系统ID',  FSUBSYSID as '子系统ID' ,

  '单据' as '类型'  from  T_META_OBJECTTYPE  where FID='SAL_SaleOrder' 

union all 

select  FID  as 'FormId',   FMODELTYPEID as '类型编码',  '发货通知单' as '对象名',    FSUBSYSID as '系统ID',  FSUBSYSID as '子系统ID' ,

  '单据' as '类型'  from  T_META_OBJECTTYPE  where FID='SAL_DELIVERYNOTICE' 

union all 

select  FID  as 'FormId',   FMODELTYPEID as '类型编码',  '价格综合查询' as '对象名',    FSUBSYSID as '系统ID',  FSUBSYSID as '子系统ID' ,

  '动态表单' as '类型'  from  T_META_OBJECTTYPE  where FID='SAL_QueryAllPrice' 

union all 

select  FID  as 'FormId',   FMODELTYPEID as '类型编码',  '客户应收余额查询' as '对象名',    FSUBSYSID as '系统ID',  FSUBSYSID as '子系统ID' ,

  '动态表单' as '类型'  from  T_META_OBJECTTYPE  where FID='SAL_RecAmtQuery' 

union all 

select  FID  as 'FormId',   FMODELTYPEID as '类型编码',  '销售系统参数' as '对象名',    FSUBSYSID as '系统ID',  FSUBSYSID as '子系统ID' ,

  '系统参数' as '类型'  from  T_META_OBJECTTYPE  where FID='SAL_SystemParameter' 

union all 

select  FID  as 'FormId',   FMODELTYPEID as '类型编码',  '单据用户参数模板' as '对象名',    FSUBSYSID as '系统ID',  FSUBSYSID as '子系统ID' ,

  '系统参数' as '类型'  from  T_META_OBJECTTYPE  where FID='Sal_PriceListUserPara' 

union all 

select  FID  as 'FormId',   FMODELTYPEID as '类型编码',  '销售订单执行明细表' as '对象名',    FSUBSYSID as '系统ID',  FSUBSYSID as '子系统ID' ,

  '账表' as '类型'  from  T_META_OBJECTTYPE  where FID='SAL_DetailReport' 

union all 

select  FID  as 'FormId',   FMODELTYPEID as '类型编码',  '销售排名表' as '对象名',    FSUBSYSID as '系统ID',  FSUBSYSID as '子系统ID' ,

  '账表' as '类型'  from  T_META_OBJECTTYPE  where FID='SAL_RPT_SaleRankingList' 

结果截图如下

image.png

以上的猜想是OK的,读者可以验证更加多。

XML是可扩展标记语言,非常适合万维网传输(题外话,XML与JSON也是一对很有意思的“冤家”,有兴趣可以自行理解)。MSSQL在2008新增了XML 为列的存储类型,适合于大数据存储,只是不方便操作。

以销售订单为例,复制其字段FKERNELXML出来, 为了方便显示XML内容,我用常用IDE Notepad++进行了查看。如下图

image.png

Metadata是元数据,又称中介数据、中继数据,为描述数据的数据(data about data),主要是描述数据属性(property)的信息。FormMetaData可以说是窗体主数据,标识了窗体的所有信息了。顾名思义,BusinessInfo是应该是列表信息,这部分是业务信息以及字段如何在后台表存储的,LayoutInfos应该是布局信息,说明了外观参数。

为了直观表达效果,以下用截图来对比信息,表单插件信息如下

image.png


以下是列表插件的对比,

image.png服务校验规则的对比如下

image.png

物流详细信息的分录信息对比如下

image.png

基本信息 销售组的 对比信息如下

image.png

我的想法,是想提供个思路给大家查看具体的BOS数据是存储在那里,更多之处,有兴趣的同学可以进一步进行查看。谢谢。

赞 42