常見的系統間接口方式(01)-遠程函數調用


原文路徑:https://mp.weixin.qq.com/s/RA2IdYCxyvygPDif_L1KDg 

所謂系統接口,實際上就是不同系統間的數據交換方式。 

對於一個企業來說,肯定不是一個系統就能夠支持所有業務的運轉,幾乎所有企業都會使用多個系統,比如較為常見的ERP/MES等。 

當企業有多個系統支持其業務時,不同系統間的數據交互就不可避免了。比如,MES作為生產執行系統,在MES中所執行的原材料投料、產成品入庫出庫等,必然會將相應的數據傳輸至ERP系統,保證ERP系統中同時進行原材料、成品的貨物移動等。 

除了企業的內部系統會發生數據交互外,還可能存在不同企業間的系統數據交互。比如,企業可能會將未來的物料需求預測,傳輸給其下游供應商,供應商接到預測后,會進行生產備貨等等。當然,還有很多企業其需要與銀行有很多系統接口,比如自動付款等相關業務。 

基於企業中的系統接口,我們將主要分享常見的三類系統接口方式,以幫助大家能夠理解其工作原理。 

三類常見的接口方式,包括: 

1.系統間采用遠程函數調用(RFC)的方式進行數據交互; 

2.系統間采用中間數據庫的方式進行數據交互; 

3.系統間采用傳輸文件的方式進行數據交互; 

本篇,我們先介紹“遠程函數調用(RFC)”的工作原理。

正文 

遠程函數調用(Remote Function Call):實際上就是一個系統提供可供其他系統調用的函數,當其他系統傳輸正確的參數並調用相應函數,則可以在該系統中執行相應的系統功能。這就是最為常見的,使用遠程函數調用的系統接口方式。 

系統間數據交互的目的,就是一個系統中的功能執行結果,以數據的形式被被傳輸到另外一個系統,並在利用此結果數據,在另外這個系統中執行相應的系統功能。 

遠程函數調用(RFC)這種接口模式,就是數據會直接傳輸相應系統,並在此系統中直接執行系統功能。 

我們可以形象的理解為,被調用的系統A,將其系統的賬號和密碼交給了外部系統B,外部系統B在必要時,會登陸到A系統中,用系統B中的正確參數,也就是數據,去執行A系統中的系統功能。如下圖所示。 

看到這里,其實,對於很多初級業務顧問來說,理解上可能還有一定困難。那么,我們就模擬一個最簡單的業務場景,用以分析“遠程函數調用”的工作原理。 

假定,某企業的采購員使用SAP系統做業務,而其部門經理會使用另一個審批系統,比如常見的自動辦公OA系統,實現對采購員的業務的審批操作。 

那么此模擬場景下,其可能出現的實際業務如下: 

1.采購員在SAP系統中,創建一個張采購訂單,並成功保存,其采購訂單號為“123”; 

2.采購員在審批系統(OA)中,使用發起審批功能,填入采購訂單號“123”,確認發起審批。此時,OA系統中會顯示SAP系統中單號“123”的相關信息,包括物料編號、物料名稱、采購數量、價格等; 

3.當采購員發起審批后,部門經理就能在OA系統中,看到此審批流程,並看到采購訂單號“123”,以及所有此次采購業務的信息; 

4. 此時,部門經理會在OA系統中執行審批通過,OA系統在SAP系統對訂單號“123”完成審批后,會給部門經理顯示“批准通過執行成功”; 

 

請問在以上業務中,系統間的接口工作機制是什么樣的? 

首先,有采購數據的抽取接口,執行邏輯如下:

OA系統會給SAP傳輸“訂單號”這一參數,同時調用SAP系統中的采購數據獲取函數,SAP系統會將采購訂單的相應信息反饋給審批系統; 

其次,有采購訂單的審批接口,執行邏輯如下:

當部門經理執行審批通過后,審批系統會將“訂單號”和“審批通過”這兩個參數,傳輸給SAP系統,並調用SAP系統中的審批函數批准此單號,並將審批成功的結果反饋給審批系統。 

具體邏輯如下圖所示: 

這里我們可以思考以下,OA系統為什么一定要在接到SAP系統將審批成功的結果后,才給部門經理顯示審批成功? 

OA系統為什么不直接在部門經理執行審批功能后,就直接顯示審批成功?OA系統的審批參數已經發出去了,何必要等SAP的反饋呢? 

其實,這里就是我們在設計系統接口時,要注意的關鍵點。多個系統接口的協作,不同於單個系統的功能執行。 

以上述業務為例,在單個系統中,如果審批程序執行不成功,系統會立刻根據程序執行結果,告訴你程序執行不成功。可能的原因是,業務單據被鎖定,或者相關后台表被鎖定等。 

在多個系統的協作時,A系統把參數傳輸給B系統,並調用B系統中的函數,如果此時A系統,直接給使用者顯示執行成功,就有可能造成B系統實際的功能並未執行成功,而A系統卻告訴使用者已經成功了。 

如上述業務場景,OA系統雖然把審批通過的參數傳輸給了SAP系統,並調用SAP所提供的函數接口,SAP系統很有可能會因為單據鎖定等原因,程序無法執行成功,但OA系統如果此時認為審批成功,就會出現問題了。 

 

基於上述內容,我們已經了解了“遠程調用函數(RFC)”接口的基本工作原理。

其實,除了SAP系統,幾乎所有系統都對會外提供類似“遠程調用函數(RFC)”的接口方式。 

當然,基於上述介紹,我們也就理解了為什么這種函數,會被稱為“遠程調用函數(RFC)”了。 

因為這類函數主要用以其他外部系統進行調用,外部系統的調用,也叫遠程調用,所以我們常稱可以供外部調用的函數為:“遠程調用函數(RFC)”。當然,這類函數除了可以被外部系統調用,自己系統也可以調用。 

這里我們在介紹以下BAPI的概念。在SAP系統中,有很多已經封裝好的,可以直接使用的遠程調用函數,SAP稱其為“BAPI(business application programming interface)”具體可以參考,其他兩篇公眾號文章。 

對於很多非SAP技術相關的朋友,都很了解API,而BAPI無非就是多了個business,就是SAP為其業務定義的API。 

遠程函數調用這種接口方式,常用於業務簡單,接口系統較少、接口業務點對點的業務類型。 

但實際業務中,支持企業業務運轉的系統,可能會有數個、數十個,甚至數百個。 

如果所有系統接口都用遠程調用的方式是肯定行不通的。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM