
# 如何创建并使用函数？
函数是资源调度和代码运行的基本单位，是由用户创建，实现特定功能的一段代码，可以在连接器自定义认证、创建连接器执行动作和流编排中使用。
#### 帮助视频
本视频介绍如何创建并使用函数。
<video controls="controls" preload="none" id="object793965216428" class="idp-external-video" src="https://res-video.hc-cdn.com/cloudbu-site/china/zh-cn/aPaaS/mssi/1682472586560663385.mp4" title="创建并使用函数" poster="https://support.huaweicloud.com/mssi_faq/zh-cn_image_0000002348931073.jpg" height="340.0000" width="600.0000"></video>
#### 创建函数
1. 在开天集成工作台界面中，选择左侧导航栏中的"流编排 \> 函数"。
2. 选择"我的函数"页签，在界面右上方选择"创建函数"。
3. 设置函数的基本配置信息，具体的参数说明如[表1]所示。
   
    表1参数说明 
   | 参数        | 说明                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              |
   |:---|:---|
   | 名称        | 填写函数的名称，根据规划自定义。 说明： 函数名称生成源码后不支持修改，建议您按照一定的命名规则填写函数名称，方便您快速识别和查找。                                                                                                                                                                                                                                                                                                                                                                                                    |
   | 描述        | 函数的简单描述。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        |
   | 入参        | 入参支持自定义、CDM导入、JSON导入三种方式。 - 自定义：设置函数的入参，包括参数名称（API文件中参数项的名称）、显示字段（用户在表单中看到的参数项标签）、参数类型和说明，是否为必填参数。  - CDM导入：系统支持公共CDM和我的CDM两种类型。用户可以从下拉列表中选择所需要的CDM导入参数，也可以通过下拉列表的"搜索"功能查找所需要的模型并导入。 用户可以单击"查看行业模板市场"查看已有的行业模板。   - JSON导入：需要编写并导入JSON。   |
   | 出参        | 出参支持自定义、CDM导入、JSON导入三种方式。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       |
   | 执行语言      | 选择函数的执行语言。该参数表示运行函数的环境。 - Node.js14.18  - Python3.9  - JVM11  - Java11                                                                                                                                       |
   | 编辑源码      | 当"执行语言"选择"Node.js14.18""Python3.9""JVM11"时，才有此参数。 编辑函数的源码信息。请参见[5]\~[7]。                                                                                                                                                                                                                                                                                                                                                           |
   | 上传方式      | 当"执行语言"选择"Java11"时，才有此参数。 支持上传不超过500KB的.jar文件。上传新的.jar文件时，会覆盖现有代码。如果上传的.jar文件代码中包含敏感信息，请自行加密防止泄露。                                                                                                                                                                                                                                                                                                                                                                                                |
   | 内存        | 设置函数执行内存。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       |
   | 运行时间上限(秒) | 函数运行的时间上限。默认30秒。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                |
   | 单实例并发数    | 函数实例支持的并发数，取值范围为1-1000的整数。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      |
   | 依赖包       | 可以添加函数运行的依赖包。请参见[4]。                                                                                                                                                                                                                                                                                                                                                                                                                                                                               |
      
   
   
