
# 如何在服务编排中调用脚本
#### 场景说明
介绍如何创建名为"GetResourceListFlow"的服务编排，由Script封装而来，用于生成资源列表中的数据，模拟用户可下载的资源。
#### 逻辑设计
表1设计逻辑 
| 设计点  || 结合业务场景设计                 |
|:--|---|:---|
| 服务编排类型 || 选择"Autolaunched Flow"。   |
| 基本图元_脚本 || 脚本图元配置界面选中具体的脚本，配置入参、出参。 |
| 指定图元的逻辑关系 || 连接起始和脚本图元。               |
   
#### 前提条件
- 已创建名为"Approved Resource"的Object，用于存储资源数据，该对象中需要包含如下字段。
  表2Approved Resource对象说明 
  | 字段标签         | 字段名称 （系统自动生成） | 字段类型  | 取值                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     | 读写权限 | 是否加入界面布局 | 含义      |
  |:---|:---|:---|:---|:---|:---|:---|
  | ownerId      | ownerId__CST                                                                   | 文本    | 长度：255                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 | 全选   | 不勾选      | 资源拥有者ID |
  | ResourceName | ResourceName__CST                                                              | 文本    | 长度：255                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 | 全选   | 不勾选      | 资源名称    |
  | Type         | Type__CST                                                                      | 选项列表  | 枚举值如下： - File  - Folder                                                                                                                                                   | 全选   | 不勾选      | 资源类型    |
  | SubmitDate   | SubmitDate__CST                                                                | 日期/时间 | 不涉及                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    | 全选   | 不勾选      | 资源提交时间  |
  | ApproveDate  | ApproveDate__CST                                                               | 日期/时间 | 不涉及                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    | 全选   | 不勾选      | 资源审批时间  |
  | Status       | Status__CST                                                                    | 选项列表  | 枚举值如下： - Waiting  - Submitted  - Approved   | 全选   | 不勾选      | 审批状态    |
     
  
