轻量级流程引擎系统技术方案

技术编号:35266074 阅读:15 留言:0更新日期:2022-10-19 10:28
本发明专利技术涉及软件开发技术领域,尤其涉及轻量级流程引擎系统。主要针对流程引擎工作流臃肿,不能抽象出流程本身,应用受限问题,提出如下方案:流程引擎系统的AP I包括:create_process(i d,name,nodes)创建流程;create_i nstance(process_i d,context)创建流程实例;start_i nstance(i nstance_i d)开始执行流程实例;commit_node(i nstance_i d,node_i d,context)提交节点;se l ect_i nstance(where)查询流程实例。本发明专利技术概念简单清晰,解耦流程引擎和业务逻辑,主要应用于软件。主要应用于软件。

【技术实现步骤摘要】
轻量级流程引擎系统


[0001]本专利技术涉及软件开发
,尤其涉及轻量级流程引擎系统。

技术介绍

[0002]业务开发过程中,经常会出现处理工作审批、订单处理、诉求工单、消息推送等等场景。这些场景都涉及到根据具体条件进行流程扭转,且过程往往是异步。处理此类需求,一般有两种技术方案。第一种方案是针对具体的需求,编写对应的流程控制代码,和业务逻辑代码混在一起,该方案具有如下缺点:一、业务代码混杂了业务逻辑和流程控制,流程一复杂代码极难维护;二、如果流程跨多个团队,服务耦合,梳理整体流程极其困难。第二种方案是流程引擎,流程引擎可以将业务逻辑和流程控制分离,减轻业务逻辑的复杂度。市面上有一些类似的产品,如:Activiti、go

workflow;Activiti缺点:一、基于BPMN XML的流程模板格式,里面概念繁多,难以理解与维护;二、Java友好,对其他语言不友好,且需要集成到业务代码中,非常臃肿。go

workflow缺点:一、虽然摒弃了BPMN而采用JSON格式,但其一样概念多、模式单一;二、拘泥于工作流,没有很好地抽象出流程本质,应用场景不够通用。因此,我们提出轻量级流程引擎系统。

技术实现思路

