
# 注册原生服务
注册Native Service后，才可以在AstroZero的脚本、服务编排等中调用原生服务的接口，也可将该原生服务开放给第三方系统进行访问。
 #### 安装原生服务
注册原生服务前，请按照如下操作安装原生服务。
1. 参考[登录管理中心](https://support.huaweicloud.com/usermanual-astrozero/astrozero_06_2092.html)中操作，登录AstroZero管理中心。
2. 在左侧导航栏中，选择"应用管理 \> 软件包管理 \> 软件包安装"。
3. 在软件包安装页面，单击"新建"。
4. 将待安装的原生服务安装包拖拽到对应位置，单击"安装"。 
   若需要检查软件包中对象属性变更情况时，请勾选"检查软件包中对象属性变更情况"，单击"检查并安装"。
   在弹出的是否立即注册安装原生服务的提示框中，根据需要选择是否立即注册原生服务。
   
   
 
#### 注册原生服务
在AstroZero中注册原生服务有两种方式，方式一是在管理中心的"服务中心 \> 服务注册"中注册，另一种方式是在原生服务开发页面的"导航"中注册。此处将为您介绍如何在"服务中心 \> 服务注册"中注册原生服务，在原生服务开发页面注册原生服务的操作，请参见[注册Native Service](https://support.huaweicloud.com/usermanual-astrozero/astrozero_05_0269.html)。
1. 参考[登录管理中心](https://support.huaweicloud.com/usermanual-astrozero/astrozero_06_2092.html)中操作，登录AstroZero管理中心。
2. 在左侧导航栏中，选择"服务中心 \> 服务注册"。
3. 单击"+ 注册服务"，在注册服务弹框的"选择服务"下拉列表中，选择[安装原生服务]中已安装的原生服务。
4. 参照[表1]设置其他参数，单击"确认"。
   
    表1注册原生参数说明 
   | 参数      | 说明                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       |
   |:---|:---|
   | 名称      | 注册的服务名称。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 |
   | API服务地址 | Ingress的访问地址，需包含协议头http或者https。 若购买的为专享版AstroZero，前台页面调用原生服务的API时，需要保证AstroZero和原生服务处于同一个虚拟私有云 VPC。若AstroZero和原生服务处于不同VPC，请参照[VPC对等连接](https://support.huaweicloud.com/usermanual-vpc/vpc_peering_0000.html)创建VPC对等连接，打通VPC。在AstroZero注册服务时，"API服务地址"里的IP填入Ingress的小网IP。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                |
   | 认证方式    | 访问原生服务的鉴权认证方式，当前支持以下几种： - 无认证：不需要鉴权认证。  - 用户名\&密码：选择该方式，需要配置具体的"用户名"和"密码"。  - JWT：JSON Web Tokens，简称JWT，选择该方式，需要配置具体的"JWT密钥"。  - OAuth 2.0：选择该方式，需要配置如下参数。 - 授权模式：即OAuth 2.0中的grant_type字段的取值，目前支持两种模式"客户端模式"（client_credentials）和"密码模式"（password）。  - 认证地址：获取access_token的请求路径，其服务应遵循RFC6749中的说明。  - 客户端ID：即client_id，客户端模式下必填。  - 客户端密钥：即client_secret，客户端模式下必填。  - 用户名："授权模式"为"密码模式"时才需要配置。  - 密码："授权模式"为"密码模式"时才需要配置。     |
      
   注册后，在"已注册服务"列表中可以看到当前账号已注册的所有原生服务。
   
   
 
#### 取消原生服务注册
1. 参考[登录管理中心](https://support.huaweicloud.com/usermanual-astrozero/astrozero_06_2092.html)中操作，登录AstroZero管理中心。
2. 在左侧导航栏中，选择"服务中心 \> 服务注册"。
3. 在注册服务列表中，单击已注册的原生服务。
4. 在原生服务注册详情页面，单击"取消注册"，即可取消该原生服务的注册。 
   取消后原生服务安装包仍保留在软件包管理中，再次注册无需重新安装。
   
   
 
#### 如何使用原生服务
原生服务在AstroZero内的使用场景包括但不限于：
- 在服务编排中调用 将原生服务集成到AstroZero中，供服务编排内部调用。
  图1在服务编排中调用   
  ![](https://support.huaweicloud.com/usermanual-astrozero/zh-cn_image_0000001932888568.png "点击放大") 
- 供外部系统通过Restful接口调用 通过下面的REST接口，调用原生服务，该调用方式只适用于外部接口。
  ```
  https://AstroZero域名/native/NativeService1/0.1.0/health
  ```
  其中，"AstroZero*域名* "请配置为AstroZero对外提供的默认域名，"***/*** ***native/NativeService1/0.1.0/health***"为该服务的公共接口的开放URL，可以在公共接口详情中查询获得。
  图2公共接口详情   
  ![](https://support.huaweicloud.com/usermanual-astrozero/zh-cn_image_0000001933047972.png "点击放大") 
- 在脚本中调用 原生服务集成到AstroZero上，且在AstroZero上自定义了公共接口后，可以在脚本中内部调用公共接口。
  脚本部分示例如下：
  ```
  //其中"appcube.cn-north-4.huaweicloud.com"为对外提供的默认域名
  let resp3 = httpClient.post("https://appcube.cn-north-4.huaweicloud.com" + "/native/NativeService1/0.1.0/health", callOptions3);
  console.log(context.getHost())
  console.log(resp3.body);
  if (resp3.body.resCode == "0" && resp3.body.result) {
  console.log('auth success, currrent user is: ', resp3.body.result.name)
  }
  ```
  其中"***appcube.cn-north-4.huaweicloud.com*** "为对外提供的开发态默认域名，"***/*** ***native/NativeService1/0.1.0/health***"为该服务的公共接口的开放URL，可以在公共接口详情中查询获得。该调用方式只适用于外部接口。
  
- 在页面中调用
  - 在高级页面，可以在Widget代码中调用原生服务的自定义公共接口。
  
  - 在标准页面，可以在事件代码中直接调用原生服务的自定义公共接口或通过定义服务模型，关联调用原生服务的服务编排，再在页面事件代码中调用服务模型从而来调用原生服务。在标准页面上传组件中还可以调用原生服务的自定义接口实现上传功能。标准页面中上传组件功能介绍请参见[上传](https://support.huaweicloud.com/usermanual-astrozero/astrozero_05_0143.html)。
   
- 在BPM中调用 在服务编排中调用原生服务后，向BPM设计页面的泳道中拖入"调用服务编排"图标。选择![](https://support.huaweicloud.com/usermanual-astrozero/zh-cn_image_0000001932888572.png)，在"服务编排配置"页面，选择需要调用的服务编排，配置输入输出参数。
  图3在BPM中调用   
  ![](https://support.huaweicloud.com/usermanual-astrozero/zh-cn_image_0000001960127277.png "点击放大") 
- 在触发器中调用 在服务编排中调用原生服务后，在触发器中可调用该服务编排，当满足触发器规则时，系统会执行该服务编排。
  
 
