基于Nashorn的数据高效解析处理方法和装置制造方法及图纸

技术编号:37458334 阅读:8 留言:0更新日期:2023-05-06 09:30
本发明专利技术公开了一种基于Nashorn的数据高效解析处理的方法和装置,属于数据处理领域,包括:获取第一输入,在Activiti引擎中创建一个流程实例;在所述流程实例中创建异步线程,并在所述异步线程中启动Nashorn引擎;在所述Nashorn引擎中创建Nashorn沙箱工厂;获取JS代码,并在所述Nashorn沙箱工厂中处理所述代码数据;输出所述代码数据,返回给Activiti引擎,并通过HttpClient进行通信。本方案能够解决目前数据平台使用Rhino引擎来处理业务数据中运行效率低、速度慢、延时高、灵活性低、扩展性差,无法满足大规模业务数据产生的应用场景等问题。题。题。

【技术实现步骤摘要】
基于Nashorn的数据高效解析处理方法和装置


[0001]本专利技术属于数据处理
,具体涉及一种基于Nashorn的数据高效解析处理方法和装置。

技术介绍

[0002]中国各大区的云电脑用户在进行云电脑的相关附加功能申请、私有云部署需求收集、云电脑产品需求建议等业务申请时,会在翼飞低代码平台产生线上业务数据。而处理业务的工作人员,则需要进入内部工单系统,才能进行功能开通和具体的业务处理。因此,翼飞需要实时、高效地通过接口方式把业务数据发送到工单系统中。
[0003]而常规的数据平台使用Rhino引擎来处理业务数据中的JS代码。如附图1所示,Rhino直接使用Java写的字节码解释器来解释执行JavaScript,达到数据处理的效果。然而,Rhino做的优化不够多,而且JavaScript的语义也远比Java动态。所以在Rhino上运行JavaScript的性能仍然无法跟Java的性能比。总体来说,Rhino存在运行效率低、速度慢、延时高、灵活性低、扩展性差等问题。无法满足大规模业务数据产生的应用场景。

技术实现思路

