国产精品1024永久观看,大尺度欧美暖暖视频在线观看,亚洲宅男精品一区在线观看,欧美日韩一区二区三区视频,2021中文字幕在线观看

  • <option id="fbvk0"></option>
    1. <rt id="fbvk0"><tr id="fbvk0"></tr></rt>
      <center id="fbvk0"><optgroup id="fbvk0"></optgroup></center>
      <center id="fbvk0"></center>

      <li id="fbvk0"><abbr id="fbvk0"><dl id="fbvk0"></dl></abbr></li>

      簽約沖突檢測方法及裝置與流程

      文檔序號:11707936閱讀:167來源:國知局
      簽約沖突檢測方法及裝置與流程

      本申請涉及通信領(lǐng)域,尤其涉及一種簽約沖突檢測方法及裝置。



      背景技術(shù):

      一個軟件產(chǎn)品,通常會包含多種產(chǎn)品屬性,而軟件產(chǎn)品的產(chǎn)品屬性,通常用于通過不同的維度描述軟件產(chǎn)品的服務(wù)能力、產(chǎn)品特性及相關(guān)約束等信息。用戶可以通過簽約軟件產(chǎn)品,取得使用授權(quán)后,便可以使用該軟件產(chǎn)品。

      對于某些軟件產(chǎn)品,用戶在簽約時會有很多限制條件,比如一個用戶對同一類產(chǎn)品只能簽約一次,如果用戶簽約多次即視為簽約沖突,此時可以終止用戶的簽約流程。然而,不同的軟件產(chǎn)品,用戶在簽約時的限制條件往往不同,因此在針對不同的軟件產(chǎn)品進(jìn)行簽約沖突檢測時實(shí)現(xiàn)較復(fù)雜。



      技術(shù)實(shí)現(xiàn)要素:

      本申請?zhí)岢鲆环N簽約沖突檢測方法,該方法包括:

      讀取用戶待簽約產(chǎn)品的產(chǎn)品屬性;

      讀取該用戶已簽約產(chǎn)品的產(chǎn)品屬性;其中,所述產(chǎn)品屬性被預(yù)先劃分為基礎(chǔ)屬性和可變屬性;

      基于預(yù)配置的與所述待簽約產(chǎn)品的基礎(chǔ)屬性對應(yīng)的第一類沖突檢測規(guī)則執(zhí)行第一階段的簽約沖突檢測,以及基于預(yù)配置的與所述待簽約產(chǎn)品的可變屬性對應(yīng)的第二類沖突檢測規(guī)則執(zhí)行第二階段的簽約沖突檢測,以確定所述待簽約產(chǎn)品的產(chǎn)品屬性與所述已簽約產(chǎn)品的產(chǎn)品屬性是否存在簽約沖突。

      可選的,所述基于預(yù)配置的與所述待簽約產(chǎn)品的基礎(chǔ)屬性對應(yīng)的第一類 沖突檢測規(guī)則執(zhí)行第一階段的簽約沖突檢測包括:

      讀取預(yù)設(shè)的第一階段的沖突檢測組件;其中,所述第一階段的沖突檢測組件為基于所述第一類沖突檢測規(guī)則進(jìn)行組件預(yù)封裝后得到的組件;

      基于所述第一階段的沖突檢測組件針對所述待簽約產(chǎn)品的基礎(chǔ)屬性進(jìn)行第一階段的簽約沖突檢測,以確定所述待簽約產(chǎn)品的基礎(chǔ)屬性與所述已簽約產(chǎn)品的基礎(chǔ)屬性是否存在簽約沖突;

      當(dāng)所述待簽約產(chǎn)品的任一基礎(chǔ)屬性與所述已簽約產(chǎn)品的基礎(chǔ)屬性存在簽約沖突時,終止所述待簽約產(chǎn)品的簽約流程。

      可選的,所述方法還包括:

      當(dāng)所述待簽約產(chǎn)品的產(chǎn)品屬性與所述已簽約產(chǎn)品的基礎(chǔ)屬性均不存在簽約沖突時,則基于預(yù)配置的與所述待簽約產(chǎn)品的可變屬性對應(yīng)的第二類沖突檢測規(guī)則執(zhí)行第二階段的簽約沖突檢測。

      可選的,所述基于預(yù)配置的與所述待簽約產(chǎn)品的可變屬性對應(yīng)的第二類沖突檢測規(guī)則執(zhí)行第二階段的簽約沖突檢測之前,所述方法還包括:

      基于所述待簽約產(chǎn)品的基礎(chǔ)屬性、所述用戶的標(biāo)識以及所述待簽約產(chǎn)品的標(biāo)識生成對應(yīng)的沖突控制記錄;

      其中,在針對所述待簽約產(chǎn)品進(jìn)行產(chǎn)品簽約時,如果查詢到與所述待簽約產(chǎn)品的基礎(chǔ)屬性、所述用戶的標(biāo)識以及所述待簽約產(chǎn)品的標(biāo)識匹配的沖突控制記錄,則終止針對所述待簽約產(chǎn)品的簽約流程。

      可選的,所述基于預(yù)配置的與所述待簽約產(chǎn)品的可變屬性對應(yīng)的第二類沖突檢測規(guī)則執(zhí)行第二階段的簽約沖突檢測包括:

      讀取與所述可變屬性對應(yīng)的第二類沖突檢測規(guī)則;

      對讀取到的所述第二類沖突檢測規(guī)則進(jìn)行組件封裝以得到第二階段的沖突檢測組件;

      基于所述第二階段的沖突檢測組件針對所述待簽約產(chǎn)品的可變屬性進(jìn)行第二階段的簽約沖突檢測,以確定所述待簽約產(chǎn)品的可變屬性與所述已簽約產(chǎn)品的可變屬性是否存在簽約沖突;

      當(dāng)所述待簽約產(chǎn)品的任一可變屬性與所述已簽約產(chǎn)品的可變屬性存在簽約沖突時,終止所述待簽約產(chǎn)品的簽約流程。

      可選的,所述讀取與所述可變屬性對應(yīng)的第二類沖突檢測規(guī)則之前,所述方法還包括:

      針對所述沖突控制記錄添加排它鎖,以避免所述沖突控制記錄被修改。

      可選的,所述方法還包括:

      當(dāng)所述待簽約產(chǎn)品的可變屬性與所述已簽約產(chǎn)品的可變屬性均不存在簽約沖突時,完成針對所述待簽約產(chǎn)品的產(chǎn)品簽約,并釋放為所述沖突控制記錄添加的所述排它鎖,以及清除所述沖突控制記錄。

      可選的,所述產(chǎn)品屬性基于json格式存儲在預(yù)設(shè)數(shù)據(jù)庫中。

      本申請還提出一種簽約沖突檢測裝置,該裝置包括:

      第一讀取模塊,用于讀取用戶待簽約產(chǎn)品的產(chǎn)品屬性;

      第二讀取模塊,用于讀取該用戶已簽約產(chǎn)品的產(chǎn)品屬性;其中,所述產(chǎn)品屬性被預(yù)先劃分為基礎(chǔ)屬性和可變屬性;

      檢測模塊,用于基于預(yù)配置的與所述待簽約產(chǎn)品的基礎(chǔ)屬性對應(yīng)的第一類沖突檢測規(guī)則執(zhí)行第一階段的簽約沖突檢測,以及基于預(yù)配置的與所述待簽約產(chǎn)品的可變屬性對應(yīng)的第二類沖突檢測規(guī)則執(zhí)行第二階段的簽約沖突檢測,以確定所述待簽約產(chǎn)品的產(chǎn)品屬性與所述已簽約產(chǎn)品的產(chǎn)品屬性是否存在簽約沖突。

      可選的,所述檢測模塊具體用于:

      讀取預(yù)設(shè)的第一階段的沖突檢測組件;其中,所述第一階段的沖突檢測組件為基于所述第一類沖突檢測規(guī)則進(jìn)行組件預(yù)封裝后得到的組件;

      基于所述第一階段的沖突檢測組件針對所述待簽約產(chǎn)品的基礎(chǔ)屬性進(jìn)行第一階段的簽約沖突檢測,以確定所述待簽約產(chǎn)品的基礎(chǔ)屬性與所述已簽約產(chǎn)品的基礎(chǔ)屬性是否存在簽約沖突;

      當(dāng)所述待簽約產(chǎn)品的任一基礎(chǔ)屬性與所述已簽約產(chǎn)品的基礎(chǔ)屬性存在簽約沖突時,終止所述待簽約產(chǎn)品的簽約流程。

      可選的,所述檢測模塊進(jìn)一步用于:

      當(dāng)所述待簽約產(chǎn)品的產(chǎn)品屬性與所述已簽約產(chǎn)品的基礎(chǔ)屬性均不存在簽約沖突時,則基于預(yù)配置的與所述待簽約產(chǎn)品的可變屬性對應(yīng)的第二類沖突檢測規(guī)則執(zhí)行第二階段的簽約沖突檢測。

      可選的,所述裝置還包括:

      生成模塊,用于在檢測模塊基于預(yù)配置的與所述待簽約產(chǎn)品的可變屬性對應(yīng)的第二類沖突檢測規(guī)則執(zhí)行第二階段的簽約沖突檢測之前,基于所述待簽約產(chǎn)品的基礎(chǔ)屬性、所述用戶的標(biāo)識以及所述待簽約產(chǎn)品的標(biāo)識生成對應(yīng)的沖突控制記錄;

      終止模塊,用于在針對所述待簽約產(chǎn)品進(jìn)行產(chǎn)品簽約時,如果查詢到與所述待簽約產(chǎn)品的基礎(chǔ)屬性、所述用戶的標(biāo)識以及所述待簽約產(chǎn)品的標(biāo)識匹配的沖突控制記錄,則終止針對所述待簽約產(chǎn)品的簽約流程。

      可選的,所述檢測模塊進(jìn)一步用于:

      讀取與所述可變屬性對應(yīng)的第二類沖突檢測規(guī)則;

      對讀取到的所述第二類沖突檢測規(guī)則進(jìn)行組件封裝以得到第二階段的沖突檢測組件;

      基于所述第二階段的沖突檢測組件針對所述待簽約產(chǎn)品的可變屬性進(jìn)行第二階段的簽約沖突檢測,以確定所述待簽約產(chǎn)品的可變屬性與所述已簽約產(chǎn)品的可變屬性是否存在簽約沖突;

      所述終止模塊進(jìn)一步用于:

      當(dāng)所述待簽約產(chǎn)品的任一可變屬性與所述已簽約產(chǎn)品的可變屬性存在簽約沖突時,終止所述待簽約產(chǎn)品的簽約流程。

      可選的,所述檢測模塊進(jìn)一步用于:

      在讀取與所述可變屬性對應(yīng)的第二類沖突檢測規(guī)則之前,針對所述沖突控制記錄添加排它鎖,以避免所述沖突控制記錄被修改。

      可選的,所述檢測模塊進(jìn)一步用于:

      當(dāng)所述待簽約產(chǎn)品的可變屬性與所述已簽約產(chǎn)品的可變屬性均不存在簽 約沖突時,完成針對所述待簽約產(chǎn)品的產(chǎn)品簽約,并釋放為所述沖突控制記錄添加的所述排它鎖,以及清除所述沖突控制記錄。

      可選的,所述產(chǎn)品屬性基于json格式存儲在預(yù)設(shè)數(shù)據(jù)庫中。

      本申請中,通過將待簽約產(chǎn)品的產(chǎn)品屬性預(yù)先劃分為基礎(chǔ)屬性和可變屬性,并基于預(yù)配置的與基礎(chǔ)屬性對應(yīng)的第一類沖突檢測規(guī)則針對待簽約產(chǎn)品執(zhí)行第一階段的簽約沖突檢測,以及基于預(yù)配置的與可變屬性對應(yīng)的第二類沖突檢測規(guī)則針對待簽約產(chǎn)品執(zhí)行第二階段的簽約沖突檢測,來確定待簽約產(chǎn)品的產(chǎn)品屬性與已簽約產(chǎn)品的產(chǎn)品屬性是否存在簽約沖突,實(shí)現(xiàn)了既可以在簡單的簽約沖突場景中基于基礎(chǔ)屬性來進(jìn)行簽約沖突檢測,又可以在復(fù)雜的簽約沖突場景中基于可變屬性來進(jìn)行簽約沖突檢測,從而具有更好的通用性和可擴(kuò)展性。

      附圖說明

      圖1是本申請一實(shí)施例提供的一種簽約沖突檢測方法的流程圖;

      圖2是本申請一實(shí)施例提供的第一階段的簽約沖突檢測的流程圖;

      圖3是本申請一實(shí)施例提供的第二階段的簽約沖突檢測的流程圖;

      圖4是本申請一實(shí)施例提供的一種簽約沖突檢測系統(tǒng)的結(jié)構(gòu)圖;

      圖5是本申請一實(shí)施例提供的圖4所示的簽約沖突檢測系統(tǒng)進(jìn)行簽約沖突檢測的流程圖;

      圖6是本申請一實(shí)施例提供的一種簽約沖突檢測裝置的邏輯框圖;

      圖7是本申請一實(shí)施例提供的承載所述一種簽約沖突檢測裝置的服務(wù)端的硬件結(jié)構(gòu)圖。

      具體實(shí)施方式

      產(chǎn)品沖突,通常是指軟件產(chǎn)品本身存在約束,導(dǎo)致用戶簽約產(chǎn)品時會發(fā)生簽約沖突。例如,以快捷卡產(chǎn)品為例,通常限制一個用戶對同一類快捷卡產(chǎn)品 只能簽約一次,或者用戶在同一個時間段內(nèi),對一家機(jī)構(gòu)的同一類快捷卡產(chǎn)品只能一次,如果用戶多次簽約同一類快捷卡產(chǎn)品,就會發(fā)生簽約沖突。

      對于本身存在約束的軟件產(chǎn)品,通常會具有簽約沖突控制的需求,通過簽約沖突控制,可以避免用戶在簽約軟件產(chǎn)品的過程中,對同一類或者相同的軟件產(chǎn)品進(jìn)行重復(fù)簽約。

      在相關(guān)技術(shù)中,對軟件產(chǎn)品的簽約沖突控制,通常是依賴于對軟件產(chǎn)品的簽約造成影響的產(chǎn)品屬性來實(shí)現(xiàn),而影響產(chǎn)品簽約的屬性通??梢园ê芏喾N;例如,以快捷卡產(chǎn)品為例,影響產(chǎn)品簽約的產(chǎn)品屬性通??梢园ê灱s起始時間、簽約結(jié)束時間、銀行機(jī)構(gòu)以及卡號等產(chǎn)品屬性。

      因此,在相關(guān)技術(shù)中,在針對軟件產(chǎn)品進(jìn)行簽約沖突控制時,通常是通過將對軟件產(chǎn)品的簽約造成影響的產(chǎn)品屬性保存至關(guān)系型數(shù)據(jù)庫中,在關(guān)系型數(shù)據(jù)庫中建立唯一性索引,并依賴關(guān)系型數(shù)據(jù)自身的字段約束機(jī)制,來避免用戶重復(fù)簽約(即當(dāng)用戶簽約的產(chǎn)品的屬性命中數(shù)據(jù)庫中的唯一性索引,即認(rèn)為是重復(fù)簽約)。

      然而,由于針對不同的軟件產(chǎn)品,對軟件產(chǎn)品的簽約造成影響的產(chǎn)品屬性也彼此不同,因此通過上述方案來進(jìn)行簽約沖突控制時,往往需要調(diào)整關(guān)系型數(shù)據(jù)的結(jié)構(gòu),為軟件產(chǎn)品增加新的唯一性索引,或者為不同的產(chǎn)品分別創(chuàng)建不同的沖突控制表??梢?,上述技術(shù)方案需要對關(guān)系型數(shù)據(jù)的結(jié)構(gòu)進(jìn)行改造,比較復(fù)雜,而且存在不夠通用的缺點(diǎn),很難滿足不同的軟件產(chǎn)品的簽約沖突控制需求。

      有鑒于此,本申請?zhí)岢鲆环N簽約沖突檢測方法,基于軟件產(chǎn)品的共性和個性化的簽約沖突控制需求,將待簽約產(chǎn)品的產(chǎn)品屬性預(yù)先劃分為基礎(chǔ)屬性和可變屬性,在進(jìn)行簽約沖突控制時,按照兩個階段的簽約沖突檢測進(jìn)行處理。在第一階段,可以基于預(yù)配置的與基礎(chǔ)屬性對應(yīng)的第一類沖突檢測規(guī)則針對待簽約產(chǎn)品進(jìn)行簽約沖突檢測;在第二階段,可以基于預(yù)配置的與可變屬性對應(yīng)的第二類沖突檢測規(guī)則針對待簽約產(chǎn)品進(jìn)行簽約沖突檢測;實(shí)現(xiàn)了既可以在簡單的簽約沖突場景中基于基礎(chǔ)屬性來進(jìn)行簽約沖突檢測,又可以 在復(fù)雜的簽約沖突場景中基于可變屬性來進(jìn)行簽約沖突檢測,從而具有更好的通用性和可擴(kuò)展性。

      下面通過具體實(shí)施例并結(jié)合具體的應(yīng)用場景對本申請進(jìn)行描述。

      請參考圖1,圖1是本申請一實(shí)施例提供的一種簽約沖突檢測方法,應(yīng)用于服務(wù)端,所述方法執(zhí)行以下步驟:

      步驟101,讀取用戶待簽約產(chǎn)品的產(chǎn)品屬性;

      步驟102,讀取該用戶已簽約產(chǎn)品的產(chǎn)品屬性;其中,所述產(chǎn)品屬性被預(yù)先劃分為基礎(chǔ)屬性和可變屬性;

      步驟103,基于預(yù)配置的與所述待簽約產(chǎn)品的基礎(chǔ)屬性對應(yīng)的第一類沖突檢測規(guī)則執(zhí)行第一階段的簽約沖突檢測,以及基于預(yù)配置的與所述待簽約產(chǎn)品的可變屬性對應(yīng)的第二類沖突檢測規(guī)則執(zhí)行第二階段的簽約沖突檢測,以確定所述待簽約產(chǎn)品的產(chǎn)品屬性與所述已簽約產(chǎn)品的產(chǎn)品屬性是否存在簽約沖突。

      上述服務(wù)端包括面向軟件產(chǎn)品提供簽約沖突檢測服務(wù)的服務(wù)器、服務(wù)器集群或者基于服務(wù)器集群構(gòu)建的云平臺。例如,上述服務(wù)端可以是軟件產(chǎn)品的簽約服務(wù)器。

      上述產(chǎn)品屬性包括對軟件產(chǎn)品的簽約造成影響的產(chǎn)品屬性,可以基于軟件產(chǎn)品的共性和個性化需求,劃分為基礎(chǔ)屬性和可變屬性。

      其中,基礎(chǔ)屬性,為行業(yè)內(nèi)的通用屬性,通常包括在軟件產(chǎn)品定義時確認(rèn)的屬性,這類屬性通常不會發(fā)生變化,可以稱之為產(chǎn)品級屬性;例如,產(chǎn)品名稱等。

      可變屬性,為非通用屬性,通常包括與產(chǎn)品相關(guān)的的比較個性化和特有的屬性,可以由開發(fā)人員進(jìn)行自定義。這類屬性通常是在產(chǎn)品簽約時才能確認(rèn)的屬性,可以稱之為合約級屬性;例如,簽約時間段、簽約渠道等。

      在實(shí)際應(yīng)用中,無論是基礎(chǔ)屬性,還是可變屬性,均可以由軟件產(chǎn)品的開發(fā)者預(yù)設(shè)置對應(yīng)的沖突檢測規(guī)則,從而用戶在簽約軟件產(chǎn)品時,服務(wù)端可以基 于該軟件產(chǎn)品的開發(fā)者預(yù)設(shè)置的沖突檢測規(guī)則,來進(jìn)行簽約沖突檢測,以避免用戶重復(fù)簽約同一類或者相同的軟件產(chǎn)品。

      在本例中,服務(wù)端可以在本地預(yù)設(shè)一個數(shù)據(jù)庫,用于存儲不同的軟件產(chǎn)品的產(chǎn)品屬性。其中,該數(shù)據(jù)庫可以是關(guān)系型數(shù)據(jù)庫。

      對于關(guān)系型數(shù)據(jù)庫來說,通常會具有一定的字段約束機(jī)制,因此服務(wù)端可以利用關(guān)系型數(shù)據(jù)庫自身的字段約束機(jī)制,避免將軟件產(chǎn)品的使用者自定義的非標(biāo)準(zhǔn)的產(chǎn)品屬性寫入到數(shù)據(jù)庫中。

      服務(wù)端在將不同的軟件產(chǎn)品(包括用戶已簽約和未簽約的軟件產(chǎn)品)的產(chǎn)品屬性存入該數(shù)據(jù)庫時,由于軟件產(chǎn)品的產(chǎn)品屬性往往具有很多種,而且不同的軟件產(chǎn)品的產(chǎn)品屬性通常會存在一定的差異,因此對于軟件產(chǎn)品的產(chǎn)品屬性來說,很難在關(guān)系型數(shù)據(jù)庫中用結(jié)構(gòu)化的數(shù)據(jù)為每一個屬性定義一個字段進(jìn)行描述和存儲。

      針對這種情況,在本實(shí)施例示出的一種實(shí)施方式中,在將不同的軟件產(chǎn)品的產(chǎn)品屬性存入預(yù)設(shè)的關(guān)系型數(shù)據(jù)庫時,可以將json格式作為該數(shù)據(jù)庫的默認(rèn)存儲格式,基于json格式將不同的軟件產(chǎn)品的產(chǎn)品屬性中的基礎(chǔ)屬性和可變屬性,以大字段的形式分別進(jìn)行存儲,從而可以不必在關(guān)系型數(shù)據(jù)庫中為每一個屬性分別定義一個字段進(jìn)行描述,以降低軟件產(chǎn)品的產(chǎn)品屬性存儲的復(fù)雜度。

      其中,json格式的基本存儲架構(gòu)在本實(shí)施例中不再進(jìn)行詳述,本領(lǐng)域技術(shù)人員在將本申請的技術(shù)方案付諸實(shí)施時,可以參考相關(guān)技術(shù)中的記載。

      另外,上述數(shù)據(jù)庫除了可以用于存儲不同的軟件產(chǎn)品的產(chǎn)品屬性以外,還可以用于存儲軟件產(chǎn)品的開發(fā)者為產(chǎn)品屬性預(yù)配置的沖突檢測規(guī)則。服務(wù)端在將產(chǎn)品屬性存入數(shù)據(jù)庫時,可以將開發(fā)者為該產(chǎn)品屬性預(yù)配置的沖突檢測規(guī)則也存儲至數(shù)據(jù)庫,并在數(shù)據(jù)庫中保存二者之間的對應(yīng)關(guān)系。

      上述沖突檢測規(guī)則,可以包括軟件產(chǎn)品的開發(fā)人員為軟件產(chǎn)品預(yù)配置的簽約約束規(guī)則,可以包括第一類沖突檢測規(guī)則和第二類沖突檢測規(guī)則。

      其中,第一類沖突檢測規(guī)則是指由開發(fā)人員針對上述基礎(chǔ)屬性預(yù)配置的沖突檢測規(guī)則。第二類沖突檢測規(guī)則是指由開發(fā)人員針對上述可變屬性預(yù)配置的沖突檢測規(guī)則。

      例如,以在針對快捷卡產(chǎn)品進(jìn)行沖突檢測的應(yīng)用場景為例,在該應(yīng)用場景中,上述基礎(chǔ)屬性可以為快捷卡卡號,可變屬性可以為簽約時間段或者簽約渠道為例,上述第一類沖突檢測規(guī)則可以是開發(fā)人員為產(chǎn)品名稱預(yù)配置的“同一個用戶針對同一個卡號只能簽約一次”的沖突檢測規(guī)則;上述第二類沖突檢測規(guī)則可以是開發(fā)人員為簽約時間段預(yù)配置的“同一個簽約時間段只能簽約一次”、“簽約時間段不能存在交集”或“簽約渠道不能存在互斥”的沖突檢測規(guī)則。

      在本例中,當(dāng)用戶簽約一個軟件產(chǎn)品時,服務(wù)端可以從上述數(shù)據(jù)庫中讀取該軟件產(chǎn)品的產(chǎn)品屬性,以及該用戶已簽約的軟件產(chǎn)品的產(chǎn)品屬性。

      當(dāng)服務(wù)端讀取到用戶待簽約的軟件產(chǎn)品,以及該用戶已經(jīng)簽約的軟件產(chǎn)品后,可以基于上述數(shù)據(jù)庫中存儲的由開發(fā)人員預(yù)配置的沖突檢測規(guī)則,對用戶待簽約的該軟件產(chǎn)品進(jìn)行兩個階段的簽約沖突檢測,以確定該用戶待簽約的軟件產(chǎn)品的產(chǎn)品屬性與該用戶已簽約的軟件產(chǎn)品的產(chǎn)品屬性是否存在簽約沖突。

      其中,上述兩個階段可以包括第一階段和第二階段。

      在第一階段中,服務(wù)端可以基于預(yù)配置的與產(chǎn)品屬性中的基礎(chǔ)屬性對應(yīng)的第一類沖突檢測規(guī)則針對待簽約產(chǎn)品進(jìn)行簽約沖突檢測。由于第一階段的簽約沖突檢測,是基于基礎(chǔ)屬性對應(yīng)的沖突檢測規(guī)則來進(jìn)行的,而基礎(chǔ)屬性是同一類軟件產(chǎn)品中的共性產(chǎn)品屬性,通常不會發(fā)生變化,因此第一階段的簽約沖突檢測可以適用于簡單的簽約沖突場景中的簽約沖突檢測。

      在第二階段中,服務(wù)端可以基于預(yù)配置的與可變屬性對應(yīng)的第二類沖突檢測規(guī)則針對待簽約產(chǎn)品進(jìn)行簽約沖突檢測。由于第二階段的簽約沖突檢測,是基于可變屬性對應(yīng)的沖突檢測規(guī)則來進(jìn)行的,而可變屬性對于同一類軟件產(chǎn)品也可能會各不相同,因此第二階段的簽約沖突檢測可以適用于復(fù)雜的簽 約沖突場景中的簽約沖突檢測,可以為滿足不同的軟件產(chǎn)品的個性化的沖突檢測需求。

      以下通過具體的實(shí)施例,對第一階段以及第二階段的簽約沖突檢測過程進(jìn)行描述。

      請參見圖2,圖2為示出的第一階段的簽約沖突檢測的流程圖,包括以下執(zhí)行步驟:

      步驟201,讀取預(yù)設(shè)的第一階段的沖突檢測組件;其中,所述第一階段的沖突檢測組件為基于所述第一類沖突檢測規(guī)則進(jìn)行組件預(yù)封裝后得到的組件;

      在本例中,服務(wù)端在啟動第一階段的沖突檢測之前,首先可以判斷數(shù)據(jù)庫中是否存儲了與用戶待簽約的軟件產(chǎn)品的產(chǎn)品屬性對應(yīng)的沖突檢測規(guī)則(包括第一類沖突檢測規(guī)則和第二類沖突檢測規(guī)則),如果數(shù)據(jù)庫中未存儲針對該軟件產(chǎn)品的任何沖突檢測規(guī)則,則表明該軟件產(chǎn)品自身可能并不存在簽約約束,因此在這種情況下,服務(wù)端可以基于用戶的簽約信息繼續(xù)執(zhí)行后續(xù)的簽約流程即可。

      相反,如果數(shù)據(jù)庫中存儲了上述第一類沖突檢測規(guī)則,此時服務(wù)端可以基于該第一類沖突檢測規(guī)則針對用戶待簽約的軟件產(chǎn)品進(jìn)行第一階段的簽約沖突檢測。

      當(dāng)然,如果數(shù)據(jù)庫中未存儲上述第一類沖突檢測規(guī)則,而存儲了上述第二類沖突檢測規(guī)則,此時服務(wù)端可以跳過第一階段的簽約沖突檢測,直接開啟針對用戶待簽約的軟件產(chǎn)品進(jìn)行第二階段的簽約沖突檢測。

      在本例中,當(dāng)服務(wù)端開啟了第一階段的簽約沖突檢測后,首先可以讀取預(yù)設(shè)的第一階段的沖突檢測組件。

      其中,第一階段的沖突檢測組件,可以稱之為基礎(chǔ)屬性沖突檢測組件。由于同一類軟件產(chǎn)品的基礎(chǔ)屬性通常為共性產(chǎn)品屬性,不會發(fā)生變化,因此在第一階段的沖突檢測開啟之前,服務(wù)端可以從數(shù)據(jù)庫中讀取與基礎(chǔ)屬性對應(yīng)的第一類沖突檢測規(guī)則進(jìn)行組件預(yù)封裝,針對數(shù)據(jù)庫中預(yù)配置了第一類沖突檢測規(guī)則的基礎(chǔ)屬性分別封裝出第一階段的沖突檢測組件,以便服務(wù)端在 開啟了第一階段的沖突檢測后,可以直接讀取已有的第一階段的沖突檢測組件針對待簽約的軟件產(chǎn)品的基礎(chǔ)屬性進(jìn)行簽約沖突檢測。

      當(dāng)然,對于數(shù)據(jù)庫中并未存儲對應(yīng)的沖突檢測規(guī)則的基礎(chǔ)屬性,此時可以不進(jìn)行特別處理。

      需要說明的是,對沖突檢測規(guī)則進(jìn)行組件封裝,是指將沖突檢測規(guī)則轉(zhuǎn)換為對應(yīng)的處理邏輯(比如執(zhí)行代碼),然后將處理邏輯封裝成對應(yīng)的模塊化的組件的過程。

      步驟202,基于所述第一階段的沖突檢測組件針對所述待簽約產(chǎn)品的基礎(chǔ)屬性進(jìn)行第一階段的簽約沖突檢測,以確定所述待簽約產(chǎn)品的基礎(chǔ)屬性與所述已簽約產(chǎn)品的基礎(chǔ)屬性是否存在簽約沖突;

      在本例中,當(dāng)服務(wù)端讀取到第一階段的沖突檢測組件時,可以繼續(xù)從數(shù)據(jù)庫中讀取用戶待簽約的軟件產(chǎn)品的基礎(chǔ)屬性,然后執(zhí)行第一階段的沖突檢測組件,針對該待簽約的軟件產(chǎn)品的基礎(chǔ)屬性分別進(jìn)行簽約沖突檢測,來確定用戶待簽約的該軟件產(chǎn)品的基礎(chǔ)屬性與用戶已簽約的軟件產(chǎn)品的基礎(chǔ)屬性之間是否存在簽約沖突。

      如果用戶待簽約的該軟件產(chǎn)品的基礎(chǔ)屬性與用戶已簽約的軟件產(chǎn)品的基礎(chǔ)屬性之間,滿足該第一沖突檢測組件中封裝的沖突檢測規(guī)則,則表明用戶待簽約的該軟件產(chǎn)品的基礎(chǔ)屬性與用戶已簽約的軟件產(chǎn)品的基礎(chǔ)屬性之間存在簽約沖突。

      例如,以該待簽約的軟件產(chǎn)品為快捷卡產(chǎn)品、基礎(chǔ)屬性為快捷卡卡號為例,上述第一類沖突檢測規(guī)則可以是開發(fā)人員為快捷卡卡號預(yù)配置的“同一個用戶針對同一個卡號只能簽約一次”的沖突檢測規(guī)則,上述第一階段的沖突檢測組件可以是基于該沖突檢測規(guī)則進(jìn)行組件封裝后得到的組件。

      服務(wù)端在執(zhí)行該組件針對用戶待簽約的該快捷卡產(chǎn)品進(jìn)行簽約沖突檢測時,可以將該待簽約的快捷卡的卡號,與該用戶已簽約過的快捷卡的卡號分別進(jìn)行匹配。當(dāng)該待簽約的快捷卡的卡號與任一該用戶已簽約過的快捷卡的卡號匹配時,此時該待簽約的快捷卡的卡號與該用戶已簽約的快捷卡的卡號滿足上述沖 突檢測規(guī)則,服務(wù)端可以確定該待簽約的快捷卡的卡號與該用戶已簽約的快捷卡的卡號存在簽約沖突。

      步驟203,當(dāng)所述待簽約產(chǎn)品的任一基礎(chǔ)屬性與所述已簽約產(chǎn)品的基礎(chǔ)屬性存在簽約沖突時,終止所述待簽約產(chǎn)品的簽約流程。

      在第一階段的簽約沖突檢測過程中,如果服務(wù)端通過執(zhí)行第一階段的沖突檢測組件,檢測出用戶待簽約的軟件產(chǎn)品的任意一個基礎(chǔ)屬性與該用戶已簽約的軟件產(chǎn)品的基礎(chǔ)屬性存在簽約沖突時,服務(wù)端可以直接終止本次簽約流程。在這種情況下,服務(wù)端可以向用戶的簽約客戶端發(fā)送一個通知消息,以通知用戶本次簽約由于簽約沖突而終止。

      步驟204,當(dāng)所述待簽約產(chǎn)品的產(chǎn)品屬性與所述已簽約產(chǎn)品的基礎(chǔ)屬性均不存在簽約沖突時,則基于所述待簽約產(chǎn)品的基礎(chǔ)屬性、所述用戶的標(biāo)識以及所述待簽約產(chǎn)品的標(biāo)識生成對應(yīng)的沖突控制記錄。

      如果在第一階段的簽約沖突檢測過程中,服務(wù)端檢測出用戶待簽約的軟件產(chǎn)品的基礎(chǔ)屬性與該用戶已簽約的軟件產(chǎn)品的基礎(chǔ)屬性均不存在簽約沖突時,此時第一階段的簽約沖突檢測未檢測到簽約沖突,服務(wù)端還可以繼續(xù)進(jìn)行第二階段的簽約沖突檢測。

      其中,在繼續(xù)進(jìn)行第二階段的簽約沖突檢測之前,由于還需要繼續(xù)執(zhí)行第二階段的簽約沖突檢測,此時整個簽約過程尚未完成,因此在這種情況下,服務(wù)端還可以基于該待簽約產(chǎn)品的基礎(chǔ)屬性、該用戶的id(比如用戶名)以及該待簽約產(chǎn)品的id生成一條對應(yīng)的沖突控制記錄。

      該沖突控制記錄仍然可以保存在上述數(shù)據(jù)庫中,用于避免用戶在簽約過程中進(jìn)行重復(fù)簽約,當(dāng)簽約完成后服務(wù)端可以對該沖突控制記錄自動進(jìn)行清理。

      在實(shí)際應(yīng)用中,服務(wù)端在針對待簽約的軟件產(chǎn)品進(jìn)行產(chǎn)品簽約時,可以根據(jù)待簽約產(chǎn)品的基礎(chǔ)屬性、該用戶的id以及該待簽約產(chǎn)品的id在數(shù)據(jù)庫中匹配沖突控制記錄,如果匹配到對應(yīng)的沖突控制記錄,表明該用戶當(dāng)前正在進(jìn)行產(chǎn)品簽約中(即沖突檢測尚未完成),在這種情況下,服務(wù)端可以立 即終止本次簽約流程,以避免用戶在簽約的過程中重復(fù)的進(jìn)行簽約。

      步驟205,基于預(yù)配置的與所述待簽約產(chǎn)品的可變屬性對應(yīng)的第二類沖突檢測規(guī)則執(zhí)行第二階段的簽約沖突檢測。

      當(dāng)服務(wù)端生成了上述沖突控制記錄后,可以繼續(xù)進(jìn)行第二階段的簽約沖突檢測。

      請參見圖3,圖3為示出的第二階段的簽約沖突檢測的流程圖,其中,第二階段的簽約沖突檢測在第一階段的簽約沖突檢測未檢測到簽約沖突時啟動,包括以下執(zhí)行步驟:

      步驟301,讀取與所述可變屬性對應(yīng)的第二類沖突檢測規(guī)則;

      在本例中,服務(wù)端在啟動第二階段的簽約沖突檢測后,首先可以針對第一階段的沖突檢測完成后生成的沖突控制記錄添加排它鎖,其中為上述沖突控制記錄添加排它鎖后,該沖突控制記錄將只能由與第二階段的沖突檢測對應(yīng)的進(jìn)程進(jìn)行讀取和修改,因此通過這種方式,可以在第二階段的簽約沖突檢測的過程中,確保上述沖突控制記錄不被其它進(jìn)程所修改,可以避免由于上述沖突控制記錄被修改而導(dǎo)致的用戶在簽約過程中重復(fù)簽約的問題。

      當(dāng)服務(wù)端為上述簽約沖突記錄添加排它鎖后,服務(wù)端可以判斷數(shù)據(jù)庫中是否存儲了與用戶待簽約的軟件產(chǎn)品的可變屬性對應(yīng)的第二類沖突檢測規(guī)則,如果數(shù)據(jù)庫中未存儲與該軟件產(chǎn)品的可變屬性對應(yīng)的任何沖突檢測規(guī)則,則表明開發(fā)人員僅對該軟件產(chǎn)品的基礎(chǔ)屬性預(yù)配置了對應(yīng)的簽約約束,因此在這種情況下,服務(wù)端可以結(jié)束針對該軟件產(chǎn)品的簽約沖突檢測,基于用戶的簽約信息繼續(xù)執(zhí)行后續(xù)的簽約流程。

      當(dāng)然,如果數(shù)據(jù)庫中存儲了與待簽約的軟件產(chǎn)品的可變屬性對應(yīng)的第二類沖突檢測規(guī)則,此時服務(wù)端可以從數(shù)據(jù)庫中讀取上述第二類沖突檢測規(guī)則。

      其中,第二階段的沖突檢測組件,可以稱之為可變屬性沖突檢測組件。由于可變屬性通常為非共性產(chǎn)品屬性(可能為開發(fā)人員個性化定制的產(chǎn)品屬性),對于同一類軟件產(chǎn)品來說也可能會各不相同,因此開發(fā)人員為同一類軟件產(chǎn)品的可變屬性預(yù)配置的沖突檢測規(guī)則,則也可能互不相同。

      在這種情況下,如果服務(wù)端仍然采用在第一階段的簽約沖突檢測時的組件預(yù)封裝機(jī)制,對第二類沖突檢測規(guī)則進(jìn)行組件預(yù)封裝,那么預(yù)封裝得到的第二階段的沖突組件,可能會由于組件中封裝的沖突檢測規(guī)則與開發(fā)人員實(shí)際配置的沖突檢測規(guī)則不相同,而導(dǎo)致組件無法執(zhí)行或者錯誤執(zhí)行。

      因此,服務(wù)端在啟動第二階段的簽約沖突檢測后,第二階段的沖突檢測組件可以不再采用第一階段的簽約沖突檢測時的組件預(yù)封裝機(jī)制,而是采用靈活配置的可插拔機(jī)制,可以基于開發(fā)人員預(yù)配置的第二類沖突檢測規(guī)則“臨時”進(jìn)行組件封裝得到第二階段的沖突檢測組件。

      步驟302,對讀取到的所述第二類沖突檢測規(guī)則進(jìn)行組件封裝以得到第二階段的沖突檢測組件;

      在本例中,在基于開發(fā)人員預(yù)配置的第二類沖突檢測規(guī)則“臨時”進(jìn)行組件封裝,得到的第二階段的沖突檢測組件,可以由若干不同的原子屬性沖突檢測組件組成。

      其中,原子屬性沖突檢測組件為可插拔組件,每一個原子屬性沖突檢測組件可以分別對應(yīng)待簽約的軟件產(chǎn)品的一個可變屬性。對于不同的待簽約的軟件產(chǎn)品來說,在第二階段的簽約沖突檢測組件中包含的原子屬性沖突檢測組件可以各不相同。

      在針對不同的軟件產(chǎn)品進(jìn)行第二階段的簽約沖突檢測時,服務(wù)端可以通過設(shè)置沖突檢測引擎組件,由沖突檢測引擎組件來協(xié)調(diào)運(yùn)行不同的原子屬性沖突組件,針對不同的軟件產(chǎn)品的可變屬性執(zhí)行不同的原子屬性沖突組件,從而實(shí)現(xiàn)差異化的沖突檢測,可以為不同的軟件產(chǎn)品提供個性化的沖突檢測組件,以滿足復(fù)雜的沖突場景中的沖突控制需求。

      例如,假設(shè)軟件產(chǎn)品a的可變屬性包括原子屬性1、原子屬性2和原子屬性3(原子屬性是計(jì)算機(jī)領(lǐng)域的常用用于,表示所有可變屬性中不可分割的單一屬性),組件封裝生成的原子屬性沖突組件包括組件1、組件2和組件3。

      軟件產(chǎn)品b的可變屬性包括原子屬性4、原子屬性5和原子屬性6組件封裝生成的原子屬性沖突組件包括組件1、組件2和組件3,組件封裝生成的原子屬性沖突組件包括組件4、組件5和組件6。

      對于組件1~組件6,服務(wù)端可以均存儲在數(shù)據(jù)庫中,在針對產(chǎn)品a進(jìn)行第二階段的簽約沖突檢測時,沖突檢測引擎組件可以協(xié)調(diào)運(yùn)行組件1、組件2和組件3對產(chǎn)品a進(jìn)行簽約沖突檢測;在針對產(chǎn)品b進(jìn)行第二階段的簽約沖突檢測時,沖突檢測引擎組件可以協(xié)調(diào)運(yùn)行組件4、組件5和組件6對產(chǎn)品a進(jìn)行簽約沖突檢測;從而,可以針對產(chǎn)品a和產(chǎn)品b進(jìn)行差異化的沖突檢測,可以為產(chǎn)品a和產(chǎn)品b分別提供個性化的沖突檢測組件。

      可見,通過這種方式,可以為不同的軟件產(chǎn)品靈活的配置原子屬性檢測組件,可以為不同的軟件產(chǎn)品提供可插拔的沖突檢測組件;同時,通過沖突檢測引擎組件的協(xié)調(diào),在第二階段的簽約沖突檢測中,可以針對不同的軟件產(chǎn)品可以分別執(zhí)行不同的原子屬性組件,從而可以滿足開發(fā)人員對簽約沖突檢測個性化定制的需求。

      步驟303,基于所述第二階段的沖突檢測組件針對所述待簽約產(chǎn)品的可變屬性進(jìn)行第二階段的簽約沖突檢測,以確定所述待簽約產(chǎn)品的可變屬性與所述已簽約產(chǎn)品的可變屬性是否存在簽約沖突;

      在本例中,當(dāng)服務(wù)端基于讀取到的第二類沖突檢測規(guī)則進(jìn)行“臨時”的組件封裝,針對數(shù)據(jù)庫中預(yù)配置了第二類沖突檢測規(guī)則的可變屬性分別封裝出對應(yīng)的原子屬性沖突檢測組件后,可以繼續(xù)從數(shù)據(jù)庫中讀取用戶待簽約的軟件產(chǎn)品的可變屬性,然后執(zhí)行封裝得到的各原子屬性沖突檢測組件對待簽約的軟件產(chǎn)品的可變屬性分別進(jìn)行簽約沖突檢測,來確定用戶待簽約的該軟件產(chǎn)品的可變屬性與用戶已簽約的軟件產(chǎn)品的可變屬性之間是否存在簽約沖突。

      如果用戶待簽約的該軟件產(chǎn)品的可變屬性與用戶已簽約的軟件產(chǎn)品的可變屬性之間,滿足原子屬性沖突檢測規(guī)則中封裝的沖突檢測規(guī)則,則表明用戶待簽約的該軟件產(chǎn)品的可變屬性與用戶已簽約的軟件產(chǎn)品的可變屬性之間 存在簽約沖突。

      例如,以該待簽約的軟件產(chǎn)品為快捷卡產(chǎn)品、可變屬性為快捷卡的簽約時間段為例,上述第二類沖突檢測規(guī)則可以是開發(fā)人員為快捷卡的簽約事件端預(yù)配置的“簽約時間段不能存在交集”的沖突檢測規(guī)則,上述第一階段的沖突檢測組件可以是基于該沖突檢測規(guī)則進(jìn)行組件封裝后得到的原子屬性沖突檢測組件。

      服務(wù)端在執(zhí)行該組件針對用戶待簽約的該快捷卡產(chǎn)品進(jìn)行簽約沖突檢測時,可以將該待簽約的快捷卡的簽約時間段,與該用戶已簽約過的快捷卡的簽約事件段分別進(jìn)行匹配。當(dāng)該待簽約的快捷卡的簽約時間段與任一該用戶已簽約過的快捷卡的簽約時間段存在交集時,此時該待簽約的快捷卡的簽約時間段與該用戶已簽約的快捷卡的簽約時間段滿足上述沖突檢測規(guī)則,服務(wù)端可以確定該待簽約的快捷卡的簽約時間段與該用戶已簽約的快捷卡的簽約時間段存在簽約沖突。

      步驟304,當(dāng)所述待簽約產(chǎn)品的任一可變屬性與所述已簽約產(chǎn)品的可變屬性存在簽約沖突時,終止所述待簽約產(chǎn)品的簽約流程。

      在第二階段的簽約沖突檢測過程中,如果服務(wù)端通過執(zhí)行封裝得到的各原子屬性沖突檢測組件,檢測出用戶待簽約的軟件產(chǎn)品的任意一個可變屬性與該用戶已簽約的軟件產(chǎn)品的可變屬性存在簽約沖突時,服務(wù)端可以直接終止本次簽約流程。在這種情況下,服務(wù)端可以向用戶的簽約客戶端發(fā)送一個通知消息,以通知用戶本次簽約由于簽約沖突而終止。

      當(dāng)然,如果在第二階段的簽約沖突檢測過程中,服務(wù)端檢測出用戶待簽約的軟件產(chǎn)品的可變屬性與該用戶已簽約的軟件產(chǎn)品的可變屬性均不存在簽約沖突時,此時第二階段的簽約沖突檢測未檢測到簽約沖突,服務(wù)端可以根據(jù)用戶的簽約信息執(zhí)行后續(xù)的簽約流程完成簽約。

      在本例中,當(dāng)服務(wù)端針對用戶待簽約的軟件產(chǎn)品完成第二階段的簽約沖突檢測后,可以釋放為已經(jīng)生成的沖突控制記錄添加的排它鎖,然后清除該沖突控制記錄。

      其中,在清除該沖突控制記錄時,服務(wù)端可以通過為沖突控制記錄設(shè)置狀態(tài),并通過定時清理任務(wù)來完成清理。

      例如,服務(wù)端可以在本地啟動一個定時清理任務(wù),周期性的對數(shù)據(jù)庫中保存的沖突控制記錄進(jìn)行掃描,清除其中已完成狀態(tài)的沖突控制記錄。當(dāng)服務(wù)端針對用戶的待簽約的軟件產(chǎn)品的產(chǎn)品屬性完成兩階段的沖突檢測后,可以將沖突控制記錄的狀態(tài)更改為已完成狀態(tài),從而當(dāng)上述定時清理任務(wù)掃描到該已完成狀態(tài)的沖突控制記錄后,可以對其進(jìn)行清除。

      可見,在以上實(shí)施例中,通過針對用戶待簽約的軟件產(chǎn)品進(jìn)行第一階段的簽約沖突檢測以及第一階段的簽約沖突檢測,即可以適用簡單的簽約沖突場景,基于軟件產(chǎn)品的基礎(chǔ)屬性進(jìn)行簽約沖突檢測,也可以適用復(fù)雜的簽約沖突場景,基于由開發(fā)人員個性化定制的可變屬性進(jìn)行簽約沖突檢測,從而具有更好的通用性和可擴(kuò)展性。

      請參見圖4,圖4是本申請一實(shí)施例提供的一種與上述方法實(shí)施例對應(yīng)的簽約沖突檢測系統(tǒng)的結(jié)構(gòu)圖。

      該系統(tǒng)包括沖突控制協(xié)調(diào)組件、沖突控制配置組件、基礎(chǔ)屬性沖突檢測組件、可變屬性沖突檢測引擎組件、若干原子屬性檢測組件以及控制記錄清理組件;其中:

      沖突控制協(xié)調(diào)組件,作為整個系統(tǒng)的協(xié)調(diào)器,可以通過加載沖突控制配置組件管理的數(shù)據(jù)庫中存儲的產(chǎn)品屬性以及由開發(fā)人員預(yù)配置的沖突檢測規(guī)則等沖突控制參數(shù),對其他各組件進(jìn)行任務(wù)編排、排它鎖控制、更新沖突控制記錄的狀態(tài)等操作,來協(xié)調(diào)基礎(chǔ)屬性沖突檢測組件、可變屬性沖突檢測引擎組件以及控制記錄清理組件的運(yùn)行。

      沖突控制配置組件,管理服務(wù)端本地的數(shù)據(jù)庫中,存儲的產(chǎn)品屬性以及由開發(fā)人員預(yù)配置的沖突檢測規(guī)則等沖突控制參數(shù)。可以提供管理界面,作為統(tǒng)一的數(shù)據(jù)訪問節(jié)點(diǎn),為其它組件提供數(shù)據(jù)訪問接口。當(dāng)然,在分布式系統(tǒng)中,沖突控制配置組件也可以支持廣播機(jī)制,可以將數(shù)據(jù)庫中存儲的沖突控制參數(shù)主動推送至分布式集群中其它各組件所在的設(shè)備,以達(dá)到控制組件 運(yùn)行的目的。

      基礎(chǔ)屬性沖突檢測組件,該組件為第一階段的沖突檢測組件,根據(jù)從數(shù)據(jù)庫中讀取到的與基礎(chǔ)屬性對應(yīng)的第一類沖突檢測規(guī)則進(jìn)行組件預(yù)封裝后得到。該組件為通用組件,滿足同一類型產(chǎn)品的共性需求。

      可變屬性沖突檢測引擎組件,該組件為第二階段的沖突檢測的入口,用于針對開發(fā)人員為可變屬性預(yù)配置的沖突檢測規(guī)則進(jìn)行組件封裝,得到原子屬性沖突檢測組件。同時,用于協(xié)調(diào)執(zhí)行各原子屬性沖突檢測組件的運(yùn)行。在針對不同的軟件產(chǎn)品進(jìn)行第二階段的簽約沖突檢測時,可變屬性沖突檢測引擎組件可以通過協(xié)調(diào)針對不同的軟件產(chǎn)品執(zhí)行不同的原子屬性沖突檢測組件。

      原子屬性沖突檢測組件,為可插拔組件,該組件是否執(zhí)行由可變屬性沖突檢測引擎組件來進(jìn)行協(xié)調(diào)。對于不同的待簽約的軟件產(chǎn)品,可以包含不同的原子屬性沖突檢測組件,每一個原子屬性沖突檢測組件可以分別對應(yīng)一個由開發(fā)人員自定義的可變屬性,從而針對不同的軟件產(chǎn)品可以定制不同的原子屬性沖突檢測組件,使得系統(tǒng)具有定制和可擴(kuò)展的能力。

      控制記錄清理組件,用于啟動定時清理任務(wù),定時對已完成狀態(tài)的沖突控制記錄進(jìn)行清除。

      請參見圖5,圖5為示出的上述系統(tǒng)進(jìn)行簽約沖突檢測的流程圖。

      在初始狀態(tài)下,當(dāng)用戶簽約一個軟件產(chǎn)品時,沖突控制協(xié)調(diào)組件可以通過沖突控制配置組件提供的數(shù)據(jù)訪問接口,從數(shù)據(jù)庫中讀取該軟件產(chǎn)品的產(chǎn)品屬性,并判斷該軟件產(chǎn)品的產(chǎn)品屬性是否由開發(fā)人員預(yù)配置了對應(yīng)的沖突檢測規(guī)則,來確定該軟件產(chǎn)品是否需要進(jìn)行簽約沖突檢測。

      如果該軟件產(chǎn)品的產(chǎn)品屬性已由開發(fā)人員預(yù)配置了對應(yīng)的沖突檢測規(guī)則,此時該軟件產(chǎn)品需要進(jìn)行簽約沖突檢測,沖突控制協(xié)調(diào)組件可以喚醒基礎(chǔ)屬性沖突檢測組件,來驅(qū)動第一階段的簽約沖突檢測,

      當(dāng)基礎(chǔ)屬性沖突檢測組件被喚醒后,可以通過沖突控制配置組件提供的數(shù)據(jù)訪問接口,從數(shù)據(jù)庫中讀取基礎(chǔ)屬性,其中讀取的基礎(chǔ)屬性可以包括用 戶待簽約的該軟件產(chǎn)品的基礎(chǔ)屬性,以及該用戶已簽約的軟件產(chǎn)品的基礎(chǔ)屬性。

      當(dāng)基礎(chǔ)屬性沖突檢測組件讀取到基礎(chǔ)屬性后,可以通過執(zhí)行組件針對待簽約的該軟件產(chǎn)品的基礎(chǔ)屬性進(jìn)行第一階段的簽約沖突檢測,以確定該待簽約的軟件產(chǎn)品的基礎(chǔ)屬性與該用戶已簽約的軟件產(chǎn)品的基礎(chǔ)屬性是否存在簽約沖突;如果不存在簽約沖突,生成一條對應(yīng)沖突控制記錄。如果存在簽約沖突,此時可以終止當(dāng)前的簽約流程。

      當(dāng)?shù)谝浑A段的簽約沖突檢測完成后,沖突控制協(xié)調(diào)組件可以讀取基礎(chǔ)屬性沖突檢測組件的沖突檢測結(jié)果,基于第一階段的簽約沖突檢測的結(jié)果來判斷是否繼續(xù)進(jìn)行第二階段的簽約沖突檢測。

      如果第一階段的簽約沖突檢測未檢測到簽約沖突,此時繼續(xù)進(jìn)行第二階段的簽約沖突檢測。沖突控制協(xié)調(diào)組件可以為第一階段的簽約沖突檢測生成的沖突控制記錄添加排它鎖,以避免該沖突控制記錄被修改。

      當(dāng)為沖突控制記錄添加排它鎖后,沖突控制協(xié)調(diào)組件可以喚醒可變屬性沖突檢測引擎組件,來驅(qū)動第二階段的簽約沖突檢測。

      當(dāng)可變屬性沖突檢測引擎組件被喚醒后,可以通過沖突控制配置組件提供的數(shù)據(jù)訪問接口,從數(shù)據(jù)庫中讀取該用戶已簽約的軟件產(chǎn)品的可變屬性、用戶待簽約的軟件產(chǎn)品的可變屬性,以及由開發(fā)人員為該待簽約的軟件產(chǎn)品的可變屬性預(yù)配置的沖突檢測規(guī)則。

      當(dāng)讀取到上述信息后,可變屬性沖突檢測引擎組件可以根據(jù)讀取到的該待簽約的軟件產(chǎn)品的可變屬性,以及對應(yīng)的沖突檢測規(guī)則,依次進(jìn)行組件封裝得到若干原子屬性沖突檢測組件,然后執(zhí)行封裝得到的原子屬性沖突檢測組件,針對該待簽約的軟件產(chǎn)品的可變屬性進(jìn)行簽約沖突檢測,以確定該待簽約的軟件產(chǎn)品的可變屬性與該用戶已簽約的軟件產(chǎn)品的可變屬性是否存在簽約沖突。如果存在簽約沖突,此時可以直接終止當(dāng)前的簽約流程。

      當(dāng)?shù)诙A段的簽約沖突檢測完成后,沖突控制協(xié)調(diào)組件可以將沖突控制記錄的狀態(tài)修改為已完成狀態(tài),同時釋放該沖突控制記錄的排它鎖。

      控制記錄清理組件,可以定時從數(shù)據(jù)庫中讀取已完成狀態(tài)的沖突控制記錄,當(dāng)讀取到已完成狀態(tài)的沖突控制記錄后,可以對該沖突控制記錄進(jìn)行清除,從而確保在第二階段的簽約沖突檢測完成后,及清除沖突控制記錄。

      在以上各實(shí)施例中,通過基于軟件產(chǎn)品的共性和個性化的簽約沖突控制需求,將待簽約產(chǎn)品的產(chǎn)品屬性預(yù)先劃分為基礎(chǔ)屬性和可變屬性,在進(jìn)行簽約沖突控制時,按照兩個階段的簽約沖突檢測進(jìn)行處理。在第一階段,可以基于預(yù)配置的與基礎(chǔ)屬性對應(yīng)的第一類沖突檢測規(guī)則針對待簽約產(chǎn)品進(jìn)行簽約沖突檢測;在第二階段,可以基于預(yù)配置的與可變屬性對應(yīng)的第二類沖突檢測規(guī)則針對待簽約產(chǎn)品進(jìn)行簽約沖突檢測;實(shí)現(xiàn)了既可以在簡單的簽約沖突場景中基于基礎(chǔ)屬性來進(jìn)行簽約沖突檢測,又可以在復(fù)雜的簽約沖突場景中基于可變屬性來進(jìn)行簽約沖突檢測,從而具有更好的通用性和擴(kuò)展性。

      與上述方法實(shí)施例相對應(yīng),本申請還提供了裝置的實(shí)施例。

      請參見圖6,本申請?zhí)岢鲆环N簽約沖突檢測裝置60,應(yīng)用于服務(wù)端;其中,請參見圖7,作為承載所述簽約沖突檢測裝置60的服務(wù)端所涉及的硬件架構(gòu)中,通常包括cpu、內(nèi)存、非易失性存儲器、網(wǎng)絡(luò)接口以及內(nèi)部總線等;以軟件實(shí)現(xiàn)為例,所述簽約沖突檢測裝置60通??梢岳斫鉃榧虞d在內(nèi)存中的計(jì)算機(jī)程序,通過cpu運(yùn)行之后形成的軟硬件相結(jié)合的邏輯裝置,所述裝置60包括:

      第一讀取模塊601,用于讀取用戶待簽約產(chǎn)品的產(chǎn)品屬性;

      第二讀取模塊602,用于讀取該用戶已簽約產(chǎn)品的產(chǎn)品屬性;其中,所述產(chǎn)品屬性被預(yù)先劃分為基礎(chǔ)屬性和可變屬性;

      檢測模塊603,用于基于預(yù)配置的與所述待簽約產(chǎn)品的基礎(chǔ)屬性對應(yīng)的第一類沖突檢測規(guī)則執(zhí)行第一階段的簽約沖突檢測,以及基于預(yù)配置的與所述待簽約產(chǎn)品的可變屬性對應(yīng)的第二類沖突檢測規(guī)則執(zhí)行第二階段的簽約沖突檢測,以確定所述待簽約產(chǎn)品的產(chǎn)品屬性與所述已簽約產(chǎn)品的產(chǎn)品屬性是否存在簽約沖突。

      在本例中,所述檢測模塊603具體用于:

      讀取預(yù)設(shè)的第一階段的沖突檢測組件;其中,所述第一階段的沖突檢測組件為基于所述第一類沖突檢測規(guī)則進(jìn)行組件預(yù)封裝后得到的組件;

      基于所述第一階段的沖突檢測組件針對所述待簽約產(chǎn)品的基礎(chǔ)屬性進(jìn)行第一階段的簽約沖突檢測,以確定所述待簽約產(chǎn)品的基礎(chǔ)屬性與所述已簽約產(chǎn)品的基礎(chǔ)屬性是否存在簽約沖突;

      當(dāng)所述待簽約產(chǎn)品的任一基礎(chǔ)屬性與所述已簽約產(chǎn)品的基礎(chǔ)屬性存在簽約沖突時,終止所述待簽約產(chǎn)品的簽約流程。

      在本例中,所述裝置60還包括:

      生成模塊604,用于在所述待簽約產(chǎn)品的基礎(chǔ)屬性與所述已簽約產(chǎn)品的基礎(chǔ)屬性均不存在簽約沖突時,基于所述待簽約產(chǎn)品的基礎(chǔ)屬性、所述用戶的標(biāo)識以及所述待簽約產(chǎn)品的標(biāo)識生成對應(yīng)的沖突控制記錄;

      終止模塊605,用于在檢測模塊針對所述待簽約產(chǎn)品進(jìn)行第一階段的簽約沖突檢測之前,如果查詢到與所述待簽約產(chǎn)品的基礎(chǔ)屬性、所述用戶的標(biāo)識以及所述待簽約產(chǎn)品的標(biāo)識匹配的沖突控制記錄,則終止針對所述待簽約產(chǎn)品的簽約流程。

      在本例中,所述檢測模塊603進(jìn)一步用于:

      當(dāng)所述待簽約產(chǎn)品的產(chǎn)品屬性與所述已簽約產(chǎn)品的基礎(chǔ)屬性均不存在簽約沖突時,則基于預(yù)配置的與所述待簽約產(chǎn)品的可變屬性對應(yīng)的第二類沖突檢測規(guī)則執(zhí)行第二階段的簽約沖突檢測。

      在本例中,所述檢測模塊603進(jìn)一步用于:

      讀取與所述可變屬性對應(yīng)的第二類沖突檢測規(guī)則;

      對讀取到的所述第二類沖突檢測規(guī)則進(jìn)行組件封裝以得到第二階段的沖突檢測組件;

      基于所述第二階段的沖突檢測組件針對所述待簽約產(chǎn)品的可變屬性進(jìn)行第二階段的簽約沖突檢測,以確定所述待簽約產(chǎn)品的可變屬性與所述已簽約產(chǎn)品的可變屬性是否存在簽約沖突;

      所述終止模塊605進(jìn)一步用于:

      當(dāng)所述待簽約產(chǎn)品的任一可變屬性與所述已簽約產(chǎn)品的可變屬性存在簽約沖突時,終止所述待簽約產(chǎn)品的簽約流程。

      在本例中,所述檢測模塊603進(jìn)一步用于:

      在讀取與所述可變屬性對應(yīng)的第二類沖突檢測規(guī)則之前,針對所述沖突控制記錄添加排它鎖,以避免所述沖突控制記錄被修改。

      在本例中,所述檢測模塊603進(jìn)一步用于:

      當(dāng)所述待簽約產(chǎn)品的可變屬性與所述已簽約產(chǎn)品的可變屬性均不存在簽約沖突時,完成針對所述待簽約產(chǎn)品的產(chǎn)品簽約,并釋放為所述沖突控制記錄添加的所述排它鎖,以及清除所述沖突控制記錄。

      在本例中,所述產(chǎn)品屬性基于json格式存儲在預(yù)設(shè)數(shù)據(jù)庫中。

      本領(lǐng)域技術(shù)人員在考慮說明書及實(shí)踐這里公開的發(fā)明后,將容易想到本申請的其它實(shí)施方案。本申請旨在涵蓋本申請的任何變型、用途或者適應(yīng)性變化,這些變型、用途或者適應(yīng)性變化遵循本申請的一般性原理并包括本申請未公開的本技術(shù)領(lǐng)域中的公知常識或慣用技術(shù)手段。說明書和實(shí)施例僅被視為示例性的,本申請的真正范圍和精神由下面的權(quán)利要求指出。

      應(yīng)當(dāng)理解的是,本申請并不局限于上面已經(jīng)描述并在附圖中示出的精確結(jié)構(gòu),并且可以在不脫離其范圍進(jìn)行各種修改和改變。本申請的范圍僅由所附的權(quán)利要求來限制。

      以上所述僅為本申請的較佳實(shí)施例而已,并不用以限制本申請,凡在本申請的精神和原則之內(nèi),所做的任何修改、等同替換、改進(jìn)等,均應(yīng)包含在本申請保護(hù)的范圍之內(nèi)。

      當(dāng)前第1頁1 2 
      網(wǎng)友詢問留言 已有0條留言
      • 還沒有人留言評論。精彩留言會獲得點(diǎn)贊!
      1