Plugin API 参考
大多数 AuraBoot 插件都是纯配置(JSON DSL)。当配置不足以满足需求时,Plugin API 暴露两类接入面:
- SPI —— 你需要 实现(用
@Extension标注)的扩展点,用于把行为注入到平台的 pipeline。 - Service —— 你需要 注入(
@Autowired)的宿主托管 bean,用于调用平台能力。
发现机制基于 PF4J(classloader 隔离、生命周期、扩展索引)叠加在 Spring 之上(DI、事务)。插件通过 plugin.json + META-INF/extensions.idx 被发现,并由 Plugin Marketplace 管理。
生命周期
每个插件都可以在 AuraPlugin 上实现以下四个生命周期回调:
public class MyPlugin extends AuraPlugin {
public MyPlugin(PluginWrapper wrapper) { super(wrapper); }
@Override public String getNamespace() { return "my-plugin"; }
@Override protected void doInstall(PluginInstallContext context) { /* 一次性初始化 */ }
@Override protected void doEnable(PluginEnableContext context) { /* 注册、启动 worker */ }
@Override protected void doDisable(PluginDisableContext context) { /* 反注册、停止 worker */ }
@Override protected void doUninstall(PluginUninstallContext context) { /* 清理持久化状态 */ }
}每个生命周期回调接收对应的专用上下文类型(PluginInstallContext / PluginEnableContext / PluginDisableContext / PluginUninstallContext),它们都继承自 PluginContext。PluginContext 暴露 getTenantId()、getPluginId()、getNamespace()、getVersion()、getSettings() 以及 getSetting(key) / getSetting(key, defaultValue)。需要宿主 Service 时通过 Spring @Autowired 注入(见下文)。
SPI(扩展点)
| SPI | 用途 |
|---|---|
| CommandHandlerExtension | 在 Command Pipeline 的 preExecute / postExecute / onError 阶段挂钩。 |
| EventListenerExtension | 订阅 outbox 发布的领域事件(at-least-once)。 |
| DataProviderExtension | 向 Page Block、dashboard、报表提供动态数据源。 |
| ValidatorExtension | 超出 DSL 约束的字段级 / 跨字段校验。 |
| MenuProviderExtension | 由插件动态提供菜单项。 |
RestEndpointExtension | 由插件注册自定义 REST 路由。 |
Service(宿主 bean)
| Service | 用途 |
|---|---|
| MetaModelService | 读取 overlay 合并后的 model / field / page / command 元数据。 |
| DataAccessor | 对 mt_<modelCode> 表执行带 tenant 隔离的参数化 CRUD。 |
| ConversationTurnService | 所有 chat / agent / ACP 回合必须经过的唯一 chokepoint。 |
| CommandExecutor | Command Pipeline 的编程式入口。 |
Spring bean 注入
所有 @Extension 类都由 Spring 管理;通过 @Autowired 注入任意宿主 Service。对可选 accessor(如 FileAccessor、AiProviderAccessor、KnowledgeBaseAccessor)使用 @Autowired(required = false),以便插件在 OSS 与企业版平台上都可运行。
发布到 Marketplace
- 校验 ——
aura plugin validate plugins/my-plugin - 打包 —— CLI 会打包 JSON 资源和编译产物
- 发布 —— 上传到 Marketplace 或以 zip 形式分发
- 安装 —— 其他租户通过 Marketplace UI 或
aura plugin publish安装
Marketplace 元数据位于 plugin.json 的 marketplace 节点:
{
"marketplace": {
"category": "CRM",
"tags": ["sales", "lead-management"],
"screenshots": ["screenshot-1.png", "screenshot-2.png"],
"pricing": "free",
"supportUrl": "https://github.com/yourorg/my-plugin/issues"
}
}下一步
- 插件开发实操指南
- Commands pipeline —— 你的 SPI 挂钩的各个阶段
- REST API —— 测试插件的 HTTP 等价入口