在结构事务执行的情况下保护关系数据库的完整性的方法

文档序号:6339068阅读:637来源:国知局
专利名称:在结构事务执行的情况下保护关系数据库的完整性的方法
技术领域
本发明涉及一种用于在对象关系映射保存中在结构事务执行(structural transaction execution)的情况下保护关系数据库的完整性的方法。
背景技术
如众所周知的那样,关系数据库已越来越多地被选作对制造执行系统(MES)中的 数据存储的支持。用于对通过企业资源计划(ERP)来计划的并由车间产生的制造过程进行 建模和调度的方法提供用于计划、调度和实施所调度的制造过程并控制车间的相对应的生 产步骤的这些制造执行系统(MES)。特别地,企业资源计划(ERP)是包括用于计划企业的企业资源的硬件装置及相对 应的软件应用程序的系统,所述计划企业的企业资源即材料供应、人力资源管理、采购、订 单、利润、财务、库存控制、客户管理等等,同时已使用术语“车间”来指示例如通过测量每台 机器每小时生产的零件数或其功能参数、生产的零件的质量等而支持制造过程中涉及的对 单个机器的控制的系统。MES是在ERP上层与车间层下层之间的提供计算机和软件工具的中间层,其包括 生产订单管理的软件工具和生产建模的软件工具,所述生产订单管理的软件工具从ERP接 收生产请求,所述生产建模的软件工具支持选择和管理在制造过程中要涉及的资源(即员 工、机器和材料)的阶段,以便在所要求的时间约束之内实现所计划的制造过程。因此,制造执行系统要求用于调度和控制活动的建模工厂设备。更特别地,制造执 行系统要求可靠的仪器来在复杂的生产环境中管理来自车间的或用来控制车间级的过程 的巨大的数据。同时地,操作MES和/或客户端的软件工程师需要经常改正MES的关系数 据库中的数据结构。在关系数据库中,根据由MES的软件工程师而不是由使用车间级的MES的客户端 设计的逻辑结构来组织特定数据变量的值和那些变量之间的结构以及其关系。特别地,这 些变量源自在MES内运行的所建立的软件程序,并且这些变量被自动地产生、更新等。关于 数据变量的结构及其关系,这些数据变量的结构及其关系常常是人分析的结果,并且通常 由操作员通过⑶I直接插入。在许多情况下,在插入数据的同时引入事务(transaction)概念。这些概念严格 地相互关联,以便避免由于不完整的数据插入而引起的不一致性的产生。在所谓的“事务” 中插入要被保存在关系数据库中的数据。通常,在插入某些数据期间可能发生某些错误的 情况下,包含在事务中的数据未被保存,并且关系数据库上的数据被恢复在执行事务之前 的版本中,从而保证了数据的完整性但丢失了改正。在被MES覆盖的工业应用中,越来越多地朝向用于保存来自生产工厂的数据的关 系数据库的使用涌现。在最近几年中,已经创建了帮助客户构建其自己的MES应用程序的 工具。这些工具由独立的供应商提供。这些供应商及其相应的客户不得不处理数据被存储 在根据特定应用程序的要求来提供固定的定义结构或至少扩展结构的关系数据库中的方式。这个要求引起给客户提供仪器来实现使用上述工具修改关系数据库的结构以使该应用 程序适应客户的需求的需求。这样的修改由应用程序本身的程序来执行,或者更一般地经 由配置GUI来执行。在更复杂的应用程序中,当修改数据结构以避免不完整的结构修改时, 优选事务方法。由于用户在使用配置⑶I时不访问关系数据库的实际结构,所以可以将这样的修 改视为具有对象和类方面的关系数据库的抽象表示法的更一般问题的部分,而应用该结构 修改的阶段被视为找到将抽象对象和类表示“翻译”成物理结构的高效方式的问题的部分, 其中不要求用户对这样的物理结构具有深刻的理解。到目前为止已在不存在事务方法的情况下或通过允许由于关系数据库的结构中 的不一致性而拒绝一组修改来解决此问题。在第一种情况下,单独地进行每个修改并立即 应用每个修改。这意味着不可能在任意长的时间内阻止关系数据库。优点是不可能执行一 组结构修改,从而避免仅部分应用的具有整个不一致的修改的含意的修改的问题。显然,当 必须执行复杂环境中的许多修改时,该方法是繁琐的。在实行事务方法的情况下,编辑会话(editing session)是可行的。此外,可能在 关系数据库正在使用中并且包含在其中的数据被改变的同时进行修改。当然,不可能同时 输入不止一个的同时发生的编辑会话。通常,这种方法更加灵活和适当;另外,由于遵循事 务方法,所以在可能不可接受的某些修改的情况下(即因为关系数据库中的数据同时已被 改变),整组的修改被拒绝,从而避免进行不完整的修改并输入不一致的结构。即使这种方法比第一种方法更可靠和更适当,仍存在也使这种方法不那么适用的 几个缺点
1.在长编辑会话的情况下,用户冒着丢失在编辑会话的整个事务被拒绝时所执行的 工作的风险。这个缺点可导致严重的问题,因为在工程(engineering)活动期间,最近活动 的丢失是与有生产力相冲突的(contra-productiv)。2.另外,将所有工程活动嵌入仅一个事务中会冒着在关系数据库上具有任意长 的事务的风险,该任意长的事务是作用于关系数据库的非常令人气馁的方式并且可能由于 表格的锁定而导致严重的问题。3.虽然编辑会话是活动的,但根据所应用的事务策略,可能发生的是对其结构当 前正在被修改的数据的读/写操作被拒绝。当用户想要用从运行中的应用程序接收关于他 所做的结构改变的即时反馈时,这个拒绝在运行时间禁用工程的过程。

