在实际业务使用过程中,有较多场景需要对API进行业务逻辑加工,或异构数据源实现表的关联查询等复杂场景,仅仅通过向导或脚本模式新建API已不能满足需求,服务编排正好能够解决这样的问题。

服务编排支持构建串行、并行的工作流,通过开始节点、结束节点、API节点、Python节点和条件节点满足更加复杂的加工逻辑处理。

功能使用前提


权限相关

使用服务编排功能之前,需前往安全中心 - 功能权限,由项目负责人管理员设置API的新建、查看、导出下载、编辑、删除、复制等权限。
服务编排 - 图1

服务编排资源组

除了权限之外,还需在配置管理 - 资源组管理页面完成服务编排资源组的创建。
服务编排 - 图2

功能入口


数据服务页面,点击左侧菜单栏服务开发 - API管理列表 - API列表,在右侧API列表页面,点击服务编排按钮即可进入新建服务编排页面。
服务编排 - 图3

新建服务编排


新建服务编排共包含两个步骤:基础信息和工作流配置。在基础信息配置页面主要完成名称、协议、请求方式、描述等信息的填写;工作流配置页面通过不同节点的组合完成复杂的加工逻辑。

基础信息

服务编排的基础信息配置页面同新建API的页面类似,如下:
服务编排 - 图4

基本信息 描述
服务编排名称 必填。格式要求:1~64个字符,需以中文、字母开头,仅支持中文、字母、数字、”-“、”“。
服务编排名称 必填。格式要求:1~64个字符,需以中文、字母开头,仅支持中文、字母、数字、”-“、”“。
API集合 选择已创建的API集合,如果未创建,可点击右侧创建集合按钮进行创建。
服务编排path 通过集合path和服务编排path生成唯一的请求地址path。
协议 支持HTTP和HTTPS两种协议。
支持HTTPS协议要完成SSL证书配置,为避免无法调用,在使用之前需进行如下准备:
1. 拥有一个HTTPS可控域名且申请SSL证书;
2. 具备可接受外网请求的Nginx服务;
3. 配置SSL证书。
请求方式 支持GET和POST。
1. 若选择GET方式,入参位置为QUERY;
2. 若选择POST方式,入参位置为BODY。
返回类型 JSON
超时时间 默认10000ms。支持自定义设置。
描述 服务编排的描述。
API标签 可选择或输入标签,最多关联5个标签。
apiToken鉴权 API调用支持apiToken和应用两种鉴权方式。如果打开,可通过apiToken调用API,只需要在header中添加字段apiToken、appKey和version即可,适用于报表、数据大屏等安全性要求不高的使用场景。具体使用方法可参考SDK下载中示例说明文件。
API协助管理者 可指定当前API的协助管理者,等同于创建人,拥有对API的所有操作权限。
选择资源组 服务编排运行时使用的查询服务资源组,需事先在配置管理页面创建服务编排资源组。

工作流配置

