本发明专利技术公开了一种业务逻辑对象访问控制方法和装置,它是给业务逻辑对象实例或业务逻辑对象分配一个锁对象;对一个锁定目标,无用户访问它时,其锁对象的锁定用户为无效值;用户要更新锁定目标时,先申请锁定权限,即更新锁对象的锁定用户为自身;如果更新成功,则锁定成功;用户完成锁定目标的处理后,释放锁定权限,也就是更新锁对象的锁定用户为无效值,此后,其它用户便可申请锁定权限。不依赖于数据库管理系统的事务机制,而且能够实现一个或多个业务逻辑对象的整体访问控制。
【技术实现步骤摘要】
本专利技术属于计算机系统数据处理领域,特别涉及一种业务逻 辑对象访问控制的方法。
技术介绍
业务逻辑对象(Business Object)是企业信息管理系统(ERP系 统,CRM系统,BI系统,电子政务系统等)的核心元素。业务逻 辑对象是一种封装业务逻辑数据和业务逻辑关系的复杂抽象数据 类型(Abstract Data Type),它提供了查询一类业务信息或执行 一 项 业务逻辑所需要的全部数据。在系统中,经常存在多个用户访问 同 一个业务逻辑对象实例(Business Object Instance)的情形,如果 多个用户同时要求创建、更新或删除(后续表述统称这三种操作为 更新)同一个业务逻辑对象实例,就可能破坏业务逻辑对象实例的 数据的完整性或导致业务逻辑处理错误。所以,需要一种访问控 制手段,互斥多个用户的更新操作。当前,常用的访问控制方法都依赖于数据库管理系统(DBMS) 提供的事务机制(Transaction)。这种方法有两个主要的缺点 一是 受限于数据库管理系统,如果数据库管理系统不提供事务机制, 则不能有效地实现访问控制;二是不够灵活,不能实现一类或多 类业务逻辑对象的整体访问控制。因此,本领域技术人员迫切需要开发 一 种新的灵活而高效的业 务逻辑对象访问控制方法,既可摆脱数据管理系统的限制,还能 够实现一个或多个业务逻辑对象的整体访问控制。
技术实现思路
本专利技术的目的在于提供一种新的业务逻辑对象访问控制方 法以及控制装置,从而解决上述问题。实现本专利技术的技术方案之 一 为业务逻辑对象访问控制方4法,它是给业务逻辑对象实例或业务逻辑对象分配一个锁对象; 对一个锁定目标,无用户访问它时,其锁对象的锁定用户为无效 值;用户要更新锁定目标时,先申请锁定权限,即更新锁对象的 锁定用户为自身;如果更新成功,则锁定成功;用户完成锁定目 标的处理后,释放锁定权限,也就是更新锁对象的锁定用户为无 效值,此后,其它用户便可申请锁定权限。所述锁对象是一个三元组〈LT, LU, LTV>, LT表示锁定目 标,LU表示锁定用户,LTV表示锁定目标的版本号。所述锁对象存储在业务逻辑对象所在的数据库或独立的数 据库中,每类锁对象对应一个数据库表,锁对象包括锁定用户, 锁定目标和锁定目标的版本号等信息。锁对象实际上是存储在数据库表中的 一条记录,包含锁定目 标的标识、锁定用户和锁对目标版本号等字段。一个锁定目标需要施加多用户互斥访问控制时,为它构建一个 锁对象。锁对象控制锁定目标的机制如下设系统中有Uo, 1^, ......, Un等n个用户具有更新锁定目标BO的权限,锁定目标BO的更新受锁对象LCKLT, LU, LVT〉的控 制。如果LU^无效值,任何用户都可竟争获得锁定权限,假设用 户Um((K-nK^n)通过竟争获得了锁定权限,则锁对象的LU更新 为Um,此后其它用户就不能再获得锁定权限。用户Um完成处理 后,释放锁定权限,把锁对象的LU更新为无效值。此后,所有 用户又可竟争获得锁定权限。所述锁对象是业务逻辑对象实例锁;它锁定目标是业务逻辑 对象的单个实例;用于控制单个业务逻辑对象实例的访问,互斥 多个用户对单个业务逻辑对象实例的访问。具体到上面的机制, LT应该为业务逻辑对象实例的关键码,LVT为业务逻辑对象实例 的版本号。业务逻辑对象的每个实例都关联一个锁对象,锁对象 控制的是其关联的实例,各实例的锁定控制互相独立。所述锁对象是业务逻辑对象锁;它锁定目标是业务逻辑对象 的所有实例;用于控制一个业务逻辑对象内所有实例的访问,任 意时刻,最多只有 一个用户可以更新这个业务逻辑对象中的 一个 实例。当一个业务逻辑对象中的一个实例被锁定时,这个业务逻 辑对象内的其它实例都不能再被锁定。例如业务逻辑对象BO有 AbA2,......, A。等n个实例,其中A]已经一皮锁定,贝'J A2,......, An都不能再被锁定。所述锁对象是业务逻辑对象池锁,它锁定目标是多个业务逻辑对象的所有实例;用于控制多个业务逻辑对象内所有实例的访 问,任意时刻,最多只有一个用户可以更新这个池中的业务逻辑 对象的一个实例。。池中的一个业务逻辑对象的实例被锁定时,这 些业务逻辑对象的其它所有实例都不能再被锁定。例如,业务逻辑对象池包含BO!, B02和B03等3个业务逻辑对象,BO,有A,A2 ......,An等n个实例,B02有Bl5B2,......,Bm等m个实例,BO;5有d, C2, ......,Ci个实例,其中B被锁定,则A,A2,……,An,B2,......, Bm, C,, C2,......,Ci都不能再被锁定。本专利技术中三类锁的使用是相互独立的,具体使用哪类锁取决 于实际需求。 一个业务逻辑对象,如果只在单个实例的访问上可 能存在冲突,则使用实例锁即可,实例锁具有更高的并发性能。 如果在业务逻辑对象的某些实例组成的 一个实例集合上可能存在 冲突,则使用业务逻辑对象锁,锁定整个业务逻辑对象的所有实 例。如果在多个业务逻辑对象的某些实例组成的 一个实例集合上 可能存在冲突,则使用业务逻辑对象池锁,锁定这几个业务逻辑 对象的所有实例。例如,某天的采购派工单和领料计划单,任意 时刻只能更新这两个业务逻辑对象中的 一 个实例,则就非常适合 使用业务逻辑对象池锁。实现本专利技术技术方案之二为业务逻辑对象访问控制装置, 其特征在于,它包括锁对象定义单元和锁对象访问单元;锁对象 定义单元用于创建锁对象的元数据,即设置锁对象的类别和锁对 象关联的业务逻辑对象,并为锁对象创建一个数据库表;锁对象 访问单元用于创建和删除所记录,申请锁定权限和释放锁定权限。本专利技术不依赖于数据库管理系统的事务机制,而且能够实现 一个或多个业务逻辑对象的整体访问控制。附图说明图1业务逻辑对象实例锁的访问控制机制的实施例步骤流程图。 图2业务逻辑对象锁的访问控制机制的实施例步骤流程图。 图3业务逻辑对象池锁的访问控制机制的实施例步骤流程图。 图4本专利技术的业务逻辑对象访问控制装置的实施例的结构框图。具体实施例方式为使本专利技术的目的、特征和优点能够更加明显易懂,下面结合 附图和实施例对本专利技术作进 一 步的详细说明。使用业务逻辑对象实例锁的访问控制机制,参考图1。101:为业务逻辑对象创建一个锁对象数据库表,其结构如表 1。初始时,该表无<壬<可锁记录。102:用户为业务逻辑对象创建实例时,提交后在锁对象库表 中为它创建一条锁记录,该记录的关键码为实例的关键码,锁定 用户为无效值,锁定目标版本号为0。假设该业务逻辑对象的锁 对象库表为Table,关键码为整数类型,实例的关键码为K,,用 户为U,,则插入锁记录的SQL语句为Insert Into Tablei Values(K!, Ui, 0)103:用户要更新一个业务逻辑对象实例时,先申请该实例的 锁定权限。其做法是尝试更新锁对象的锁定用户为自身。如果更 新成功,则锁定成功,可更新锁定的实例。假设更新实例的关键 码为K2,更新用户为U2,则获取锁定权限的SQL语句为Update Tablei Set LockingUser=U2 Where LockingUser=-l And Key=K2本文档来自技高网...
【技术保护点】
一种业务逻辑对象访问控制方法,它是给业务逻辑对象实例或业务逻辑对象分配一个锁对象;对一个锁定目标,无用户访问它时,其锁对象的锁定用户为无效值;用户要更新锁定目标时,先申请锁定权限,即更新锁对象的锁定用户为自身;如果更新成功,则锁定成功;用户完成锁定目标的处理后,释放锁定权限,也就是更新锁对象的锁定用户为无效值,此后,其它用户便可申请锁定权限。
【技术特征摘要】
【专利技术属性】
技术研发人员:朱龙佰,张凯,张舟,姚晓燕,何万里,
申请(专利权)人:武汉刻度科技发展有限公司,
类型:发明
国别省市:83[中国|武汉]
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。