
# 创建空白华为云Astro轻应用服务编排
服务编排是一种通过简单的拖拉拽式流程编排以及参数配置的方式，来进行服务开发的能力。本章节以创建一个根据传入的用户名，配置欢迎信息的简单业务场景为例，向您介绍如何从零开始创建一个服务编排。
#### 操作视频
本视频介绍在华为云Astro轻应用中，如何使用服务编排开发应用的业务逻辑。
<video controls="controls" preload="none" id="object6152020172713" class="idp-external-video" src="https://res-video.hc-cdn.com/cloudbu-site/china/zh-cn/support/astrozero-video/FlowUseNew.mp4" title="使用服务编排开发应用逻辑" poster="https://support.huaweicloud.com/usermanual-astrozero/zh-cn_image_0000002416111049.jpg" height="335.0000" width="600.0000"></video>
 #### 创建服务编排
1. 参考[登录华为云Astro轻应用应用设计器](https://support.huaweicloud.com/usermanual-astrozero/astrozero_05_9004.html)中操作，登录应用设计器。
2. 在左侧导航栏中，选择"逻辑"。
3. （可选）单击编排后的![](https://support.huaweicloud.com/usermanual-astrozero/zh-cn_image_0000001946065485.png)，为服务编排添加目录。
   
   服务编排默认存放在根目录下，在创建服务编排前，您可以先创建服务编排存放的目录，也可以在服务编排创建后将其拖拽到指定目录。
   
   
4. 将鼠标放在已创建的服务编排目录上，单击![](https://support.huaweicloud.com/usermanual-astrozero/zh-cn_image_0000001914346330.png)，进入"添加服务编排"页面。
   
   如果未创建服务编排目录，请直接单击编排后的![](https://support.huaweicloud.com/usermanual-astrozero/zh-cn_image_0000001914186406.png)，进入添加服务编排页面。
   
   
5. 设置参数，单击"添加"。 
   图1创建服务编排   
   ![](https://support.huaweicloud.com/usermanual-astrozero/zh-cn_image_0000001991627026.png "点击放大")
   表1添加服务编排参数说明 
   | 参数 | 说明                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           |
   |:---|:---|
   | 标签 | 新建服务编排的标签名，用于在界面展示，创建后可修改。 取值范围：1\~64个字符。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               |
   | 名称 | 服务编排在系统中的唯一标识，创建后不支持修改。系统会自动在名称前添加"{命名空间}__"，当其他功能调用服务编排时，调用的是服务编排的名称，而不是标签。 命名要求如下： - 长度不能超过64个字符，包括前缀命名空间的长度。 名称前的内容为命名空间，在华为云Astro轻应用中为了避免不同租户间数据的重名，租户在首次创建应用时需要先定义一个命名空间。一个租户只能创建一个命名空间，创建后不支持修改。   - 名称必须以英文字母开头，只能由英文字母、数字或单下划线组成，且不能以下划线结尾。   |
   | 类型 | 在下拉框中，选择服务编排的类型。 - Autolaunched Flow：自启动Flow，在接口调用后会立即执行服务编排模型定义的逻辑。  - Event Trigger：事件触发的服务编排，在事件触发时才会开始执行服务编排模型定义的逻辑。当选择该类型时，您需要配置具体的事件以及条件规则。   默认值：Autolaunched Flow。                                                                                                                                                                                                           |
   | 描述 | 请根据实际需求，输入服务编排的描述信息，建议设置为服务编排的功能介绍。 取值范围：1\~255个字符。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    |
      
   
   
6. 创建变量。 
   1. 在服务编排设计器中，单击![](https://support.huaweicloud.com/usermanual-astrozero/zh-cn_image_0000001900386736.png)，进入全局上下文页面。
   
   2. 单击"变量"后的![](https://support.huaweicloud.com/usermanual-astrozero/zh-cn_image_0000001900226876.png)，创建[表2]中的变量。
      图2创建变量   
      ![](https://support.huaweicloud.com/usermanual-astrozero/zh-cn_image_0000001939146305.png) 
   
   
    表2变量说明 
   | 变量名      | 类型 | 变量说明   |
   |:---|:---|:---|
   | userName | 文本 | 传入的用户名 |
   | message  | 文本 | 欢迎信息   |
      
   在全局上下文中，除了创建基本类型的变量，还可以[创建常量]、[创建公式变量]、[创建私有结构体]和[创建对象变量/结构体变量/事件变量]。
   
   
7. 单击![](https://support.huaweicloud.com/usermanual-astrozero/zh-cn_image_0000001900386796.png)，配置服务编排的输入输出参数。
   
   图3配置输入输出参数   
   ![](https://support.huaweicloud.com/usermanual-astrozero/zh-cn_image_0000001900226920.png "点击放大")
   
   
8. 将"逻辑"中的"赋值"图元，拖拽到画布中。 
   赋值图元可以实现对全局上下文中变量等参数进行赋值，其他图元的详细介绍，请参见[为华为云Astro轻应用服务编排设置图元](https://support.huaweicloud.com/usermanual-astrozero/astrozero_05_9134.html)。
   图4拖拽赋值图元到画布   
   ![](https://support.huaweicloud.com/usermanual-astrozero/zh-cn_image_0000001939146333.png "点击放大")
   
   
9. 配置图元。 
   1. 选择赋值图元，单击![](https://support.huaweicloud.com/usermanual-astrozero/zh-cn_image_0000001900386812.png)。
   
   2. 在"赋值"页面中，单击"新增行"，参照下图将创建的变量拖拽到相应的位置。 将""Hello,""赋值给message变量，并将userName变量拼接到message变量中，赋值语句将从上往下依次执行。
      图5配置赋值图元   
      ![](https://support.huaweicloud.com/usermanual-astrozero/zh-cn_image_0000001900226924.png "点击放大") 
   
   
   
   
10. 连接图元指定逻辑关系，即从开始图元连向赋值图元，表示服务编排开始执行后，执行赋值图元的赋值语句。 
    图6连接图元   
    ![](https://support.huaweicloud.com/usermanual-astrozero/zh-cn_image_0000001939146337.png)
    
    
11. 单击页面上方的![](https://support.huaweicloud.com/usermanual-astrozero/zh-cn_image_0000001900386820.png "点击放大")，保存服务编排。
12. 单击![](https://support.huaweicloud.com/usermanual-astrozero/zh-cn_image_0000001900226928.png "点击放大")，进入服务编排调试页面。
    
    在输入参数中，输入如下内容，并单击"运行"。
    ```
    {
        "userName": "Flow"
    }
    ```
    运行结果如下，输出"Hello,Flow"。
    图7运行结果   
    ![](https://support.huaweicloud.com/usermanual-astrozero/zh-cn_image_0000001906557028.png)
    
    
13. 单击页面上方的![](https://support.huaweicloud.com/usermanual-astrozero/zh-cn_image_0000001900386828.png "点击放大")，启用服务编排。
    
    服务编排启用后，才可以在脚本、工作流等操作中引用。
    
    
14. 调试已创建的服务编排。 
    1. 在应用设计器左侧导航栏中，选择"集成"。
    
    2. 单击开放接口后的"+"，新建一个helloFlow开放接口，单击"保存"。
       图8新建开放接口helloFlow   
       ![](https://support.huaweicloud.com/usermanual-astrozero/zh-cn_image_0000001939146373.png "点击放大") 
    
    3. 接口创建后，在开放接口中，将鼠标放在已创建的接口上，单击![](https://support.huaweicloud.com/usermanual-astrozero/zh-cn_image_0000001906725404.png)，选择"查看"。
    
    4. 在预览页面，单击接口后的![](https://support.huaweicloud.com/usermanual-astrozero/zh-cn_image_0000001957349997.png)。
    
    5. 单击"测试一下"，输入示例模型，单击"执行"。
       图9测试接口   
       ![](https://support.huaweicloud.com/usermanual-astrozero/zh-cn_image_0000001906729452.png "点击放大")
       执行成功后，可查看到API的测试结果。
       ```
       {
           "resCode": "0",
           "resMsg": "成功",
           "result": [
               {
                   "message": "Hello, Flow"
               }
           ]
       }
       ```
       
    
    
    
    
 
 #### 创建常量
编排服务流程或交互时，不会改变的值或参数，通常定义为常量，例如服务标识、访问地址和错误码等。
1. 在服务编排设计器右侧，选择![](https://support.huaweicloud.com/usermanual-astrozero/zh-cn_image_0000001900472052.png)。
2. 在全局上下文页面，单击"常量"后的![](https://support.huaweicloud.com/usermanual-astrozero/zh-cn_image_0000001900631928.png)。
3. 单击新增常量后的"..."，选择"设置"。
4. 设置页面参数，单击"保存"。 
   图10配置常量   
   ![](https://support.huaweicloud.com/usermanual-astrozero/zh-cn_image_0000001987385190.png "点击放大")
   表3常量参数说明 
   | 参数   | 说明                                                                              |
   |:---|:---|
   | 名称   | 新建常量的名称，名称是变量在流程中引用的唯一标识。修改变量名不会改变图元中的引用，但是会导致流程不可用。                            |
   | 数据类型 | 常量的数据类型，直接在下拉框中选择即可，默认为"文本"类型。                                                  |
   | 值    | 新建常量的取值，字符串常量输入需要用双引号括起来，例如""abc""。                                             |
   | 描述   | 根据实际需求，输入变量的描述信息。                                                               |
   | 外部使用 | 如果勾选该选项，表示该变量为外部使用变量，编译时不校验其是否被使用。 默认为不勾选。 |
      
   
   
 
 #### 创建公式变量
在服务编排中，公式变量主要用于变量赋值、表达式计算、参数传递等。
1. 在服务编排设计器右侧，选择![](https://support.huaweicloud.com/usermanual-astrozero/zh-cn_image_0000001900472060.png)。
2. 在全局上下文页面，单击"公式"后的![](https://support.huaweicloud.com/usermanual-astrozero/zh-cn_image_0000001900631936.png)。
3. 设置页面参数，单击"保存"。 
   图11配置公式变量   
   ![](https://support.huaweicloud.com/usermanual-astrozero/zh-cn_image_0000001939231505.png)
   表4公式变量参数说明 
   | 参数   | 说明                                                                                                  |
   |:---|:---|
   | 名称   | 输入新建公式变量的名称。                                                                                        |
   | 数据类型 | 公式变量的数据类型，直接在下拉框中选择即可，默认为"文本"类型。                                                                    |
   | 描述   | 根据实际需求，输入公式变量的描述信息。                                                                                 |
   | 外部使用 | 勾选该选项，表示该变量为外部使用变量，编译时不校验其是否被使用。 默认为不勾选。                        |
   | 表达式  | 设置新增变量的表达式。如果表达式中需要运用公式，可根据需要双击"公式"区域中系统预置的公式，该公式会显示在右侧"表达式"区域中。当表达式中需要有变量参数时，可从变量区域中直接选择变量拖入到表达式中。 |
      
   
   
 
 #### 创建私有结构体
服务编排中如果涉及复杂的结构体参数，可以先创建全局或私有结构体，并用作参数类型。创建全局结构体和私有结构体后，再参考[创建对象变量/结构体变量/事件变量]中操作，创建全局结构体变量和私有结构体变量，作为服务编排的参数类型。
1. 在服务编排设计器右侧，选择![](https://support.huaweicloud.com/usermanual-astrozero/zh-cn_image_0000001900472072.png)，在私有结构体页面单击"新增"。
   
   该"私有结构体"页面有两个"新增"按钮，单击上面的"新增"按钮，是通过设置页面参数新建私有结构体。单击下面的"新增"按钮，是通过输入JSON Schema类型的数据源码定义私有结构体。
   图12添加私有结构体类型   
   ![](https://support.huaweicloud.com/usermanual-astrozero/zh-cn_image_0000001900631948.png "点击放大")
   
   
2. （如果上一步单击"私有结构体"页面上方的"新增"按钮，请执行该步骤）设置页面参数。 
   - 在"基本信息"中，输入结构体名字、描述信息。
   
   - 在"结构体成员"中，设置自定义成员变量，包括设置成员变量的名称、数据类型、是否必填、是否是集合和描述信息等。单击"新增"，可增加成员变量，支持设置全局结构体或私有结构体成员变量。当私有结构体的成员变量包含结构体类型时，您需要提前定义成员结构体。例如，下图中成员变量"hobby"为私有结构体类型，需要提前创建"create"私有结构体。
   
   
   图13配置私有结构体   
   ![](https://support.huaweicloud.com/usermanual-astrozero/zh-cn_image_0000001987555706.png "点击放大")
   
   
3. （如果上一步单击"私有结构体"页面下方的"新增"按钮，请执行该步骤）在"创建JSON Schema"页面中，定义结构体名称，在"JSON源码"中输入数据源码，单击![](https://support.huaweicloud.com/usermanual-astrozero/zh-cn_image_0000001900472088.png)，系统会进行校验，转换成服务编排中的结构体类型，单击"保存"。
   
   图14创建JSON Schema   
   ![](https://support.huaweicloud.com/usermanual-astrozero/zh-cn_image_0000001900631972.png "点击放大")
   数据源码示例如下：
   ```
   {
       "name": "xiaoming",
       "age": 18,
       "father": {
           "name": "daliu",
           "gender": "male"
       },
       "brother": {
           "name": "xiaolei",
           "gender": "male"
       }
   }
   ```
   创建成功后，页面显示如下。
   图15创建成功   
   ![](https://support.huaweicloud.com/usermanual-astrozero/zh-cn_image_0000002024076441.png "点击放大")
   该方式创建的结构体中，包含成员结构体时，成员结构体具体定义不会在界面显示，且其他结构体不可引用。
   JSON结构体支持嵌套，例如上述创建的"family"结构体，在"JSON Schema结构体"区域再次单击"新增"，新增"company"结构体，里面"ceo"嵌套引用"family"结构体，如下图所示，在定义结构体输入值时，您可以输入"$"符号，选择当前服务编排中的其它结构体进行嵌套引用。
   图16引用其他结构体   
   ![](https://support.huaweicloud.com/usermanual-astrozero/zh-cn_image_0000001900472120.png "点击放大")
   
   
 
 #### 创建对象变量/结构体变量/事件变量
对象变量用于在服务编排中引用或操作特定的对象实例，用于较简单的业务流程中。结构体变量允许将多个不同类型的数据项进行组合，通常用于较复杂的业务流程中。事件变量用于表示系统或业务流程中发生的事件，事件可以是系统内部产生的，也可以是外部触发的。
1. 在服务编排设计器右侧，选择![](https://support.huaweicloud.com/usermanual-astrozero/zh-cn_image_0000001900631996.png)。
2. 在全局上下文页面，单击"对象变量"后的![](https://support.huaweicloud.com/usermanual-astrozero/zh-cn_image_0000001939231577.png)。
3. 设置页面参数，以创建对象变量为例进行介绍。 
   图17配置对象变量   
   ![](https://support.huaweicloud.com/usermanual-astrozero/zh-cn_image_0000001900472144.png "点击放大")
   表5对象变量参数说明 
   | 参数    | 说明                                                                           |
   |:---|:---|
   | 名称    | 输入新建对象变量的名称，名称是变量在流程中引用的唯一标识。修改变量名不会改变图元中的引用，但是会导致流程不可用。                     |
   | 对象    | 请直接在下拉框中，选择具体的对象。选择"对象"类型时，该参数才会显示。                                          |
   | 全局结构体 | 请直接在下拉框中，选择具体的全局结构体。选择"全局结构体"类型时，该参数才会显示。                                    |
   | 私有结构体 | 请直接在下拉框中，选择具体的私有结构体。选择"私有结构体"类型时，该参数才会显示。                                    |
   | 事件    | 请直接在下拉框中，选择具体的事件。选择"事件"类型时，成员变量为事件的自定义字段，不包括系统预置的标准字段。选择"事件"类型时，该参数才会显示。     |
   | 默认值   | 请直接输入变量的默认值或从下拉框中选择。                                                         |
   | 描述    | 请根据实际需求，输入变量的描述信息。 取值范围：1\~255个字符。        |
   | 是否为数组 | 是否为数组变量，即集合变量。 默认为不勾选。                  |
   | 外部使用  | 勾选该选项，表示该变量为外部使用变量，编译时不校验其是否被使用。 默认为不勾选。 |
      
   
   
 
