Skip to content

构造一个 NACEB ​

ts
import { NACEB } from '@nyirusu/nasdk/NACEB'
import type {
  EventAlias,
  PipelineHandler,
  TaskHandler,
} from '@nyirusu/nasdk/NACEB'

const naceb = new NACEB({ 
  pipelineHandlers: PipelineHandler[],
  taskHandlers: TaskHandler[],
  eventAlias?: EventAlias[],
})
参数说明
pipelineHandlers可用的 PipelineHandler
taskHandlers可用的 TaskHandler
eventAlias可选,将 Event 名称映射到 Pipeline,详见 EventAlias

Handler 和 EventAlias 也可以在构造后通过 registerPipelineHandler()、registerTaskHandler() 与 registerEventAlias() 注册。

示例 ​

下面的 NACEB 接收 GreetingEvent,执行 greet Task,并通过 $terminal 返回结果:

js
import {
  NACEB,
  PipelineHandler,
  TaskHandler,
} from '@nyirusu/nasdk/NACEB'

class GreetingPipeline extends PipelineHandler { 
  name = 'greeting'
  description = '生成问候语'

  next(lastResult) {
    if (lastResult === undefined) {
      return { task: 'greet', input: this.event.payload }
    }
    return { task: '$terminal', input: lastResult }
  }
}

class GreetingTask extends TaskHandler {
  name = 'greet'

  async execute() {
    return `Hello, ${this.input.name}!`
  }
}

const naceb = new NACEB({
  pipelineHandlers: [new GreetingPipeline()],
  taskHandlers: [new GreetingTask()],
  eventAlias: [{
    eventName: 'GreetingEvent',
    pipelineName: 'greeting',
    description: '生成问候语',
  }],
})

运行 Event ​

pushEvent() 将返回 Event ID。

新 Event 默认状态保持在 idle,需要调用 start() 后方可开始运行:

js
const eventId = naceb.pushEvent({
  name: 'GreetingEvent',
  payload: { name: 'Nyirusu' },
})

const event = naceb.getEvent(eventId)
event.afterTDone(function () {
  console.log(this.consume()) // Hello, Nyirusu!
})

await event.start()

Event 的输入、控制与消费方式参见 Event,状态变化参见 生命周期。

Released under the MIT License.