数据服务的服务编排为您提供拖拽式、可视化的工作流编排能力。您可以按照业务逻辑,以串行、并行和分支等结构编排多个API及函数服务为工作流。
前提条件
- 您需要购买DataWorks企业版及以上版本,才可以使用服务编排功能。详情请参见DataWorks版本服务计费说明。
- 仅华东2(上海)地域支持使用服务编排功能,当前服务编排功能改造中,暂停使用,请您耐心等待功能升级改造。
背景信息
当您调用服务编排API服务时,系统将根据设定依次执行各个服务节点、传递服务节点参数并自动管理每个服务节点的状态转换。服务编排功能极大简化了多个服务之间组合调用的开发和运维成本,让您可以专注于业务本身。
服务编排的优势如下:
- 降低API服务开发成本
通过拖拽式、可视化的方式进行服务编排,无需额外编写代码即可完成多个API服务的串行、并行和分支调用,大大降低了API服务的开发成本。
- 提升服务调用性能
多个API或函数服务的调用在同一个容器实例内完成,相比您自行编写和搭建工作流服务可有效降低服务调用的网络开销,显著提升服务调用性能。
- 使用Serverless架构
服务编排采用Serverless架构。Serverless架构能够实现动态伸缩,您无需关注底层运行环境,只需要关注业务逻辑本身。
输入与输出规则
数据服务参数取值规则基于JSONPath。JSONPath是一种信息抽取类库,用于JSON文件中抽取指定信息。详情请参见JSONPath。
例如,对于A>B>C这3个顺序节点,节点C需要取节点A、B的输出值:
- A节点输出:{"namea":"valuea"}。
取A节点输出:${A.namea}。
- B节点输出:{"nameb":"valueb"}。
取B节点输出:$.nameb或${B.nameb}。
系统内置开始节点作为整个服务编排的入参。例如服务编排的入参为{"namewf":"valuewf"},则任意一个节点可通过${START.namewf}获取对应入参值。
说明 开始节点和结束节点是服务编排的系统内置节点,您可以重命名,但无法删除。开始节点相当于当前工作流的第0个节点。
参数说明
- 服务编排的请求参数单击服务编排编辑页面右侧的请求参数,您可以通过手动添加或自动解析的方式配置请求参数:
- 手动添加:单击新增参数,手动新增服务编排的请求参数。
- 自动解析:如果工作流的第1个节点是API节点,单击自动解析请求参数,您可以将该API的请求参数自动映射为服务编排的请求参数。
- API节点的请求参数单击API节点,在面板中单击输入请求参数,配置请求参数值。
- 如果不设置参数值,系统会默认进行同名映射,即匹配上个节点输出结果JSON的第一层的同名字段值。说明 如果当前节点是工作流的第一个节点,则请求参数值将与服务编排的请求参数值进行同名映射。
- 如果设置了参数值,系统会使用您设置的值。说明 如果期望设置当前节点的参数值为上游指定节点的指定参数值,则需要使用JSONPath表达式。
- 如果不设置参数值,系统会默认进行同名映射,即匹配上个节点输出结果JSON的第一层的同名字段值。
- API节点的返回参数单击API节点,在面板中勾选设置输出结果,并使用JSON格式自定义输出结果的表达式。示例如下。
{ "return1":"$.data.rows.user_id", "return2":"$.data.rows.user_name" }
- Python节点的请求参数
单击Python节点,在请求参数编辑栏中,输入请求参数的内容。
- Python节点的返回参数单击Python节点,在面板中勾选设置输出结果,并使用JSON格式自定义输出结果的表达式。示例如下。
{ "return1":"$.data.rows.user_id", "return2":"$.data.rows.user_name" }
常用获取参数的JSONPath表达式。
JSONPath表达式 | 在请求参数中使用 | 在返回结果中使用 |
---|---|---|
$. | 获取上个节点输出结果的根对象。 | 获取当前节点输出结果的根对象。 |
$.param | 获取上个节点输出结果中的param参数值。 | 获取当前节点输出结果中的param参数值。 |
${START} | 获取服务编排的请求参数,即开始节点的输出。 | |
${NodeID} | 获取ID为NodeID的节点的输出结果。 | |
${NodeID.param} | 获取NodeID节点输出结果中的param参数值。 |
服务编排示例
- 进入数据服务页面。
- 登录DataWorks控制台。
- 在左侧导航栏,单击工作空间列表。
- 选择工作空间所在地域后,单击相应工作空间后的 。
- 注册API。本文通过注册API的方式生成一个新的API:
- 注册函数。
- 创建服务编排。
- 编辑服务编排。
- 测试服务编排。
- 单击页面右上方的测试。
- 在API测试对话框中,单击确定。
- 在页面下方查看运行日志和运行结果。