自定义连接类型开发指南

变更记录
| 产品版本 | 更新内容 | 更新日期 |
| V5.0.020 | 初版 | 2023年4月28日 |
| V6.0.12 | 增加多种鉴权方式 | 2023年5月17日 |
介绍
集成服务云预置了大量的第三方连接类型,同时也支持用户开发自定义连接类型,以下将针对WebAPI类型、自定义连接器工厂类、自定义MQ工厂类分别进行说明。
连接类型介绍:https://vip.kingdee.com/article/183681
WebAPI连接类型
根据各三方系统的鉴权方式,集成服务云提供以下三种脚本:会话登录、会话刷新、服务器状态测试,在连接器类型注册时,提供这三类脚本分别予以处理,从而与kd.isc.iscb.platform.core.connector.webapi.WebApiConnectionFactory构 成一个完整的连接器,为集成云运行引擎提供对第三方系统API的调用。


1.连接器工厂类
工厂类(推荐):kd.isc.iscb.platform.core.connector.webapi.WebApiConnectionFactory
特殊情况也可以重写工厂类
2.配置鉴权参数
使用动态表单(推荐)
打开连接类型上的自定义配置开关,可以手动填写该连接器鉴权时需要用到的鉴权参数。

可以根据需求选择不同的鉴权方式,每种鉴权方式会自动添加对应的预置参数,用户也可手动进行修改。
其中Bearer Token和Basic Auth将会自动生成参考用的会话登录脚本。
注:当修改鉴权方式的时候会自动清空现有会话登录脚本。

修改鉴权参数后,将动态渲染出连接配置界面。

在后续脚本中可以通过$获取连接配置上的参数信息,如$server_ip、$server_port等。
会话登录脚本

会话刷新脚本:

服务器状态检测脚本:

使用元数据(不推荐)
关闭自定义配置则需要创建连接配置元数据,该元数据作为连接器的配置界面。
配置方法参考::https://vip.kingdee.com/school/89389204685524480

后续脚本配置方法和上面介绍的一致,且用户可以额外配置API调用脚本,该脚本将在外部系统API登记中使用。
注:不推荐使用该功能登记外部系统API,推荐使用WebAPI登记
API调用脚本:

注:API调用脚本可以捕获会话失效异常,然后通过函数Relogin()重新执行会话登录脚本。
var url = $website + $service + "?accessToken=" + $session.accessToken;
var param = "eid=" + user + "&data=" + String.URLEncode(String.FormatJson(data));
var result = String.ParseJson(HttpPost(url, param,"UTF-8").result);
if(result.errorCode == 10000401){// 会话ID 失效,重新登录
var url = $website + api + "?accessToken=" + Relogin().accessToken;
var result = String.ParseJson(HttpPost(url, param,"UTF-8").result);
}
if(result.success){
result = result.data; // 成功,仅将 data 部分作为结果
}else{
throw result; // 失败
}3.WebService脚本
WebService连接脚本写法和【1.3 RESTful API 脚本】写法基本相似,但具体参数格式和调用方式会有不同。
直接拼接XML调用Web服务
var header = {"Content-Type" : "text/xml; charset=utf8",SOAPAction:"http://ws/testService"};
var xml = "<?xml version='1.0' encoding='utf-8'?><soap:Envelope
xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance'
xmlns:xsd='http://www.w3.org/2001/XMLSchema'
xmlns:soap='http://schemas.xmlsoap.org/soap/envelope/'><soap:Body><testService
xmlns='http://ws/'><name xmlns=''>Yuxichu</name></testService></soap:Body>
</soap:Envelope>";
HttpPost("http://localhost:8888/HelloService/", xml, "UTF-8", {},
header).result;构造XML调用Web服务
var header = {"Content-Type" : "text/xml; charset=utf8",SOAPAction:"http://ws/testService"};
var xml = String.createXml("soap:Envelope");
xml["xmlns:xsi"] = 'http://www.w3.org/2001/XMLSchema-instance';
xml["xmlns:xsd"] ='http://www.w3.org/2001/XMLSchema';
xml['xmlns:soap']='http://schemas.xmlsoap.org/soap/envelope/';
var body = xml("soap:Body");
var method = body("testService", {xmlns : 'http://ws/'});
var param = method("name", {xmlns:''});
param["#text"] = 'Yuxichu';
var xml = HttpPost("http://localhost:8888/HelloService/", String(xml), "UTF-8",
{}, header).result;
var dom = String.parseXml(xml);
return dom["#children"][0]["#children"][0]["#children"][0].#text通过CallWebService调用Web服务
// Web服务URL,该URL后附加 ?WSDL应该能返回该Web服务的描述,例如: // http://www.webxml.com.cn/WebServices/WeatherWebService.asmx?WSDL var service = "http://www.webxml.com.cn/WebServices
自定义连接类型开发指南
声明:除非特别标注,否则均为本站原创文章,转载时请以链接形式注明文章出处。如若本站内容侵犯了原著者的合法权益,可联系本站删除。