- 已创建场景描述中的脚本。该脚本根据对象的数据生成资源列表数据，用于前台数据呈现。示例脚本为"ResourceListScript.zip"，单击[下载链接](https://obs-for-bj4-gongyouyun-update.obs.cn-north-4.myhuaweicloud.com/obs/deploy/ResourceListScript.zip)可获取该脚本包。该脚本中定义的入参和出参说明，如[表3]和[表4]所示。
   表3入参说明 
  | 参数      | 参数类型   | 说明                               |
  |:---|:---|:---|
  | ownerId | string | 资源拥有者ID。                         |
  | limit   | number | 每页展示的资源条数。                       |
  | offset  | number | 每页展示第一条资源的偏移量，即从offset+1条资源开始展示。 |
     
   表4出参说明 
  | 参数         | 参数类型   | 说明                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          |
  |:---|:---|:---|
  | resource   | struct | 返回资源数组集合。 - approveDate：审批时间，若该记录已审批则返回审批时间。  - ownerId：资源拥有者Id。  - resourceName：资源名称。  - status：资源状态。 - Waiting：记录未提交。  - Submitted：记录已提交未审批。  - Approved：记录已审批。    - submitDate：资源提交时间。  - type：资源类型。   |
  | totalCount | number | 资源总数（固定100）。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                |
     
  
 
#### 操作步骤
1. 参考[如何创建服务编排](https://support.huaweicloud.com/usermanual-astrozero/astrozero_05_0601.html#astrozero_05_0601__section1133218183213)中操作，创建一个服务编排，标签和名称为GetResourceListFlow。
   
   图1创建服务编排GetResourceListFlow   
   ![](https://support.huaweicloud.com/usermanual-astrozero/zh-cn_image_0000001933045408.png "点击放大")
   
   
2. 创建该服务编排的入参和出参变量。 
   由于该服务编排封装的是"ResourceListScript"脚本，所以该服务编排的入参和出参的字段类型和字段名与"ResourceListScript"脚本保持一致。
    表5服务编排变量 
   | 变量类型         | 参数名        | Data Type | Input/Output Type |
   |:---|:---|:---|:---|
   | 普通变量Variable | ownerId    | text      | Input Only        |
   | 普通变量Variable | limit      | number    | Input Only        |
   | 普通变量Variable | offset     | number    | Input Only        |
   | 普通变量Variable | totalCount | number    | Output Only       |
   | 结构体变量Struct  | resource   | struct    | Output Only       |
      
   1. 在服务编排编辑器页面右侧，选择![](https://support.huaweicloud.com/usermanual-astrozero/zh-cn_image_0000001932886128.png)，在私有结构体页面单击"新增"。
      创建输出参数结构体类型变量"resource"前，首先需要创建私有结构体类型。
      图2添加私有结构体类型   
      ![](https://support.huaweicloud.com/usermanual-astrozero/zh-cn_image_0000001933045428.png "点击放大") 
   
   2. 设置页面参数。
      - 在"基本信息"中，输入结构体名字、描述信息。
      
      - 在"结构体成员"中，设置自定义成员变量，包括设置成员变量的名称、数据类型、是否必填、是否是集合、描述信息等。单击"新增"，可增加成员变量。成员变量需要和"ResourceListScript"脚本中定义的出参"resource"成员变量（参见[表4]）保持一致。
      
      
      创建私有结构体后，即可创建私有结构体变量。
      图3配置私有结构体   
      ![](https://support.huaweicloud.com/usermanual-astrozero/zh-cn_image_0000001960124833.png "点击放大") 
   
   3. 在服务编排编辑器页面右侧，选择![](https://support.huaweicloud.com/usermanual-astrozero/zh-cn_image_0000001960124749.png)，在全局上下文页面，单击"对象变量"后的加号。
      图4单击对象变量后的加号   
      ![](https://support.huaweicloud.com/usermanual-astrozero/zh-cn_image_0000001960284629.png "点击放大") 
   
   4. 选择"私有结构体"，设置页面参数。
      图5配置私有结构体变量   
      ![](https://support.huaweicloud.com/usermanual-astrozero/zh-cn_image_0000002014061229.png "点击放大")
      表6私有结构体变量参数说明 
      | 参数    | 参数说明                                                                                                |
      |:---|:---|
      | 名称    | 结构体的变量名称，与"ResourceListScript"脚本中定义的出参命名保持一致。 本示例设置为resource。 |
      | 私有结构体 | 结构体变量类型。 本示例选择刚创建的结构体类型名称"resourcestruct"。                       |
      | 默认值   | 变量的默认取值。 本示例不用配置。                                                |
      | 描述    | 变量的描述说明，建议设置为该变量的作用。                                                                                |
      | 是否为数组 | 是否为数组型变量，即集合变量。 本示例请勾选。                                        |
      | 外部使用  | 若勾选该选项，代表该变量为外部使用变量，翻译时不校验其是否被使用。                                                                   |
         
      
   
   5. 在服务编排编辑器页面右侧，选择![](https://support.huaweicloud.com/usermanual-astrozero/zh-cn_image_0000001960284605.png)，在全局上下文页面，单击"变量"后的加号。
   
   6. 单击新增变量后的"..."，选择"设置"。
      图6设置变量   
      ![](https://support.huaweicloud.com/usermanual-astrozero/zh-cn_image_0000001960124845.png "点击放大") 
   
   7. 配置普通变量"ownerId"。
      图7配置变量   
      ![](https://support.huaweicloud.com/usermanual-astrozero/zh-cn_image_0000001960284613.png "点击放大")
      表7普通变量参数说明 
      | 参数    | 参数说明                                                      |
      |:---|:---|
      | 名称    | 新建变量的名称。 本示例设置为ownerId。 |
      | 数据类型  | 变量的数据类型。                                                  |
      | 默认值   | 变量的默认取值。 本示例不用配置。        |
      | 描述    | 新增变量的描述说明，建议设置为变量的作用。                                     |
      | 是否为数组 | 是否为数组型变量即集合变量。 本示例不用勾选。 |
      | 外部使用  | 若勾选该选项，代表该变量为外部使用变量，翻译时不校验其是否被使用。                         |
         
      
   
   8. 参考上述操作，创建[表5]中其他普通变量。
   
   9. 在服务编排编辑器页面右侧，选择![](https://support.huaweicloud.com/usermanual-astrozero/zh-cn_image_0000001933045500.png)，按照[表5]从全局上下文页面中拖拽参数到相应的入参和出参区域，设置服务编排的入参和出参。
      图8设置服务编排的入参和出参   
      ![](https://support.huaweicloud.com/usermanual-astrozero/zh-cn_image_0000001977592892.png "点击放大") 
   
   
   
   
3. 拖拽"基本"下的"脚本"图元至画布中。
4. 单击![](https://support.huaweicloud.com/usermanual-astrozero/zh-cn_image_0000001933045400.png)，设置页面参数。![](https://support.huaweicloud.com/usermanual-astrozero/zh-cn_image_0000001960124761.jpg "点击放大")
   
   将服务编排中的变量赋值给脚本中的输入参数，脚本中的输出参数赋值给服务编排中的变量。
   图9配置脚本   
   ![](https://support.huaweicloud.com/usermanual-astrozero/zh-cn_image_0000002014074505.png "点击放大")
   表8脚本配置参数说明 
   | 参数      | 参数说明                                                                                                    |
   |:---|:---|
   | 脚本      | 调用的脚本名称，选择"*命名空间*_ResourceListScript"。 只有在启用状态下同一应用工程内的脚本，才能被服务编排调用。 |
   | 输入参数/目标 | 脚本的输入参数名称，直接在下拉框中选择。                                                                                    |
   | 输入参数/源  | 服务编排中的变量，为目标赋值。 请从"全局上下文"中，拖拽之前创建的服务编排输入变量。                        |
   | 输出参数/源  | 脚本的输出参数名称，直接在下拉框中选择。                                                                                    |
   | 输出参数/目标 | 服务编排中的变量，脚本中的输出参数赋值给服务编排中的变量，请从"全局上下文"中拖拽之前创建的服务编排输出变量。                                                 |
      
   ![](https://support.huaweicloud.com/usermanual-astrozero/public_sys-resources/note_3.0-zh-cn.png)
   若有多个输入参数或者输出参数，单击"新增行"，进行添加。
   
   
5. 连接所有元素。 
   ![](https://support.huaweicloud.com/usermanual-astrozero/zh-cn_image_0000001933045512.png "点击放大")
   
   
6. 单击页面上方的![](https://support.huaweicloud.com/usermanual-astrozero/zh-cn_image_0000001960284617.png)，保存服务编排。
 
#### 调试过程
1. 单击页面上方的![](https://support.huaweicloud.com/usermanual-astrozero/zh-cn_image_0000001960284545.png)，输入参数后单击"运行"，运行服务编排。
   
   ![](https://support.huaweicloud.com/usermanual-astrozero/zh-cn_image_0000001932886100.png "点击放大")
   在"输入参数"中，输入如下参数：
   ```
   { 
      "ownerId":"123", 
      "limit":3, 
      "offset":1
   }
   ```
   
   
2. 检查输出页签的结果，是否符合预期。 
   ![](https://support.huaweicloud.com/usermanual-astrozero/zh-cn_image_0000001960284589.png "点击放大")
   输出如下：
   ```
   {
     "interviewId": "002N000000P4ApgMJOM4",
     "outputs": {
       "resource": [
         {
           "ownerId": "123",
           "resourceName": "Folder01",
           "status": "Waiting",
           "type": "Folder"
         },
         {
           "ownerId": "123",
           "resourceName": "File02",
           "status": "Waiting",
           "type": "File"
         },
         {
           "ownerId": "123",
           "resourceName": "Folder02",
           "status": "Waiting",
           "type": "Folder"
         }
       ],
       "totalCount": 100
     }
   }
   ```
   
   
3. 单击服务编排编辑器页面右上方的"跟踪"，打开"日志跟踪器"页面。 
   在"日志跟踪器"页面，可查看服务编排执行的每一步的详细信息。
   图10查看日志详情   
   ![](https://support.huaweicloud.com/usermanual-astrozero/zh-cn_image_0000001933045448.png "点击放大")
   
   
4. 单击页面上方的![](https://support.huaweicloud.com/usermanual-astrozero/zh-cn_image_0000001960284597.png)，启用服务编排。
 
