Help Center> FunctionGraph> Developer Guide> Developing Functions> Developing Functions in Java> Developing Functions in Java (Using an IDEA Java Project)

Developing Functions in Java (Using an IDEA Java Project)

Perform the following procedure to develop a Java function:

  1. Create a function project.

    1. Configure the IDEA and create a Java project named JavaTest, as shown in Figure 1.
      Figure 1 Creating a project
    2. Add dependencies to the project.
      Download the Java SDK to a local development environment, and decompress the SDK package, as shown in Figure 2.
      Figure 2 Decompressing the downloaded SDK
    3. Configure dependencies.

      Create a folder named lib in the project directory, copy the RunTime-1.1.3.jar file and other required dependencies to the lib folder, and add the JAR files as the dependencies of the project, as shown in Figure 3.

      Figure 3 Configuring dependencies

  2. Create a function.

    1. Create a package named com.huawei.demo, and then create a class named TriggerTests under the package, as shown in Figure 4.
      Figure 4 Creating the TriggerTests class
    2. Define the function handler in TriggerTests.java, as shown in Figure 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";
          }
      }
      

    A common Java project needs to be compiled using artifacts, and a main function needs to be defined.

    Figure 5 Defining the function handler

    The example code contains multiple handler functions, which use different types of triggers.

  3. Pack the project file.

    1. Choose File > Project Structure. The Project Structure page is displayed, as shown in Figure 6.
      Figure 6 Going to the Project Structure page
    2. Choose Artifacts and click + to add artifacts, as shown in Figure 7.
      Figure 7 Adding artifacts
    3. Add a main class, as shown in Figure 8.
      Figure 8 Adding a main class
    4. Choose Build > Build Artifacts to compile the JAR file, as shown in Figure 9.
      Figure 9 Choosing Build Artifacts to compile the JAR file

  4. Log in to the FunctionGraph console, create a Java function, and upload the JAR file, as shown in Figure 10.

    Figure 10 Creating a function

  5. Test the function.

    1. Create a test event.

      Select timer-event-template from the Event Template drop-down list and click Save, as shown in Figure 11.

      Figure 11 Configuring a test event
    2. Click Test.

      The function execution result consists of three parts: function output (returned by callback), summary, and log (output by using the console.log or getLogger() method), as shown in Figure 12.

      Figure 12 Execution result