基于JSON格式的流程描述方法及装置转让专利

申请号 : CN201911147923.9

文献号 : CN112825031A

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 符凯

申请人 : 中盈优创资讯科技有限公司

摘要 :

本发明公开了一种基于JSON格式的流程描述方法及装置,该方法包括:获取任务流程中的多个任务信息;判断多个任务信息之间的顺序关系;根据多个任务信息之间的顺序关系,结合JSON格式,建立流程模型;利用流程模型对任务流程进行描述。本发明可以在保证任务流程描述清楚的前提下,对任务流程的描述进行简化,提高工作效率,降低作业成本。

权利要求 :

1.一种基于JSON格式的流程描述方法,其特征在于,包括:获取任务流程中的多个任务信息;

判断多个任务信息之间的顺序关系;

根据多个任务信息之间的顺序关系,结合JSON格式,建立流程模型;

利用流程模型对任务流程进行描述。

2.如权利要求1所述的方法,其特征在于,JSON格式包括:对象格式和数组格式;

根据多个任务信息之间的顺序关系,结合JSON格式,建立流程模型,包括:判断多个任务信息之间是否存在顺序关系,根据判断结果,利用对象格式和数组格式描述任务流程中的串行结构和并行结构,建立流程模型。

3.如权利要求2所述的方法,其特征在于,根据判断结果,利用对象格式和数组格式描述任务流程中的串行结构和并行结构,包括:若判断结果为多个任务信息之间存在顺序关系,则根据数组格式描述任务流程中的串行结构;

否则,根据对象格式描述任务流程中的并行结构。

4.如权利要求1所述的方法,其特征在于,还包括:遍历流程模型,判断流程模型中是否存在事务流程,如果存在,则在事务流程中的流程节点遍历失败时,对事务流程进行回滚处理。

5.一种基于JSON格式的流程描述装置,其特征在于,包括:信息获取模块,用于获取任务流程中的多个任务信息;

判断模块,用于判断多个任务信息之间的顺序关系;

模型建立模块,用于根据多个任务信息之间的顺序关系,结合JSON格式,建立流程模型;

描述模块,用于利用流程模型对任务流程进行描述。

6.如权利要求5所述的装置,其特征在于,JSON格式包括:对象格式和数组格式;

模型建立模块进一步用于:

判断多个任务信息之间是否存在顺序关系,根据判断结果,利用对象格式和数组格式描述任务流程中的串行结构和并行结构,建立流程模型。

7.如权利要求6所述的装置,其特征在于,模型建立模块进一步用于:若判断结果为多个任务信息之间存在顺序关系,则根据数组格式描述任务流程中的串行结构;

否则,根据对象格式描述任务流程中的并行结构。

8.如权利要求5所述的装置,其特征在于,还包括:回滚模块,用于遍历流程模型,判断流程模型中是否存在事务流程,如果存在,则在事务流程中的流程节点遍历失败时,对事务流程进行回滚处理。

9.一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其特征在于,所述处理器执行所述计算机程序时实现权利要求1至4任一所述方法。

10.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质存储有执行权利要求1至4任一所述方法的计算机程序。

说明书 :

基于JSON格式的流程描述方法及装置

技术领域

[0001] 本发明涉及计算机技术领域,尤其涉及一种基于JSON格式的流程描述方法及装置。

背景技术

[0002] 流程处理是软件开发中的一种常见模式,在现有技术中,一般通过业务流程建模与标注(Business Process Modeling Notation,简称BPMN)对流程进行描述,但是BPMN的
规则比较复杂,主要用于比较复杂的工作场景。对于一些简单的工作场景,这样的方法会降
低工作效率,增加作业成本。举例来说,附图5提供了一种用BPMN表示的任务流程图,如附图
5所示,该任务流程具体为:先执行任务A,再执行任务B和任务C,最后执行任务D,其中,任务
B和任务C为并行任务。可以看出,此附图中共涉及4个节点,6条连接线和2个并行网关,对任
务流程描述的较为复杂。

发明内容

