本發(fā)明涉及業(yè)務數(shù)據(jù)智能審核技術領域,還涉及面向醫(yī)療保險報銷審核、企業(yè)報銷審核以及行政審批等數(shù)據(jù)審核領域,尤其涉及一種通用化智能審核平臺及其審核方法。
背景技術:
國家經濟下行壓力不斷加大,市場競爭越發(fā)激烈,企業(yè)運營風險不斷增加的環(huán)境下,企業(yè)和機構為了提高自身市場競爭力,在優(yōu)勝劣汰的市場競爭中優(yōu)勝,普遍做法是開源節(jié)流,減少不必要的日常運營開銷,提高資源管理水平,提高投入資源產出率。在市場需求推動下,業(yè)務數(shù)據(jù)審核進入了快速增長期。但是現(xiàn)有業(yè)務數(shù)據(jù)審核模式存在以下問題:
面對大量業(yè)務數(shù)據(jù)審核任務,傳統(tǒng)人工審核模式,不僅審核時間長、審核效率低,異常數(shù)據(jù)甄別能力低,同時造成審核人員工作負擔過大,影響身心健康。隨著數(shù)據(jù)時代到來,業(yè)務數(shù)據(jù)審核需求越來越大,審核要求越來越高,傳統(tǒng)人工審核模式的問題將異常突出。
目前,市場上存在一些業(yè)務數(shù)據(jù)審核平臺,比如申請?zhí)枮镃N201510464287.8、名稱為“一種大病醫(yī)保智能化審核系統(tǒng)及審核算法” 的發(fā)明專利,該發(fā)明提供一種大病醫(yī)保智能化審核系統(tǒng),包括數(shù)據(jù)庫模塊、智能審核引擎以及基礎信息庫管理模塊,所述數(shù)據(jù)庫模塊,用于獲取大病醫(yī)保數(shù)據(jù);所述智能審核引擎,其用于對所述大病醫(yī)保數(shù)據(jù)的各屬性項的關聯(lián)匹配度進行審核處理;所述基礎信息庫管理模塊,其存儲基礎數(shù)據(jù)的各項屬性信息,其中,所述智能審核引擎分別與所述數(shù)據(jù)庫模塊、所述基礎信息庫管理模塊連接,并給予所述數(shù)據(jù)庫模塊、所述基礎信息庫管理模塊的數(shù)據(jù)完成所述審核處理。但這審核平臺業(yè)務審核范圍單一,審核領域局限,只能處理特定審核領域,無法擴展審核范圍和審核領域。雖然可以滿足當前業(yè)務數(shù)據(jù)審核需求,但是市場是動態(tài)不斷變化的,實際業(yè)務需求也隨之不斷變化,這些審核范圍單一、審核領域局限的數(shù)據(jù)審核平臺,終將在殘酷的市場競爭中淘汰。
同時,現(xiàn)有技術在審核平臺開發(fā)時關心實際處理的業(yè)務數(shù)據(jù),具體地:現(xiàn)在大多數(shù)審核平臺,在開發(fā)時已經默認設置需要處理的業(yè)務數(shù)據(jù)結構,部署后只能解析與默認設置的業(yè)務數(shù)據(jù)結構相對應的業(yè)務數(shù)據(jù),突出審核平臺處理業(yè)務數(shù)據(jù)范圍的局限性,導致這種審核平臺存在缺陷。因為實際的業(yè)務數(shù)據(jù)結構總是隨著市場的不斷變化而動態(tài)變化,所以審核平臺的業(yè)務數(shù)據(jù)結構也需要隨之改變,但是這種審核平臺已經在開發(fā)時將需求方提供的業(yè)務數(shù)據(jù)結構固化在代碼。平臺部署后想要修改業(yè)務數(shù)據(jù)結構,則需要修改審核平臺源代碼,加大了審核平臺的維護成本和風險。當審核平臺部署發(fā)布后,修改源代碼風險極高,極有可能在修改代碼過程中影響其他部分功能模塊,從而留下隱蔽Bug。為了規(guī)避這些風險,需要測試人員投入大量精力對審核平臺穩(wěn)定性進行測試,這無疑加大審核平臺的開發(fā)、運營和維護成本。
另外,市面上大多數(shù)審核平臺,需要在開發(fā)時確定具體的業(yè)務審核邏輯,并在開發(fā)過程中固化在代碼里。這樣大大降低了系統(tǒng)的擴展性和靈活性,實際業(yè)務審核邏輯并不是一成不變的,而是隨著市場需求的變化而變化。這種預先把業(yè)務審核邏輯的固化到系統(tǒng)里的設計模式終將在優(yōu)勝劣汰的市場中,暴露出巨大的缺陷,從而慢慢被殘酷的市場所淘汰。如果為了彌補這一缺陷去修改源代碼,不僅加大了開發(fā)、測試和維護成本,而且降低了系統(tǒng)的可用性和穩(wěn)定性。
最后,現(xiàn)在市面上大多數(shù)審核平臺,只支持單一的審核方式,本應有所區(qū)分的審核應用場景,由于設計開發(fā)時沒有考慮有選擇的審核方式,導致對于所有的審核請求,都采取單一審核方式,顯然這樣是不合理的。
技術實現(xiàn)要素:
本發(fā)明的目的在于克服現(xiàn)有技術的不足,提供一種通用化智能審核平臺及其審核方法,在審核平臺開發(fā)和部署時將業(yè)務數(shù)據(jù)和業(yè)務審核邏輯進行無關化處理,提高系統(tǒng)的可用性和穩(wěn)定性,降低審核平臺的開發(fā)、運營和維護成本。
本發(fā)明的目的是通過以下技術方案來實現(xiàn)的:一種通用化智能審核平臺,包括項目構建模塊和智能審核模塊;
所述的項目構建模塊用于管理項目庫;所述的項目庫中包括至少一個實例化項目;所述的項目構建模塊包括業(yè)務數(shù)據(jù)單元、業(yè)務數(shù)據(jù)庫單元、業(yè)務JavaBean單元和業(yè)務規(guī)則單元;所述的業(yè)務數(shù)據(jù)單元用于構建實例化項目的業(yè)務數(shù)據(jù)結構,所述的業(yè)務數(shù)據(jù)結構由數(shù)據(jù)表信息和字段信息組成,為解析審核請求方上傳JSON數(shù)據(jù)包提供支持,同時為業(yè)務數(shù)據(jù)庫單元、業(yè)務JavaBean單元和業(yè)務規(guī)則單元提供支持;所述的業(yè)務數(shù)據(jù)庫單元用于構建基于所述實例化項目的業(yè)務數(shù)據(jù)結構的業(yè)務數(shù)據(jù)庫,為持久化審核數(shù)據(jù)提供物理存儲支持;所述的業(yè)務JavaBean單元用于構建基于所述實例化項目的業(yè)務數(shù)據(jù)結構的業(yè)務JavaBean集,當智能審核模塊的審核請求到達時,將審核數(shù)據(jù)轉換為實例化業(yè)務JavaBean對象;所述的業(yè)務規(guī)則單元用于構建基于所述實例化項目的業(yè)務數(shù)據(jù)結構的業(yè)務規(guī)則庫,包括將實例化項目的業(yè)務審核邏輯轉換為Drools規(guī)則引擎支持的規(guī)則和規(guī)則流;
所述的智能審核模塊用于實現(xiàn)審核平臺的業(yè)務數(shù)據(jù)審核。
所述的智能審核模塊包括事中審核單元和事后審核單元;所述的事中審核單元用于實時性高、響應速度快、數(shù)據(jù)量小的業(yè)務審核應用場景,所述的事后審核單元用于實時性低、響應速度較快、數(shù)據(jù)量大的業(yè)務審核應用場景;
所述的事中審核單元包括第一審核數(shù)據(jù)接口子單元、第一任務管理子單元和事中審核引擎,所述的第一審核數(shù)據(jù)接口子單元負責管理審核平臺和審核請求方之間的數(shù)據(jù)通信,包括監(jiān)聽審核請求、解析審核請求和審核結果傳回;所述的第一任務管理子單元負責管理審核任務,包括維護任務表、創(chuàng)建審核任務、更改任務狀態(tài)和結束審核任務,所有審核任務信息記錄在任務表中;所述的事中審核引擎負責處理事中審核的業(yè)務數(shù)據(jù)審核;
所述的事后審核單元包括第二審核數(shù)據(jù)接口子單元、第二任務管理子單元和事后審核引擎,所述的第二審核數(shù)據(jù)接口子單元負責管理審核平臺和審核請求方之間的數(shù)據(jù)通信,包括監(jiān)聽審核請求、解析審核請求和審核結果傳回;所述的第二任務管理子單元負責管理審核任務,包括維護任務表、創(chuàng)建審核任務、更改任務狀態(tài)和結束審核任務,所有審核任務信息記錄在任務表中;所述的事后審核引擎負責處理事后審核的業(yè)務數(shù)據(jù)審核。
所述的事中審核引擎為線性執(zhí)行的非流水線方式的審核引擎;所述的事中審核引擎包括業(yè)務數(shù)據(jù)審核組件、審核結果組裝組件和審核任務持久化組件,所述的業(yè)務數(shù)據(jù)審核組件用于審核業(yè)務數(shù)據(jù),所述的審核結果組裝組件用于按返回結果標準格式組裝審核結果,所述的審核任務持久化組件用于將審核任務信息、業(yè)務數(shù)據(jù)和審核結果持久化到物理數(shù)據(jù)庫。
所述的事后審核引擎為并行執(zhí)行的流水線方式的審核引擎;所述的事中審核引擎包括業(yè)務數(shù)據(jù)審核組件、審核結果組裝組件、結果傳回組件和審核任務持久化組件,所述的業(yè)務數(shù)據(jù)審核組件用于審核業(yè)務數(shù)據(jù),所述的審核結果組裝組件用于按返回結果標準格式組裝審核結果,所述的結果傳回組件基于第二審核數(shù)據(jù)接口子單元將組裝的審核結果傳回審核請求方,所述的審核任務持久化組件用于將審核任務信息、業(yè)務數(shù)據(jù)和審核結果持久化到物理數(shù)據(jù)庫。
一種通用化智能審核方法,包括項目構建步驟和智能審核步驟;所述的項目構建步驟包括對實例化項目的添加,所述的對實例化項目的添加包括以下子步驟:
S11:添加實例化項目,對實例化項目的基本信息進行添加;
S12:添加至少一個業(yè)務數(shù)據(jù)結構,包括對數(shù)據(jù)表信息和字段信息的添加;同時在添加完成后,系統(tǒng)為所述業(yè)務數(shù)據(jù)結構添加任務編號字段和任務數(shù)據(jù)索引字段;
S13:在步驟S12完成后,分別構建業(yè)務數(shù)據(jù)庫、業(yè)務JavaBean集和業(yè)務規(guī)則庫;其中,對于業(yè)務數(shù)據(jù)庫的構建包括以下子步驟:
S1311:根據(jù)業(yè)務數(shù)據(jù)結構的數(shù)據(jù)表編號和與該數(shù)據(jù)表編號綁定的字段信息,構造數(shù)據(jù)表SQL語句;
S1312:在實例化項目業(yè)務數(shù)據(jù)庫中執(zhí)行構造的SQL語句,完成業(yè)務數(shù)據(jù)表創(chuàng)建,更新該業(yè)務數(shù)據(jù)結構數(shù)據(jù)表信息的生成標志,表明業(yè)務數(shù)據(jù)表已生成;
S1313:將實例化項目的所有業(yè)務數(shù)據(jù)結構一一生成對應的業(yè)務數(shù)據(jù)表;
對于業(yè)務JavaBean集的構建,包括以下子步驟:
S1321:根據(jù)該業(yè)務數(shù)據(jù)結構的數(shù)據(jù)表編號和與該數(shù)據(jù)表編號綁定的字段信息,構造對應業(yè)務JavaBean的java文件;
S1322:使用java語言編程編譯器javac將java文件編譯生成class文件,更新該業(yè)務數(shù)據(jù)結構數(shù)據(jù)表信息的生成標志,表明業(yè)務JavaBean已生成;
S1323:將實例化項目的所有業(yè)務數(shù)據(jù)結構一一生成對應的業(yè)務JavaBean,構建業(yè)務JavaBean集;
對于業(yè)務規(guī)則庫的構建,包括以下子步驟:
S1331:構建規(guī)則部分,所述的規(guī)則部分包括屬性部分、條件部分和結構部分;所述的屬性部分用于定義當前規(guī)則執(zhí)行的一些屬性,包括是否可被重復執(zhí)行、過期時間、生效時間;所述的條件部分用于定義當前規(guī)則的單個/多個條件;所述的結構部分用于定義滿足當前條件部分后執(zhí)行的操作;
S1332:構建規(guī)則流,所述的規(guī)則流基于業(yè)務流程圖實現(xiàn),所述的業(yè)務流程圖描述了一系列需要執(zhí)行的審核業(yè)務的順序,包括規(guī)則部分、條件分支和分支聚合三部分;
所述的智能審核步驟用于實現(xiàn)審核平臺的業(yè)務數(shù)據(jù)審核。
所述的實例化項目的基本信息包括項目名、項目編號、項目介紹、業(yè)務數(shù)據(jù)庫賬號和密碼;在提交添加申請后,在數(shù)據(jù)庫創(chuàng)建對應的數(shù)據(jù)庫賬號,創(chuàng)建的數(shù)據(jù)庫賬號作為實例化項目的業(yè)務數(shù)據(jù)庫,存儲實例化項目的業(yè)務數(shù)據(jù);
所述的數(shù)據(jù)表信息包括數(shù)據(jù)表編號和生成標志;所述的生成標志表示該數(shù)據(jù)表信息是否生成對應業(yè)務JavaBean,以及是否在數(shù)據(jù)庫中生成對應業(yè)務數(shù)據(jù)表;所述的數(shù)據(jù)表編號作為業(yè)務數(shù)據(jù)表的表名和業(yè)務JavaBean的類名;
所述的字段信息包括字段編號和關心標識,所述的字段編號作為業(yè)務數(shù)據(jù)表的字段名和業(yè)務JavaBean的類成員變量名,所述的關心標識表示該字段是否為關心數(shù)據(jù),在業(yè)務審核時,當該數(shù)據(jù)表數(shù)據(jù)觸發(fā)了業(yè)務規(guī)則,需要將關心標識的字段數(shù)據(jù)拼接在審核結果,返回給審核請求方。
所述的項目構建步驟還包括對實例化項目的修改、查看與刪除。
所述的智能審核步驟包括事中審核子步驟和事后審核子步驟;所述的事中審核子步驟為線性執(zhí)行的非流水線方式,所述的事后審核子步驟為并行執(zhí)行的流水線方式。
所述的事中審核子步驟,包括以下子步驟:
S211:事中審核數(shù)據(jù)接口捕獲審核請求;其中所述的審核請求為審核請求方將驗證信息、審核要求和業(yè)務數(shù)據(jù)封裝成JSON數(shù)據(jù)包,然后加密壓縮并設置為接口輸入數(shù)據(jù),傳輸?shù)綄徍似脚_的事中審核數(shù)據(jù)接口的審核請求;
S212:事中審核數(shù)據(jù)接口將上傳數(shù)據(jù)解壓解密,解析出驗證信息,將驗證信息與審核服務注冊信息進行對比驗證,如果驗證通過,則進入步驟S213;否則,事中審核數(shù)據(jù)接口將審核服務受限提示信息返回審核請求方;
S213:事中審核數(shù)據(jù)接口解析審核要求,如果審核要求解析成功,則通過任務管理子單元創(chuàng)建審核任務、初始化審核任務、綁定請求方信息、設置審核要求,并進入步驟S214;否則,事中審核數(shù)據(jù)接口將錯誤信息返回審核請求方;
S214:事中審核數(shù)據(jù)接口基于業(yè)務數(shù)據(jù)結構解析業(yè)務數(shù)據(jù),如果業(yè)務數(shù)據(jù)解析成功,事中審核數(shù)據(jù)接口將業(yè)務數(shù)據(jù)轉換為實例化業(yè)務JavaBean對象,轉入事中審核引擎進行業(yè)務審核;否則,任務管理子單元注銷審核任務,事中審核數(shù)據(jù)接口將錯誤信息返回審核請求方;
S215:事中審核引擎根據(jù)審核任務的審核要求,從編譯后的業(yè)務規(guī)則庫提取本次審核涉及的業(yè)務規(guī)則包,并基于提取的業(yè)務規(guī)則包,創(chuàng)建審核會話,將業(yè)務數(shù)據(jù)JavaBean對象加載到審核會話中,執(zhí)行審核會話;
S216:審核會話結束后,按返回結果標準格式組裝審核結果;
S217:組裝完成后,事中審核數(shù)據(jù)接口模塊根據(jù)審核任務綁定的請求方的地址,將組裝結果加密壓縮,發(fā)送給審核請求方;同時,在發(fā)送成功后,將審核相關數(shù)據(jù)和審核任務信息備份到數(shù)據(jù)庫,實現(xiàn)審核任務持久化,任務管理更改任務審核狀態(tài)為審核成功,審核線程結束并將審核線程返還線程池,整個事中審核完成。
所述的事后審核子步驟,包括以下子步驟:
S221:事后審核數(shù)據(jù)接口捕獲審核請求;其中所述的審核請求為審核請求方將驗證信息、審核要求和業(yè)務數(shù)據(jù)封裝成JSON數(shù)據(jù)包,然后加密壓縮并設置為接口輸入數(shù)據(jù),傳輸?shù)綄徍似脚_的審核請求;
S222:事后審核數(shù)據(jù)接口將上傳數(shù)據(jù)解壓解密,解析出驗證信息,將驗證信息與審核服務注冊信息進行對比驗證,如果驗證通過,則進入步驟S223;否則,事后審核數(shù)據(jù)接口將審核服務受限提示信息返回審核請求方;
S223:事后審核數(shù)據(jù)接口解析審核要求,如果審核要求解析成功,則任務管理子單元創(chuàng)建審核任務、初始化審核任務、綁定請求方信息、設置審核要求,設置任務狀態(tài)為審核數(shù)據(jù)待解析,并進入步驟S224;否則,事后審核數(shù)據(jù)接口將錯誤信息返回給審核請求方,線程結束并將線程返還線程池;
S224:事后審核數(shù)據(jù)接口基于業(yè)務數(shù)據(jù)結構解析業(yè)務數(shù)據(jù),如果解析業(yè)務數(shù)據(jù)成功,事后審核數(shù)據(jù)接口將業(yè)務數(shù)據(jù)轉換為業(yè)務JavaBean對象,業(yè)務JavaBean對象綁定審核任務號,保存到內存緩存,將審核任務掛載到待審核隊列,更改任務狀態(tài)為待審核,轉入事后審核引擎進行業(yè)務審核,返回審核任務號給審核請求方,線程結束并將線程返還線程池,進入步驟S225;否則,更改任務狀態(tài)為審核數(shù)據(jù)解析失敗,將錯誤信息返回給審核請求方,線程結束并將線程返還線程池;
S225:事后審核引擎的審核組件、組裝組件、結果傳回組件和備份組件分別對對應隊列進行處理:
(1)審核組件監(jiān)聽待審核隊列是否有待審核任務,當監(jiān)聽到待審核隊列有待審核任務時,從隊頭取出待審核任務,取出后從線程池取出空閑的線程執(zhí)行待審核任務,任務管理子單元更改審核任務狀態(tài)為審核中,事后審核引擎根據(jù)審核任務的審核要求,從編譯后的業(yè)務規(guī)則庫提取本次審核涉及的業(yè)務規(guī)則包;基于提取的業(yè)務規(guī)則包,創(chuàng)建審核會話,根據(jù)任務號從內存緩存中提取業(yè)務JavaBean對象,將業(yè)務JavaBean對象加載到審核會話中,執(zhí)行審核會話;審核會話結束后,審核結果綁定任務號,保存到內存緩存,更改審核任務狀態(tài)為待組裝,將審核任務掛載到待組裝隊列,線程結束并將線程返還線程池;
(2)組裝組件監(jiān)聽待組裝隊列是否有待組裝的任務,當監(jiān)聽到待組裝隊列有待組裝任務,從隊頭取出待組裝任務,取出后從線程池取出空閑的線程執(zhí)行待組裝任務,更改審核任務狀態(tài)為組裝中,根據(jù)任務號從內存緩存中提取出審核結果,按返回結果標準格式組裝審核結果,組裝完成后,綁定任務號,將組裝結果保存到內存緩存,更改審核任務狀態(tài)為待傳回,將審核任務掛載到待傳回隊列,線程結束并將線程返還線程池;
(3)結果傳回組件監(jiān)聽待傳回隊列是否有待傳回任務,當監(jiān)聽到待傳回隊列有待傳回任務,從隊頭取出待傳回任務,取出后從線程池取出空閑的線程執(zhí)行待傳回任務,更改審核任務狀態(tài)為傳回中,根據(jù)任務號從內存緩存中提取組裝結果,事后審核數(shù)據(jù)接口根據(jù)審核任務綁定的請求方地址,將組裝結果加密壓縮,發(fā)送給請求方,發(fā)送成功后,更改審核任務狀態(tài)為待備份,將審核任務掛載到待備份隊列,線程結束并將線程返還線程池;
(4)備份組件監(jiān)聽待備份隊列是否有待備份任務,當監(jiān)聽到待備份隊列有待備份任務,從隊頭取出待備份任務,取出后從線程池取出空閑的線程執(zhí)行待備份任務,更改審核任務狀態(tài)為備份中,將內存緩存中和該審核任務有關的所有數(shù)據(jù)持久化,保存到數(shù)據(jù)庫,保存完成后,清除內存緩存中該審核任務的所有數(shù)據(jù),降低內存緩存壓力,更改審核任務狀態(tài)為審核成功,線程結束并將線程返還線程池。
本發(fā)明的有益效果是:
(1)實現(xiàn)平臺審核領域通用化,審核領域不局限于特定領域(財務報銷、行政審批等),審核平臺運行時的審核領域,是用戶從項目庫中選擇的一個實例化項目涉及的領域,因為項目庫可以包含多個領域的實例化項目,因此本審核平臺方案支持多個審核領域,實現(xiàn)了審核領域通用化。
(2)業(yè)務數(shù)據(jù)無關性,審核平臺開發(fā)時不關心實際處理的業(yè)務數(shù)據(jù),解決現(xiàn)有技術在開發(fā)時已經默認設置需要處理的業(yè)務數(shù)據(jù)結構,部署后只能解析與默認設置的業(yè)務數(shù)據(jù)結構相對應的業(yè)務數(shù)據(jù),突出審核平臺處理業(yè)務數(shù)據(jù)范圍的局限性,導致這種審核平臺存在缺陷的問題。
(3)業(yè)務審核邏輯無關性,審核平臺部署時不關心實際處理的業(yè)務審核邏輯,解決現(xiàn)有技術需要在開發(fā)時確定具體的業(yè)務審核邏輯,并在開發(fā)過程中固化在代碼里,大大降低了系統(tǒng)的擴展性和靈活性的問題。
(4)支持不同的審核應用場景,本審核平臺支持事中審核和事后審核兩種審核方式。業(yè)務審核方式根據(jù)實時性、響應速度和數(shù)據(jù)量的不同審核要求,相應處理方式也應不同。
附圖說明
圖1為審核平臺模塊層級結構示意圖;
圖2為項目構建模塊基于B/S架構的示意圖;
圖3為實例化項目示意圖;
圖4為項目庫結構及審核平臺實現(xiàn)方案示意圖;
圖5為業(yè)務規(guī)則庫單元示意圖;
圖6為規(guī)則流的業(yè)務流程圖組織結構圖;
圖7為事中審核流程圖;
圖8為事后審核流程圖。
具體實施方式
下面結合附圖進一步詳細描述本發(fā)明的技術方案:
實施例1的審核平臺由項目構建模塊和智能審核模塊兩部分構成,其中,項目構建模塊實現(xiàn)審核領域通用化,為智能審核執(zhí)行審核任務提供支持;智能審核模塊實現(xiàn)業(yè)務數(shù)據(jù)審核,提供可選的審核應用場景。本實施例的模塊層級結構如圖1所示。
如圖2所示,在本實施例中,項目構建模塊是基于B/S架構,用戶通過終端瀏覽器登錄智能審核平臺,管理項目庫;采用該實施例的方式,使得用戶可以快速管理項目庫。在另外一個實施例中,項目構建模塊是基于C/S架構,用戶通過終端安裝對應客戶端后登錄智能審核平臺,管理項目庫。
項目構建實現(xiàn)平臺審核領域通用化,審核領域不局限于特定領域(財務報銷、行政審批等),審核平臺運行時的審核領域,是用戶從項目庫中選擇的一個實例化項目涉及的領域,因為項目庫可以包含多個領域的實例化項目,因此本審核平臺方案支持多個審核領域,實現(xiàn)了審核領域通用化。
項目構建模塊負責管理項目庫,如圖4所示,項目庫由零或多個實例化項目組成。
如圖3所示,實例化項目由業(yè)務數(shù)據(jù)單元、業(yè)務數(shù)據(jù)庫單元、業(yè)務JavaBean單元和業(yè)務規(guī)則庫單元組成。具體地:
業(yè)務數(shù)據(jù)單元管理業(yè)務數(shù)據(jù)結構。其中,業(yè)務數(shù)據(jù)結構由數(shù)據(jù)表信息和字段信息組成,為解析審核請求方上傳JSON數(shù)據(jù)包提供解析方案,為業(yè)務數(shù)據(jù)庫單元、業(yè)務JavaBean單元和業(yè)務規(guī)則庫單元管理提供支持。
業(yè)務數(shù)據(jù)庫單元基于業(yè)務數(shù)據(jù)結構,管理業(yè)務數(shù)據(jù)庫,為持久化審核數(shù)據(jù)提供物理存儲支持。
業(yè)務JavaBean單元基于業(yè)務數(shù)據(jù)結構,管理業(yè)務JavaBean集。當審核請求到達時,為審核數(shù)據(jù)轉換為實例化業(yè)務JavaBean對象提供支持。通過這種轉換操作,審核平臺可以操作審核數(shù)據(jù),完成審核過程中的數(shù)據(jù)處理操作。
業(yè)務規(guī)則庫單元將實例化項目的業(yè)務審核邏輯轉換為Drools規(guī)則引擎能夠識別的規(guī)則和規(guī)則流。當審核平臺進行業(yè)務數(shù)據(jù)審核時,會依照用戶定義的規(guī)則或規(guī)則流對審核數(shù)據(jù)進行審核。
在本實施例中,對項目庫管理包括實例化項目添加、修改、查看和刪除。
具體地,對于實例化項目添加:
在本實施例中,首先在實例化項目添加模板指導下,添加項目名、項目編號、項目介紹、業(yè)務數(shù)據(jù)庫賬號和密碼等基本信息。
其中,項目編號作為審核平臺區(qū)分實例化項目標識,由英文、數(shù)字和下劃線組成,且第一個位置為英文;業(yè)務數(shù)據(jù)庫賬號和密碼,在提交添加申請后,在數(shù)據(jù)庫創(chuàng)建對應的數(shù)據(jù)庫賬號,創(chuàng)建的數(shù)據(jù)庫賬號作為實例化項目的業(yè)務數(shù)據(jù)庫,存儲實例化項目的業(yè)務數(shù)據(jù)。
當實例化項目添加成功后,進入實例化項目管理。實例化項目管理包括業(yè)務數(shù)據(jù)模塊、業(yè)務數(shù)據(jù)庫模塊、業(yè)務JavaBean模塊和業(yè)務規(guī)則模塊。
對于添加業(yè)務數(shù)據(jù)結構,需要分別對數(shù)據(jù)表信息和字段信息進行添加:
在數(shù)據(jù)表信息添加模板指導下,添加數(shù)據(jù)表信息,數(shù)據(jù)表信息包括數(shù)據(jù)表名、數(shù)據(jù)表編號、數(shù)據(jù)表介紹和生成標志,其中:
數(shù)據(jù)表名為中文,為該數(shù)據(jù)表的中文名;
數(shù)據(jù)表介紹為中文,詳細介紹該數(shù)據(jù)表;
生成標志表示該數(shù)據(jù)表信息是否生成對應業(yè)務JavaBean,是否在數(shù)據(jù)庫中生成對應業(yè)務數(shù)據(jù)表;
數(shù)據(jù)表編號由英文、數(shù)字和下劃線組成,且第一個位置為英文,作為業(yè)務數(shù)據(jù)表的表名和業(yè)務JavaBean的類名。
在數(shù)據(jù)表信息添加完成后,在字段信息添加模板指導下,添加該業(yè)務數(shù)據(jù)結構的所有字段信息,字段信息包括字段名、字段描述、字段編號、字段數(shù)據(jù)類型和大小、主鍵標志、可空標識、缺省值和關心標識,其中:
字段名為中文,為該字段的中文名;
字段描述為中文,詳細介紹該字段;
字段編號作為業(yè)務數(shù)據(jù)表的字段名和業(yè)務JavaBean的類成員變量名,由英文、數(shù)字和下劃線組成,且第一個位置為英文;
字段數(shù)據(jù)類型和大小對應數(shù)據(jù)庫的字段數(shù)據(jù)類型和大小,比如varchar2(40)、number(10)和number(8,2)等,作為業(yè)務數(shù)據(jù)表該字段的數(shù)據(jù)類型和大小;根據(jù)與Java數(shù)據(jù)類型對應關系,作為業(yè)務JavaBean中該類成員變量的數(shù)據(jù)類型;
主鍵標志表示該字段在業(yè)務數(shù)據(jù)表中是否為主鍵;
可空標識表示該字段在業(yè)務數(shù)據(jù)表中是否可以為空;
缺省值表示該字段為空時的缺省值;
關心標識表示該字段是否為關心數(shù)據(jù),在業(yè)務審核時,當該數(shù)據(jù)表數(shù)據(jù)觸發(fā)了業(yè)務規(guī)則,需要將為關心數(shù)據(jù)的字段數(shù)據(jù)拼接在審核結果,返回給審核請求方。
在本實施例中,當業(yè)務數(shù)據(jù)結構的所有字段信息添加完成后,業(yè)務數(shù)據(jù)模塊為該業(yè)務數(shù)據(jù)結構添加任務編號字段和任務數(shù)據(jù)索引字段,其中:
任務編號字段記錄該條數(shù)據(jù)屬于哪個審核任務,將數(shù)據(jù)以任務編號進行聚類區(qū)分;
任務數(shù)據(jù)索引字段標識該條數(shù)據(jù)是審核任務的哪一條業(yè)務數(shù)據(jù),便于區(qū)分定位審核任務的業(yè)務數(shù)據(jù)。
任務編號字段和任務數(shù)據(jù)索引字段對于用戶不可見,為審核平臺內部操作所需,每個業(yè)務數(shù)據(jù)結構添加時都會自動生成這兩個字段。
完成任務編號字段和任務數(shù)據(jù)索引字段自動生成后,業(yè)務數(shù)據(jù)模塊會將該業(yè)務數(shù)據(jù)結構的數(shù)據(jù)表信息和字段信息進行關聯(lián),通過對每個字段信息綁定數(shù)據(jù)表編號,將該業(yè)務數(shù)據(jù)結構的數(shù)據(jù)表信息和字段信息關聯(lián)起來。
經過上述一系列操作后,業(yè)務數(shù)據(jù)結構添加完成。
在添加業(yè)務數(shù)據(jù)結構過程中,可能存在數(shù)據(jù)表信息和字段信息的修改和刪除。在沒有生成對應業(yè)務數(shù)據(jù)表和業(yè)務JavaBean的條件下,實現(xiàn)流程如信息系統(tǒng)的修改和刪除流程。
實例化項目可能包括多個業(yè)務數(shù)據(jù)結構,每個業(yè)務數(shù)據(jù)結構的添加流程如上所述。
在完成業(yè)務數(shù)據(jù)結構構建的前提下,業(yè)務數(shù)據(jù)庫模塊、業(yè)務JavaBean集模塊和業(yè)務規(guī)則庫模塊的構建順序沒有關聯(lián),任意順序進行。
在本實施例中,在業(yè)務數(shù)據(jù)結構成功添加前提下,業(yè)務數(shù)據(jù)庫模塊根據(jù)該業(yè)務數(shù)據(jù)結構的數(shù)據(jù)表編號和與該數(shù)據(jù)表編號綁定的字段信息,其中字段信息包括字段編號、字段數(shù)據(jù)類型和大小、主鍵標志、可空標識、缺省值,構造創(chuàng)建數(shù)據(jù)表SQL語句。構成完成后,在實例化項目業(yè)務數(shù)據(jù)庫中執(zhí)行構造的SQL語句,完成業(yè)務數(shù)據(jù)表創(chuàng)建,更新該業(yè)務數(shù)據(jù)結構數(shù)據(jù)表信息的生成標志,表明業(yè)務數(shù)據(jù)表已生成。
業(yè)務數(shù)據(jù)庫模塊將實例化項目的所有業(yè)務數(shù)據(jù)結構一一生成對應的業(yè)務數(shù)據(jù)表,構建業(yè)務數(shù)據(jù)庫。
在本實施例中,在業(yè)務數(shù)據(jù)結構成功添加前提下,業(yè)務JavaBean模塊根據(jù)該業(yè)務數(shù)據(jù)結構的數(shù)據(jù)表編號和與該數(shù)據(jù)表編號綁定的字段信息,其中字段信息包括字段編號、字段數(shù)據(jù)類型和大小,構造對應業(yè)務JavaBean的java文件。
構造方案為:數(shù)據(jù)表編號經過駝峰命名法處理后,將首字母大寫,作為類名。字段編號經過駝峰命名法處理后,作為類成員變量名,根據(jù)字段數(shù)據(jù)類型和大小確定類成員變量的數(shù)據(jù)類型,比如number(4)為Integer,number(10)為Long,varchar2為String等。
完成構造類成員變量后,為每個類成員變量構造對應的get和set存取方法。如類成員變量 userName 的存取方法為 setUserName和getUserName。
業(yè)務JavaBean的java文件構造完成后,使用java語言編程編譯器javac將java文件編譯生成class文件,更新該業(yè)務數(shù)據(jù)結構數(shù)據(jù)表信息的生成標志,表明業(yè)務JavaBean已生成。審核平臺啟動時將生成的class文件加載到JVM,可以將上傳的審核數(shù)據(jù)轉換為實例化JavaBean對象,使平臺能夠在JVM中操作審核數(shù)據(jù),同時審核數(shù)據(jù)JavaBean對象能插入審核會話中,作為審核引擎Work Memory中fact對象,去匹配業(yè)務規(guī)則進行審核。
業(yè)務JavaBean模塊將實例化項目的所有業(yè)務數(shù)據(jù)結構一一生成對應的業(yè)務JavaBean,構建業(yè)務JavaBean集。
在本實施例中,完成實例化項目的業(yè)務數(shù)據(jù)結構添加后,添加業(yè)務規(guī)則庫。
如圖5所示,基于Drools規(guī)則引擎的業(yè)務規(guī)則分為規(guī)則和規(guī)則流。
其中,規(guī)則的結構如下:
rule "name" --規(guī)則名
attributes --屬性部分
when
LHS --條件部分
then RHS --結果部分
end
規(guī)則通常包括三個部分: 屬性部分(attribute)、條件部分(LHS)和結果部分(RHS)。
屬性部分(attribute): 定義當前規(guī)則執(zhí)行的一些屬性等,比如是否可被重復執(zhí)行、過期時間、生效時間等。
條件部分(LHS): 定義當前規(guī)則的條件,條件可以是單個, 也可以有多個。業(yè)務數(shù)據(jù)結構為條件部分構建提供支持。
結果部分(RHS): 定義滿足當前條件部分后執(zhí)行的操作。業(yè)務數(shù)據(jù)結構為結果部分構建提供支持。
如圖6所示,規(guī)則流基于業(yè)務流程圖實現(xiàn)。業(yè)務流程圖描述了一系列需要執(zhí)行的審核業(yè)務的順序,它由規(guī)則、條件分支和分支聚合三部分組成。
業(yè)務規(guī)則庫模塊負責管理業(yè)務規(guī)則庫,包括業(yè)務規(guī)則的添加、修改、查看和刪除。
在本實施例中,業(yè)務規(guī)則的添加/修改/查看/刪除:基于Web瀏覽器方式,用戶在業(yè)務規(guī)則添加模板指導下,添加/修改/查看/刪除規(guī)則或者規(guī)則流,提交添加/修改/查看/刪除后,審核平臺在規(guī)則庫中生成業(yè)務規(guī)則。
完成業(yè)務數(shù)據(jù)結構、業(yè)務數(shù)據(jù)庫、業(yè)務JavaBean集和業(yè)務規(guī)則庫添加后,實例化項目添加流程完成。
在本實施例中,對于實例化項目修改:
在實例化項目修改模板指導下,可以修改項目名和項目介紹,項目編號、業(yè)務數(shù)據(jù)庫賬號和密碼不能修改。
通過業(yè)務數(shù)據(jù)模塊修改業(yè)務數(shù)據(jù)結構,其中包括數(shù)據(jù)表信息修改和字段信息修改。
數(shù)據(jù)表信息的數(shù)據(jù)表名和數(shù)據(jù)表介紹可以修改,數(shù)據(jù)表編號和生成標志不能修改。
字段信息的字段名、字段描述和關心標識可以修改,不影響業(yè)務數(shù)據(jù)庫和業(yè)務JavaBean集。
字段信息的字段編號不能修改,字段數(shù)據(jù)類型和大小、主鍵標志、可空標識和缺省值可以修改。
當字段數(shù)據(jù)類型和大小被修改時,會觸發(fā)業(yè)務數(shù)據(jù)庫模塊修改業(yè)務數(shù)據(jù)庫和業(yè)務JavaBean模塊修改業(yè)務JavaBean集。
當主鍵標志、可空標識和缺省值被修改時,會觸發(fā)業(yè)務數(shù)據(jù)庫模塊修改業(yè)務數(shù)據(jù)庫。
對于字段數(shù)據(jù)類型和大小、可空標識和缺省值被修改的情況,業(yè)務數(shù)據(jù)庫模塊根據(jù)綁定的數(shù)據(jù)表編號和字段編號,獲取最新的字段數(shù)據(jù)類型和大小、可空標識和缺省值,然后構造修改數(shù)據(jù)庫字段SQL語句,在實例化項目業(yè)務數(shù)據(jù)庫執(zhí)行構造的SQL語句,完成對應業(yè)務數(shù)據(jù)表修改。
對于主鍵標志被修改的情況,業(yè)務數(shù)據(jù)庫模塊根據(jù)綁定的數(shù)據(jù)表編號遍歷其綁定的字段信息,查詢出所有為主鍵的字段編號,構造創(chuàng)建主鍵SQL語句,在實例化項目業(yè)務數(shù)據(jù)庫先執(zhí)行刪除已有主鍵操作,再執(zhí)行構造的SQL語句,完成對應業(yè)務數(shù)據(jù)表主鍵修改。
對于字段數(shù)據(jù)類型和大小被修改的情況,業(yè)務JavaBean模塊根據(jù)綁定的數(shù)據(jù)表編號和與該數(shù)據(jù)表編號綁定的字段信息,其中字段信息包括字段編號、字段數(shù)據(jù)類型和大小,構造對應業(yè)務JavaBean的java文件,構造方案如上文。java文件構造完成后,覆蓋替換已有的java文件,使用java語言編程編譯器javac將新的java文件編譯生成新的class文件,覆蓋替換已有的class文件。
業(yè)務規(guī)則庫可以通過業(yè)務規(guī)則模塊修改。
在本實施例中,對于實例化項目修改:
發(fā)起實例化項目刪除后,審核平臺會把所有和該項目有關的數(shù)據(jù)刪除,包括項目信息、業(yè)務數(shù)據(jù)結構、業(yè)務規(guī)則庫、業(yè)務JavaBean集和業(yè)務數(shù)據(jù)庫等。注銷業(yè)務數(shù)據(jù)庫賬號。
項目構建的核心操作如上所述。
平臺審核領域通用化實現(xiàn)方案如圖4所示,審核平臺啟動時根據(jù)用戶配置信息,從項目庫中選擇一個實例化項目部署啟動。
智能審核有事中審核和事后審核兩種審核方式。
事中審核適用于實時性要求高、響應速度快、數(shù)據(jù)量小的審核任務,由第一審核數(shù)據(jù)接口、第一任務管理和事中審核引擎組成。其中:第一審核數(shù)據(jù)接口負責管理審核平臺和審核請求方之間的數(shù)據(jù)通信,包括監(jiān)聽審核請求、解析審核請求和審核結果傳回等;第一任務管理負責維護任務表、創(chuàng)建審核任務、更改任務狀態(tài)和結束審核任務等,所有審核任務信息記錄在任務表中,便于審核平臺管理審核任務;事中審核引擎負責處理事中審核,包括業(yè)務數(shù)據(jù)審核、審核結果組裝和審核任務持久化。
事中審核引擎包括業(yè)務數(shù)據(jù)審核組件、審核結果組裝組件和審核任務持久化組件。其中,業(yè)務數(shù)據(jù)審核組件審核業(yè)務數(shù)據(jù);審核結果組裝組件按返回結果標準格式組裝審核結果;核任務持久化組件將審核任務信息、業(yè)務數(shù)據(jù)和審核結果等持久化到物理數(shù)據(jù)庫。
在本實施例中,事中審核的審核流程是一個非流水線方式,線性執(zhí)行,同步過程。事中審核流程如圖7所示:
S11:審核請求方將驗證信息、審核要求和業(yè)務數(shù)據(jù)封裝成JSON數(shù)據(jù),然后加密壓縮,設置為接口輸入數(shù)據(jù),調用事中審核接口發(fā)起請求,審核請求通過Internet傳輸?shù)綄徍似脚_。
S12:第一審核數(shù)據(jù)接口捕獲到審核請求,將上傳數(shù)據(jù)解壓解密,解析出驗證信息,將驗證信息與審核服務注冊信息進行對比驗證:如果驗證通過,進入步驟S13;如果驗證不通過,第一審核數(shù)據(jù)接口返回審核服務受限提示信息,并結束。
S13:第一審核數(shù)據(jù)接口解析審核要求:如果審核要求解析成功,第一任務管理創(chuàng)建審核任務,初始化審核任務,綁定請求方信息,設置審核要求,并進入步驟S14;如果審核要求解析不成功,第一審核數(shù)據(jù)接口將錯誤信息返回請求方。
S14:第一審核數(shù)據(jù)接口基于業(yè)務數(shù)據(jù)結構解析業(yè)務數(shù)據(jù),如果業(yè)務數(shù)據(jù)解析成功,數(shù)據(jù)接口將業(yè)務數(shù)據(jù)轉換為實例化業(yè)務JavaBean對象,轉入事中審核引擎進行業(yè)務審核即步驟S15;反之第一任務管理注銷審核任務,第一審核數(shù)據(jù)接口將錯誤信息返回請求方;
S15:事中審核引擎根據(jù)審核任務的審核要求,從編譯后的業(yè)務規(guī)則庫提取本次審核涉及的業(yè)務規(guī)則包?;谔崛〉臉I(yè)務規(guī)則包,創(chuàng)建審核會話,將業(yè)務數(shù)據(jù)JavaBean對象加載到審核會話中,執(zhí)行審核會話。
S16:審核會話結束后,按返回結果標準格式組裝審核結果,組裝完成后,第一審核數(shù)據(jù)接口根據(jù)審核任務綁定的請求方的地址,將組裝結果加密壓縮,發(fā)送給審核請求方。發(fā)送成功后,將審核相關數(shù)據(jù)和審核任務信息備份到數(shù)據(jù)庫,實現(xiàn)審核任務持久化,第一任務管理更改任務審核狀態(tài)為審核成功,審核線程結束并將審核線程返還線程池,整個事中審核完成。
事后審核適用于實時性要求低、響應速度較快、數(shù)據(jù)量大的審核任務,由第二審核數(shù)據(jù)接口、第二任務管理和事后審核引擎組成。
其中:第二審核數(shù)據(jù)接口負責管理審核平臺和審核請求方之間的數(shù)據(jù)通信,包括監(jiān)聽審核請求、解析審核請求和審核結果傳回等;第二任務管理負責維護任務表、創(chuàng)建審核任務、更改任務狀態(tài)和結束審核任務等,所有審核任務信息記錄在任務表中,便于審核平臺管理審核任務;事中審核引擎負責處理事中審核,包括業(yè)務數(shù)據(jù)審核、審核結果組裝和審核任務持久化。
事后審核引擎包括業(yè)務數(shù)據(jù)審核組件、審核結果組裝組件、結果傳回組件和審核任務持久化組件。其中,業(yè)務數(shù)據(jù)審核組件審核業(yè)務數(shù)據(jù);審核結果組裝組件按返回結果標準格式組裝審核結果;結果傳回組件基于第二審核數(shù)據(jù)接口,將組裝的審核結果傳回審核請求方;任務持久化組件將審核任務信息、業(yè)務數(shù)據(jù)和審核結果等持久化到物理數(shù)據(jù)庫。
在本實施例中,事后審核的審核流程是一個流水線方式,并行執(zhí)行,異步過程。具體流程如圖8所示:
S201:審核請求方將驗證信息、審核要求和業(yè)務數(shù)據(jù)封裝成JSON數(shù)據(jù),加密壓縮,設置為接口輸入數(shù)據(jù),調用事后審核接口發(fā)起請求,審核請求通過Internet傳輸?shù)綄徍似脚_。
S202:第二審核數(shù)據(jù)接口模塊捕獲到審核請求,將上傳數(shù)據(jù)解壓解密,解析出驗證信息,將驗證信息與審核服務注冊信息進行對比驗證:驗證通過,則進入步驟S203;否則,驗證不通過,數(shù)據(jù)接口返回訪問審核服務受限提示信息;
S203:第二審核數(shù)據(jù)接口解析審核要求:如果審核要求解析成功,任務管理創(chuàng)建審核任務,初始化審核任務,綁定請求方信息,設置審核要求,設置任務狀態(tài)為審核數(shù)據(jù)待解析,并進入步驟S204;反之數(shù)據(jù)接口將錯誤信息返回給請求方,線程結束并將線程返還線程池。
S204:第二審核數(shù)據(jù)接口基于業(yè)務數(shù)據(jù)結構解析業(yè)務數(shù)據(jù):如果解析業(yè)務數(shù)據(jù)成功,第二審核數(shù)據(jù)接口將業(yè)務數(shù)據(jù)轉換為業(yè)務JavaBean對象,業(yè)務JavaBean對象綁定審核任務號,保存到內存緩存,將審核任務掛載到待審核隊列,更改任務狀態(tài)為待審核,轉入事后審核引擎進行業(yè)務審核,返回審核任務號給審核請求方(便于審核請求方查看、管理審核任務進程),線程結束并將線程返還線程池,并進入步驟S205;反之,更改任務狀態(tài)為審核數(shù)據(jù)解析失敗,將錯誤信息返回給請求方,線程結束并將線程返還線程池。
S205:事后審核引擎的業(yè)務數(shù)據(jù)審核組件、審核結果組裝組件、結果傳回組件和審核任務持久化組件分別對對應隊列進行處理:
(1)業(yè)務數(shù)據(jù)審核組件監(jiān)聽待審核隊列是否有待審核任務,當監(jiān)聽到待審核隊列有待審核任務時,從隊頭取出待審核任務,取出后從線程池取出空閑的線程執(zhí)行待審核任務,第二任務管理更改審核任務狀態(tài)為審核中,事后審核引擎根據(jù)審核任務的審核要求,從編譯后的業(yè)務規(guī)則庫提取本次審核涉及的業(yè)務規(guī)則包。基于提取的業(yè)務規(guī)則包,創(chuàng)建審核會話,根據(jù)任務號從內存緩存中提取業(yè)務JavaBean對象,將業(yè)務JavaBean對象加載到審核會話中,執(zhí)行審核會話。審核會話結束后,審核結果綁定任務號,保存到內存緩存,更改審核任務狀態(tài)為待組裝,將審核任務掛載到待組裝隊列,線程結束并將線程返還線程池。
(2)審核結果組裝組件監(jiān)聽待組裝隊列是否有待組裝的任務,當監(jiān)聽到待組裝隊列有待組裝任務,從隊頭取出待組裝任務,取出后從線程池取出空閑的線程執(zhí)行待組裝任務,更改審核任務狀態(tài)為組裝中,根據(jù)任務號從內存緩存中提取出審核結果,按返回結果標準格式組裝審核結果,組裝完成后,綁定任務號,將組裝結果保存到內存緩存,更改審核任務狀態(tài)為待傳回,將審核任務掛載到待傳回隊列,線程結束并將線程返還線程池。
(3)結果傳回組件監(jiān)聽待傳回隊列是否有待傳回任務,當監(jiān)聽到待傳回隊列有待傳回任務,從隊頭取出待傳回任務,取出后從線程池取出空閑的線程執(zhí)行待傳回任務,更改審核任務狀態(tài)為傳回中,根據(jù)任務號從內存緩存中提取組裝結果,數(shù)據(jù)接口模塊根據(jù)審核任務綁定的請求方地址,將組裝結果加密壓縮,發(fā)送給請求方,發(fā)送成功后,更改審核任務狀態(tài)為待備份,將審核任務掛載到待備份隊列,線程結束并將線程返還線程池。
(4)審核任務持久化組件監(jiān)聽待備份隊列是否有待備份任務,當監(jiān)聽到待備份隊列有待備份任務,從隊頭取出待備份任務,取出后從線程池取出空閑的線程執(zhí)行待備份任務,更改審核任務狀態(tài)為備份中,將內存緩存中和該審核任務有關的所有數(shù)據(jù)持久化,保存到數(shù)據(jù)庫,保存完成后,清除內存緩存中該審核任務的所有數(shù)據(jù),降低內存緩存壓力,更改審核任務狀態(tài)為審核成功,線程結束并將線程返還線程池,整個事后審核完成。
醫(yī)療保險報銷審核,比如病人一次住院產生的所有費用報銷審核,首先審核數(shù)據(jù)量大,允許秒級審核時間,對實時性要求不高,可以采用事后審核方式執(zhí)行審核。業(yè)務辦理審核,比如在柜臺辦理業(yè)務申請時,首先需要審核業(yè)務申請者是否具有辦理該業(yè)務的資格,然后才能進入業(yè)務辦理流程,這種實時性高、響應速度快、數(shù)據(jù)量小的審核應用場景,可以采用事中審核方式執(zhí)行審核。