# Flowable DevOps 插件目录

这是外部插件的存放目录。

## 📁 目录结构

```
plugins/
├── README.md                    # 本文件
├── http-request-plugin/         # HTTP请求插件（示例）
│   ├── http-request-1.0.0.jar
│   └── plugin.json
└── custom-plugin/               # 你的自定义插件
    ├── custom-plugin-1.0.0.jar
    └── plugin.json
```

## 🔌 如何添加插件

### 方法1：复制JAR文件（第二期支持）

1. 将插件JAR文件复制到此目录
2. 确保插件包含 `plugin.json` 清单文件
3. 重启应用或触发热加载

### 方法2：通过API上传（第二期支持）

```bash
curl -X POST http://localhost:8080/api/plugins/upload \
  -F "file=@my-plugin-1.0.0.jar"
```

### 方法3：内置插件（第一期推荐）

将插件代码直接添加到项目中：

1. 在 `src/main/java/.../workflow/node/` 创建节点类
2. 添加 `@NodePlugin` 注解
3. 实现 `WorkflowNode` 接口
4. 重启应用自动加载

## 📦 内置插件

当前系统内置以下插件：

### API 接口

- **HTTP Request** (`http_request`) - 发送HTTP请求
  - 版本: 1.0.0
  - 作者: Flowable Team

### 数据转换

- **Text Processor** (`text_processor`) - 文本处理工具
  - 版本: 1.0.0
  - 作者: Flowable Team
  - 功能: 大小写转换、字符串反转、去除空格

## 🛠️ 插件开发

详细开发指南请参考：`docs/07-插件开发指南.md`

快速示例：

```java
@NodePlugin(
    id = "my_plugin",
    name = "myPlugin",
    displayName = "My Plugin",
    category = NodeCategory.OTHER,
    version = "1.0.0"
)
@Component
public class MyPluginNode implements WorkflowNode {
    // 实现接口...
}
```

## 🔧 插件管理API

### 查询所有插件

```bash
GET /api/plugins
```

### 启用/禁用插件

```bash
POST /api/plugins/{pluginId}/enable
POST /api/plugins/{pluginId}/disable
```

### 查看插件详情

```bash
GET /api/plugins/{pluginId}
```

### 统计信息

```bash
GET /api/plugins/statistics
```

## ⚠️ 注意事项

1. **第一期**：仅支持内置插件，外部JAR加载将在第二期实现
2. **热加载**：当前不支持，需要重启应用
3. **依赖管理**：插件间依赖解析在第三期实现
4. **安全性**：请勿加载未知来源的插件

## 📋 开发计划

### ✅ 第一期（已完成）
- [x] 插件注解系统
- [x] 自动扫描和注册
- [x] 插件管理API
- [x] 示例插件

### ⏳ 第二期（规划中）
- [ ] 外部JAR加载
- [ ] 独立类加载器
- [ ] 热加载支持
- [ ] 插件上传API

### 📅 第三期（未来）
- [ ] 插件依赖管理
- [ ] 插件市场
- [ ] 插件沙箱
- [ ] 插件评级系统

## 📚 相关文档

- [插件化架构设计](../docs/06-插件化架构设计.md)
- [插件开发指南](../docs/07-插件开发指南.md)
- [后端技术设计](../docs/02-后端技术设计.md)

## 🤝 贡献

欢迎贡献新的插件！请遵循开发规范并提交Pull Request。

---

**最后更新**: 2025-01-13  
**版本**: v1.0
