数据服务的服务编排为您提供拖拽式、可视化的工作流编排能力。您可以按照业务逻辑,以串行、并行和分支等结构编排多个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表达式。
-
-
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。
您也可以打开相应的业务流程,右键单击API,选择新建 > 注册API。
-
在注册API对话框中,配置各项参数。详情请参见注册API
-
单击确认。
-
-
注册函数。
-
在服务开发页面,鼠标悬停至
图标,单击函数 > 新建Python函数。
您也可以找到相应的业务流程,右键单击函数,选择新建 > 新建Python函数。
-
在新建Python函数对话框中,配置各项参数。详情请参见管理函数。
-
单击确认。
-
进入函数的编辑页面,在编辑代码区域,输入以下代码。
# -*- coding: utf-8 -*- # event (str) : in filter it is the API result, in other cases, it is your param # context : some environment information, temporarily useless # import module limit: json,time,random,pickle,re,math import json def handler(event,context): # load str to json object obj = json.loads(event) # add your code here # end add return obj
-
在环境配置区域,设置内存和超时时间。
-
单击工具栏中的
图标。
-
-
创建服务编排。
-
在服务开发页面,鼠标悬停至
图标,单击新建服务编排。
您也可以找到相应的业务流程,右键单击服务编排,选择新建服务编排。
-
在服务编排对话框中,配置各项参数。
参数
描述
API名称
支持中文、英文、数字、下划线(_),且只能以英文或中文开头,4~50个字符。
API Path
API存放的路径,例如/user。
说明
支持英文、数字、下划线(_)和连字符(-),且只能以( /) 开头,不得超过200个字符。
协议
支持HTTP和HTTPS。
如果您需要通过HTTPS协议调用API,请您发布API至网关后,在API网关控制台绑定独立域名,并上传SSL证书。详情请参见支持HTTPS。
请求方式
支持GET和POST。
返回类型
仅支持JSON返回类型。
可见范围
包括工作空间和私有:
-
工作空间:该API对本工作空间内的所有成员可见。
-
私有:该API仅对API的负责人可见,且暂不支持授权。
说明
如果设置可见范围为私有,在目录树中,仅自己可见,工作空间内的其他成员不可见。
标签
从标签列表中选择相应的标签,详情请参见创建及管理API标签。
说明
标签名称支持汉字、英文、数字和下划线(_),您最多可以设置5个标签,且每个标签不超过20个字符。
描述
对API进行简要描述,不得超过2000个字符。
目标文件夹
存放服务编排的目录。
-
-
单击确认。
-
-
编辑服务编排。
-
在服务编排的编辑页面,您可以根据如图所示的顺序拖拽对应模块并连线。
单击API1编辑节点,从选择API列表中选择注册的API名称,选中设置输出结果,并输入
{"user_id":"$.data[0].id"}
。输出结果设置规则:使用JSONPath来进行处理,其中获取节点${NodeA.namea} 语法同入参规则一致。
{"user_id":"$.data[0].id"}
表示把当前节点的处理结果中的data数组的第一个值的id赋值给user_id。然后,输出{“user_id”:”value”} 形式的JSON数据。-
单击PYTHON1节点后,从选择函数列表中选择注册的函数名称。
-
单击SWITCH1节点后,在编辑对话框中,单击设置分支条件。
条件表达式考察上一个节点的输出,例如,
${节点ID.输出值名}>1
或$.输出值名>1
。条件表达式支持的操作符包括==、!=、>=、>、<=、<、&&、!、()、+、-、*、/和%。本例中,user_id是上游输出结果,作为下游的请求参数。
新分支1:$.user_id != 1 分支1中,上游的输出结果不等于1。 新分支2:$.user_id == 1 分支2中,上游的输出结果等于1。
-
单击结束节点后,单击页面右侧的返回参数,配置返回参数。
-
-
测试服务编排。
-
单击页面右上方的测试。
-
在API测试对话框中,单击确定。
-
在页面下方查看运行日志和运行结果。
-
内容没看懂? 不太想学习?想快速解决? 有偿解决: 联系专家
阿里云企业补贴进行中: 马上申请
腾讯云限时活动1折起,即将结束: 马上收藏
同尘科技为腾讯云授权服务中心。
购买腾讯云产品享受折上折,更有现金返利:同意关联,立享优惠
转转请注明出处:https://www.yunxiaoer.com/171762.html