1.本发明涉及互联网技术领域,尤其涉及一种流程处理方法和装置。
背景技术:2.业务系统中可能会有这样的需求,针对不同租户执行不同的业务逻辑,如果这个业务逻辑比较复杂且彼此间没有依赖性,那么可以尝试把复杂逻辑拆分为小的独立逻辑,然后组成一个串行的逻辑链,这里的独立逻辑可视为流程节点,整个业务逻辑视为一个流程。尤其当逻辑与角色强关联时,更要考虑是否可拆为流程节点。
3.目前常见做法是编写if/else代码,或者封装成一些共通类,不同租户下编写实现类继承共通类实现不同的逻辑。在实现本发明的过程中,发明人发现这些现有方式不够灵活,如果增加/删除流程节点或增加租户,必须改动代码才能实现。
技术实现要素:4.有鉴于此,本发明实施例提供一种流程处理方法和装置,至少能够解决现有技术中改变流程节点或租户时需改动代码的现象。
5.为实现上述目的,根据本发明实施例的一个方面,提供了一种流程处理方法,包括:
6.目标流程中的第一流程节点利用监听器,监听与所述第一流程节点关联的待办事项事件;
7.在监听到所述待办事项事件后,对所述待办事项事件做逻辑处理,根据处理结果确定流程走向;
8.从所述目标流程的执行关系文件中,查找与所述流程走向对应的第二流程节点,发布针对所述第二流程节点的代办事项事件。
9.可选的,所述从所述目标流程的执行关系文件中,查找与所述流程走向对应的第二流程节点,包括:
10.若所述流程走向为向下,则从所述执行关系文件中,查找位于第一流程节点之后的下一流程节点;或
11.若所述流程走向为向上,则从所述执行关系文件中,查找位于所述第一流程节点之前的上一流程节点。
12.可选的,还包括:
13.若不存在下一流程节点,则确定所述目标流程创建完毕;或
14.若不存在上一流程节点,则弹出提示信息。
15.可选的,所述根据处理结果确定流程走向,包括:
16.创建代办任务,结合所述处理结果一同传输至所述第一流程节点的操作人员,以接收所述操作人员返回的流程走向。
17.可选的,执行关系包括上一流程节点、当前流程节点和下一流程节点的先后执行
关系;
18.在所述目标流程中的第一流程节点利用监听器,监听与所述第一流程节点关联的待办事项事件之前,还包括:
19.将所述目标流程拆分为多个流程节点,接收对各流程节点之间执行关系的配置操作,并将配置的执行关系存储在所述执行关系文件中。
20.可选的,还包括:添加至少一个流程节点至所述目标流程中;
21.接收对所述至少一个流程节点和其他流程节点之间执行关系的配置操作;以及
22.对所述至少一个流程节点中的每个流程节点,均配置一个监听器。
23.可选的,在所述目标流程中的第一流程节点利用监听器,监听与所述第一流程节点关联的待办事项事件之前,还包括:
24.响应于对所述目标流程的发起操作,从所述执行关系文件中查找排序第一的第一流程节点,发布针对所述第一流程节点的待办事项事件。
25.为实现上述目的,根据本发明实施例的另一方面,提供了一种流程处理装置,包括:
26.监听模块,用于目标流程中的第一流程节点利用监听器,监听与所述第一流程节点关联的待办事项事件;
27.处理模块,用于在监听到所述待办事项事件后,对所述待办事项事件做逻辑处理,根据处理结果确定流程走向;
28.流转模块,用于从所述目标流程的执行关系文件中,查找与所述流程走向对应的第二流程节点,发布针对所述第二流程节点的代办事项事件。
29.可选的,所述流转模块,用于:若所述流程走向为向下,则从所述执行关系文件中,查找位于第一流程节点之后的下一流程节点;或
30.若所述流程走向为向上,则从所述执行关系文件中,查找位于所述第一流程节点之前的上一流程节点。
31.可选的,所述流转模块,还用于:
32.若不存在下一流程节点,则确定所述目标流程创建完毕;或
33.若不存在上一流程节点,则弹出提示信息。
34.可选的,所述处理模块,用于:创建代办任务,结合所述处理结果一同传输至所述第一流程节点的操作人员,以接收所述操作人员返回的流程走向。
35.可选的,执行关系包括上一流程节点、当前流程节点和下一流程节点的先后执行关系;
36.还包括配置模块,用于:
37.将所述目标流程拆分为多个流程节点,接收对各流程节点之间执行关系的配置操作,并将配置的执行关系存储在所述执行关系文件中。
38.可选的,所述配置模块,还用于:
39.添加至少一个流程节点至所述目标流程中;
40.接收对所述至少一个流程节点和其他流程节点之间执行关系的配置操作;以及
41.对所述至少一个流程节点中的每个流程节点,均配置一个监听器。
42.可选的,还包括流程发起模块,用于:
43.响应于对所述目标流程的发起操作,从所述执行关系文件中查找排序第一的第一
流程节点,发布针对所述第一流程节点的待办事项事件。
44.为实现上述目的,根据本发明实施例的再一方面,提供了一种流程处理电子设备。
45.本发明实施例的电子设备包括:一个或多个处理器;存储装置,用于存储一个或多个程序,当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现上述任一所述的流程处理方法。
46.为实现上述目的,根据本发明实施例的再一方面,提供了一种计算机可读介质,其上存储有计算机程序,所述程序被处理器执行时实现上述任一所述的流程处理方法。
47.根据本发明所述提供的方案,上述发明中的一个实施例具有如下优点或有益效果:利用待办事项事件和监听器,实现不同流程节点之间的流转逻辑,加上配置的执行关系,使得整个流程串联起来,通过配置即可实现不同租户下的流程变化,具备灵活性和时效性。
48.上述的非惯用的可选方式所具有的进一步效果将在下文中结合具体实施方式加以说明。
附图说明
49.附图用于更好地理解本发明,不构成对本发明的不当限定。其中:
50.图1是根据本发明实施例的一种流程处理方法的主要流程示意图;
51.图2是将流程x拆分为多个流程节点的示意图;
52.图3是根据本发明实施例的一种可选的流程处理方法的流程示意图;
53.图4是根据本发明实施例的一种流程处理装置的主要模块示意图;
54.图5是本发明实施例可以应用于其中的示例性系统架构图;
55.图6是适于用来实现本发明实施例的移动设备或服务器的计算机系统的结构示意图。
具体实施方式
56.以下结合附图对本发明的示范性实施例做出说明,其中包括本发明实施例的各种细节以助于理解,应当将它们认为仅仅是示范性的。因此,本领域普通技术人员应当认识到,可以对这里描述的实施例做出各种改变和修改,而不会背离本发明的范围和精神。同样,为了清楚和简明,以下的描述中省略了对公知功能和结构的描述。
57.参见图1,示出的是本发明实施例提供的一种流程处理方法的主要流程图,包括如下步骤:
58.s101:目标流程中的第一流程节点利用监听器,监听与所述第一流程节点关联的待办事项事件;
59.s102:在监听到所述待办事项事件后,对所述待办事项事件做逻辑处理,根据处理结果确定流程走向;
60.s103:从所述目标流程的执行关系文件中,查找与所述流程走向对应的第二流程节点,发布针对所述第二流程节点的代办事项事件。
61.上述实施方式中,对于步骤s101,通过人为操作,将一个目标流程拆分为多个流程节点,比如对应租户x的流程如下,创建单据、a岗处理、a岗处理完毕后b岗处理、b岗处理完成后流程结束。b岗处理时可以回退到a岗再处理,a岗也可以回退再次发起,具体参见图2所
示,后续以此图为例进行说明。
62.在可视化界面上配置各流程节点之间的执行先后关系,点击任一流程节点,可以设置该流程节点以及前后流程节点code(表示计算机程序源代码或者其他机器可以阅读的文本内容上使用<code>标签)。
63.上述配置信息会保存到目标流程的执行关系文件xml中,具体内容如下所示:
64.<?xml version="1.0"encoding="utf
‑
8"standalone="yes"?><process name="xflow"des="x租户下流程">
65.<node status="create"prev=""next="atodonode"desc="创建流程,下一节点为a岗处理"/>
66.<node status="a_todo"prev="arejectnode"next="btodonode"desc="a岗处理的下一节点为b岗处理,上一节点为a岗驳回"/>
67.<node status="b_todo"prev="atodonode"next="finishnode"desc="b岗处理下一节点为结束节点,上一节点为a岗处理节点"/>
68.<node status="a_reject"prev=""next="atodonode"desc="a岗驳回后,重新发起流程,下一节点为a岗处理"/>
69.</process>
70.因此,通过将流程节点逻辑抽取出来,覆盖流程全部情况。若目标流程中删除/更改一个或多个流程节点,无需修改代码,只需通过配置xml文件即可实现。但若目标流程需要增加新的流程节点,需要将该新流程节点的代码添加到流程中,更新执行关系,并增设监听器实现。
71.为每个流程节点分别配置一个监听器listener,以监听所处流程节点的事件event,且处理逻辑放在各自监听器中进行。例如,目标流程发起时会从该目标流程的xml文件中找到第一个流程节点atodonode,发布atodoevent事件(通常使用todo来标记待办事项)。a岗事件atodoevent.java对应的编码示例如下:
[0072][0073]
另外,不同租户使用的流程可能不同,但如果不同流程节点的处理逻辑相同,是可以共用一个监听器的,以此减少代码量。目前主要利用springboot中的applicationevent和applicationlistener实现上述发送事件和监听器,当然也可以采用其他方式封装实现。
[0074]
对于步骤s102,atodonode的监听器atodolistener会监听atodoevent事件,收到后做逻辑处理以及生成a岗代办任务。
[0075]
a岗监听器atodolistener.java对应的编码为:
[0076][0077]
目前主要通过人为决定当前流程节点是通过还是拒绝,即决定流程走向是向上还是向下。因而代办任务的生成是必要的,若不生成,就无法通过操作人员触发下一流程节点,除非是满足了一定条件,跳过执行到“下下个流程节点”。
[0078]
除此之外,还可以通过自动化的方式控制流程走向,如在a岗处理完毕后,将处理结果与预期结果进行比对,或者判断处理结果是否为“error”、“null”、“错误”等,若为这些结果,则确定流程走向为向上(或逆向),否则为向下。
[0079]
对于步骤s103,在确定流程走向后,即可从目标流程的xml文件中,查找符合该流程走向的上一流程节点或下一流程节点,具体参见图3所示。
[0080]
1)流程走向为向下
[0081]
判断是否存在下一流程节点,若不存在,则表示目标流程创建完毕,结束流程,否则确定下一流程节点,发布针对该下一流程节点的代办事项事件。
[0082]
2)流程走向为向上
[0083]
判断是否存在上一流程节点,若不存在,则表示需要重新发起流程,弹出提示信息进行提醒,否则确定上一流程节点,发布针对该上一流程节点的代办事项事件。
[0084]
在目标流程的xml文件中,通过当前节点找前后节点的代码示例如下,通常需根据节点名称查找流程节点:
[0085][0086]
根据当前流程节点和流程走向【prev】【next】查找下一流程节点名称,根据名称找到事件类,调用springboot底层发布出去,此处封装为共通方法:
[0087][0088]
[0089]
如a岗处理人点开待办任务,查看处理结果,根据经验判断流程走向,比如往下一流程节点流转,从目标流程的xml文件中找到下一流程节点btodonode,发布btodoevent,btodonode的监听器btodolistener监听到该事件并创建b岗待办任务。往上一流程节点流转则发布arejectevent,arejectlistener会监听该事件更改状态等,如修改单据状态为拒绝,其他节点同理。
[0090]
需要说明的是,对于a岗驳回arejectevent,单据并未废除,可由a岗操作人员进入另一个菜单找到相应数据进行修改后继续处理。
[0091]
本发明实施例所提供的方法,利用待办事项事件和监听器,实现不同流程节点之间的流转逻辑,加上配置的执行关系,使得整个流程串联起来,通过配置即可实现不同租户下的流程变化,具备灵活性和时效性。
[0092]
参见图4,示出了本发明实施例提供的一种流程处理装置400的主要模块示意图,包括:
[0093]
监听模块401,用于目标流程中的第一流程节点利用监听器,监听与所述第一流程节点关联的待办事项事件;
[0094]
处理模块402,用于在监听到所述待办事项事件后,对所述待办事项事件做逻辑处理,根据处理结果确定流程走向;
[0095]
流转模块403,用于从所述目标流程的执行关系文件中,查找与所述流程走向对应的第二流程节点,发布针对所述第二流程节点的代办事项事件。
[0096]
本发明实施装置中,所述流转模块403,用于:
[0097]
若所述流程走向为向下,则从所述执行关系文件中,查找位于第一流程节点之后的下一流程节点;或
[0098]
若所述流程走向为向上,则从所述执行关系文件中,查找位于所述第一流程节点之前的上一流程节点。
[0099]
本发明实施装置中,所述流转模块403,还用于:
[0100]
若不存在下一流程节点,则确定所述目标流程创建完毕;或
[0101]
若不存在上一流程节点,则弹出提示信息。
[0102]
本发明实施装置中,所述处理模块402,用于:
[0103]
创建代办任务,结合所述处理结果一同传输至所述第一流程节点的操作人员,以接收所述操作人员返回的流程走向。
[0104]
本发明实施装置中,执行关系包括上一流程节点、当前流程节点和下一流程节点的先后执行关系;
[0105]
还包括配置模块,用于:
[0106]
将所述目标流程拆分为多个流程节点,接收对各流程节点之间执行关系的配置操作,并将配置的执行关系存储在所述执行关系文件中。
[0107]
本发明实施装置中,所述配置模块,还用于:
[0108]
添加至少一个流程节点至所述目标流程中;
[0109]
接收对所述至少一个流程节点和其他流程节点之间执行关系的配置操作;以及
[0110]
对所述至少一个流程节点中的每个流程节点,均配置一个监听器。
[0111]
本发明实施装置还包括流程发起模块,用于:
[0112]
响应于对所述目标流程的发起操作,从所述执行关系文件中查找排序第一的第一流程节点,发布针对所述第一流程节点的待办事项事件。
[0113]
另外,在本发明实施例中所述装置的具体实施内容,在上面所述方法中已经详细说明了,故在此重复内容不再说明。
[0114]
图5示出了可以应用本发明实施例的示例性系统架构500,包括终端设备501、502、503,网络504和服务器505(仅仅是示例)。
[0115]
终端设备501、502、503可以是具有显示屏并且支持网页浏览的各种电子设备,安装有各种通讯客户端应用,用户可以使用终端设备501、502、503通过网络504与服务器505交互,以接收或发送消息等。
[0116]
网络504用以在终端设备501、502、503和服务器505之间提供通信链路的介质。网络504可以包括各种连接类型,例如有线、无线通信链路或者光纤电缆等等。
[0117]
服务器505可以是提供各种服务的服务器,用于执行利用监听器,监听与所述第一流程节点关联的待办事项事件;在监听到所述待办事项事件后,对所述待办事项事件做逻辑处理,根据处理结果确定流程走向;从所述目标流程的执行关系文件中,查找与所述流程走向对应的第二流程节点,发布针对所述第二流程节点的代办事项事件操作。
[0118]
需要说明的是,本发明实施例所提供的方法一般由服务器505执行,相应地,装置一般设置于服务器505中。
[0119]
应该理解,图5中的终端设备、网络和服务器的数目仅仅是示意性的。根据实现需要,可以具有任意数目的终端设备、网络和服务器。
[0120]
下面参考图6,其示出了适于用来实现本发明实施例的终端设备的计算机系统600的结构示意图。图6示出的终端设备仅仅是一个示例,不应对本发明实施例的功能和使用范围带来任何限制。
[0121]
如图6所示,计算机系统600包括中央处理单元(cpu)601,其可以根据存储在只读存储器(rom)602中的程序或者从存储部分608加载到随机访问存储器(ram)603中的程序而执行各种适当的动作和处理。在ram 603中,还存储有系统600操作所需的各种程序和数据。cpu 601、rom 602以及ram 603通过总线604彼此相连。输入/输出(i/o)接口605也连接至总线604。
[0122]
以下部件连接至i/o接口605:包括键盘、鼠标等的输入部分606;包括诸如阴极射线管(crt)、液晶显示器(lcd)等以及扬声器等的输出部分607;包括硬盘等的存储部分608;以及包括诸如lan卡、调制解调器等的网络接口卡的通信部分609。通信部分609经由诸如因特网的网络执行通信处理。驱动器610也根据需要连接至i/o接口605。可拆卸介质611,诸如磁盘、光盘、磁光盘、半导体存储器等等,根据需要安装在驱动器610上,以便于从其上读出的计算机程序根据需要被安装入存储部分608。
[0123]
特别地,根据本发明公开的实施例,上文参考流程图描述的过程可以被实现为计算机软件程序。例如,本发明公开的实施例包括一种计算机程序产品,其包括承载在计算机可读介质上的计算机程序,该计算机程序包含用于执行流程图所示的方法的程序代码。在这样的实施例中,该计算机程序可以通过通信部分609从网络上被下载和安装,和/或从可拆卸介质611被安装。在该计算机程序被中央处理单元(cpu)601执行时,执行本发明的系统中限定的上述功能。
[0124]
需要说明的是,本发明所示的计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质或者是上述两者的任意组合。计算机可读存储介质例如可以是——但不限于——电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子可以包括但不限于:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机访问存储器(ram)、只读存储器(rom)、可擦式可编程只读存储器(eprom或闪存)、光纤、便携式紧凑磁盘只读存储器(cd
‑
rom)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本发明中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。而在本发明中,计算机可读的信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。计算机可读的信号介质还可以是计算机可读存储介质以外的任何计算机可读介质,该计算机可读介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括但不限于:无线、电线、光缆、rf等等,或者上述的任意合适的组合。
[0125]
附图中的流程图和框图,图示了按照本发明各种实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段、或代码的一部分,上述模块、程序段、或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个接连地表示的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图或流程图中的每个方框、以及框图或流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
[0126]
描述于本发明实施例中所涉及到的模块可以通过软件的方式实现,也可以通过硬件的方式来实现。所描述的模块也可以设置在处理器中,例如,可以描述为:一种处理器包括监听模块、处理模块、流转模块。其中,这些模块的名称在某种情况下并不构成对该模块本身的限定,例如,流转模块还可以被描述为“节点流转模块”。
[0127]
作为另一方面,本发明还提供了一种计算机可读介质,该计算机可读介质可以是上述实施例中描述的设备中所包含的;也可以是单独存在,而未装配入该设备中。上述计算机可读介质承载有一个或者多个程序,当上述一个或者多个程序被一个该设备执行时,使得该设备包括:
[0128]
目标流程中的第一流程节点利用监听器,监听与所述第一流程节点关联的待办事项事件;
[0129]
在监听到所述待办事项事件后,对所述待办事项事件做逻辑处理,根据处理结果确定流程走向;
[0130]
从所述目标流程的执行关系文件中,查找与所述流程走向对应的第二流程节点,发布针对所述第二流程节点的代办事项事件。
[0131]
根据本发明实施例的技术方案,利用待办事项事件和监听器,实现不同流程节点
之间的流转逻辑,加上配置的执行关系,使得整个流程串联起来,通过配置即可实现不同租户下的流程变化,具备灵活性和时效性。
[0132]
上述具体实施方式,并不构成对本发明保护范围的限制。本领域技术人员应该明白的是,取决于设计要求和其他因素,可以发生各种各样的修改、组合、子组合和替代。任何在本发明的精神和原则之内所作的修改、等同替换和改进等,均应包含在本发明保护范围之内。