總體上講,本公開涉及數(shù)據(jù)處理系統(tǒng)中的經(jīng)營過程管理和案例管理,更具體地,本公開涉及在數(shù)據(jù)處理系統(tǒng)中將版本化域中所定義和實例化的業(yè)務相關聯(lián)到非版本化域。
背景技術:
組織機構會產(chǎn)生內(nèi)容或信息,并且經(jīng)常通過某一類型的業(yè)務流程來產(chǎn)生這些內(nèi)容或信息,其中該業(yè)務流程被形式上地定義并且由系統(tǒng)執(zhí)行,或者隱含于雇員之間以及與客戶和/或合作伙伴的人工交互。內(nèi)容和業(yè)務流程是組織機構的經(jīng)營的關鍵,因此,使用軟件系統(tǒng)來形式化這些業(yè)務流程,以及使能對組織機構的運作至關重要的信息的編目(catalog)與收集。
因此,需要對業(yè)務流程和數(shù)據(jù)定義進行設計,來使得能夠在構建組織機構成功地進行經(jīng)營所需的內(nèi)部和外部的應用的過程中使用。這不僅適用于文檔和業(yè)務流程,而且適用于任何類型的業(yè)務、或者定義了構成組織機構的核心概念的元數(shù)據(jù)。對于如何在軟件系統(tǒng)中捕獲元數(shù)據(jù)存在著兩種選擇:版本化的和非版本化的。
版本化的途徑捕獲特定業(yè)務的關系、時序、或者演變。當每一個特定版本對于系統(tǒng)的操作至關重要而且必須可以獨立于同一元數(shù)據(jù)的其它變型(即,版本)而訪問時,這一途徑是有用的。業(yè)務流程是一個示例。這些業(yè)務流程通常定義了結構良好的流、或者活動之間的關系。業(yè)務流程也通常是短期的,并且可以并行地執(zhí)行同一業(yè)務流程的多個實例。其結果是,相應的定義可以受益于版本化的途徑,該版本化的方案使得多個實例能夠繼續(xù)執(zhí)行,而不會有因不可預料的或者不兼容的改變導致失敗的風險。與此同時,新的版本可以改進業(yè)務流程,并且允許新實例立即受益于這一改進,而不會有影響已在使用的實例的風險。例如,處理保險索賠的業(yè)務流程可以隨時間演變。當定義了新的版本時,可以在舊版本繼續(xù)運行直至完成的同時,推出新的版本。版本化的方案允許這樣的靈活性。
非版本化的途徑基本上表述的是僅存在元數(shù)據(jù)的一個版本,而且元數(shù)據(jù)的這一版本隨時間演變。內(nèi)容或信息可以較好地適合于這一途徑。文檔一旦創(chuàng)建將通常將是長期的。例如,當?shù)谝淮味x時,保險策略定義可能僅包括幾個屬性,但隨著保險公司的經(jīng)營的增長,需要對該策略捕獲的信息加以改進,與此同時,較舊的策略必須仍然可以由與舊的策略協(xié)同運作的較新的系統(tǒng)加以訪問和處理。與業(yè)務流程定義不同,文檔定義通常受益于持續(xù)隨著經(jīng)營演變的單個版本。這對于信息挖掘尤其適用。當文檔定義具有多個版本時,文檔變得難以搜索,并且難以對與實質上為單個文檔定義相關聯(lián)的實例加以聯(lián)合。因此,僅使一個文檔定義成為系統(tǒng)中所有文檔之間的一個公共鏈路,是一個重要的屬性。
取決于概念的性質,每個途徑也將存在針對所定義的某些方面的限制??紤]到業(yè)務流程所生成的數(shù)據(jù)。由于業(yè)務流程演變的速度和為維持多個實例并行運行的相關要求,通常,僅可以利用版本化的途徑來實現(xiàn)預期將迅速演變的業(yè)務流程本身。然而,與業(yè)務流程相關聯(lián)的信息、或者特性通常較好地適合于非版本化途徑的使用。以保險索賠業(yè)務流程為例,可能產(chǎn)生必須在該業(yè)務流程完成(以及已經(jīng)部署了該業(yè)務流程的多個新的版本)之后長期存在的文檔和數(shù)據(jù),但是該信息還必須是可搜索并且可關聯(lián)到創(chuàng)建該信息的單個索賠業(yè)務流程?;\統(tǒng)地講,可以將其視為同一硬幣的兩面。在某一實例中,組織機構的元數(shù)據(jù)可能需要版本化地運作或者加以訪問(解決索賠的業(yè)務流程),并且在其它情況下,組織機構的元數(shù)據(jù)可能需要非版本化地運作或者加以訪問(與進行中的或者已解決的索賠相關聯(lián)的數(shù)據(jù))。
技術實現(xiàn)要素:
根據(jù)一個實施例,一種用于將版本化域和非版本化域之間的業(yè)務相互關聯(lián)的計算機實現(xiàn)的方法,針對一組業(yè)務中的業(yè)務生成具有版本化域和非版本化域兩者的屬性的元數(shù)據(jù),其中所述元數(shù)據(jù)與版本化域和非版本化域中所使用的該組業(yè)務相關聯(lián);使用版本化業(yè)務定義的具體版本來創(chuàng)建實例,其中,所述實例包含直接根據(jù)版本化業(yè)務定義創(chuàng)建的第一部分和根據(jù)非版本化業(yè)務定義創(chuàng)建的第二部分;指定版本化域和非版本化域中業(yè)務的相應表示之間的鏈路,其中,所指定的鏈路定義了版本化域中一個業(yè)務的多個版本與非版本化域中同一業(yè)務的單個非版本化表示之間的關系;響應于從版本化域或者非版本化域提供用于執(zhí)行業(yè)務的規(guī)劃、執(zhí)行和更新實例中選擇的一個的一組構想,從版本化域或者非版本化域接收業(yè)務的規(guī)劃、執(zhí)行和更新實例中所選擇的那一個,其中,使用一組預定的驗證規(guī)則執(zhí)行業(yè)務的規(guī)劃、執(zhí)行和更新實例中所選擇的那一個;以及將該業(yè)務定義的所有版本相關聯(lián)到單個非版本化定義,其中,也將該單個非版本化定義的業(yè)務定義相關聯(lián)到該業(yè)務定義的所有版本。
從第一方面看,本發(fā)明提供了一種用于將版本化域和非版本化域之間的業(yè)務相互關聯(lián)的計算機實現(xiàn)的方法,包括:針對一組業(yè)務中的業(yè)務生成具有版本化域和非版本化域兩者的屬性的元數(shù)據(jù),其中所述元數(shù)據(jù)與版本化域和非版本化域中所使用的該組業(yè)務相關聯(lián);使用版本化業(yè)務定義的具體版本來創(chuàng)建實例,其中,所述實例包含直接根據(jù)版本化業(yè)務定義創(chuàng)建的第一部分和根據(jù)非版本化業(yè)務定義創(chuàng)建的第二部分;指定版本化域和非版本化域中業(yè)務的相應表示之間的鏈路,其中,所指定的鏈路定義了版本化域中一個業(yè)務的多個版本與非版本化域中同一業(yè)務的單個非版本化表示之間的關系;響應于從版本化域或者非版本化域提供用于執(zhí)行業(yè)務的規(guī)劃、執(zhí)行和更新實例中選擇的一個的一組構想,從版本化域或者非版本化域接收業(yè)務的規(guī)劃、執(zhí)行和更新實例中所選擇的那一個,其中,使用一組預定的驗證規(guī)則執(zhí)行業(yè)務的規(guī)劃、執(zhí)行和更新實例中所選擇的那一個;以及將該業(yè)務定義的所有版本相關聯(lián)到單個非版本化定義,其中,也將該單個非版本化定義的業(yè)務定義相關聯(lián)到該業(yè)務定義的所有版本。
優(yōu)選地,本發(fā)明提供了一種方法,其中,生成元數(shù)據(jù)還包括:向包含由版本化定義的所有版本以及非版本化定義共享的不變的分量的業(yè)務分配唯一標識符(UID),其中,以第一形式將UID表示為版本化的:<公共UID>_<版本ID>以及以第二形式將UID表示為非版本化的:<公共UID>,其中,系統(tǒng)使用<公共UID>片段識別同一業(yè)務的所有版本以及相關聯(lián)的單個非版本化定義,并且其中,在相關聯(lián)的業(yè)務的整個生命期中UID是不可變的;以及根據(jù)各方面生成屬性,當該屬性改變時,使與該屬性相關聯(lián)的實例數(shù)據(jù)與非版本化域中的現(xiàn)存實例不兼容,其中,具體的方面被視為在定義的生命期中是不可變的,并且當在版本化域中改變這些具體的方面時,所述改變導致系統(tǒng)將該屬性識別為對父級定義的全新的添加,其中,由版本化屬性和非版本化屬性兩者共享整個UID,并且以<UID>_<不可變方面1值>_<...>_<不可變方面n值>的形式表示。
優(yōu)選地,本發(fā)明提供了一種方法,其中,響應于提供用于執(zhí)行業(yè)務的規(guī)劃、執(zhí)行和更新實例中選擇的一個的一組構想還包括:接收版本化構想和非版本化構想的選擇之一,以更新實例數(shù)據(jù);響應于接收對版本化構想的選擇,僅訪問在版本化定義的具體版本上所定義的那些屬性以及針對版本化定義的該具體版本的屬性的一組預定的驗證規(guī)則;驗證該構想上直接針對版本化定義的具體版本的更新;響應于更新的有效,查找非版本化構想的相應的屬性,然后將其保存在同一交易中,以維持該定義的版本化實例和非版本化實例之間的同步;響應于接收對非版本化構想的選擇,揭示出在版本化定義的所有版本中所定義的屬性,所述版本化定義的所有版本中所定義的屬性被映射于非版本化定義中相應的屬性;響應于通過非版本化構想進行的改變,在相應的版本化構想中進行查找,其中,將所述改變映射于該相應的版本化構想,并且檢查該組預定的驗證規(guī)則中由具體版本化定義所定義的相應的驗證規(guī)則;響應于更新的成功,將對版本化實例以及非版本化實例的改變保存在單個交易中;以及響應于更新的失敗,回滾所述改變。
優(yōu)選地,本發(fā)明提供了一種方法,還包括:更新版本化域中的業(yè)務定義,其中,對業(yè)務定義的最新版本n的用戶改變創(chuàng)建包含該用戶改變的新的版本n+1,其中,該用戶改變?yōu)樘砑?、移除以及修改之一,并且對于每一個用戶改變,進行相應的到非版本化業(yè)務定義的映射,以同步非版本化業(yè)務定義,其中:響應于與業(yè)務定義的屬性相關聯(lián)的該組預定的驗證規(guī)則中的一個驗證規(guī)則的改變,不對非版本化業(yè)務定義進行更新;響應于可以以兼容的方式應用于非版本化業(yè)務定義的一個方面改變,對非版本化定義中的該屬性改變;以及響應于不可以以兼容的方式應用于非版本化業(yè)務定義的一個方面改變,使用與版本化業(yè)務定義的屬性相關聯(lián)的該組預定的驗證規(guī)則向非版本化定義添加新的屬性。
優(yōu)選地,本發(fā)明提供了一種方法,其中,該組預定的驗證規(guī)則包含一個或多個與業(yè)務定義的屬性相關聯(lián)的預定的驗證規(guī)則,并且其中,該組預定義的驗證規(guī)則中的所述一個或多個規(guī)則使用版本化定義中的所述一個或多個預定義的驗證規(guī)則驗證所接收的針對版本化定義的特定版本的改變,無論所更新的實例是非版本化實例還是版本化實例。
優(yōu)選地,本發(fā)明提供了一種方法,其中,所述相關聯(lián)還包括業(yè)務層面的第一關聯(lián)層面和屬性層面的第二關聯(lián)層面,其中,所述相關聯(lián)使用適用于定義和實例的唯一標識符將業(yè)務相關聯(lián)。
優(yōu)選地,本發(fā)明提供了一種方法,其中,第一部分或者第二部分之一的查找可以使用第一部分或者第二部分中的剩余的一個進行,所述第一部分或者第二部分中的剩余的一個也共享由版本化定義的所有版本以及非版本化定義共享的不變的分量。
有利的是,本發(fā)明提供了這樣一種機制,其中,對同一業(yè)務的兩個版本進行鏈接,所述同一業(yè)務的兩個版本在兩個域中予以表示并且要求以兩種形式對其訪問。
有利的是,所述方法定義了業(yè)務的多個版本與同一業(yè)務的單個非版本化表示之間的關系,并且利用這些關系使雙方作為一個運作。有利的是,本發(fā)明:
·將業(yè)務定義的所有版本相關聯(lián)到其單個非版本化的表示,反之亦然。
·將特定業(yè)務定義版本的屬性、或特性、定義相關聯(lián)到非版本化表示中相同的屬性、或特性、定義,反之亦然。
·定義諸如針對版本化業(yè)務定義的添加、更新以及刪除的編輯語義以及對應用于相應非版本化業(yè)務定義的編輯語義的轉換。
·取決于在版本化構想或非版本化構想上執(zhí)行操作,而定義如何對業(yè)務的實例進行讀取和更新操作。
·定義如何在作為一個的版本化和非版本化業(yè)務的實例之間同步化數(shù)據(jù)更新,或者如何在另一方進行更新。
·當通過版本化或者非版本化構想更新業(yè)務實例時,定義如何定義和評估屬性、或特性、驗證規(guī)則。
從第二方面看,本發(fā)明提供了一種用于將版本化域和非版本化域之間的業(yè)務相互關聯(lián)的計算機程序產(chǎn)品,所述計算機程序產(chǎn)品包含其上載有程序指令的計算機可讀存儲介質,所述程序指令可由處理器單元執(zhí)行,從而使得處理器單元:針對一組業(yè)務中的業(yè)務生成具有版本化域和非版本化域兩者的屬性的元數(shù)據(jù),其中所述元數(shù)據(jù)與版本化域和非版本化域中所使用的該組業(yè)務相關聯(lián);使用版本化業(yè)務定義的具體版本來創(chuàng)建實例,其中,所述實例包含直接根據(jù)版本化業(yè)務定義創(chuàng)建的第一部分和根據(jù)非版本化業(yè)務定義創(chuàng)建的第二部分;指定版本化域和非版本化域中業(yè)務的相應表示之間的鏈路,其中,所指定的鏈路定義了版本化域中一個業(yè)務的多個版本與非版本化域中同一業(yè)務的單個非版本化表示之間的關系;響應于從版本化域或者非版本化域提供用于執(zhí)行業(yè)務的規(guī)劃、執(zhí)行和更新實例中選擇的一個的一組構想,從版本化域或者非版本化域接收業(yè)務的規(guī)劃、執(zhí)行和更新實例中所選擇的那一個,其中,使用一組預定的驗證規(guī)則執(zhí)行業(yè)務的規(guī)劃、執(zhí)行和更新實例中所選擇的那一個;以及將該業(yè)務定義的所有版本相關聯(lián)到單個非版本化定義,其中,也將該單個非版本化定義的業(yè)務定義相關聯(lián)到該業(yè)務定義的所有版本。
優(yōu)選地,本發(fā)明提供了一種計算機程序產(chǎn)品,其中,可由處理器單元執(zhí)行的使得該處理器單元生成元數(shù)據(jù)的程序指令還包括可由處理器單元執(zhí)行的使得該處理器單元進行如下操作的程序指令:向包含由版本化定義的所有版本以及非版本化定義共享的不變的分量的業(yè)務分配唯一標識符(UID),其中,以第一形式將UID表示為版本化的:<公共UID>_<版本ID>以及以第二形式將UID表示為非版本化的:<公共UID>,其中,系統(tǒng)使用<公共UID>片段識別同一業(yè)務的所有版本以及相關聯(lián)的單個非版本化定義,并且其中,在相關聯(lián)的業(yè)務的整個生命期中UID是不可變的;以及根據(jù)各方面生成屬性,當該屬性改變時,使與該屬性相關聯(lián)的實例數(shù)據(jù)與非版本化域中的現(xiàn)存實例不兼容,其中,具體的方面被視為在定義的生命期中是不可變的,并且當在版本化域中改變這些具體的方面時,所述改變導致系統(tǒng)將該屬性識別為對父級定義的全新的添加,其中,由版本化屬性和非版本化屬性兩者共享整個UID,并且以<UID>_<不可變方面1值>_<...>_<不可變方面n值>的形式表示。
優(yōu)選地,本發(fā)明提供了一種計算機程序產(chǎn)品,其中,可由處理器單元執(zhí)行的使得該處理器單元響應于提供用于執(zhí)行業(yè)務的規(guī)劃、執(zhí)行和更新實例中選擇的一個的一組構想的程序指令還包括可由處理器單元執(zhí)行的使得該處理器單元進行如下操作的程序指令:接收版本化構想和非版本化構想的選擇之一,以更新實例數(shù)據(jù);響應于接收對版本化構想的選擇,僅訪問在版本化定義的具體版本上所定義的那些屬性以及針對版本化定義的該具體版本的屬性的一組預定的驗證規(guī)則;驗證該構想上直接針對版本化定義的具體版本的更新;響應于更新的有效,查找非版本化構想的相應的屬性,然后將其保存在同一交易中,以維持該定義的版本化實例和非版本化實例之間的同步;響應于接收對非版本化構想的選擇,揭示出在版本化定義的所有版本中所定義的屬性,所述版本化定義的所有版本中所定義的屬性被映射于非版本化定義中相應的屬性;響應于通過非版本化構想進行的改變,在相應的版本化構想中進行查找,其中,將所述改變映射于該相應的版本化構想,并且檢查該組預定的驗證規(guī)則中由具體版本化定義所定義的相應的驗證規(guī)則;響應于更新的成功,將對版本化實例以及非版本化實例的改變保存在單個交易中;以及響應于更新的失敗,回滾所述改變。
優(yōu)選地,本發(fā)明提供了一種計算機程序產(chǎn)品,還包括可由處理器單元執(zhí)行的使得該處理器單元進行如下操作的程序指令:更新版本化域中的業(yè)務定義,其中,對業(yè)務定義的最新版本n的用戶改變創(chuàng)建包含該用戶改變的新的版本n+1,其中,該用戶改變?yōu)樘砑?、移除以及修改之一,并且對于每一個用戶改變,進行相應的到非版本化業(yè)務定義的映射,以同步非版本化業(yè)務定義,其中:響應于與業(yè)務定義的屬性相關聯(lián)的該組預定的驗證規(guī)則中的一個驗證規(guī)則的改變,不對非版本化業(yè)務定義進行更新;響應于可以以兼容的方式應用于非版本化業(yè)務定義的一個方面改變,對非版本化定義中的該屬性改變;以及響應于不可以以兼容的方式應用于非版本化業(yè)務定義的一個方面改變,使用與版本化業(yè)務定義的屬性相關聯(lián)的該組預定的驗證規(guī)則向非版本化定義添加新的屬性。
優(yōu)選地,本發(fā)明提供了一種計算機程序產(chǎn)品,其中,該組預定的驗證規(guī)則包含一個或多個與業(yè)務定義的屬性相關聯(lián)的預定的驗證規(guī)則,并且其中,該組預定義的驗證規(guī)則中的所述一個或多個規(guī)則使用版本化定義中的所述一個或多個預定義的驗證規(guī)則驗證所接收的針對版本化定義的特定版本的改變,無論所更新的實例是非版本化實例還是版本化實例。
優(yōu)選地,本發(fā)明提供了一種計算機程序產(chǎn)品,其中,可由處理器單元執(zhí)行的使得該處理器單元進行相關聯(lián)的程序指令還包括可由處理器單元執(zhí)行的使得該處理器單元以業(yè)務層面的第一關聯(lián)層面和以屬性層面的第二關聯(lián)層面進行相關聯(lián)的程序指令,其中,所述相關聯(lián)使用適用于定義和實例的唯一標識符將業(yè)務相關聯(lián)。
優(yōu)選地,本發(fā)明提供了一種計算機程序產(chǎn)品,還包括可由處理器單元執(zhí)行的使得該處理器單元使用第一部分或者第二部分中的剩余的一個查找第一部分或者第二部分之一,所述第一部分或者第二部分中的剩余的一個也共享由版本化定義的所有版本以及非版本化定義共享的不變的分量。
從第三方面看,本發(fā)明提供了用于將版本化域和非版本化域之間的業(yè)務相互關聯(lián)的裝置,所述裝置包括總線、連接到總線的其上載有程序指令內(nèi)存;處理器單元,其中,處理器單元執(zhí)行所述程序指令,從而使得所述裝置執(zhí)行以下操作:針對一組業(yè)務中的業(yè)務生成具有版本化域和非版本化域兩者的屬性的元數(shù)據(jù),其中所述元數(shù)據(jù)與版本化域和非版本化域中所使用的該組業(yè)務相關聯(lián);使用版本化業(yè)務定義的具體版本來創(chuàng)建實例,其中,所述實例包含直接根據(jù)版本化業(yè)務定義創(chuàng)建的第一部分和根據(jù)非版本化業(yè)務定義創(chuàng)建的第二部分;指定版本化域和非版本化域中業(yè)務的相應表示之間的鏈路,其中,所指定的鏈路定義了版本化域中一個業(yè)務的多個版本與非版本化域中同一業(yè)務的單個非版本化表示之間的關系;響應于從版本化域或者非版本化域提供用于執(zhí)行業(yè)務的規(guī)劃、執(zhí)行和更新實例中選擇的一個的一組構想,從版本化域或者非版本化域接收業(yè)務的規(guī)劃、執(zhí)行和更新實例中所選擇的那一個,其中,使用一組預定的驗證規(guī)則執(zhí)行業(yè)務的規(guī)劃、執(zhí)行和更新實例中所選擇的那一個;以及將該業(yè)務定義的所有版本相關聯(lián)到單個非版本化定義,其中,也將該單個非版本化定義的業(yè)務定義相關聯(lián)到該業(yè)務定義的所有版本。
優(yōu)選地,本發(fā)明提供了一種裝置,其中,處理器單元執(zhí)行使得所述裝置生成元數(shù)據(jù)的程序指令還使得所述裝置:向包含由版本化定義的所有版本以及非版本化定義共享的不變的分量的業(yè)務分配唯一標識符(UID),其中,以第一形式將UID表示為版本化的:<公共UID>_<版本ID>以及以第二形式將UID表示為非版本化的:<公共UID>,其中,系統(tǒng)使用<公共UID>片段識別同一業(yè)務的所有版本以及相關聯(lián)的單個非版本化定義,并且其中,在相關聯(lián)的業(yè)務的整個生命期中UID是不可變的;以及根據(jù)各方面生成屬性,當該屬性改變時,使與該屬性相關聯(lián)的實例數(shù)據(jù)與非版本化域中的現(xiàn)存實例不兼容,其中,具體的方面被視為在定義的生命期中是不可變的,并且當在版本化域中改變這些具體的方面時,所述改變導致系統(tǒng)將該屬性識別為對父級定義的全新的添加,其中,由版本化屬性和非版本化屬性兩者共享整個UID,并且以<UID>_<不可變方面1值>_<...>_<不可變方面n值>的形式表示。
優(yōu)選地,本發(fā)明提供了一種裝置,其中,處理器單元執(zhí)行使得該裝置響應于提供用于執(zhí)行業(yè)務的規(guī)劃、執(zhí)行和更新實例中選擇的一個的一組構想的程序指令還使得所述裝置進行如下操作:接收版本化構想和非版本化構想的選擇之一,以更新實例數(shù)據(jù);響應于接收對版本化構想的選擇,僅訪問在版本化定義的具體版本上所定義的那些屬性以及針對版本化定義的該具體版本的屬性的一組預定的驗證規(guī)則;驗證該構想上直接針對版本化定義的具體版本的更新;響應于更新的有效,查找非版本化構想的相應的屬性,然后將其保存在同一交易中,以維持該定義的版本化實例和非版本化實例之間的同步;響應于接收對非版本化構想的選擇,揭示出在版本化定義的所有版本中所定義的屬性,所述版本化定義的所有版本中所定義的屬性被映射于非版本化定義中相應的屬性;響應于通過非版本化構想進行的改變,在相應的版本化構想中進行查找,其中,將所述改變映射于該相應的版本化構想,并且檢查該組預定的驗證規(guī)則中由具體版本化定義所定義的相應的驗證規(guī)則;響應于更新的成功,將對版本化實例以及非版本化實例的改變保存在單個交易中;以及響應于更新的失敗,回滾所述改變。
優(yōu)選地,本發(fā)明提供了一種裝置,其中,處理器單元執(zhí)行程序指令使得所述裝置:更新版本化域中的業(yè)務定義,其中,對業(yè)務定義的最新版本n的用戶改變創(chuàng)建包含該用戶改變的新的版本n+1,其中,該用戶改變?yōu)樘砑?、移除以及修改之一,并且對于每一個用戶改變,進行相應的到非版本化業(yè)務定義的映射,以同步非版本化業(yè)務定義,其中:響應于與業(yè)務定義的屬性相關聯(lián)的該組預定的驗證規(guī)則中的一個驗證規(guī)則的改變,不對非版本化業(yè)務定義進行更新;響應于可以以兼容的方式應用于非版本化業(yè)務定義的一個方面改變,對非版本化定義中的該屬性改變;以及響應于不可以以兼容的方式應用于非版本化業(yè)務定義的一個方面改變,使用與版本化業(yè)務定義的屬性相關聯(lián)的該組預定的驗證規(guī)則向非版本化定義添加新的屬性。
優(yōu)選地,本發(fā)明提供了一種裝置,其中,該組預定的驗證規(guī)則包含一個或多個與業(yè)務定義的屬性相關聯(lián)的預定的驗證規(guī)則,并且其中,該組預定義的驗證規(guī)則中的所述一個或多個規(guī)則使用版本化定義中的所述一個或多個預定義的驗證規(guī)則驗證所接收的針對版本化定義的特定版本的改變,無論所更新的實例是非版本化實例還是版本化實例。
優(yōu)選地,本發(fā)明提供了一種裝置,其中,處理器單元執(zhí)行使得所述裝置進行相關聯(lián)的程序指令還使得所述裝置以業(yè)務層面的第一關聯(lián)層面和以屬性層面的第二關聯(lián)層面進行相關聯(lián),其中,所述相關聯(lián)使用適用于定義和實例的唯一標識符將業(yè)務相關聯(lián)。
附圖說明
現(xiàn)在,將參照以下附圖、僅通過舉例描述本發(fā)明的優(yōu)選實施例,其中:
圖1為可用于本公開不同實施例的示例性網(wǎng)絡數(shù)據(jù)處理系統(tǒng)的結構圖;
圖2為可用于本公開不同實施例的一個示例性數(shù)據(jù)處理系統(tǒng)的結構圖;
圖3為可用于本公開不同實施例的版本化系統(tǒng)的結構圖;
圖4為在可用于本公開不同實施例的版本化系統(tǒng)中創(chuàng)建一個新版本的過程的流程圖;
圖5為根據(jù)本公開一個實施例的可用于本公開不同實施例的非版本化系統(tǒng)的結構圖;
圖6為在可用于本公開不同實施例的非版本化系統(tǒng)中改變一個定義的過程的流程圖;
圖7為可用于本公開不同實施例的一個混合系統(tǒng)的結構圖;
圖8為可用于本公開不同實施例的一個混合系統(tǒng)的結構圖;
圖9為在可用于本公開不同實施例的一個混合系統(tǒng)的非版本化系統(tǒng)部分中創(chuàng)建一個新定義版本的流程圖;
圖10為在可用于本公開不同實施例的一個混合系統(tǒng)中改變根據(jù)版本化定義所創(chuàng)建的實例部分的特性的流程圖;
圖11為在可用于本公開不同實施例的一個混合系統(tǒng)中改變根據(jù)非版本化域所創(chuàng)建的實例部分的特性的流程圖;
圖12描述了在可用于本公開不同實施例的一個混合系統(tǒng)中將版本化域和非版本化域之間的業(yè)務加以關聯(lián)的過程的流程圖;
具體實施方式
盡管以下提供了一個或多個實施例的說明性的實現(xiàn),但是所公開的系統(tǒng)和/或方法也可以使用任何數(shù)目的技術來實現(xiàn)。這一公開并不局限于以下示出的說明性的實現(xiàn)、附圖和以及技術,包括此處所示出和所描述的示例性的設計和實現(xiàn),但在所附權利要求的范圍以及其全部等同要求的范圍內(nèi)可以對其進行修改。
如本領域技術人員所知,本發(fā)明可以是系統(tǒng)、方法和/或計算機程序產(chǎn)品。計算機程序產(chǎn)品可以包括計算機可讀存儲介質,其上載有用于使處理器實現(xiàn)本發(fā)明的各個方面的計算機可讀程序指令。
計算機可讀存儲介質可以是可以保持和存儲由指令執(zhí)行設備使用的指令的有形設備。計算機可讀存儲介質例如可以是――但不限于――電存儲設備、磁存儲設備、光存儲設備、電磁存儲設備、半導體存儲設備或者上述的任意合適的組合。計算機可讀存儲介質的更具體的例子(非窮舉的列表)包括:便攜式計算機盤、硬盤、隨機存取存儲器(RAM)、只讀存儲器(ROM)、可擦式可編程只讀存儲器(EPROM或閃存)、靜態(tài)隨機存取存儲器(SRAM)、便攜式壓縮盤只讀存儲器(CD-ROM)、數(shù)字多功能盤(DVD)、記憶棒、軟盤、機械編碼設備、例如其上存儲有指令的打孔卡或凹槽內(nèi)凸起結構、以及上述的任意合適的組合。這里所使用的計算機可讀存儲介質不被解釋為瞬時信號本身,諸如無線電波或者其他自由傳播的電磁波、通過波導或其他傳輸媒介傳播的電磁波(例如,通過光纖電纜的光脈沖)、或者通過電線傳輸?shù)碾娦盘枴?/p>
這里所描述的計算機可讀程序指令可以從計算機可讀存儲介質下載到各個計算/處理設備,或者通過網(wǎng)絡、例如因特網(wǎng)、局域網(wǎng)、廣域網(wǎng)和/或無線網(wǎng)下載到外部計算機或外部存儲設備。網(wǎng)絡可以包括銅傳輸電纜、光纖傳輸、無線傳輸、路由器、防火墻、交換機、網(wǎng)關計算機和/或邊緣服務器。每個計算/處理設備中的網(wǎng)絡適配卡或者網(wǎng)絡接口從網(wǎng)絡接收計算機可讀程序指令,并轉發(fā)該計算機可讀程序指令,以供存儲在各個計算/處理設備中的計算機可讀存儲介質中。
用于執(zhí)行本發(fā)明操作的計算機程序指令可以是匯編指令、指令集架構(ISA)指令、機器指令、機器相關指令、微代碼、固件指令、狀態(tài)設置數(shù)據(jù)、或者以一種或多種編程語言的任意組合編寫的源代碼或目標代碼,所述編程語言包括面向對象的編程語言—諸如Smalltalk、C++等,以及常規(guī)的過程式編程語言—諸如“C”語言或類似的編程語言。計算機可讀程序指令可以完全地在用戶計算機上執(zhí)行、部分地在用戶計算機上執(zhí)行、作為一個獨立的軟件包執(zhí)行、部分在用戶計算機上部分在遠程計算機上執(zhí)行、或者完全在遠程計算機或服務器上執(zhí)行。在涉及遠程計算機的情形中,遠程計算機可以通過任意種類的網(wǎng)絡—包括局域網(wǎng)(LAN)或廣域網(wǎng)(WAN)—連接到用戶計算機,或者,可以連接到外部計算機(例如利用因特網(wǎng)服務提供商來通過因特網(wǎng)連接)。在一些實施例中,通過利用計算機可讀程序指令的狀態(tài)信息來個性化定制電子電路,例如可編程邏輯電路、現(xiàn)場可編程門陣列(FPGA)或可編程邏輯陣列(PLA),該電子電路可以執(zhí)行計算機可讀程序指令,從而實現(xiàn)本發(fā)明的各個方面。
這里參照根據(jù)本發(fā)明實施例的方法、裝置(系統(tǒng))和計算機程序產(chǎn)品的流程圖和/或框圖描述了本發(fā)明的各個方面。應當理解,流程圖和/或框圖的每個方框以及流程圖和/或框圖中各方框的組合,都可以由計算機可讀程序指令實現(xiàn)。
這些計算機可讀程序指令可以提供給通用計算機、專用計算機或其它可編程數(shù)據(jù)處理裝置的處理器,從而生產(chǎn)出一種機器,使得這些指令在通過計算機或其它可編程數(shù)據(jù)處理裝置的處理器執(zhí)行時,產(chǎn)生了實現(xiàn)流程圖和/或框圖中的一個或多個方框中規(guī)定的功能/動作的裝置。也可以把這些計算機可讀程序指令存儲在計算機可讀存儲介質中,這些指令使得計算機、可編程數(shù)據(jù)處理裝置和/或其他設備以特定方式工作,從而,存儲有指令的計算機可讀介質則包括一個制造品,其包括實現(xiàn)流程圖和/或框圖中的一個或多個方框中規(guī)定的功能/動作的各個方面的指令。
也可以把計算機可讀程序指令加載到計算機、其它可編程數(shù)據(jù)處理裝置、或其它設備上,使得在計算機、其它可編程數(shù)據(jù)處理裝置或其它設備上執(zhí)行一系列操作步驟,以產(chǎn)生計算機實現(xiàn)的過程,從而使得在計算機、其它可編程數(shù)據(jù)處理裝置、或其它設備上執(zhí)行的指令實現(xiàn)流程圖和/或框圖中的一個或多個方框中規(guī)定的功能/動作。
附圖中的流程圖和框圖顯示了根據(jù)本發(fā)明的多個實施例的系統(tǒng)、方法和計算機程序產(chǎn)品的可能實現(xiàn)的體系架構、功能和操作。在這點上,流程圖或框圖中的每個方框可以代表一個模塊、程序段或指令的一部分,所述模塊、程序段或指令的一部分包含一個或多個用于實現(xiàn)規(guī)定的邏輯功能的可執(zhí)行指令。在有些作為替換的實現(xiàn)中,方框中所標注的功能也可以以不同于附圖中所標注的順序發(fā)生。例如,兩個連續(xù)的方框實際上可以基本并行地執(zhí)行,它們有時也可以按相反的順序執(zhí)行,這依所涉及的功能而定。也要注意的是,框圖和/或流程圖中的每個方框、以及框圖和/或流程圖中的方框的組合,可以用執(zhí)行規(guī)定的功能或動作的專用的基于硬件的系統(tǒng)來實現(xiàn),或者可以用專用硬件與計算機指令的組合來實現(xiàn)
現(xiàn)在參照附圖,具體地參照圖1-2,其給出了其中可以實現(xiàn)說明性實施例的數(shù)據(jù)處理環(huán)境的示例圖。應該理解的是,圖1-2僅為示例性的,并不旨在表明或者暗含對其中可以實現(xiàn)不同實施例的環(huán)境的任何限制??梢詫λ枋龅沫h(huán)境進行諸多修改。
圖1描述了其中可以實現(xiàn)說明性實施例的數(shù)據(jù)處理系統(tǒng)的網(wǎng)絡的圖形表示。網(wǎng)絡數(shù)據(jù)處理系統(tǒng)100為其中可以實現(xiàn)說明性實施例的計算機網(wǎng)絡。網(wǎng)絡數(shù)據(jù)處理系統(tǒng)100包含網(wǎng)絡102,網(wǎng)絡102為用于提供網(wǎng)絡數(shù)據(jù)處理系統(tǒng)100內(nèi)連接在一起的各種設備和計算機之間的通信鏈路的介質。網(wǎng)絡102可以包括諸如有線、無線通信鏈路、或者光纖電纜的連接。
在所描述的示例中,服務器104和服務器106隨存儲單元108一起連接到網(wǎng)絡102。另外,客戶機110、112、以及114也連接到網(wǎng)絡102。例如,客戶機110、112、以及114可以為個人計算機或者網(wǎng)絡計算機。在所描述的示例中,服務器104向客戶機110、112、以及114提供諸如引導文件、操作系映射、以及應用的數(shù)據(jù)??蛻魴C110、112、以及114為服務器104的客戶機,并且可以通過網(wǎng)絡102訪問混合系統(tǒng)116,混合系統(tǒng)116包含適用于使用這一示例進一步加以描述的版本化域和非版本化域的數(shù)據(jù)結構、規(guī)則和定義。網(wǎng)絡數(shù)據(jù)處理系統(tǒng)100可以包括未示出的額外的服務器、客戶機、以及其它設備。
在所描述的示例中,網(wǎng)絡數(shù)據(jù)處理系統(tǒng)100為具有表示使用傳輸控制協(xié)議/因特網(wǎng)協(xié)議(TCP/IP)協(xié)議組來互相進行通信的世界范圍的網(wǎng)絡和網(wǎng)關的集合的網(wǎng)絡102的因特網(wǎng)。因特網(wǎng)的核心處是主節(jié)點或者主計算機之間的高速數(shù)據(jù)通信線的中樞,其由成千上萬的對數(shù)據(jù)和消息進行路由的商業(yè)、政府、教育以及其它計算機系統(tǒng)組成。當然,也可以將網(wǎng)絡數(shù)據(jù)處理系統(tǒng)100作為多個不同類型的網(wǎng)絡加以實現(xiàn),例如,該多個不同類型的網(wǎng)絡諸如內(nèi)聯(lián)網(wǎng)(intranet)、局域網(wǎng)(LAN)、或者廣域網(wǎng)(WAN)等。圖1旨在作為一個示例,不構成對不同說明性實施例的體系架構上的限制。
參照圖2,圖2呈現(xiàn)了可操作用于本公開各種實施例的示例性數(shù)據(jù)處理系統(tǒng)的框圖。在這一說明性示例中,數(shù)據(jù)處理系統(tǒng)200包括通信結構202,其提供了處理器單元204、內(nèi)存206、永久存儲器208、通信單元210、輸入/輸出(I/O)單元212、以及顯示器214之間的通信。
處理器單元204用作執(zhí)行可以被加載于內(nèi)存206內(nèi)的軟件的指令。處理器單元204可以為一個或多個處理器的一組處理器,或者可以為一個多處理器內(nèi)核,這取決于特定的實現(xiàn)。另外,也可以使用一個或多個異構處理器系統(tǒng)實現(xiàn)處理器單元204,其中在單個芯片上存在主處理器和若干次處理器。作為另一個說明性示例,處理器單元204可以為包含多個同種類型處理器的對稱多處理器系統(tǒng)。
內(nèi)存206和永久存儲器208是存儲設備216的示例。存儲設備為任何一種能夠臨時地和/或永久地存儲信息的硬件,例如該信息包括但不局限于數(shù)據(jù)、功能化形式程序代碼、和/或其它適合的信息。例如,在這些示例中,內(nèi)存206可以是隨機存取存儲器或者任何其它適合的易失或者非易失存儲設備。永久存儲器208可以取決于特定的實現(xiàn)呈各種形式。例如,永久存儲器208可以包含一個或多個組件或者設備。例如,永久存儲器208可以為硬驅動器、閃存、可重寫光盤、可重寫磁帶、或者上述設備的某一組合。永久存儲器208所使用的介質也可以是可拆卸的。例如,可以將可拆卸硬驅動器用于永久存儲器208。
在這些示例中,通信單元210提供了與其它數(shù)據(jù)處理系統(tǒng)或者設備的通信。在這些示例中,通信單元210為網(wǎng)絡接口卡。通信單元210可以通過使用物理和無線通信鏈路之一或者兩者來提供通信。
輸入/輸出單元212允許與可以連接到數(shù)據(jù)處理系統(tǒng)200的其它設備進行數(shù)據(jù)的輸入與輸出。例如,輸入/輸出單元212可以提供用于通過鍵盤、鼠標、和/或某些其它合適的輸入設備的用戶輸入的連接。另外,輸入/輸出單元212還可以向打印機發(fā)送輸出。顯示器214向用戶提供了顯示信息的機構。
可以將操作系統(tǒng)、應用和/或程序的計算機可執(zhí)行形式或者計算機可讀形式的指令設置在存儲設備216中,存儲設備216通過通信結構202與處理器單元204進行通信。在這些說明性示例中,指令以功能化形式存在于永久存儲器208上??梢詫⑦@些指令加載于內(nèi)存206,以由處理器單元204加以執(zhí)行。處理器單元204可以使用計算機實現(xiàn)的指令執(zhí)行不同實施例的過程,其中,可以將所述指令設置在諸如內(nèi)存206的內(nèi)存中。
將這些指令稱為可以由處理器單元204中的處理器加以讀取和執(zhí)行的程序代碼、計算機可用程序代碼、或者計算機可讀程序代碼??梢詫⒉煌瑢嵤├械某绦虼a裝載在諸如內(nèi)存206或者永久存儲器208的不同的物理的或者有形的計算機可讀存儲介質中。
將程序代碼218以功能化的形式設置在可以選擇性可拆卸的計算機可讀存儲介質220中,并且可以將其加載于或者傳送于數(shù)據(jù)處理系統(tǒng)200,以由處理器單元204加以執(zhí)行。在這些示例中,程序代碼218和計算機可讀存儲介質220形成計算機程序產(chǎn)品222。在一個示例中,計算機可讀存儲介質220可以呈有形的形式,例如,可插入或者放置在作為永久存儲器208的一部分的驅動器或者其它設備中的光盤或者磁盤的形式,以轉移到諸如作為永久存儲器208的一部分的硬驅動器的存儲設備上。就有形的形式而言,計算機可讀存儲介質220還可以呈永久存儲器的形式,諸如呈連接到數(shù)據(jù)處理系統(tǒng)200的硬驅動器、拇指驅動器、或者閃存的形式。也將計算機可讀存儲介質220的有形的形式稱為計算機可讀存儲介質或者計算機可讀數(shù)據(jù)存儲設備。在某些示例中,計算機可讀存儲介質220不可拆除。使用當前示例,程序代碼218包含在圖1的混合系統(tǒng)116的實現(xiàn)中的計算機實現(xiàn)的指令。
此外,可以通過至通信單元210的通信鏈路和/或通過至輸入/輸出單元212的連接將程序代碼218從計算機可讀存儲介質220傳送于數(shù)據(jù)處理系統(tǒng)200。在說明性的示例中,所述通信鏈路和/或連接可以為物理的或者無線的。
在某些說明性的示例中,可以通過網(wǎng)絡從另一個設備或者數(shù)據(jù)處理系統(tǒng)將程序代碼218下載于永久存儲器208用于在數(shù)據(jù)處理系統(tǒng)200中使用。例如,可以通過網(wǎng)絡將存儲在服務器數(shù)據(jù)處理系統(tǒng)中計算機可讀數(shù)據(jù)存儲設備中的程序代碼從服務器下載于數(shù)據(jù)處理系統(tǒng)200。提供程序代碼218的數(shù)據(jù)處理系統(tǒng)可以為服務器計算機、客戶機計算機、或者某些能夠存儲和傳輸程序代碼218的其它設備。
使用圖2的數(shù)據(jù)處理系統(tǒng)200作為一個示例,呈現(xiàn)了用于將版本化域和非版本化域之間的業(yè)務相互關聯(lián)的計算機實現(xiàn)的過程。處理器單元204針對一組業(yè)務中的業(yè)務生成具有版本化域和非版本化域兩者的屬性的元數(shù)據(jù),其中所述元數(shù)據(jù)與版本化域和非版本化域中所使用的該組業(yè)務相關聯(lián);處理器單元204使用版本化業(yè)務定義的具體版本來創(chuàng)建實例,其中,所述實例包含直接根據(jù)版本化業(yè)務定義創(chuàng)建的第一部分和根據(jù)非版本化業(yè)務定義創(chuàng)建的第二部分。
處理器單元204指定版本化域和非版本化域中業(yè)務的相應表示之間的鏈路,其中,所指定的鏈路定義了版本化域中一個業(yè)務的多個版本與非版本化域中同一業(yè)務的單個非版本化表示之間的關系;處理器單元204還響應于從版本化域或者非版本化域提供用于執(zhí)行業(yè)務的規(guī)劃、執(zhí)行和更新實例中選擇的一個的一組構想,從版本化域或者非版本化域接收業(yè)務的規(guī)劃、執(zhí)行和更新實例中所選擇的那一個,其中,使用一組規(guī)則執(zhí)行業(yè)務的規(guī)劃、執(zhí)行和更新實例中所選擇的那一個;處理器單元204還將該業(yè)務定義的所有版本相關聯(lián)到單個非版本化定義,其中,也將該單個非版本化定義的業(yè)務定義相關聯(lián)到該業(yè)務定義的所有版本。
參照圖3,圖3呈現(xiàn)了可操作用于本公開各種實施例的版本化系統(tǒng)的框圖。作為一個示例,圖3以包含兩個不同業(yè)務的定義版本和相關聯(lián)的實例的版本化系統(tǒng)300的形式示出了圖1的混合系統(tǒng)116的一部分。
美國專利申請公布US2012/0254828描述了提議的處理版本化和非版本化使用的組合的系統(tǒng)的示例,其中一種實現(xiàn)依賴于一個維持用于可能被部署于系統(tǒng)的每一個版本的所有數(shù)據(jù)模型的合集的單個聚合模型的創(chuàng)建?;谒盏脑O備版本,該單個聚合模型進而被用于部署和運行時間期間來調(diào)整系統(tǒng)的行為。在運行時間,系統(tǒng)使用該聚合模型在數(shù)據(jù)的單個版本上操作但知道如何與數(shù)據(jù)的單個版本協(xié)作。然而,所公開的系統(tǒng)不維持與相同數(shù)據(jù)的非版本化實例的關系。因此,該聚合模型僅僅是與被部署于系統(tǒng)的所有版本一般性協(xié)作的一種方式。
與這一引用的專利申請公布相比,本公開的實施例定義了一種使用唯一標識符將模型/實例數(shù)據(jù)的版本相關聯(lián)到一個非版本化模型/實例數(shù)據(jù)的方式。本公開的實施例未使用第三模型維持這一關系。在非版本化域和版本化域之間定義隱含的關系,每一個由業(yè)務定義(表示設計或者開發(fā)時間)和實例數(shù)據(jù)(表示運行時間)兩者組成。由系統(tǒng)并行地維持這些域。本公開的實施例還定義了適用于在每一個域上在設計時間修改定義以及在運行時間操縱實例數(shù)據(jù)的規(guī)則。
在設計(開發(fā))時間,對模型定義(版本化的和非版本化的)進行關聯(lián)操作,以確保有關版本化域的所有定義與非版本化域中的相應定義兼容。換句話說,確保能夠按同樣的方式表示相應于每一個域的實例數(shù)據(jù)。本公開的實施例基于對版本化定義的相應的改變定義了用于將改變應用于非版本化定義的規(guī)則。
在運行時間,本公開的實施例定義了一種將版本化和非版本化實例數(shù)據(jù)關聯(lián)的方法,其由相應的版本化和非版本化定義加以支持,兩者并列共存,用于讀取和寫入版本化和非版本化實例數(shù)據(jù)。即,本公開的實施例定義了用于讀取和寫入版本化實例數(shù)據(jù)的構想以及另一個用于讀取和寫入非版本化實例數(shù)據(jù)的構想。另外,本公開的實施例還定義了如何將應用于版本化數(shù)據(jù)的更新傳遞到非版本化數(shù)據(jù)的規(guī)則,反之亦然。最后,本公開的實施例定義了如何定義約束以及當版本化或者非版本化實例數(shù)據(jù)更新時如何應用約束。
把案例定義為信息與活動的集合。將相應的活動捕獲到業(yè)務流程定義中,并且將信息以及它們的特性作為文檔捕獲到案例文件夾中。
鑒于以上陳述的原因,對各業(yè)務流程版本化。業(yè)務流程需要快速演變,而且不應破壞現(xiàn)存實例。因此,通過版本進行隔離可使得應用易于運行。另一方面,涉及案例的信息是長期的。按文件夾或者文檔類的形式將這一信息的所有實例與其結構的單個定義相關聯(lián)。
本公開的實施例實現(xiàn)了具有版本化和非版本化兩者屬性的聯(lián)合模型。版本化系統(tǒng)能夠捕獲業(yè)務的定義隨著時間的演變。通常,版本化系統(tǒng)捕獲這些版本的時間(chronological)次序。因此,作為演變定義的機制,但更重要的是,作為將與某一特定的先前定義相關聯(lián)的實例遷移到另一個后來定義的結構中的方式,版本化系統(tǒng)固有地提供了比較和合并從一個版本到另一個版本的改變的必要元件。盡管版本化系統(tǒng)通常捕獲版本的時間次序,但也可以在不考慮版本的時間次序的情況下進行屬性的合并,因為比較和合并從一個版本到另一個版本的改變并不依賴于時間次序。
除了元數(shù)據(jù)之外,如以上所描述的,版本化系統(tǒng)還為業(yè)務的定義的實例提供了隔離。即,系統(tǒng)可以對業(yè)務的某一特定的版本進行實例化,并且使所實例化的業(yè)務的該特定的版本與同一業(yè)務的其它版本的實例共存。例如,這一隔離能夠使同一索賠業(yè)務流程的兩個版本在同一系統(tǒng)中運行,而不會互相干擾??梢栽俅我?guī)劃和執(zhí)行新的版本,因通過隔離功能所提供的獨立性而不會對系統(tǒng)中現(xiàn)存的實例造成風險。
在圖3的縮寫中,DID代表定義標識符,V代表版本標識符,而IID代表實例標識符。示出了包含版本化定義302和版本化實例304的存儲設備(例如,圖1的存儲單元108)作為獨立的單元,然而,可以容易地將定義版本和相關聯(lián)的實例存儲在同一存儲設備中,例如存儲在關系數(shù)據(jù)庫中。
包括版本1-3的與第一定義標識符相關聯(lián)的版本化定義被示為標識符DID 1 V1 306、DID 1 V2 308以及DID 1 V3 310。以類似的方式,與第二定義標識符相關聯(lián)的、也包括多個版本1-3的定義被示為標識符DID 2 V1 312、DID 2 V2 314以及DID 2 V3 316。
示例中的實例被定義為實例標識符IID 1 318、IID 2 320、IID 3 322、以及IID 4 324定義。實例是根據(jù)某一具體定義版本創(chuàng)建的。在當前示例中,分別使用與標識符DID 1 V2 308、DID 1 V3 310以及DID 1 V2 308相關聯(lián)的具體定義版本創(chuàng)建與標識符IID 1 318、IID 2 320、IID 3 322相關聯(lián)的實例,同時使用與標識符DID 2 V3 316相關聯(lián)的具體定義版本創(chuàng)建與標識符IID 4 324相關聯(lián)的實例。在圖中使用虛線描述特定定義版本和使用相應定義版本所創(chuàng)建的實例之間的關聯(lián)。
參照圖4,圖4呈現(xiàn)了在可操作用于本公開各種實施例的在版本化系統(tǒng)中創(chuàng)建一個新的版本的過程的流程圖。圖4以高層次地示出了以圖3的版本化系統(tǒng)300的形式使用圖1的混合系統(tǒng)116的一部分的過程。
當創(chuàng)建一個新的版本時,需要過程400中所描述的以下操作來創(chuàng)建業(yè)務的定義的新的版本。具有創(chuàng)建新的版本的能力意味著系統(tǒng)也具有維持版本之間的關系的能力。
過程400開始(步驟402),使用版本化系統(tǒng)的最新版本n,例如圖3的版本化系統(tǒng)300(步驟404)。接收對版本化定義的版本n的改變(步驟406)。將所接收的改變應用于版本化系統(tǒng)的最新版本n,以創(chuàng)建版本化定義的版本n+1(步驟408)。所產(chǎn)生的輸出呈版本化定義的版本n+1的形式(步驟410),此后過程終止(步驟412)。
最終,版本化系統(tǒng)起動實例遷移。實例遷移要求兩個版本的比較,即諸如版本n的源版本和諸如版本n+1的目標版本的比較,以確定如何對數(shù)據(jù)變形(morph)以將源版本的實例適配用于使用新(目標)的定義版本的執(zhí)行。取決于版本之間改變的類型,實例遷移通常是困難的,有時是不可能的。
參照圖5,圖5呈現(xiàn)了可操作用于本公開各種實施例的非版本化系統(tǒng)的框圖。在一個示例中,圖5以包含兩個不同業(yè)務的非版本化定義和相關聯(lián)的實例的非版本化系統(tǒng)500的形式示出了圖1的混合系統(tǒng)116的一部分。
因此,盡管版本化可以使能頻繁的部署和演變而不影響執(zhí)行,但版本化所缺乏的是,維持由產(chǎn)自于各種版本的實例集合所捕獲的數(shù)據(jù)的聯(lián)合視圖所需要的。相對比,非版本化系統(tǒng)簡單得多。在非版本化系統(tǒng)中,僅存在業(yè)務的一個定義。由于對定義引入了改變,所以該定義隨時間演變。然而,也不存在檢查點或者版本的概念,其中檢查點或者版本將允許用戶看到業(yè)務隨時間的不斷進展。在非版本化系統(tǒng)中,業(yè)務的所有實例與單個定義相關聯(lián)。非版本化系統(tǒng)500示出了非版本化系統(tǒng)的結構。
在圖5的縮寫中,DID代表定義標識符,而IID代表實例標識符。示出了包含非版本化定義502和實例504的存儲設備(例如,圖1的存儲單元108)作為獨立的單元,然而,可以容易地把定義版本和相關聯(lián)的實例存儲在同一存儲設備中,例如存儲在關系數(shù)據(jù)庫中。
與圖3中所示的命名約定相類似,與非版本化定義502的第一定義和第二定義相關聯(lián)的非版本化定義被示為DID 1 506和DID 2 508。然而,在這一情況下,定義標識符中不包括版本。
非版本化實例504的實例被定義為實例標識符IID 1 510、IID 2 512、IID 3 514、以及IID 4 516。實例是根據(jù)某一具體定義創(chuàng)建的。在當前示例中,使用與標識符DID 1 506相關聯(lián)的具體定義創(chuàng)建與非版本化系統(tǒng)500的標識符IID 1 510、IID 2 512、IID 3 514相關聯(lián)的實例,而使用與標識符DID 2 508相關聯(lián)的具體定義創(chuàng)建與標識符IID 4 516相關聯(lián)的實例。在圖中使用虛線描述了特定定義版本和使用相應定義版本所創(chuàng)建的實例之間的關聯(lián)。
參照圖6,圖6呈現(xiàn)了在可操作用于本公開各種實施例的非版本化系統(tǒng)中改變一個定義的過程的流程圖。圖6以高層次地示出了以圖5的非版本化系統(tǒng)500的形式使用圖1的混合系統(tǒng)116的一部分的非版本化業(yè)務定義的演變過程。
當改變業(yè)務定義時,需要過程600中所描述的以下操作來創(chuàng)建業(yè)務的改變的定義。具有改變非版本化定義的能力意味著系統(tǒng)也具有維持更新的定義中的改變的能力。
過程600開始(步驟602),使用非版本化系統(tǒng)中的業(yè)務的非版本化定義,諸如圖5的非版本化系統(tǒng)500(步驟604)。接收對非版本化業(yè)務定義的改變(步驟606)。將所接收的改變應用于非版本化系統(tǒng)的非版本化業(yè)務定義,并將其保存至與原始非版本化業(yè)務定義相同的記錄(步驟608)。所產(chǎn)生的輸出呈原始非版本化業(yè)務定義的更新的業(yè)務定義的形式(步驟610),此后過程600終止(步驟612)。
其簡單性在于非版本化系統(tǒng)不需要管理業(yè)務版本之間的關系。簡單性還在于所有實例由相同的定義支持,因此不需要各種各樣的顯式(explicit)的實例遷移。然而,這種簡單性是有代價的。
非版本化系統(tǒng)向可以對業(yè)務定義進行的更新的類型施加限制。之所以需要限制是因為所有現(xiàn)存的實例必須與相應的更新兼容??梢詫⑾拗埔暈槠渲羞w移必須總是成功、且其結果是限制進行可能的更新的所有實例的隱式(implicit)的強迫型實例遷移。與其中可以容易地改變定義的版本化系統(tǒng)不同,非版本化系統(tǒng)對于所準許的定義改變具有嚴格的規(guī)則。然而,當不遵循這些規(guī)則時,需要用戶干預以修復被破壞的或者不兼容的實例。
本公開的實施例實現(xiàn)了一種使用了版本化和非版本化兩種途徑來定義混合系統(tǒng)的方法,例如,圖7中所述的混合系統(tǒng)700,其展示了兩種特性的優(yōu)點。這可以通過建立版本化和非版本化定義之間的關系、以及對如何使用這些關系和如何隨業(yè)務成熟而演變加以制約的規(guī)則來實現(xiàn)。
參照圖7,圖7呈現(xiàn)了可操作用于本公開各種實施例的混合系統(tǒng)的框圖。作為一個示例,圖7以包含呈版本化和非版本化形式的業(yè)務定義和相關聯(lián)的兩個不同的業(yè)務的相應的實例的混合系統(tǒng)700的形式示出了圖1的混合系統(tǒng)116。
示出了版本化定義302和實例304作為獨立的單元,然而,可以容易地把定義版本和相關聯(lián)的實例存儲在與非版本化定義502和實例504相同的存儲設備中,例如存儲在關系數(shù)據(jù)庫中。
與圖3的版本化系統(tǒng)300中一樣,包括版本1-3的與第一版本化定義標識符相關聯(lián)的業(yè)務定義被示為標識符DID 1 V1 306、DID 1 V2 308以及DID 1 V3 310。以類似的方式,也包括多個版本1-3的與第二版本化定義標識符相關聯(lián)的業(yè)務定義被示為標識符DID 2 V1 312、DID 2 V2 314以及DID 2 V3 316
如先前所陳述的,實例是根據(jù)某一具體定義版本創(chuàng)建的。在這一示例中,將實例定義為實例標識符IID 1 318、IID 2 320、IID 3 322、以及IID 4 324。分別使用與標識符DID 1 V2 308、DID 1 V3 310以及DID 1 V2 308相關聯(lián)的具體定義版本創(chuàng)建該示例的與標識符IID 1 318、IID 2 320、IID 3 322相關聯(lián)的實例,而使用與標識符DID 2V3 316相關聯(lián)的具體定義版本創(chuàng)建與標識符IID 4 324相關聯(lián)的實例。
與圖3中所示的命名約定相類似,與非版本化定義502的第一定義和第二定義相關聯(lián)的非版本化定義被示為標識符DID 1 506和DID 2 508。然而,在非版本化系統(tǒng)500的情況下,定義標識符中不包括版本。
與系統(tǒng)的版本化的部分相類似,實例是根據(jù)某一具體定義而不是根據(jù)特定版本創(chuàng)建的。在本示例中,將實例,即非版本化實例504定義為與標識符IID 1 510、IID 2 512、IID 3 514、以及IID 4 516相關聯(lián)的實例。使用與標識符DID 1 506相關聯(lián)的具體定義創(chuàng)建與非版本化系統(tǒng)500的標識符IID 1 510、IID 2 512、IID 3 514相關聯(lián)的實例,而使用與標識符DID 2 508相關聯(lián)的具體定義創(chuàng)建與標識符IID 4 516相關聯(lián)的實例。
與版本化定義302的標識符DID 1 V1 306、DID 1 V2 308以及DID 1 V3 310相關聯(lián)的業(yè)務定義具有與非版本化定義DID 1 506確定的關系并且與非版本化定義DID 1 506相互關聯(lián)。類似地,與標識符DID 2 V1 312、DID 2 V2 314以及DID 2 V3 316相關聯(lián)的業(yè)務定義具有與非版本化定義DID 2 508標識的關系并且與非版本化定義DID 2 508相互關聯(lián)。
與和標識符IID 1 318、IID 2 320、IID 3 322、以及IID 4 324相關聯(lián)的版本化業(yè)務定義302相關聯(lián)的實例304的實例標識符也具有與非版本化實例確定的關系并且與非版本化實例相互關聯(lián)。在當前示例中,混合系統(tǒng)700的版本化部分的實例標識符IID 1 318、IID 2 320、IID 3 322、以及IID 4 324與實例504相互關聯(lián),其中實例504與和混合系統(tǒng)700的相應非版本化部分的標識符IID 1 510、IID 2 512、IID 3 514、以及IID 4 516相關聯(lián)的非版本化業(yè)務定義502相關聯(lián)。
顯然,在當前示例中,在兩個關聯(lián)層面上維持版本化和非版本化域之間的相互關聯(lián),第一層面處于業(yè)務層面(定義),第二層面處于屬性層面(實例)。這種相互關聯(lián)通過使用唯一標識符由業(yè)務的相關聯(lián)加以捕獲,并且適用于定義和實例。
使用簡單的唯一標識符(UID)實現(xiàn)業(yè)務對業(yè)務關系以及兩個域中的相關業(yè)務的相互關聯(lián),該簡單唯一標識符包括由特定定義的所有版本以及相應的非版本化定義共享的不變的分量或者片段(fragment)。當用于版本化域中時,按以下形式將UID表示為:<公共UID>_<版本ID>,并且當用于版本化域中時,將其表示為:<公共UID>。
系統(tǒng)可以使用<公共UID>片段容易地識別同一業(yè)務的所有版本以及相關聯(lián)的單個非版本化定義。在業(yè)務的整個生命期UID是不可變的,并且當?shù)谝淮蝿?chuàng)建該業(yè)務時被分配而且永不改變。如這一示例中所示,DID用于識別版本化定義的業(yè)務定義以及相應的非版本化定義。
參照圖8,圖8呈現(xiàn)了可操作用于本公開各種實施例的混合系統(tǒng)的框圖。作為一個示例,圖8以包含呈版本化和非版本化形式的業(yè)務定義和相關聯(lián)的包括屬性對屬性關系的業(yè)務的兩個不同版本的相應實例的混合系統(tǒng)800的形式說明了圖1的混合系統(tǒng)116。在混合系統(tǒng)800的示例中,示出了從業(yè)務的各種版本到單個非版本化定義的產(chǎn)生的關系。在圖8的縮寫中,DID表示定義標識符;V表示版本標識符;而AID表示屬性標識符以及值A、B、C表示不可變方面值。
混合系統(tǒng)800示出了圖7的混合系統(tǒng)700的定義部分,其包含具有與非版本化定義502確定的關系并且與非版本化定義502相互關聯(lián)的版本化定義302。
一旦已經(jīng)建立了版本化和非版本化業(yè)務之間的關系,則通過將與對業(yè)務關系所使用的相同的原理應用于目標的屬性,來實現(xiàn)屬性對屬性的關系和相互關聯(lián)。與先前在業(yè)務對業(yè)務的關系和相互關聯(lián)中的識別一樣,現(xiàn)在由UID識別屬性。在這一情況下,UID現(xiàn)在包括根據(jù)屬性的各方面產(chǎn)生的片段,當該屬性改變時,使得與該屬性相關聯(lián)的實例數(shù)據(jù)與非版本化域中現(xiàn)存實例不兼容。因此,在定義的生命期中,這些方面視為不可變的。當在版本化域中改變這些方面時,該改變導致系統(tǒng)將屬性識別為向相應父級(parent)定義的一個新的添加(與現(xiàn)存定義的更新相反)。由版本化屬性和非版本化屬性共享整個UID。將UID的形式表示為<UID>_<不可變方面1值>_<...>_<不可變方面n值>。<UID>片段可以由系統(tǒng)賦值,或者可以是不可變方面的值。
例如,屬性1具有由A、B、C以及D構成的4個方面。在這4個方面中,改變2個(B和C)導致與該屬性相關聯(lián)的現(xiàn)存數(shù)據(jù)不兼容。其結果是,可以將針對屬性1的UID表示為<UID>_<B的值>_<C的值>。這一表達式確保:當在業(yè)務的新的版本中改變方面B或者方面C時,相應的非版本化業(yè)務接收由<UID>_<B'的值>_<C'的值>所識別的新的屬性。
根據(jù)進一步的示例,案例特性包括多個方面,其中的某些可以是:名稱、類型、顯示名稱、基數(shù)以及描述。由于先前所陳述的原因,可以在版本化域中更新這些方面中的每一個方面而不會有破壞現(xiàn)存實例的風險。然而,必須也將同樣的改變應用于非版本化定義。因此,該改變不會將該特性定義變形成現(xiàn)存實例數(shù)據(jù)不再兼容的程度。例如,使用以下方面值定義特性1:名稱:特性1、顯示名稱:特性1、類型:字符串、基數(shù):多值、描述:這是特性1。改變顯示名稱或者描述不會給數(shù)據(jù)帶來負擔。無論這些屬性如何,均可以通過特性定義繼續(xù)描述字符串值的列表。
然而,在這一示例中,改變特性的類型或者基數(shù)的方面值將引起非版本化定義中的不兼容性。例如,當將類型的方面值從字符串改變?yōu)檎麛?shù)時,系統(tǒng)不再能夠保證將所有現(xiàn)存字符串實例數(shù)據(jù)能夠表示為整數(shù)。同樣,當改變基數(shù)的方面值時,不能夠在沒有數(shù)據(jù)損失或者非自然變形的情況下將列表轉換為單個值。其結果是,類型和基數(shù)視為不可變的,并且必須在生成特性UID的過程中使用。
對于該示例,可以將產(chǎn)生的UID定義如下,假設<UID>分量為特性名稱,在改變之前的第一情況下為:特性1_字符串_多個,且在改變之后的第二情況下為:特性1_整數(shù)_多個、或者特性1_字符串_單個、或者特性1_整數(shù)_單個,其中改變了類型、基數(shù)或者兩者。
在混合系統(tǒng)800的示例中,示出了從被識別為DID 1 V1 306和DID 1 V2 308的業(yè)務定義的各種版本到單個非版本化定義DID 1 506之間的產(chǎn)生的關系。版本化和非版本化業(yè)務定義之間的相互關聯(lián)還包含屬性關系。
對于定義DID 1 V1 306,如使用虛線所示的,將屬性標識符AID1_A_B 802與DID 1 V2 308中指示的改變的值和屬性標識符AID1_A’_B 806關聯(lián)。之所以屬性標識符AID1_A_B 802和屬性標識符AID1_A’_B 806產(chǎn)生關系,是由于因改變了不可變特性A的值(改變?yōu)锳’)導致從版本至版本的演變,這導致了在非版本化定義DID 1 506中創(chuàng)建新特性AID1_A’_B 806。當版本演變時,使用這種識別來維持數(shù)據(jù)的兼容性。
另外,將AID1_A_B 802、AID2_B_C 804與非版本化定義DID 1 502的DID 1 506中的ID1_A_B 802、AID2_B_C 804關聯(lián)。
對于定義DID 1 V2 308,將屬性標識符AID2_B_C 804和屬性標識符AID1_A’_B 806中所指示的改變的值分別與非版本化定義502的DID 1 506中的AID2_B_C 804和屬性標識符AID1_A’_B 806中所指示的改變的值關聯(lián)。
對于實例創(chuàng)建,總是根據(jù)版本化業(yè)務定義的具體版本創(chuàng)建實例,但形成具有兩個部分的實例:一個根據(jù)版本化業(yè)務定義直接創(chuàng)建的部分以及另一個根據(jù)非版本化業(yè)務定義創(chuàng)建的部分。因為兩個部分共享公共的ID屬性,因此能夠使用所述另一個部分查找一個部分。
可以將一個實例從一個版本化定義遷移到另一個版本。在這一情況下,僅需要以與如先前針對版本化系統(tǒng)所描述的同樣的方式遷移根據(jù)版本化定義所創(chuàng)建的實例部分。
業(yè)務定義發(fā)生演變,并且要求實施某些規(guī)則以確保所有非版本化實例的兼容性。使用當更新數(shù)據(jù)時應用于實例的驗證規(guī)則的定義來提供實施的基礎。當創(chuàng)建定義的新的版本時,通過系統(tǒng)傳遞業(yè)務定義的更新,并且也更新相應的非版本化定義。
業(yè)務定義的屬性可以具有所定義的驗證規(guī)則,例如,一個規(guī)則可以表示為某一數(shù)值屬性不準許負值。僅針對版本化業(yè)務定義來定義驗證規(guī)則,因為它們隨時間演變。下一部分中描述了實例的實施。
參照圖9,圖9呈現(xiàn)了在可操作用于本公開各種實施例的混合系統(tǒng)的非版本化系統(tǒng)部分中創(chuàng)建新的定義版本的流程圖。作為一個示例,圖9以包括其中創(chuàng)建了定義的非版本化系統(tǒng)的圖8的混合系統(tǒng)800的一部分的形式示出了圖1的混合系統(tǒng)116中所使用的一個過程。
過程900開始(步驟902),接收版本化定義的最新版本n(步驟904)以及針對版本化定義的版本1到n所映射的非版本化定義(步驟906)。還接收對版本化定義的版本n的改變(步驟908)。
過程900創(chuàng)建了版本化定義的版本n+1(步驟910)。
對業(yè)務定義的更新僅在版本化域中進行。當用戶改變定義的最新版本n時,利用該改變創(chuàng)建新的版本n+1。增量(deltas)可以是添加、移除以及改變。對于每一個增量,必須進行向非版本化業(yè)務定義的相應的映射。
屬性的移除不會導致對非版本化定義的改變,因為版本化定義的先前版本仍在使用該屬性,因此仍然需要該屬性。屬性的添加導致屬性也被添加于具有相同方面的非版本化定義。一個例外是一種少見的情況:其中具有相同方面的特性先前存在于低于版本n的版本化定義上。因此,屬性的再次引入不會導致非版本化業(yè)務定義的改變。
取決于改變了什么,可以將屬性的改變同步于非版本化定義:當僅改變屬性的驗證規(guī)則時,不對非版本化業(yè)務定義進行更新,因為屬性改變僅保存在版本化業(yè)務定義中;當改變一個方面并且可以以兼容的方式向非版本化業(yè)務定義應用該改變時,則改變非版本化定義中的屬性。這主要適用于與數(shù)據(jù)非相關的改變,例如,顯示名稱或者描述的改變是可接受的,其中非版本化業(yè)務定義僅知道最新定義;以及改變一個方面并且不可以以兼容的方式向非版本化業(yè)務定義應用該改變時,則遵循相關聯(lián)的驗證規(guī)則中所定義的規(guī)則將新的屬性添加于非版本化定義。這主要適用于與數(shù)據(jù)相關的改變,例如,屬性的類型從數(shù)字到日期的、不能夠被轉換的改變。
過程900將版本化定義的改變映射于非版本化定義(步驟912)。過程900創(chuàng)建了版本化定義的版本n+1(步驟914),并且還創(chuàng)建了針對版本化定義的版本1到n+1所映射的非版本化定義(步驟916),此后過程900終止(步驟918)。
參照圖10,圖10呈現(xiàn)了在可操作用于本公開各種實施例的混合系統(tǒng)中改變根據(jù)版本化定義所創(chuàng)建的實例部分的特性的流程圖。作為一個示例,過程1000以包含其中在版本化定義的實例部分中改變特性的版本化系統(tǒng)的圖8的混合系統(tǒng)800的一部分的形式示出了圖1的混合系統(tǒng)116中所使用的過程。
過程1000開始(步驟1002),接收根據(jù)版本化定義的版本n所創(chuàng)建的實例(步驟1004),以及接收根據(jù)非版本化定義所創(chuàng)建的實例(步驟1006)。過程1000還接收對根據(jù)版本化定義所創(chuàng)建的實例的特性的改變(步驟1008)。
過程1000對針對版本化定義的版本n的改變進行驗證(步驟1010)。響應于驗證的失敗,過程1000回滾(roll back)該改變(步驟1022),此后終止(步驟1024)。響應于驗證的成功,過程1000保存根據(jù)版本化定義所創(chuàng)建的實例部分(步驟1012)。過程1000查找根據(jù)非版本化定義所創(chuàng)建的實例部分(步驟1024)。過程1000將改變映射于根據(jù)非版本化定義所創(chuàng)建的實例部分(步驟1016)。
過程1000根據(jù)版本化定義的版本n創(chuàng)建更新的實例(步驟1018)。過程1000還根據(jù)非版本化定義創(chuàng)建更新的實例(步驟1020)。此后過程1000終止(步驟1024)。
使用以下兩個構想之一執(zhí)行實例數(shù)據(jù)更新:一個針對版本化域的構想和一個針對相應非版本化域的構想。取決于客戶機正在其上進行操作的域,客戶機可以嘗試利用相應的版本化或者非版本化定義的角度與業(yè)務的實例進行交互。
版本化構想僅對定義在版本化定義的具體版本上的那些屬性具有訪問權。另外,版本化構想直接知曉針對具體定義版本的屬性所定義的驗證規(guī)則。可以針對該定義版本直接驗證對版本化構想的更新。當確定更新有效時,對非版本化構想的相應的屬性進行定位并將其保存在同一交易中,以保持定義的版本化以及非版本化實例的同步化。
版本化構想主要用于與定義的快速演變的分量進行交互。例如,短期的活動僅看到具有針對相應的定義版本所定義的驗證規(guī)則的屬性,而同步地維持關于長期內(nèi)容的數(shù)據(jù)。
參照圖11,圖11呈現(xiàn)了在可操作用于本公開各種實施例的混合系統(tǒng)中改變根據(jù)非版本化定義所創(chuàng)建的實例部分的特性的流程圖。作為一個示例,過程1100以包含其中在非版本化定義的實例部分中改變特性的非版本化系統(tǒng)的圖8的混合系統(tǒng)800的一部分的形式示出了圖1的混合系統(tǒng)116中所使用的過程。
過程1100開始(步驟1102),接收根據(jù)版本化定義的版本n所創(chuàng)建的實例(步驟1104),以及接收根據(jù)非版本化定義所創(chuàng)建的實例(步驟1106)。過程1100還接收對根據(jù)非版本化定義所創(chuàng)建的實例的特性的改變(步驟1108)。過程1100查找根據(jù)版本化定義所創(chuàng)建的實例部分(步驟1110)。過程1000將改變映射于根據(jù)版本化定義所創(chuàng)建的實例部分(步驟1112)。
過程1100對針對版本化定義的版本n的改變進行驗證(步驟1114)。響應于驗證的失敗,過程1100回滾該改變(步驟1122),此后終止(步驟1124)。響應于驗證的成功,過程1100保存根據(jù)非版本化定義所創(chuàng)建的實例部分(步驟1116)。
過程1100根據(jù)版本化定義的版本n創(chuàng)建更新的實例(步驟1118)。過程1100還根據(jù)非版本化定義創(chuàng)建更新的實例(步驟1120)。此后過程1100終止(步驟1124)。
使用非版本化構想有效地揭示出版本化定義的所有版本中所定義的屬性,因為在版本化定義的所有版本中所定義的屬性全部被映射于非版本化定義中相應的屬性。然而,非版本化定義并不知道驗證規(guī)則。當通過非版本化構想進行改變時,查找相應的版本化構想。通過將通過非版本化構想進行的改變映射于相應的版本化構想,可以檢查相應的由具體版本化定義所定義的驗證規(guī)則。當失敗時,回滾整個更新,否則將對版本化實例以及非版本化實例兩者的更新保存在一個交易中。
非版本化構想主要由定義的較長期的部分加以使用,該部分包括內(nèi)容。因此,主要關注內(nèi)容的用戶可以使用非版本化構想看到使得用戶能夠看到僅針對版本化定義的幾個版本所定義的屬性的所有屬性。在實例更新時,同步回至版本化實例部分,包括對針對版本化定義的改變的驗證,僅將有效的改變應用于由相應定義的版本所定義的實例。
參照圖12,圖12呈現(xiàn)了在可操作用于本公開各種實施例的混合系統(tǒng)中將版本化域和非版本化域之間的業(yè)務相互關聯(lián)的過程的流程圖。作為一個示例,過程1200以圖8的混合系統(tǒng)800的一部分的形式示出了圖1的混合系統(tǒng)116中所使用的一個過程。
過程1200開始(步驟1202),針對一組業(yè)務中的業(yè)務生成具有版本化域和非版本化域兩者的屬性的元數(shù)據(jù),其中所述元數(shù)據(jù)與版本化域和非版本化域中所使用的該組業(yè)務相關聯(lián)(步驟1204)。過程1200使用版本化業(yè)務定義的具體版本來創(chuàng)建實例,其中,所述實例包含直接根據(jù)版本化業(yè)務定義創(chuàng)建的第一部分和根據(jù)非版本化業(yè)務定義創(chuàng)建的第二部分(步驟1206)。過程1200指定版本化域和非版本化域中業(yè)務的相應表示之間的鏈路,其中,所指定的鏈路定義了版本化域中一個業(yè)務的多個版本與非版本化域中同一業(yè)務的單個非版本化表示之間的關系(步驟1208)。過程1200響應于從版本化域或者非版本化域提供用于執(zhí)行業(yè)務的規(guī)劃、執(zhí)行和更新實例中選擇的一個的一組構想,從版本化域或者非版本化域接收業(yè)務的規(guī)劃、執(zhí)行和更新實例中所選擇的那一個,其中,使用一組規(guī)則執(zhí)行業(yè)務的規(guī)劃、執(zhí)行和更新實例中所選擇的那一個(步驟1210)。過程1200將該業(yè)務定義的所有版本相關聯(lián)到單個非版本化定義,其中,也將該單個非版本化定義的業(yè)務定義相關聯(lián)到該業(yè)務定義的所有版本(步驟1212),此后過程1200終止(步驟1214)。
因此,在說明性的實施例中呈現(xiàn)了一種用于將版本化域和非版本化域之間的業(yè)務相互關聯(lián)的計算機實現(xiàn)的方法。所述計算機實現(xiàn)的方法針對一組業(yè)務中的業(yè)務生成具有版本化域和非版本化域兩者的屬性的元數(shù)據(jù),其中所述元數(shù)據(jù)與版本化域和非版本化域中所使用的該組業(yè)務相關聯(lián),并且使用版本化業(yè)務定義的具體版本來創(chuàng)建實例,其中,所述實例包含直接根據(jù)版本化業(yè)務定義創(chuàng)建的第一部分和根據(jù)非版本化業(yè)務定義創(chuàng)建的第二部分;
所述方法還指定版本化域和非版本化域中業(yè)務的相應表示之間的鏈路,其中,所指定的鏈路定義了版本化域中一個業(yè)務的多個版本與非版本化域中同一業(yè)務的單個非版本化表示之間的關系。
從版本化域或者非版本化域提供用于執(zhí)行對業(yè)務的規(guī)劃、執(zhí)行和更新實例中選擇的一個的一組構想,其中使用一組規(guī)則執(zhí)行對業(yè)務的規(guī)劃、執(zhí)行和更新實例中所選擇的那一個。將該業(yè)務定義的所有版本相關聯(lián)到單個非版本化定義,其中,也將該單個非版本化定義的業(yè)務定義相關聯(lián)到該業(yè)務定義的所有版本。
說明性的實施例未定義如何捕獲業(yè)務的版本,或者如何定義另一個的單一的版本。這些概念很好理解,并且目前常常在軟件系統(tǒng)中使用。更確切地講,如果在兩個域中表示同一業(yè)務,而且需要按兩種形式加以訪問時,該說明性實施例建議了如何鏈路兩者的方法。
說明性實施例定義了業(yè)務的多個版本與同一業(yè)務的單個非版本化表示之間的關系,并且利用這些關系,以使雙方作為一個運作。假設兩個系統(tǒng)捕獲業(yè)務定義本身(版本化的和非版本化的),該說明性實施例描述了一種方法:將業(yè)務定義的所有版本相關聯(lián)到其單個非版本化的表示,反之亦然;將特定業(yè)務定義版本的屬性、或特性、定義相關聯(lián)到非版本化表示中相同的屬性、或特性、定義,反之亦然;定義諸如針對版本化業(yè)務定義的添加、更新以及刪除的編輯語義(semantic)以及對應用于相應非版本化業(yè)務定義的編輯語義的轉換;取決于在所定義的版本化構想或非版本化構想上執(zhí)行操作,而定義如何對業(yè)務的實例進行讀取和更新操作;定義如何在作為一個的版本化和非版本化業(yè)務的實例之間同步化數(shù)據(jù)更新,或者如何在另一方進行更新;當通過版本化或者非版本化構想更新業(yè)務實例時,定義如何定義和評估屬性、或特性、驗證規(guī)則。
說明性實施例通常地采用版本化和非版本化域的最佳屬性,并且提供了一種當需要時在此處被稱為混合系統(tǒng)的單個方案中利用兩者之一的機制。對于使用了版本化途徑的系統(tǒng),由于需要將所有版本統(tǒng)一成公共的概念,因此聯(lián)合信息困難的多。對于使用了非版本化途徑的系統(tǒng),由于業(yè)務必須總是向后兼容并且對于元數(shù)據(jù)中的更新必須確?,F(xiàn)存實例依然有效,因此演變是困難的。
使用該說明性實施例所建議的混合途徑,使得系統(tǒng)的定義能夠可以通常以版本化(業(yè)務流程的演變)和非版本化(歷史業(yè)務流數(shù)據(jù)的統(tǒng)一)運作,而無需過多額外的努力。
在另一個說明性實施例中,一種用于將版本化域中定義和實例化的業(yè)務相關聯(lián)到非版本化域方法,使用唯一標識符(UID)創(chuàng)建版本化域和非版本化域中的相關業(yè)務之間的相互關聯(lián),該UID包括由定義的所有版本以及非版本化定義共享的不變的分量,其中,以第一形式將UID表示為版本化的:<公共UID>_<版本ID>以及以第二形式將UID表示為非版本化的:<公共UID>,其中,系統(tǒng)使用<公共UID>片段識別同一業(yè)務的所有版本以及相關聯(lián)的單個非版本化定義,并且其中,在相關聯(lián)的業(yè)務的整個生命期中UID是不可變的;根據(jù)各方面生成屬性,當該屬性改變時,使與該屬性相關聯(lián)的實例數(shù)據(jù)與非版本化域中的現(xiàn)存實例不兼容,其中,具體的方面被視為在定義的生命期中是不可變的,并且當在版本化域中改變這些具體的方面時,所述改變導致系統(tǒng)將該屬性識別為對父級定義的全新的添加,其中,由版本化屬性和非版本化屬性兩者共享整個UID,并且以<UID>_<不可變方面1值>_<...>_<不可變方面n值>的形式表示;使用版本化業(yè)務定義的具體版本創(chuàng)建一個實例,其中,所述實例包含直接根據(jù)版本化業(yè)務定義創(chuàng)建的第一部分和根據(jù)非版本化業(yè)務定義創(chuàng)建的第二部分;更新版本化域中的業(yè)務定義,其中,對業(yè)務定義的最新版本n的用戶改變創(chuàng)建包含該用戶改變的新的版本n+1,其中,該用戶改變?yōu)樘砑印⒁瞥约靶薷闹?,并且對于每一個用戶改變,進行相應的到非版本化業(yè)務定義的映射,以同步非版本化業(yè)務定義,其中:響應于與業(yè)務定義的屬性相關聯(lián)的該組驗證規(guī)則中的一個驗證規(guī)則的改變,不對非版本化業(yè)務定義進行更新;響應于可以以兼容的方式應用于非版本化業(yè)務定義的一個方面改變,對非版本化定義中的該屬性改變;以及響應于不可以以兼容的方式應用于非版本化業(yè)務定義的一個方面改變,使用與版本化業(yè)務定義的屬性相關聯(lián)的該組預定的驗證規(guī)則向非版本化定義添加新的屬性;選擇版本化構想和非版本化構想之一,以更新實例數(shù)據(jù);響應于對版本化構想的選擇,僅訪問在版本化定義的具體版本上所定義的那些屬性以及針對版本化定義的該具體版本的屬性所定義的該組驗證規(guī)則;驗證該構想上直接針對版本化定義的具體版本的更新;響應于更新的有效,查找非版本化構想的相應的屬性,然后將其保存在同一交易中,以維持該定義的版本化實例和非版本化實例之間的同步;響應于對非版本化構想的選擇,揭示出在版本化定義的所有版本中所定義的屬性,所述版本化定義的所有版本中所定義的屬性被映射于非版本化定義中相應的屬性;響應于通過非版本化構想進行的改變,在相應的版本化構想中進行查找,其中,將所述改變映射于該相應的版本化構想,并且檢查該組預定的驗證規(guī)則中由具體版本化定義所定義的相應的驗證規(guī)則;響應于更新的成功,將對版本化實例以及非版本化實例的改變保存在單個交易中;以及響應于更新的失敗,回滾所述更新。
各圖中的流程圖與框圖說明了根據(jù)本發(fā)明各種實施例的系統(tǒng)、方法、以及計算機程序產(chǎn)品的可能的實現(xiàn)的架構、功能、以及操作。就此而言,所述流程圖與框圖中的每一個框可以代表包含用于實現(xiàn)指定的邏輯功能的一個或多個可執(zhí)行指令的模塊、程序段、或者代碼部分。應該加以注意的是,在某些可選的實現(xiàn)中,框中所提及的功能可以不按圖中所提及的次序發(fā)生。例如,實際上,取決于所涉及的功能,可以基本并行地執(zhí)行相繼描述的兩個框,或者有時可以反序執(zhí)行這些框。還應該加以注意的是,可以通過執(zhí)行指定功能或者動作的專用的基于硬件的系統(tǒng)或者專用硬件與計算機指令的組合,來實現(xiàn)框圖和/或流程圖說明的每一個框、以及框圖和/或流程圖說明中框的組合。
以下權利要求中的所有機制或者步驟以及功能元件的相應的結構、材料、動作、以及等價物旨在包括用于與如具體請求保護的其它請求保護的元件相結合地執(zhí)行功能的任何結構、材料或者動作。已經(jīng)出于說明和描述的目的呈現(xiàn)了本發(fā)明的描述,但其不旨在以所公開的形式對本發(fā)明進行窮舉或者限制。在不脫離本發(fā)明的范圍和精神的情況下,對本領域普通技術人員來說諸多的修改與變型是明顯的。實施例的選擇與描述旨在最好地解釋本發(fā)明的原理和實際的應用,并且使本領域的其他普通技術人員能夠針對具有適合于所預期的特定應用的各種修改的各種實施例來理解本發(fā)明。
本發(fā)明可以以全部硬件實施例、全部軟件實施例或者包含硬件與軟件元素的實施例的形式。在一個優(yōu)選實施例中,以軟件實現(xiàn)本發(fā)明,其包括但不局限于固件、駐留軟件、微代碼、以及本領域技術人員公認的其它軟件介質。
特別需要加以注意的是,盡管已經(jīng)在全功能數(shù)據(jù)處理系統(tǒng)的上下文中描述了本發(fā)明,然而本領域普通技術人員將理解的是,本發(fā)明的各個過程能夠以計算機可讀數(shù)據(jù)存儲設備的形式加以分配,所述計算機可讀數(shù)據(jù)存儲設備具有以各種形式存儲在其上的計算機可執(zhí)行指令。計算機可讀數(shù)據(jù)存儲設備的實例包括諸如軟盤、硬盤驅動器、RAM、CD-ROM、DVD-ROM的可記錄型介質。計算機可執(zhí)行指令可以呈在特定的數(shù)據(jù)處理系統(tǒng)中針對實際使用對其譯碼的編碼格式的形式。
適合于存儲和/或執(zhí)行包含程序代碼的計算機可執(zhí)行指令的數(shù)據(jù)處理系統(tǒng)將包括直接或者通過系統(tǒng)總線間接耦接于內(nèi)存元件的一個或多個處理器。內(nèi)存元件可以包括程序代碼的實際執(zhí)行期間所使用的本地內(nèi)存、大容量存儲器、以及高速緩沖存儲器,其至少為某些程序代碼提供了臨時存儲以減少執(zhí)行期間必須從大容量存儲器檢索代碼的次數(shù)。
可以直接或者通過介入I/O控制器將輸入/輸出、或I/O設備(包括,但不局限于鍵盤、顯示器、定位設備等)耦合于系統(tǒng)。
也可以將網(wǎng)絡適配器耦合于系統(tǒng),以使數(shù)據(jù)處理系統(tǒng)能夠通過介入私有或者公共網(wǎng)絡耦合于其它數(shù)據(jù)處理系統(tǒng)或者遠程打印機或者存儲設備。調(diào)制解調(diào)器、電纜調(diào)制解調(diào)器、以及Ethernet卡僅為當前可用類型的網(wǎng)絡適配器中的幾個。