首页 理论 架构 工程 文档 白皮书 著作 研究 案例 下载 博客 关于 开始使用 →

第八十二章 插件规范WSaiOS Plugin Specification

第八十二章

WSaiOS Plugin Specification

插件规范


82.1 为什么需要插件规范

WSaiOS Core 负责:

  • Kernel
  • Runtime
  • Workflow
  • Scheduler

但是:

行业能力:

例如:

SEO

OCR

RAG

Crawler

ERP

WordPress

全部:

不应该:

放进:

Core。

否则:

Core:

越来越大。

因此:

采用:

Plugin。


工程定义

Plugin:

基于WSaiOS标准接口开发、可以动态加载、卸载和升级的软件扩展模块。

Plugin:

不是:

Kernel。

不是:

Service。

不是:

Capability。

Plugin:

是:

扩展包。


82.2 Plugin位置

整体:

Application

↓

Capability

↓

Plugin

↓

Service

↓

Kernel

Plugin:

实现:

Capability。

不是:

替代:

Capability。

例如:

SEO Capability

↓

SEO Plugin

↓

SEO Service

82.3 Plugin目录

统一:

plugin/

├── plugin.json

├── plugin.py

├── services/

├── workflows/

├── resources/

└── tests/

82.4 Plugin Descriptor

plugin.json:

例如:

{

"name":"SEO Plugin",

"version":"1.0",

"author":"WSaiOS",

"capability":"SEO"

}

以后:

Loader:

读取:

Descriptor。


82.5 Plugin接口

统一:

class Plugin:

    def install(self):

        pass

    def uninstall(self):

        pass

    def enable(self):

        pass

    def disable(self):

        pass

生命周期:

明确。


82.6 Plugin Loader

Kernel:

启动:

Plugin Folder

↓

Scan

↓

Read Descriptor

↓

Register

↓

Enable

Plugin:

无需:

修改:

Kernel。


82.7 Plugin Registry

统一:

保存:

Plugin A

Plugin B

Plugin C

支持:

registry.find("SEO")

82.8 Plugin通信

Plugin:

不能:

直接:

互相引用。

统一:

Event Bus

或者:

Capability API。

降低:

耦合。


82.9 Plugin依赖

Plugin:

允许:

声明:

{

"depends":[

"Knowledge",

"Workflow"

]

}

Loader:

检查:

依赖。


82.10 Plugin版本

例如:

SEO Plugin

1.0

↓

1.1

↓

2.0

支持:

升级。

回滚。


82.11 Plugin沙箱

建议:

Plugin:

默认:

不能:

直接:

访问:

Kernel。

只能:

调用:

公开API。

这样:

安全。


82.12 Plugin测试

建立:

Demo Plugin。

实现:

Hello WSaiOS

验证:

  • 安装
  • 加载
  • 启用
  • 调用
  • 禁用
  • 卸载

全部:

成功。


82.13 工程目录

plugins/

seo/

ocr/

crawler/

wordpress/

rag/

每个:

Plugin:

遵守:

统一规范。


82.14 Plugin生命周期

Installed

↓

Loaded

↓

Enabled

↓

Running

↓

Disabled

↓

Uninstalled

状态:

统一。


82.15 本章总结

完成:

WSaiOS Plugin Specification

建立:

  • Plugin Descriptor
  • Plugin Loader
  • Plugin Registry
  • Plugin 生命周期
  • Plugin API
  • Plugin 依赖管理
  • Plugin 沙箱
  • Plugin 测试

 

Leave a Reply

Your email address will not be published. Required fields are marked *