CN111930364B - 通过动态配置规则装置实现流程节点按条件流转的方法 - Google Patents
通过动态配置规则装置实现流程节点按条件流转的方法 Download PDFInfo
- Publication number
- CN111930364B CN111930364B CN202010803395.4A CN202010803395A CN111930364B CN 111930364 B CN111930364 B CN 111930364B CN 202010803395 A CN202010803395 A CN 202010803395A CN 111930364 B CN111930364 B CN 111930364B
- Authority
- CN
- China
- Prior art keywords
- flow
- configuration
- node
- rule
- condition
- 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
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/30—Creation or generation of source code
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Stored Programmes (AREA)
Abstract
本发明提供了一种通过动态配置规则装置实现流程节点按条件流转的方法,包括:提供配置界面并输入流程节点配置和流转条件配置;保存流程节点配置和流转条件配置至动态配置规则装置,其中,动态配置规则装置配置为:接收配置界面传入的RESTful调用请求,其中RESTful调用请求中包含流程节点配置和流转条件配置的规则表达式的字符串;基于预设知识库对字符串进行解析;将解析后的字符串拆解为相应的令牌并构建相应的抽象语法树;根据抽象语法树生成相应的字节码文件;以及将字节码文件加载进Java虚拟机并执行;以及在任一流程节点提交流程指令,判断流程指令所对应的流程节点是否配置过流转条件,其中,当流程节点配置过流转条件时,根据流转条件自动流转。
Description
技术领域
本申请主要涉及数据处理技术领域,尤其涉及一种通过动态配置规则装置实现流程节点按条件流转的方法。
背景技术
传统的软件系统中涉及某些处理流程,如审批流程的部分,都是按照企业已知且固定的内部流程预先开发,在实际应用中,若流程有变,如需要增加、减少或调整某些流程,则需要二次开发,升级变化的成本较高。
为了满足这样的变化需求,部分厂商的系统支持按照用户要求临时增加或者减少流程的节点,但往往都是作为降低厂商自身服务成本的工具,不对客户开放,或者开放后非常技术化,中小型客户学习变化流程开发的成本非常高。还有小部分系统支持对流程发起人提交的不同数据建立若干个不同的细分流程,但不支持对流程中的节点数据判断,进而导致一个内部的流程处理情况要新增几种甚至十几种细分的小流程来支持,维护成本非常高。
目前,市场上已经出现个别厂家的系统产品能够实现在其系统内对所有节点的不同数据情况跳转至不同的流程节点而不是跳转新流程,但数据判断规则与该系统的产品捆绑,稳定性差,同时该跳转流程节点的范围也只能局限在该系统产品本身上,无法让企业内部其他需要流程流转的业务场景等也被跳转从而进行流程等后续工作。
在此基础上,在现有技术针对规则引擎的开发中,硬编码方式、编程组件化OSGI、静态脚本以及面向开发者的规则引擎都是面向开发者的,需要开发人员预先进行规则配置,业务人员不能动态地配置或变更规则。
发明内容
本申请要解决的技术问题是提供一种通过动态配置规则装置实现流程节点按条件流转的方法,能够便捷的使用户动态的配置流程的流转规则并即时实施流程的流转规则,降低开发成本和流程变更成本。
为解决上述技术问题,本发明提供了一种通过动态配置规则装置实现流程节点按条件流转的方法,包括:提供配置界面;在所述配置界面上输入流程节点配置;在所述配置界面上对应所述流程节点输入流转条件配置;保存所述流程节点配置和流转条件配置至动态配置规则装置,其中,所述动态配置规则装置配置为:接收所述配置界面传入的RESTful调用请求,其中所述RESTful调用请求中包含所述流程节点配置和流转条件配置的规则表达式的字符串;基于预设知识库对所述字符串进行解析;将解析后的所述字符串拆解为相应的令牌并构建相应的抽象语法树;根据所述抽象语法树生成相应的字节码文件;以及将所述字节码文件加载进Java虚拟机并执行;以及在任一所述流程节点提交流程指令,判断所述流程指令所对应的流程节点是否配置过所述流转条件,其中,当所述流程节点配置过所述流转条件时,根据所述流转条件自动流转。
在本发明的一实施例中,所述流转条件配置包括数据规则和流转规则。
在本发明的一实施例中,所述数据规则包括多个子数据规则,其中,每个子数据规则包括时间关系、函数关系以及自然语言关系。
在本发明的一实施例中,所述流转规则包括多个子流转规则,其中,每个子流转规则包括当满足所述数据规则时,自动流转至任一的所述流程节点。
在本发明的一实施例中,判断所述流程指令所对应的流程节点是否配置过所述流转条件的步骤由所述动态配置规则装置执行。
在本发明的一实施例中,根据所述流转条件自动流转的步骤由所述动态配置规则装置执行。
在本发明的一实施例中,当所述流程节点未配置过所述流转条件时,自动流转至下一个所述流程节点。
在本发明的一实施例中,所述流程节点包括审批节点,所述流程指令包括审批指令。
在本发明的一实施例中,所述预设知识库的数量为一个或多个,每个预设知识库中包括一个或多个预设知识点,其中,当所述预设知识库的数量为多个时,根据以下的一项或多项对所述多个预设知识库进行定义:租户、项目、以及业务场景。
在本发明的一实施例中,所述预设知识点还包括根据所述流程节点配置和流转条件配置所预设的知识点。
在本发明的一实施例中,所述基于预设知识库对所述字符串进行解析包括:基于所述预设知识点对所述字符串进行匹配和转化;以及根据转化结果对所述字符串中的每个令牌进行类型标记,并得到解析后的所述字符串。
在本发明的一实施例中,将所述解析后的字符串拆解为相应的令牌并构建相应的抽象语法树包括基于上下文无关文法、符号优先级和符号关联性进行拆解。
在本发明的一实施例中,所述根据所述抽象语法树生成相应的字节码文件包括使用Javaparser语法解析器进行。
为解决上述的技术问题,本发明还提供了一种通过动态配置规则实现流程节点按条件流转的系统,包括:存储器,用于存储可由处理器执行的指令;以及处理器,用于执行所述指令以实现上述的通过动态配置规则装置实现流程节点按条件流转的方法。
为解决上述的技术问题,本发明还提供了一种存储有计算机程序代码的计算机可读介质,所述计算机程序代码在由处理器执行时实现上述的通过动态配置规则装置实现流程节点按条件流转的方法。
与现有技术相比,本申请的通过动态配置规则装置实现流程节点按条件流转的方法、系统和计算机可读介质能够方便简单的更改和配置对应流程节点的流转条件配置,使得用户可以根据预设的流程的流转规则即时实现流程的流转,显著降低开发成本和流程变更成本。
附图说明
包括附图是为提供对本申请进一步的理解,它们被收录并构成本申请的一部分,附图示出了本申请的实施例,并与本说明书一起起到解释本申请原理的作用。附图中:
图1是本申请一实施例的通过动态配置规则装置实现流程节点按条件流转的方法的流程示意图;
图2是本申请一实施例的通过动态配置规则装置实现流程节点按条件流转的方法中对于动态配置规则装置进行配置的流程示意图;
图3是本申请一实施例的通过动态配置规则装置实现流程节点按条件流转的系统的系统框图。
具体实施方式
为了更清楚地说明本申请的实施例的技术方案,下面将对实施例描述中所需要使用的附图作简单的介绍。显而易见地,下面描述中的附图仅仅是本申请的一些示例或实施例,对于本领域的普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图将本申请应用于其他类似情景。除非从语言环境中显而易见或另做说明,图中相同标号代表相同结构或操作。
如本申请和权利要求书中所示,除非上下文明确提示例外情形,“一”、“一个”、“一种”和/或“该”等词并非特指单数,也可包括复数。一般说来,术语“包括”与“包含”仅提示包括已明确标识的步骤和元素,而这些步骤和元素不构成一个排它性的罗列,方法或者设备也可能包含其他的步骤或元素。
除非另外具体说明,否则在这些实施例中阐述的部件和步骤的相对布置、数字表达式和数值不限制本申请的范围。同时,应当明白,为了便于描述,附图中所示出的各个部分的尺寸并不是按照实际的比例关系绘制的。对于相关领域普通技术人员已知的技术、方法和设备可能不作详细讨论,但在适当情况下,所述技术、方法和设备应当被视为授权说明书的一部分。在这里示出和讨论的所有示例中,任何具体值应被解释为仅仅是示例性的,而不是作为限制。因此,示例性实施例的其它示例可以具有不同的值。应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步讨论。
如图1所示,10为本申请一实施例的通过动态配置规则装置实现流程节点按条件流转的方法的流程示意图。如图2所示,20为本申请如图1所示的实施例中,对于动态配置规则装置进行配置的流程示意图。下面根据图1和图2对本申请如图1所示的一种通过动态配置规则装置实现流程节点按条件流转的方法做出说明。
需要注意的是,图1和图2中使用了流程图用来说明根据本申请的实施例所执行的操作。应当理解的是,前面或下面操作不一定按照顺序来精确地执行。相反,可以按照倒序或同时处理各种步骤。同时,或将其他操作添加到这些过程中,或从这些过程移除某一步或数步操作。
如图1所示,步骤11-14,即虚线框出的如图1所示的流程上半部分101可以理解为本发明通过动态配置规则装置实现流程节点按条件流转的方法中的规则配置部分。下面结合图1和图2对于规则配置的部分进行详细说明。
如图1所示,步骤11为提供配置界面,步骤12为在配置界面输入流程节点配置。
示例性的,流程可以是企业内部的审批流程,则相应的流程节点可以为审批节点,所需要进行的流程处理为由某部门或岗位的负责人审批等。在配置界面上输入流程节点配置,即在配置界面上输入为了完成一个审批流程从开始到结束所经过的各部门或岗位的负责人按次序流转审批。
如图1所示,步骤13为对应流程节点输入流转条件配置。
在本发明如图1所示的实施例中,步骤13所配置的流转条件包括对应上述步骤12中配置的某个或某些流程节点所配置的数据规则和流转规则。其中,数据规则包括多个子数据规则,并且,每个子数据规则包括时间关系、函数关系以及自然语言关系。示例性的,时间关系可以体现为在某一时刻之前或之后等,函数关系可以体现为某一参数大于、等于和/或小于另外一参数等,自然语言关系可以体现为当某一事件发生时等。进一步的,流转规则也包括多个子流转规则,每个子流转规则被设置为,当满足上述某一数据规则时,则自动流转至上述某一流程节点并处理相应的流程。
示例性的,如上所述,当流程为审批流程时,某一个审批节点所配置的流转规则可以是,当该审批节点满足某一个或某些数据规则时,自动流转至某一个审批节点进行审批,这对于企业内部审批流程的处理是非常必要的设定,如当某些特殊情况发生时,需要更高级别的负责人对流程中出现的状况进行特殊处理。因此,采用本申请如图1所示的实施例的流程,业务人员可以快速的通过步骤11-13的对于特定情况下流程的变更通过一个配置界面进行简单方便的配置,而企业内部的相关岗位负责人也可以在任一预设的特定情况下快速的获取所需要处理流程的信息和指令。
如图1所示,步骤14为保存流程节点配置和流转条件配置至动态配置规则装置,也即采用动态配置规则的方法对于上述在配置界面上输入的流程节点配置和流转条件配置进行保存和进一步的处理。
如图2所示,对于上述动态配置规则装置的配置可以按照如下的流程进行。
步骤21,接收配置界面传入的RESTful调用请求,其中RESTful调用请求中包含上述流程节点配置和流转条件配置的规则表达式的字符串;
步骤22,基于预设知识库对字符串进行解析;
步骤23,将解析后的字符串拆解为相应的令牌并构建相应的抽象语法树;
步骤24,根据抽象语法树生成相应的字节码文件;以及
步骤25,将字节码文件加载进Java虚拟机并执行。
在步骤21中,如图1所示的动态配置规则装置接收配置界面传入的RESTful调用请求。RESTful(Representational State Transfer,表述性状态转移)请求是一种网络应用程序的设计风格和开发方式,基于HTTP,可以使用XML格式定义或者JSON格式定义。在本实施例中使用JSON格式定义RESTful请求。系统所接收的RESTful调用请求的RequestBody中包含有输入脚本,输入脚本中包含字符串形式的规则表达式。规则表达式是指操作上述配置界面的用户想要进行配置的规则的表达式,在如图1所示的实施例中,即指关于流程节点配置和流转条件配置的规则表达式。
可选地,上述规则表达式的字符串可以为基于函数调用和/或自然语言格式。在一个示例中,当规则表达式的字符串为基于函数调用格式时,当存在入参数据时,abs(-9)可以表示为绝对值(-9)。在一个示例中,规则表达式的字符串为自然语言格式时,逻辑运算中的if可以表示为“如果”。
在步骤22中,如图1所示的动态配置规则装置基于预设知识库对上述字符串进行解析。知识库可以由操作上述配置界面的用户或开发人员预先进行配置。可选地,预设知识库的数量可以为一个或多个,其中每个预设知识库中可以包括一个或多个预设知识点。规则表达式中的逻辑单元为令牌类型(Token Type)和/或知识点。令牌类型是指令牌的类型,例如数字、赋值操作符、加法操作符等。知识点能够以别名的方式表示多个操作符的组合,例如宏(Macro),也能够表示简单函数,例如递归函数。知识点可以直接被规则引擎执行。知识点是由操作上述配置界面的用户或开发人员预先进行配置。一个规则表达式可以由多个子规则共同构成,其中每个子规则可以对应一个知识点和/或逻辑单元。通过预先配置知识库和知识点,操作上述配置界面的用户可以在编写规则表达式时使用知识点,使得操作配置界面的用户能更容易地阅读和理解业务逻辑,无需学习编程语言就能阅读和编写规则,大大地降低了终端用户使用规则引擎的学习成本和难度,只需要一个简单易懂的操作配置界面就可以实现实时变更流程的效果。
可选地,当预设知识库的数量为多个时,系统可以根据以下的一项或多项对多个预设知识库进行定义:租户、项目以及业务场景。系统可以基于租户、项目以及业务场景这三个维度进行使用范围的隔离。同范围或者父子集范围的场景可以共用知识库。下表1为当预设知识库为多个时的一个示例,共包括6个知识库:serviceMethod、clazzMethod、macro、operator、operAlias和operFunc。
表1
在如图1所示的实施例中,上述预设知识点还包括根据上述流程节点配置和流转条件配置所预设的知识点。
可选地,步骤22的基于预设知识库对字符串进行解析可以包括以下步骤:
动态配置规则装置基于预设知识点对字符串进行匹配和转化;以及
动态配置规则装置根据转化结果对字符串中的每个令牌(Token)进行类型标记,并得到解析后的字符串。
对字符串进行解析可以是先根据知识库中的知识点对字符串进行匹配。在字符串匹配完知识点后,动态配置规则装置根据匹配结果将字符串中与单个知识点对应的内容转化为一个或多个令牌,使得整个上下文字符串中的令牌都满足标准的Java语法规范。在转化完成后,系统对字符串中的每个令牌进行令牌类型标记。
在一个示例中,类型标记化过程可以使用正则表达式进行定义。语法分析器读取输入字符流(即字符串),然后从中识别出语素,最后进行类型标记。在标记化过程中一旦发现无效标记,系统可以报错。下面以字符串“language=2+3;”为例对标记化过程进行说明:
“language=2+3;”是初始化变量“language”,将其赋值“2+3”。在这个赋值语句中,包含了“language”、“=”、“2”、“+”、“3”和“;”这6个令牌。通过预设知识库,系统可以得到如下表2的令牌-标记化类型对应关系:
令牌 | 标记化类型 |
language | 标志符 |
= | 赋值操作符 |
3 | 数字 |
+ | 加法操作符 |
2 | 数字 |
; | 语句结束 |
表2
然后,系统根据上述对应关系对字符串中的这6个令牌进行类型标记。
在一个示例中,令牌的标记化类型可以分为以下四类:
1、单字符令牌(Single-Character Token),例如“>”、“-”、“*”、“.”、“(”等等;
2、单或双字符令牌(One or Two Character Token),例如“==”,“<=”等等;
3、文字(Literal)令牌,文字令牌通常针对一种具体语言,需要将文字令牌解释成该语言的对应字符类型;
4、关键词(Keyword)令牌,例如“and”,“class”,“else”,“if”,“this”等等。
在步骤23中,如图1所示的动态配置规则装置将解析后的字符串拆解为相应的令牌,并根据令牌构建相应的抽象语法树(Abstract Syntax Tree,AST)。可选地,系统可以是基于上下文无关文法、符号优先级和符号关联性将解析后的字符串进行拆解。上下文无关文法包含四个成分:终结符号集合、非终结符号集合、起始符号以及产生式集合。符号优先级是指为每个符号设定相应的优先级,例如将“*”的优先级设定为高于“+”。符号关联性是指将符号设定为左关联或右关联。在一个示例中,可以设定为只有“!”和“-”是右关联,其他符号都是左关联。例如,“-3”中的“-”修饰的是其右侧的3,“-3”表示为负三;“1+2+3”中第一个“+”关联的是其左侧的1,第二个“+”关联的是其左侧的2。符号优先级和符号关联性决定了上下文无关文法为非二义性文法,从而能够简单方便地通过扫描令牌来构建抽象语法树。
在步骤24中,如图1所示的动态配置规则装置根据抽象语法树生成相应的字节码文件。在一个示例中,系统可以使用前序递归的方式来遍历AST。在遍历AST的过程中,将token中的指令按顺序进行压栈,然后交由线程执行。压栈顺序由TreeWalker的走向来决定,而TreeWalker走向是由语法树的结构决定,因此语法树的结构决定了遍历的有向性。在遍历AST后,系统生成相应的字节码文件(又称字节码指令集),字节码文件即为.class文件。可选地,根据抽象语法树生成相应的字节码文件可以是使用Javaparser语法解析器进行。
在步骤25中,如图1所示的动态配置规则装置将字节码文件加载进Java虚拟机(Java Virtual Machine,JVM)并执行规则。Java程序编译而成的字节码文件,需要先加载至JVM的方法区中,方能在JVM中运行。实际运行时,JVM会执行加载至方法区内的代码。JVM在内存中划分出堆和栈来存储运行时的数据。
通过以上如图2所示的步骤21-25的关于动态配置规则装置的配置,使得本发明的流程节点按条件流转的方法能够根据由上述配置界面传入的包含流程节点配置和流转条件配置的规则表达式的调用请求,生成相应的字节码文件并执行,从而实现了由操作配置界面的业务人员方便简单的进行规则的动态配置并即时实施规则,无需开发人员预先进行规则配置。本实施例采用上述动态配置规则装置进行实现流程节点按条件流转的方法能够无侵入地让业务人员管理复杂的业务逻辑,提供中心化的管理结构,实现了一处配置、实施生效和处处响应的目的。
继续如图1所示,步骤15-19,即虚线框出的如图1所示的流程下半部分102可以理解为本发明通过动态配置规则装置实现流程节点按条件流转的方法中的调用执行部分。下面结合图1对于调用执行的部分进行详细说明。
步骤15为在任一上述流程节点提交流程指令。示例性的,如上所述,当涉及的流程为审批流程时,该提交指令为审批指令。
如图1所示,步骤16为判断在步骤15中提交流程指令所对应的流程节点是否在上述步骤11-14中被设置了某个或某些流转条件。
在本发明的一实施例中,步骤16的判断过程由上述动态配置规则装置执行。
当步骤16的判断结果为“是”时,即代表在步骤15中提交流程指令所对应的流程节点在上述步骤11-14中被设置了某个或某些流转条件,于是进行步骤17,即按照流转条件自动流转。如上所述,该流转条件可以自动流转至某一流程节点并处理相应的流程。在本发明的一实施例中,上述根据流转条件自动流转的步骤17由上述动态配置规则装置执行。
在如图1所示的实施例中,在某一流程节点处理完成相应的流程之后,进行步骤19的判断,即判断是否该流程为最后一个流程节点,若判断结果为“是”,则结束整个流程;若判断结果为“否”,则重复步骤15的提交流程指令的步骤,并进行后续的处理,直至流转至某一流程节点且该流程节点经过步骤19的判断后结果为最后一个流程节点,则结束整个流程。
当步骤16的判断结果为“否”时,即代表在步骤15中提交流程指令所对应的流程节点在上述步骤11-14中未被设置某个或某些流转条件,于是进行步骤18,即自动流转至下一个流程节点,并进行相应的流程处理。
在如图1所示的实施例中,在该下一个流程节点处理完成相应的流程之后,进行步骤19的判断,即判断是否该流程为最后一个流程节点,若判断结果为“是”,则结束整个流程;若判断结果为“否”,则重复步骤15的提交流程指令的步骤,并进行后续的处理,直至流转至某一流程节点且该流程节点经过步骤19的判断后结果为最后一个流程节点,则结束整个流程。
以上是如图1所示的实施例中,本发明的一种通过动态配置规则装置实现流程节点按条件流转的方法的说明。其中,涉及流程的部分使用了审批流程举例,但是本发明不以此为限。通过如图1和如图2所示的方法,能够便捷的使用户动态的配置流程的流转规则并即时实施流程的流转规则,降低开发成本和流程变更成本。
本发明的另一方面还提供了一种通过动态配置规则实现流程节点按条件流转的系统,包括存储器,用于存储可由处理器执行的指令,以及处理器,用于执行该指令以实现上述实施例中参考图1和图2所示的通过动态配置规则装置实现流程节点按条件流转的方法。
图3是根据本申请一实施例示出的通过动态配置规则实现流程节点按条件流转的系统的系统框图。通过动态配置规则实现流程节点按条件流转的系统30可包括内部通信总线31、处理器(Processor)32、只读存储器(ROM)33、随机存取存储器(RAM)34、以及通信端口35。当应用在个人计算机上时,通过动态配置规则实现流程节点按条件流转的系统30还可以包括硬盘36。内部通信总线31可以实现通过动态配置规则实现流程节点按条件流转的系统30组件间的数据通信。处理器32可以进行判断和发出提示。在一些实施例中,处理器32可以由一个或多个处理器组成。通信端口35可以实现通过动态配置规则实现流程节点按条件流转的系统30与外部的数据通信。在一些实施例中,通过动态配置规则实现流程节点按条件流转的系统30可以通过通信端口35从网络发送和接受信息及数据。通过动态配置规则实现流程节点按条件流转的系统30还可以包括不同形式的程序储存单元以及数据储存单元,例如硬盘36,只读存储器(ROM)303和随机存取存储器(RAM)34,能够存储计算机处理和/或通信使用的各种数据文件,以及处理器32所执行的可能的程序指令。处理器执行这些指令以实现方法的主要部分。处理器处理的结果通过通信端口传给用户设备,在用户界面上显示。
上述的通过动态配置规则实现流程节点按条件流转的方法可以实施为计算机程序,保存在硬盘36中,并可记载到处理器32中执行,以实施本申请中的通过动态配置规则实现流程节点按条件流转的方法。
本发明的另一方面还提供了一种存储有计算机程序代码的计算机可读介质,其中,计算机程序代码在由处理器执行时实现如上述实施例所述的参考图1和图2所示的通过动态配置规则装置实现流程节点按条件流转的方法。
通过动态配置规则装置实现流程节点按条件流转的方法实施为计算机程序时,也可以存储在计算机可读存储介质中作为制品。例如,计算机可读存储介质可以包括但不限于磁存储设备(例如,硬盘、软盘、磁条)、光盘(例如,压缩盘(CD)、数字多功能盘(DVD))、智能卡和闪存设备(例如,电可擦除可编程只读存储器(EPROM)、卡、棒、键驱动)。此外,本文描述的各种存储介质能代表用于存储信息的一个或多个设备和/或其它机器可读介质。术语“机器可读介质”可以包括但不限于能存储、包含和/或承载代码和/或指令和/或数据的无线信道和各种其它介质(和/或存储介质)。
应该理解,上文所描述的实施例仅是示意。本文描述的实施例可在硬件、软件、固件、中间件、微码或者其任意组合中实现。对于硬件实现,处理单元可以在一个或者多个特定用途集成电路(ASIC)、数字信号处理器(DSP)、数字信号处理设备(DSPD)、可编程逻辑器件(PLD)、现场可编程门阵列(FPGA)、处理器、控制器、微控制器、微处理器和/或设计为执行本文所述功能的其它电子单元或者其结合内实现。
上文已对基本概念做了描述,显然,对于本领域技术人员来说,上述申请披露仅仅作为示例,而并不构成对本申请的限定。虽然此处并没有明确说明,本领域技术人员可能会对本申请进行各种修改、改进和修正。该类修改、改进和修正在本申请中被建议,所以该类修改、改进、修正仍属于本申请示例性实施例的精神和范围。
同时,本申请使用了特定词语来描述本申请的实施例。如“一个实施例”、“一实施例”、和/或“一些实施例”意指与本申请至少一个实施例相关的某一特征、结构或特点。因此,应强调并注意的是,本说明书中在不同位置两次或多次提及的“一实施例”或“一个实施例”或“一替代性实施例”并不一定是指同一实施例。此外,本申请的一个或多个实施例中的某些特征、结构或特点可以进行适当的组合。
本申请的一些方面可以完全由硬件执行、可以完全由软件(包括固件、常驻软件、微码等)执行、也可以由硬件和软件组合执行。以上硬件或软件均可被称为“数据块”、“模块”、“引擎”、“单元”、“组件”或“系统”。处理器可以是一个或多个专用集成电路(ASIC)、数字信号处理器(DSP)、数字信号处理器件(DAPD)、可编程逻辑器件(PLD)、现场可编程门阵列(FPGA)、处理器、控制器、微控制器、微处理器或者其组合。此外,本申请的各方面可能表现为位于一个或多个计算机可读介质中的计算机产品,该产品包括计算机可读程序编码。例如,计算机可读介质可包括,但不限于,磁性存储设备(例如,硬盘、软盘、磁带……)、光盘(例如,压缩盘CD、数字多功能盘DVD……)、智能卡以及闪存设备(例如,卡、棒、键驱动器……)。
同理,应当注意的是,为了简化本申请披露的表述,从而帮助对一个或多个申请实施例的理解,前文对本申请实施例的描述中,有时会将多种特征归并至一个实施例、附图或对其的描述中。但是,这种披露方法并不意味着本申请对象所需要的特征比权利要求中提及的特征多。实际上,实施例的特征要少于上述披露的单个实施例的全部特征。
虽然本申请已参照当前的具体实施例来描述,但是本技术领域中的普通技术人员应当认识到,以上的实施例仅是用来说明本申请,在没有脱离本申请精神的情况下还可作出各种等效的变化或替换,因此,只要在本申请的实质精神范围内对上述实施例的变化、变型都将落在本申请的权利要求书的范围内。
Claims (13)
1.一种通过动态配置规则装置实现流程节点按条件流转的方法,包括:
提供配置界面;
在所述配置界面上输入流程节点配置;
在所述配置界面上对应所述流程节点输入流转条件配置;
保存所述流程节点配置和流转条件配置至动态配置规则装置,其中,所述动态配置规则装置配置为:
接收所述配置界面传入的RESTful调用请求,其中所述RESTful调用请求中包含所述流程节点配置和流转条件配置的规则表达式的字符串;
基于预设知识库对所述字符串进行解析,且所述预设知识库的数量为一个或多个,每个预设知识库中包括一个或多个预设知识点,所述解析包括基于所述预设知识点对所述字符串进行匹配和转化,以及根据转化结果对所述字符串中的每个令牌进行类型标记,并得到解析后的所述字符串;
将所述解析后的所述字符串拆解为相应的令牌并构建相应的抽象语法树;
根据所述抽象语法树生成相应的字节码文件;以及
将所述字节码文件加载进Java虚拟机并执行;以及
在任一所述流程节点提交流程指令,所述动态配置规则装置判断所述流程指令所对应的流程节点是否配置过所述流转条件,其中,当所述流程节点配置过所述流转条件时,根据所述流转条件自动流转。
2.如权利要求1所述的方法,其特征在于,所述流转条件配置包括数据规则和流转规则。
3.如权利要求2所述的方法,其特征在于,所述数据规则包括多个子数据规则,其中,每个子数据规则包括时间关系、函数关系以及自然语言关系。
4.如权利要求2或3所述的方法,其特征在于,所述流转规则包括多个子流转规则,其中,每个子流转规则包括当满足所述数据规则时,自动流转至任一的所述流程节点。
5.如权利要求1所述的方法,其特征在于,根据所述流转条件自动流转的步骤由所述动态配置规则装置执行。
6.如权利要求1所述的方法,其特征在于,当所述流程节点未配置过所述流转条件时,自动流转至下一个所述流程节点。
7.如权利要求1所述的方法,其特征在于,所述流程节点包括审批节点,所述流程指令包括审批指令。
8.如权利要求1所述的方法,其特征在于,当所述预设知识库的数量为多个时,根据以下的一项或多项对所述多个预设知识库进行定义:租户、项目、以及业务场景。
9.根据权利要求8所述的方法,其特征在于,所述预设知识点还包括根据所述流程节点配置和流转条件配置所预设的知识点。
10.如权利要求9所述的方法,其特征在于,将所述解析后的字符串拆解为相应的令牌并构建相应的抽象语法树包括基于上下文无关文法、符号优先级和符号关联性进行拆解。
11.如权利要求10所述的方法,其特征在于,所述根据所述抽象语法树生成相应的字节码文件包括使用Javaparser语法解析器进行。
12.一种通过动态配置规则实现流程节点按条件流转的系统,包括:
存储器,用于存储可由处理器执行的指令;以及处理器,用于执行所述指令以实现如权利要求1-11任一项所述的方法。
13.一种存储有计算机程序代码的计算机可读介质,所述计算机程序代码在由处理器执行时实现如权利要求1-11任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010803395.4A CN111930364B (zh) | 2020-08-11 | 2020-08-11 | 通过动态配置规则装置实现流程节点按条件流转的方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010803395.4A CN111930364B (zh) | 2020-08-11 | 2020-08-11 | 通过动态配置规则装置实现流程节点按条件流转的方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111930364A CN111930364A (zh) | 2020-11-13 |
CN111930364B true CN111930364B (zh) | 2021-09-14 |
Family
ID=73312079
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010803395.4A Active CN111930364B (zh) | 2020-08-11 | 2020-08-11 | 通过动态配置规则装置实现流程节点按条件流转的方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111930364B (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113641414A (zh) * | 2021-08-30 | 2021-11-12 | 平安国际融资租赁有限公司 | 物联网设备接入方法、装置、计算机设备及存储介质 |
CN116974654B (zh) * | 2023-09-21 | 2023-12-19 | 浙江大华技术股份有限公司 | 一种图像数据的处理方法、装置、电子设备及存储介质 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106897806A (zh) * | 2015-12-17 | 2017-06-27 | 北京奇虎科技有限公司 | 工作流程创建方法和系统、业务系统 |
WO2017156435A1 (en) * | 2016-03-10 | 2017-09-14 | Vignet Incorporated | Dynamic user interfaces based on multiple data sources |
CN107704265A (zh) * | 2017-09-30 | 2018-02-16 | 电子科技大学 | 一种面向业务流可配置的规则生成方法 |
CN107767008A (zh) * | 2017-03-03 | 2018-03-06 | 平安医疗健康管理股份有限公司 | 流程配置方法及装置 |
CN110704037A (zh) * | 2019-08-28 | 2020-01-17 | 贵州医渡云技术有限公司 | 一种规则引擎实现方法及装置 |
-
2020
- 2020-08-11 CN CN202010803395.4A patent/CN111930364B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106897806A (zh) * | 2015-12-17 | 2017-06-27 | 北京奇虎科技有限公司 | 工作流程创建方法和系统、业务系统 |
WO2017156435A1 (en) * | 2016-03-10 | 2017-09-14 | Vignet Incorporated | Dynamic user interfaces based on multiple data sources |
CN107767008A (zh) * | 2017-03-03 | 2018-03-06 | 平安医疗健康管理股份有限公司 | 流程配置方法及装置 |
CN107704265A (zh) * | 2017-09-30 | 2018-02-16 | 电子科技大学 | 一种面向业务流可配置的规则生成方法 |
CN110704037A (zh) * | 2019-08-28 | 2020-01-17 | 贵州医渡云技术有限公司 | 一种规则引擎实现方法及装置 |
Non-Patent Citations (1)
Title |
---|
规则引擎框架;晚歌y;《简书:https://www.jianshu.com/p/cdc27a530d7b》;20200312;第1-2页 * |
Also Published As
Publication number | Publication date |
---|---|
CN111930364A (zh) | 2020-11-13 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111522558B (zh) | 基于Java的动态配置规则的方法、装置、系统和可读介质 | |
US7219338B2 (en) | Multi-language compilation | |
US9122540B2 (en) | Transformation of computer programs and eliminating errors | |
CN111930364B (zh) | 通过动态配置规则装置实现流程节点按条件流转的方法 | |
US20070266378A1 (en) | Source code generation method, apparatus, and program | |
JP2008251033A (ja) | 構造化データの汎用オブジェクト指向記述(gdl)のための方法 | |
CN108139896A (zh) | 扩展虚拟机指令集体系架构 | |
JP2004295398A (ja) | コンパイラ、コンパイル方法、及びプログラム開発ツール | |
CN111933227B (zh) | 基于动态配置规则实现医院内外部系统数据对接的方法 | |
CN107924326A (zh) | 对经更新的类型的迁移方法进行覆盖 | |
CN110109681B (zh) | 不同平台间代码的转换方法及系统 | |
JP2007519070A (ja) | 対話環境における構文への制約を入手し適用する機構 | |
WO2022033229A1 (zh) | 一种软件代码编译方法及系统 | |
CN107330014B (zh) | 一种数据表的创建方法与设备 | |
CN111124479A (zh) | 配置文件的解析方法、系统及电子设备 | |
US9053450B2 (en) | Automated business process modeling | |
US7669192B2 (en) | Method to find a violation of a coding rule in program | |
US20210397422A1 (en) | Software code converter for resolving conflicts during code development | |
WO2022222586A1 (zh) | 一种代码转换方法及装置 | |
CN113703779B (zh) | 一种跨平台的多语言编译方法和超轻量物联网虚拟机 | |
JP2007510203A (ja) | 部分的に未解決の入力を分析する機構 | |
US10416971B2 (en) | Method of creating the balanced parse tree having optimized height | |
US20210397421A1 (en) | Software code vectorization converter | |
Murawski et al. | A contextual equivalence checker for IMJ | |
EP4242832A1 (en) | Method and apparatus for parsing programming language, and non-volatile storage medium |
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 | ||
CP03 | Change of name, title or address |
Address after: 200233 2nd floor, no.25-1, Hongcao Road, Xuhui District, Shanghai Patentee after: Shanghai Taimei Nebula Digital Technology Co.,Ltd. Address before: Room 701, building 1, No.7 Guiqing Road, Xuhui District, Shanghai 200030 Patentee before: SHANGHAI YIKAI INTELLIGENT TECHNOLOGY Co.,Ltd. |
|
CP03 | Change of name, title or address |