本发明涉及计算机,特别涉及一种服务调用方法、装置、设备及存储介质。
背景技术:
1、随着微服务架构的兴起,加上税务的业务流程较为复杂,如果通过后端硬编码,那么费时又不直观。因此,需要通过图形化的方式,编排各微服务,并根据编排的流程图,动态生成可被业务调用的服务。因此如何把这么复杂的流程图转换成可执行的代码,并基于代码进行服务调用是本领域目前要解决的核心技术问题。
技术实现思路
1、有鉴于此,本发明的目的在于提供一种服务调用方法、装置、设备及存储介质,能够根据流程图动态生成代码,并实现代码动态编译与实时加载,其具体方案如下:
2、第一方面,本申请公开了一种服务调用方法,应用于管理端,包括:
3、基于预先配置的参数信息以及业务流程编排流程图,对所述流程图进行识别,以确定所述流程图的循环结构,将所述循环结构进行消除,获取与所述流程图对应的有向无环图;所述参数信息包括原子服务、自定义代码、自定义函数以及取数口径;
4、识别所述有向无环图的分支结构,将各所述分支结构分别进行整合,以得到整合后结构,基于所述整合后结构以及所述有向无环图确定目标源代码;
5、将所述目标源代码保存至预设的元数据库中,并将已生成所述目标源代码的提示信息发送至消息队列,以便服务端从所述消息队列获取所述提示信息;
6、将服务生成请求发送至所述服务端,以便所述服务端基于所述提示信息以及所述服务生成请求从所述元数据库中获取所述目标源代码,对所述目标源代码进行编译,获取编译后代码,并将所述编译后代码发送至管理端;
7、接收到所述编译后代码后向所述服务端发送更新目标服务的通知信息,以便所述服务端基于所述通知信息以及所述编译后代码对所述目标服务进行加载与调用。
8、可选的,所述对所述流程图进行识别,以确定所述流程图的循环结构,包括:
9、基于tarjan算法对所述流程图进行识别,以确定所述流程图的循环结构。
10、可选的,所述将服务生成请求发送至所述服务端,以便所述服务端基于所述提示信息以及所述服务生成请求从所述元数据库中获取所述目标源代码,包括:
11、将服务生成请求发送至所述服务端,以便所述服务端基于所述提示信息以及所述服务生成请求中包含的源代码标识从所述元数据库中获取所述目标源代码。
12、可选的,所述对所述目标源代码进行编译,获取编译后代码,包括:
13、基于预设的javax.tools包对所述目标源代码进行编译,获取编译后代码。
14、可选的,所述对所述目标源代码进行编译之后,还包括:
15、若所述目标源代码编译未成功,则直接结束当前操作。
16、可选的,所述将所述编译后代码发送至管理端之后,还包括:
17、判断所述目标源代码是否编译成功;
18、若编译成功,则将所述目标源代码编译成功的结果信息以及所述编译后代码保存至所述元数据库;
19、若编译失败,则将所述目标源代码编译失败的结果信息保存至所述元数据库。
20、可选的,所述接收到所述编译后代码后向所述服务端发送更新目标服务的通知信息,以便所述服务端基于所述通知信息以及所述编译后代码对所述目标服务进行加载与调用之后,还包括:
21、通过所述服务端基于所述通知信息以及所述编译后代码更新自身对应的缓存信息,并将所述缓存信息与所述元数据库进行定时同步。
22、第二方面,本申请公开了一种服务调用装置,应用于管理端,包括:
23、流程图编排模块,用于基于预先配置的参数信息以及业务流程编排流程图;所述参数信息包括原子服务、自定义代码、自定义函数以及取数口径;
24、有向无环图获取模块,用于对所述流程图进行识别,以确定所述流程图的循环结构,将所述循环结构进行消除,获取与所述流程图对应的有向无环图;
25、目标源代码确定模块,用于识别所述有向无环图的分支结构,将各所述分支结构分别进行整合,以得到整合后结构,基于所述整合后结构以及所述有向无环图确定目标源代码;
26、提示信息获取模块,用于将所述目标源代码保存至预设的元数据库中,并将已生成所述目标源代码的提示信息发送至消息队列,以便服务端从所述消息队列获取所述提示信息;
27、编译后代码获取模块,用于将服务生成请求发送至所述服务端,以便所述服务端基于所述提示信息以及所述服务生成请求从所述元数据库中获取所述目标源代码,对所述目标源代码进行编译,获取编译后代码,并将所述编译后代码发送至管理端;
28、服务加载与调用模块,用于接收到所述编译后代码后向所述服务端发送更新目标服务的通知信息,以便所述服务端基于所述通知信息以及所述编译后代码对所述目标服务进行加载与调用。
29、第三方面,本申请公开了一种电子设备,包括:
30、存储器,用于保存计算机程序;
31、处理器,用于执行所述计算机程序,以实现前述的服务调用方法的步骤。
32、第四方面,本申请公开了一种计算机可读存储介质,用于存储计算机程序;其中,所述计算机程序被处理器执行时实现前述的服务调用方法的步骤。
33、由上可知,本申请管理端首先基于预先配置的参数信息以及业务流程编排流程图,对所述流程图进行识别,以确定所述流程图的循环结构,将所述循环结构进行消除,获取与所述流程图对应的有向无环图;所述参数信息包括原子服务、自定义代码、自定义函数以及取数口径;之后所述有向无环图的分支结构,将各所述分支结构分别进行整合,以得到整合后结构,基于所述整合后结构以及所述有向无环图确定目标源代码;将所述目标源代码保存至预设的元数据库中,并将已生成所述目标源代码的提示信息发送至消息队列,以便服务端从所述消息队列获取所述提示信息;然后将服务生成请求发送至所述服务端,以便所述服务端基于所述提示信息以及所述服务生成请求从所述元数据库中获取所述目标源代码,对所述目标源代码进行编译,获取编译后代码,并将所述编译后代码发送至管理端;最终接收到所述编译后代码后向所述服务端发送更新目标服务的通知信息,以便所述服务端基于所述通知信息以及所述编译后代码对所述目标服务进行加载与调用。可见,本申请能够通过图形化的方式,编排各微服务,并根据编排的流程图,动态生成可被业务调用的服务,能够更方便简便地实现代码动态编译与实时加载,进而对服务进行调用。
1.一种服务调用方法,其特征在于,应用于管理端,包括:
2.根据权利要求1所述的服务调用方法,其特征在于,所述对所述流程图进行识别,以确定所述流程图的循环结构,包括:
3.根据权利要求1所述的服务调用方法,其特征在于,所述将服务生成请求发送至所述服务端,以便所述服务端基于所述提示信息以及所述服务生成请求从所述元数据库中获取所述目标源代码,包括:
4.根据权利要求1所述的服务调用方法,其特征在于,所述对所述目标源代码进行编译,获取编译后代码,包括:
5.根据权利要求1所述的服务调用方法,其特征在于,所述对所述目标源代码进行编译之后,还包括:
6.根据权利要求1所述的服务调用方法,其特征在于,所述将所述编译后代码发送至管理端之后,还包括:
7.根据权利要求1至6任一项所述的服务调用方法,其特征在于,所述接收到所述编译后代码后向所述服务端发送更新目标服务的通知信息,以便所述服务端基于所述通知信息以及所述编译后代码对所述目标服务进行加载与调用之后,还包括:
8.一种服务调用装置,其特征在于,应用于管理端,包括:
9.一种电子设备,其特征在于,包括:
10.一种计算机可读存储介质,其特征在于,用于存储计算机程序;其中,所述计算机程序被处理器执行时实现如权利要求1至7任一项所述的服务调用方法的步骤。