xline
Keyword
低代码(low code)、有向无环图(DAG)、代码生成器(Code generator)、依赖注入(Dependency injection)、JS,typescript、批处理(Batch processing)
Features
- 它是一个节点管理框架,它可以组织控制一群节点的运行顺序,包含异步机制
- 它的核心数据结构是一个有向无环图,可以通过本工具从有向无环图种搜索出相关的链路,关系树
- 它的每个节点中,会注入它需要的关系节点
- 它可以用到一些批量程序,具备异步同步机制,可以用于复杂的批处理任务调度,代码生成器设计中
- 它可以对每个节点进行多种标记和描述,便于记忆,和管理
Install
yarn
yarn add xline
npm
npm install xline
Usage
它主要包含两个装饰器(LNode,Mark),一个加载器(Context),一个节点继承类(LineNode),一个常量配置参数(GLOBAL_TYPE)
- Context 控制对象节点的加载,搜索,运行
- LineNode 节点的父类
- LNode 节点的关系信息,类型
- Mark 节点的标记信息
- GLOBAL_TYPE 常量参数
import { Context,LineNode,LNode,Mark,GLOBAL_TYPE } from 'xline';
- 加载器(Context)
import { Context } from 'xline';//引入加载器
import objs from './objects/Index';//继承了LineNode的对象数组
//加载集合节点
//总共加载了三个节点,分别标记 node1,node2,node3 . 配置:node2 from node1, mode3 from node1
//每个节点的run 函数,打印 1,2,3
let ctx = new Context(objs);
//加载就绪
ctx.ready(()=>{
//用节点标记描述需要的节点
ctx.desc("node1","node2").then((res)=>{
console.log("result:",res);
/**
* 1
* 2
* result:1
*/
});
})
//描述结果信息
ctx.onDescMsg((msg)=>{
console.log(msg);
/*
{
"line": [0, 1],
"link": [
[0, 1]
],
"names": ["节点1", "节点2"],
"data": ["ready"],
"describe": ["node1", "node2"],
"code": 200,
"msg": "success"
}
*/
});
- 对象
import {LNode,Mark,LineNode,GLOBAL_TYPE} from 'xline';
import Obj1 from './Obj1' ;
import Obj2 from './Obj2' ;
//对当前对象进行描述,名称,节点关系,关系类型
@LNode({
name:"节点1",
type:GLOBAL_TYPE.BRANCK_TYPE.COLLECT,
from:[Obj1,Obj2]
})
@Mark("node1")//用于监听当前的对象,符合什么样的状态
export default class Ready extends LineNode {
//当前节点运行函数
// 可以是异步函数
public run() {
console.log("1");
}
}
Contributing
Emaiil
欢迎与我联系,讨论研究相关内容 yuelinhua@126.com
Version
1.0.17 添加装饰器当前节点文件名及相对路径属性
1.0.16 添加分支互斥规则
1.0.14 修改描述文档,及相关类的命名
1.0.13 修复链路只有一条时,描述字段 反馈执行的链路不匹配
...