基于 Flow API 的对外订单接口适配与后端系统解耦方案
知行之桥 EDI 系统支持将由多个功能端口组成的工作流对外发布为可调用的 API 接口,称为 Flow API(工作流 API)。
外部系统向该 API 发起请求后,请求体数据将进入对应的工作流进行处理,其最终输出结果将作为接口的响应(Response)返回给调用方。
Flow API主要在两种场景内使用:
-
按照交易伙伴的接口规范对外暴露 API,在接收到请求后,将请求体中的业务数据转发至其他系统接口进行处理,并基于下游接口的响应结果生成并返回接口响应。
-
按照交易伙伴的接口规范对外暴露 API,在接收到请求后,使用请求体中的业务参数进行数据库查询或数据处理,并基于查询结果生成并返回接口响应。
本文主要就场景1的配置案例,对 Flow API 的配置方案进行说明。在实际项目中,可在此基础上结合具体业务需求,对工作流结构及相关配置进行相应调整与扩展。
场景2可以参考:知行之桥三种接口详解:Webhook、Flow API 与 Admin API 中对Flow API的讲解。
需求案例
注:本案例为便于展示和理解,将部分接口鉴权字段(如 appId)直接写在脚本中;在实际项目中,建议将此类敏感信息统一存储并维护在配置库中。
扩展阅读:知行之桥 – 全局配置库 | 版本 26.2.9636
交易伙伴要求对外提供一个用于接收订单的接口,并按照其约定的接口结构返回订单创建结果,以反映后端业务系统的处理状态。同时,该接口还要求实现特定的鉴权机制(如基于签名的鉴权),以满足其安全控制要求。
由于后端业务系统在接口形式、请求体结构或处理方式等方面不便直接满足该接口规范要求,因此需要在知行之桥 EDI 系统中构建 Flow API,通过工作流方式对请求进行接收、处理与转发,以实现该业务需求。
Flow API将由多个功能端口连成的工作流组成,校验交易伙伴请求体中的sign值 -> 提取交易伙伴请求体中的订单JSON -> 调用后端业务系统接口-> 生成交易伙伴期待的响应。
交易伙伴期待的接口结构

| Header | 说明 |
|---|---|
| Content-Type | 固定为 application/json |
| x-cdata-authtoken | 知行之桥分配Authtoken值 |
| Body | 说明 |
| appId | 知行之桥分配appId |
| sign | HMAC-SHA256加密+HEX 密钥:appKey; 加密内容:data值 |
| data | 实际的业务数据 |
| 项目 | 内容 |
|---|---|
| Body结构 | {“appId”: “your_app_id”,”sign”: “calculated_sign”,”data”: “{“PONumber”: “PO20260120001″,”buyerCode”: “BUY001″ }”} |
| 响应结构Sign正确 | { “code”: “SUCCESS”,(或”code”: “ERROR”) “message”: “PO created successfully”(或创建失败的描述) } |
| 响应结构Sign错误 | { “code”: “SIGN_INVALID”, “message”: “Signature verification failed” } |
知行之桥配置
步骤1:搭建Flow API并创建authtoken
我们需要将下面这些功能端口连成工作流以实现本例需求。
如果需要在调用后端业务系统前进行数据映射,可以在FlowAPI_Rest端口前增设XMLMAP等端口。
| 端口 类型 | 端口名称 | 用途说明 |
|---|---|---|
| Script | FlowAPI_SignVerify | 校验交易伙伴请求 Body 中的 sign 值是否正确 |
| Branch | FlowAPI_Sign_Branch | 根据 sign 校验结果对请求进行分流 |
| Script | FlowAPI_InvalidSign | sign 校验失败时,生成错误 response 并返回给交易伙伴 |
| Rest | FlowAPI_Rest | 对 sign 校验通过的请求,调用后端业务系统接口 |
| Script | FlowAPI_Rest_Response | 基于后端业务系统response 生成最终 response 并返回给交易伙伴 |
如下图所示,在完成各功能端口的连接并形成完整工作流后 -> 点击工作流右上角【多选】-> 框选搭建好的工作流 -> 右击【创建工作流API】-> 弹窗中配置Flow API的URL。
到此,以上述功能端口连成的工作流就暴露为了一个Flow API。

Flow API默认包含authtoken鉴权,【系统设置】-> 【添加用户】-> 勾选【API访问启用】-> 复制存留【身份认证令牌(authtoken)】-> 【添加用户】。
调用Flow API时,请求Header设置x-cdata-authtoken参数值为此身份认证令牌值即可。
如果期待不包含此Header参数,可以将令牌直接配置在请求URL上,参考资料
步骤2:功能端口配置

2.1 FlowAPI_SignVerify端口配置
该Script端口将配置下面的脚本,校验请求体中的sign值,输出订单JSON(请求体中data元素的值)。
| 项目 | 内容 |
|---|---|
| Sign值正确 | 输出文件消息头verifySign属性值=true |
| Sign值错误 | 输出文件消息头verifySign属性值=false |
<!--设置 appId appKey-->
<arc:set attr="appId.data" value="DEMO_FLOWAPI_001" />
<arc:set attr="appKey.data" value="6f1a9c8b2d4e7f0a3c5e9b8a1d2f4c6e" />
<!--从请求体中获取订单json-->
<arc:set attr="dataBody.data" value="[_message.body]" />
<!--Get Sign and data from Request Body-->
<arc:set attr="json.text" value="[dataBody.data]"/>
<arc:set attr="json.jsonpath" value="/json"/>
<arc:call op="jsonDOMSearch" in="json" out="result">
<arc:set attr="dataBody.sign" value="[jsonpath(sign)]" />
<arc:set attr="dataBody.bodyData" value="[jsonpath(data)]" />
</arc:call>
<!--生成sign以备校验 -->
<arc:set attr="encIn.format" value="HMAC" />
<arc:set attr="encIn.hmackey" value="[appKey.data]" />
<arc:set attr="encIn.hmacalgorithm" value="SHA" />
<arc:set attr="encIn.hmacbits" value="256" />
<arc:set attr="encIn.outformat" value="HEX" />
<arc:set attr="encIn.data">[dataBody.bodyData]</arc:set>
<arc:call op="encEncode" in="encIn" out="encOut">
