业务模型中行权限的实现方法

文档序号:9751182阅读:299来源:国知局
业务模型中行权限的实现方法
【技术领域】
[0001] 本发明属于数据库技术领域,尤其是涉及业务模型中行权限的实现方法.
【背景技术】
[0002] 业务模型是指在用户当前业务数据库的基础上对数据库中相关业务表进行关联, 并对表中的相关字段进行业务名称映射,以方便相关人员理解使用和快速查。.
[0003] 对业务模型的查询经常会涉及权限问题。即使是相同的查询,不同的人(职级职位 不同)最终查询返回的结构也可能不同。

【发明内容】

[0004] 本发明要解决的问题是提供一种业务模型中行权限的实现方法。
[0005] 为解决上述技术问题,本发明采用的技术方案是:
[0006] -种业务模型中行权限的实现方法,包括:
[0007] 1)设置业务模型的行权限;
[0008] 2)用户对业务模型查询时,对该查询结构添加当前用户的行权限限制。
[0009] 优选的,步骤1)中所述业务模型是将用户业务数据库表结构及关联关系利用xml 进行描述,使用json字符串对每个用户进行行权限设置。
[0010]优选的,步骤2)包括以下步骤:
[0011] 21)当查询业务模型时,根据对用户的行权限的设置,得到当前用户的行权限json 字符串,取得对应模型的行权限设置;
[0012] 22)将设置的行权限添加到用户查询的限制条件中,用语法解析去分析修改后的 查询;
[0013] 23)根据模型的相关设置将修改后的查询解析成sql语句并执行。
[0014] 进一步的,步骤22)所述用语法解析去分析修改后的查询,包括:
[0015] 221)通过语法解析,得到查询中所有用到的表名;
[0016] 222)通过语法解析,得到查询中所用到的模型;
[0017] 223)得到该模型后,根据该模型的关联关系,得到其涉及的各个表的关系图。
[0018] 进一步的,步骤23)所述根据模型的相关设置将修改后的查询解析成sql语句并执 行,包括:
[0019] 231)根据查询中用到的表名和模型的表关系构造from和join关系;
[0020] 232)将from schema替换成步骤231)中的from和join关系;
[0021] 233)根据模型中对应的数据库映射的表名和列名,将上述查询解析成真正的sql 语句并查询。
[0022] 本发明采用的核心思想是:设置业务模型的行权限;当查询业务模型的时候,对该 查询进行权限检测和行权限的动态添加。
[0023] 本发明具有的优点和积极效果是:使业务模型中行权限的设置简单通用,增加了 数据查询的安全性。
【具体实施方式】
[0024] 下面对本发明的具体实施例做详细说明。
[0025] 本发明业务模型中行权限的实现方法,包含:
[0026]步骤一:设置业务模型的行权限;
[0027] 步骤二:当用户对业务模型查询时,对该查询结构添加当前用户的行权限限制。
[0028] 本发明步骤一中,设置业务模型的行权限;其中业务模型是将用户业务数据库表 结构及关联关系利用xml进行描述。
[0029] 本发明一实施列,设置业务模型行权限.其中的业务模型描述如下:
[0030]
[003
[0032] 设置行权限:
[0033] 使用json字符串对每个用户进行行权限设置,形如[{"schemald":""," limit〃: 〃〃},......]这样的json字符串
[0034] 其中:
[0035] %11611^1(1为模型1(1,比如上述的模型1(1:585匕(18913-6 1 1 1-4271-13〇&5-96bd510a096b
[0036] limit为行权限限制,比如对上述模型设置的行权限:部门.部门名称='销售部' and费用类型.类型名='差旅费'
[0037] 本发明步骤二中,当查询业务模型时,根据对用户的行权限的设置,得到当前用户 的行权限json字符串,取得对应模型的行权限设置,将设置的行权限添加到用户查询的限 制条件中.用语法解析去分析修改后的查询,根据模型的相关设置将修改后的查询解析成 sql语句并执行.具体过程如下:
[0038]用户的查询结构为:
[0039] select
[0040] sum(费用·费用),
[0041] 费用类型.类型名
[0042] from
[0043] schema 585bd89b-elll-4271-b0a5-96bd510a096b
[0044] group by
[0045] 费用类型.类型名
[0046] 后台得到这个查询结构后,根据当前登录的用户,得到对其设置的行权限:[{" schemald : ··· , limit : ··· |,......」。
[0047] 从设置的行权限中得到 schemeld 为 585bd89b-elll-4271-b0a5-96bd510a096b 的 设置;{"schemald": "585bd89b-elll-4271-b0a5_96bd510a096b","limit": "···"} ·
[0048] 得到行权限中的limit:部门.部门名称='销售部'and费用类型.类型名='差旅 费,;
[0049] 修改当前查询,加入行权限.修改后的查询结构为:
[0050] select
[00511 sum(费用·费用),
[0052] 费用类型.类型名
[0053] from
[0054] schema 585bd89b-elll-4271-b0a5-96bd510a096b
[0055] where
[0056] 部门.部门名称='销售部' and费用类型.类型名='差旅费'
[0057] group by
[0058] 费用类型.类型名
[0059] 用语法解析分析修改后的查询,并结合查询的模型schema 585bd89b-elll_4271- b0a5_96bd510a096b,构造成完整的sql.具体过程为:
[0060] 1.通过语法解析,得到上述查询中所有用到的表名.例如:费用,费用类型,部门
[0061 ] 2.通过语法解析,得到上述查询中所用到的模型.例如:schema 585bd89b-elll-4271-b0a5-96bd510a096b。
[0062] 3.得到该模型,根据该模型的关联关系,得到其涉及的各个表的关系。
[0063] 4.根据查询中用到的表名和模型的表关系构造from和jo in关系:
[0064]用到了费用,费用类型和部门表.分别找到他们的关联路径:
[0065]费用:费用
[0066]费用类型:费用_>费用类型
[0067] 部门:费用_>用户_>部门
[0068]取得他们的最小公共表作为from,其余的表作为join表,根据模型中的jo ins设 置,得到的from和j 〇 i n关系为:
[0069] from 费用
[0070] left join费用类型on费用.费用类型Id =费用类型.费用类型Id [0071] left join用户on费用·用户Id =用户·用户Id
[0072] left join部门on用户.部门Id =部门.部门Id
[0073] 5.将from schema 585bd89b-elll-4271-b0a5_96bd510a096b替换成4中的from和 join关系.替换完之后的查询结构为:
[0074] select
[0075] sum(费用·费用),
[0076]费用类型.类型名 [0077] from 费用
[0078] left join费用类型on费用.费用类型Id =费用类型.费用类型Id
[0079] left join用户on费用·用户Id =用户·用户Id [0080] left join部门on用户.部门Id =部门.部门Id [0081 ] where
[0082] 部门.部门名称='销售部' and费用类型.类型名='差旅费'
[0083] group by
[0084] 费用类型.类型
[0085] 6.根据模型中对应的数据库映射的表名和列名,将上述查询解析成真正的sql语 句并查询。
[0086]以上对本发明的一个实施例进行了详细说明,但所述内容仅为本发明的较佳实施 例,不能被认为用于限定本发明的实施范围。凡依本发明申请范围所作的均等变化与改进 等,均应仍归属于本发明的专利涵盖范围之内。
【主权项】
1. 一种业务模型中行权限的实现方法,其特征在于,包括: 1) 设置业务模型的行权限; 2) 用户对业务模型查询时,对该查询结构添加当前用户的行权限限制。2. 根据权利要求1所述的一种业务模型中行权限的实现方法,其特征在于,步骤1)中所 述业务模型是将用户业务数据库表结构及关联关系利用xml进行描述,使用json字符串对 每个用户进行行权限设置。3. 根据权利要求1所述的一种业务模型中行权限的实现方法,其特征在于,步骤2)包括 以下步骤: 21) 当查询业务模型时,根据对用户的行权限的设置,得到当前用户的行权限json字符 串,取得对应模型的行权限设置; 22) 将设置的行权限添加到用户查询的限制条件中,用语法解析去分析修改后的查询; 23) 根据模型的相关设置将修改后的查询解析成sql语句并执行。4. 根据权利要求3所述的一种业务模型中行权限的实现方法,其特征在于,步骤22)所 述用语法解析去分析修改后的查询,包括: 221) 通过语法解析,得到查询中所有用到的表名; 222) 通过语法解析,得到查询中所用到的模型; 223) 得到该模型后,根据该模型的关联关系,得到其涉及的各个表的关系图。5. 根据权利要求3所述的一种业务模型中行权限的实现方法,其特征在于,步骤23)所 述根据模型的相关设置将修改后的查询解析成sql语句并执行,包括: 231) 根据查询中用到的表名和模型的表关系构造 from和join关系; 232) 将from schema替换成步骤231)中的from和join关系; 233) 根据模型中对应的数据库映射的表名和列名,将上述查询解析成真正的sql语句 并查询。
【专利摘要】本发明提供一种业务模型中行权限的实现方法,包含如下步骤:1)设置业务模型的行权限;2)用户对业务模型查询时,对该查询结构添加当前用户的行权限限制。本发明具有的优点和积极效果是:使业务模型中行权限的设置简单通用,增加了数据查询的安全性。
【IPC分类】G06F21/62, G06F21/31
【公开号】CN105512528
【申请号】CN201510932954
【发明人】武新, 崔维力, 杨占福, 李佳麟, 刘欣, 夏暄
【申请人】天津南大通用数据技术股份有限公司
【公开日】2016年4月20日
【申请日】2015年12月12日
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1