发明内容
因此,本发明的目的是提供一种用于在结构事务执行的情况下保护关系数据库的 完整性的方法,该方法以不在用于结构修改的时间方面约束开发者并且不在关系数据库的 可用性和可访问性方面约束用户的安全方式来促进数据结构的修改。根据本发明,通过一种用于在对象关系映射保存中在结构事务执行的情况下保护 关系数据库的完整性的方法来实现此目的,所述方法包括以下步骤
a)创建用于要被执行的结构数据库事务的应用程序,所述应用程序包括数据结构组;
b)在所述应用程序上开始编辑会话;所述编辑会话拷贝所述应用程序的数据结构并将 该数据结构的原始版本标记为所使用的当前版本而且将被拷贝的版本标记为编辑版本;C)在所述数据结构的编辑版本中编辑对数据结构的任何改变; d)通过将数据结构的编辑版本保存到数据库或丢弃数据结构的编辑版本或挂起数据 结构的编辑版本来关闭编辑会话,
el)其中,保存编辑版本将数据结构的编辑版本安装到数据库,从而去除数据结构的原 始版本并去除在前编辑版本的标记;
e2)其中,丢弃编辑版本删除编辑版本并去除所述数据结构的原始版本的标记;以及 e3)其中,挂起编辑版本暂时地存储编辑版本,保持数据结构的原始版本并去除所述数 据结构的原始版本的标记。这种方法使得能够在不在用于结构修改的时间方面约束开发者并且不在关系数 据库的可用性和可访问性方面约束用户的安全方式来进行数据结构的修改。在任何时候, 当用户不能确信是否用如在编辑会话中得到的版本来替换数据结构的现有版本时,这种方 法允许挂起当前编辑会话并在没有丢失迄今为止已被输入到前一编辑会话的任何修改的 情况下稍后重新开始此会话或完全拒绝该编辑会话。在执行编辑会话期间,运行结构修改 的应用程序的概念允许在应用程序彼此不同时运行不止一个的排他的编辑会话。为了改进建立编辑会话时的用户效率和安全,可以在锁定的或未锁定的模式下执 行编辑会话,其中,锁定模式允许对编辑会话打开的应用程序的任何读动作,但并不允许对 该应用程序的任何写动作;并且其中,所述未锁定的模式允许对编辑会话打开的应用程序 的任何读和写动作。为了辅助编辑时的工程阶段,在活动的编辑会话期间,当发布对数据结构不一致 性(诸如数据结构关键字的唯一性)的修改时,检查任何改变。为了限制用编辑版本来更新数据库所需的时间,工程用户应具有访问数据库的让 路(give-way)权,而没有由与正在编辑中的目前的应用程序的数据结构相连的其它用户引 起的任何干扰。因此,为了将编辑版本保存到数据库,连接到该应用程序的数据结构的任何 用户在将编辑版本安装到数据库之前被断开。为了保证其它用户当编辑会话通过工程用户处于未锁定模式时具有的对读/写 选项的可访问性,在处于未锁定模式的编辑会话的情况下有利地提供的是在编辑会话期 间对应用程序的数据结构进行的改变在与当前版本的数据结构不一致的情况下被丢弃。


