# 通訊接出擴展
## **擴展配置**

## **插件說明**
1. 插件以jar包文件或類文件的方式拷貝到前置安裝目錄的plugin文件夾下;若插件是jar包需要重啟前置生效,若插件是class文件可動態生效。
2. 若插件類實現了initEnv(Map cfg)函數,則在調用插件函數前本函數會自動被調用(入參cfg:流程對應接入配置信息); 插件函數形式為:xxx(Object trcd\_Pkg,Object para); (trcd\_Pkg:交易碼或報文,para:輸入輸出字段),返回Object對象可為Map或byte數組。若插件中需要輸出日志,則在插件類中需定義日志成員變量,如下:
3. org.slf4j.Logger public static Logger log;
4. 該類變量需固定命名為log,由前置系統在調用插件函數前對其進行賦值。
5. 插件函數配置若以“::”開頭,則表示插件函數為靜態函數,對應地若實現了初始化函數initEnv,則該函數也必須是靜態函數。
6. 在前置流程中“發送報文”到第三方節點,若第三方節點配置有插件處理則只有externPackAndSend或externSend插件函數可被調用;其它插件函數需要在流程中根據需要單獨調用;若發送第三方報文有接口或運行平臺發起,則所有插件函數都可生效
7. 開發的插件需以jar包文件的形式拷貝到前置安裝目錄的plugin目錄下。
8. 插件類以及函數應遵循如下形式:
- 插件初始化函數:void initEnv(Map cfg) 。
輸入:cfg,對應接出的配置信息, cfgPath為接出配置文件目錄。
說明:若插件類中實現了該函數,則該函數在插件函數調用被前調用,若插件函數為靜態方法(接出配置中函數名"::"開頭)則本函數必須為靜態方法。
- 插件函數:Object xxx(Object trcdPkg,Object para)。
輸入:trcdPkg,交易碼或報文,para見接出插件函數說明。
輸入輸出:para,通常為MAP,請求或應答的報文或報文字段。
返回:應答報文或字段鍵值對集合MAP。
- 報文與通訊處理插件函數: externPackAndSend
該函數需要實現組包、發送請求、接收應答、解包應答功能;返回應答字段鍵值對。
- 組包插件函數:externPack
該函數實現組包,返回報文。
- 解包插件函數:externUnpack
該函數實現解包,返回應答字段鍵值對。
- 通訊插件函數:externSend
該函數發送請求接收應答,返回應答報文。
- 組包前插件處理:beforePack
無返回,para為請求字段鍵值對。
- 發送請求前插件處理:beforeSend
返回報文。
- 解包前插件處理:beforeUnpack
返回報文。
- 解包后插件處理:beforeReturn
無返回;para為應答字段鍵值對