更新时间:2023-05-06 GMT+08:00

java模板

有状态函数:

// funcName: javastateful
import com.huawei.function.Function;
import com.huawei.function.runtime.StateReader;
import com.huawei.services.runtime.Context;

public class JavaHandler implements StateReader<Object, Counter> {
    public Object handleRequest(event Object, Context context) {
        // process req
        State state = (State)context.getState();
        // process state
        state.count++;
        context.setState(state);
        // function object
        Function func = new Function(context);
        // persistent state
        func.saveState();
        return state;
    }

    // 有状态函数必须实现初始化接口
    public State initState(Object event, Context context) {
        State state = new State(0);
        // # 初始化时,set State
        context.setState(state);
        return state;
    }
}

class State {
    int count;
    State(int cnt) {
        this.counter = cnt;
	}
}

主调函数:

// funcName: javacaller
import com.google.gson.JsonObject;
import com.huawei.function.Function;
import com.huawei.function.runtime.StateReader;
import com.huawei.services.runtime.Context;
import com.huawei.function.ObjectRef;

public class JavaHandler {
    // 初始化,调用new Function instanceName为test1 为javastateful函数初始化状态路由
    public String newStateRouter(Object event, Context context) {
        Function func = new Function(context, "javastateful", "test1");
        String instanceID = func.getInstanceID();
        return instanceID;
    }

    // 绑定已创建的状态路由
    public String bindStateRouter(Object event, Context context) {
        Function func = new Function(context);
        // bind
        func.getInstance("javastateful", "test1");
        String instanceID = func.getInstanceID();
        return instanceID;
    }

    // 绑定路由后进行调用
    public Object invoke(Object event, Context context) {
        Function func = new Function(context);
        // bind
        func.getInstance("javastateful", "test1");
        ObjectRef<Object> obj = func.invoke("{\"key\":\"value\"}");
        // 通过object对象获取执行结果
        Object result = obj.get();
        return result;
    }

    // 删除状态实例
    public Object terminate(Object event, Context context) {
        Function func = new Function(context);
        // bind
        func.getInstance("javastateful", "test1");
        ObjectRef<Object> obj = func.terminate();
        // 通过object对象获取执行结果
        Object result = obj.get();
        return result;
    }
}