[0003]本专利技术的目的是针对
技术介绍
中存在的现有的流程引擎不便维护,工作流臃肿,并且拘泥于工作流,不能很好的抽象出流程本身,应用场景不够通用的问题,提出轻量级流程引擎系统。
[0004]本专利技术的技术方案:轻量级流程引擎系统,所述流程引擎系统的应用程序接口主要包括:
[0005]create_process(id,name,nodes)创建流程;
[0006]create_instance(process_id,context)创建流程实例;
[0007]start_instance(instance_id)开始执行流程实例;
[0008]commit_node(instance_id,node_id,context)提交节点;
[0009]select_instance(where)查询流程实例;
[0010]创建流程采用JSON格式进行定义描述,会输入后会生成直观的状态变换图;
[0011]创建流程实例需要带上上下文参数(context),流程引擎根据流程ID找到对应的流程,并创建一条对应的流程实例记录;流程实例内存储流程上下文和流程节点状态;
[0012]提交节点根据节点结果向流程引擎节点发送指令,流程引擎接收指令后判断流程运行路径并执行流程运行路径。
[0013]优选的,所述创建流程根据用户使用场景和使用需求进行自定义设定,创建流程中包括流程、流程ID、流程名、流程描述、流程上下文、节点列表,所述节点列表是一个是节点的数组,里面存储了所有节点信息。
[0014]优选的,所述流程上下文为流程扭转过程中使用的变量。
[0015]优选的,所述节点包括节点ID、节点名、节点类型、节点网关;节点ID是唯一量,是节点的标识符;节点类型为start,代表流程从当前节点开始扭转;节点类型为end,代表流程结束。
[0016]优选的,所述节点网关包括扭转条件、后续节点、条件描述,扭转条件通过表达式表达,表达式里面的标量来自流程上下文,流程引擎用于顺序判断各个表达式是否成立,表达式成立扭转到后续节点next_nodes(next_nodes里面含有后续节点的ID),当前节点结束。
[0017]优选的,创建流程实例内包括实例日志,所述实例日志用于记录流程实例的详细流水日志,具体包括时间(time)、节点(node)、上下文(context)信息。
[0018]与现有技术相比,本专利技术具有如下有益的技术效果:
[0019]1、本专利技术通过对设计语言的简化,摒弃了BPMN以及工作流的繁多概念,仅用流程、流程实例、节点、节点事件等的概念,使得流程引擎足够轻量化,减轻了业务开发的理解负担,且不局限于工作流;流程采用JSON格式编写,流程引擎执行流程,产生流程节点事件,事件队列驱动,使得业务和流程引擎解耦,无须集成SDK,业务组可以使用任何开发语言、可分布式、可跨团队,从而实现原理上的优化。
[0020]2、本专利技术还通过创建流程的可开发性,拓宽应用场景,不仅适合工作流,还可以用于任何需要流程控制的场景,实例日志的备份存储,并通过查询流程实例的设置,提供流程扭转的可视化功能,可以方便看到流程实例的扭转情况,便于了解流程运行情况,支持流程扭转的可视化;
[0021]3、综上所述,本专利技术舍弃臃肿的工作流的概念,抽象出轻量简单的流程引擎概念,减轻业务开发理解繁多概念的负担,概念简单清晰,支持任意语言、可以分布式、跨团队使用,事件队列驱动,解耦流程引擎和业务逻辑,可以分开独立部署,提供流程可视化功能,可以直观了解流程执行情况。
具体实施方式
[0022]下文结合具体实例为具体实施例对本专利技术的技术方案做进一步说明。
[0023]实施例
[0024]本专利技术提出的轻量级流程引擎系统,所述流程引擎系统的应用程序接口主要包括:
[0025]create_process(id,name,nodes)创建流程;
[0026]create_instance(process_id,context)创建流程实例;
[0027]start_instance(instance_id)开始执行流程实例;
[0028]commit_node(instance_id,node_id,context)提交节点;
[0029]select_instance(where)查询流程实例;
[0030]创建流程采用JSON格式进行定义描述,会输入后会生成直观的状态变换图;
[0031]创建流程实例需要带上上下文参数(context),流程引擎根据流程ID找到对应的流程,并创建一条对应的流程实例记录;流程实例内存储流程上下文和流程节点状态;创建流程实例内包括实例日志,实例日志用于记录流程实例的详细流水日志,具体包括时间(time)、节点(node)、上下文(context)信息;
[0032]提交节点根据节点结果向流程引擎节点发送指令,流程引擎接收指令后判断流程运行路径并执行流程运行路径;
[0033]创建流程根据用户使用场景和使用需求进行自定义设定,创建流程中包括流程、流程ID、流程名、流程描述、流程上下文、节点列表,节点列表是一个是节点的数组,里面存储了所有节点信息,流程上下文为流程扭转过程中使用的变量;节点包括节点ID、节点名、节点类型、节点网关;节点ID是唯一量,是节点的标识符;节点类型为start,代表流程从当前节点开始扭转;节点类型为end,代表流程结束;节点网关包括扭转条件、后续节点、条件描述,扭转条件通过表达式表达,表达式里面的标量来自流程上下文,流程引擎用于顺序判断各个表达式是否成立,表达式成立扭转到后续节点n本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.轻量级流程引擎系统,其特征在于,所述流程引擎系统的应用程序接口主要包括:create_process(id,name,nodes)创建流程;create_instance(process_id,context)创建流程实例;start_instance(instance_id)开始执行流程实例;commit_node(instance_id,node_id,context)提交节点;select_instance(where)查询流程实例;创建流程采用JSON格式进行定义描述,会输入后会生成直观的状态变换图;创建流程实例需要带上上下文参数(context),流程引擎根据流程ID找到对应的流程,并创建一条对应的流程实例记录;流程实例内存储流程上下文和流程节点状态;提交节点根据节点结果向流程引擎节点发送指令,流程引擎接收指令后判断流程运行路径并执行流程运行路径。2.根据权利要求1所述的轻量级流程引擎系统,其特征在于,所述创建流程根据用户使用场景和使用需求进行自定义设定,创建流程中包括流程、流程ID、流程名、流程...

【专利技术属性】
技术研发人员:方长年
申请(专利权)人:名气家上海信息技术有限公司
类型:发明
国别省市:

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

1