文档首页> 函数工作流 FunctionGraph> 开发指南> Java> 开发事件函数> Java函数开发指南(使用IDEA工具普通Java项目)
更新时间:2024-03-05 GMT+08:00

Java函数开发指南(使用IDEA工具普通Java项目)

开发Java函数,以下给出Demo实例步骤:

  1. 创建函数工程

    1. 配置idea,创建java工程JavaTest,如图创建工程所示
      图1 创建工程
    2. 添加工程依赖

      根据Java SDK下载提供的SDK地址,下载JavaRuntime SDK到本地开发环境解压,如图2所示。

      图2 下载SDK解压
    3. 配置依赖

      在工程目录下创建lib目录,将zip中的Runtime2.0.5.jar和代码所需要的三方依赖包拷贝到该目录,并把该jar添加为工程依赖。如图3所示:

      图3 配置依赖

  2. 创建本地函数

    1. 创建包com.huawei.demo,并在包下创建TriggerTests类,如图图4所示。
      图4 创建TriggerTests类
    2. 在TriggerTests.java中定义函数运行入口,示例代码如下,如图5
       1
       2
       3
       4
       5
       6
       7
       8
       9
      10
      11
      12
      13
      14
      15
      16
      17
      18
      19
      20
      21
      22
      23
      24
      25
      26
      27
      28
      29
      30
      31
      32
      33
      34
      35
      36
      37
      38
      39
      40
      41
      42
      43
      44
      45
      46
      47
      48
      49
      50
      51
      52
      package com.huawei.demo;
      
      import java.io.UnsupportedEncodingException;
      import java.util.HashMap;
      import java.util.Map;
      
      import com.huawei.services.runtime.Context;
      import com.huawei.services.runtime.entity.apig.APIGTriggerEvent;
      import com.huawei.services.runtime.entity.apig.APIGTriggerResponse;
      import com.huawei.services.runtime.entity.dis.DISTriggerEvent;
      import com.huawei.services.runtime.entity.dms.DMSTriggerEvent;
      import com.huawei.services.runtime.entity.lts.LTSTriggerEvent;
      import com.huawei.services.runtime.entity.smn.SMNTriggerEvent;
      import com.huawei.services.runtime.entity.timer.TimerTriggerEvent;
      
      public class TriggerTests {
          public static void main(String args[]) {}
          public APIGTriggerResponse apigTest(APIGTriggerEvent event, Context context){
              System.out.println(event);
              Map<String, String> headers = new HashMap<String, String>();
              headers.put("Content-Type", "application/json");
              return new APIGTriggerResponse(200, headers, event.toString());
          }
      
          public String smnTest(SMNTriggerEvent event, Context context){
              System.out.println(event);
              return "ok";
          }
      
          public String dmsTest(DMSTriggerEvent event, Context context){
              System.out.println(event);
              return "ok";
          }
      
          public String timerTest(TimerTriggerEvent event, Context context){
              System.out.println(event);
              return "ok";
          }
      
          public String disTest(DISTriggerEvent event, Context context) throws UnsupportedEncodingException{
              System.out.println(event);
              System.out.println(event.getMessage().getRecords()[0].getRawData());
              return "ok";
          }
      
          public String ltsTest(LTSTriggerEvent event, Context context) throws UnsupportedEncodingException {
              System.out.println(event);
              event.getLts().getData();
              System.out.println("raw data: " + event.getLts().getRawData());
              return "ok";
          }
      }
      

    普通java项目需要通过Artifacts来进行编译,需要定义一个main函数。

    图5 定义函数运行入口

    当函数的事件源是APIG时,相关约束条件请参考Base64解码和返回结构体的说明

  3. 工程打包

    1. 单击File->Project Structure打开Project Structure窗口,如图6所示。
      图6 Project Structure
    2. 选择上图中的“Artifacts”,单击“+”,进入添加“Artifacts”窗口,如图7所示。
      图7 添加Artifacts
    3. 添加"Main Class",如图8所示。
      图8 添加Main Class
    4. 单击"Build"->"Build Artifacts"来编译Jar包,如图9所示。
      图9 Build Artifacts

  4. 创建Java函数,使用Jar包的方式上传代码包,如图 上传jar包所示。

    图10 上传jar包

  5. 测试函数

    1. 创建测试事件。

      在事件模板中选择“timer-event-template”,并保存。

    2. 单击“测试”并执行。

      函数执行结果分为三部分,分别为函数返回(由callback返回)、执行摘要、日志输出(由System.out.println()方法获取的日志方法输出)。