2.9 KiB
2.9 KiB
Extension APIs / API Mở rộng
📋 Overview / Tổng quan
Apps implement IScriptResource interface để expose custom APIs cho scripts.
🔌 IScriptResource Interface
classDiagram
class IScriptResource {
<<interface>>
+Type AppGlobalType
+GetTaskGlobals() IDictionary
+GetMissionGlobals(id, ct) IDictionary
+UsingNamespaces ImmutableArray~string~
+Modules ImmutableArray~string~
}
class RobotScriptResource {
+AppGlobalType: typeof(RobotGlobals)
+GetTaskGlobals()
+GetMissionGlobals()
}
class FleetScriptResource {
+AppGlobalType: typeof(FleetGlobals)
+GetTaskGlobals()
+GetMissionGlobals()
}
class RobotGlobals {
+MoveTo(x, y) Task
+GetBatteryLevel() double
+IsMoving() bool
}
class FleetGlobals {
+GetAvailableRobots() List~Robot~
+SendOrder(serial, order) Task
+GetRobotState(serial) RobotState
}
IScriptResource <|-- RobotScriptResource
IScriptResource <|-- FleetScriptResource
RobotScriptResource ..> RobotGlobals: exposes
FleetScriptResource ..> FleetGlobals: exposes
🤖 RobotApp Example
Define AppGlobalType:
public class RobotScriptGlobals
{
public Task MoveTo(double x, double y) { }
public double GetBatteryLevel() { }
public bool IsMoving() { }
}
Use in Script:
[Task(Interval = 5000)]
public async Task CheckBattery()
{
var level = Robot.GetBatteryLevel();
Logger.Info($"Battery: {level}%");
if (level < 20.0)
{
await Robot.MoveTo(0, 0); // Home position
}
}
🏭 FleetManager Example
Define AppGlobalType:
public class FleetScriptGlobals
{
public List<Robot> GetAvailableRobots() { }
public Task SendOrder(string robotSerial, Order order) { }
public RobotState GetRobotState(string robotSerial) { }
public Task MoveToNode(string robotSerial, string nodeId) { }
public Task MoveToStation(string robotSerial, string stationId) { }
}
Use in Script:
[Task(Interval = 10000)]
public void MonitorFleet()
{
var robots = Fleet.GetAvailableRobots();
foreach (var robot in robots)
{
var state = Fleet.GetRobotState(robot.SerialNumber);
if (state?.BatteryCharge < 20.0)
{
Logger.Warning($"Robot {robot.SerialNumber} low battery");
}
}
}
🔗 Related Documents / Tài liệu Liên quan
- ScriptEngine Overview - Tổng quan ScriptEngine
- FleetManager ScriptEngine Module - FleetManager implementation
- RobotApp Documentation - RobotApp implementation
Last Updated: 2025-11-13