工作流配置页面可通过拖动左侧节点至画布上进行开发逻辑的编辑。画布默认节点为开始节点和结束节点,左侧节点有三种分别是:Python节点API节点条件节点UDF节点
服务编排 - 图5

  • 开始节点
    右键点击开始节点,选择编辑按钮可对开始节点进行编辑。节点配置包括node ID节点名称以及参数输入配置
    服务编排 - 图6

    说明:
    1.node ID需要在执行运行后自动生成,每个节点的node ID唯一;
    2.节点名称默认为开始,在开始节点中不允许修改;
    3.输入参数配置根据下游节点的输入参数进行配置。
  • 结束节点
    右键结束节点,选择编辑按钮可对结束节点进行编辑。节点配置包括node ID节点名称以及输出参数配置
    服务编排 - 图7
    结束节点支持系统填充返回参数功能,且仅支持填充上游为API类型的节点数据。
    服务编排 - 图8

    说明:
    1.node ID需要在执行运行后自动生成,每个节点的node ID唯一;
    2.节点名称默认为结束,在结束节点中不允许修改;
    3.输出参数配置根据最后想要的输出结果进行配置。
  • Python节点
    Python节点拖入至画布,右键节点选择编辑按钮可对节点进行编辑。节点配置包括node ID节点名称描述以及代码编辑区
    服务编排 - 图9
    此处,节点名称支持自定义,可根据实际情况填写。代码编辑区默认代码如下:

      import json,time,random,pickle,re,math
      def handle(inputJson):
      # 入参字典
      input = json.loads(inputJson)
      # 统一用output字典封装返回结果
      output = {}
      #自定义代码区
      #XXXXXXX
      #XXXXXXX
      #XXXXXXX
      return json.dumps(output)

    从代码可知,对于Python节点的要求输入和输出都是json格式
    此外,Python节点支持测试功能,在编辑页面点击测试节点按钮,输入样例,即可进行代码测试,也可右键节点选择测试功能进行测试。
    服务编排 - 图10

  • API节点
    API节点拖入至画布,右键节点选择编辑按钮可对节点进行编辑。节点配置包括node ID节点名称选择API描述以及参数信息
    服务编排 - 图11
    其中,节点名称支持自定义输入。选择API需要绑定当前服务编排创建者具有发布和下线权限且处于已发布状态的API。选择了需要的API后,会自动在参数信息中填入入参定义后端返回参数

  • 条件节点
    条件节点拖入至画布,右键节点选择编辑按钮可对节点进行编辑。节点配置包括node ID节点名称描述代码编辑区以及条件配置条件节点会根据输出结果结合执行条件执行下游节点,例如id>20执行下游节点a,则在节点a对应输入框中填写”id >20”。
    服务编排 - 图12

  • UDF节点
    服务编排支持UDF节点,可通过上传jar包处理更为复杂的编排业务逻辑。将UDF节点拖入至画布,右键节点选择编辑按钮可对节点进行编辑。节点配置包括节点名称描述以及上传Jar包
    服务编排 - 图13

当所有节点配置完成后,可点击画布上方的服务编排 - 图14运行按钮,进行服务编排的测试,测试通过后点击完成并退出按钮,即可完成配置。
服务编排 - 图15

其它操作


同API一样,服务编排也支持发布下线测试复制锁定编排升级以及版本历史操作。点击右侧更多,可选择查看相应的功能。
服务编排 - 图16

复制

复制功能为例,点击复制,则会进入复制服务编排页面,在名称和PATH增加时间戳后缀。
服务编排 - 图17

导出

此外,服务编排支持导出功能,支持导出PDF导出WORD
服务编排 - 图18

在线升级

服务编排还支持在线升级操作,共包括三个步骤:

  • 首先,服务编排在线升级的第一步不允许修改基本信息;
    服务编排 - 图19

  • 第二步在工作流配置页面,只有当整个工作流运行成功才可进入编排升级,第二步支持放弃并退出;

  • 第三步可针对编排的实例节点进行升级,支持放弃并退出,只有所有节点均升级成功,表示编排升级完成并可以退出。
    服务编排 - 图20

版本历史

服务编排支持版本历史的管理,对已发布的服务编排重新下线进行编辑,编辑完成后再发布会产生新的版本,或者编排升级成功之后也会产生新的版本。
服务编排 - 图21

处于发布状态的编排支持回滚操作。
服务编排 - 图22

此外还可以通过选择两个不同的版本进行版本对比操作,在对比过程中,分组下有一项信息不一致,则分组名称会被标红。
服务编排 - 图23

服务编排使用注意事项


当前服务编排使用过程中要遵循以下使用规则:

  1. 开始节点支持多条输出
  2. API上游不可再为API节点
  3. API上游若为条件节点,则条件节点上游不可再为API节点
  4. 条件节点上游不可再为条件节点,且上游仅能有一个节点
  5. 结束节点上游不可为开始和条件节点
  6. 不允许发生自环
  7. 画布中不允许存在游离节点