在下文中,参照附图来更详细地描述本发明的优选实施例,在这些附图中 图1示意性地描绘出自定义对象配置程序COC的屏幕截图2示意性地描绘出用于锁定的编辑会话的打开窗口的屏幕截图; 图3示意性地描绘出用于读写应用程序的窗口的屏幕截图; 图4示意性地描绘出用于新数据关系/结构的可视化的窗口的屏幕截图; 图5示意性地描绘出关系上下文菜单的窗口的屏幕截图; 图6示意性地描绘出用于新关系/结构的定义的窗口的屏幕截图; 图7示意性地描绘出用于编辑关系的窗口的屏幕截图; 图8示意性地描绘出用于关闭编辑会话的窗口的屏幕截图9示意性地描绘出具有关于保存未锁定的编辑会话的改变的错误消息的屏幕截图;图10示意性地描绘出具有用于关闭编辑会话的挂起选项的屏幕截图; 图11示意性地描绘出自定义对象配置程序中的挂起的编辑会话的屏幕截图;以及 图12示意性地描绘出挂起的编辑会话的打开的屏幕截图。
具体实施例方式对于本发明的说明,必须强调的是Microsoft . NET Framework是用于制造执行 系统的基本软件“骨干”。图1示意性地图解说明了 SIMATIC IT之内的当打开编辑会话时的自定义对象配 置程序的屏幕截图。为了简短地解释SIMATIC IT的背景,不得不提及ISA-95标准。ISA-95 逐渐地被接受为客户能够信赖的用于制造执行系统的世界标准。SIMATIC IT不仅覆盖 ISA-95功能,而且实际上使用ISA-95作为其产品架构的蓝图。西门子股份公司(SIMATIC IT的所有者)是ISA-95委员会的对其持续发展有贡献的正式会员。SIMATIC IT本身是代表用于制造执行系统(MES)的西门子的主张的软件组件的 集合。SIMATIC IT的唯一性通过其整个架构来代表,使用ISA-95作为实施的架构蓝图来设 计。SIMATIC IT生产建模程序使得能够在完全图形的环境下定义工厂模型和(在规则方面 的)所有标准操作程序。SIMATIC IT组件通过物理方式执行这些规则中所定义的动作。本发明的一般构思是在编辑会话之内创建正在被修改的结构的“拷贝”并明确地 对这些结构的“拷贝”(例如,通过像“编辑(EDITING)”这样的标签)进行标识。这样的结构 的“旧拷贝”也将被标记(例如,作为“当前的(⑶RRENT)”)。这样,复制要修改的结构。关系 数据库的管理程序知道必须何时通过明确地定义“编辑会话”来复制结构。另外,应用程序 的概念标识出哪个数据结构必须被修改(并且因此被拷贝)。应用程序是一组数据结构。由 于数据结构可仅属于一个唯一的应用程序,所以可能当前打开不止一个的编辑会话,假设 这些编辑会话涉及不同的应用程序。这样,对于用户而言可容许的动作是如下列出的那些动作
用户能够在编辑会话之内执行改变并在不以任何方式影响所连接的客户端的情况下 使这些改变中止。用户能够在其它客户端被连接到相同应用(连接到相同数据结构)的同时 打开编辑会话。用户能够执行对同时被客户端访问的结构的改变,例如从而去针对其周期 性地存储值的属性。用户能够关闭编辑会话,从而退出改变。然后能够检查客户端仍被连 接到该数据结构,并且能够在没有任何干扰的情况下继续存储其数据;而且,浏览方法返回 在改变客户端之前的结构。用户能够打开不同应用程序上的更多编辑会话和其中的某些编 辑会话,同时丢弃其它编辑会话;
一打开用于改变应用程序A的数据结构的编辑会话; 一打开用于改变应用程序B的数据结构的编辑会话; 一执行对应用程序A的数据结构的改变; 一执行对应用程序B的数据结构的改变; 一关闭用于应用程序A的编辑会话,保存改变;以及 一关闭用于应用程序B的编辑会话,丢弃改变。系统在如下版本上存储在编辑会话期间(即在已打开编辑会话之后)完成的所有 改变该版本被标记为“编辑(EDITING)”并且与被客户端访问以进行所有浏览和运行时间操作的名为“当前(CURRENT),,的版本分离(明显排除在编辑会话本身的内部完成的被排他 地应用于被标记为“编辑(EDITING)”的结构的任何工程操作)。“编辑(EDITING)”版本的范围被限于编辑会话。这意味着,当打开编辑会话时,创 建这样的结构,并且通常,当关闭该会话时,这样的结构消失。如果用“退出(QUIT)”参数 来关闭编辑会话,则“编辑(EDITING)”版本被直接去除;否则,如果用“保存(SAVE)”参数 来关闭该会话,则其状态被改变为“当前的(CURRENT)”并且旧的当前版本被去除。在事务 回退(rollback)的情况下,唯一的结果是“当前(⑶RRENT)”版本以及对于可删除各个单独 修改并使该组一致以便稍后被保存为“当前(CURRENT)”的用户仍可用的“编辑(EDTING)” 版本被保留。附加状态被标记为“挂起的(SUSPENDED)”。在这种情况下,这个状态是纯逻 辑的(即,其未被明确标记且并没有隐含结构的附加拷贝)。当用户想要在既不丢弃被编辑 的改变也不将这些改变保存为“当前的(CURRENT)”(例如,因为这些改变仍未完成)的情况 下关闭编辑会话时,可以选择这个状态。在这种情况下,当在未保存或退出编辑会话的情况 下关闭该编辑会话时,存储在编辑(EDITING)会话中的配置数据保持不变这些配置数据 未被导出而成为类似于在“保存(SAVE)”操作期间的“当前(⑶RRENT)”版本,也未在“退出 (QUIT)”操作的情况下被从数据库去除。一针对给定应用程序打开新的编辑会话,系统就检查“编辑(EDITING)”版本是否 已存在。由于系统不允许对于每个应用程序具有不止一个的编辑会话,所以请求用户在两 个选项之间进行选择。重新打开被挂起的版本以便将其保存或将其丢弃。如果选择了第二 选项,则从头开始用新的版本覆写被挂起的“编辑(EDITING)”版本,并且在前一会话期间完 成的改变被永远地丢失。最后,本系统和方法允许提供一种挂起的会话,即使当此要求未基于明确的用户 选择,而是由于在工程活动期间可能发生的问题而引起此要求时也能提供这种挂起的会 话。例如,用户执行其工程的配置客户端失去到数据服务器的连接。在这样的情况下,被修 改的结构以类似于编辑会话已被挂起的方式仍继续存在。当然,编辑会话由于在其上打开 该编辑会话的客户端看起来被关闭而被关闭。这种方法具有以下有说服力的优点
1.访问存储在数据库中的数据的其它客户端将看到“当前(CURRENT)”版本,其避免不 完整修改的呈现,并且更一般而言,始终集中于对结构稳定的数据的访问。2. “编辑(EDITING)”拷贝被保存在数据库上,并因此永久地可用,直至这个拷贝 明确地被用户动作去除为止。这允许在系统崩溃或任何种类的严重数据问题的情况下在没 有特定努力的情况下恢复此版本。3.当使得“编辑(EDITING)”拷贝成为永久的时,应用一次事务(用“编辑 (EDITING)”拷贝覆写“当前(⑶RRENT) “版本)。当在此动作期间发生问题时,事务的回退 会保持“当前(⑶RRENT)”版本不受影响,并且仍保存“编辑(EDITING)”拷贝。4.事务的持续时间非常有限,并且更加具有确定性(deterministic),因为该事 务仅要求将有限的一组表格拷贝到数据库中所需的时间。总而言之,这种新方法的两个主要优点在于可能在其它应用程序以受控且安全 的方式访问(既读又写)存储在数据库上的数据的同时执行工程活动。高度降低了工程师发 现其工作(可能长且几乎不可重复)完全丢失的风险。这些优点使复杂关系数据库上的工程活动容易,从而允许同时发生的工程和测试的扩展使用,最终节省在将复杂数据结构设计 为使其永久(如在工业应用中通常发生的那样)时的时间。下文所述的实例是基于用于MES应用程序开发的已经现有的组件套(被称为 SIMATIC IT)来描写的。特别地,本发明要被应用于自定义对象配置程序(C0C)、即一种用于 使得用户能够根据其个人需求来扩展SIMATIC IT数据的数据库方案的工具。SIMATIC IT 生产套件使用Microsoft SQL服务器作为用于存储工程和运行时间数据的后端。这些数 据通常被存储在一个或更多数据库中。SIMATIC IT生产套件数据库不能由用户来管理,并 且因此,用户不可能变更每个现有数据库表格的结构和配置,但是可能定义自定义对象来 存储自定义数据。自定义对象CO本质上是允许用户创建并管理存储在SIMATIC IT生产套 件数据库内部以便支持实际上复杂的数据管理要求的方便的抽象概念。借助于不可直接访 问SQL服务器的图形用户界面来创建和配置持有CO的自定义数据结构。在SIMATIC IT组 件数据库中定义的CO支持关系和参照完整性,并且能够用来扩展生产订单管理程序和/或 材料管理程序的某些数据库表格。可以用COC用户界面或以编程方式、也经由COGSI界面来定义CO的结构、属性和 索引。当通过用户界面来修改CO时,应用本发明。以下说明将解释如何实施以下特征
SIMATIC IT用户的应由本发明实现的目标是使得用户还能够执行相同自定义结构的 耐久的工程会话,所述相同自定义结构同时正在被(连接到针对其已打开编辑会话的相同 应用程序的)其它客户端使用,从而避免客户端访问具有与其在高速缓冲存储器中具有的 结构不同的结构的表格。此目标将通过提供用于执行对在运行时间中所用的自定义结构 (“当前(CURRENT)”版本)的改变的单独环境来实现。作为此改变的结果,将可能允许客户端 在整个编辑会话中保持被连接,并且只有当检验到改变且这些改变成为强制性版本时(即 只有当关闭会话且“编辑(EDITING)”版本成为“当前(⑶RRENT)”时),才强迫其断开和重新 对准到新数据结构。下面列出的是
一想要配置CO的工程师根据期望的改变执行的动作(用户动作); -由系统相应于用户动作发布的相对应的效果(系统反应); 一支持此编辑会话(用户界面)的用户界面(即CO配置工具)修改。用户动作
用户能够在PC (PCl)上打开CO配置程序(COC)并借助于该COC执行以下动作
a)根据第一应用程序Yl在用于数据结构的共享(未锁定)模式下打开编辑会话;
b)执行对应用程序Yl的结构和关系的改变;
c)浏览用于应用程序Yl的“编辑(EDITING)”版本;
d)根据第二应用程序Y2在用于数据结构的共享(未锁定)模式下打开编辑会话;
e)执行对应用程序Y2的结构和关系的改变;
f)浏览用于应用程序Y2的“编辑(EDITING)”版本;
g)浏览仍处于只读模式的所有应用程序的结构和关系;
h)用“退出(QUIT)”选项关闭用于应用程序Y2的编辑会话; i )用“保存(SAVE),,选项关闭用于应用程序Yl的编辑会话。虽然在PCl上打开C0C,但是可能在网络中的不同PC上打开COC的其它实例并在仍在PCl上打开一个或更多编辑会话的同时执行以下动作
j)浏览仍处于只读模式的所有应用程序的结构和关系,这些应用程序包括因为编辑会 话仍是打开的而处于写模式的应用程序Yl和Y2 ;
k)打开用于与应用程序Yl和Y2不同的任何其它应用程序的数据结构的编辑会话; 1)执行对用于最后提及的编辑会话的编辑会话内部的结构和关系的改变; m)浏览此编辑会话内部的“编辑(EDITING)”版本; η)用“退出(QUIT)”选项或“保存(SAVE)”选项来关闭编辑会话。系统反应
下面是对在前一段中列出的用户动作的系统反应请注意,带有字母的编号提供在用 户动作与系统反应之间的精确的对应关系
a)在应用程序Yl被定义用于的数据库中为应用程序Yl创建“编辑(EDITING)”版本, 即,属于应用程序Yl的所有实体(数据结构和关系)被复制到数据库中并被标记有版本IDl (类型“编辑(EDITING)”);
b)对应用程序Yl中的数据结构的配置的改变被持久地存储在数据库中的与“编辑 (EDITING)”版本相对应的记录中;
c)在数据库中浏览包括在版本被设置为“编辑(EDITING)”版本的应用程序Yl之内的 所有实体;
d)在应用程序Y2被定义用于的数据库中为应用程序Y2创建“编辑(EDITING)”版本, 即,属于应用程序Y2的所有实体(数据结构和关系)被复制到数据库中并被标记有版本ID2 (类型“编辑(EDITING)”);
e)对应用程序Y2中的数据结构的配置的改变被持久地存储在数据库中的与“编辑 (EDITING)”版本相对应的记录中;
f)在数据库中浏览包括在版本被设置为“编辑(EDITING)”版本的应用程序Y2之内的 所有实体;
g)在数据库中浏览版本ID被设置为“当前(⑶RRENT)”的属于与Yl和Y2不同的应用 程序的所有实体;
h)系统执行以下操作
i)使被连接到应用程序Yl的数据结构的所有客户端(如果有的话)断开
il)如果断开失败,则会话未被关闭;版本仍处于“编辑(EDITING)”状态,“当前 (CURRENT)”版本未被以任何方式改变,并且(借助于适当的错误)告知用户他能够再试一次 并将在连接一被修复就成功地将其关闭;
2)否则,以事务方式将“编辑(EDITING)”版本导出到“当前(⑶RRENT)”版本;如果导 出成功(如果未发生错误),则物理数据库结构被更新成在“编辑(EDITING)”版本中定义的 结构,.clb文件被更新,版本ID被设置为“当前(⑶RRENT)”的属于应用程序Yl的所有实 体都被从数据库中去除,并且版本ID被设置为“编辑(EDITING)”的属于应用程序Yl的所 有实体被切换(toggle)成“当前(⑶RRENT)”。关闭编辑会话,并且客户端能够再次重新连 接。ii)否则,如果在i2)下列出的任何操作失败,则整个步骤i2)被退回重来;未关 闭会话,版本仍处于“编辑(EDITING)”状态,“当前(⑶RRENT)”版本未被以任何方式改变,并且告知用户将发生以下两个选项中的一个
iil)可恢复错误、诸如网络故障,在这种情况下,用户可以再次尝试,并且连接一被修 复,就将成功保存“编辑(EDITING)”版本;
2)可恢复错误,例如,如果包含在“编辑(EDITING)”版本中的某些约束在打开会话 的同时不再被应用于由任何客户端插入的数据结构,则可发生所述可恢复错误;在这种情 况下,用户将不会成功保存“编辑(EDITING)”版本,除非用户进行改变,或者是数据或者是 某些“编辑(EDITING)”版本改变(为了在此方面帮助用户,将示出引起错误的编辑改变,以 帮助用户标识并校正该错误)。i)浏览“当前(⑶RRENT)”版本;在数据库中浏览属于版本ID被设置为“当前 (CURRENT)”的任何应用程序的所有实体;
j)与d)的情况相同,但用于另一应用程序,该另一应用程序不同于Y2和Y2,比方说
Y3 ;
k)与e)的情况相同,但用于应用程序Y3 ; 1)与f)的情况相同,但用于应用程序Y3 ;
m)与h)的情况相同,但用于应用程序Y3,或者与i)的情况相同,但用于应用程序Y3。用户界面
一(借助与在前一节中相同的向导)建立了到数据库的连接,就将示出被分组在自定义 应用程序中的针对每个数据库定义的所有自定义结构。在这一点,将以下文所述的方式针 对不同的情况修改用户界面 1)打开编辑会话
主要的差别将是不允许用户执行对数据结构的任何改变,直至该用户实际上打开编辑 会话为止;也就是说,如果编辑会话未被打开,则COC将处于只读模式。为了打开编辑会话, 将在上下文菜单中提供新命令(参见图1),其将在两个子节点中的一个(运行时间或工程) 已被选择用于给定应用程序时被启用。请注意,由于只能针对给定应用程序打开编辑会话, 所以不可能在选择了整个应用程序而不是其子节点之一时打开编辑会话。用户将被请求在 以下两种类型的编辑会话之间选择锁定的或未锁定的。这两种模式之间的主要差别如下锁定会话提供对用户将要修改的结构的用户排 他访问,并因此始终许可提交在会话本身结束时完成的改变的可能性。否则,连接到已在会 话期间被改变的某个结构的客户端可能具有与防止会话被提交的更新相冲突的存储记录。 因此,这种会话只能在不存在连接到相同应用程序的客户端的情况下被打开如果选择了 这样的模式,并且存在连接的客户端,则用类似于图2中所示的对话框来提示用户,用于选 择是否将所有客户端断开,以便打开会话,或者使该请求中止。未锁定的会话允许执行长时 间的编辑会话,而无需将客户端与该相同的应用程序断开。这可以在每当用户能够许可在 编辑会话期间存储或更新的记录将不会产生与针对该结构完成的改变的任何冲突时使用。 事实上,如果在已经用“保存(SAVE)”参数关闭会话之后在提交改变的同时出现冲突,则会 话不能被保存,直至用户进行以下操作之一为止
一从数据库去除创建冲突的数据(例如,具有已被选作编辑会话中的主关键字的字段 中的具有相同值的记录);
一去除在编辑会话中完成的与数据结构冲突的改变(例如去除主关键字);一退出该编辑会话。请注意,在第一次发表(release)未锁定的编辑会话时,COC还不能向用户提供关 于阻止保存编辑会话的冲突的暗示,除了在CDK日志文件中查出的SQL错误之外。因此,当 用户不具有提交实际上完成的改变的任何强制性需求时,未锁定的会话主要是出于测试目 的被提供的。一旦针对给定应用程序打开编辑会话,就启用上下文菜单中的编辑命令。借助于 将被附加到左侧树形控件(tree control)中的应用程序节点(参见图3 读写应用程序)的 适当标志(读写)来将处于编辑模式的应用程序通知给用户。2)新关系管理
为了在编辑会话内部提供定义在自定义结构之间的关系的可能性,当两个结构是不同 应用程序的部分时,必须考虑以下陈述必须通过在具有外关键字的结构所在的应用程序 上打开会话来编辑该关系。为了向用户澄清这一点,COC中的关系的可视化将如下改变 一用于关系可视化的专用窗格(pane)将丢失;
一在COC中的与应用程序相对应的节点下的左侧树形结构中,将示出两个新节点、即 结构和关系(参见图4)。为了定义新关系,将通过右键点击关系节点上的菜单来提供上下文菜单(参见图 5);为了编辑已经定义的关系,需要在左侧树形结构中将其选择并用右键点击,以便使图7 中所示的上下文菜单可视化。3)关闭编辑会话
为了提交在编辑会话期间完成的所有改变,用户仅具有给出也通过上下文菜单提供的 关闭编辑会话命令的可能性。请注意,前一命令“保存(SAVE)”将从工具栏消失并大体上从 COC消失。当这样的命令被调用(参见图8 关闭编辑会话)时,提示用户在以下两个选项之 间进行选择“保存(SAVE)”或“退出(QUIT)”。如果针对未锁定的会话选择了选项“保存(SAVE)”,则连接到针对其打开编辑会话 的应用程序的客户端将被断开,并且提示用户借助于图2中所示的相同对话框来确认此动 作。如上面所提及的那样,在这种情况下,可能发生的是在编辑会话期间所完成的某些改 变(例如唯一性约束的插入)由于与由任何所连接的客户端在编辑会话期间存储在表格中 的数据的冲突而不能被应用于物理数据库。在这种情况下,显示图9中所示的对话。请注意,如果编辑会话已经由于系统在完成每个修改时所完成的检查和所连接的 客户端的不存在而在锁定模式下被锁定时,则不发生此问题。如果选择了选项“退出(QUIT)”,则在编辑会话期间完成的改变被丢弃,应用程序 退回只读模式,并且对于锁定会话而言,客户端能够再次重新连接。请注意,如果在未锁 定模式下打开会话,如果会话退出则客户端并不接收任何PPA_LIB0LDVERSI0N或C0GSI_ DIALIGNED_STRUCTURE 错误。4)具有挂起参数的CO编辑会话
当在没有保存或退出的情况下关闭编辑时,存储在编辑会话中的配置数据保持不变; 这些配置数据没有被导出到clb中,以便成为“当前(CURRENT)”版本,也没有如当该版本被 退出时那样被从数据库去除。对于给定应用程序一打开新的编辑会话,系统就检查“编辑(EDITING)”版本是否已存在。由于对于每个应用程序不允许系统具有不止一个的“编辑(EDITING)”版本,所以 在这种情况下,请求用户在以下两个选项之间进行选择重新打开挂起的版本,以便保存所 述挂起的版本或丢弃所述挂起的版本。请注意,如果选择了第二选项,则从头开始用新的 版本覆写所述“编辑(EDITING)”版本,并且在前一会话期间完成的修改被永远地丢失。在 读写模式下的应用程序上通过右键点击而被启用的COC关闭编辑会话上下文菜单(参见图 10 )将示出除了 “保存(SAVE),,和“退出(QUIT),,选项之外的第三选项“挂起(SUSPEND) ”。
如在图11中那样,将在COC中示出编辑会话已被挂起的应用程序。图12图解说 明了用于重新打开被挂起的编辑会话的上下文菜单。
权利要求
1.一种用于在对象关系映射保存中在结构事务执行的情况下保护关系数据库的完整 性的方法,其包括以下步骤a)创建用于要执行的结构数据库事务的应用程序,所述应用程序包括数据结构组;b)在所述应用程序上开始编辑会话;所述编辑会话拷贝所述应用程序的数据结构并将 该数据结构的原始版本标记为所使用的当前版本而且将被拷贝的版本标记为编辑版本;c)在所述数据结构的编辑版本中编辑对数据结构的任何改变;d)通过将数据结构的编辑版本保存到数据库或丢弃数据结构的编辑版本或挂起数据 结构的编辑版本来关闭编辑会话,el)其中,保存编辑版本将数据结构的编辑版本安装到数据库,从而去除数据结构的原 始版本并且去除在前编辑版本的标记;e2)其中,丢弃编辑版本删除编辑版本并去除所述数据结构的原始版本的标记;以及e3)其中,挂起编辑版本暂时地存储编辑版本,保持数据结构的原始版本并去除所述数 据结构的原始版本的标记。
2.根据权利要求1所述的方法,其中,在锁定的或未锁定的模式下执行编辑会话,其中 锁定模式允许对编辑会话是打开的应用程序的任何读动作,但并不允许对所述应用程序的 任何写动作;并且其中,所述未锁定的模式允许对编辑会话是打开的应用程序的任何读和 写动作。
3.根据权利要求1或2所述的方法,其中,在编辑期间,当发布对数据结构不一致性的 修改时,诸如对数据结构关键字的唯一性的修改时,检查任何变化。
4.根据前述权利要求中的任一项所述的方法,其中,为了将编辑版本保存到数据库,连 接到应用程序的数据结构的任何用户在编辑版本被安装到数据库之前被断开。
5.根据前述权利要求中的任一项所述的方法,其中,在未锁定模式下的编辑会话的情 况下,在与当前版本的数据结构不一致的情况下丢弃在编辑会话期间对应用程序的数据结 构进行的改变。
全文摘要
本发明涉及在结构事务执行的情况下保护关系数据库的完整性的方法。所述方法包括创建用于要执行的结构数据库事务的应用程序;在所述应用程序上开始编辑会话;所述编辑会话拷贝所述应用程序的数据结构并将该数据结构的原始版本标记为所使用的当前版本而且将被拷贝的版本标记为编辑版本;在编辑版本中编辑对数据结构的任何改变;通过将编辑版本保存到数据库或丢弃编辑版本或挂起编辑版本来关闭编辑会话,其中保存编辑版本将编辑版本安装到数据库,从而去除原始版本并且去除在前编辑版本的标记;其中丢弃编辑版本删除编辑版本并去除原始版本的标记;以及其中挂起编辑版本暂时地存储编辑版本,保持原始版本并去除所述数据结构的原始版本的标记。
文档编号G06F17/30GK102103632SQ20101059396
公开日2011年6月22日 申请日期2010年12月17日 优先权日2009年12月18日
发明者皮西奥利 G., 索利马诺 M. 申请人:西门子公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1