本發(fā)明涉及互聯(lián)網(wǎng)技術(shù)領(lǐng)域,具體而言,涉及一種基于元數(shù)據(jù)的OpenAPI實(shí)現(xiàn)方法和一種基于元數(shù)據(jù)的OpenAPI實(shí)現(xiàn)裝置。
背景技術(shù):
ERP(Enterprise Resource Planning,企業(yè)資源計(jì)劃)產(chǎn)品在互聯(lián)網(wǎng)化轉(zhuǎn)型的過(guò)程中,需要將原有的功能作為OpenAPI開(kāi)放出來(lái),以向外部系統(tǒng)提供API(Application Programming Interface,應(yīng)用編程接口)服務(wù)。
目前的普遍做法是,將ERP產(chǎn)品中的每個(gè)業(yè)務(wù)模塊的原有功能重新開(kāi)發(fā)為OpenAPI,由于ERP產(chǎn)品業(yè)務(wù)復(fù)雜、模塊繁多,因此將每個(gè)業(yè)務(wù)模塊都重新開(kāi)發(fā)為OpenAPI的實(shí)現(xiàn)難度非常大且十分耗時(shí),無(wú)法滿(mǎn)足企業(yè)對(duì)OpenAPI的需求。
技術(shù)實(shí)現(xiàn)要素:
本發(fā)明正是基于上述技術(shù)問(wèn)題至少之一,提出了一種新的基于元數(shù)據(jù)的OpenAPI實(shí)現(xiàn)方案,極大地降低了OpenAPI的開(kāi)發(fā)工作量和實(shí)現(xiàn)難度,有利于滿(mǎn)足企業(yè)對(duì)OpenAPI的需求。
有鑒于此,根據(jù)本發(fā)明的第一方面,提出了一種基于元數(shù)據(jù)的OpenAPI實(shí)現(xiàn)方法,包括:基于對(duì)業(yè)務(wù)數(shù)據(jù)進(jìn)行統(tǒng)一描述的元數(shù)據(jù)生成公共API;接收調(diào)用方發(fā)送的針對(duì)業(yè)務(wù)數(shù)據(jù)的API調(diào)用請(qǐng)求;根據(jù)所述公共API和所述API調(diào)用請(qǐng)求查詢(xún)相應(yīng)的業(yè)務(wù)數(shù)據(jù),并響應(yīng)所述調(diào)用請(qǐng)求。
在該技術(shù)方案中,由于業(yè)務(wù)數(shù)據(jù)通常都是采用類(lèi)似的元數(shù)據(jù)形式,有著類(lèi)似的數(shù)據(jù)結(jié)構(gòu),因此通過(guò)基于對(duì)業(yè)務(wù)數(shù)據(jù)進(jìn)行統(tǒng)一描述的元數(shù)據(jù)生成公共API,使得能夠從元數(shù)據(jù)的角度來(lái)實(shí)現(xiàn)公共API,進(jìn)而根據(jù)公共API和調(diào)用方發(fā)送的API調(diào)用請(qǐng)求來(lái)查詢(xún)得到相應(yīng)的業(yè)務(wù)數(shù)據(jù),由于無(wú)需針對(duì)每個(gè)業(yè)務(wù)數(shù)據(jù)重新開(kāi)發(fā)OpenAPI,因此極大地降低了OpenAPI的開(kāi)發(fā)工作量和實(shí)現(xiàn)難度,有利于滿(mǎn)足企業(yè)對(duì)OpenAPI的需求。
在本發(fā)明的一個(gè)實(shí)施例中,在所述API調(diào)用請(qǐng)求中包含有需要訪(fǎng)問(wèn)的業(yè)務(wù)數(shù)據(jù)的類(lèi)名和查詢(xún)條件的情況下,根據(jù)所述公共API和所述API調(diào)用請(qǐng)求查詢(xún)相應(yīng)的業(yè)務(wù)數(shù)據(jù)的步驟,具體包括:
根據(jù)所述業(yè)務(wù)數(shù)據(jù)的類(lèi)名和所述公共API確定所述需要訪(fǎng)問(wèn)的業(yè)務(wù)數(shù)據(jù)的類(lèi)和相應(yīng)的資源路徑;
根據(jù)所述需要訪(fǎng)問(wèn)的業(yè)務(wù)數(shù)據(jù)的類(lèi)和相應(yīng)的資源路徑,以及所述查詢(xún)條件,查詢(xún)得到相應(yīng)的業(yè)務(wù)數(shù)據(jù)。
在該實(shí)施例中,由于ERP系統(tǒng)中所有的業(yè)務(wù)數(shù)據(jù)都是按照元數(shù)據(jù)描述的規(guī)則存儲(chǔ)的,因此在知曉業(yè)務(wù)數(shù)據(jù)的類(lèi)名之后,可以根據(jù)公共API來(lái)獲取與之相關(guān)的類(lèi)和資源路徑,進(jìn)而可以根據(jù)API調(diào)用請(qǐng)求中包含的查詢(xún)條件,以及需要訪(fǎng)問(wèn)的業(yè)務(wù)數(shù)據(jù)的類(lèi)和相應(yīng)的資源路徑來(lái)查詢(xún)得到相應(yīng)的業(yè)務(wù)數(shù)據(jù)。
在本發(fā)明的另一個(gè)實(shí)施例中,根據(jù)所述公共API和所述API調(diào)用請(qǐng)求查詢(xún)相應(yīng)的業(yè)務(wù)數(shù)據(jù)的步驟,具體包括:
根據(jù)所述公共API,以及每種業(yè)務(wù)數(shù)據(jù)對(duì)應(yīng)的類(lèi)名和資源路徑生成對(duì)應(yīng)于所述每種業(yè)務(wù)數(shù)據(jù)的查詢(xún)API;
在所述API調(diào)用請(qǐng)求是針對(duì)指定業(yè)務(wù)數(shù)據(jù)的API調(diào)用請(qǐng)求的情況下,根據(jù)所述API調(diào)用請(qǐng)求中包含的針對(duì)所述指定業(yè)務(wù)數(shù)據(jù)的查詢(xún)條件,以及所述指定業(yè)務(wù)數(shù)據(jù)對(duì)應(yīng)的查詢(xún)API,查詢(xún)得到相應(yīng)的業(yè)務(wù)數(shù)據(jù)。
在該實(shí)施例中,由于公共API是通用的API,因此通過(guò)根據(jù)公共API,以及每種業(yè)務(wù)數(shù)據(jù)對(duì)應(yīng)的類(lèi)名和資源路徑生成與每種業(yè)務(wù)數(shù)據(jù)對(duì)應(yīng)的查詢(xún)API,使得能夠基于公共API來(lái)快速的生成并發(fā)布每種業(yè)務(wù)數(shù)據(jù)對(duì)應(yīng)的OpenAPI,降低了OpenAPI的開(kāi)發(fā)工作量。同時(shí),由于是基于公共API來(lái)生成針對(duì)每種業(yè)務(wù)數(shù)據(jù)的查詢(xún)API,因此API調(diào)用請(qǐng)求中僅需要包含針對(duì)指定業(yè)務(wù)數(shù)據(jù)的查詢(xún)條件即可,進(jìn)而可以根據(jù)指定業(yè)務(wù)數(shù)據(jù)對(duì)應(yīng)的查詢(xún)API來(lái)查詢(xún)得到相應(yīng)的業(yè)務(wù)數(shù)據(jù)。
進(jìn)一步地,根據(jù)所述API調(diào)用請(qǐng)求中包含的針對(duì)所述指定業(yè)務(wù)數(shù)據(jù)的查詢(xún)條件,以及所述指定業(yè)務(wù)數(shù)據(jù)對(duì)應(yīng)的查詢(xún)API,查詢(xún)得到相應(yīng)的業(yè)務(wù)數(shù)據(jù)的步驟,具體包括:
根據(jù)所述指定業(yè)務(wù)數(shù)據(jù)對(duì)應(yīng)的查詢(xún)API,確定所述指定業(yè)務(wù)數(shù)據(jù)的類(lèi)和相應(yīng)的資源路徑;根據(jù)所述指定業(yè)務(wù)數(shù)據(jù)的類(lèi)和相應(yīng)的資源路徑,以及針對(duì)所述指定業(yè)務(wù)數(shù)據(jù)的查詢(xún)條件,查詢(xún)得到相應(yīng)的業(yè)務(wù)數(shù)據(jù)。
在該技術(shù)方案中,由于指定業(yè)務(wù)數(shù)據(jù)對(duì)應(yīng)的查詢(xún)API是根據(jù)公共API,以及該業(yè)務(wù)數(shù)據(jù)對(duì)應(yīng)的類(lèi)名和資源路徑生成的,因此可以根據(jù)指定業(yè)務(wù)數(shù)據(jù)對(duì)應(yīng)的查詢(xún)API來(lái)確定該業(yè)務(wù)數(shù)據(jù)的類(lèi)和相應(yīng)的資源路徑,進(jìn)而可以基于確定的業(yè)務(wù)數(shù)據(jù)的類(lèi)和相應(yīng)的資源路徑,以及API調(diào)用請(qǐng)求中包含的查詢(xún)條件來(lái)查詢(xún)得到相應(yīng)的業(yè)務(wù)數(shù)據(jù)。
在上述任一技術(shù)方案中,優(yōu)選地,所述的基于元數(shù)據(jù)的OpenAPI實(shí)現(xiàn)方法還包括:
配置用于對(duì)業(yè)務(wù)數(shù)據(jù)的類(lèi)進(jìn)行訪(fǎng)問(wèn)控制的黑名單和/或白名單,所述白名單包含有允許基于所述公共API訪(fǎng)問(wèn)的業(yè)務(wù)數(shù)據(jù)的類(lèi)名,所述黑名單包含有不允許基于所述公共API訪(fǎng)問(wèn)的業(yè)務(wù)數(shù)據(jù)的類(lèi)名;
根據(jù)所述黑名單和/或白名單,以及所述公共API和所述API調(diào)用請(qǐng)求查詢(xún)相應(yīng)的業(yè)務(wù)數(shù)據(jù)。
在該技術(shù)方案中,通過(guò)配置對(duì)業(yè)務(wù)數(shù)據(jù)的類(lèi)進(jìn)行訪(fǎng)問(wèn)控制的黑名單和/或白名單,以根據(jù)配置的黑名單和/或白名單,以及公共API和API調(diào)用請(qǐng)求查詢(xún)相應(yīng)的業(yè)務(wù)數(shù)據(jù),使得能夠根據(jù)需求靈活設(shè)置禁止訪(fǎng)問(wèn)的類(lèi)名和允許訪(fǎng)問(wèn)的類(lèi)名,以提高數(shù)據(jù)的安全性。
根據(jù)本發(fā)明的第二方面,還提出了一種基于元數(shù)據(jù)的OpenAPI實(shí)現(xiàn)裝置,包括:第一生成單元,用于基于對(duì)業(yè)務(wù)數(shù)據(jù)進(jìn)行統(tǒng)一描述的元數(shù)據(jù)生成公共API;接收單元,用于接收調(diào)用方發(fā)送的針對(duì)業(yè)務(wù)數(shù)據(jù)的API調(diào)用請(qǐng)求;處理單元,用于根據(jù)所述公共API和所述API調(diào)用請(qǐng)求查詢(xún)相應(yīng)的業(yè)務(wù)數(shù)據(jù),并響應(yīng)所述調(diào)用請(qǐng)求。
在該技術(shù)方案中,由于業(yè)務(wù)數(shù)據(jù)通常都是采用類(lèi)似的元數(shù)據(jù)形式,有著類(lèi)似的數(shù)據(jù)結(jié)構(gòu),因此通過(guò)基于對(duì)業(yè)務(wù)數(shù)據(jù)進(jìn)行統(tǒng)一描述的元數(shù)據(jù)生成公共API,使得能夠從元數(shù)據(jù)的角度來(lái)實(shí)現(xiàn)公共API,進(jìn)而根據(jù)公共API和調(diào)用方發(fā)送的API調(diào)用請(qǐng)求來(lái)查詢(xún)得到相應(yīng)的業(yè)務(wù)數(shù)據(jù),由于無(wú)需針對(duì)每個(gè)業(yè)務(wù)數(shù)據(jù)重新開(kāi)發(fā)OpenAPI,因此極大地降低了OpenAPI的開(kāi)發(fā)工作量和實(shí)現(xiàn)難度,有利于滿(mǎn)足企業(yè)對(duì)OpenAPI的需求。
在本發(fā)明的一個(gè)實(shí)施例中,在所述API調(diào)用請(qǐng)求中包含有需要訪(fǎng)問(wèn)的業(yè)務(wù)數(shù)據(jù)的類(lèi)名和查詢(xún)條件的情況下,所述處理單元包括:確定單元,用于根據(jù)所述業(yè)務(wù)數(shù)據(jù)的類(lèi)名和所述公共API確定所述需要訪(fǎng)問(wèn)的業(yè)務(wù)數(shù)據(jù)的類(lèi)和相應(yīng)的資源路徑;第一查詢(xún)單元,用于根據(jù)所述需要訪(fǎng)問(wèn)的業(yè)務(wù)數(shù)據(jù)的類(lèi)和相應(yīng)的資源路徑,以及所述查詢(xún)條件,查詢(xún)得到相應(yīng)的業(yè)務(wù)數(shù)據(jù)。
在該實(shí)施例中,由于ERP系統(tǒng)中所有的業(yè)務(wù)數(shù)據(jù)都是按照元數(shù)據(jù)描述的規(guī)則存儲(chǔ)的,因此在知曉業(yè)務(wù)數(shù)據(jù)的類(lèi)名之后,可以根據(jù)公共API來(lái)獲取與之相關(guān)的類(lèi)和資源路徑,進(jìn)而可以根據(jù)API調(diào)用請(qǐng)求中包含的查詢(xún)條件,以及需要訪(fǎng)問(wèn)的業(yè)務(wù)數(shù)據(jù)的類(lèi)和相應(yīng)的資源路徑來(lái)查詢(xún)得到相應(yīng)的業(yè)務(wù)數(shù)據(jù)。
在本發(fā)明的另一個(gè)實(shí)施例中,所述處理單元包括:第二生成單元,用于根據(jù)所述公共API,以及每種業(yè)務(wù)數(shù)據(jù)對(duì)應(yīng)的類(lèi)名和資源路徑生成對(duì)應(yīng)于所述每種業(yè)務(wù)數(shù)據(jù)的查詢(xún)API;第二查詢(xún)單元,用于在所述API調(diào)用請(qǐng)求是針對(duì)指定業(yè)務(wù)數(shù)據(jù)的API調(diào)用請(qǐng)求的情況下,根據(jù)所述API調(diào)用請(qǐng)求中包含的針對(duì)所述指定業(yè)務(wù)數(shù)據(jù)的查詢(xún)條件,以及所述指定業(yè)務(wù)數(shù)據(jù)對(duì)應(yīng)的查詢(xún)API,查詢(xún)得到相應(yīng)的業(yè)務(wù)數(shù)據(jù)。
在該實(shí)施例中,由于公共API是通用的API,因此通過(guò)根據(jù)公共API,以及每種業(yè)務(wù)數(shù)據(jù)對(duì)應(yīng)的類(lèi)名和資源路徑生成與每種業(yè)務(wù)數(shù)據(jù)對(duì)應(yīng)的查詢(xún)API,使得能夠基于公共API來(lái)快速的生成并發(fā)布每種業(yè)務(wù)數(shù)據(jù)對(duì)應(yīng)的OpenAPI,降低了OpenAPI的開(kāi)發(fā)工作量。同時(shí),由于是基于公共API來(lái)生成針對(duì)每種業(yè)務(wù)數(shù)據(jù)的查詢(xún)API,因此API調(diào)用請(qǐng)求中僅需要包含針對(duì)指定業(yè)務(wù)數(shù)據(jù)的查詢(xún)條件即可,進(jìn)而可以根據(jù)指定業(yè)務(wù)數(shù)據(jù)對(duì)應(yīng)的查詢(xún)API來(lái)查詢(xún)得到相應(yīng)的業(yè)務(wù)數(shù)據(jù)。
進(jìn)一步地,所述第二查詢(xún)單元具體用于:根據(jù)所述指定業(yè)務(wù)數(shù)據(jù)對(duì)應(yīng)的查詢(xún)API,確定所述指定業(yè)務(wù)數(shù)據(jù)的類(lèi)和相應(yīng)的資源路徑;根據(jù)所述指定業(yè)務(wù)數(shù)據(jù)的類(lèi)和相應(yīng)的資源路徑,以及針對(duì)所述指定業(yè)務(wù)數(shù)據(jù)的查詢(xún)條件,查詢(xún)得到相應(yīng)的業(yè)務(wù)數(shù)據(jù)。
在該技術(shù)方案中,由于指定業(yè)務(wù)數(shù)據(jù)對(duì)應(yīng)的查詢(xún)API是根據(jù)公共API,以及該業(yè)務(wù)數(shù)據(jù)對(duì)應(yīng)的類(lèi)名和資源路徑生成的,因此可以根據(jù)指定業(yè)務(wù)數(shù)據(jù)對(duì)應(yīng)的查詢(xún)API來(lái)確定該業(yè)務(wù)數(shù)據(jù)的類(lèi)和相應(yīng)的資源路徑,進(jìn)而可以基于確定的業(yè)務(wù)數(shù)據(jù)的類(lèi)和相應(yīng)的資源路徑,以及API調(diào)用請(qǐng)求中包含的查詢(xún)條件來(lái)查詢(xún)得到相應(yīng)的業(yè)務(wù)數(shù)據(jù)。
在上述任一技術(shù)方案中,優(yōu)選地,所述的基于元數(shù)據(jù)的OpenAPI實(shí)現(xiàn)裝置還包括:配置單元,配置用于對(duì)業(yè)務(wù)數(shù)據(jù)的類(lèi)進(jìn)行訪(fǎng)問(wèn)控制的黑名單和/或白名單,所述白名單包含有允許基于所述公共API訪(fǎng)問(wèn)的業(yè)務(wù)數(shù)據(jù)的類(lèi)名,所述黑名單包含有不允許基于所述公共API訪(fǎng)問(wèn)的業(yè)務(wù)數(shù)據(jù)的類(lèi)名;所述處理單元還用于,根據(jù)所述黑名單和/或白名單,以及所述公共API和所述API調(diào)用請(qǐng)求查詢(xún)相應(yīng)的業(yè)務(wù)數(shù)據(jù)。
在該技術(shù)方案中,通過(guò)配置對(duì)業(yè)務(wù)數(shù)據(jù)的類(lèi)進(jìn)行訪(fǎng)問(wèn)控制的黑名單和/或白名單,以根據(jù)配置的黑名單和/或白名單,以及公共API和API調(diào)用請(qǐng)求查詢(xún)相應(yīng)的業(yè)務(wù)數(shù)據(jù),使得能夠根據(jù)需求靈活設(shè)置禁止訪(fǎng)問(wèn)的類(lèi)名和允許訪(fǎng)問(wèn)的類(lèi)名,以提高數(shù)據(jù)的安全性。
通過(guò)以上技術(shù)方案,可以根據(jù)公共API和調(diào)用方發(fā)送的API調(diào)用請(qǐng)求來(lái)查詢(xún)得到相應(yīng)的業(yè)務(wù)數(shù)據(jù),無(wú)需針對(duì)每個(gè)業(yè)務(wù)數(shù)據(jù)重新開(kāi)發(fā)OpenAPI,極大地降低了OpenAPI的開(kāi)發(fā)工作量和實(shí)現(xiàn)難度,有利于滿(mǎn)足企業(yè)對(duì)OpenAPI的需求。
附圖說(shuō)明
圖1示出了根據(jù)本發(fā)明的實(shí)施例的基于元數(shù)據(jù)的OpenAPI實(shí)現(xiàn)方法的流程示意圖;
圖2示出了根據(jù)本發(fā)明的第一個(gè)實(shí)施例的基于元數(shù)據(jù)的OpenAPI實(shí)現(xiàn)裝置的結(jié)構(gòu)示意圖;
圖3示出了根據(jù)本發(fā)明的實(shí)施例的處理單元的第一種內(nèi)部結(jié)構(gòu)示意圖;
圖4示出了根據(jù)本發(fā)明的實(shí)施例的處理單元的第二種內(nèi)部結(jié)構(gòu)示意圖;
圖5示出了根據(jù)本發(fā)明的第二個(gè)實(shí)施例的基于元數(shù)據(jù)的OpenAPI實(shí)現(xiàn)裝置的結(jié)構(gòu)示意圖;
圖6示出了根據(jù)本發(fā)明的實(shí)施例的基于元數(shù)據(jù)的OpenAPI的整體實(shí)現(xiàn)原理示意圖;
圖7示出了根據(jù)本發(fā)明的實(shí)施例的網(wǎng)關(guān)適配器和ACC組件的處理流程示意圖。
具體實(shí)施方式
為了能夠更清楚地理解本發(fā)明的上述目的、特征和優(yōu)點(diǎn),下面結(jié)合附圖和具體實(shí)施方式對(duì)本發(fā)明進(jìn)行進(jìn)一步的詳細(xì)描述。需要說(shuō)明的是,在不沖突的情況下,本申請(qǐng)的實(shí)施例及實(shí)施例中的特征可以相互組合。
在下面的描述中闡述了很多具體細(xì)節(jié)以便于充分理解本發(fā)明,但是,本發(fā)明還可以采用其他不同于在此描述的其他方式來(lái)實(shí)施,因此,本發(fā)明的保護(hù)范圍并不受下面公開(kāi)的具體實(shí)施例的限制。
圖1示出了根據(jù)本發(fā)明的實(shí)施例的基于元數(shù)據(jù)的OpenAPI實(shí)現(xiàn)方法的流程示意圖。
如圖1所示,根據(jù)本發(fā)明的實(shí)施例的基于元數(shù)據(jù)的OpenAPI實(shí)現(xiàn)方法,包括:
步驟S10,基于對(duì)業(yè)務(wù)數(shù)據(jù)進(jìn)行統(tǒng)一描述的元數(shù)據(jù)生成公共API。
步驟S12,接收調(diào)用方發(fā)送的針對(duì)業(yè)務(wù)數(shù)據(jù)的API調(diào)用請(qǐng)求。
步驟S14,根據(jù)所述公共API和所述API調(diào)用請(qǐng)求查詢(xún)相應(yīng)的業(yè)務(wù)數(shù)據(jù),并響應(yīng)所述調(diào)用請(qǐng)求。
在圖1所示的技術(shù)方案中,由于業(yè)務(wù)數(shù)據(jù)通常都是采用類(lèi)似的元數(shù)據(jù)形式,有著類(lèi)似的數(shù)據(jù)結(jié)構(gòu),因此通過(guò)基于對(duì)業(yè)務(wù)數(shù)據(jù)進(jìn)行統(tǒng)一描述的元數(shù)據(jù)生成公共API,使得能夠從元數(shù)據(jù)的角度來(lái)實(shí)現(xiàn)公共API,進(jìn)而根據(jù)公共API和調(diào)用方發(fā)送的API調(diào)用請(qǐng)求來(lái)查詢(xún)得到相應(yīng)的業(yè)務(wù)數(shù)據(jù),由于無(wú)需針對(duì)每個(gè)業(yè)務(wù)數(shù)據(jù)重新開(kāi)發(fā)OpenAPI,因此極大地降低了OpenAPI的開(kāi)發(fā)工作量和實(shí)現(xiàn)難度,有利于滿(mǎn)足企業(yè)對(duì)OpenAPI的需求。
針對(duì)上述步驟S14,本發(fā)明具體提出了如下兩種實(shí)現(xiàn)方式:
方式一:
在API調(diào)用請(qǐng)求中包含有需要訪(fǎng)問(wèn)的業(yè)務(wù)數(shù)據(jù)的類(lèi)名和查詢(xún)條件的情況下,步驟S14具體包括:
根據(jù)所述業(yè)務(wù)數(shù)據(jù)的類(lèi)名和所述公共API確定所述需要訪(fǎng)問(wèn)的業(yè)務(wù)數(shù)據(jù)的類(lèi)和相應(yīng)的資源路徑;
根據(jù)所述需要訪(fǎng)問(wèn)的業(yè)務(wù)數(shù)據(jù)的類(lèi)和相應(yīng)的資源路徑,以及所述查詢(xún)條件,查詢(xún)得到相應(yīng)的業(yè)務(wù)數(shù)據(jù)。
具體來(lái)說(shuō),由于ERP系統(tǒng)中所有的業(yè)務(wù)數(shù)據(jù)都是按照元數(shù)據(jù)描述的規(guī)則存儲(chǔ)的,因此在知曉業(yè)務(wù)數(shù)據(jù)的類(lèi)名之后,可以根據(jù)公共API來(lái)獲取與之相關(guān)的類(lèi)和資源路徑,進(jìn)而可以根據(jù)API調(diào)用請(qǐng)求中包含的查詢(xún)條件,以及需要訪(fǎng)問(wèn)的業(yè)務(wù)數(shù)據(jù)的類(lèi)和相應(yīng)的資源路徑來(lái)查詢(xún)得到相應(yīng)的業(yè)務(wù)數(shù)據(jù)。
方式二:
步驟S14具體包括:
根據(jù)所述公共API,以及每種業(yè)務(wù)數(shù)據(jù)對(duì)應(yīng)的類(lèi)名和資源路徑生成對(duì)應(yīng)于所述每種業(yè)務(wù)數(shù)據(jù)的查詢(xún)API;
在所述API調(diào)用請(qǐng)求是針對(duì)指定業(yè)務(wù)數(shù)據(jù)的API調(diào)用請(qǐng)求的情況下,根據(jù)所述API調(diào)用請(qǐng)求中包含的針對(duì)所述指定業(yè)務(wù)數(shù)據(jù)的查詢(xún)條件,以及所述指定業(yè)務(wù)數(shù)據(jù)對(duì)應(yīng)的查詢(xún)API,查詢(xún)得到相應(yīng)的業(yè)務(wù)數(shù)據(jù)。
具體來(lái)說(shuō),由于公共API是通用的API,因此通過(guò)根據(jù)公共API,以及每種業(yè)務(wù)數(shù)據(jù)對(duì)應(yīng)的類(lèi)名和資源路徑生成與每種業(yè)務(wù)數(shù)據(jù)對(duì)應(yīng)的查詢(xún)API,使得能夠基于公共API來(lái)快速的生成并發(fā)布每種業(yè)務(wù)數(shù)據(jù)對(duì)應(yīng)的OpenAPI,降低了OpenAPI的開(kāi)發(fā)工作量。同時(shí),由于是基于公共API來(lái)生成針對(duì)每種業(yè)務(wù)數(shù)據(jù)的查詢(xún)API,因此API調(diào)用請(qǐng)求中僅需要包含針對(duì)指定業(yè)務(wù)數(shù)據(jù)的查詢(xún)條件即可,進(jìn)而可以根據(jù)指定業(yè)務(wù)數(shù)據(jù)對(duì)應(yīng)的查詢(xún)API來(lái)查詢(xún)得到相應(yīng)的業(yè)務(wù)數(shù)據(jù)。
在方式二中,進(jìn)一步地,根據(jù)所述API調(diào)用請(qǐng)求中包含的針對(duì)所述指定業(yè)務(wù)數(shù)據(jù)的查詢(xún)條件,以及所述指定業(yè)務(wù)數(shù)據(jù)對(duì)應(yīng)的查詢(xún)API,查詢(xún)得到相應(yīng)的業(yè)務(wù)數(shù)據(jù)的步驟,具體包括:
根據(jù)所述指定業(yè)務(wù)數(shù)據(jù)對(duì)應(yīng)的查詢(xún)API,確定所述指定業(yè)務(wù)數(shù)據(jù)的類(lèi)和相應(yīng)的資源路徑;根據(jù)所述指定業(yè)務(wù)數(shù)據(jù)的類(lèi)和相應(yīng)的資源路徑,以及針對(duì)所述指定業(yè)務(wù)數(shù)據(jù)的查詢(xún)條件,查詢(xún)得到相應(yīng)的業(yè)務(wù)數(shù)據(jù)。
在該技術(shù)方案中,由于指定業(yè)務(wù)數(shù)據(jù)對(duì)應(yīng)的查詢(xún)API是根據(jù)公共API,以及該業(yè)務(wù)數(shù)據(jù)對(duì)應(yīng)的類(lèi)名和資源路徑生成的,因此可以根據(jù)指定業(yè)務(wù)數(shù)據(jù)對(duì)應(yīng)的查詢(xún)API來(lái)確定該業(yè)務(wù)數(shù)據(jù)的類(lèi)和相應(yīng)的資源路徑,進(jìn)而可以基于確定的業(yè)務(wù)數(shù)據(jù)的類(lèi)和相應(yīng)的資源路徑,以及API調(diào)用請(qǐng)求中包含的查詢(xún)條件來(lái)查詢(xún)得到相應(yīng)的業(yè)務(wù)數(shù)據(jù)。
在上述任一技術(shù)方案中,優(yōu)選地,所述的基于元數(shù)據(jù)的OpenAPI實(shí)現(xiàn)方法還包括:
配置用于對(duì)業(yè)務(wù)數(shù)據(jù)的類(lèi)進(jìn)行訪(fǎng)問(wèn)控制的黑名單和/或白名單,所述白名單包含有允許基于所述公共API訪(fǎng)問(wèn)的業(yè)務(wù)數(shù)據(jù)的類(lèi)名,所述黑名單包含有不允許基于所述公共API訪(fǎng)問(wèn)的業(yè)務(wù)數(shù)據(jù)的類(lèi)名;
根據(jù)所述黑名單和/或白名單,以及所述公共API和所述API調(diào)用請(qǐng)求查詢(xún)相應(yīng)的業(yè)務(wù)數(shù)據(jù)。
在該技術(shù)方案中,通過(guò)配置對(duì)業(yè)務(wù)數(shù)據(jù)的類(lèi)進(jìn)行訪(fǎng)問(wèn)控制的黑名單和/或白名單,以根據(jù)配置的黑名單和/或白名單,以及公共API和API調(diào)用請(qǐng)求查詢(xún)相應(yīng)的業(yè)務(wù)數(shù)據(jù),使得能夠根據(jù)需求靈活設(shè)置禁止訪(fǎng)問(wèn)的類(lèi)名和允許訪(fǎng)問(wèn)的類(lèi)名,以提高數(shù)據(jù)的安全性。
圖2示出了根據(jù)本發(fā)明的第一個(gè)實(shí)施例的基于元數(shù)據(jù)的OpenAPI實(shí)現(xiàn)裝置的結(jié)構(gòu)示意圖。
如圖2所示,根據(jù)本發(fā)明的第一個(gè)實(shí)施例的基于元數(shù)據(jù)的OpenAPI實(shí)現(xiàn)裝置200,包括:第一生成單元202、接收單元204和處理單元206。
其中,第一生成單元202用于基于對(duì)業(yè)務(wù)數(shù)據(jù)進(jìn)行統(tǒng)一描述的元數(shù)據(jù)生成公共API;接收單元204用于接收調(diào)用方發(fā)送的針對(duì)業(yè)務(wù)數(shù)據(jù)的API調(diào)用請(qǐng)求;處理單元206用于根據(jù)所述公共API和所述API調(diào)用請(qǐng)求查詢(xún)相應(yīng)的業(yè)務(wù)數(shù)據(jù),并響應(yīng)所述調(diào)用請(qǐng)求。
在該技術(shù)方案中,由于業(yè)務(wù)數(shù)據(jù)通常都是采用類(lèi)似的元數(shù)據(jù)形式,有著類(lèi)似的數(shù)據(jù)結(jié)構(gòu),因此通過(guò)基于對(duì)業(yè)務(wù)數(shù)據(jù)進(jìn)行統(tǒng)一描述的元數(shù)據(jù)生成公共API,使得能夠從元數(shù)據(jù)的角度來(lái)實(shí)現(xiàn)公共API,進(jìn)而根據(jù)公共API和調(diào)用方發(fā)送的API調(diào)用請(qǐng)求來(lái)查詢(xún)得到相應(yīng)的業(yè)務(wù)數(shù)據(jù),由于無(wú)需針對(duì)每個(gè)業(yè)務(wù)數(shù)據(jù)重新開(kāi)發(fā)OpenAPI,因此極大地降低了OpenAPI的開(kāi)發(fā)工作量和實(shí)現(xiàn)難度,有利于滿(mǎn)足企業(yè)對(duì)OpenAPI的需求。
其中,處理單元206具體有如下兩種內(nèi)部結(jié)構(gòu):
實(shí)施例一:
在API調(diào)用請(qǐng)求中包含有需要訪(fǎng)問(wèn)的業(yè)務(wù)數(shù)據(jù)的類(lèi)名和查詢(xún)條件的情況下,如圖3所示,所述處理單元206包括:確定單元2062和第一查詢(xún)單元2064。
其中,確定單元2062用于根據(jù)所述業(yè)務(wù)數(shù)據(jù)的類(lèi)名和所述公共API確定所述需要訪(fǎng)問(wèn)的業(yè)務(wù)數(shù)據(jù)的類(lèi)和相應(yīng)的資源路徑;第一查詢(xún)單元2064用于根據(jù)所述需要訪(fǎng)問(wèn)的業(yè)務(wù)數(shù)據(jù)的類(lèi)和相應(yīng)的資源路徑,以及所述查詢(xún)條件,查詢(xún)得到相應(yīng)的業(yè)務(wù)數(shù)據(jù)。
在該實(shí)施例中,由于ERP系統(tǒng)中所有的業(yè)務(wù)數(shù)據(jù)都是按照元數(shù)據(jù)描述的規(guī)則存儲(chǔ)的,因此在知曉業(yè)務(wù)數(shù)據(jù)的類(lèi)名之后,可以根據(jù)公共API來(lái)獲取與之相關(guān)的類(lèi)和資源路徑,進(jìn)而可以根據(jù)API調(diào)用請(qǐng)求中包含的查詢(xún)條件,以及需要訪(fǎng)問(wèn)的業(yè)務(wù)數(shù)據(jù)的類(lèi)和相應(yīng)的資源路徑來(lái)查詢(xún)得到相應(yīng)的業(yè)務(wù)數(shù)據(jù)。
實(shí)施例二:
如圖4所示,處理單元206包括:第二生成單元2066和第二查詢(xún)單元2068。
其中,第二生成單元2066用于根據(jù)所述公共API,以及每種業(yè)務(wù)數(shù)據(jù)對(duì)應(yīng)的類(lèi)名和資源路徑生成對(duì)應(yīng)于所述每種業(yè)務(wù)數(shù)據(jù)的查詢(xún)API;第二查詢(xún)單元2068用于在所述API調(diào)用請(qǐng)求是針對(duì)指定業(yè)務(wù)數(shù)據(jù)的API調(diào)用請(qǐng)求的情況下,根據(jù)所述API調(diào)用請(qǐng)求中包含的針對(duì)所述指定業(yè)務(wù)數(shù)據(jù)的查詢(xún)條件,以及所述指定業(yè)務(wù)數(shù)據(jù)對(duì)應(yīng)的查詢(xún)API,查詢(xún)得到相應(yīng)的業(yè)務(wù)數(shù)據(jù)。
在該實(shí)施例中,由于公共API是通用的API,因此通過(guò)根據(jù)公共API,以及每種業(yè)務(wù)數(shù)據(jù)對(duì)應(yīng)的類(lèi)名和資源路徑生成與每種業(yè)務(wù)數(shù)據(jù)對(duì)應(yīng)的查詢(xún)API,使得能夠基于公共API來(lái)快速的生成并發(fā)布每種業(yè)務(wù)數(shù)據(jù)對(duì)應(yīng)的OpenAPI,降低了OpenAPI的開(kāi)發(fā)工作量。同時(shí),由于是基于公共API來(lái)生成針對(duì)每種業(yè)務(wù)數(shù)據(jù)的查詢(xún)API,因此API調(diào)用請(qǐng)求中僅需要包含針對(duì)指定業(yè)務(wù)數(shù)據(jù)的查詢(xún)條件即可,進(jìn)而可以根據(jù)指定業(yè)務(wù)數(shù)據(jù)對(duì)應(yīng)的查詢(xún)API來(lái)查詢(xún)得到相應(yīng)的業(yè)務(wù)數(shù)據(jù)。
進(jìn)一步地,所述第二查詢(xún)單元2068具體用于:根據(jù)所述指定業(yè)務(wù)數(shù)據(jù)對(duì)應(yīng)的查詢(xún)API,確定所述指定業(yè)務(wù)數(shù)據(jù)的類(lèi)和相應(yīng)的資源路徑;根據(jù)所述指定業(yè)務(wù)數(shù)據(jù)的類(lèi)和相應(yīng)的資源路徑,以及針對(duì)所述指定業(yè)務(wù)數(shù)據(jù)的查詢(xún)條件,查詢(xún)得到相應(yīng)的業(yè)務(wù)數(shù)據(jù)。
在該技術(shù)方案中,由于指定業(yè)務(wù)數(shù)據(jù)對(duì)應(yīng)的查詢(xún)API是根據(jù)公共API,以及該業(yè)務(wù)數(shù)據(jù)對(duì)應(yīng)的類(lèi)名和資源路徑生成的,因此可以根據(jù)指定業(yè)務(wù)數(shù)據(jù)對(duì)應(yīng)的查詢(xún)API來(lái)確定該業(yè)務(wù)數(shù)據(jù)的類(lèi)和相應(yīng)的資源路徑,進(jìn)而可以基于確定的業(yè)務(wù)數(shù)據(jù)的類(lèi)和相應(yīng)的資源路徑,以及API調(diào)用請(qǐng)求中包含的查詢(xún)條件來(lái)查詢(xún)得到相應(yīng)的業(yè)務(wù)數(shù)據(jù)。
在本發(fā)明的一個(gè)實(shí)施例中,如圖5所示,根據(jù)本發(fā)明的第二個(gè)實(shí)施例的基于元數(shù)據(jù)的OpenAPI實(shí)現(xiàn)裝置500在具有上述的第一生成單元202、接收單元204和處理單元206的基礎(chǔ)上,還包括:配置單元208,配置用于對(duì)業(yè)務(wù)數(shù)據(jù)的類(lèi)進(jìn)行訪(fǎng)問(wèn)控制的黑名單和/或白名單,所述白名單包含有允許基于所述公共API訪(fǎng)問(wèn)的業(yè)務(wù)數(shù)據(jù)的類(lèi)名,所述黑名單包含有不允許基于所述公共API訪(fǎng)問(wèn)的業(yè)務(wù)數(shù)據(jù)的類(lèi)名;所述處理單元206還用于,根據(jù)所述黑名單和/或白名單,以及所述公共API和所述API調(diào)用請(qǐng)求查詢(xún)相應(yīng)的業(yè)務(wù)數(shù)據(jù)。
在該技術(shù)方案中,通過(guò)配置對(duì)業(yè)務(wù)數(shù)據(jù)的類(lèi)進(jìn)行訪(fǎng)問(wèn)控制的黑名單和/或白名單,以根據(jù)配置的黑名單和/或白名單,以及公共API和API調(diào)用請(qǐng)求查詢(xún)相應(yīng)的業(yè)務(wù)數(shù)據(jù),使得能夠根據(jù)需求靈活設(shè)置禁止訪(fǎng)問(wèn)的類(lèi)名和允許訪(fǎng)問(wèn)的類(lèi)名,以提高數(shù)據(jù)的安全性。
綜上所述,本發(fā)明主要是提出了一種基于元數(shù)據(jù)的OpenAPI實(shí)現(xiàn)方法,由于各個(gè)業(yè)務(wù)模塊都有一些類(lèi)似的功能,因此可以?huà)侀_(kāi)業(yè)務(wù)邏輯,從元數(shù)據(jù)的角度來(lái)實(shí)現(xiàn)公共API,進(jìn)而基于公共API以較少的開(kāi)發(fā)成本實(shí)現(xiàn)大批量OpenAPI的快速發(fā)布。
具體地,本發(fā)明基于ERP產(chǎn)品中對(duì)于業(yè)務(wù)數(shù)據(jù)進(jìn)行統(tǒng)一描述的元數(shù)據(jù),按照元數(shù)據(jù)的規(guī)則對(duì)各種業(yè)務(wù)數(shù)據(jù)進(jìn)行統(tǒng)一的訪(fǎng)問(wèn),封裝通用的操作作為公共API,將公共API作為ACC(Adapter Common Component,適配器公共)組件,以補(bǔ)丁的形式發(fā)布在ERP產(chǎn)品中,對(duì)外提供REST(Representational State Transfer,表述性狀態(tài)轉(zhuǎn)移)資源,和原來(lái)每個(gè)業(yè)務(wù)模塊自己實(shí)現(xiàn)的OpenAPI是并列關(guān)系。部署在ERP產(chǎn)品所在私有云中的網(wǎng)關(guān)(即私有云網(wǎng)關(guān))負(fù)責(zé)OpenAPI調(diào)用的轉(zhuǎn)發(fā)、過(guò)濾、統(tǒng)計(jì)等功能,其中的適配器對(duì)公共API做統(tǒng)一的處理,如結(jié)果集限制、公式執(zhí)行等。整體的實(shí)現(xiàn)原理圖如圖6所示,其中,ACC組件實(shí)現(xiàn)了基于元數(shù)據(jù)所開(kāi)發(fā)的公共API,基于公共API的查詢(xún)方式需要輸入的參數(shù)包括:業(yè)務(wù)數(shù)據(jù)的類(lèi)名和查詢(xún)條件,這些都是API的調(diào)用者輸入的,API的實(shí)現(xiàn)者不需要對(duì)各種業(yè)務(wù)數(shù)據(jù)的了解,只需要了解元數(shù)據(jù)即可。
在ERP系統(tǒng)中所有的業(yè)務(wù)數(shù)據(jù)都是按照元數(shù)據(jù)描述的規(guī)則儲(chǔ)存的,所以在知道該業(yè)務(wù)數(shù)據(jù)的類(lèi)名后,就可以通過(guò)元數(shù)據(jù)信息獲取到與其相關(guān)的類(lèi),以及它們所對(duì)應(yīng)的數(shù)據(jù)庫(kù)表(即資源路徑)。而查詢(xún)條件中以元數(shù)據(jù)全路徑的方式確定屬性,從而查詢(xún)出滿(mǎn)足條件的業(yè)務(wù)數(shù)據(jù)。換句話(huà)說(shuō),根據(jù)公共API和調(diào)用請(qǐng)求中包含的業(yè)務(wù)數(shù)據(jù)的類(lèi)名,確定業(yè)務(wù)數(shù)據(jù)的類(lèi)和資源路徑,進(jìn)而依據(jù)查詢(xún)條件進(jìn)行查詢(xún)。
為了保護(hù)ERP產(chǎn)品中部分?jǐn)?shù)據(jù)的安全,ACC組件中實(shí)現(xiàn)白名單和黑名單功能,在白名單文件中配置可以通過(guò)公共API訪(fǎng)問(wèn)的類(lèi)名,在黑名單文件中配置不允許通過(guò)公共API訪(fǎng)問(wèn)的類(lèi)名。這樣在公共API被調(diào)用時(shí)就可以根據(jù)類(lèi)名來(lái)判斷是否允許訪(fǎng)問(wèn)對(duì)應(yīng)的數(shù)據(jù)。
圖6中所示的業(yè)務(wù)組件可以根據(jù)每個(gè)業(yè)務(wù)模塊自己實(shí)現(xiàn)的OpenAPI來(lái)實(shí)現(xiàn)數(shù)據(jù)的訪(fǎng)問(wèn),即在圖6所示的原理圖中,可以兼容目前的OpenAPI的實(shí)現(xiàn)方案。
其中的私有云網(wǎng)關(guān)部署在ERP服務(wù)所在的私有云中,該網(wǎng)關(guān)負(fù)責(zé)對(duì)外部的API調(diào)用進(jìn)行過(guò)濾轉(zhuǎn)發(fā),對(duì)于公共API的調(diào)用,網(wǎng)關(guān)中的適配器會(huì)進(jìn)行相關(guān)的處理。具體如圖7所示,在接收到查詢(xún)請(qǐng)求時(shí),網(wǎng)關(guān)適配器對(duì)查詢(xún)條件進(jìn)行封裝,以轉(zhuǎn)換為ACC組件支持的格式,進(jìn)而傳遞給ACC組件,ACC組件構(gòu)建查詢(xún)條件并執(zhí)行查詢(xún)操作,然后由網(wǎng)關(guān)適配器對(duì)查詢(xún)結(jié)果進(jìn)行處理。
由于基于元數(shù)據(jù)開(kāi)發(fā)的公共API只是通用的API,因此可以按照不同的業(yè)務(wù)將其封裝成不同業(yè)務(wù)下的簡(jiǎn)單查詢(xún)API,在配置文件中配置對(duì)應(yīng)的資源路徑和類(lèi)名映射即可,這樣每個(gè)業(yè)務(wù)模塊下都有了幾個(gè)簡(jiǎn)單的查詢(xún)API,由于ERP產(chǎn)品中業(yè)務(wù)模塊是非常多的,所以一個(gè)公共API其實(shí)是實(shí)現(xiàn)了很多個(gè)API,這些API在經(jīng)過(guò)網(wǎng)關(guān)時(shí)會(huì)經(jīng)過(guò)適配器的處理,最終調(diào)用的還是那個(gè)公共API。換句話(huà)說(shuō),可以根據(jù)公共API和每種業(yè)務(wù)數(shù)據(jù)(也即業(yè)務(wù)模塊)對(duì)應(yīng)的資源路徑和類(lèi)名映射來(lái)生成針對(duì)每種業(yè)務(wù)數(shù)據(jù)的API,這樣基于公共API的查詢(xún)方式僅需要輸入針對(duì)某種業(yè)務(wù)數(shù)據(jù)的查詢(xún)條件即可。
此外,通過(guò)將一些處理放到網(wǎng)關(guān)的適配器中,如查詢(xún)結(jié)果的處理(包括公式執(zhí)行、字段過(guò)濾、精度處理等),降低了對(duì)ERP產(chǎn)品的侵入性,如果有新的處理功能,只需要在網(wǎng)關(guān)的適配器中進(jìn)行就可以了,無(wú)需修改ERP服務(wù)器。
本發(fā)明上述實(shí)施例的技術(shù)方案極大地降低了OpenAPI的開(kāi)發(fā)工作量,可以無(wú)需了解詳細(xì)業(yè)務(wù)邏輯,只需通過(guò)配置文件就能夠快速發(fā)布大量的OpenAPI。同時(shí),私有云網(wǎng)關(guān)及其適配器可以確保ERP產(chǎn)品對(duì)OpenAPI進(jìn)行更好的監(jiān)控和管理,也能更方便地提供一些公共處理(如結(jié)果集限制、公式執(zhí)行等)。
以上結(jié)合附圖詳細(xì)說(shuō)明了本發(fā)明的技術(shù)方案,本發(fā)明提出了一種新的基于元數(shù)據(jù)的OpenAPI實(shí)現(xiàn)方案,可以根據(jù)公共API和調(diào)用方發(fā)送的API調(diào)用請(qǐng)求來(lái)查詢(xún)得到相應(yīng)的業(yè)務(wù)數(shù)據(jù),無(wú)需針對(duì)每個(gè)業(yè)務(wù)數(shù)據(jù)重新開(kāi)發(fā)OpenAPI,極大地降低了OpenAPI的開(kāi)發(fā)工作量和實(shí)現(xiàn)難度,有利于滿(mǎn)足企業(yè)對(duì)OpenAPI的需求。
以上所述僅為本發(fā)明的優(yōu)選實(shí)施例而已,并不用于限制本發(fā)明,對(duì)于本領(lǐng)域的技術(shù)人員來(lái)說(shuō),本發(fā)明可以有各種更改和變化。凡在本發(fā)明的精神和原則之內(nèi),所作的任何修改、等同替換、改進(jìn)等,均應(yīng)包含在本發(fā)明的保護(hù)范圍之內(nèi)。