0.0.8 • Published 6 years ago
js-workflow-promise v0.0.8
js-workflow-promise
用类似promise链式调用的方式来做js工作流管理,有利于梳理和简化复杂的业务流程。
Installation
npm install js-workflow-promise -gExamples
import { workflow } from '../src/index'
workflow
.init({
name: 'workflow-demo',
context: null
})
.add({
name: 'task1',
target(curTask) {
console.log(`Workflow-excuting: ${curTask.name}-excuted`)
}
})
.run()这个例子新建了一个名为workflow-demo的工作流,并往这个工作流中添加了一个任务task1,然后启动工作流。需要注意的是,工作流的返回值都会是一个promise
API Reference
- Init
({opt: WorkflowOptions})=>Workflow - Add
(Array<Task> | Task) - Run
()=>Promise<Workflow> - Cancel
()=>void
Init
传入自定义配置来初始化一个工作流,配置可选
| 属性 | 含义 |
|---|---|
| name | 工作流名称 |
| context | 作为贯穿工作流的上下文 |
| debug | 是否开启调试模式 |
Add
往工作流中添加一个任务task或者一个任务组taskGroup,要注意必须先进行初始化init。
每个工作流都是由无数的合流,分流任务组成的,每个task需要满足以下特征
| 属性 | 类型 | 含义 |
|---|---|---|
| name | string | 任务名称 |
| target | (task:Task,workflowInst:Workflow)=>any | 任务目标函数 |
| scope | any | 任务函数执行作用域,不传则作用域默认为当前工作流。 |
| description | string | 任务描述 |
| filter | (task:Task)=>boolean | 是否应该执行该次任务 |
Run
执行工作流中的任务,最终返回一个promise。
要注意的是,只要工作流中的一个任务中断(出错或者显性地调用this.cancel()),则会抛出异常,且不会执行后续任务。
Cancel
中断工作流,中断正在执行的任务,且不会执行后续任务。
Property Reference
Name
工作流的名称
Context
贯穿工作流的上下文,可以类似使用koa.ctx的思想和习惯来使用该属性。
Debug
开启调试模式。开启后会将task运行的细节记录起来,可以通过record获取到每个task运行的结果,错误信息,耗时信息
TODO LIST
- 收集workflow运行结果并可视化展示