CN117474312B - 可视化业务流编排方法、系统、电子设备及存储介质 - Google Patents
可视化业务流编排方法、系统、电子设备及存储介质 Download PDFInfo
- Publication number
- CN117474312B CN117474312B CN202311829263.9A CN202311829263A CN117474312B CN 117474312 B CN117474312 B CN 117474312B CN 202311829263 A CN202311829263 A CN 202311829263A CN 117474312 B CN117474312 B CN 117474312B
- Authority
- CN
- China
- Prior art keywords
- node
- service flow
- execution
- script
- information
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
- 238000000034 method Methods 0.000 title claims abstract description 67
- 230000000007 visual effect Effects 0.000 title claims abstract description 36
- 238000003860 storage Methods 0.000 title claims abstract description 10
- 238000013515 script Methods 0.000 claims abstract description 149
- 230000002441 reversible effect Effects 0.000 claims abstract description 42
- 238000012545 processing Methods 0.000 claims abstract description 26
- 238000011144 upstream manufacturing Methods 0.000 claims description 51
- 238000011161 development Methods 0.000 claims description 11
- 230000002159 abnormal effect Effects 0.000 claims description 10
- 238000012360 testing method Methods 0.000 claims description 10
- 230000004048 modification Effects 0.000 claims description 8
- 238000012986 modification Methods 0.000 claims description 8
- 238000004064 recycling Methods 0.000 claims description 8
- 238000004590 computer program Methods 0.000 claims description 6
- 125000002015 acyclic group Chemical group 0.000 claims description 3
- 238000012800 visualization Methods 0.000 claims 1
- 238000004519 manufacturing process Methods 0.000 abstract description 14
- 230000006870 function Effects 0.000 description 47
- 230000008569 process Effects 0.000 description 16
- 230000005856 abnormality Effects 0.000 description 5
- 230000008859 change Effects 0.000 description 5
- 230000002829 reductive effect Effects 0.000 description 5
- 238000012384 transportation and delivery Methods 0.000 description 5
- 238000007726 management method Methods 0.000 description 4
- 239000000463 material Substances 0.000 description 4
- 239000000306 component Substances 0.000 description 3
- 230000000694 effects Effects 0.000 description 3
- 239000000047 product Substances 0.000 description 3
- 230000004044 response Effects 0.000 description 3
- 230000009471 action Effects 0.000 description 2
- 230000006978 adaptation Effects 0.000 description 2
- 238000004458 analytical method Methods 0.000 description 2
- 238000003491 array Methods 0.000 description 2
- 238000006243 chemical reaction Methods 0.000 description 2
- 238000004891 communication Methods 0.000 description 2
- 238000010586 diagram Methods 0.000 description 2
- 230000007246 mechanism Effects 0.000 description 2
- 238000004806 packaging method and process Methods 0.000 description 2
- 238000013439 planning Methods 0.000 description 2
- 239000011265 semifinished product Substances 0.000 description 2
- 238000012795 verification Methods 0.000 description 2
- 238000012356 Product development Methods 0.000 description 1
- 239000008186 active pharmaceutical agent Substances 0.000 description 1
- 238000007792 addition Methods 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 230000008901 benefit Effects 0.000 description 1
- 210000004556 brain Anatomy 0.000 description 1
- 238000012790 confirmation Methods 0.000 description 1
- 239000008358 core component Substances 0.000 description 1
- 230000008878 coupling Effects 0.000 description 1
- 238000010168 coupling process Methods 0.000 description 1
- 238000005859 coupling reaction Methods 0.000 description 1
- 230000007547 defect Effects 0.000 description 1
- 238000012217 deletion Methods 0.000 description 1
- 230000037430 deletion Effects 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 238000009776 industrial production Methods 0.000 description 1
- 230000010354 integration Effects 0.000 description 1
- 230000003993 interaction Effects 0.000 description 1
- 230000002452 interceptive effect Effects 0.000 description 1
- 230000000670 limiting effect Effects 0.000 description 1
- 238000005457 optimization Methods 0.000 description 1
- 230000036961 partial effect Effects 0.000 description 1
- 230000000750 progressive effect Effects 0.000 description 1
- 230000001172 regenerating effect Effects 0.000 description 1
- 238000009877 rendering Methods 0.000 description 1
- 238000005096 rolling process Methods 0.000 description 1
- 238000011282 treatment Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06Q—INFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
- G06Q10/00—Administration; Management
- G06Q10/06—Resources, workflows, human or project management; Enterprise or organisation planning; Enterprise or organisation modelling
- G06Q10/063—Operations research, analysis or management
- G06Q10/0633—Workflow analysis
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/90—Details of database functions independent of the retrieved data types
- G06F16/904—Browsing; Visualisation therefor
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06Q—INFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
- G06Q10/00—Administration; Management
- G06Q10/10—Office automation; Time management
- G06Q10/101—Collaborative creation, e.g. joint development of products or services
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06Q—INFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
- G06Q10/00—Administration; Management
- G06Q10/10—Office automation; Time management
- G06Q10/103—Workflow collaboration or project management
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06Q—INFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
- G06Q50/00—Information and communication technology [ICT] specially adapted for implementation of business processes of specific business sectors, e.g. utilities or tourism
- G06Q50/04—Manufacturing
Landscapes
- Business, Economics & Management (AREA)
- Engineering & Computer Science (AREA)
- Human Resources & Organizations (AREA)
- Strategic Management (AREA)
- Entrepreneurship & Innovation (AREA)
- Theoretical Computer Science (AREA)
- Economics (AREA)
- General Physics & Mathematics (AREA)
- Physics & Mathematics (AREA)
- Tourism & Hospitality (AREA)
- Marketing (AREA)
- General Business, Economics & Management (AREA)
- Operations Research (AREA)
- Quality & Reliability (AREA)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- Development Economics (AREA)
- Educational Administration (AREA)
- Manufacturing & Machinery (AREA)
- Health & Medical Sciences (AREA)
- General Health & Medical Sciences (AREA)
- Primary Health Care (AREA)
- Game Theory and Decision Science (AREA)
- General Engineering & Computer Science (AREA)
- Stored Programmes (AREA)
Abstract
本发明提供了可视化业务流编排方法、系统、电子设备及存储介质,方法包括以下步骤:1)初始化画布,配置基于有向无环图的业务流及业务流节点信息;2)将已配置的节点信息转换成节点动态脚本并存储到数据库;3)在节点配置的动态脚本不满足需求时,对节点的动态脚本再开发,替换之前的脚本;4)配置业务流的发布接口,用于对外提供服务时被调用;5)第三方系统调用已发布的业务流接口,业务流引擎根据执行状态控制节点的顺序执行或者逆序执行;6)执行完最后一个节点,业务流执行结束,进行资源提交、回收操作。本发明能够快速满足制造企业中业务协同的需要,能够满足业务流中复杂的业务逻辑处理,能够保证数据一致性。
Description
技术领域
本发明涉及计算机技术领域,具体是一种基于动态脚本的可视化业务流编排方法、系统、电子设备及存储介质。
背景技术
在制造业中系统中,由于制造工艺的多样性与复杂性,在产品研发、制造、销售等生产周期中需要多套应用系统支撑,如企业资源计划系统ERP(Enterprise ResourcePlanning)、制造执行系统MES(Manufacturing Execution System)、仓库管理系统WMS(Warehouse Management System)、客户关系管理系统CRM(Customer RelationshipManagement)、企业大脑平台等,各个信息系统之间往往需要协同工作才能完成某一种业务。
各个业务系统之间主要通过两种方式来完成系统之间的业务协同。
1)如果对方系统含有相关API(Application Programming Interface,应用程序接口),则是采用调用API接口的方式来协同。
2)如果对方是遗留系统,不能提供API接口,则需要连接对方的数据库,执行含有增、删、改、查等SQL(Structured Query Language,结构化查询语言)数据库语句的操作来完成业务协同。
现有技术中系统之间的业务协同,主要有以下问题:
1)采用编程来协同,不能适应业务或接口的变化,不能快速的响应新的需求。
制造业系统中常有一个业务系统通过API或者数据库方式连接了其他多个业务系统。以销售出库为例:ERP生成销售订单并确认、CRM根据销售订单进行出货安排、MES中进行出库确认、ERP根据出库的结果生成销售交货单与销售出库登记表,目前这些系统间的协同可能都是采用API来完成整个业务流中的所有动作。此时这些动作采用编程完成,通过程序员通过编写代码实现,当系统业务或者接口发生变化的时候,又需要重新修改代码、编译、发布、运行,费时费力。
随着数字化改革,业务场景耦合度越来越高,而且绝大部分业务场景复杂多变,可能在前一步的优化之后,在后面又不断出现新的需求出现。依靠各个业务系统程序员编程的方式,难以满足现有对有业务的快速响应,也影响了业务的正常运转,严重地阻碍了业务的快速集成。
2)现有数据编排平台DOP(Data Orchestration Platform),过多关注业务流引擎功能,不能满足业务数据一致性和复杂业务的需求。
现有的很多数据编排平台DOP,过多关注业务流引擎功能,能够完成相对简单的业务协同。但是工业生产是复杂多变的,对应的业务也是多方系统协同,现有的编排平台并不能满足协同过程中各业务系统数据的一致性操作、业务流的原子性操作,即当在业务流引擎中的某一个节点的业务执行出现失败,则需要将之前的节点业务操作进行回滚,从而来保证所有业务系统中各数据之间的一致性。
制造业系统中不仅仅要考虑业务流中单个执行节点的原子性,还需要考虑整个业务流的原子性、各系统数据的一致性,即整个业务流要么全部成功,数据生效,要么全部失败,数据回退至执行前的状态,不允许业务流中同时含有成功的节点和失败节点的情况。
另外,由于工艺和流程的复杂性,往往单纯的节点界面拖拽生成代码操作,并不能满足复杂的业务处理,这也限制了编排平台的通用性。
因此,需要一种能够快速响应复杂业务需求的编排方法,并且是能够满足数据一致性要求的方法,用来完成系统之间的业务协同。
发明内容
为克服现有技术上述不足,本发明提出一种针对制造业信息化的基于动态脚本的可视化业务流编排方法,设计具备原子性的业务流来保证整个业务的正确执行和回滚,快速响应业务需求,能够满足数据一致性要求,并且能够通过自定义脚本开发和直接运行脚本的方式来快速满足客户的复杂业务需求。
本发明的第一目的提供一种基于动态脚本的可视化业务流编排方法,包括以下步骤:
1)初始化画布,配置基于有向无环图的业务流及业务流节点信息;
2)将已配置的节点信息转换成节点动态脚本并存储到数据库;
3)在节点配置的动态脚本不满足需求时,对节点的动态脚本再开发,替换之前的脚本;
4)配置业务流的发布接口,用于对外提供服务时被调用;
5)第三方系统调用已发布的业务流接口,业务流引擎根据执行状态控制节点的顺序执行或者逆序执行;
6)执行完最后一个节点,业务流执行结束,进行资源提交、回收操作。
优选的,所述初始化画布,配置基于有向无环图的业务流及业务流节点信息,包括以下步骤:
1)在采用浏览器/服务器架构的可视化界面上初始化画布,初始化全局变量,创建业务流动态脚本全局文件;
2)在画布上配置基于有向无环图的业务流,确定各节点的上下游关系;
3)配置业务流节点信息。
优选的,所述在节点配置的动态脚本不满足需求时,对节点的动态脚本再开发,替换之前的脚本,包括以下步骤:
1)从数据库中读取节点的脚本信息;
2)将读取过来的脚本信息显示到采用集成开发环境的客户端;
3)对脚本进行在线编辑和修改;
4)对脚本进行在线测试,后端代码的运行结果实时地显示在客户端;
5)对自定义开发完成的脚本进行保存,覆盖由节点信息转换成的动态代码。
优选的,所述第三方系统调用已发布的业务流接口,业务流引擎根据执行状态控制节点的顺序执行或者逆序执行,包括以下步骤:
1)接收第三方系统提交的请求,找到开始节点,触发脚本;
2)业务流引擎寻找下一个执行节点并解析;
3)动态脚本的正常执行;
4)获取动态脚本的执行结果,写入全局变量执行状态中;
5)当节点执行成功时,对下一个节点,重复执行2)- 4)步骤,直到执行到最后一个节点;当有节点执行失败时,进入逆向补偿操作6)步骤;
6)当业务流中有节点执行失败时,对已执行节点进行逆向补偿的操作。
优选的,所述当业务流中有节点执行失败时,对已执行节点进行逆向补偿的操作,包括以下步骤:
1)节点执行异常,设置业务流脚本文件的执行状态为异常补偿状态;
2)利用业务流引擎获取执行异常节点的上游节点;
3)对获取的上游节点做类型判断,对数据库类型节点执行4)步骤,对API类型节点执行5)步骤;
4)对数据库类型节点进行数据库的事务回滚;
5)对API类型节点进行触发API请求逆向回滚;
6)执行节点脚本的回滚补偿部分;
7)当前执行的节点不是开始节点时,重复执行2)- 6)步骤;
8)当前执行的节点是开始节点时,逆向补偿操作执行完成。
优选的,所述在画布上配置基于有向无环图的业务流,确定各节点的上下游关系,包括以下步骤:
1)建立一个开始节点和一个结束节点,中间处理节点数量不做限制,每个节点自动生成唯一标识ID;
2)节点之间构建基于有向无环图的业务流;
3)将节点之间的有向无环图进行存储,每个节点为一条记录,节点记录中包括下游节点的ID集合,以及上游节点的ID集合。
优选的,所述配置业务流节点信息,包括对API类型的节点配置信息和对数据库类型的节点配置信息;所述对API类型的节点配置信息包括在录入接口类型的时候,需要录入正常调用的API信息和逆向API信息;所述对数据库类型的节点配置信息包括选择数据源,写入需要执行的数据库操作语句。
本发明的第二目的提供一种基于动态脚本的可视化业务流编排系统,包括以下模块:
业务流和节点配置模块,用于初始化画布,配置基于有向无环图的业务流及业务流节点信息;
动态脚本生成模块,用于将已配置的节点信息转换成节点动态脚本并存储到数据库;
动态脚本再开发模块,用于在节点配置的动态脚本不满足需求时,对节点的动态脚本在线开发、测试、保存,替换之前的脚本;
业务流发布模块,用于配置业务流的发布接口,用于对外提供服务时被调用;
业务流执行模块,用于第三方系统调用已发布的业务流接口,业务流引擎根据执行状态控制节点的执行;
资源提交回收模块,用于执行完最后一个节点,业务流执行结束,进行资源提交、回收操作。
优选的,所述业务流和节点配置模块,包括:
初始化子模块,用于在采用浏览器/服务器架构的可视化界面上初始化画布,初始化全局变量,创建业务流动态脚本全局文件;
业务流无环图配置子模块,用于在画布上配置基于有向无环图的业务流,确定各节点的上下游关系;
业务流节点配置子模块,用于配置业务流节点信息。
优选的,所述业务流执行模块,包括:
脚本触发子模块,用于接收第三方系统提交的请求,找到开始节点,触发脚本;
下一节点寻找和解析子模块,用于业务流引擎寻找下一个执行节点并解析;
脚本正常执行子模块,用于动态脚本的正常执行;
脚本执行结果处理子模块,用于获取动态脚本的执行结果,写入全局变量执行状态中;
逆向补偿子模块,用于当业务流中有节点执行失败时,对已执行节点进行逆向补偿的操作。
本发明的第三目的提供一种电子设备,包括:
存储器,用于存储计算机程序;
处理器,用于执行存储器上所存储的程序,实现上述任一项所述的一种基于动态脚本的可视化业务流编排方法的步骤。
本发明的第四目的提供一种计算机可读存储介质,所述计算机可读存储介质内存储有计算机程序,所述计算机程序被处理器执行时实现上述任一项所述的一种基于动态脚本的可视化业务流编排方法的步骤。
本发明的有益技术效果:
1)本发明通过将Java与动态脚本相结合的执行方式,将节点的配置信息转换成动态脚本,开发用户可以利用节点信息自动生成的脚本代码,还可以通过直接修改编排节点代码的方式来满足更复杂的业务逻辑,使业务流具备很强的适应性和可修改性。同时利用节点中的动态代码可直接运行的特性,减少了项目上线过程中编码、测试、编译、打包以及运行的操作,来快速响应业务的变化。
2)本发明不仅对业务流中的单个节点进行原子性操作,还对整个业务流也进行了原子性操作,所有节点都执行成功即业务流执行成功,数据发生变化。若有节点执行失败,则业务流执行失败,然后对已经执行过节点进行回退补偿操作,将变更数据恢复至未执行前的状态,从而保证整个工厂各业务系统数据之间的一致性、准确性。比如,能够解决制造业中某ERP物料数量减少,而MES系统中在使用该物料生产过程中执行失败,导致物料并没有使用但是物料在ERP系统中的数量已经减少的情况。
3)本发明方法能够将制造企业中新、旧系统根据业务需要快速编排在一起,能够实现各个业务系统的快速打通、联动、业务协调,能够根据企业生产变化的需要进行系统业务调整,快速地响应客户的业务需求。
本发明的一种基于动态脚本的可视化业务流编排方法、系统、电子设备及存储介质,能够快速满足制造企业中业务协同的需要,能够满足业务流中复杂的业务逻辑处理,能保证业务协同过程中的各业务系统中的数据一致性。
附图说明
图1为本发明实施例业务流编排方法步骤流程示意图;
图2为本发明实施例业务流编排方法的业务流节点自定义脚本流程示意图;
图3为本发明实施例业务流编排方法的业务流执行流程示意图;
图4为本发明实施例业务流编排方法的逆向补偿的流程示意图。
具体实施方式
为了进一步理解本发明,下面结合实施例对本发明优选实施方案进行描述,但是应当理解,这些描述只是为进一步说明本发明的特征和优点,而不是对本发明权利要求的限制。
术语解释
动态脚本:采用动态脚本语言编写的脚本,代码不需要像Java那样先编译、打包、部署然后执行,可以使用直接调用模式在运行时加载并编译。因为可以直接运行,使得代码更为灵活。
业务流引擎:用来驱动业务按照设定的流程去流转的软件工具。
节点:对各个业务系统的对接操作,使用API请求或者连接对方数据库执行SQL。
可视化业务流编排:通过业务流引擎按照一定的先后规则去执行固定的节点,从而完成整个业务的协同。
上游节点:当前节点的前置节点,即当前节点之前的节点。
下游节点:当前节点的后置节点。
业务流:也称工作流,由一系列的节点组成,按照一定的顺序和规则执行。
原子性:将操作看作一个整体,要么都成功,要么都失败,不可被中断地执行完毕。
业务流原子性:将当前业务流的所有节点看作一个整体,所有节点都执行成功。如果一个节点执行失败,则业务流失败,那么所有节点都进行回退到之前的状态。
逆向补偿:也称回滚补偿,当节点执行失败,需要将节点之前已经执行过的操作进行回退,也就是补偿操作。
Java端,即后端,Java端是在屏幕上看不到但支撑前端显示的部分。
本发明实施例提供了一种基于动态脚本的可视化业务流编排方法,如图1所示,包括以下步骤:
S1、初始化画布,配置基于有向无环图的业务流及业务流节点信息。
本发明实施例可以通过可视化界面来配置业务流,新建过程中程序会自动为该流程构建业务流执行过程中所需的全局变量以及相关函数脚本,用户需要配置好各个业务流节点之间的连线,即上下游之间的关系。
配置业务流以及节点的过程,具体步骤如下:
S11、在采用浏览器/服务器架构的可视化界面上初始化画布,初始化全局变量,创建业务流动态脚本全局文件。
在可视化界面,初始化画布,通过拖拽的方式来构建业务流,在画布上拖拽相应的节点以及连线,来完成业务流的创建工作。
一般的,可视化界面采用浏览器/服务器(B/S,Broswer/Server)架构,且目前都是采用前后端分离的架构,前端即浏览器端,也称客户端,负责页面渲染、用户操作,后端即服务器端,用于服务、逻辑、数据处理,前端和后端采用基于HTTP协议的Restful风格的接口进行交互。目前,典型的前端开发框架有VUE、React等,都是一套用于构建用户界面的渐进式JavaScript框架,后端采用Spring、Spring Boot、Spring Cloud等框架,是一个开放源代码的J2EE应用程序框架。
本实施例应用程序客户端基于VUE框架的JointJS库,它是一个可视化、交互式的函数库,利用JointJS中的库函数生成画布、图形与连接线。服务端采用Spring Cloud微服务架构,采用Spring Boot 2、Spring Cloud Honxton、Mybatis、Nacos等组件,利用Docker方式统一部署。客户端与服务端通过带有权限标签的HTTP协议接口进行通信,服务端能够根据业务需要动态拓展。
新建画布成功后,创建业务流动态脚本,此脚本是为业务流多并发提供支撑,记录业务流在执行过程中基本属性信息。本发明实施例采用基于Java平台的动态脚本语言Groovy来创建业务流动态脚本。
后端程序根据工作流构建初始化环境参数,创建以下一些全局变量,用来记录业务流各个节点的执行状态。
1)执行状态runStatus:指示当前的状态是正常执行状态还是回滚补偿状态。
2)节点执行结果ResultMap:使用ConcurrentHashMap<Id, Object>类型的哈希表,记录每个节点的执行返回状态,以及每个节点返回数据信息。
3)当前执行的节点列表CurrentNodes:数组类型,用于记录当前的执行节点,初始化默认为空,可能有多个正在执行的脚本。执行时节点被添加到此数组,已执行完毕移除节点。
4)已经执行的节点列表reachedNodes:数组类型,用于记录已经执行的节点。
5)数据库句柄TransactionMap:ConcurrentHashMap<Id, Object>类型,记录节点中的数据库事务,在执行完成之后进行提交或者回滚。
业务流会生成包含以上全局变量的动态脚本,脚本中自动会为这些全局变量生成设置(set)数据和获取(get)数据的方法。设置数据的方法函数是将变量信息写入缓存中,变量在整个工作流运行期间有效,获取数据方法是从缓存中获取。
S12、在画布上配置基于有向无环图的业务流,确定各节点的上下游关系。
在画布上配置基于有向无环图的业务流,具体包括如下步骤:
1)建立一个开始节点和一个结束节点,中间处理节点数量不做限制,每个节点自动生成唯一标识ID。
本实施例的业务流由业务流引擎以及节点组成。节点是整个业务流的具体执行单位,承担着整个流程的业务操作,每个节点含有唯一的标识ID。
业务流引擎与脚本代码在程序上是解耦分开的,两者通过事件机制的方式进行交互。当前节点执行完毕或者异常时,会发布一个完成的事件消息,业务流监听事件消息,当捕捉到事件消息后,根据事件类型判断去寻找上游节点或者下游节点,然后执行节点脚本函数。
每个业务流包含一个开始节点和一个结束节点,中间处理节点的数量不做限制。即开始时只能由一个节点开始执行,以最后一个输出节点作为结束标志。如果是正常执行则最后一个节点是结束标志,如果是异常补偿状态需要逆向执行则开始节点是结束标志。当节点的输入数量大于1时,节点需要等待其所有输入节点都执行完毕,方可开始执行。如果节点的其中一个输入未执行完成时,此节点会一直等待其输入节点输入完成。
2)节点之间构建基于有向无环图的业务流。
整个业务流采用有向无环图(DAG,Directed Acyclic Graph)的思想控制节点的运行,DAG没有任何的环路,无法从一个顶点出发,沿着有向边走一圈回到出发点。因此整个业务流不能出现环路状态,即一个节点不能循环执行两次以上。当出现环路时,程序会被禁止提交。
开始节点没有上游节点,结束节点没有下游节点。除了开始和结束节点外,每个业务流节点都会有一个或多个输入,以及一个或者多个输出。节点间有连接线,连接线是构成DAG有向无环图的重要保障,直接影响着业务的执行逻辑。客户端上利用JointJS库的link函数进行连接线控制,如某节点没有输入或者输出,则此节点无效。
3)将节点之间的有向无环图进行存储,每个节点为一条记录,节点记录中包括下游节点的ID集合,以及上游节点的ID集合。
业务节点之间DAG图是按照一定格式存储在数据库中,每个节点是一条记录,节点记录中包括下游节点的ID集合nextIds,以及上游节点的ID集合previousIds。工作流利用nextIds和previousIds去寻找上游和下游节点。
S13、配置业务流节点信息。
节点是业务流的具体执行部件,节点的执行类型分为两种,一种是采用API调用处理,另一种是采用数据库语句执行处理。API接口用于与提供API接口服务的系统进行协同处理,但是很多老系统或者新业务并没有提供相关API接口,此时只能通过连接系统数据库,在得到用户的允许情况下,直接书写SQL数据库语句对数据库进行增、删、改、查操作,可以支持所有JDBC(Java Database Connectivity,Java数据库连接)的数据库,以及redis、mongodb等数据库。
对于两种节点分别如下配置:
1)节点类型为API类型时,服务端程序通过HTTP协议请求对方业务系统信息,该HTTP接口由对方业务系统提供,按照其配置提供相关参数即可,一般需要配置如下信息:
接口格式:支持GET/POST接口类型请求;
请求Header:HTTP协议中的请求头信息,一般用于设置数据类型以及API鉴权;
请求URL:HTTP的请求的地址,即对方数据库的接口地址;
请求参数:发送请求的时候携带的参数;
超时时间:当请求操作此时间未响应时,表示此次请求失败;
返回标识:用于标识此次API请求是否执行成功,一般不同的业务系统返回成功还是失败的标志并不相同,以用户自定义为主。
需要说明的是,节点类型为API类型时,用户在录入接口类型的时候,需要录入两个API信息:
a)正常调用的API信息,用于用户常规请求操作,即业务流的正常执行操作。
b)逆向API信息,或称作补偿API信息,在下游节点调用失败的时候,是用于对之前执行的操作进行回退处理的API信息。补偿API信息用来保证当有节点执行失败时整个业务流的原子性即所涉及业务系统中的数据的一致性,格式与正常调用的API信息格式相同。
2)节点类型为SQL等数据库类型时,可直接连接数据源,对数据库进行相关操作。选择好数据源之后,写入对应的需要执行的SQL语句即可,程序会记录调用此SQL的事务。节点默认会开启事务操作,节点执行完成之后,并不会马上提交,而是等所有节点都执行完成之后,再执行数据库事务的提交commit操作。当下游有节点执行失败时,对当前操作进行日志回滚即可。
例如,当前节点是ERP系统半成品出库,下一个节点是MES系统成品入库。当整个流程执行完成之后,ERP、MES操作节点的数据库操作才按照顺序会提交事务,此时ERP与MES数据库中的数据才会发生变化。如果ERP出库成功,但是MES入库失败,则ERP刚才执行的事务会自动回滚,即ERP数据不会发生变化,数据将会回归到未出库状态。
需要说明的是,当节点是数据库类型时,数据库采用连接池的方式进行共享,即所有业务流使用公共的数据连接池进行连接,且将数据库连接设置全局变量,以防止当数据流运行过多时,节点运行时造成连接数过多,影响对方系统的稳定性以及响应的及时性。
S2、将已配置的节点信息转换成节点动态脚本并存储到数据库。
程序还会将上一步用户配置的节点信息,如API接口名称、参数、数据库连接自动转换成动态脚本进行存储到数据库中。节点是业务流中的核心部件,为了保证每个节点的独立性以及后期的可维护性、可修改性,节点信息配置完成之后,后端程序会将每个节点信息都转换成节点动态脚本,并以字符串的形式存储在数据库中。节点动态脚本以节点的标识ID来进标识。为了保证节点的数据能够贯穿整个业务流执行期间,将含有该业务流全局变量的脚本文件引入当前脚本。
根据节点配置信息,转换成节点动态脚本,所述节点动态脚本包括执行、回滚、判断和调用函数。具体如下:
1)API执行函数apiExcuteRequest:利用动态脚本中HTTPBuilder函数库,根据节点信息中的URL、请求方式、参数、请求头、超时时间等参数生成HTTP请求函数,请求返回之后根据配置的返回的条件,判断成功还是失败,同时将结果信息写入全局变量节点执行结果ResultMap中。
2)数据库执行函数dbExcuteRequest:动态脚本利用Java getBean方法调用Spring boot中已经定义的数据连接来获取数据源,同时此数据源相关事务也是利用getBean获取Spring boot环境中定义的关于该数据源的事务。除去对数据库的查询之外,对业务的Insert(增加)、Delete(删除)、Update(更新)操作会强制开启事务;当数据库执行失败时,能够自动回滚当前操作。当数据库成功时,此时并不提交事务。操作结果信息同样被写入节点执行结果ResultMap中。
3)API回滚函数apiRollbackRequest:此函数的形式与apiExcuteRequest形式相同,它的作用是当下游有节点执行标记失败时,进行API回滚补偿时使用。
4)数据库回滚函数dbRollbackRequest:此函数的形式与dbExcuteRequest形式相同,它的作用是当下游有节点执行标记失败时,进行数据库回滚补偿时使用。
5)上游节点判断函数previousNodesExecuted:此函数对当前节点的上游节点做判断操作,可能当前节点不止一个上游节点,此函数判断当有上游节点没有执行完毕时,会一直等待直到上游脚本都执行完成。
6)下游节点判断函数nextNodesExcuted:在业务流有节点执行失败,需要逆向补偿时,会对整个业务流进行逆向操作,可能当前节点不止一个下游节点,此函数判断当有下游节点没有执行完成回滚操作时,会一直等待直到下游脚本都回滚完成。
7)调用函数invoke:作为该脚本对外调用的函数,该函数主要根据当前节点类型以及当前业务流的执行状态runStatus来判断调用哪些函数。当执行状态runStatus是正常运行时候,根据节点类型判断来调用apiExcuteRequest,还是dbExecuteRequest函数。当执行状态runStatus是回滚状态时,则是调动apiRollbackRequest或者dbRollbackRequest进行回滚操作。在调用invoke函数之前都会根据不同情况判断上下游节点是否执行完成,业务逻辑处理完毕之后发送消息通知工作流,才可以调度下一个要执行的节点。
节点信息转换成的动态脚本可以直接在JVM直接编译运行。为了在执行的时候不需要再次生成代码,将动态脚本提交存储到数据库,一方面是为了执行效率,另一方面是方便后期特殊情况下,如在脱离配置节点的时候,可直接对存储代码进行完善,当节点信息变动时,动态脚本会自动更新。
S3、在节点配置的动态脚本不满足需求时,对节点的动态脚本再开发,替换之前的脚本。
目前根据节点信息自动生成动态脚本的方式在遇到复杂业务时还具有一些局限性。当遇到复杂业务的时候,配置的节点在生成动态脚本之后,可能脚本功能不满足需求。此时可以直接对节点动态脚本进行开发工作,然后在线运行、测试,保存之后会自动替换之前的脚本信息。直接修改已经生成的动态脚本有时更符合场景的需求,而且对于有能力开发的人员来说,这种方式更为友好和方便,可以利用工作流的调度、驱动能力,在节点调用自定义的脚本去完成整个业务流的正常运行。
如图2所示为本实施例一种为业务流节点自定义脚本的流程示意图,包括如下操作步骤:
S31、从数据库中读取节点的脚本信息。
节点配置的脚本文件都放在数据库中,可以根据业务流信息去获取节点的脚本信息。
S32、将读取过来的脚本信息显示到采用集成开发环境的客户端。
将读取过来的脚本信息显示到客户端,客户端可采用IDE(IntegratedDevelopment Environment,集成开发环境)的方式进行显示,以业务流名称为项目名称,以节点名为对应的动态脚本名称。用户可以点击对应的节点名称显示该节点转换过来的动态脚本。
S33、对脚本进行在线编辑和修改。
对节点转换成的动态脚本是可以进行在线编辑、修改等操作的,用户可以根据自身的能力对转换过来的对应脚本进行更多的逻辑处理。
需要说明的是,对转换脚本的开发不可以修改动态脚本中的函数名称、参数信息以及定义好的相关变量名称。用户可以增加相关函数、相关逻辑对业务进行再次处理。
S34、对脚本进行在线测试,后端代码的运行结果实时地显示在客户端。
可以在线对动态脚本进行测试,测试的方式还是由前端发送脚本的信息、函数名称、参数发送给服务端,交由服务端执行代码。为了能够达到测试数据实时显示到用户端的效果,在用户端和服务端使用网络通信协议WebSocket进行通讯,将后端代码的运行结果实时的显示在用户端,从而达到在线测试的需求。
S35、对自定义开发完成的脚本进行保存,覆盖由节点信息转换成的动态代码。
客户端可以对修改的代码进行保存操作,客户端保存之后会将由节点信息转换成的动态代码进行覆盖操作,同时删除系统中对之前的代码进行解析而生成的缓存信息。
当动态脚本由开发人员自定义编写之后,后续在客户端配置的节点参数信息将会无效,即自定义代码的优先级高于基于配置生成代码的优先级。如需重新生成代码,则需强制删除此节点的自定义代码后方可生成。
S4:配置业务流的发布接口,用于对外提供服务时被调用。
通过S1-S3步骤完成业务流和节点的配置后,填写发布的接口信息,即可完成对整个业务流的发布。第三方使用发布的接口,完成对业务流的调用,实现数据流编排的快速响应。
业务流通过接口发布的形式对外提供服务调用,接口发布模块使用Spring boot框架中RequestMappingInfo函数动态注册接口,可以快速地对业务流进行上线、下线操作。业务流提供标准的Restful格式的API接口,采用HTTP协议对外提供服务。配置发布接口需要提供如下信息:
接口格式:POST或GET;
接口名称:此接口的名称;
接口的路由:第三方调用的时候按照此路由调用;
请求header:配置的鉴权信息;
请求参数:参数名称、参数格式,参数一般使用第一个节点的参数;
接口描述:描述次流程完成的任务。
接口发布之后,服务即可上线使用。第三方系统按照配置的接口进行调用已配置的业务流。
通过以上S1-S4步骤,就完成了业务流的创建和发布,当第三方系统调用已发布的业务流时,就开始了业务流的执行过程。
S5、第三方系统调用已发布的业务流接口,业务流引擎根据执行状态控制节点的执行。
业务流提供的标准的Restful格式的API接口,第三方系统按照API接口的定义传递必要的参数进行调用。业务流在收到用户提交的参数并验证通过之后,业务流引擎触发需要执行的节点,从数据库中查询该节点的脚本信息,通过动态脚本命令去直接执行该脚本文件。执行成功之后将保存执行的结果,并将执行结果信息传递到下游节点。如果所有节点都执行完成,即程序执行完成,退出执行,返回用户执行结果信息。
如图3所示,为业务流在请求之后执行的流程图,包括如下操作步骤:
S51、接收第三方系统提交的请求,找到开始节点,触发脚本。
特定的业务流一般只能在固定的业务系统才可以调用。服务端提供的标准的Restful格式的API接口,当服务端接收到第三方系统提交的HTTP请求,需要进行鉴权以及参数校验,当业务流未授权时或者参数检验失败时,拒绝该请求。
服务端程序在接收到请求并校验通过之后,封装好对应的参数之后,显式的调用动态脚本信息。程序的执行入口是由微服务程序(即Java端)发起,具体节点的运行则由动态脚本执行。
依靠工作流找到初始需要执行节点信息,采用如下的步骤来触发脚本:
1)解析脚本:将数据库存储的动态脚本文件进行解析,并返回一个脚本文件。在程序运行过程中,此类操作常常会消耗很多的时间。当第一次解析之后可对生成的脚本文件进行缓存,当节点信息有更新时则缓存失效。
2)调用脚本:调用核心脚本文件中的方法名称,所有动态脚本中入口函数都是invoke函数,业务逻辑也都在invoke函数执行。
S52、业务流引擎寻找下一个执行节点并解析。
节点的执行顺序是由业务流的业务流引擎控制,由业务流引擎保证每个节点的正确调度和执行。当前节点脚本执行完毕或者当前业务流执行失败的情况下,当前节点通过发布事件消息的方式通知业务流引擎,业务流引擎根据当前业务流状态来调度上游或者下游节点信息。
需要说明的是,当获取下游节点具体信息之后,在CurrentNodes变量中移除已经执行完毕的节点信息后,需要判断下游节点的previousIds含有节点的数量,即判断下游节点具有几个入度,也就是具有几个上游节点。具有一个上游节点与大于一个上游节点的情况下,处理是不相同的,分别处理如下:
1)当下一个执行节点只有一个上游节点时,可直接调用下游节点脚本信息。对全局脚本中CurrentNodes添加下一个要执行的节点信息。
2)当下一个执行节点具有多于一个上游节点,为防止对下游节点的重复调用,需提前判断CurrentNodes是否已经含有下一个执行的节点。如果已经含有,则不加入,当前脚本不触发下一个节点。如果CurrentNodes未包含下一个执行的节点,则CurrentNodes添加下一个节点信息。
节点脚本信息存储在数据库中,以字符串形式存储,需要进行parse解析操作,即将字符串解析可执行的代码模块,然后用invoke调用约定的方法名称即可。
需要说明的是,动态脚本的读取、装载、调用函数都在Java端进行处理。由于parse解析比较耗时,调用脚本过程中,首先会判断此节点脚本的缓存是否存在,如果存在则直接使用,不存在缓存时,则使用parse函数解析存储的字符串并存储到缓存。
在调用脚本过程中,需要调用相关参数,有两种参数,一是业务系统HTTP请求业务流所有携带的参数,二是已经执行节点的返回信息。此两种参数信息都保存业务流脚本的全局变量中。
S53、动态脚本的正常执行。
当工作流触发动态脚本执行,即执行脚本中的业务函数时,按照以下方式进行运行:
1)判断当前节点的上游节点是否执行完毕,当所有上游节点都执行完毕后,再开始进行当前节点的业务处理。
当调用当前执行方法时,并不会马上进行本节点的业务处理。首先获取当前节点的上游节点信息,可能上游节点的数量不止一个。所有上游节点都只能完毕之后,才可以进行本节点的业务处理。如果有上游节点未处理完毕,则当前节点处于循环等待状态。等待时间当超过预定值时,则对业务流进行失败处理。
2)如需调用上游节点返回的数据作为参数,或者业务系统请求所带的参数,则通过全局变量中获取。
3)根据节点类型分别执行节点脚本。
判断当前节点的类型是API类型或者是数据库类型,根据不同节点类型在主函数中调用不同的子函数,完成对业务的处理。
a)API类型节点的执行。
节点API类型时执行HTTP请求方法,接收方接收并返回信息后表示执行完成。请求的相关信息已经由用户在节点中配置完成,在代码中已经生成含有相关函数名称、参数信息以及返回信息;返回信息中记录有API请求返回成功或者失败的标志。
b)数据库类型节点的执行。
节点是数据库类型时,执行时即连接数据库执行相关数据库的过程,有返回则执行成功,没有则执行失败。
S54、获取动态脚本的执行结果,写入全局变量执行状态中。
节点执行结果对业务流全局有着至关重要的影响,上游节点的执行结果作为下游节点运行参数。当某个节点执行失败则整个业务流执行失败。
节点执行成功时,将节点的执行结果信息写入全局变量执行状态ResultMap中。节点类型为API类型时,则写入HTTP返回的结果内容。节点类型为数据库类型时,则需要根据情况对返回结果按如下步骤进行分装:
1)当进行search检索时直接采用检索结果作为返回信息。
2)当进行update、Insert、Delete操作时,将传递的字段以及值组成一串JSON类型数组,并添加数据库语句操作类型字段属性封装到返回信息中。
需要说明的是,当节点类型为数据库类型时,且以update、Insert、Delete等对数据库操作时,操作成功后当前事务并未提交,需将当前事务的句柄保存全局变量中,等整个业务流执行完毕方可提交。另外,对于数据库查询操作时,为了防止内存占用过多,对于查询数据库的结果数量一般限制在2000条以内。
S55、当节点执行成功时,对下一个节点,重复执行S52-S54步骤,直到执行到最后一个节点;当有节点执行失败时,进入逆向补偿操作步骤。
当节点的执行状态ResultMap是成功时,系统按照业务流引擎中下一个节点信息nextIds顺序执行,对每一个节点执行S52-S54步骤。业务流最终只能输出一个节点即结束节点,此节点的nextIds为空。
S56、对已执行节点进行逆向补偿的操作。
业务流涉及到多个系统,保障数据的一致性问题是工业信息化中首先需要保障的问题。如ERP半成品出库,则相应库存减少,MES中加工成品入库,成品数量增加。当ERP与MES通过业务流编排时,业务流控制ERP出库操作,下游执行MES入库操作,如MES入库失败,ERP已经出库成功,库存已经减少,但是MES中库存并没有增加,则需要对ERP出库操作进行回滚操作,否则就会出现库存数量不一致的情况。
业务流在运行过程中,节点有运行失败的可能。将整个业务流封装成一个原子操作,执行成功,业务系统数据发生变化,如果执行失败,业务系统数据必须回归执行前的状态。当业务流某个节点执行失败时候,即需要对之前执行的所有节点进行逆向回滚操作,保持数据的一致性。数据回滚时需要判断节点类型,如果是API类型,则需要使用配置的逆向API信息。如果是数据库类型,则只需要依靠数据库本身的功能,进行数据库事物回滚操作即可。依次遍历失败节点上游节点进行回滚操作,直到开始节点,从而完成所有节点的补偿操作。
如图4所示为业务流某个节点执行失败时数据逆向补偿的流程图,包括如下操作步骤:
S561、节点执行异常,设置业务流脚本文件的执行状态为异常补偿状态。
节点在执行过程中遇到错误或者API、数据库执行返回错误时,都表示当前节点执行失败。对于当前节点无论是API或者数据库执行都无需进行补偿,因为已经执行失败,对于当前的需要完成的业务并未修改。但对于整个业务流需要进行补偿,执行如下操作:
当节点首次抛出异常时,需要对整个业务执行状态进行调整,即将业务流的执行状态从执行状态变换成异常补偿状态,即设置业务流脚本文件的变量信息执行状态runStatus为异常补偿状态。
需要说明的是,整个业务流依靠全局执行状态判断是否进行业务回滚,即每个节点脚本在执行期间都会根据执行状态去判断是正常执行还是做补偿操作。
另外,多节点并发执行过程中,某一个节点由于执行失败,业务流的执行状态从正常状态变成了异常补偿状态,则其他并行节点继续完成执行,执行完毕之后发送执行完成消息给业务流引擎,再由业务流引擎进行控制异常补偿的节点操作。
S562、利用业务流引擎获取执行异常节点的上游节点。
利用业务流引擎找出上游节点,上游节点的调度由业务流引擎进行调度执行。需要注意的是当前节点可能有多个上游节点,而上游节点可能有多个下游节点。
当获取上游节点,即需要执行的节点后,将上游节点加入正在执行的CurrentNodes中,表示该节点正在执行中。若CurrentNodes已经含有该节点,则表示该节点已经在执行中,节点只能进行一次补偿操作。
当需要执行补偿操作的节点含有多个下游节点的时候,它的下游节点对它的触发时间是不同的,而且只能触发一次。所以当节点在异常补偿操作时,需要判断它的所有下游节点是否都已经进行了补偿操作。若它的下游节点中含有节点未执行异常补偿操作,则需要等待其补偿操作之后方可进行。
S563、对获取的上游节点做类型判断,对数据库类型节点执行S564步骤,对API类型节点执行S565步骤。
节点类型不同,他们对业务处理方式是不同的。节点类型是API操作时,则它对方业务的修改变化是已经生效的,所以补偿的方式也不相同。例如,正常执行时是出库成功,补偿的时候需要变化成出库失败,或者删除出库单,具体根据业务进行不同处理。当节点类型是SQL等数据库类型时,它对数据库修改是并未马上提交的,只需要将其回滚即可。
下述S564步骤执行数据库类型的节点回滚,S565步骤执行API类型的节点回滚。
S564、对数据库类型节点进行数据库的事务回滚。
当节点使用数据库类型操作时,如果当前操作未涉及到对数据库的增、删、改等操作,则无需进行回滚。当涉及到数据库变化操作时,由于节点正常执行的时候,执行成功后,它的事务操作句柄已经放入全局变量中,利用数据库本身的机制,对节点的操作事物进行回滚即可。
S565、对API类型节点进行逆向回滚。
当节点使用API类型操作时,使用逆向API信息,逆向调用方式与正常调用方式相同。
S566、执行节点脚本的回滚补偿部分。
该节点脚本已经由业务流引擎进行调用,程序会更新当前的异常补偿状态,以及节点的操作类型,由invoke函数去调用不同的脚本执行。执行脚本时,会传递两个参数,一个是原始正向传递的参数,一个是前节点执行成功之后的返回值。
S567、当前执行的节点不是开始节点时,重复执行S562-S566步骤。
判断当前执行的节点是否是开始节点,如果是开始节点,则表示补偿操作已经执行完成。否则继续执行,执行完成发送消息事件,告知业务流引擎当前节点已经执行完毕,可继续执行其上游节点。
S568、当前执行的节点是开始节点时,逆向补偿操作执行完成。
逆向补偿操作的结束节点是开始节点,即业务流第一个执行的节点,当开始节点执行逆向补偿过后,所有已执行节点完成补偿操作,整个业务流设计到的业务系统数据恢复到之前未执行的状态,整个业务流的原子性已经得到体现。
S6、业务流执行结束,进行资源提交、回收操作。
正常执行状态时,最后一个节点就是结束节点,此时按照业务流变量中保存的数据库事务句柄顺序提交(commit)数据库事物。回滚补偿状态时时,逆序回滚各节点的数据库事务。
正常情况下最后一个节点执行结束或者补偿情况下开始节点执行完成之后,此时业务流已经结束需要进行一系列资源提交、回收操作。具体如下:
1)回收相关资源,删除业务流中缓存中的全局变量信息。
2)返回业务请求信息。当业务流执行成功时,返回调用者成功状态、各节点执行状态、各节点执行结果返回信息;当业务流执行失败时,返回调用者失败状态、失败节点错误信息以及正常执行节点信息。
本发明的实施例还提供了一种基于动态脚本的可视化业务流编排系统,包括如下模块:
业务流和节点配置模块,用于初始化画布,配置基于有向无环图的业务流及业务流节点信息;
动态脚本生成模块,用于将已配置的节点信息转换成节点动态脚本并存储到数据库;
动态脚本再开发模块,用于在节点配置的动态脚本不满足需求时,对节点的动态脚本在线开发、测试、保存,替换之前的脚本;
业务流发布模块,用于配置业务流的发布接口,用于对外提供服务时被调用;
业务流执行模块,用于第三方系统调用已发布的业务流接口,业务流引擎根据执行状态控制节点的执行;
资源提交回收模块,用于执行完最后一个节点,业务流执行结束,进行资源提交、回收操作。
优选的,所述业务流和节点配置模块,包括:
初始化子模块,用于在采用浏览器/服务器架构的可视化界面上初始化画布,初始化全局变量,创建业务流动态脚本全局文件;
业务流无环图配置子模块,用于在画布上配置基于有向无环图的业务流,确定各节点的上下游关系;
业务流节点配置子模块,用于配置业务流节点信息。
优选的,所述业务流执行模块,包括:
脚本触发子模块,用于接收第三方系统提交的请求,找到开始节点,触发脚本;
下一节点寻找和解析子模块,用于业务流引擎寻找下一个执行节点并解析;
脚本正常执行子模块,用于动态脚本的正常执行;
脚本执行结果处理子模块,用于获取动态脚本的执行结果,写入全局变量执行状态中;
逆向补偿子模块,用于当业务流中有节点执行失败时,对已执行节点进行逆向补偿的操作。
各模块的具体实现方式与前述可视化业务流编排方法各步骤相同,在此不予赘述。
本发明的实施例还提供了一种电子设备,包括:
存储器,用于存储计算机程序;
处理器,用于执行存储器上所存储的程序,实现前述一种基于动态脚本的可视化业务流编排方法实施例的各步骤。
关于该方法各个步骤的具体实现以及相关解释内容可以参见该方法的实施例,在此不做赘述。
本实施例提到的电子设备的存储器可以包括随机存取存储器(Random AccessMemory,RAM),也可以包括非易失性存储器(Non-Volatile Memory,NVM),例如至少一个磁盘存储器。
上述的处理器可以是通用处理器,包括中央处理器(Central Processing Unit,CPU)、网络处理器(Network Processor,NP)等;还可以是数字信号处理器(Digital SignalProcessing,DSP)、专用集成电路(Application Specific Integrated Circuit,ASIC)、现场可编程门阵列(Field-Programmable Gate Array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。
本发明的实施例还提供了一种计算机可读存储介质,该计算机可读存储介质内存储有计算机程序,该计算机程序被处理器执行时实现前述一种基于动态脚本的可视化业务流编排方法实施例的各步骤。关于该方法各个步骤的具体实现以及相关解释内容可以参见该方法的实施例,在此不做赘述。
需要说明的是,本说明书中的各个实施例均采用相关的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。
尤其,对于装置、电子设备、计算机可读存储介质实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
以上实施例的说明只是用于帮助理解本发明的方法及其核心思想。应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以对本发明进行若干改进和修饰,这些改进和修饰也落入本发明权利要求的保护范围内。
Claims (12)
1.一种基于动态脚本的可视化业务流编排方法,其特征在于,包括以下步骤:
1)初始化画布,配置基于有向无环图的业务流及业务流节点信息,并初始化全局变量;所述节点信息包括API节点信息,所述API节点信息包括正常调用的API信息和逆向API信息;
2)将已配置的节点信息转换成节点动态脚本并存储到数据库;
3)在节点配置的动态脚本不满足需求时,对节点的动态脚本进行在线开发,更新之前的脚本;
4)配置业务流的发布接口,用于对外提供服务时被调用;
5)第三方系统调用已发布的业务流接口,业务流引擎根据执行状态控制节点的执行,当业务流中有节点执行失败时,对已执行节点进行逆向补偿的操作;
6)执行完最后一个节点,业务流执行结束,进行资源提交、回收操作。
2.根据权利要求1所述的一种基于动态脚本的可视化业务流编排方法,其特征在于,所述配置基于有向无环图的业务流及业务流节点信息包括以下步骤:
1)在画布上配置基于有向无环图的业务流,确定各节点的上下游关系;
2)配置业务流节点信息。
3.根据权利要求1所述的一种基于动态脚本的可视化业务流编排方法,其特征在于,所述在节点配置的动态脚本不满足需求时,对节点的动态脚本进行在线开发,更新之前的脚本,包括以下步骤:
1)从数据库中读取节点的脚本信息;
2)将读取过来的脚本信息显示到采用集成开发环境的客户端;
3)对脚本进行在线编辑和修改;
4)对脚本进行在线测试,后端代码的运行结果实时地显示在客户端;
5)对自定义开发完成的脚本进行保存,覆盖由节点信息转换成的动态代码。
4.根据权利要求1所述的一种基于动态脚本的可视化业务流编排方法,其特征在于,所述第三方系统调用已发布的业务流接口,业务流引擎根据执行状态控制节点的执行,当业务流中有节点执行失败时,对已执行节点进行逆向补偿的操作,包括以下步骤:
1)接收第三方系统提交的请求,找到开始节点,触发脚本;
2)业务流引擎寻找下一个执行节点并解析;
3)动态脚本的正常执行;
4)获取动态脚本的执行结果,写入全局变量执行状态中;
5)当节点执行成功时,对下一个节点,重复执行2)- 4)步骤,直到执行到最后一个节点;当有节点执行失败时,进入逆向补偿操作6)步骤;
6)当业务流中有节点执行失败时,对已执行节点进行逆向补偿的操作。
5.根据权利要求4所述的一种基于动态脚本的可视化业务流编排方法,其特征在于,所述当业务流中有节点执行失败时,对已执行节点进行逆向补偿的操作,包括以下步骤:
1)节点执行异常,设置业务流脚本文件的执行状态为异常补偿状态;
2)利用业务流引擎获取执行异常节点的上游节点;
3)对获取的上游节点做类型判断,对数据库类型节点执行4)步骤,对API类型节点执行5)步骤;
4)对数据库类型节点进行数据库的事务回滚;
5)对API类型节点进行触发API请求逆向回滚;
6)执行节点脚本的回滚补偿部分;
7)当前执行的节点不是开始节点时,重复执行2)- 6)步骤;
8)当前执行的节点是开始节点时,逆向补偿操作执行完成。
6.根据权利要求2所述的一种基于动态脚本的可视化业务流编排方法,其特征在于,所述在画布上配置基于有向无环图的业务流,确定各节点的上下游关系,包括以下步骤:
1)建立一个开始节点和一个结束节点,中间处理节点数量不做限制,每个节点自动生成唯一标识ID;
2)节点之间构建基于有向无环图的业务流;
3)将节点之间的有向无环图进行存储,每个节点为一条记录,节点记录中包括下游节点的ID集合,以及上游节点的ID集合。
7.根据权利要求2所述的一种基于动态脚本的可视化业务流编排方法,其特征在于,所述配置业务流节点信息,包括对API类型的节点配置信息和对数据库类型的节点配置信息;所述对API类型的节点配置信息包括在录入接口类型的时候,需要录入正常调用的API信息和逆向API信息;所述对数据库类型的节点配置信息包括选择数据源,写入需要执行的数据库操作语句。
8.一种基于动态脚本的可视化业务流编排系统,其特征在于,包括以下模块:
业务流和节点配置模块,用于初始化画布,配置基于有向无环图的业务流及业务流节点信息,并初始化全局变量;所述节点信息包括API节点信息,所述API节点信息包括正常调用的API信息和逆向API信息;
动态脚本生成模块,用于将已配置的节点信息转换成节点动态脚本并存储到数据库;
动态脚本再开发模块,用于在节点配置的动态脚本不满足需求时,对节点的动态脚本在线开发、测试、保存,更新之前的脚本;
业务流发布模块,用于配置业务流的发布接口,用于对外提供服务时被调用;
业务流执行模块,用于第三方系统调用已发布的业务流接口,业务流引擎根据执行状态控制节点的执行,当业务流中有节点执行失败时,对已执行节点进行逆向补偿的操作;
资源提交回收模块,用于执行完最后一个节点,业务流执行结束,进行资源提交、回收操作。
9.根据权利要求8所述的一种基于动态脚本的可视化业务流编排系统,其特征在于,所述业务流和节点配置模块,包括:
业务流无环图配置子模块,用于在画布上配置基于有向无环图的业务流,确定各节点的上下游关系;
业务流节点配置子模块,用于配置业务流节点信息。
10.根据权利要求8所述的一种基于动态脚本的可视化业务流编排系统,其特征在于,所述业务流执行模块,包括:
脚本触发子模块,用于接收第三方系统提交的请求,找到开始节点,触发脚本;
下一节点寻找和解析子模块,用于业务流引擎寻找下一个执行节点并解析;
脚本正常执行子模块,用于动态脚本的正常执行;
脚本执行结果处理子模块,用于获取动态脚本的执行结果,写入全局变量执行状态中;
逆向补偿子模块,用于当业务流中有节点执行失败时,对已执行节点进行逆向补偿的操作。
11.一种电子设备,包括:
存储器,用于存储计算机程序;
处理器,用于执行存储器上所存储的程序,实现权利要求1-7任一项所述的一种基于动态脚本的可视化业务流编排方法步骤。
12.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质内存储有计算机程序,所述计算机程序被处理器执行时实现权利要求1-7任一项所述的一种基于动态脚本的可视化业务流编排方法步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311829263.9A CN117474312B (zh) | 2023-12-28 | 2023-12-28 | 可视化业务流编排方法、系统、电子设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311829263.9A CN117474312B (zh) | 2023-12-28 | 2023-12-28 | 可视化业务流编排方法、系统、电子设备及存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN117474312A CN117474312A (zh) | 2024-01-30 |
CN117474312B true CN117474312B (zh) | 2024-04-05 |
Family
ID=89638313
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202311829263.9A Active CN117474312B (zh) | 2023-12-28 | 2023-12-28 | 可视化业务流编排方法、系统、电子设备及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN117474312B (zh) |
Citations (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101819529A (zh) * | 2010-02-24 | 2010-09-01 | 上海引跑信息科技有限公司 | 用于实现工作流任务界面可视化开发的系统和方法 |
CN104239052A (zh) * | 2014-09-12 | 2014-12-24 | 浙江宇视科技有限公司 | 业务流生成方法及装置 |
CN107450919A (zh) * | 2017-07-25 | 2017-12-08 | 上海壹账通金融科技有限公司 | 业务流程管理方法、设备及计算机可读存储介质 |
CN109508298A (zh) * | 2018-12-25 | 2019-03-22 | 网易(杭州)网络有限公司 | 图形化的脚本测试方法及系统 |
CN109976745A (zh) * | 2017-12-27 | 2019-07-05 | 航天信息股份有限公司 | 一种业务流处理方法及装置 |
CN113672674A (zh) * | 2021-07-15 | 2021-11-19 | 浙江大华技术股份有限公司 | 一种自动编排业务流的方法、电子装置和存储介质 |
WO2022134424A1 (zh) * | 2020-12-24 | 2022-06-30 | 平安普惠企业管理有限公司 | 业务流处理方法、装置、计算机设备及存储介质 |
CN114880013A (zh) * | 2022-05-19 | 2022-08-09 | 中国银行股份有限公司 | 一种业务流程的配置信息的处理方法及装置 |
CN115292010A (zh) * | 2022-09-28 | 2022-11-04 | 中邮消费金融有限公司 | 一种流程配置化自动生成业务的方法及系统 |
CN115408399A (zh) * | 2022-09-15 | 2022-11-29 | 平安消费金融有限公司 | 基于sql脚本的血缘关系分析方法、装置、设备及存储介质 |
CN115701591A (zh) * | 2021-08-02 | 2023-02-10 | 腾讯科技(深圳)有限公司 | 业务流程测试方法、装置、介质及电子设备 |
CN115826920A (zh) * | 2022-09-22 | 2023-03-21 | 上海哔哩哔哩科技有限公司 | 业务流程的处理方法、装置、存储介质及系统 |
CN116719622A (zh) * | 2023-06-07 | 2023-09-08 | 中国联合网络通信集团有限公司 | 业务流程的编排方法及业务流程编排系统 |
CN117056116A (zh) * | 2023-10-11 | 2023-11-14 | 荣耀终端有限公司 | 一种流程管理方法和电子设备 |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9063753B2 (en) * | 2010-06-22 | 2015-06-23 | Sap Se | Scripting framework for business objects |
CN103593236B (zh) * | 2013-11-14 | 2017-02-22 | 华为技术有限公司 | 一种业务流程调度的计算机设备、方法和装置 |
-
2023
- 2023-12-28 CN CN202311829263.9A patent/CN117474312B/zh active Active
Patent Citations (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101819529A (zh) * | 2010-02-24 | 2010-09-01 | 上海引跑信息科技有限公司 | 用于实现工作流任务界面可视化开发的系统和方法 |
CN104239052A (zh) * | 2014-09-12 | 2014-12-24 | 浙江宇视科技有限公司 | 业务流生成方法及装置 |
CN107450919A (zh) * | 2017-07-25 | 2017-12-08 | 上海壹账通金融科技有限公司 | 业务流程管理方法、设备及计算机可读存储介质 |
CN109976745A (zh) * | 2017-12-27 | 2019-07-05 | 航天信息股份有限公司 | 一种业务流处理方法及装置 |
CN109508298A (zh) * | 2018-12-25 | 2019-03-22 | 网易(杭州)网络有限公司 | 图形化的脚本测试方法及系统 |
WO2022134424A1 (zh) * | 2020-12-24 | 2022-06-30 | 平安普惠企业管理有限公司 | 业务流处理方法、装置、计算机设备及存储介质 |
CN113672674A (zh) * | 2021-07-15 | 2021-11-19 | 浙江大华技术股份有限公司 | 一种自动编排业务流的方法、电子装置和存储介质 |
CN115701591A (zh) * | 2021-08-02 | 2023-02-10 | 腾讯科技(深圳)有限公司 | 业务流程测试方法、装置、介质及电子设备 |
CN114880013A (zh) * | 2022-05-19 | 2022-08-09 | 中国银行股份有限公司 | 一种业务流程的配置信息的处理方法及装置 |
CN115408399A (zh) * | 2022-09-15 | 2022-11-29 | 平安消费金融有限公司 | 基于sql脚本的血缘关系分析方法、装置、设备及存储介质 |
CN115826920A (zh) * | 2022-09-22 | 2023-03-21 | 上海哔哩哔哩科技有限公司 | 业务流程的处理方法、装置、存储介质及系统 |
CN115292010A (zh) * | 2022-09-28 | 2022-11-04 | 中邮消费金融有限公司 | 一种流程配置化自动生成业务的方法及系统 |
CN116719622A (zh) * | 2023-06-07 | 2023-09-08 | 中国联合网络通信集团有限公司 | 业务流程的编排方法及业务流程编排系统 |
CN117056116A (zh) * | 2023-10-11 | 2023-11-14 | 荣耀终端有限公司 | 一种流程管理方法和电子设备 |
Non-Patent Citations (3)
Title |
---|
"ERP中动态可重构业务流系统的设计与实现";郑小建等;《广西师范大学学报(自然科学版)》;20071215;第25卷(第04期);第196-199页 * |
"云化与业务流技术支撑的新一代超级计算应用平台";康波等;《计算机工程与科学》;20221031;第42卷(第10期);第1852-1858页 * |
Michael Armbrust 等."Structured Streaming: A Declarative API for Real-Time Applications in Apache Spark".《SIGMOD'18: PROCEEDINGS OF THE 2018 INTERNATIONAL CONFERENCE ON MANAGEMENT OF DATA》.2018,第601-613页. * |
Also Published As
Publication number | Publication date |
---|---|
CN117474312A (zh) | 2024-01-30 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US7900216B2 (en) | Creating a modified service request and processing the results of its execution | |
US7912895B2 (en) | System and method for managing service interactions | |
US7917524B2 (en) | Systems and methods for providing a mockup data generator | |
US8762929B2 (en) | System and method for exclusion of inconsistent objects from lifecycle management processes | |
US7962920B2 (en) | Providing a business logic framework | |
US20150135158A1 (en) | Isolated testing of distributed development projects | |
US7769821B2 (en) | Systems and methods for enhanced meassage support using a generic client proxy | |
US8108834B2 (en) | Defining and executing processes using declarative programming language constructs | |
US8074228B2 (en) | Systems and methods for providing mockup business objects | |
US8156137B2 (en) | Data processing systems and methods | |
US7146544B2 (en) | Method and apparatus for supporting error handling in a web presentation architecture | |
US8838627B2 (en) | Systems and methods for providing template based output management | |
US20080126409A1 (en) | Systems and methods for providing a decoupled simulation for business objects | |
US8924914B2 (en) | Application creation tool toolkit | |
US9052845B2 (en) | Unified interface for meta model checking, modifying, and reporting | |
US20230275999A1 (en) | Unified support framework for a contact center | |
US20180081644A1 (en) | System and method for supporting reactive responses using a dependency injection framework | |
US9063753B2 (en) | Scripting framework for business objects | |
CN111026634A (zh) | 一种接口自动化测试系统、方法、装置及存储介质 | |
CN110516000B (zh) | 一种支持复杂工作流结构的工作流管理系统 | |
US9665416B1 (en) | Asynchronous execution of computer operations | |
CN111124528A (zh) | 页面加载方法、装置、电子设备及计算机可读存储介质 | |
CN117474312B (zh) | 可视化业务流编排方法、系统、电子设备及存储介质 | |
US20160013989A1 (en) | Service discovery and/or effort estimation in networked computing environments | |
CN114371939A (zh) | 任务处理方法、装置、电子设备、存储介质及程序产品 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |