一种面向服务编排的基于AST生成工作流服务的方法技术

技术编号:35275375 阅读:46 留言:0更新日期:2022-10-19 10:54
本申请公开了一种面向服务编排的基于AST生成工作流服务的方法。本发明专利技术具体实现包括:管理人员通过系统中台以拖拽的方式组合原子服务,形成业务流程的状态语言节点;后端分析所述状态语言节点中的数据和逻辑,合并形成所需语言的AST树;添加固定的输入、输出逻辑;将AST树转化为对应语言的可读代码,通过该语言的通用编辑器/解释器将可读代码生成或执行流程服务;以HTTP服务的形式对外提供服务。本发明专利技术的可执行程序不依赖其他独立运行的组件,方便扩展;相较于传统方式,职责明确,占用资源少,冷启动速度快,云原生化。云原生化。云原生化。

【技术实现步骤摘要】
一种面向服务编排的基于AST生成工作流服务的方法


[0001]本专利技术涉及计算机后端开发
,特别提供一种面向服务编排、基于AST的、职责明确的工作流生成方法。

技术介绍

[0002]随着计算机技术的不断发展,其在各个领域的应用范围越来越广。因此,技术人员需要根据不同的业务需求编写不同的业务代码。
[0003]传统的模式中,服务上线的流程繁琐,周期长,代码复用性差。在服务编排模式中,相关服务被分解成为单一功能的原子服务,每个服务都可以单独部署使用,通过不同的组织编排方式完成所需功能,以达到业务快速上线的目的。
[0004]目前市面上大多数服务编排的方案只能将流程转换为状态机节点集合并解释执行,对服务器配置要求高,花费时间长。如何实现资源占用小,适用场景广泛等问题是本领域技术人员关注的重点问题。

技术实现思路

[0005]本专利技术的目的在于提供一种面向服务编排的基于AST生成工作流服务的方法。
[0006]本专利技术技术方案如下:
[0007]管理人员通过系统中台以拖拽的方式组合原子服务,形成业务流程的状态语言节点;
[0008]后端分析所述状态语言节点中的数据和逻辑,合并形成所需语言的AST树;
[0009]向AST树中添加固定的输入、输出逻辑;
[0010]将AST树转化为对应语言的可读代码,通过该语言的通用编辑解释器将可读代码生成可执行流程服务;
[0011]以HTTP服务的形式对外提供服务。
[0012]进一步的,所述系统中台以拖拽的方式组合原子服务,原子服务可根据需求进行组合,该组合过程可视化,且业务流程的状态语言节点在拖拽完成后实时显示,管理人员可直接查看。
[0013]进一步的,所述原子服务是整套业务流程中最小的服务单位,其不可继续拆分,所述原子服务可独立完成某一项特定功能。
[0014]进一步的,所述状态语言节点包含顺序节点和分支节点,顺序节点能够调用相应的原子服务;所述的顺序节点是标记与任务顺序的任务节点。
[0015]进一步的,所述分析数据和逻辑的实现包含:资源管理、依赖分析、变量分析、代码填充。
[0016]所述资源管理表示每个资源ID对应标识一个原子服务,能与现有的已标识和管理的原子服务资源对接。
[0017]所述依赖分析包括:导入分析、初始化工作。
[0018]所述变量分析包括:路径分析、类型分析、分支分析。
[0019]所述代码填充通过遍历所述导入分析和所述初始化工作中生成的树,并添加至相关字段中以完成函数定义和数据定义,并通过所述分支分析中的分支进行遍历构建handler函数的主体。
[0020]进一步的,所述导入分析根据所述资源和资源内部的类型信息,遍历所有任务节点,并根据字段和类型名称生成对应的节点,最终构建成Import树;Import树的是导入分析的结果,作用是明确引入的语言模块或包。
[0021]所述初始化工作通过资源ID获知对应的原子服务调用类型和地址信息,并根据调用的信息生成对应的访问端对象实例的初始化语句节点,所有用到的初始化语句节点的集合形成Init树;所述的对象实例包括连接和编码解码能力;
[0022]进一步的,所述路径分析针对节点集合进行操作,对输入的节点集合进行深度优先遍历,保留树的原有结构,并在类型服务的支持下分析提取其中的变量路径信息和类型信息。所述类型服务存储有资源ID对应的原子服务输入输出的类型信息,并能够通过资源ID获取类型服务中存储的相关类型信息。
[0023]所述类型分析对强类型任务节点进行判断,通过类型服务,得到类型中包含的字段和类型信息,确认输入输出类型。
[0024]所述分支分析通过各状态语言节点之间的关系,递归分析得出分支内部的顺序关系和分支间的先后和嵌套关系,构建控制流。
[0025]进一步的,所述AST抽象语法树是编程语言源代码的抽象语法结构的树状表现形式,树上的每个节点都表示源代码中的一种结构。按照权利要求1所述,其特征在于,所述添加固定的输入、输出逻辑解析HTTP Body,写入JSON响应。
[0026]本专利技术的有益效果为:
[0027]1.本方法所得可执行程序本身无状态,只需能够访问日志等其他需要调用的服务,不依赖其他独立运行的组件,方便扩展;
[0028]2.相较于传统方式统一调度器的职责更明确,占用资源少,冷启动速度快,更加云原生,可以无缝接入serverless;
[0029]3.所述可执行程序是原子服务的工作,无需考虑数据库等问题,其组合的是逻辑,而非数据。
附图说明
[0030]图1为系统总体架构。
[0031]图2为工作流生成流程图。
[0032]图3为数据分析流程图。
具体实施方式
[0033]为使本专利技术实现的技术手段、创作特征、达成目的与功效易于明白了解,下面结合附图对本专利技术作进一步的说明。
[0034]本专利技术架构内容如图1所示,本专利技术的总体架构有系统中台、系统后端、客户端,其中,管理人员可操作系统中台,用户可操作客户端,以下为各部分具体功能:
[0035](1)系统中台:系统中台提供可供管理人员可视化操作的服务组件,管理人员可在中台进行服务编排,查看并管理已有工作流。
[0036]工作流生成流程图如图2所示,具体包括以下步骤:
[0037]步骤1、管理人员根据本次业务流程通过拖拽组件的方式组合相关服务组件。
[0038]步骤2、系统根据编排内容,给出相应流程图与状态语言节点,其可根据需要进行调整
[0039]步骤3、管理人员确认该业务流程无误后将状态语言节点传入系统后端,在系统后端对状态语言节点完成处理后得到返回。
[0040]步骤4、管理人员在系统中台查看并管理目前存在的工作流。
[0041](2)系统后端:系统后端分析状态语言节点中的数据和逻辑,合并形成所需语言的AST树,得到可执行代码进行编译后形成工作流以提供服务。
[0042]下面将结合具体实施事例和附图对本专利技术作进一步描述,以系统后端接收到前端传入的状态语言节点为例,后端创建工作流有以下步骤:
[0043]数据分析流程如图3所示,具体包括以下步骤:
[0044]步骤一:根据状态语言节点中所包含的信息名称集合到节点集合的映射关系Name

Node(以下说明将简称I),遍历所有任务节点下的Resource对象,进行依赖分析F
Dep

Analysis
,并按照DepPkgPath字段和需要的类型名称DepTypeName生成对应节点InitNodes(公式1),完成依赖分析,最终得到Import树DepInfo,其中包含InitNodes和ImportSpecs(公式2)。
[0045]DepInfo=DepPkgPath+DepTypeName
ꢀꢀꢀꢀ
(1本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种面向服务编排的基于AST生成工作流服务的方法,其特征在于,包括:管理人员通过系统中台以拖拽的方式组合原子服务,形成业务流程的状态语言节点;后端分析所述状态语言节点中的数据和逻辑,合并形成所需语言的AST树;向AST树中添加固定的输入、输出逻辑;将AST树转化为对应语言的可读代码,通过该语言的通用编辑解释器将可读代码生成可执行流程服务;以HTTP服务的形式对外提供服务。2.根据权利要求1所述的一种面向服务编排的基于AST生成工作流服务的方法,其特征在于系统中台以拖拽的方式组合原子服务,原子服务可根据需求进行组合,该组合过程可视化,且业务流程的状态语言节点在拖拽完成后实时显示,管理人员可直接查看。3.根据权利要求1或2所述的一种面向服务编排的基于AST生成工作流服务的方法,其特征在于原子服务是整套业务流程中最小的服务单位,其不可继续拆分,所述原子服务可独立完成某一项特定功能。4.根据权利要求3所述的一种面向服务编排的基于AST生成工作流服务的方法,其特征在于状态语言节点包含顺序节点和分支节点,顺序节点能够调用相应的原子服务;所述的顺序节点是标记与任务顺序的任务节点。5.根据权利要求4所述的一种面向服务编排的基于AST生成工作流服务的方法,其特征在于分析数据和逻辑的实现包含:资源管理、依赖分析、变量分析、代码填充;所述资源管理表示每个资源ID对应标识一个原子服务,能与现有的已标识和管理的原子服务资源对接;所述依赖分析包括:导入分析、初始化工作;所述变量分析包括:路径分析、类型分析、分支分析;所述代码填充通过遍历所述导入分析和所述初始化工作中生成的树,并添加至相关字段中以完成函数定义和数据定义,并通过所述分支分析中的分支进行遍历构建handler函数的主体。6.根据权利要求5所述的一种面向服务编排的基于AST生成工作流服务的方法,其特征在于所述依赖分析:根据状态语言节点中所包含的信息名称集合到节点集合的映射关系Name

Node,即映射关系I,遍历所有任务节点下的Resource对象,进行依赖分析F
Dep

Analysis
,并按照DepPkgPath字段和需要的类型名称DepTypeName生成对应节点InitNodes(公式1),完成依赖分析,最终得到Import树DepInfo,其中包含InitNodes和ImportSpecs(公式2);DepInfo=DepPkgPath+DepTypeName
ꢀꢀꢀꢀ
(1)DepInfo=F
Dep

Analysis
(I)

<DepID,<InitNodes,ImportSpecs>>
ꢀꢀꢀ
(2)。7.根据权利要求5或6所述的一种面向服务编排的基于AST生成工作流服务的方法,其特征在于所述的路径分析:根据映射关系I,对每个状态节点按路径深入遍历,提取指示输入输出状态的路径字符串,按“.”字符进行分割,形成层次并按照层次合并,完成路径分析F
Path

Analysis
,得到路径信息PathInfo,完成路径分析(公式3);PathInfo=F
Path

Analysis
(I)
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
(3)
根据映射关系I,对任务节点进行类型判断,从类型服务根据资源ID得到类型中包含的字段和类型信息,完成对每个路径字符串所指示的路径的类型分析操作F
Type

Analysis
,确认输入输出类型TypeInfo,完成类型分析:TypeInfo=F
Type

Analysis
(I)
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
(4)根据得到的路径信息PathInfo与类型信息TypeInfo,进行树合并操作F
Tree

...

【专利技术属性】
技术研发人员:汤文垚吕秋云宋梁亮黄鹏飞曹雨豪沈喆陈菲尔
申请(专利权)人:杭州电子科技大学
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1