[0003] 本发明实施例提供一种基于JSON格式的流程描述方法,用以在保证任务流程描述清楚的前提下,对任务流程的描述进行简化,提高工作效率,降低作业成本,该方法包括:
[0004] 获取任务流程中的多个任务信息;
[0005] 判断多个任务信息之间的顺序关系;
[0006] 根据多个任务信息之间的顺序关系,结合JSON格式,建立流程模型;
[0007] 利用流程模型对任务流程进行描述。
[0008] 可选的,JSON格式包括:对象格式和数组格式;
[0009] 根据多个任务信息之间的顺序关系,结合JSON格式,建立流程模型,包括:
[0010] 判断多个任务信息之间是否存在顺序关系,根据判断结果,利用对象格式和数组格式描述任务流程中的串行结构和并行结构,建立流程模型。
[0011] 可选的,根据判断结果,利用对象格式和数组格式描述任务流程中的串行结构和并行结构,包括:
[0012] 若判断结果为多个任务信息之间存在顺序关系,则根据数组格式描述任务流程中的串行结构;
[0013] 否则,根据对象格式描述任务流程中的并行结构。
[0014] 可选的,所述方法还包括:
[0015] 遍历流程模型,判断流程模型中是否存在事务流程,如果存在,则在事务流程中的流程节点遍历失败时,对事务流程进行回滚处理。
[0016] 本发明实施例还提供一种基于JSON格式的流程描述装置,用以在保证任务流程描述清楚的前提下,对任务流程的描述进行简化,提高工作效率,降低作业成本,该装置包括:
[0017] 信息获取模块,用于获取任务流程中的多个任务信息;
[0018] 判断模块,用于判断多个任务信息之间的顺序关系;
[0019] 模型建立模块,用于根据多个任务信息之间的顺序关系,结合JSON格式,建立流程模型;
[0020] 描述模块,用于利用流程模型对任务流程进行描述。
[0021] 可选的,JSON格式包括:对象格式和数组格式;
[0022] 模型建立模块进一步用于:
[0023] 判断多个任务信息之间是否存在顺序关系,根据判断结果,利用对象格式和数组格式描述任务流程中的串行结构和并行结构,建立流程模型。
[0024] 可选的,模型建立模块进一步用于:
[0025] 若判断结果为多个任务信息之间存在顺序关系,则根据数组格式描述任务流程中的串行结构;
[0026] 否则,根据对象格式描述任务流程中的并行结构。
[0027] 可选的,所述装置还包括:
[0028] 回滚模块,用于遍历流程模型,判断流程模型中是否存在事务流程,如果存在,则在事务流程中的流程节点遍历失败时,对事务流程进行回滚处理。
[0029] 本发明实施例还提供一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现上述方法。
[0030] 本发明实施例还提供一种计算机可读存储介质,所述计算机可读存储介质存储有执行上述方法的计算机程序。
[0031] 本发明实施例中,通过获取任务流程中的多个任务信息,获取任务流程中的多个任务信息,再根据多个任务信息之间的顺序关系,结合JSON格式,建立流程模型,利用流程
模型对任务流程进行描述,在保证任务流程描述清楚的前提下,对任务流程的描述进行了
简化,提高了工作效率,降低了作业成本。

附图说明

[0032] 为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本
发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以
根据这些附图获得其他的附图。在附图中:
[0033] 图1为本发明实施例中基于JSON格式的流程描述方法的流程图;
[0034] 图2为本发明实施例中基于JSON格式的流程描述方法的另一流程图;
[0035] 图3为本发明实施例中基于JSON格式的流程描述装置的结构示意图;
[0036] 图4为本发明实施例中基于JSON格式的流程描述装置的另一结构示意图;
[0037] 图5为现有技术的任务流程示例图;
[0038] 图6为相比于图5,使用本发明实施例提供的基于JSON格式的流程描述方法后的任务流程示例图;
[0039] 图7为本发明实施例中分支流程的具体示例图;
[0040] 图8为本发明实施例中基于JSON格式的流程描述方法的具体事例图。

具体实施方式

