一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

用于标识表达式计算路径的方法与流程

2022-10-13 05:36:19 来源:中国专利 TAG:


1.本技术涉及带流程条件的流程审批控制领域,并且更为具体地,涉及一种用于标识表达式计算路径的方法。


背景技术:

2.如众所周知的,fel轻量级高效的表达式计算引擎。fel源自于企业项目,其设计目的是为了满足不断变化的功能需求和性能需求。fel是开放的,其引擎执行中的多个模块都可以扩展或替换。fel的执行主要是通过函数实现运算符(例如, 、-等都是fel函数)。所有这些函数都是可以替换的,扩展函数也非常简单。
3.fel具有双引擎,同时支持解释执行和编译执行。可以根据性能要求选择执行方式。编译执行就是将表达式编译成字节码(生成java代码和编译模块都是可以扩展和替换的)。
4.在流程控制中,后台根据流程条件对流程中输入的变量进行计算。如果满足流程条件,即可进入审批流程的下一阶段。用户界面用于向用户展示进入此审批阶段的原因(即,流程条件表达式)。表达式中满足设置条件的部分被高亮展示,以向用户做出提示。
5.然而,现有技术只能满足得到整个表达式的计算结果,却无法精细化地得到表达式树的各个节点的计算结果。因此,在冗长的表达式计算中不能看到表达式的各段的计算结果,从而无法判断究竟是哪些变量不满足当前条件。
6.因此,本领域中急需一种能够对表达式的计算路径进行显式标识,从而能够使用户根据标识结果对不符合要求的变量进行修改,以使表达式顺利通过的方法。


技术实现要素:

