# 通讯接出扩展
## **扩展配置**
![](https://img.kancloud.cn/18/72/1872c1c73808aa0f15bc27f6b5fd8781_1555x422.png)
## **插件说明**
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为应答字段键值对