[0041] 为使本发明实施例的目的、技术方案和优点更加清楚明白,下面结合附图对本发明实施例做进一步详细说明。在此,本发明的示意性实施例及其说明用于解释本发明,但并
不作为对本发明的限定。
[0042] 需要说明的是,Java Script Object Notation,简称JSON,是现代软件开发中一种常见的文本,独立于语言的轻量级数据交换格式,可以表示各类复杂的数据类型。
[0043] 附图1为本发明实施例提供的基于JSON格式的流程描述方法的流程图,如附图1所示,该方法包括:
[0044] 步骤101、获取任务流程中的多个任务信息。
[0045] 步骤102、判断多个任务信息之间的顺序关系。
[0046] 步骤103、根据多个任务信息之间的顺序关系,结合JSON格式,建立流程模型。
[0047] 在本实施例中,JSON格式包括:对象格式和数组格式;
[0048] 根据多个任务信息之间的顺序关系,结合JSON格式,建立流程模型,包括:
[0049] 判断多个任务信息之间是否存在顺序关系,根据判断结果,利用对象格式和数组格式描述任务流程中的串行结构和并行结构,建立流程模型。
[0050] 进一步地,根据判断结果,利用对象格式和数组格式描述任务流程中的串行结构和并行结构,包括:
[0051] 若判断结果为多个任务信息之间存在顺序关系,则根据数组格式描述任务流程中的串行结构;
[0052] 否则,根据对象格式描述任务流程中的并行结构。
[0053] 具体实施时,对象格式是使用大括号“{}”括起来的,大括号内是由0个或多个用英文逗号分隔的“关键字:值”对(key:value)构成的,值可以是字符串、对象或者数组。
[0054] 数组格式是用中括号“[]”括起来,中括号内部由0个或多个以英文逗号“,”分隔的值列表组成,值可以是字符串、对象或者数组。
[0055] 正如JSON可以用数组和对象两种格式来描述全部的数据结构,本发明将各种复杂或简单的流程分解为串行结构和并行结构,正好和JSON的两种格式对应。这样使用JSON格
式,可以很好地作为流程描述的数字用户线路(Digital Subscriber Line,简称DSL)。
[0056] 其中,对于串行结构,因为需要保证流程执行的顺序性,可以使用数组表示,利用数组元素的有序性来表示任务的执行顺序,例如[{“task”:{"串行任务A"}},{"task":{"串
行任务B"}}]。
[0057] 对于并行结构,不需要保证任务的执行顺序,而是同时执行,最后需要统一汇合,可以使用JSON的并列对象表示,因为对象本身并不关心顺序,例如,{“task”:{"并行任务
A"},“task”:{"并行任务B"}}。
[0058] 相比于现有技术附图5提供的示例,在使用本发明后的示例图可参见附图6,本发明只需要4个节点,可以节省连线的定义和并行网关的定义(即,现有技术的并行网关等要
显示在最终的流程示意图中,而本发明却不用)。
[0059] 由于JSON结构本身比较简单,使用JSON结构来定义流程,就不需要复杂的流程设计器,只需要通过文本编辑器,编写JSON数据结构,就可以表示出常用的流程定义。
[0060] 步骤104、利用流程模型对任务流程进行描述。
[0061] 由附图1可知,通过获取任务流程中的多个任务信息,获取任务流程中的多个任务信息,再根据多个任务信息之间的顺序关系,结合JSON格式,建立流程模型,利用流程模型
对任务流程进行描述,在保证任务流程描述清楚的前提下,对任务流程的描述进行了简化,
提高了工作效率,降低了作业成本。
[0062] 附图2为本发明实施例提供的基于JSON格式的流程描述方法的另一流程图,如附图2所示,该方法还包括:
[0063] 步骤201、遍历流程模型,判断流程模型中是否存在事务流程,如果存在,则在事务流程中的流程节点遍历失败时,对事务流程进行回滚处理。
[0064] 下面通过多个具体示例对本发明进行说明:
[0065] 对于普通的串行任务,没有事务性要求,以关键字”task”标识。其中,对于串行任务流程,存在任务之间的顺序关系,可以使用JSON的数组格式表示,每个值是一个对象,利
用数组格式的顺序性来表示。例如,{"task":[{"a1":"role1","a2":"role2"]}},代表先执
行动作a1,再执行动作a2。
[0066] 对于普通的并行任务流程,任务之间不存在先后顺序,可以使用JSON的对象格式表示,利用对象的顺序无关性来表示。例如,{"task":{"a1":"role","a2":"role"}},代表
并行执行动作a1和动作a2。
[0067] 对于附图6中的复合流程,可以表示为{"task":[{"a1":"role"},{"a2":"role","a3":"role"},{"a4":"role"}]}(即上述流程模型),代表先执行动作a1,再并行执行动a2和
a3,最后执行任务a4。只需要4个节点(任务)定义,不需要额外描述任务之间的串行和并行
关系。
[0068] 此外,对于一些特殊的任务流程,如分支流程,举例来说:
[0069] 对应switch语句,可以表示为
[0070]
[0071] 其中,switch对象是一个特殊对象,使用swtich关键字,来代表针对条件变量A的分支条件。条件对象A可以是任意定义的变量,根据其不同的取值(A或B),分别对应后续的
不同任务分支。
[0072] 或者对应if-else判断语句,可以表示为
[0073]
[0074] 其中,if对象是一个特殊对象,使用if关键字,来表示针对表达式的分支条件。如果表达式A成立,则执行后续的分支任务A,如果表达式B成立,则执行后续的分支任务B。
[0075] 附图7为分支流程的具体示例图,该附图7的分支流程表示如下:
[0076]
[0077] 使用以上3类对象,已经可以覆盖我们应用中的绝大多数场景。同时,还支持task对象的嵌套以及特殊对象的扩展。例如,对于少量场景,需要考虑条件变量的转换和计算,
可以引入赋值对象。
[0078] {"map":{"变量1":"表达式1"}
[0079] Map作为关键字,代表一个赋值逻辑,根据表达式1的结果赋值给变量1。
[0080] 对于一些特殊的场景,例如开通,有事务性的要求。在一个事务流程内,如果出现动作执行失败,要求可以自动实现流程回退。这种情况,可以通过事务单元来表示,以”
tran”关键字标识。
[0081] 和普通任务类似,串行事务流程可以表示为{"tran":[{"a1":"role","a2":"role"]},并行事务流程可以表示为{"tran":{"a1":"role","a2":"role"}}。
[0082] 对于特别复杂的场景,可能存在多个事务单元,或者事务流程和普通流程混合的情况。这是可以通过组合流程来表示,用”process”关键字标识。例如,{"process":["p2","
p3"]},表示由2个子流程串行组合,其中p2,p3可以是前面定义的普通任务流程,也可以是
事务单元。
[0083] 综上所述,使用基于JSON格式的表示法,能够简单紧凑地描述通用的流程,并且具有一定的语义扩展能力。使用JSON格式来描述的流程定义,更简单,更易于编写。完全可以
不借助复杂的流程定义工具,直接使用简单的文本编辑器进行定义。
[0084] 在流程执行阶段,需要解析设计过程生成的流程模型,并执行对应的动作。
[0085] 如果采用现有技术的BPMN来描述流程,因为存在点和线的复杂关系,那么需要自行实现图的广度优先遍历算法。而使用JSON格式表示,由于JSON本质是是一个程序对象结
构,无需特殊的算法支持,天然支持遍历。
[0086] 各种语言都支持对JSON对象的加载和解析,通过对JSON流程对象的递归遍历,就可以实现设计流程的执行。
[0087] 如果JSON对象为数组结构,则按数组顺序顺序解析值对象。
[0088] 如果JSON对象为并列对象,则使用多线程或者协程技术并行解析子对象。
[0089] 如果JSON对象只包含单个子对象,且子对象key为”task”,则通过反射方式执行对象value所对应的函数。例如:[{"动作A":{}},{"动作B":{},"动作C":{}},{"动作D":{}}],
其可以转化为:
[0090] 执行动作A();
[0091] 并行执行动作B(),动作C()
[0092] 等待动作B(),动作C()执行完成
[0093] 执行动作D()。
[0094] 如果JSON对象为单个子对象,且子对象key为”switch”,则代表一个switch形式的分支判断,孙对象的key为条件变量,根据反射方式计算条件变量的值,可以确定对应的函
数。例如:
[0095]
[0096] 可以转化为:
[0097] Switch(条件变量A){
[0098] Case“值A”:动作A();
[0099] Case“值B”:动作B();
[0100] }。
[0101] 如果JSON对象为单个子对象,且子对象key为”if”,则代表一个if-else形式的分支判断,孙对象的key为条件表达式,根据反射方式计算表达式的值,可以确定对应的函数
(对应孙对象的value)。例如:
[0102]
[0103] 转化为:
[0104] If(表达式A==true){动作A()}
[0105] Else if(表达式B==true){动作B()}。
[0106] 如果JSON对象为单个子对象,且子对象key为”map”,则代表一个赋值计算表达式,孙对象的key为变量名,孙对象的值为表达式。使用反射方式,可以计算表达式的值,并赋值
给变量。例如:{"map":{"a":"b+c"},转化为赋值语句a=b+c。
[0107] 如果JSON对象为组合流程,则递归执行以上操作。
[0108] 综上所述,流程的解析过程基本就是JSON对象的遍历过程,而且利用对象反射极致,在流程解析的同时,就可以同时实现对流程的执行,而不需要加载到内存后再次进行内
存对象到执行过程的转换,提高了流程解析执行的效率。
[0109] 对于配置开通类场景,还有一个很重要的需求就是支持回退,即流程的逆向执行。这个是一般的流程引擎都不具备的功能。如果使用BPMN工具,需要另外定义一套回滚的流
程。,而对于本发明来说,就不存在这一问题。
[0110] 在定义流程的时候,需要执行回滚操作的流程需要用事务单元关键字”tran”标识。逆向流程可以使用和正向流程同样的定义方式,无需单独定义。我们约定函数A对应的
逆向回滚函数固定命名为函数A_rev。
[0111] 在执行逆向的流程的时候,和正向执行相似,仍然是对流程定义JSON对象进行遍历,如果是并列对象,则并行执行流程定义的函数的回滚函数,如果是数组,则逆序执行流
程函数对应的回滚函数。
[0112] 分支逻辑的处理和正向流程相同。
[0113] 赋值逻辑在回滚操作中没有实际意义,可以跳过。
[0114] 这样,使用同一套流程定义,流程引擎既可以支持正向流程,也可以支持逆向流程,具体可参见附图8。
[0115] 基于同一发明构思,本发明实施例中还提供了一种基于JSON格式的流程描述装置,如下面的实施例所述。由于基于JSON格式的流程描述装置解决问题的原理与基于JSON
格式的流程描述方法相似,因此,基于JSON格式的流程描述装置的实施可以参见基于JSON
格式的流程描述方法的实施,重复之处不再赘述。以下所使用的,术语“单元”或者“模块”可
以实现预定功能的软件和/或硬件的组合。尽管以下实施例所描述的装置较佳地以软件来
实现,但是硬件,或者软件和硬件的组合的实现也是可能并被构想的。
[0116] 附图3为本发明实施例提供的基于JSON格式的流程描述装置的结构示意图,如附图3所示,该装置包括:
[0117] 信息获取模块301,用于获取任务流程中的多个任务信息。
[0118] 判断模块302,用于判断多个任务信息之间的顺序关系。
[0119] 模型建立模块303,用于根据多个任务信息之间的顺序关系,结合JSON格式,建立流程模型。
[0120] 描述模块304,用于利用流程模型对任务流程进行描述。
[0121] 在本发明实施例中,JSON格式包括:对象格式和数组格式;
[0122] 模型建立模块303进一步用于:
[0123] 判断多个任务信息之间是否存在顺序关系,根据判断结果,利用对象格式和数组格式描述任务流程中的串行结构和并行结构,建立流程模型。
[0124] 在本发明实施例中,模型建立模块303进一步用于:
[0125] 若判断结果为多个任务信息之间存在顺序关系,则根据数组格式描述任务流程中的串行结构;
[0126] 否则,根据对象格式描述任务流程中的并行结构。
[0127] 附图4为本发明实施例提供的基于JSON格式的流程描述装置的另一结构示意图,如附图4所示,该装置还包括:
[0128] 回滚模块401,用于遍历流程模型,判断流程模型中是否存在事务流程,如果存在,则在事务流程中的流程节点遍历失败时,对事务流程进行回滚处理。
[0129] 本发明实施例还提供了一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现上述方法。
[0130] 本发明实施例还提供了一种计算机可读存储介质,所述计算机可读存储介质存储有执行上述方法的计算机程序。
[0131] 本领域内的技术人员应明白,本发明的实施例可提供为方法、系统、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实
施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机
可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产
品的形式。
[0132] 本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流
程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序
指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产
生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实
现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
[0133] 这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指
令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或
多个方框中指定的功能。
[0134] 这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或
其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一
个方框或多个方框中指定的功能的步骤。
[0135] 以上所述的具体实施例,对本发明的目的、技术方案和有益效果进行了进一步详细说明,所应理解的是,以上所述仅为本发明的具体实施例而已,并不用于限定本发明的保
护范围,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本
发明的保护范围之内。