7.以下给出一个或多个方面的简要概述以提供对这些方面的基本理解。此概述不是所有构想到的方面的详尽综览,并且既非旨在标识出所有方面的关键性或决定性要素亦非试图界定任何或所有方面的范围。其唯一的目的是要以简化形式给出一个或多个方面的一些概念以作为稍后给出的更加详细的描述之序。
8.如上,现有技术无法满足向客户展示业务含义的表达式的各个节点的结果的需求。为了解决上述问题,本技术提出了一种用于标识表达式的计算路径的方法。该方法能够通过遍历fel计算引擎返回的表达式树节点,对计算结果为t(真)的节点,通过增加html来增加颜色标识,从而能够实现表达式的关键节点的高亮显示。基于此,用户就能够确认究竟是表达式中哪些变量出现了问题导致无法满足表达式,从而进行相应的适配,以保证审批流程的正常进行。
9.根据一示例,描述了一种用于标识表达式计算路径的方法。
10.该方法包括:获取fel引擎表达式规范的表达式;
11.从该表达式中提取一个或多个变量,并获取该变量的定义值和当前值;
12.基于该表达式、该定义值和该当前值来计算并输出表达式树;
13.若该计算结果为真,则遍历该表达式树以生成具有业务含义且具有标识的表达式树的文字描述;以及
14.若该计算结果为假,则继续获取下一表达式,并重复上述步骤。
15.根据本技术的优选实施例,该表达式树具有各节点的计算结果。
16.根据本技术的优选实施例,该标识基于该表达式树的节点计算结果。
17.根据本技术的优选实施例,该标识用于区分计算结果为真的节点和计算结果为假的节点。
18.根据本技术的优选实施例,通过增加html来增加该表达式树的颜色标识以区分该表达式树的关键节点。
19.根据本技术的优选实施例,通过增加html以外格式的其他数据结构以标识该表达式树以区分该表达式树的关键节点。
20.为能达成前述及相关目的,这一个或多个方面包括在下文中充分描述并在所附权利要求中特别指出的特征。以下描述和附图详细阐述了这一个或多个方面的某些解说性特征。但是,这些特征仅仅是指示了可采用各种方面的原理的各种方式中的若干种,并且本描述旨在涵盖所有此类方面及其等效方案。
附图说明
21.为了能详细理解本技术的以上陈述的特征所用的方式,可参照各方面来对以上简要概述的内容进行更具体的描述,其中一些方面在附图中解说。然而应该注意,附图仅解说了本技术的某些典型方面,故不应被认为限定其范围,因为本描述可允许有其他等同有效的方面。
22.在附图中:
23.图1是解说根据本技术的实施例的用于标识表达式计算路径的方法的流程图;以及
24.图2是解说根据本技术的实施例的方法对fel引擎进行代码修改的示意图;以及
25.图3是解说根据本技术的实施例的方法对fel引擎进行代码修改的又一示意图。
具体实施方式
26.以下结合附图阐述的详细描述旨在作为各种配置的描述,而无意表示可实践本文所描述的概念的仅有配置。本详细描述包括具体细节以提供对各种概念的透彻理解。然而,对于本领域技术人员将显而易见的是,没有这些具体细节也可实践这些概念。在某些实例中,以框图形式示出众所周知的组件以便避免淡化此类概念。
27.应当理解,基于本公开,其他实施例将是显而易见的,并且可以在不脱离本公开的范围的情况下做出系统、结构、过程或机械改变。
28.以上已经介绍了fel引擎,本技术的技术方案基于该引擎的功能。
29.现有技术中用于表达式的展示的方法通常包括以下步骤:
30.第一,构建一个fel引擎表达式规范的表达式(例如,a》10&&b《5);
31.第二,实例化fel,传入表达式及表达式中包含变量的值(a=1,b=2);以及
32.第三,经fel引擎计算后返回结果f(表明计算结果不通过)。
33.然而,如上所述,这种方法存在的问题是:用户无法看出该表达式的哪个步骤中的哪个变量导致表达式未通过,因此无法对相应变量进行调整和适配,从而造成大量的人员和时间成本的浪费。
34.因此,本技术对上述流程进行了改进,以解决上述问题。
35.以下结合附图来详细描述根据本技术的实施例的用于标识表达式计算路径方法的具体实现过程。
36.图1中解说了根据本技术的实施例的用于标识表达式计算路径的方法的流程图。
37.如图1中所示,根据本技术的用于标识表达式计算路径的方法10主要包括以下步骤。
38.首先,在步骤101,从流程管理引擎获取一个fel引擎表达式规范的表达式(例如,a》10&&b《5)。
39.接着,在步骤102,从所获取的表达式中取出一个或多个变量,并从交易系统获取各个变量的定义值和当前值。
40.以下结合示例来进行描述。
41.例如,变量为:a,b;
42.定义值为:a=交易金额,b=单笔金额;
43.当前值为:a=11,b=2。
44.接下来,在步骤103,将在步骤101处获取的表达式和在步骤102处获取的变量及其值输入到fel计算引擎以供计算,并输出带节点计算结果的表达式树。
45.如果在步骤103的计算结果为f,则返回到步骤101继续获取下一表达式,并重复步骤102和103。
46.否则,若在步骤103的计算结果为t,则行进至步骤104,遍历表达式树以根据各个节点的结算结果来生成表达式树的文字描述字符串。如本领域技术人员能够领会的,该表达式树具有业务含义并且突出标识了各个节点的计算结果。该标识可用颜色来标识,也可以用不同灰度等本领域可知的任何方式来进行标识。
47.例如,最后生成的表达式树的文字描述字符串为:
48.[交易金额]》10and[单笔金额]《5若前半部分计算为t,可使用“绿色”来标识。
[0049]
所生成的表达式的文字描述字符串可被返回至客户端以进行展示。因此,通过返回带有标识的表达式树而非表达式的计算结果,就能够得到表达式树的各个节点计算结果,从而判断哪些变量不满足当前条件。随后可以通过修改某个变量来实现表达式的顺利通过。
[0050]
如上所述,现有的引擎计算方法只会返回整个表达式计算的结果,而不能返回表达式各个节点计算的结果。修改后的fel引擎支持返回所有节点的计算结果,并可以依据各个节点的计算结果来高亮标识表达式的文字描述。从而,用户能够及时发现现有表达式中各个变量的计算结果,并能根据情况对变量进行修改,以符合表达式通过的要求。
[0051]
图2中解说了根据本技术的实施例的方法对fel引擎进行代码修改的示意图。
[0052]
如图2中所示,对fel引擎源码进行修改,添了加支持返回表达式树节点计算结果对象(图中高亮显示)。
[0053]
图3中解说了根据本技术的实施例的方法对fel引擎进行代码修改的又一示意图。
[0054]
如图3中所示,修改返回的felnode对象,增加了节点结果的设置与获取(图中高亮显示)。
[0055]
修改表达式计算中and与or处理的class(表达式片段以and/or作为最小分割),在两个class中的logic方法添加对各节点计算结果的处理(结果存储到felnode对象中)。
[0056]
随后,fel引擎调用方即可得到一个包含节点及其计算结果的felnode对象。
[0057]
调用方遍历以上输出的felnode对象,将所有子节点的重新拼接成表达式(其中子节点计算结果为t的表达式片段进行特殊处理设置以展示其颜色,这里使用html格式方便标记)。
[0058]
例如:
[0059]
(《font color="gray"》max(if([单笔券面总额(cny)]》10.00,123.00,10.00),[发行金额(cny)],[单笔结算金额(cny)])》1.00《/font》or[交易方向]属于([买入],[卖出]))and([净价]》1.00万or《font color="gray"》[全价]》10.00元《/font》)
[0060]
以上输出的表达式可返回至客户端进行展示(灰色部分为突出显示t的内容)。
[0061]
例:(max(if([单笔券面总额(cny)]》10.00,123.00,10.00),[发行金额(cny)],[单笔结算金额(cny)])》1.00or[交易方向]属于([买入],[卖出]))and([净价]》1.00万or[全价]》10.00元)
[0062]
因此,用户能够根据表达式树的各个节点计算结果,来判断哪些变量不满足当前条件。随后可以通过修改某个变量来实现表达式的顺利通过,从而节省了大量的人力和资源成本。
[0063]
以上结合附图来参照执行本文所描述的一种或多种方法描绘了诸方面。尽管以下在图1中所描述的操作以特定次序呈现和/或如由示例组件执行,但应理解这些动作的次序以及执行动作的组件可取决于实现而变化。此外,应当理解,以下动作或功能可由专门编程的处理器、执行专门编程的软件或计算机可读介质的处理器、或由能够执行所描述的动作或功能的硬件组件和/或软件组件的任何其他组合来执行。
[0064]
综上所述,与现有技术相比,采用根据本技术的根据本技术的用于标识表达式计算路径的方法具有以下技术优势:
[0065]
第一、能够向用户展示表达式的具体业务含义,从而实现了真正的可视化和人性化,使得客户能够准确区分符合条件的变量,从而对不符合的变量进行及时修改以使表达式符合要求;
[0066]
第二、在表达式中的变量、函数、枚举值发生任何变化的情况下,
[0067]
由于本技术中的变文字描述是实时生成的,因此能够向用户实时展示和体现这些变化,以加快工作节奏,提高工作效率。
[0068]
根据本公开的各方面、要素、或要素的任何部分、或者要素的任何组合可用包括一个或多个处理器的“处理系统”来实现。处理器的示例包括:微处理器、微控制器、数字信号处理器(dsp)、现场可编程门阵列(fpga)、可编程逻辑器件(pld)、状态机、门控逻辑、分立的硬件电路以及其他配置成执行本公开中通篇描述的各种功能性的合适硬件。处理系统中的一个或多个处理器可以执行软件。软件应当被宽泛地解释成意为指令、指令集、代码、代码段、程序代码、程序、子程序、软件模块、应用、软件应用、软件包、例程、子例程、对象、可执行件、执行的线程、规程、函数等,无论其是用软件、固件、中间件、微代码、硬件描述语言、还是
其他术语来述及皆是如此。软件可驻留在计算机可读介质上。该计算机可读介质可以是非瞬态计算机可读介质。作为示例,非瞬态计算机可读介质包括:磁存储设备(例如,硬盘、软盘、磁条)、光盘(例如,紧致盘(cd)、数字多用盘(dvd))、智能卡、闪存设备(例如,记忆卡、记忆棒、钥匙驱动器)、随机存取存储器(ram)、只读存储器(rom)、可编程rom(prom)、可擦式prom(eprom)、电可擦式prom(eeprom)、寄存器、可移动盘、以及任何其他用于存储可由计算机访问与读取的软件与/或指令的合适介质。作为示例,计算机可读介质还可包括载波、传输线、以及任何其他用于传送可由计算机访问和读取的软件和/或指令的合适介质。计算机可读介质可以驻留在处理系统中、在处理系统外部、或跨包括该处理系统的多个实体分布。计算机可读介质可以在计算机程序产品中实施。作为示例,计算机程序产品可包括封装材料中的计算机可读介质。本领域技术人员将认识到如何取决于具体应用和加诸于整体系统上的总体设计约束来最佳地实现本公开中通篇给出的所描述的功能性。
[0069]
应该理解,所公开的方法中各步骤的具体次序或阶层是示例性过程的解说。基于设计偏好,应该理解,可以重新编排本文描述的方法或方法体系中各步骤的具体次序或阶层。所附方法权利要求以样本次序呈现各种步骤的要素,且并不意味着被限定于所呈现的具体次序或阶层,除非在本文中有特别叙述。
[0070]
提供先前描述是为了使本领域任何技术人员均能够实践本文中所述的各种方面。对这些方面的各种改动将容易为本领域技术人员所明白,并且在本文中所定义的普适原理可被应用于其他方面。因此,权利要求并非旨在被限定于本文中所示出的各方面,而是应被授予与权利要求的语言相一致的全部范围,其中对要素的单数形式的引述并非旨在表示“有且仅有一个”(除非特别如此声明)而是“一个或多个

。除非特别另外声明,否则术语“一些”指的是一个或多个。引述一列项目中的“至少一个”的短语是指这些项目的任何组合,包括单个成员。作为示例,“a、b或c中的至少一者”旨在涵盖:至少一个a;至少一个b;至少一个c;至少一个a和至少一个b;至少一个a和至少一个c;至少一个b和至少一个c;以及至少一个a、至少一个b和至少一个c。本公开通篇描述的各种方面的要素为本领域普通技术人员当前或今后所知的所有结构上和功能上的等效方案通过引述被明确纳入于此,且旨在被权利要求所涵盖。此外,本文中所公开的任何内容都并非旨在贡献给公众,无论这样的公开是否在权利要求书中被显式地叙述。
再多了解一些

本文用于创业者技术爱好者查询,仅供学习研究,如用于商业用途,请联系技术所有人。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献