流程集成
- (一)REST API
- (二)SOAP API
- (三)TIMER
- (四)JMS
- (五)KAFKA
- (六)MQTT
- (七)SOCKET
- (八)SAP
- (九)AS2
- (十)HL7
- (十一)CDC
- (十二)EMAIL
- (十三)RabbitMQ
- (十四)RocketMQ
- (一)条件分支
- (二)For each循环
- (三)While循环
- (四)并发组件
- (五)过滤(基础过滤器)
- (六)高级过滤
- (七)数据映射
- (八)数据安全
- (九)数据脱敏
- (十)日志
- (十一)模板
- (十二)自定义脚本
- (十三)自定义变量
- (十四)EDI
- (十五)事务
- (十六)try-catch
- (十七)返回
- (一)HTTP
- (二)HTTPS
- (三)动态HTTP
- (四)REST API
- (五)SOAP API
- (六)数据库
- (七)JMS1.1
- (八)JMS2
- (九)Kafka
- (十)MQTT
- (十一)Redis
- (十二)SAP
- (十三)FTP/SFTP
- (十四)SOCKET
- (十五)EMAIL
- (十六)AS2
- (十七)HL7
- (十八)ElasticSearch
- (十九)RabbitMQ
- (二十)泛微OA_9.00
- (二十一)RocketMQ
一、集成流程
集成流程是一种自动工作流程,表示从接收数据 到发送数据至一个或多个目的地的路径,可执行一系列步骤来整合和处理跨多个应用程序的数据。每个流程都有一个入站端点,它定义了启动工作流的事件;触发后,流程会执行一个或多个操作。流程可以使用数据连接与不同的应用程序进行交互,确保跨系统数据流的无缝衔接。流程具有用于决策的条件逻辑、用于处理数据集的循环以及用于管理异常的错误处理等功能。
异步集成流程
异步集成流程是集成流程的一种,基于事件驱动,集成流程中引用子流程配置异步后,消息会通过事件总线调度,将事件通知给子流程。主流程将不会等待子流程的执行结果。
同步集成流程
比较常用的一种模式,同步等待调用的响应结果。
二、组件介绍
组件是集成流程的核心组成部分。 它们包含一系列决定数据如何在系统内执行的步骤。 流程通常代表一个离散的工作流程,它将特定类型的记录从一个应用程序转移到另一个应用程序。
如上图所示,在右边对话框中需要填入流程的基本信息
| 属性 | 属性说明 |
|---|---|
| 名称 | 集成流程的名称,当前环境下唯一。只能输入数字、字母、下划线、中文,要求在 20 个以内字符。 |
| 资源组 | 集成流程所属资源组 |
| 业务标识 | 用户业务环境中所需设置的标识 |
| 版本 | 集成流程版本,用户自定义版本格式 |
| 描述 | 自定义集成流程的描述信息 |
| 应用系统 | 集成流程所属应用系统 |
| 标签 | 集成流程的标签,可设置多个标签;多个标签使用英文逗号分隔,最多输入十个标签,单个标签最多输入16个字符。 |
| 自定义属性 | 按照需求填写属性的名称和值。 |
(一)组件类型
流程组件分为五种类型:
入站端点: 作为流程的入口,负责接收消息或者发起流程
逻辑: 控制流程中数据的转换和流向
函数: 进行数据转换和处理
子流程: 可以复用的流程片段
出站端点: 从外部应用/数据库查询数据;发送数据给外部应用或者存储到数据库 |
(二)添加步骤
您可以在画布为流程上添加步骤,并通过以下方式将组件连接起来:
-
点击
按鼠标右键,即可弹出组件对话框
-
选择组件即可将组件加入到流程中,组件一但加入到流程中或者在画布中点击组件,右边对话框则切换为相应组件的基本信息
下图显示创建页面的一个集成流程,该流程包含了画布上一系列步骤。
(三)前缀匹配
在请求方法(如POST/GET等)匹配的情况下,只要请求路径中的前缀与 Rest API入站端点的 path 相同,则可以访问到该流程。
在属性设置中,系统会自动为 path 添加 "/**",以实现前缀匹配。
自动添加规则,如下表所示:
| path结尾 | 自动添加规则 | 示例 |
|---|---|---|
| 以 "/" 结尾 | 只添加 "**" | 如 path 填写 "/aa/",自动添加后为 "/aa/**"。 |
| 不以 "/" 结尾 | 添加 "/**" | 如 path 填写 "/aa",自动添加后为 "/aa/**"。 |
| 含有查询参数 | 忽略查询参数后,再添加 "/**" | 如 path 填写 "/aa?key1={value1}",自动添加后为 "/aa/**"。 |
匹配说明,如下表所示:
| path栏填写 | 说明 |
|---|---|
| /aa | 请求路径为 "/aa"、"/aa/bb"、"/aa/bb/cc"、"/aa?key1=value1" 都可以匹配成功,但 "/aabb" 不会匹配成功。 |
| /aa/bb | 请求路径为 "/aa/bb"、"/aa/bb/cc/dd/ee/ff" 都可以匹配成功,但 "/aa/bbc" 不会匹配成功。 |
| /aa/{id} | 请求路径为 "/aa/bb"、"/aa/cc"、"/aa/bb/cc/dd" 都可以匹配成功。 |
| /aa?key1={value1} | 请求路径为 “/aa”、“/aa/bb”、“/aa/bb?key1=value1”、“/aa?key1=value1” 都可以匹配成功,但 “/aabb" 不会匹配成功。 |
注意:
若已经存在一个 path 为 "/aaa" 的 HTTP 简易代理或 REST API入站端点,需要再添加一个相同请求方法 path 为 "/aaa/bbb" 的 HTTP 简易代理或REST API 入站端点时,则会因为路径不唯一而添加失败。
前缀匹配成功后,后缀部分会添加在服务路径的尾部。
例如:一个包含两个步骤的集成流程。
-
第一步为 Rest API 入站端点且 path 为 "/aa"。
-
第二步为 HTTP 连接且服务路径为 "/test"。
请求路径与实际服务路径的关系,如下表所示:
| 请求路径 | 实际服务路径 |
|---|---|
| /aa | /test |
| /aa/b | /test/b |
| /aa/b/c | /test/b/c |
(四)自定义脚本调式
1、获取可以调试自定义脚本的工具,获取地址如下: http://10.10.83.110/tongsoft/dept4/esi/GROOVY-DEBUGGER
2、在idea中打开该工具
3、打开ScriptVerifier.groovy文件
| 方法名 | 实际服务路径 |
|---|---|
| execute | 编写自定义脚本 |
| mockInitVar | 模拟自定义变量 |
| mockGlobalVariable | 模拟全局变量 |
| mockUrlParams | 模拟路径参数 |
| mockHeaders | 模拟头部信息 |
| mockBody | 模拟请求体内容 |
4、依据业务场景填写模拟数据,编写自定义脚本代码
5、调试编写代码
6、获取编写好的自定义脚本代码,并复杂
7、创建集成流程,粘贴使用上述复杂的自定义脚本代码
8、调试流程验证自定义脚本代码
三、入站端点
入站端点为一个流程的开始步骤,每个流程只能有一个入站端点,并且只能是第一步。
| 入站端点 | 说明 |
|---|---|
| REST API | 用于生成并发布一个Restful协议的API,API的实现由后续组件完成 |
| SOAP API | 用于生成并发布一个SOAP协议的webservice服务,服务的实现由后续组件完成 |
| TIMER | 定时触发流程,用于创建需要定时执行的流程 |
| JMS | 基于JMS(Java Message Service)触发流程,用于处理接收到的JMS消息并触发后续流程执行 |
| Kafka | 基于Apache Kafka的触发流程,用于处理接收到的Kafka消息并触发流程执行 |
| MQTT | 基于MQTT(Message Queuing Telemetry Transport)的触发流程,用于处理接收到的MQTT消息并触发流程执行 |
| Socket | 网络通信触发流程,用于接收通过TCP或UDP协议发送的消息并触发流程执行 |
| SAP | SAP系统集成触发流程,用于处理SAP的函数调用和文档传输 |
| AS2 | 安全数据传输触发流程,用于接收通过AS2协议发送的消息 |
| HL7 | 一种医疗信息交换触发流程,用于接收通过HL7 MLLP协议发送的消息 |
| CDC | CDC数据变更捕获触发流程,用于接收订阅的数据库操作变更发送的消息 |
| 基于电子邮件的触发流程,用于接收邮件消息并触发流程执行 |
(一)REST API
Rest API 入站端点主要处理收到的 Restful 请求,将数据转发给后续的组件进行处理,最终将数据转发给目的端点。
- 触发条件
收到满足条件的 Restful 请求,基于前缀匹配的原则匹配请求路径
- 属性配置
Rest API 入站端点支持两种方式定义接口,包括"定义接口"和"导入swagger"。
- 定义接口:由用户自定义接口参数,包括http方法,path路径、请求参数和请求参数。
- 导入swagger:由导入的swagger文件定义接口,选择其中一个接口作为流程入口。
| 属性名称 | 必填 | 默认值 | 说明 |
|---|---|---|---|
| http方法 | 是 | GET | 调用流程的方法类型,支持GET、PUT、POST、DELETE、HEAD、OPTIONS、TRACE、PATCH和ANY |
| path | 是 | /流程名称 | 调用流程的路径,支持中文、英文、数字和特殊符号。path默认支持前缀匹配。 |
| 请求协议 | 是 | HTTP | 请求协议,支持HTTP和HTTPS。 |
| 响应模式 | 是 | 同步 | 响应模式,支持同步和异步。同步:一直等待流程执行完毕得到响应结果。异步:收到请求后立即返回响应,异步执行后续流程,配置接收响应组件或者使用缓存方式收取结果。异步方式分为"异步拉取"和"异步推送"。 |
| 响应报文 | 否 | 无 | 响应报文,返回一个requestId。仅响应模式为异步拉取和异步推送时展示。 |
| 拉取地址 | 否 | 见图 | 拉取地址,仅响应模式为异步拉取时展示。 依据响应报文获取的requestId组合成调用接口调用。 |
| 请求参数 | 否 | 无 | 请求参数,支持在不同位置,包括header、query、path和body进行参数配置。仅用于展示,不做具体校验操作。 |
| 请求示例 | 否 | 无 | 请求示例。 仅用于展示,不做具体校验操作。 |
| 响应示例 | 否 | 无 | 响应示例。 仅用于展示,不做具体校验操作。 |
(二)SOAP API
SOAP API 触发器主要处理收到的 Webservice 请求。
- 触发条件
收到满足条件的 Webservice 请求。
- 属性配置
SOAP API 入站端点支持三种方式定义接口,包括"上传文件"、"使用URL"和"自定义"。
- 自定义:由用户自定义接口参数,包括命名空间,服务名、方法名和请求参数。
- 上传文件:由导入的wsdl文件定义接口,选择其中一个接口作为流程入口。
- 使用URL:由wsdl文件的URL地址定义接口,选择其中一个接口作为流程入口。
| 属性名称 | 必填 | 默认值 | 说明 |
|---|---|---|---|
| path | 是 | /流程名称 | 调用流程的路径,支持中文、英文、数字和特殊符号。 |
| SOAP 用户名 | 否 | 无 | SOAP 用户名。 |
| SOAP 密码 | 否 | 无 | SOAP 密码。 |
| 命名空间 | 是 | 无 | 命名空间。 仅自定义模式下需要输入,其它不需要填写。 |
| 请求参数 | 否 | 无 | 请求参数,支持参数配置。仅用于展示,不做具体校验操作。仅自定义模式下需要配置。 |
| 服务名 | 是 | 无 | 服务名称。 仅自定义模式下需要输入,其它都是自动获取。 |
| 方法名 | 是 | 无 | 方法名称。 仅自定义模式下需要输入,其它都是自动获取。 |
| 请求示例 | 否 | 无 | 请求示例。 仅用于展示,不做具体校验操作。仅自定义模式下需要输入,其它都是自动获取。 |
| 响应示例 | 否 | 无 | 响应示例。 仅用于展示,不做具体校验操作。 仅自定义模式下需要输入,其它都是自动获取。 |
(三)TIMER
TIMER 触发器主要作用是创建需要定时执行的流程。
- 触发条件
依据配置的属性参数定时触发。
- 属性配置
| 属性名称 | 必填 | 默认值 | 说明 |
|---|---|---|---|
| 动作 | 是 | 定时调用 | 定时类型,支持定时调用和Cron表达式。 |
| 周期 | 是 | 无 | 定时调用周期,仅支持数字,单位有小时/分钟/秒,动作为定时调用时必填。 |
| Cron表达式 | 是 | * * * * * ? * | Cron表达式,动作为Cron表达式时必填。可直接输入Cron表达式,也可以点击表达式后面的图标,进入Cron表达式智能生成界面,配置完成后点击"返回",即可自动生成Cron表达式。 |
Cron表达式智能生成界面配置说明。
- 点击"秒/分钟/小时/日/月/周/年",可以选择配置Cron表达式的任意一位。
- 根据用户对每一位不同的配置生成对应的Cron表达式,可在界面最下方的Cron表达式框查看。
(四)JMS
JMS 触发器主要处理收到的 JMS 消息。
- 触发条件
收到满足条件的 JMS 消息。
- 属性配置
| 属性名称 | 必填 | 默认值 | 说明 |
|---|---|---|---|
| jms连接 | 是 | 选择已创建的JMS数据连接。 | |
| 动作 | 是 | 定时类型,支持定时调用和Cron表达式。 | |
| 目标类型 | 是 | Queue | 根据"目标类型"选择队列(Queue)或者主题(Topic)名称。 |
| 目标名称 | 是 | 根据"目标类型"输入队列(Queue)或者主题(Topic)名称。 | |
| 是否共享topic | 否 | false | 是否开启共享订阅topic。 |
| 是否持久化topic | 否 | false | 是否开启持久化订阅topic。 |
| 订阅id | 否 | 订阅topic所需的订阅id,通过"是否共享topic"、"是否持久化topic"调整共享和持久化策略。 |
- 共享订阅
共享订阅即允许多个订阅者共享一个订阅,并确保每个消息只传递给这些订阅者中的一个。JMS相关client中并未在JMS2.0中实现共享订阅,如果有共享订阅需求的情况,建议通过Queue实现,而不是通过Topic。
如果要使用共享订阅,建议通过Queue实现,而不是通过Topic。
- 持久化订阅
持久化订阅(Durable Subscription)是一种特殊的订阅类型,它允许订阅者即使在断开连接一段时间后重新连接订阅也能够接收到主题(Topic)上的消息。
在配置jms触发器时,选择连接后可进行持久化订阅配置;选择jms1.1连接需要配置在topic订阅的前提下配置"持久订阅ID";选择jms2连接则需要在topic订阅前提下将"是否持久化topic"开启,同时配置"订阅id"。
在使用持久化订阅时,需要提供 客户端id(connection client id) 和 订阅者id(subscription id) 保证订阅的 唯一性 ,其中 订阅者id 需要由用户配置,而 客户端id 程序则统一使用 流程id 。
- 故障转移
在JMS中,故障转移(failover)是一种用于提高系统可用性和可靠性的机制。当使用故障转移时,如果一个JMS代理(broker)实例失败,客户端会自动尝试连接到另一个可用的代理实例,以确保消息传递不中断。
故障转移通常用于以下情况:
代理集群:当多个代理实例组成一个集群时,故障转移机制允许客户端在当前代理不可用时切换到另一个代理。 主备模式:在主备配置中,如果主代理失败,备用代理会接管消息传递的责任。 网络分区:在网络发生分区时,客户端可能会连接到不同的代理以维持服务。
以ActiveMQ为例,故障转移是通过在连接URI中指定failover:前缀来实现的。例如:
failover:(tcp://broker1:61616,tcp://broker2:61616)
(五)KAFKA
KAFKA 触发器主要处理收到的 KAFKA 消息。
- 触发条件
收到满足条件的 KAFKA 消息。
- 属性配置
| 属性名称 | 必填 | 默认值 | 说明 |
|---|---|---|---|
| KAFKA连接 | 是 | 选择已创建的KAFKA数据连接。 | |
| 动作 | 是 | 选择需要的动作,支持 "订阅"。 | |
| autoOffsetReset | 是 | 选择默认起始位置,支持"earliest"、"latest"和"none"。 | |
| 主题名称 | 是 | 接收数据的主题名称。 | |
| 消费者组名称 | 否 | 消费者组名称。 |
- 共享订阅 如果要使用共享订阅,请务必保证消费者组名称和主题名称均填写。
Kafka中的消费者组(Consumer Group)概念与JMS中的共享订阅有部分类似。在Kafka中消费者组是由多个消费者组成的集合,它们共同消费一个主题的消息,但是每个消息只会传递给消费者组中的一个消费者。这种机制可以用于负载均衡,使得多个消费者可以共同处理一个主题的消息,提高处理效率。
(六)MQTT
MQTT 触发器主要处理收到的 MQTT 消息。
- 触发条件
收到满足条件的 MQTT 消息。
- 属性配置
| 属性名称 | 必填 | 默认值 | 说明 |
|---|---|---|---|
| MQTT连接 | 是 | 选择已创建的MQTT数据连接。 | |
| 动作 | 是 | 选择需要的动作,支持 "订阅"。 | |
| MQTT topic名称 | 是 | 接收数据的topic名称。 |
- 共享订阅
如果要使用共享订阅,请务必确保MQTT的服务端支持MQTT 5.0!
在MQTT中,共享订阅(Shared Subscription)是一种特殊的订阅模式,它允许多个订阅者共享同一个订阅,但是每个消息只传递给这些订阅者中的一个。这种模式在需要负载均衡或者避免重复处理消息的场景中非常有用。
共享订阅通常通过特定的订阅话题格式来实现。在MQTT 5.0协议中,共享订阅的话题格式通常是 $share/{share-name}/{topic},其中 {share-name} 是共享订阅的名称,而 {topic} 是实际要订阅的话题。
假设,需要定义一个名为group1的共享订阅,订阅话题为topic_test,那么订阅者需要订阅的话题则为$share/group1/topic_test,而发布者要发布的话题则为topic_test.
(七)SOCKET
SOCKET 触发器主要作用是接收通过 TCP 或 UDP 协议发送的消息。
- 触发条件
收到满足条件的通过 TCP 或 UDP 协议发送的消息。
- 属性配置
| 属性名称 | 必填 | 默认值 | 说明 |
|---|---|---|---|
| 端口号 | 是 | 8080 | 监听的端口,0~65535(包含)之间的整数。 |
| 协议 | 是 | TCP | SOCKET 协议,可选"TCP"和"UDP"。 |
| 类型 | 是 | 同步 | 可选同步和异步。同步为请求响应模式,客户端会等待服务端响应。异步为单向模式。 |
| 编码器 | 否 | 用于将消息对象转成字节或其他序列形式在网络上传输。支持字节数组编码器、字符串编码器和自定义编码。 | |
| 解码器 | 否 | 负责将消息从字节或其他序列形式转成指定的消息对象。支持行分隔符解码器、自定义分隔符、定长、变长 、字符串解码器和字节数组解码器。 | |
| 解码最大行长度 | 否 | 当解码器选择"行分隔符"或"自定义分隔符"时填写。若消息超过该长度仍未出现分隔符,将抛出异常。 | |
| 解码后是否删除分隔符 | 否 | 当解码器选择"行分隔符"或"自定义分隔符"时填写,解码后的消息是否需要删除末尾的分隔符。 | |
| 自定义分隔符 | 否 | 当解码器选择 "自定义分隔符"时填写,用作分隔符。 | |
| 长度 | 否 | 当解码器选择"定长"时填写,定长解码器会根据此固定长度解码。 | |
| 最大帧长度 | 否 | 当解码器选择"变长"时填写,长度域+正文的最大长度。 | |
| 长度域偏移量 | 否 | 当解码器选择"变长"时填写,从第几个字节开始描述长度。 | |
| 长度域长度 | 否 | 当解码器选择"变长"时填写,长度域所占字节数。 | |
| 长度域补偿值 | 否 | 当解码器选择"变长"时填写,长度域得到的长度值加上此补偿值认为是正文的实际长度,此补偿值可以为负数。 | |
| 剥离字节数 | 否 | 当解码器选择"变长"时填写,从解码帧的首部开始删除的字节数。 |
(八)SAP
SAP 触发器主要处理SAP的函数调用和文档传输。
- 触发条件
SAP系统发起的RFC或者IDOC调用。
- 属性配置
IDOC:
SRFC:
TRFC:
| 属性名称 | 必填 | 默认值 | 说明 |
|---|---|---|---|
| SAP连接 | 是 | 选择已创建的SAP连接。 | |
| 动作 | 是 | 选择需要的动作,支持 sap-trfc-server、sap-idoclist-server和sap-srfc-server。 | |
| 是否将异常传回调用者 | 是 | 否 | 服务名称。动作为sap-trfc-server和sap-idoclist-server时填写。 |
| RFC名称 | 是 | 在目标端点 URI 中,是连接的 SAP 实例中的端点调用的 RFC 的名称。动作为sap-trfc-server和sap-srfc-server时填写。 | |
| 服务名称 | 是 | 服务名称。 | |
| 是否有状态会话 | 是 | 否 | 服务名称。动作为sap-trfc-server和sap-srfc-server时填写。 |
| 应用版本 | 否 | 指定由此端点生成的 IDoc 的关联应用程序版本(若存在)。动作为sap-idoclist-server时填写。 | |
| IDoc类型 | 是 | 指定由此端点生成的 IDoc 的基本 IDoc 类型。动作为sap-idoclist-server时填写。 | |
| IDoc类型扩展 | 是 | 指定由此端点生成的 IDoc 的 IDoc 类型扩展。动作为sap-idoclist-server时填写。 | |
| 系统版本 | 是 | 指定由此端点生成的 IDoc 的关联 SAP 基础版本(若存在)。动作为sap-idoclist-server和sap-srfc-server时填写。 |
(九)AS2
AS2 触发器主要作用是接收通过 AS2 协议发送的消息。
- 触发条件
收到满足条件的通过 AS2 协议发送的消息。
- 属性配置
-
AS2服务端端口号: 参数用于指定 AS2 服务器监听的端口号。该参数定义了 AS2 消息将通过哪个端口发送到AS2服务器。该参数的值是一个整数,表示服务器监听的端口号。
-
AS2服务端请求URI: 参数用于指定 AS2 消息的目标 URL。这个参数定义了 AS2 消息将发送到的AS2服务器的URL。该参数的值是一个字符串,它包含了远程服务器的完整 URL。
-
AS2协议版本号: AS2协议可选版本号,默认V1.1,可选值有V1.0、V1.0。
-
AS2消息结构: AS2 消息结构通常指的是消息的 MIME 类型和内容是如何封装的。AS2 消息可以包含一个或多个 MIME 部分,每个部分可以是不同的内容类型,例如文本、二进制数据或 EDI 文档。可选值如下:
(1)PLAIN(未加密,未签名,未压缩)
消息未经任务加密、签名、压缩处理。
(2)SIGNED(未加密,签名,未压缩)
消息包含一个签名的 MIME 部分。
(3)ENCRYPTED(加密,未签名,未压缩)
消息包含一个加密的 MIME 部分。
(4)SIGNED_ENCRYPTED(加密,签名,未压缩)
消息包含一个先签名然后加密的 MIME 部分。
(5)PLAIN_COMPRESSED(未加密,未签名,压缩)
消息包含一个压缩的 MIME 部分。
(6)SIGNED_COMPRESSED(未加密,签名,压缩)
消息包含一个先压缩后签名的 MIME 部分。
(7)ENCRYPTED_COMPRESSED(加密,未签名,压缩)
消息包含一个先压缩后加密的 MIME 部分。
(8)ENCRYPTED_COMPRESSED_SIGNED(加密,签名,压缩)
消息包含一个先压缩、签名然后加密的 MIME 部分。
-
MDN消息格式化模板: 参数用于指定 AS2 消息处理通知 (MDN) 消息的模板。MDN 消息是一个可选的回执,用于告知发送方消息已被接收和处理。 该参数的值是一个字符串,它包含了用于构建 MDN 消息的模板。这个模板可以包含变量,这些变量在发送 MDN 消息时会被替换为实际的值。
-
EDI消息签名收据算法列表: 参数用于指定用于生成和验证 AS2 消息的数字签名消息摘要(MIC)的算法。AS2 协议要求对 AS2 消息进行数字签名,以确保消息的完整性和真实性。常见的默认算法包括 MD5、SHA-1 等。
注意:消息结构为SIGNED、SIGNED_ENCRYPTED、SIGNED_COMPRESSED、ENCRYPTED_COMPRESSED_SIGNED必填。
-
EDI消息签名算法: 参数用于指定在发送 AS2 消息时使用的数字签名算法。AS2 协议要求对 AS2 消息进行数字签名,以确保消息的完整性和真实性。 注:消息结构为SIGNED、SIGNED_ENCRYPTED、SIGNED_COMPRESSED、ENCRYPTED_COMPRESSED_SIGNED必填。 可选择如下:
(1)SHA3_224WITHRSA
(2)SHA3_256WITHRSA
(3)SHA3_384withRSA
(4)SHA3_512WITHRSA
(5)MD5WITHRSA
(6)SHA1WITHRSA
(7)MD2WITHRSA
(8)SHA224WITHRSA
(9)SHA256WITHRSA
(10)SHA384WITHRSA
(11)SHA512WITHRSA
(12)RIPEMD128WITHRSA
(13)RIPEMD160WITHRSA
(14)RIPEMD256WITHRSA
(15)SHA224WITHDSA
(16)SHA256WITHDSA
(17)SHA384WITHDSA
(18)SHA512WITHDSA
(19)SHA3_224WITHDSA
(20)SHA3_256WITHDSA
(21)SHA3_384WITHDSA
(22)SHA3_512WITHDSA
(23)SHA1WITHDSA
(24)SHA3_224WITHECDSA
(25)SHA3_256WITHECDSA
(26)SHA3_384WITHECDSA
(27)SHA3_512WITHECDSA
(28)SHA1WITHECDSA
(29)SHA224WITHECDSA
(30)SHA256WITHECDSA
(31)SHA384WITHECDSA
(32)SHA512WITHECDSA
(33)SHA1WITHPLAIN_ECDSA
(34)SHA224WITHPLAIN_ECDSA
(35)SHA256WITHPLAIN_ECDSA
(36)SHA384WITHPLAIN_ECDSA
(37)SHA512WITHPLAIN_ECDSA
(38)RIPEMD160WITHPLAIN_ECDSA
(39)SHA1WITHRSAANDMGF1
(40)SHA224WITHRSAANDMGF1
(41)SHA256WITHRSAANDMGF1
(42)SHA384WITHRSAANDMGF1
(43)SHA512WITHRSAANDMGF1
(44)SHA3_224WITHRSAANDMGF1
(45)SHA3_256WITHRSAANDMGF1
(46)SHA3_384WITHRSAANDMGF1
(47)SHA3_512WITHRSAANDMGF1
-
EDI消息签名证书(X.509): 参数用于指定用于生成 AS2 消息数字签名的证书链。证书链是一个包含多个证书的列表,每个证书都验证了前一个证书的有效性,直到最顶层的根证书。当前仅支持单个X.509标准的证书文件。 注意:消息结构为SIGNED、SIGNED_ENCRYPTED、SIGNED_COMPRESSED、ENCRYPTED_COMPRESSED_SIGNED必填。
-
EDI消息签名密钥(RSA算法、PKCS8格式): 参数用于指定用于生成 AS2 消息数字签名的私钥。私钥是用于加密数字签名(私钥加密,公钥解密)的密钥,它是与证书关联的。当仅支持RSA算法、PKCS8格式。 注意:消息结构为SIGNED、SIGNED_ENCRYPTED、SIGNED_COMPRESSED、ENCRYPTED_COMPRESSED_SIGNED必填。
-
EDI消息解密私钥(RSA算法、PKCS8格式): 参数用于指定用于解密接收到的 AS2 消息的私钥。AS2 消息可以使用 MIME 加密来保护消息内容的安全性,该参数提供解密过程中所需的私钥。当仅支持RSA算法、PKCS8格式。 注:消息结构为ENCRYPTED、SIGNED_ENCRYPTED、ENCRYPTED_COMPRESSED、ENCRYPTED_COMPRESSED_SIGNED必填。
-
EDI消息压缩算法:参数用于指定 AS2 消息压缩所使用的算法。该参数在发送 AS2 消息时非常有用,允许指定一个压缩算法,该算法将应用于消息的内容,以便在传输过程中减小文件大小。 注意:消息结构为PLAIN_COMPRESSED、SIGNED_COMPRESSED、ENCRYPTED_COMPRESSED、ENCRYPTED_COMPRESSED_SIGNED必填。
可选值如下:
(1)ZIP
注意:为支持多种数据类型,AS2默认将请求体转为byte数组,方便后续流程使用,需手动将 byte数值 进行类型转换。
脚本语句如下:
byte[] bodyBytes = exchange.getMessage().getBody(); exchange.getMessage().setBody(new String(bodyBytes));
(十)HL7
HL7 触发器主要作用是接收通过 HL7 MLLP 协议发送的消息。
- 触发条件
收到满足条件的通过 HL7 MLLP 协议发送的消息。
- 属性配置
| 属性名称 | 必填 | 默认值 | 说明 |
|---|---|---|---|
| HL7连接 | 是 | 选择已创建的HL7数据连接。 | |
| 动作 | 是 | 选择需要的动作,支持 "接收消息"。 | |
| 主机地址 | 是 | HL7 MLLP 服务器监听的ip地址。 | |
| 端口 | 是 | 8888 | HL7 MLLP 服务器监听的端口,0~65535(包含)之间的整数。 |
| 转换 | 是 | none | 根据配置序列化为字符串后向后续流程传递,或者按字节数组向后传递 。支持none、HL7v2ToJson和HL7v2ToXml |
| 字符集 | 是 | UTF-8 | 序列化为字符串的字符集编码 |
(十一)CDC
cdc 触发器主要作用是定时从CDC服务器去拉取数据库操作变更发送的数据。
- 触发条件
基于已经安装部署好的CDC服务器获取到数据库的变更。
-
属性配置
1、选择已安装并且添加集成到系统中的CDC服务器
2、选择需要监听的数据库
| 属性名称 | 必填 | 默认值 | 说明 |
|---|---|---|---|
| CDC服务器 | 是 | 选择已集成的CDC服务器。 | |
| 数据库连接 | 是 | 选择创建的数据库连接。 | |
| 动作 | 是 | 选择需要的动作,支持 "变化数据捕捉"。 | |
| 需要订阅的源数据schema | 是 | 数据库的schema。 | |
| 订阅的数据表 | 是 | 数据库的表名。 | |
| 指定源数据库抽取的表schema | 是 | cdc任务执行相关数据库的schema。支持多个用英文逗号分隔 | |
| 指定源数据库抽取的表 | 是 | cdc任务执行相关数据库的表名。支持多个用英文逗号分隔 | |
| 拉取间隔时间 | 是 | 10秒 | CDC触发器作为客户端定时从CDC服务器拉取数据的定时时间,单位秒 |
(十二)EMAIL
EMAIL 触发器主要作用是接收邮件消息。
- 触发条件
经过轮询间隔,并且邮箱中存在想要获取的邮件消息。
- 属性配置
| 属性名称 | 必填 | 默认值 | 说明 |
|---|---|---|---|
| EMAIL连接 | 是 | 下拉框中会出现已经创建好的 imap 或 pop3 协议的 EMAIL 连接器。 | |
| 动作 | 是 | 接收电子邮件。 | |
| 文件夹 | 否 | INBOX | 不填则使用收件箱(INBOX)。若需要接收其他文件夹的邮件,则需要填入对应文件夹的名称。不同邮箱服务器的命名不同,请根据对应邮箱服务器的规则填写。 |
| 主题 | 否 | 邮件主题。若不填,则不过滤主题。若填写某关键字,则只获取主题中包含有该关键字的邮件。 | |
| 仅未读邮件 | 否 | 只获取未读邮件,不获取已读邮件。只有imap协议的连接器支持该功能。若使用pop3协议的连接器,则会获取已读和未读邮件。 | |
| 轮询间隔 | 是 | 5000 | 轮询间隔毫秒数,每经过轮询间隔时间,就会去获取一次邮件消息。若获取到了符合条件的消息,流程就会进入下一步。若没有获取到符合条件的消息,则不会进入流程的下一步。 |
| 电子邮件数量上限 | 否 | 5 | 每次获取的邮件数量上限,以收件时间逆序排序。 |
(十三)RabbitMQ
RabbitMQ 触发器主要作用是接收RabbitMQ队列中的消息。
- 触发条件
收到RabbitMQ队列中的消息。
- 属性配置
| 属性名称 | 必填 | 默认值 | 说明 |
|---|---|---|---|
| RabbitMQ连接 | 是 | 选择已创建的RabbitMQ数据连接。 | |
| 动作 | 是 | 接收消息。 | |
| 自动确认 | 是 | 是 | 是,RabbitMQ 会自动把发送出去的消息置为确认,适合消息可靠性要求不高的场景;否,RabbitMQ 会等待消费者显式地调用Basic.Ack命令,适合消息可靠性要求较高的场景。 |
| 是否自动删除 | 是 | 是 | exchange是否自动删除,需要与RabbitMQ中设置相同。 |
| 是否持久化 | 是 | 持久 | exchange是否持久化,需要与RabbitMQ中设置相同。 |
| 队列 | 是 | 队列名称。 | |
| routineKey | 否 | 路由键的值。 |
(十四)RocketMQ
注: 当前 RocketMQ 仅支持4.*!
RocketMQ 触发器主要作用是接收 RocketMQ 队列中的消息。
- 触发条件
收到 RocketMQ 队列中的消息。
- 属性配置
| 属性名称 | 必填 | 默认值 | 说明 |
|---|---|---|---|
| ROCKETMQ 连接 | 是 | 选择已创建的 RocketMQ 数据连接。 | |
| 动作 | 是 | 接收消息。 | |
| 消息主题 | 是 | 当前消息所属的主题的名称,RocketMQ 集群内全局唯一。 | |
| 消费者组 | 是 | 消费者分组是 RocketMQ 中承载多个消费行为一致的消费者的分组。 | |
| 订阅标签 | 否 | * | 消息的过滤标签,消费者可通过标签对消息进行过滤,仅接收指定标签的消息。 |
四、逻辑
逻辑组件用于处理流程中的数据处理,每个流程中可以多次重复使用同一个组件。
| 逻辑 | 说明 |
|---|---|
| 条件分支 | 通过指定条件后流程中运行特定操作 |
| For each循环 | 用于在应用中处理数组类型数据 |
| While循环 | 用于处理重复操作直到满足条件或状态发生变化 |
| 并发组件 | 用于将消息发送至多条子路径,然后并行地执行它们,最后对多个子路径的结果进行聚合,常试用场景为数据分发 |
| 过滤 | 用于过滤数据,仅满足条件的数据才会进入下一步操作 |
| 高级过滤 | 当条件复杂,无法使用基础过滤表达时,可以使用高级过滤组件 |
| 数据映射 | 用于可视化数据映射,无需编写程序 |
| 数据安全 | 用于数据加密,解密操作 |
| 数据脱敏 | 用于数据脱敏操作 |
| 日志 | 在执行流程的过程中,打印日志在控制台上,常用于运维排查问题 |
| 模板 | 将body等内容按照一定的模板进行输出 |
| 自定义脚本 | 支持使用groovy语法实现复杂逻辑处理功能 |
| 自定义变量 | 支持声明全局变量以及在任意一步指定值的功能,并支持脚本方式指定 |
| EDI | 支持 EDI 文档与 XML 文档互转、EDIFACT 文档与 XML 文档互转 |
| 事务 | 支持数据源本地事务 |
| try-catch | 支持在流程中捕获异常自行处理,类似于Java中的try-catch-finally |
| 返回 | 支持在流程中提前返回,类似于Java中的return |
(一)条件分支
若需要通过指定条件后在应用中运行特定操作,请添加条件操作。
此控制结构将流程中的数据与特定值或字段进行比较,然后可以指定基于数据是否符合条件运行的不同操作。
可以将一个条件嵌套在另一个条件中。
例如,您有一个应用,当接收到一条 KAFKA 消息时,发送一封邮件,该应用发送的电子邮件过多。您可以添加一个条件操作,以便仅在新项包含特定字符串时才发送电子邮件。
根据不同的条件来执行不同的分支,支持"简单条件"和"高级条件"两种方式。
- 简单条件:可使用选择字段和条件。
- 高级条件:使用编写条件语句。
当条件满足时会执行相应的分支流程。
- 属性配置
#- 简单条件
| 属性名称 | 必填 | 默认值 | 说明 |
|---|---|---|---|
| 条件名称 | 是 | 无 | 条件名称,支持If/else、If/else if、Else if、Else。 |
| 属性名称 | String | 是 | 指定要比较的字段。
{"name":"zhangsan", "age":9}取age字段则表达式为: ${body.age} |
| 条件 | 是 | 无 | 条件,支持等于、小于、大于、小于等于、大于等于、包含、不包含、匹配正则满足、不匹配正则满足、在…之内以及不在…之内。 |
| 值 | 是 | 无 | 指定作为条件的值或字段。 比如:针对 ${body.age},填入 "9"。 |
| 是否在分支结束返回 | 否 | 无 | 勾选上代表执行完if条件后,后面的组件都不执行,直接返回if条件执行结果。 |
| 输出参数 | 否 | 无 | 满足条件(需要勾选上"是否在分支结束返回"才会显示),直接返回配置返回参数定义的状态码和消息。 |
#- 高级条件
| 属性名称 | 必填 | 默认值 | 说明 |
|---|---|---|---|
| 条件名称 | 是 | 无 | 条件名称,支持If/else、If/else if、Else if、Else。 |
| 条件 | 是 | 无 | 指定要比较的字段。
{"name":"zhangsan", "age":9}${body.age}=9,代表age为 "9" 时,执行对应的逻辑 |
| 是否在分支结束返回 | 否 | 无 | 勾选上代表执行完if条件后,后面的组件都不执行,直接返回if条件执行结果。 |
| 输出参数 | 否 | 无 | 满足条件(需要勾选上"是否在分支结束返回"才会显示),直接返回配置返回参数定义的状态码和消息。 |
(二)For each循环
若要在应用中处理数组,可以使用逻辑组件"For each循环"。
此循环会对数组中的每一项重复一个或多个操作。
- 属性配置
| 属性名称 | 必填 | 默认值 | 说明 |
|---|---|---|---|
| 循环执行方式 | 是 | 串行 | 串行:集合中内容按序依次处理。 并行:集合中的内容,根据线程池可用线程数量,并发执行。 |
| 发生错误时 | 是 | 继续执行 | 继续执行: 当发生错误时,继续执行集合中后续数据项处理。 停止执行: 当发生错误时,不再处理集合中未处理的数据项。 |
| 聚合策略 | 是 | 合并所有结果 | 合并所有结果: 默认,分割运行结果,进行合并。 传入数据:舍弃分割运行结果,用分割前的数据继续执行路由。 最后一个结果:分割运行结果,取最后一个。 |
| 循环对象 | 是 | 变量 | 变量:需要输入一个变量。 脚本:脚本的返回值作为循环对象 |
| 输出对象名 | 是 | 无 | 对象循环操作后整个结果保存对象的名称。 |
(三)While循环
若要重复操作直到满足条件或状态发生变化,可以使用逻辑组件"While循环"。
应用首先检查条件或状态。
-
若条件满足,运行循环内的所有操作。
-
若条件不满足,则循环将停止。
-
属性配置 可选择"普通模式"或"专家模式","专家模式"为手动编写条件语句。
-
普通模式:普通模式相关属性配置如下所述
-
专家模式:直接编写groovy脚本语法
| 属性名称 | 必填 | 默认值 | 说明 |
|---|---|---|---|
| 属性名称 | 是 | 无 | 循环对象名称。 body:上一步输出的消息体 header:上一步输出的消息头 properties:整个流程全局属性 假设消息体格式: {"name":"zhangsan", "age":9}取age字段则表达式为: ${body.age} |
| 关系 | 是 | 无 | 条件,支持等于、小于、大于、小于等于、大于等于、包含、不包含、匹配正则满足、不匹配正则满足、在…之内以及不在…之内。 |
| 值 | 是 | 无 | 指定作为条件的值或字段。 比如:针对 ${body.age},填入 "9"。 |
(四)并发组件
可以将消息发送至多条子路径,然后并行地执行它们,最后对多个子路径的结果进行聚合。
- 属性配置
| 属性名称 | 必填 | 默认值 | 说明 |
|---|---|---|---|
| 分支名称 | 是 | 无 | 分支名称,该组件至少有两个分支及以上,每个分支名称不能为空且不能相同。 |
| 分支超时时间 | 否 | 60000 | 分支的超时时间,默认设置60000(毫秒),最大值可以设置为600000(毫秒)。 |
| 分支发生错误时停止 | 否 | false | false: 当发生错误时,继续执行集合中后续数据项处理。 true:当发生错误时,不再处理集合中未处理的数据项。 |
| 结果合并格式 | 否 | JSON | JSON:每个子路径格式都转为一致的JSON,多个子路径的结果进行同层合并数组。 XML:每个子路径格式都转为一致的XML,多个子路径的结果进行同层合并成数组。 |
(五)过滤(基础过滤器
用于过滤数据,仅满足条件的数据才会进入下一步操作。
基础过滤,通过选择前面组件传递过来的参数进行过滤。选择框中会出现前面组件的输出或者输入字段。可用选择多种条件来执行,如果条件满足才执行下面的流程,不满足则返回。
- 属性配置
| 属性名称 | 必填 | 默认值 | 说明 |
|---|---|---|---|
| 条件关系 | 是 | 与 | 与:下述所有条件关系为与,一个不满足则不满足。 或:下述所有条件关系为或,一个满足则满足。 |
| 属性名称 | 是 | 无 | 指定要比较的字段。 body:上一步输出的消息体 header:上一步输出的消息头 properties:整个流程全局属性 假设消息体格式: {"name":"zhangsan", "age":9}取age字段则表达式为: ${body.age} |
| 条件 | 是 | 无 | 包括:等于、小于、大于、小于等于、大于等于、包含、不包含、匹配正则满足、不匹配正则满足、在…之内以及不在…之内。 |
| 值 | 是 | 无 | 指定作为条件的值或字段。 比如:针对 ${body.age},填入 "9"。 |
(六)高级过滤
当条件复杂,无法使用基础过滤表达时,可以使用逻辑组件:高级过滤。
高级过滤:用户自己编辑条件,条件满足才执行下面的流程,不满足则返回。
高级过滤后会有响应,但若不符合条件,就无法继续执行到后面的组件,而是在高级过滤这里就返回。
- 属性配置
| 属性名称 | 必填 | 默认值 | 说明 |
|---|---|---|---|
| 过滤条件 | 是 | 无 | 用户自己使用groovy编辑条件,条件满足才执行下面的流程,不满足则返回。 |
(七)数据映射
该组件支持可视化数据映射,无需编写程序。
支持 JSON、XML 互相转换,只支持字段级的映射。
数据映射是系统内置的一个逻辑组件,用于将源数据映射到目标数据,以便在不同的系统之间共享数据。
内置的数据映射逻辑组件是基于 Web 的交互式用户界面,简化了 JSON、XML、CSV 数据之间的映射配置。
数据映射的源可以是上一步的输出,或者是全局变量。目标是下一步的输入或者全局变量。
数据映射可以是对象到对象的映射,数组到数组的映射。
当作对象到对象的映射时,对象下的字段就不能再作映射。对象到对象的映射不支持转换。
全局变量若是没有 schema 的 object 对象,则不会出现在映射的源或者目标中。
- 图标说明
| 图标 | 说明 |
|---|---|
| 显示数据字段面板 | |
| 列表展示映射配置信息 | |
| 名称空间 | |
| 开启/关闭字段映射预览 | |
| 开启/关闭类型显示 | |
| 显示/隐藏已映射字段 | |
| 显示/隐藏未映射字段 | |
| 导入映射、数据定义、数据示例 | |
| 创建新映射 | |
| 将选定字段连接到指定映射 | |
| 应用条件表达式 | |
| 完整映射的字段 | |
| 集合字段 | |
| 可展开的复杂类型 | |
| 被应用于字段的映射 |
-
映射类型
-
一对一
单一"源"字段到单一"目标"字段的映射。
-
多对一
多个"源"字段到一个"目标"字段的映射。
默认操作下,需要在"目标"字段上指定分割符,默认空格分割符。
-
一对多
单个"源"字段到多个"目标"字段的映射。
默认操作下需要指明"源"字段中的分割符。
数据映射执行期间会将"源"字段值进行拆分,并插入到各"目标"字段。
-
集合
支持集合到非集合映射、非集合到集合映射、集合到集合映射。
(八)数据安全
支持将选择的字段进行加密,解密操作。可以添加多个字段。
-
创建含数据安全的流程,采用post定义上一个组件的输出内容。
-
选择数据安全,对数据安全中的username字段进行加密,对pwd字段进行解密。
-
支持的加解密方式有:
- BASE64
- 3DES
- SM4
- SM2
- DES
- AES
- RSA
- 属性配置
| 属性名称 | 必填 | 默认值 | 说明 |
|---|---|---|---|
| 字段名称 | 是 | 无 | 需要加密/解密的字段。 |
| 方式 | 是 | 无 | 加密或者解密。 |
| 密钥 | 是 | 无 | 加密或者解密的密钥。 |
| 算法 | 是 | 无 | BASE64、3DES、SM4、SM2、DES、AES 、RSA |
(九)数据脱敏
支持将选择的字段进行脱敏操作。可以添加多个字段。
- 属性配置
| 属性名称 | 必填 | 默认值 | 说明 |
|---|---|---|---|
| 字段名称 | 是 | 无 | 需要脱敏的字段。 |
| 方式 | 是 | 无 | 脱敏。 |
| 签名方式 | 否 | 无 | 支持不加盐、随机盐和签名盐。 |
| 替换符 | 否 | * | 用于遮盖的符号。 |
| 算法 | 是 | 无 | 哈希脱敏、遮盖脱敏、替换脱敏、变换脱敏和自定义脱敏 |
(十)日志
在执行流程的过程中,打印日志在控制台上。
-
属性配置
-
Message Context:开关开启,请求上下文打印在控制台。
-
Message Body:开关开启,上一个组件的返回参数body打印在控制台。
-
自定义文本:用户可自己定义打印日志,打印在控制台上。
(十一)模板
模板可以将body等内容按照一定的模板进行输出。
- 属性配置
| 属性名称 | 必填 | 默认值 | 说明 |
|---|---|---|---|
| 模板 | 是 | 无 | 用户可自定义模板,模板中可使用变量,变量使用$包裹。 |
| 模板类型 | 是 | Mushache | 模板类型支持Mushache和Freemarker。 |
(十二)自定义脚本
支持执行用户输入脚本内容。
创建一个含自定义脚本的流程,如下图所示。
request.body代表自定义变量组件返回的消息体。
在自定义变量里面使用函数式,如下所示。
- 使用方式:
#{funcitonName} - 使用
#{}括起来:使用户定义的函数和项目内部其他函数区分。
(十三)自定义变量
支持声明全局变量以及在任意一步指定值的功能,并支持脚本方式指定。
全局变量分为标量和 object 对象。
- 若是标量,可以将 output 中 header,body 中的字段赋值给全局变量。全局变量的赋值可以多次,不限制。
- 若是 object 对象,可以将上一步输出赋给此 object 对象。同时,会将 output 的 schema 赋值给此 object。
- schema 只能赋值一次。
- 若上一步的输出没有 schema,可以将 output.body 赋给全局变量。
全局变量的值类型支持文本、脚本。
例如:脚本中填写 return body.name,则会将上一个组件的输出内容 body.name 赋值给全局变量。
若组件需要引用全局变量,使用 properties.initVarInnerObject.变量名称。
- 属性配置
| 属性名称 | 必填 | 默认值 | 说明 |
|---|---|---|---|
| 名称 | 是 | 无 | 用户自定义变量名称。 |
| 类型 | 是 | String | 支持String、Boolean、Object等 |
| 赋值 | 是 | 文本 | 支持文本和脚本。 |
(十四)EDI
该组件支持 EDI 文档与 XML 文档互转、EDIFACT 文档与 XML 文档互转。
文本赋值示例,如下所示。
tring: xxx
Object:{"k1":"v1","k2":"v2"}
Array:[1,2,3]
Integer/Long:1
Enumeration:one,two,three
Decimal:1.1314
Date and Time: 1662460477949(毫秒时间戳)
Binary:xxx
Boolean:true/false
- EDI
| 属性名称 | 必填 | 默认值 | 说明 |
|---|---|---|---|
| EDI 格式 | 是 | EDIFACT | 支持EDI、EDIFACT。 |
| 操作类型 | 是 | EDI TO XML | 支持EDI TO XML、XML TO EDI。 |
| 解析器配置 | 是 | 有 | 支持修改、自定义。 |
| 映射配置 | 是 | 无 | 无。 |
- EDIFACT
| 属性名称 | 必填 | 默认值 | 说明 |
|---|---|---|---|
| EDI 格式 | 是 | EDIFACT | 支持EDI、EDIFACT。 |
| 操作类型 | 是 | EDI TO XML | 支持EDI TO XML、XML TO EDI。 |
| EDI Schema | 是 | d00a | 支持d00a、d00b等。 |
| EDI 消息类型 | 是 | APERAK | 支持APERAK、APRACK等。 |
| 解析器配置 | 是 | 有 | 不支持修改。 |
(十五)事务
支持数据源本地事务。即在同一个流程中,不同步骤对同一个数据源的操作都在同一个事务中。比如第三个步骤删除数据成功,但第四个步骤插入数据失败,则第三个步骤的操作会回滚。
事务逻辑组件只能出现在流程的第二步。
如图,第四个步骤因主键冲突插入失败,第三个步骤的删除操作会回滚。
(十六)try-catch
支持在流程中捕获异常自行处理,类似于Java中的try-catch-finally。try和catch步骤总是成对出现,try和catch之间的步骤发生的异常会被捕获,catch下可以有多个分支可捕获不同的异常,最大的是Throwable。finally分支一定会被执行。
如图,当数据库步骤发生了异常,我们自行处理,并返回字符串"catch住了"给调用方。
(十七)返回
支持在流程中提前返回,类似于Java中的return。例如我们想向数据库中插入数据,插入前校验传入的name是否为空,如果为空,则提前返回,返回时的body是上一个步骤出的body,所以我们可以搭配自定义脚本来组织一些我们想要的返回结果。 如果不为空才执行后续的数据库插入操作。
五、函数
为了快速创建流程和重复利用流程程中的代码,将在多个流程中重复使用的功能封装成一个可 以复用的组件,称之为函数。
目前支持3种类型的函数:字符串、转换和工具类。
(一)字符串
字符串函数主要是用于字符串的处理,包含流转字符串、大小写转换等。
| 函数名称 | 功能描述 |
|---|---|
| concat | 字符串拼接。 |
| startsWith | 减产是否以指定字符串开头。 |
| endsWith | 检查是否以特定字符串结尾。 |
| formatNumber | 根据指定的格式以字符串形式返回一个数字。 |
| guid | 生成全局唯一标识。 |
| indexOf | 返回字符串的起始位置。 |
| lastIndexOf | 返回最后一次出现的字符串的起始位置。 |
| length | 返回字符串或数组中的项数。 |
| replace | 字符串替换。 |
| split | 分割字符换。 |
| substring | 字符串截取。 |
| toLower | 字符串转换成小写。 |
| toUpper | 字符串转换成大写。 |
| trim | 去除前置和尾随空格。 |
(二)转换
| 函数名称 | 功能描述 |
|---|---|
| inputStreamToString | inputStream流转为字符串。 |
| jsonToXml | 将json参数转成xml。 |
| objectToJson | 对象转json字符串。 |
| objectToXml | 对象转xml。 |
| exchangeMessageToString | 消息体转换成字符串。 |
| bodyToBytes | 消息体转换成字节数组。 |
| objectToBytes | 对象转字节数组。 |
| xmlToJson | 将xml参数转成json。 |
| toBool | 转换成布尔型,失败返回false。 |
| toBoolean | 转换成布尔型,失败返回null。 |
| toCharArray | 转换成字符数组。 |
| toCharacter | 转换成字符。 |
| toChar | 转换成字符。 |
| toInteger | 转换成整型。 |
| toLong | 转换成长整型。 |
| toDouble | 转换成 Double。 |
| toString | 转换成字符串。 |
(三)工具类
| 函数名称 | 功能描述 |
|---|---|
| setHeader | 设置头部信息。 |
| setBody | 设置消息体。 |
| resetStreamCache | 重置 streamCache 流读取位置。 |
| resetStream | 重置 inputStream 流读取位置。 |
| getContentType | 获取 contentType。 |
| getContentEncoding | 获取 content 编码。 |
| setSequenceToProperty | 生成全局唯一 ID 并设置到 properties 中,key 为 tongISUniqueId。 |
| setSequenceToHeader | 生成全局唯一 ID 并设置到 header 中,key 为 tongISUniqueId。 |
(三)自定义函数
依据业务场景,内置函数不能满足需求,可以自定义添加函数。使用Java编写函数,打成Jar包,然后添加到系统便于后续集成编排使用。
- 上传自定义函数函数,Jar的报名为自定义函数在列表中的分类名称,如下CQVAT.jar上传后的所有函数都在CQVAT分组之下
上传Jar包
选择函数
结果展示
- 使用自定义函数,在流程中选择上述的自定义函数,填写对应参数
- 删除自定义函数。单机函数后面的删除按钮"X"。所有函数删除之后,函数分组名称也会被删除。
六、子流程
为了方便流程片段的复用,支持子流程功能。子流程是没有触发器的流程片段,可以部署,可以被普通流程引用。
七、出站端点
系统是通过创建数据连接的方式构建系统连接。用户可通过配置数据连接参数,生成系统对应的数据连接,以便在流程中使用。在创建流程前,需要先创建数据连接。
| 出站端点 | 说明 |
|---|---|
| HTTP | 用于调用各种的HTTP服务。 |
| HTTPS | 用于调用各种https服务 |
| REST API | 用于使用REST API的服务,方便管理。 |
| SOAP API | 用于使用SOAP API的服务 |
| 数据库 | 用于操作数据库 |
| JMS1.1 | 用于订阅和发布信息 |
| JMS2 | JMS2是Simple JMS的升级版,主要用于订阅和发布消息 |
| KAFKA | 用于连接KAFKA的服务 |
| REDIS | 用于连接REDIS的服务 |
| MQTT | 用于连接MQTT的服务 |
| SAP | 用于连接SAP的服务 |
| FTP/SFTP | 用于上传或者下载文件 |
| SOCKET | 用于连接SOCKET的服务 |
| 用于接收和发送邮件 | |
| AS2 | 用于连接AS2的服务 |
| HL7 | 用于连接HL7的服务 |
| ElasticSearch | 用于连接ElasticSearch的服务 |
(一)HTTP
HTTP是用于调用各种的HTTP服务。
- 属性配置
| 属性名称 | 必填 | 默认值 | 说明 |
|---|---|---|---|
| 连接 | 是 | 无 | 具体的HTTP类型的数据连接 |
| 动作 | 是 | 无 | 连接动作,目前仅有一种 "调用HTTP服务URL" |
| 请求方法 | 否 | 无 | 请求连接的方法,支持如下 8 种:GET、PUT、POST、DELETE、HEAD、OPTIONS、TRACE、PATCH |
| 服务路径 | 否 | 无 | 服务路径,与连接的 URL 拼接成具体的 API 路径 |
(二)HTTPS
HTTPS是用于调用各种的HTTPS服务。
- 属性配置
| 属性名称 | 必填 | 默认值 | 说明 |
|---|---|---|---|
| 连接 | 是 | 无 | 具体的HTTPS类型的数据连接 |
| 动作 | 是 | 无 | 连接动作,目前仅有一种 "调用HTTP服务URL" |
| 请求方法 | 否 | 无 | 请求连接的方法,支持如下 8 种:GET、PUT、POST、DELETE、HEAD、OPTIONS、TRACE、PATCH |
| 服务路径 | 否 | 无 | 服务路径,与连接的 URL 拼接成具体的 API 路径 |
(三)动态HTTP
动态HTTP是用于调用各种的HTTP服务,支持动态参数。
- 属性配置
| 属性名称 | 必填 | 默认值 | 说明 |
|---|---|---|---|
| 连接 | 是 | 无 | 选择HTTP类型的动态HTTP连接 |
| 动态服务 URL | 是 | 无 | 动态服务 URL 如:${headers.dynamic},${body.dynamic}。从 headers 或 body 中,获取 URL 进行访问。由于可以传入不同的 URL,因此可以通过访问不同的URL。 |
| 默认 URL | 否 | 无 | 默认 URL。如:http://httpbin.org。若 "动态服务URL" 获取到的 URL 为空,则使用 "默认 URL"。若默认 URL 也为空,则抛出异常。 |
| 连接超时时间(ms) | 是 | -1 | 建立HTTP连接的超时时间,单位为毫秒。默认为 "-1",表示不超时。 |
| 响应超时时间(ms) | 是 | -1 | HTTP响应的超时时间,单位为毫秒。默认为 "-1",表示不超时。 |
| 启用重试 | 是 | 否 | 当HTTP请求超时或异常时,是否重试。默认为 "否",表示不启用重试。 |
| 重试次数 | 是 | 0 | 启用重试时必填,当HTTP请求超时或异常后,再请求的次数。 |
| 首次重试间隔时间(ms) | 是 | 0 | 启用重试时必填,当HTTP请求超时或异常后,进行第一次重试间隔的时间。 |
| 最大重试间隔时间(ms) | 是 | 0 | 启用重试时必填,重试间隔时间会根据重试次数指数增长。 间隔时间的计算公式为:首次重试间隔时间乘以 2 的 n 次方,n 代表 "重试次数-1"。当超过最大重试时间时,以最大重试时间间隔为准。例如:首次重试间隔时间填 "2000",重试次数填 "3",最大重试间隔时间填 "5000",则第一次重试间隔时间为 "2000",第二次重试间隔时间为 "4000",第三次重试间隔时间为 "5000"。 |
| 动作 | 是 | 无 | 连接动作,目前仅有一种 "调用HTTP服务URL"。 |
| 请求方法 | 否 | 无 | 请求连接的方法,支持如下 8 种:GET、PUT、POST、DELETE、HEAD、OPTIONS、TRACE、PATCH。 |
| 服务路径 | 否 | 无 | 服务路径,与连接的 URL 拼接成具体的 API 路径。 |
(四)REST API
REST API是用于使用REST API的服务,方便管理。
- 属性配置
| 属性名称 | 必填 | 默认值 | 说明 |
|---|---|---|---|
| 连接 | 是 | 无 | 具体的REST API类型的数据连接 |
| 动作 | 是 | 无 | 连接动作,具体的REST 接口 |
(五)SOAP API
SOAP API是用于使用SOAP API的服务。
- 属性配置
| 属性名称 | 必填 | 默认值 | 说明 |
|---|---|---|---|
| 连接 | 是 | 无 | 具体的SOAP API类型的数据连接 |
| 动作 | 是 | 无 | 连接动作,具体的SOAP 接口 |
(六)数据库
数据库是用于使用数据库的服务。
支持两种模式,普通模式和专家模式。
专家模式直接编写 SQL 语句,而普通模式是通过界面操作最后拼接出sql语句。
- 属性配置
| 属性名称 | 必填 | 默认值 | 说明 |
|---|---|---|---|
| 连接 | 是 | 无 | 具体的数据库类型的数据连接 |
| 数据库名称 | 是 | 无 | 数据库名称 |
| 操作类型 | 是 | select | 数据库操作类型,包含 select、insert、delete、update、upsert。 |
| 模式 | 是 | 普通模式 | 支持普通模式和专家模式 |
(七)JMS1.1
JMS1.1是用于使用JMS1.1的服务。
- 属性配置
| 属性名称 | 必填 | 默认值 | 说明 |
|---|---|---|---|
| 连接 | 是 | 无 | 具体的JMS1.1类型的数据连接 |
| 动作 | 是 | 无 | 连接动作,支持发送消息和接收消息 |
| 目标类型 | 是 | 无 | 发送或接收消息的类型,支持主题 Topic 和队列 Queue。 |
| 目标名称 | 否 | 无 | 主题或者队列的名称。该名称可以填一个固定的值,也可以是动态的,如:${headers.dynamic},${body.dynamic}。从 headers 或 body 中获取动态目标名称。由于可以传入不同的目标名称,所以可以访问不同的目标。 |
(八)JMS2
JMS2是用于使用JMS2的服务。
- 属性配置
| 属性名称 | 必填 | 默认值 | 说明 |
|---|---|---|---|
| 连接 | 是 | 无 | 具体的JMS2类型的数据连接 |
| 动作 | 是 | 无 | 连接动作,支持发送消息和接收消息 |
| 是否持续发送 | 否 | 无 | 是否持续发送消息,动作为发送消息时填写 |
| 目标类型 | 是 | 无 | 发送或接收消息的类型,支持主题 Topic 和队列 Queue。 |
| 目标名称 | 否 | 无 | 主题或者队列的名称。该名称可以填一个固定的值,也可以是动态的,如:${headers.dynamic},${body.dynamic}。从 headers 或 body 中获取动态目标名称。由于可以传入不同的目标名称,所以可以访问不同的目标。 |
(九)Kafka
Kafka是用于使用Kafka的服务。
- 属性配置
| 属性名称 | 必填 | 默认值 | 说明 |
|---|---|---|---|
| 连接 | 是 | 无 | 具体的Kafka类型的数据连接 |
| 动作 | 是 | 无 | 连接动作,支持发布消息和获取消息 |
| autoOffsetReset | 是 | 无 | 选择默认起始位置,支持"earliest"、"latest"和"none"。 |
| 主题名称 | 是 | 无 | 主题名称。该名称可以是一个固定值,也可以是动态的,如:${headers.dynamic},${body.dynamic}。从 headers 或 body 中获取主题名称。由于可以传入不同的主题名称,所以可以访问不同的主题。 |
| 拉取消息超时时间(单位ms) | 否 | 5000 | 拉取消息超时时间,动作为获取消息时选填 |
| 消费者组名称 | 否 | 无 | 消费者组名称,动作为获取消息时选填。 |
(十)MQTT
MQTT是用于使用MQTT的服务。
- 属性配置
| 属性名称 | 必填 | 默认值 | 说明 |
|---|---|---|---|
| 连接 | 是 | 无 | 具体的MQTT类型的数据连接 |
| 动作 | 是 | 无 | 连接动作,支持发布 |
| MQTT topic名称 | 是 | 无 | MQTT 发布消息的 topic 名称。该名称可以是一个固定值,也可以是动态的,如:${headers.dynamic},${body.dynamic}。从 headers 或 body 中获取主题名称。由于可以传入不同的主题名称,所以可以访问不同的主题。 |
(十一)Redis
Redis是用于使用Redis的服务。
- 属性配置
| 属性名称 | 必填 | 默认值 | 说明 |
|---|---|---|---|
| 连接 | 是 | 无 | 具体的Redis类型的数据连接 |
| 动作 | 是 | 无 | 连接动作,支持redis出站 |
| 选择操作 | 是 | 无 | 具体的 redis 出站操作 |
(十二)SAP
SAP是用于使用SAP的服务。
SAP的操作类型分为 3 类clear、idoc 和 rfc。
- clear属性配置
| 属性名称 | 必填 | 默认值 | 说明 |
|---|---|---|---|
| 连接 | 是 | 无 | 具体的SAP类型的数据连接 |
| 动作 | 是 | 无 | 连接动作,支持 "sap-clear-cache" |
- idoc属性配置
| 属性名称 | 必填 | 默认值 | 说明 |
|---|---|---|---|
| 连接 | 是 | 无 | 具体的SAP类型的数据连接 |
| 动作 | 是 | 无 | 动作类型,如下所示。 sap-qidoc-destination、sap-idoc-destination、sap-qidoclist-destination 、sap-idoclist-destination |
| 目的名称 | 是 | 无 | 目的名称 |
| IDoc类型 | 是 | 无 | IDoc类型 |
| IDoc类型扩展 | 是 | 无 | IDoc类型扩展 |
| 系统版本 | 否 | 无 | 系统版本 |
| 应用版本 | 否 | 无 | 应用版本 |
| 队列名称 | 否 | 无 | 队列名称 |
- rfc属性配置
| 属性名称 | 必填 | 默认值 | 说明 |
|---|---|---|---|
| 连接 | 是 | 无 | 具体的SAP类型的数据连接 |
| 动作 | 是 | 无 | 动作类型,如下所示。 sap-trfc-destination、sap-qrfc-destination |
| 目的名称 | 是 | 无 | 目的名称 |
| 有状态 | 否 | 无 | 是否携带状态。如果为是,则表示携带状态。如果为否,则表示不携带状态。 |
| 事务 | 否 | 无 | 事务状态。如果为是,则表示事务状态。如果为否,则表示非事务状态。 |
| 队列名称 | 否 | 无 | 队列名称 |
| RFC名称 | 是 | 无 | RFC名称 |
(十三)FTP/SFTP
FTP/SFTP是用于使用FTP/SFTP的服务。
- 属性配置
| 属性名称 | 必填 | 默认值 | 说明 |
|---|---|---|---|
| 连接 | 是 | 无 | 具体的FTP/SFTP类型的数据连接 |
| 动作 | 是 | 无 | 连接动作,支持上传和获取文件内容。当选择获取文件内容时,如果流程的触发器是 REST API,并且 FTP/SFTP 连接是最后一个步骤,那么可以下载文件。 |
| FTP目录 | 是 | 无 | FTP 操作的目录。只能使用相对路径,不可使用绝对路径。可以是一个固定值,也可以是动态的,如:${headers.dynamic}。从 headers 或 body 中获取 FTP 目录。由于可以传入不同的FTP目录,所以可以访问不同的FTP目录。 |
| 文件存在操作 | 是 | 无 | 文件操作类型,如下所示。 覆写、追加、失败、忽略、移动、尝试重命名。 |
| 获取文件内容后删除文件 | 否 | 无 | 当动作为获取文件内容时出现此选项。如果选择是,在获取文件内容后,会删除此文件。 是、否。 |
| 文件名 | 否 | 无 | 文件名。当动作选择获取文件内容时,文件名可以是固定值,也可以是动态的。例如:${headers.dynamic},${parameters.abc},${body.def}。 |
| 临时文件名 | 否 | 无 | 复制时的临时文件名称。 |
| 临时文件前缀 | 否 | 无 | 复制时的临时文件前缀。 |
(十四)SOCKET
SOCKET是用于使用SOCKET的服务。
- 属性配置
| 属性名称 | 必填 | 默认值 | 说明 |
|---|---|---|---|
| 连接 | 是 | 无 | 具体的SOCKET类型的数据连接 |
| 动作 | 是 | 无 | 连接动作,支持发送消息。 |
(十五)EMAIL
EMAIL是用于发送邮件的服务。
- 属性配置
| 属性名称 | 必填 | 默认值 | 说明 |
|---|---|---|---|
| 连接 | 是 | 无 | 具体的EMAIL类型的数据连接 |
| 动作 | 是 | 无 | 连接动作,支持发送电子邮件。 |
| 收件人 | 是 | 无 | 一个或多个用逗号分隔的电子邮件地址,用于接收电子邮件。例如:abc@163.com,def@163.com。 |
| 抄送 | 否 | 无 | 一个或多个逗号分隔的电子邮件地址,用于电子邮件的副本发送。例如:abc@163.com,def@163.com。 |
| 密送 | 否 | 无 | 一个或多个逗号分隔的电子邮件地址,用于电子邮件的密件副本发送。例如:abc@163.com,def@163.com。 |
| 主题 | 否 | 无 | 在电子邮件主题行中插入的文本。例如:主题。 |
| 内容 | 否 | 无 | 您要发送的电子邮件内容。例如:内容。 |
| 发件人 | 是 | 无 | 发件人的电子邮件地址(即选用的邮件连接器的用户名)。例如:abc@163.com。 |
| 参数优先级 | 否 | 消耗数据 | 输入值或消耗数据。默认消耗数据,指优先使用上一个步骤传过来的数据作为邮件的内容、主题、收件人等。若选择输入值,则优先使用本页面填入的值,除非为空,才会使用上一个步骤传入的值。 |
消耗数据传入的 json 格式,如下所示。
{
"from": "developer@163.com",
"to": "thankyou@126.com",
"cc": "123369@qq.com",
"bcc": "tong@tongtech.com",
"subject": "tongesb email connector subject",
"content": "Dear User\r\n Are you OK"
}
其中from为发件人,to为收件人,cc为抄送,bcc为密送,subject为主题,content为邮件内容。
(十六)AS2
AS2是用于使用AS2的服务。
- 属性配置
| 属性名称 | 必填 | 默认值 | 说明 |
|---|---|---|---|
| AS2消息结构 | 是 | 无 | AS2 消息结构通常指的是消息的 MIME 类型和内容是如何封装的。AS2 消息可以包含一个或多个 MIME 部分,每个部分可以是不同的内容类型,例如文本、二进制数据或 EDI 文档。 (1)PLAIN(未加密,未签名,未压缩)消息未经任务加密、签名、压缩处理。 (2)SIGNED(未加密,签名,未压缩)消息包含一个签名的 MIME 部分。 (3)ENCRYPTED(加密,未签名,未压缩)消息包含一个加密的 MIME 部分。 (4)SIGNED_ENCRYPTED(加密,签名,未压缩)消息包含一个先签名然后加密的 MIME 部分。 (5)PLAIN_COMPRESSED(未加密,未签名,压缩)消息包含一个压缩的 MIME 部分。 (6)SIGNED_COMPRESSED(未加密,签名,压缩)消息包含一个先压缩后签名的 MIME 部分。 (7)ENCRYPTED_COMPRESSED(加密,未签名,压缩)消息包含一个先压缩后加密的 MIME 部分。 (8)ENCRYPTED_COMPRESSED_SIGNED(加密,签名,压缩) 消息包含一个先压缩、签名然后加密的 MIME 部分。 |
| AS2收件人 | 是 | 无 | 指定接收方的 AS2 ID。AS2 ID 是一个唯一标识符,用于在 AS2 消息交换中识别接收方。这个标识符通常是由参与 AS2 通信的各方事先商定的。 |
| AS2发件人 | 是 | 无 | 指定发送方的 AS2 ID。AS2 ID 是一个唯一标识符,用于在 AS2 消息交换中识别发送方。这个标识符通常是由参与 AS2 通信的各方事先商定的。 |
| AS2 From消息头 | 否 | 无 | 用于指定发送方的电子邮件地址。这个地址通常用于 AS2 消息的 From 头部字段,以及在 MDN(Message Disposition Notification)消息中,如果需要通知发送方消息的处理状态的话。该参数的值应该是一个有效的电子邮件地址,它可以是发送方的实际电子邮件地址,也可以是一个专门的地址,用于处理 AS2 相关的通知。 |
| AS2 Subject消息头 | 否 | 无 | 用于设置 AS2 消息的电子邮件主题。AS2 消息可以通过电子邮件传输,该参数可用于设置电子邮件的主题。 |
| EDI 消息 ContentType 消息头 | 否 | 无 | 用于指定 AS2 消息中的 EDI(电子数据交换)内容类型。EDI 是一种用于在商业伙伴之间交换电子文档的标准格式,包括订单、发票、物流信息等。 |
| Disposition-Notification-To 消息头 | 否 | 无 | 用于指定接收 MDN (Message Disposition Notification) 消息的电子邮件地址。 MDN 消息是一个可选的回执,用于告知发送方消息已被接收和处理。 当接收方处理 AS2 消息后,如果配置了 MDN 交换,它将发送一个 MDN 消息回给发送方。 这个回执消息包含了关于消息处理状态的信息,例如是否已读取、是否已处理等。该参数的值应该是一个有效的电子邮件地址,这个地址将用于接收 MDN 消息。 |
| AS2附件名 | 否 | 无 | 用于指定 AS2 消息附件的文件名。该参数在发送 AS2 消息时非常有用,允许指定一个文件名,该文件名将用于创建 MIME 类型的附件,并包含在 AS2 消息中。 如果不指定该参数,默认情况下 AS2 消息将不包含附件。 如果要发送的消息是文本或 EDI 格式的,并且不需要附件,则不需要指定此参数 |
| EDI消息压缩算法 | 否 | 无 | 参数用于指定 AS2 消息压缩所使用的算法。该参数在发送 AS2 消息时非常有用,允许指定一个压缩算法,该算法将应用于消息的内容,以便在传输过程中减小文件大小。 消息结构为PLAIN_COMPRESSED、SIGNED_COMPRESSED、ENCRYPTED_COMPRESSED、ENCRYPTED_COMPRESSED_SIGNED必填。 可选值如下: (1)ZIP |
| EDI消息加密算法 | 否 | 无 | 参数用于指定在发送 AS2 消息时使用的加密算法。AS2 消息可以使用 MIME 加密来保护消息内容的安全性,该参数就是用来指定加密过程中所使用的算法。 消息结构为ENCRYPTED、ENCRYPTED_COMPRESSED、ENCRYPTED_COMPRESSED_SIGNED必填。 可选值如下: (1)AES128_CBC (2)AES192_CBC (3)AES256_CBC (4)AES128_CCM (5)AES192_CCM (6)AES256_CCM (7)AES128_GCM (8)AES192_GCM (9)AES256_GCM (10)CAMELLIA128_CBC (11)CAMELLIA192_CBC (12)CAMELLIA256_CBC (13)CASTS_CBC (14)DES_EDE3_CBC (15)IDEA_CBC (16)SEED_CBC (17)RC4 (18)RC2_CBC |
| EDI消息加密证书(X.509) | 否 | 无 | 参参数用于指定用于加密 AS2 消息的证书链。证书链是一个包含多个证书的列表,每个证书都验证了前一个证书的有效性,直到最顶层的根证书。当前仅支持单个X.509标准的证书文件。 消息结构为ENCRYPTED、ENCRYPTED_COMPRESSED、ENCRYPTED_COMPRESSED_SIGNED必填。 可选值如下: |
| EDI消息签名收据算法列表 | 否 | 无 | 参数用于指定用于生成和验证 AS2 消息的数字签名消息摘要(MIC)的算法。AS2 协议要求对 AS2 消息进行数字签名,以确保消息的完整性和真实性。常见的默认算法包括 MD5、SHA-1 等。 消息结构为SIGNED、SIGNED_ENCRYPTED、SIGNED_COMPRESSED、ENCRYPTED_COMPRESSED_SIGNED必填。 |
| EDI消息签名算法 | 否 | 无 | 参数用于指定在发送 AS2 消息时使用的数字签名算法。AS2 协议要求对 AS2 消息进行数字签名,以确保消息的完整性和真实性。 消息结构为SIGNED、SIGNED_ENCRYPTED、SIGNED_COMPRESSED、ENCRYPTED_COMPRESSED_SIGNED必填。 |
| EDI消息签名证书(X.509) | 否 | 无 | 参数用于指定用于生成和验证 AS2 消息的数字签名的证书链。证书链是一个包含多个证书的列表,每个证书都验证了前一个证书的有效性,直到最顶层的根证书。当前仅支持单个X.509标准的证书文件。 消息结构为SIGNED、SIGNED_ENCRYPTED、SIGNED_COMPRESSED、ENCRYPTED_COMPRESSED_SIGNED必填。 |
| EDI消息签名密钥(RSA算法、PKCS8格式) | 否 | 无 | 参数用于指定用于生成和验证 AS2 消息的数字签名的私钥。私钥是用于生成数字签名的密钥,它必须与用于验证签名的公钥配对使用。当前仅支持 RSA 算法,并且私钥必须以 PKCS8 格式存储。 消息结构为SIGNED、SIGNED_ENCRYPTED、SIGNED_COMPRESSED、ENCRYPTED_COMPRESSED_SIGNED必填。 |
(十七)HL7
用于HL7发送HL7消息
- 属性配置
| 属性名称 | 是否必填 | 默认值 | 描述 |
|---|---|---|---|
| 连接 | 是 | 无 | 具体的HL7类型的数据连接 |
| 动作 | 是 | 无 | 支持发送消息 |
| 字符集 | 是 | UTF-8 | 支持的字符集 |
| 转换器 | 是 | none | 支持JsonToHl7v2、XmlToHl7v2和none |
(十八)ElasticSearch
用于ElasticSearch发送数据
- 查询属性配置
| 属性名称 | 是否必填 | 默认值 | 描述 |
|---|---|---|---|
| 连接 | 是 | 无 | 具体的ElasticSearch类型的数据连接 |
| 动作 | 是 | 无 | 支持查询、写入和批量写入 |
| 查询语句 | 否 | 无 | 查询DSL |
| 索引名称 | 否 | 无 | 要查询的索引 |
| 返回结果集数量 | 否 | 10 | 查询返回结果集数量 |
- 写入属性配置
| 属性名称 | 是否必填 | 默认值 | 描述 |
|---|---|---|---|
| 连接 | 是 | 无 | 具体的ElasticSearch类型的数据连接 |
| 动作 | 是 | 无 | 支持查询、写入和批量写入 |
| 文档ID | 否 | 无 | 文档ID,为空则自动生成 |
| 索引名称 | 否 | 无 | 要查询的索引 |
(十九)RabbitMQ
用于向RabbitMQ发送数据。
- 属性配置
| 属性名称 | 是否必填 | 默认值 | 描述 |
|---|---|---|---|
| 连接 | 是 | 选择已创建的RabbitMQ数据连接。 | |
| 动作 | 是 | 发送消息。 | |
| 是否自动删除 | 是 | 是 | exchange是否自动删除,需要与RabbitMQ中设置相同。 |
| 是否持久化 | 是 | 持久 | exchange是否持久化,需要与RabbitMQ中设置相同。 |
| 队列名 | 否 | 队列名称。 | |
| routineKey | 是 | 路由键的值。 |
(二十)泛微OA_9.00
通过RESTAPI 方式集成泛微OA。
- 属性配置
| 属性名称 | 是否必填 | 默认值 | 描述 |
|---|---|---|---|
| 连接 | 是 | 选择已创建的泛微OA的连接。 | |
| 动作 | 是 | 选择调用泛微OA的接口,E9版本集成535个接口 | |
| http方法 | 是 | 接口方法的调用方式 | |
| path | 是 | 接口的详细路径 | |
| 请求参数 | 是 | 接口的参数位置以及名称描述等信息 | |
| 请求/响应示例 | 是 | 接口的示例内容 |
(二十一)RocketMQ
注: 当前 RocketMQ 仅支持4.*!
用于向 RocketMQ 发送数据。
- 发送消息属性配置
| 属性名称 | 是否必填 | 默认值 | 描述 |
|---|---|---|---|
| 连接 | 是 | 选择已创建的 RocketMQ 数据连接。 | |
| 动作 | 是 | 发送消息。 | |
| 生产者组 | 是 | 生产者组是指同一类Producer的集合,这类Producer发送同一类消息且发送逻辑一致。 | |
| 消息标签 | 否 | 消息标签,方便服务器过滤使用,目前只支持每个消息设置一个。 | |
| 消息主题 | 是 | 当前消息所属的主题的名称,RocketMQ 集群内全局唯一。 | |
| 等待发送结果 | 否 | 否 | 是否等待消息发送成功或失败的结果。 |
-
发送消息(回写响应)属性配置
生产者发送消息时,将生成一个
messageKey,并将其附加到消息的key中。消息发送后,消费者将监听回复主题配置项中所配置的主题。当来自回复主题的消息中包含messageKey时,则表示已收到回复,消息将继续向之后的步骤路由。如果连接配置中的请求超时时间已过且没有收到回复,则会抛出异常。
| 属性名称 | 是否必填 | 默认值 | 描述 |
|---|---|---|---|
| 连接 | 是 | 选择已创建的 RocketMQ 数据连接。 | |
| 动作 | 是 | 发送消息(回写响应)。 | |
| 生产者组 | 是 | 生产者组是指同一类Producer的集合,这类Producer发送同一类消息且发送逻辑一致。 | |
| 回复消费者组 | 否 | 消费者分组是 RocketMQ 中承载多个消费行为一致的消费者的分组;回复消费者组仅消费回复主题中的消息。 | |
| 回复主题 | 否 | 消费者收到当前消息后回复消息所属的主题的名称,RocketMQ 集群内全局唯一。 | |
| 消息标签 | 否 | 消息标签,方便服务器过滤使用,目前只支持每个消息设置一个。 | |
| 消息主题 | 是 | 当前消息所属的主题的名称,RocketMQ 集群内全局唯一。 |
附 E9接口文档:https://e-cloudstore.com/ec/api/applist/index.html#/