golang实现andflow流程引擎
创始人
2024-02-23 23:27:36
0

1、andflow引擎

andflow_js可以实现在Html端设计流程,并将设计结果保存为json模型,andflow可以用于设计业务流程、数据处理流程、工作流、控制流等一切可流程化的过程。
由于golang具备高效、跨平台、并且还能够直接编译成可执行文件,这些优势让我们在第一个andflow引擎开发中优先选择golang。
在这里插入图片描述

2、设计思路

  • andflow执行引擎的设计,主要考虑了以下几点思路:
  • 实现流程的异步执行并兼顾同步控制:更多采纳了golang chan 的特性,为所有节点和连接线创建执行队列,提高并行执行效率。
  • 支持开发人员自定义节点执行器:针对不同的节点类型,通过实现节点执行接口、注册自定义节点执行器。
  • 支持中断与继续执行:在非异常中断后只需要保留运行时信息,可以在下次继续从中断处继续执行。
  • 自带javaScript脚本引擎的通用节点执行器:基于js脚本引擎,实现在流程设计的节点中配置执行脚本。脚本可以在执行流程过程中被执行。

3、一个例子

例子主要执行流程,并在节点中实现

json文件《4执行脚本.json》

在这里插入图片描述


{"code": "","name": "","show_action_body": "true","show_action_content": "true","theme": "flow_theme_default","link_type": "Flowchart","params": [],"actions": [{"id": "f7a6ec0031784f5a80d8633a6418fd52","left": "30px","top": "90px","name": "begin","theme": "action_theme_icon","params": {},"title": "开始","icon": "begin.png","width": "120px","height": "80px","content": {"content_type": "msg","content": "yes"}},{"id": "f558687ca5f34a6c89732eb50749a15a","left": "700px","top": "170px","name": "end","theme": "action_theme_icon","params": {},"title": "结束","icon": "end.png","width": "120px","height": "80px"},{"id": "1c53b069bfd34d4da0ac0d74d8e539d5","left": "310px","top": "120px","name": "script","params": {},"title": "执行脚本","icon": "script.png","width": "120px","height": "80px","content": {"content": "如果name=='zgq'就继续,否则不继续"},"theme": "action_theme_default","once": "false","collect": "false","script": "var name = getParam(\"name\");print(\"hello \"+name);\n\nif(name==\"zgq\"){\nreturn 1;\n}else{\nreturn 0;\n}"}],"links": [{"source_id": "1c53b069bfd34d4da0ac0d74d8e539d5","target_id": "f558687ca5f34a6c89732eb50749a15a"},{"source_id": "f7a6ec0031784f5a80d8633a6418fd52","target_id": "1c53b069bfd34d4da0ac0d74d8e539d5"}],"groups": [],"lists": [],"tips": []
}

golang代码

import (
"fmt"
"io/ioutil"
​
​
"github.com/zone-7/andflow_go/actions"
"github.com/zone-7/andflow_go/engine"
)
​
​
func main() {
file := "4执行脚本.json"
​
​
engine.RegistActionRunner("common", &actions.CommonActionRunner{})
​
​
param := make(map[string]interface{})
​param["name"] = "zgq"
​
data, _ := ioutil.ReadFile(file)
​
​
flow, err := engine.ParseFlow(string(data))
if err != nil {
fmt.Println(err)
return
}
​
​
runtime := engine.CreateRuntime(flow, param)
​
​
runner := engine.CommonFlowRunner{}
engine.Execute(runtime, &runner, 10000)
​
​
fmt.Println("time used(ms):", runtime.Timeused)
​
​
}
​

​执行结果:
在这里插入图片描述
下载源代码,扫码回复 ”流程引擎“
在这里插入图片描述

相关内容

热门资讯

北京同仁堂致歉:将起诉涉事企业 近日,上海市消保委揭露“同仁堂南极磷虾油”产品磷脂含量为0,把品牌方推至舆论的风口浪尖。 此前报道 ...
广州公布“标杆涉外法律服务机构... 12月19日,广州市举办第四季度涉外法治供需对接会。南都N视频记者从会上获悉,会议强调要深化穗港澳规...
北京同仁堂就南极磷虾油磷脂含量... 近日,上海市消保委揭露“同仁堂南极磷虾油”产品磷脂含量为0,把品牌方推至舆论的风口浪尖。12月20日...
做优法律监督主责主业,更好服务... 做优法律监督主责主业 更好服务全面依法治国 ——专访二级大检察官,江西省检察院党组书记、检察长丁顺生...
中国佛教协会:法规戒律是“生命... 微信公众号“中国佛教协会”消息,12月19日,中国佛教协会召开“学法规、守戒律、重修为、树形象”教育...
台资企业上市政策说明和经验交流... 12月19日,由国务院台办经济局、中国证券监督管理委员会港澳台事务办公室指导,全国台企联、深圳市台办...
“体重立法”引热议,健康促进条... 经浙江省人大常委会批准,《杭州市全民健康促进条例》(以下简称“《条例》”)将于明年1月1日起正式施行...
华映科技:股东华映百慕大因纠纷... 雷达财经 文|冯秀语 编|李亦辉 12月19日,华映科技(证券简称:华映科技,证券代码:000536...
成都离婚律师排名与口碑:胡静律... 在成都,当人们面临离婚纠纷时,寻找一位靠谱、专业且口碑良好的离婚律师至关重要。离婚律师的排名情况、口...
科普挂:一文搞懂“假飞入境澳门... 厚积薄发 启行千里 导 读 近年来,一种被称为 “假飞入境澳门” 的行为模式,在内地与港澳出入境管...