solon ai flow 的组件，即是 solon flow 的任务组件：

```java
public class ComImpl implements TaskComponent {
    @Override
    public void run(FlowContext context, Node node) throws Throwable {
        
    }
}
```

为了使用更方便些，框架提供了几个基类： 



| 接口                             | 描述                                                          | 
| ------------------- | ----------------------------------- |
| AiComponent                | Ai 组件接口                                                  | 
| AbsAiComponent           | Ai 虚拟组件（基类）                                      | 
| AiIoComponent              | Ai 输入输出组件接口（提供了一组快捷方法）     | 
| AiPropertyComponent     | Ai 属性组件接口（提供了一组快捷方法）           | 


### 1、Solon 环境定制示例

或者其它容器型框架环境

```java
@Component("ConsoleInput")
public class ConsoleInputCom extends AbsAiComponent implements AiIoComponent {
    @Override
    public Object getInput(FlowContext context, Node node) throws Throwable {
        BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
        return reader.readLine();
    }

    @Override
    protected void doRun(FlowContext context, Node node) throws Throwable {
        Object data = getInput(context, node);

        setOutput(context, node, data);
    }
}
```


### 2、Java 原生环境定制示例


更多内容参考：[《flow - 流程引擎构建与定制》](/article/1081)

```java
public class ConsoleInputCom extends AbsAiComponent implements AiIoComponent {
    @Override
    public Object getInput(FlowContext context, Node node) throws Throwable {
        BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
        return reader.readLine();
    }

    @Override
    protected void doRun(FlowContext context, Node node) throws Throwable {
        Object data = getInput(context, node);

        setOutput(context, node, data);
    }
}

//构建组件容器
MapContainer container = new MapContainer();
container.putComponent("ConsoleInput", new ConsoleInputCom());

//构建驱动
SimpleFlowDriver flowDriver = new SimpleFlowDriver(container);

//构建引擎
FlowEngine engine = FlowEngine.newInstance();
engine.register(flowDriver);
```