4. （可选）添加函数运行的依赖包。单击"依赖包"旁的"添加"，在弹出的"选择依赖包"界面勾选需要的依赖包，单击"确定"。
   
   如果没有所需的依赖包，您可以自行创建依赖包，具体请参见[依赖包管理](https://support.huaweicloud.com/usermanual-mssi/mssi_02_0093.html)。
   ![](https://support.huaweicloud.com/mssi_faq/public_sys-resources/note_3.0-zh-cn.png)
   - 一个函数最多添加20个依赖包。
   
   - 除了您自行创建的依赖包（私有依赖包）以外，FunctionGraph还提供了一些常见的公共依赖包，您可以直接选择使用。
    
   
   
5. 编辑源码信息，在编辑区定义函数，定义完成后单击"保存并测试"。
6. 在右侧弹出的测试界面中，修改函数入参后单击"提交测试"，在测试结果区域查看测试结果及运行日志。 
   关闭测试窗口后，再次执行[5]，弹窗会显示上次测试的请求参数。
   
   
7. 测试通过后，单击"确定"。
8. 函数设置完成后，单击"更新"。创建完成后，您可以在[连接器管理](https://support.huaweicloud.com/usermanual-mssi/mssi_02_0075.html)或[流编排](https://support.huaweicloud.com/usermanual-mssi/mssi_02_0055.html)中正常使用函数。
   
   ![](https://support.huaweicloud.com/mssi_faq/public_sys-resources/note_3.0-zh-cn.png)
   如果创建的函数未保存并测试，则单击"创建"，成功创建函数。
   
   
 
#### 使用函数
- 创建连接器的执行动作时使用函数。
  1. 在我的连接器列表中，单击连接器名称，选择"执行动作"页签，单击"创建执行动作"。
     设置执行动作基本信息，具体的参数说明如[表2]所示。
      表2参数说明 
     | 参数     | 说明                                                                                                                                                                                                                                                                                                                   |
     |:---|:---|
     | 执行动作名称 | 填写执行动作的名称，根据规划自定义。建议您按照一定的命名规则填写执行动作的名称，方便您快速识别和查找。                                                                                                                                                                                                                                                                  |
     | 类型     | - API：通过调用API的方式创建执行动作。  - 函数：通过自定义函数的方式创建执行动作（本章节以函数为例）。  - 流：通过编排流的方式创建执行动作。   |
     | 描述     | 执行动作的描述信息。                                                                                                                                                                                                                                                                                                           |
        
     
  
  2. 如果连接器的执行动作类型选择函数，单击"下一步"，设置执行动作的函数信息，具体操作如[图1]所示。
     图1创建执行动作   
     ![](https://support.huaweicloud.com/mssi_faq/zh-cn_image_0000001843118916.png)
     1. 配置输入参数。选择已创建好的函数。 用户可以重新创建函数、编辑已创建的函数、复制函数以及刷新函数。
        
     
     2. 单击"下一步"，配置输出参数。
        ![](https://support.huaweicloud.com/mssi_faq/public_sys-resources/note_3.0-zh-cn.png)
        单击"预览"可查看输入和输出参数。
        
      
  
  3. 设置完成后，单击"保存"。
  
  4. 测试执行动作。测试执行动作前需要先发布连接器，再进行测试。
     1. 在界面右上方单击"发布"，发布连接器。
     
     2. 在"测试"界面中，配置连接以及输入参数，配置完成后单击"提交测试"。
        ![](https://support.huaweicloud.com/mssi_faq/public_sys-resources/note_3.0-zh-cn.png)
        - 如果连接器没有创建连接，请先[创建连接](https://support.huaweicloud.com/usermanual-mssi/mssi_02_0087.html)。
        
        - 如果该连接器采用"无验证"方式，则无需配置连接。
        
        - 如果输入或输出为文件格式，则不支持测试。
          
     
     3. 测试完成后，可查看测试结果和测试历史。
        - 如果测试通过，表示执行动作创建完成。
        
        - 如果测试不通过，您可以单击"操作"列的"编辑"修改执行动作。修改完成后单击界面右上方"发布"重新发布连接器，再对该执行动作进行测试。
         
      
   
- 连接器使用自定义认证时使用函数。
  1. 在开天集成工作台界面中，选择左侧导航栏中的"连接器 \> 我的连接器"，在界面右上方选择"创建我的连接器"。
  
  2. 设置连接器基本信息，具体的参数说明如[表3]所示。
      表3参数说明 
     | 参数    | 说明                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         |
     |:---|:---|
     | 连接器名称 | 填写连接器的名称，根据规划自定义。建议您按照一定的命名规则填写连接器名称，方便您快速识别和查找。同一租户下的连接器不能重名。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             |
     | 描述    | 连接器的描述信息，该描述将显示在连接器的详情中，帮助用户了解连接器。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         |
     | 图标    | - 支持自定义图标或选择系统图标。  - 自定义图标要求为：格式为png、jpg，大小不超过1MB。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     |
     | 协议    | 选择被调用API的传输协议，支持http或https。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                |
     | 主机地址  | 填写被调用API的主机地址。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             |
     | 基准URL | 被调用API的Base URL，即域名的根路径。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   |
     | 验证方式  | 根据被调用API的认证方式，选择并配置连接器的安全认证方式。 自定义：自定义是用户在创建连接时的身份验证方式。 图2创建连接器的验证方式 ![](https://support.huaweicloud.com/mssi_faq/zh-cn_image_0000001849981472.png) 1. 开启"使用函数"的开关。  2. 从下拉框选择已创建好的函数，或者在下拉框通过"搜索"选择所需要的函数。也可以单击"创建函数"进行创建并通过下拉列表选择刚创建的函数。  3. 设置缓存时间，单位为秒。  4. 输入自定义入参。  5. 输入参数映射信息。 说明： 使用自定义认证时，如果选择使用函数，函数支持缓存时间，在这个缓存时间内，不再重复调用这个函数，直接使用这个缓存的调用结果。    |
        
     
  
  3. 设置完成后，单击"创建"。连接器基本信息创建完成。
   
- 在流编排中使用函数。
  1. 在开天集成工作台界面中，选择左侧导航栏中的"流编排 \> 我的流"。
  
  2. 单击"创建流"。
  
  3. 选择和配置触发事件。可根据创建的流类型选择对应连接器的触发事件。
  
  4. 添加执行动作。根据业务需求在画布中单击"![](https://support.huaweicloud.com/mssi_faq/zh-cn_image_0000001845954426.png) \> 添加执行动作"或"添加执行动作"进行添加，可添加多个执行动作。您也可以选中执行动作进行拖拽来调整执行动作位置。
     例如，选择"运行代码"执行动作。如下图所示。
     图3流编排中使用函数   
     ![](https://support.huaweicloud.com/mssi_faq/zh-cn_image_0000001843299274.png) 
  
  5. 添加触发事件和执行动作完成后，检查配置项。 查看界面右上角的"检查"。
     - 如果"检查"图标右上角显示数字0，则表示配置无误。
     
     - 如果"检查"图标右上角显示数字为非0，则可以单击"检查"查看详细检查记录并进行修改。
      
  
  6. 流编排完成后可执行如下操作。
     1. 测试作业：
        1. 单击界面右上方的"保存并测试"按钮，在右侧弹出的"基本信息"区域框中单击"运行"。
        
        2. 在弹出的窗口中单击"查看运行状态"查看每个节点的详细运行信息，如果运行不通过，可单击界面右上角的"编辑"修改后再次运行。
         
     
     2. 保存作业：单击界面右上方的"保存"按钮，保存流的配置信息。
      
   
 
