Java Agent
November 15, 2020 ยท View on GitHub
This is a generic example of Java agent following the generic structure within CoFlows.
Note: The Java <-> CoreCLR interop is achieved through QuantApp.Kernel/JVM.
import app.quant.clr.*;
import java.time.*;
import java.time.format.*;
import java.util.*;
import com.google.gson.Gson;
class Agent
{
public Agent(){}
private static String workspaceID = "$WID$";
public static Object pkg()
{
CLRObject Utils = CLRRuntime.GetClass("QuantApp.Engine.Utils");
CLRObject M = CLRRuntime.GetClass("QuantApp.Kernel.M");
return CLRRuntime.CreateInstance("QuantApp.Engine.FPKG",
workspaceID + "-Agent", //ID
workspaceID, //Workflow ID
"Java Agent", //Name
"Java Agent", //Description
null, //MID
Utils.Invoke("SetFunction", "Load", CLRRuntime.CreateDelegate("QuantApp.Engine.Load", (x) -> {
System.out.println("Java Agent Load");
return 0;
})),
Utils.Invoke("SetFunction", "Add", CLRRuntime.CreateDelegate("QuantApp.Kernel.MCallback", (x) -> {
return 0;
})),
Utils.Invoke("SetFunction", "Exchange", CLRRuntime.CreateDelegate("QuantApp.Kernel.MCallback", (x) -> {
String id = (String)x[0];
Object data = x[1];
System.out.println("Java Agent Exchange");
return 0;
})),
Utils.Invoke("SetFunction", "Remove", CLRRuntime.CreateDelegate("QuantApp.Kernel.MCallback", (x) -> {
String id = (String)x[0];
Object data = x[1];
return 0;
})),
Utils.Invoke("SetFunction", "Body", CLRRuntime.CreateDelegate("QuantApp.Engine.Body", (x) -> {
Object data = x[0];
Map map = new Gson().fromJson(data.toString(), Map.class);
if(map.containsKey("Data") && map.get("Data").equals("Initial Execution"))
System.out.println(" Agent Initial Execute @ " + (new Date()));
return data;
})),
"0 * * ? * *", //Cron Schedule
Utils.Invoke("SetFunction", "Job", CLRRuntime.CreateDelegate("QuantApp.Engine.Job", (x) -> {
Object date = x[0];
String command = (String)x[1];
return 0;
}))
);
}
}