[0004]本专利技术实施例的目的是提供一种基于Nashorn的数据高效解析处理的方法和装置,能够解决目前数据平台使用Rhino引擎来处理业务数据中运行效率低、速度慢、延时高、灵活性低、扩展性差,无法满足大规模业务数据产生的应用场景等问题。
[0005]为了解决上述技术问题,本专利技术是这样实现的:
[0006]第一方面,本专利技术实施例提供了一种基于Nashorn的数据高效解析处理方法,包括:
[0007]获取第一输入,在Activiti引擎中创建一个流程实例;
[0008]在所述流程实例中创建异步线程,并在所述异步线程中启动Nashorn引擎;
[0009]在所述Nashorn引擎中创建Nashorn沙箱工厂;
[0010]获取JS代码,并在所述Nashorn沙箱工厂中处理所述代码数据;
[0011]输出所述代码数据,返回给Activiti引擎,并通过HttpClient进行通信。
[0012]可选地,所述获取第一输入包括:在云桌面用户进行云电脑附加功能申请的情况下,获取通过翼飞低平台发起的工单数据。
[0013]可选地,所述Nashorn引擎可在Java代码和JavaScript之间进行全双工通信。
[0014]可选地,所述获取JS代码,并在所述Nashorn沙箱工厂中处理所述代码数据,具体包括:
[0015]获取Nashorn沙箱资源;
[0016]通过引擎调用系统和IO操作,获取所述Activiti引擎中的API接口以及所述JS代码;
[0017]将所述JS代码通过编译器转换为Java字节码;
[0018]将所述Java字节码通过JVM加载和执行后输出所述代码数据。
[0019]可选地,所述将所述JS代码通过编译器转换为Java字节码,具体包括:
[0020]使用所述编译器,并调用相关JS库和JS的标准语法;
[0021]将所述JavaScript代码输入到所述编译器中,并编译成所述Java字节码。
[0022]可选地,所述编译成所述Java字节码,具体包括:通过CompilationPhase语句对所述JavaScript代码进行编译,并获得所述Java字节码。
[0023]可选地,所述将所述Java字节码通过JVM加载和执行,具体包括:通过JVM底层invokedynamic命令执行Java字节码。
[0024]可选地,所述输出所述代码数据,返回给Activiti引擎,并通过HttpClient进行通信,具体包括:
[0025]将所述代码数据返回给所述Activiti引擎的主线程并保存;
[0026]通过所述HttpClient进行网络通信请求;
[0027]将所述代码数据通过目标API接口发送至目标系统。
[0028]第二方面,本专利技术实施例提供了一种基于Nashorn的数据高效解析处理装置,包括:
[0029]第一获取单元,用于获取第一输入,在Activiti引擎中创建一个流程实例;
[0030]创建单元,用于在所述流程实例中创建异步线程,并在所述异步线程中启动Nashorn引擎;
[0031]第二获取单元,用于在所述Nashorn引擎中创建Nashorn沙箱工厂;
[0032]第三获取单元,用于获取JS代码,并在所述Nashorn沙箱工厂中处理所述代码数据;
[0033]输出单元,用于输出所述代码数据,返回给Activiti引擎,并通过HttpClient进行通信。
[0034]可选地,所述第一获取单元还用于在云桌面用户进行云电脑附加功能申请的情况下,获取通过翼飞低平台发起的工单数据。
[0035]在本专利技术实施例中,使用Nashorn引擎去替代Rhino,通过引擎调用系统和IO操作,使用相关JS库和JS的标准语法,将JavaScript编译成Java字节码,并交由JVM底层的invokedynamic执行指定的JS代码。从而满足大规模业务数据产生时,数据处理与发送的高效性、实时性、稳定性、准确性要求较高的应用场景。提升数据平台的整体运行速度和扩展性。
附图说明
[0036]图1是本专利技术实施例提供的一种基于Nashorn的数据高效解析处理方法的流程示意图;
[0037]图2是本专利技术实施例提供的一种基于Nashorn的数据高效解析处理装置的结构示意图
[0038]本专利技术目的的实现、功能特点及优点将结合实施例、参照附图做进一步说明。
具体实施方式
[0039]为使本专利技术的目的、技术方案和优点更加清楚,下面将结合本专利技术实施例中的附图,对本专利技术实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本专利技术一部分实施例,而不是全部的实施例。基于本专利技术中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本专利技术保护的范围。
[0040]本专利技术的说明书和权利要求书中的术语“第一”、“第二”等是用于区别类似的对象,而不用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便本专利技术的实施例能够以除了在这里图示或描述的那些以外的顺序实施,且“第一”、“第二”等所区分的对象通常为一类,并不限定对象的个数,例如第一对象可以是一个,也可以是多个。应当理解,在本公开的各种实施例中,各过程的序号的大小并不意味着执行顺序的先后,各过程的执行顺序应以其功能和内在逻辑确定,而不应对本公开实施例的实施过程构成任何限定。
[0041]应当理解,在本公开中,“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种基于Nashorn的数据高效解析处理方法,其特征在于,包括:获取第一输入,在Activiti引擎中创建一个流程实例;在所述流程实例中创建异步线程,并在所述异步线程中启动Nashorn引擎;在所述Nashorn引擎中创建Nashorn沙箱工厂;获取JS代码,并在所述Nashorn沙箱工厂中处理所述代码数据;输出所述代码数据,返回给Activiti引擎,并通过HttpClient进行通信。2.根据权利要求1所述的数据高效解析处理方法,其特征在于,所述获取第一输入包括:在云桌面用户进行云电脑附加功能申请的情况下,获取通过翼飞低平台发起的工单数据。3.根据权利要求2所述的数据高效解析处理方法,其特征在于,所述Nashorn引擎可在Java代码和JavaScript之间进行全双工通信。4.根据权利要求1所述的数据高效解析处理方法,其特征在于,所述获取JS代码,并在所述Nashorn沙箱工厂中处理所述代码数据,具体包括:获取Nashorn沙箱资源;通过引擎调用系统和IO操作,获取所述Activiti引擎中的API接口以及所述JS代码;将所述JS代码通过编译器转换为Java字节码;将所述Java字节码通过JVM加载和执行后输出所述代码数据。5.根据权利要求4所述的数据高效解析处理方法,其特征在于,所述将所述JS代码通过编译器转换为Java字节码,具体包括:使用所述编译器,并调用相关JS库和JS的标准语法;将所述JavaScript代码输入到所述编译器中,并编译成所述Java字节码。6.根据权利要求5所述的数据高...

【专利技术属性】
技术研发人员:魏焯辉
申请(专利权)人:天翼云科技有限公司
类型:发明
国别省市:

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

1