1.加载插件

This commit is contained in:
robin
2022-05-28 03:55:53 +08:00
parent 96333ae7a9
commit 96bfa3f2d3
15 changed files with 1368 additions and 1066 deletions
+3
View File
@@ -0,0 +1,3 @@
module.exports = {
path:"app/*/event/*.js"
}
+16
View File
@@ -0,0 +1,16 @@
/**
* 事件插件
* 加载event文件夹下的事件
*/
const config = require("./config")
const EventEmitter = require('events');
module.exports = async (app) => {
app.event = new EventEmitter()
const evList = await app.load(config.path)
evList.forEach(item => {
Object.keys(item.res).forEach(key => {
//载入所有事件
app.event.on(key, item.res[key])
})
})
}
-4
View File
@@ -1,4 +0,0 @@
//加载配置文件
module.exports = (app) => {
}
+21
View File
@@ -0,0 +1,21 @@
MIT License
Copyright (c) [year] [fullname]
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
+189
View File
@@ -0,0 +1,189 @@
**有限状态机**
用于编排复杂的流程业务,如订单流转,审批流程
# 安装
```
npm install bamboo_smf -S
```
# 使用
```
const Smf = require('bamboo_smf');
const circuit1 = new Smf()
//订单正常流程
circuit1.init('order', 'new')
.push('new', 'order.pay')
.push('pay', 'order.confirm', 'refund.start')
.push('confirm', 'order.end')
.push('end')
const circuit2 = new Smf()
//订单退款流程
circuit2.init('refund', 'start')
.push('start', 'refund.reimburse')
.push('reimburse', 'refund.end')
.push('end')
const processFlow = new Smf()
//把编排好的流程数据导入
processFlow.setSmfDataList([
circuit1.getSmfData(),
circuit2.getSmfData(),
])
//监听流程变更
processFlow.on((e, paras) => {
console.log(e,paras);
})
//跳转下个流程
processFlow.setStatus('order.new').nextTo()
// or
processFlow.nextTo('order.new')
```
# Smf.init
定义初始值状态
```
const circuit = new Smf()
circuit.init('状态链名称', '初始状态')
```
# Smf.push
添加转变内容
```
circuit.push('状态名称', '下一个流程地址(区块名称.状态名称)','异常时的流程地址(区块名称.状态名称)')
```
# Smf.getSmfData
获取全部定义的json数据
```
circuit.getSmfData()
```
# Smf.setSmfDataList
设置所有区块数据
```
circuit.setSmfDataList([区块数据])
```
# Smf.setStatus
设置当前状态
```
circuit.setStatus('当前状态(区块名称.状态名称)')
```
# Smf.get
获取当前状态的数据
```
circuit.get()
```
# Smf.getStatusName
获取当前状态的名称
```
circuit.getStatusName()
```
# Smf.getCurrentState
获取当前区域和状态
```
circuit.getCurrentState()
```
# Smf.getTo
获取当前状态的to区域和状态
```
circuit.getTo()
```
# Smf.getErr
获取当前状态的err区域和状态
```
circuit.getErr()
```
# Smf.start
触发开始状态
```
circuit.start('区块名称','事件入参')
```
# Smf.end
触发结束状态(最后一个状态)
```
circuit.end('区块名称','事件入参')
```
# Smf.next
按当前状态跳转下一个
```
circuit.next('事件:to,err','跳转时可以重新定义当前状态','事件入参')
```
# Smf.nextTo
按当前状态跳转到to
```
circuit.next('跳转时可以重新定义当前状态','事件入参')
```
# Smf.nextErr
按当前状态跳转到err
```
circuit.next('跳转时可以重新定义当前状态','事件入参')
```
# Smf.on
触发跳转时的事件
```
circuit.on((e, paras) => {
console.log(e,paras);
/**
e:当前状态数据: {
status_name: 'ling',
to: 'test.end',
err: '',
currentState: 'test.ling'
}
**/
})
```
+48 -1049
View File
File diff suppressed because it is too large Load Diff
+15
View File
@@ -0,0 +1,15 @@
{
"name": "bamboo",
"version": "1.0.0",
"description": "",
"main": "index.js",
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1"
},
"author": "robin",
"license": "ISC",
"dependencies": {
"glob": "^8.0.3",
"koa": "^2.13.4"
}
}
+1063
View File
File diff suppressed because it is too large Load Diff
+1 -1
View File
@@ -13,6 +13,6 @@ require('@babel/register')({
]
})
require('@babel/polyfill')
const bamboo = require('./bamboo/bamboo')
const bamboo = require('./bamboo/index')
const app = new bamboo();
// app.listen(3000);
+1 -1
View File
@@ -39,7 +39,7 @@
"dependencies": {
"@babel/core": "^7.16.7",
"@babel/node": "^7.16.8",
"@babel/plugin-proposal-decorators": "^7.17.9",
"@babel/plugin-proposal-decorators": "^7.18.2",
"@babel/polyfill": "^7.4.4",
"@babel/preset-env": "^7.16.8",
"@babel/runtime": "^7.5.5",