一种工作流程中的事件扩展的方法、系统、设备、介质
文献发布时间:2023-06-19 11:39:06
技术领域
本发明涉及计算机应用技术,具体地说是一种工作流程中的事件扩展的方法、系统、设备、介质。
背景技术
在常见的流程式办公系统中,在审批节点审批单据时,由于不同的公司的营业客户不同,因此在审批节点的前后,用户经常会提出一些定制化需求。例如在审批前需要对单据中的某些值进行校验;或者用户编辑了表单,需要在审批前主动触发表单的保存操作;或者是用户在审批完成后需要向特定的处理人员或客户发送邮件或者短信提醒。当审批的事项过多时,往往要手动发出且指向不同类型的消息接受人,造成时间的浪费,效率的降低。诸如上述的需求多种多样,而且根据业务的变化随之改变。
然而,现有的流程式办公系统,对上述提出的需求进行重复开发往往有很大难度,其原因有很多。由于现有的流程式办公系统都是将多个功能模块集成为一个整体系统,对某个模块进行更改时往往牵扯很到很多的模块的变化,或者说是各个流程节点在整体上的耦合度太高。在系统开发完成交付后,开发团队转向别的开发任务,没时间处理相关的自定义需求,或者是自定义的需求随着客户的业务发生改变过于频繁,频繁改动导致系统维护性变差;或者是由于开发人员的变更使得代码再维护变得艰难等等。
所以,如何开发出一套可以有效应对多变的用户自定义需求的流程系统,成为本领域技术人员所要解决的一个技术难题。
发明内容
为解决上述问题,本发明提出了一种工作流程中的事件扩展的方法包括以下步骤:
响应于工作流程处于所述事件扩展的审批节点,获取该审批节点的扩展事件的配置信息;
根据所述扩展事件的配置信息获取所述审批节点的可执行文件;
响应于获取到所述审批节点的可执行文件,根据所述配置信息运行所述可执行文件。
在本发明的一些实施方式中,方法还包括:根据运行终端选择不同的编程方式编译所述可执行文件。
在本发明的一些实施方式中,根据运行终端选择不同的编程方式编译所述可执行文件包括:
对运行终端为web前端和/或移动设备前端的扩展事件采用javascript编写所述扩展事件的实现方法并进行编译;以及
对运行终端为web后端及PC、移动设备的扩展事件采用Java、Python、C++、R、或Golang编程语言编写所述扩展事件的实现方法并进行编译。
在本发明的一些实施方式中,进行编译包括:
对采用javascript实现的所述事件扩展方法的编译,采用rollup打包方式生成符合SystemJS规范的javascript可执行文件;
对采用所述Java、Python、C++、R、或Golang编程语言实现的所述事件扩展方法的编译,选择编译后文件体积最小的编译方式。
在本发明的一些实施方式中,审批节点在审批前后的扩展事件为多个。
在本发明的一些实施方式中,根据所述配置信息运行所述可执行文件包括:顺序执行多个扩展事件。
在本发明的一些实施方式中,根据所述配置信息运行所述可执行文件包括:同步执行多个扩展事件。
本发明的另一方面还提出了一种工作流程中的事件扩展的系统,包括:
配置信息获取模块,配置用于响应于工作流程处于所述事件扩展的审批节点,获取该审批节点的扩展事件的配置信息;
可执行文件获取模块,配置用于根据所述扩展事件的配置信息获取所述审批节点的可执行文件;
扩展事件执行模块,配置用于响应于获取到所述审批节点的可执行文件,根据所述配置信息的运行所述可执行文件。
本发明又一方面还提出了一种计算机设备,包括:
至少一个处理器;以及
存储器,所述存储器存储有可在所述处理器上运行的计算机指令,所述指令由所述处理器执行时实现如上方法的步骤。
本发明的再一方面还提出了一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,所述计算机程序被处理器执行时实现如上方法的步骤。
通过本发明提供的上述方法及系统,可将用户提出的自定义需求选择合适的编程语言作为实现方式,并编译生成可执行文件。在审批节点的前后按照一定顺序执行相应的可执行文件。在不改变所述系统流程整体结构以及所述系统的其他模块的情况下,将多变的需求的解决方案转换为对应的独立于流程系统的可执行文件来实现用户的自定义需求。相比于现有技术至少具备以下有益效果:降低了与原有流程系统的耦合,减少对原有流程系统的依赖,进而使得扩展事件可以更灵活的运用,使得对流程系统功能的添加或者升级时,可以在不改变流程系统结构的前提下实现功能的扩展;同时,对一些无用的功能的扩展事件的修改或删除,不影响流程系统的运行的稳定性。此外,根据任务场景的不同,采用不同的编程语言的作为扩展事件的实现方式,可充分利用不同编程语言的优势,简单、便捷、高效地实现业务需求,更便于开发。
附图说明
为了更清楚地说明本发明实施例或现有技术中的方案,下面将对实施例或现有技术描述中需要使用的附图作简单介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的实施例。
图1为本发明方法的流程图;
图2为本发明方法实施例的审批节点与扩展事件的拓扑结构图;
图3为本发明的工作流程系统的结构图;
图4为本发明的一种计算机设备结构图;
图5为本发明的一种计算机可读存储介质示意图;
图6为本发明的实施例的方法的流程图;
图7为本发明的实施例的方法的流程图;
图8为本发明的一个实施例的详细配置信息。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚明白,以下结合具体实施例,并参照附图,对本发明实施例进一步详细说明。
如图1所示,本发明实施例的一方面提出了一种工作流程中的事件扩展的方法,包括以下步骤:
S1、响应于工作流程处于所述事件扩展的审批节点,获取该审批节点的扩展事件的配置信息;
S2、根据所述扩展事件的配置信息获取所述审批节点的可执行文件;
S3、响应于获取到所述审批节点的可执行文件,根据所述配置信息运行所述可执行文件。
在步骤S1中,在基于本发明方法实现的办公流程系统中,在一些审批流程节点前后,流程系统读取当前审批节点的前事件的配置信息,如图8所示,从配置信息中找到该扩展事件的ID、事件任务分类ID、事件执行状态、执行终端类型、事件顺序、事件可执行文件的具体路径、事件扩展类型、以及是否为批量审批事件等信息。其中事件ID对应当前事件唯一标识;任务分类ID表示事件扩展任务分类级别;终端类型表示该事件的执行环境,可以包括web前端(包括手机上的前端)、web后端(web后端指服务器环境)、电脑端以及移动端;事件顺序表示该事件的执行顺序;事件可执行文件的具体路径指向一个在服务端存储的可执行文件的路径;事件执行状态表示该事件是否成功执行;事件扩展类型标志着该事件是审批节点前事件还是审批节点后事件,批量审批事件标志着该事件的执行时处理的任务项数。因此,在步骤S1中主要获取到上述信息,进而为后续的执行做准备。
在步骤S2中,在步骤S1中已经获取到上述的配置信息的情况下,根据配置信息中的事件可执行文件的路径以及根据当前扩展事件的执行终端类型获取当前扩展事件的对应执行终端类型的可执行文件,并将当前扩展事件的对应执行终端的可执行文件发送到对应的终端。在这一过程中,主要由于扩展事件的可执行文件的运行环境不一样,所以将相应的可执行文件发送到对应的执行终端上,比如使用javascript实现的扩展程序其执行的环境是在web前端的浏览器上,或者是在移动端的浏览器环境上执行。当然在服务器上的某些模拟JS运行环境的应用中亦可执行。
在步骤S3中,在步骤S2中已经完成获取可执行文件的情况下,根据不同的终端环境,以不同的调用方式执行相应的可执行文件。
在本发明的一些实施例中,方法还包括:根据运行终端选择不同的编程方式编译所述可执行文件。可执行文件是根据业务需要选择合适的编程方式实现的。
在本实施例中,由于发明的方法是根据配置信息获取对应的可执行文件的执行来实现对流程系统功能的扩展,所以本申请所提出的方法可以使用多种编程语言来编写对应的扩展程序。比如在一些业务场景下,某用户需要对一批报销单据(已录入系统数据库的单据,不同于纸质文件形式)进行审批,公司规定员工在一定时间内报销总额在一定额度范围内的报销单据可直接通过申请,大于上述一定额度报销申请,需要判断具体情况而确认是否给予合理审批。针对上述功能要求可采取前端javascript实现的方式对上述方式进行编程,如图6所示,步骤如下:
S211、通过JS扩展程序向后端服务器发送ajax异步请求获取所有待审批单据数据的请求;
S212、将每个员工报销单总额满足一定额度的数据的审批状态设置为通过,并再通过ajax请求将状态更新到服务端数据库;
S213、将总额度不满足的一定额度的数据传递到原有的前端界面。
在步骤S211中,通常采用AJAX请求向后端发送数据请求,在本实施例中,采用JS(javascript)编写的扩展程序将依据现有流程系统的接口获取当前扩展事件需要处理的数据,而不需对现有流程系统的结构或者功能接口做出改变。
在步骤S212中,通过在步骤S211中获取到的单据数据统计每个员工的申请报销的总额度,判断每一名员工申请报销的总额度是否低于一定额度的申请,若所有单据额度的总和低于一定额度,直接向后端服务器发送审核通过该员工所有的报销单据审批的请求,请求信息包括审核通过的申请报销单据编号以及该单据的审批通过的状态信息标志,这一功能的实现也是依赖现有的流程系统的接口,而不需要对现有的流程系统的接口进行改变。
在步骤S213中,经过步骤S212的处理后,对于总额度高于设定的一定额度后的待审批单据,通过现有的前端展示给审核人员,交由审核人员判断决定是否审批通过,此外对于异常的审批单据,即在步骤S212中无法处理的单据记录(信息确实或者某些信息无法识别),也会在此展示给审核人员处理。
上述通过JS扩展程序实现的功能编译打包后的执行文件,都将以所述事件ID+终端名称+文件类型的方式存放到服务器指定路径下。并将上述文件路径信息及文件类型信息添加到该扩展事件的配置信息当中。
可选地,上述业务场景的部分还可以交由后端的程序来实现,例如根据实现后端服务器的编程语言,编写一个处理程序,如图7所示,包括:
S221、使用数据库接口API获取待审单据记录;
S222、分析待审单据记录,并判断所有员工每个人的报销单据的总额是否满足在一定额度范围内;
S223、通过数据库API将总额满足在一定范围内的单据的审批状态改为通过。
在步骤S221中,不同于之前的采用前端方案,后端程序一般都有可以直接访问数据库的实现方式,因此只需导入相应的实现方式即可向数据库通信,以获取需要处理的待审单据记录数据。
在步骤S222中,对在S221中获取到的数据进行统计分析,并分析出每个员工的单据总额满足一定额度的待审批单据。
在步骤S223中,对在步骤S222中得出的员工的报销总额度满足在一定范围内的该员工所有的报销单据的审批状态设定为通过,并通过数据库API将数据库中对应的数据的审批状态也设定为通过。
此外,对于在步骤S222中无法处理的异常单据数据或经过分析后不能给予审批通过的数据,将不做更改,因此,在审核人员访问审核界面时,这些异常数据或者由扩展程序审批不通过的数据将有审核人员进行判断并给予审批。
特别地,在本实施例的扩展事件的实现中,仅仅依据现有流程系统原有的功能且不对其现有的流程系统进行更改即可实现新的业务功能的扩展。
在本发明的一些实施例中,根据运行终端选择不同的编程方式编译所述可执行文件包括:
对运行终端为web前端和/或移动设备前端的扩展事件采用javascript编写所述扩展事件的实现方法并进行编译;以及
对运行终端为web后端及PC、移动设备的扩展事件采用Java、Python、C++、R、或Golang编程语言编写所述扩展事件的实现方法并进行编译。
在本实施例中,在一些业务场下,在审批节点后还需对审批后的数据进行分析统计,因某些编程语言的特性,可能存在采用实现后端服务器的编程语言并不适合做这些任务,对于客户提出的这些附加功能的需求若依然选择使用当前编程语言比较困难使用其他语言可能更加便捷。例如,业务要求对某一时期的报销审批进行分析,或者是从过往的审批中进行机器学习得出一个近似规律,因此所要实现的算法难度相对擅长处理数据科学计算的Python、R编程语言来说开发成本是巨大的,因此可采用便于处理业务需求的其他常用的编程语言。
更进一步,根据扩展事件的最优的执行环境选择合适的编程实现方式,例如,在上述实施例对账单的简单预处理任务中,由于对于账单的处理是较为简单的逻辑结构,通过javascript脚本程序执行即可完成业务需求,而且通过javascript脚本程序执行,将计算任务放在前端,在实现功能扩展的同时还降低了服务器的运算压力,对整个流程系统的运行是有益的。因此对于一些较为简单的逻辑处理任务,交由终端设备执行可以有效降低流程系统的计算压力,并提高流程系统的稳定性。
具体地,在对扩展事件选择最优的执行环境采用合适的编程语言实现后,还需要将其编译成可执行文件,并将可执行文件存放到指定路径下。并将存储的可执行文件的路径信息添加到该扩展事件的配置信息中,用于当流程节点执行到该节点后触发该扩展事件并执行其对应的可执行程序。
在本发明的一些实施例中,进行编译包括:
对采用javascript实现的所述事件扩展方法的编译,采用rollup打包方式生成符合SystemJS规范的javascript可执行文件;
对采用所述Java、Python、C++、R、或Golang编程语言实现的所述事件扩展方法的编译,选择编译后文件体积最小的编译方式。
在本实施例中,在对编写的前端JS脚本程序采用rollup的方式,rollup是javascript的ES模块打包工具,专注于javascript类库打包,可以移除javascript程序中未使用的代码,输出更小的文件,并且将所有模块构建在一个函数内,执行效率更高,可以依次输出多种格式的编译文件如AMD、CJS、ES、IIFE等格式文件。因此,在本发明的实施例中对使用javascript编写的扩展事件的扩展程序,可根据运行终端的类型将javascript的扩展程序使用rollup打包编译生成合适格式的可执行文件。
相应地,对于采用其他编程语言实现的扩展事件的扩展程序,采用该语言相关的编译方式,例如对于使用java实现的扩展程序编译成.class字节码文件,对于使用Python实现的扩展程序编译成.pyc字节码文件。根据运行环境的不同,采用常用编程语言实现的扩展程序,也可以编译成在所要运行的操作系统上独立运行的二进制文件,例如在windows上运行的.exe程序。当用户使用流程系统的终端是PC客户端或手机APP的时候,扩展程序的有限选择运行在客户端而不是服务器,这样可以减少服务器的运行压力,当用户使用流程系统的方式是通过浏览器访问时,优先选择将扩展程序通过javascript编程实现。
在本发明的一些实施例中,审批节点在审批前后的扩展事件可以为多个。
在本发明的一些实施方式中,根据所述配置信息运行所述可执行文件包括:顺序执行多个扩展事件。在本实施例中,如图2所示,在审批节点200的审批前和审批后的扩展事件可以为多个。多个审批事件根据其配置信息中的事件扩展类型和事件顺序信息,按照顺序执行,例如事件201的扩展事件类型为0,事件顺序为1则表示事件201为前事件,且在该事件分组中执行顺序为1。当该流程的审核人员对其审核任务进行审核时,简单地说是当审核人员登录流程系统后,流程系统收到审核人员点击获取审核信息的请求后触发图2所示的扩展事件201~205,或者是审批节点200的前扩展事件201~205作为上一个流程节点的后扩展事件被触发。
相应地,审批节点200的后扩展事件206~210也可以在审批节点200的审核人员审核通过后立刻执行,也可以是审批节点的后续节点的办理人员在登录到流程系统打开其工作界面获取其工作内容时被触发执行相应的扩展事件。
在本发明的一些实施例中,多个扩展事件的执行必须在上一事件执行结果通过后才能执行下一扩展事件。
在本实施例中,如图2所示,在审批节点200的前后有多个扩展事件。其中,在审批节点200的前事件中,事件202~205为连续事件,其执行过程必须从事件202→事件203→事件204→事件205。事件202的执行结果将会记录在事件202所对应的配置信息中,当流程系统在将要执行事件203时若检测到事件202的配置信息中的执行结果不通过,则将该连续事件扩展停止。而事件201则不受事件202的执行结果的影响。
具体地,在本实施例中,事件201是前述的审核报销单据的扩展事件,而事件202到事件205是对公司账单处理的验证业务的扩展事件。其中事件202是所完成的是对从其他公司发送来的账单文件的解析处理,将账单文件中的所有信息获取并解析出账单编号、账单金额等信息。因为不同公司的账单的模板皆不同,事件203是解析流程系统所在公司的账单的扩展事件,主要分析出账单文件中的账单编号和对应的金额等信息。事件204是对银行汇款记录信息的解析并获取银行实际转账的金额以及附加信息中对应的账单编号。最后,事件205是对前续202~204事件所解析的信息的综合处理,判断开据的账单是否有汇款记录,汇款的金额是否满足所开账单的数额,并列出所有账单编号、金额匹配的其他公司账单、本公司账单、银行转账记录的详细信息,对于解析到的信账单编号、金额不匹配的账单记录以红色醒目的颜色展示不匹配的记录。
特别地,如果来自其他公司的账单文件的样式模板或账单文件中的信息发生改变,事件202在执行时发现识别的来自其他公司的账单文件的信息出现缺失或者解析失败,后续事件203~205则停止执行;或者是来自银行的转账信息由于银行内部系统升级导致账单信息变更,而事件204无法准确解析并识别出银行的转账信息在此情况下,事件204执行失败。事件的执行受阻,则后续事件205则停止执行。在这种情况下,流程系统将提示执行异常的扩展事件信息,并将按照原有的方式列出账单文件由审核人员下载后自行统计验证。
此外,在上述扩展事件202到205中,事件202、203、204可通过常用的编程软件实现,例如JAVA、Python、C++、R、Go等实现,通过向流程系统的账单文件接口发送请求获取数据后进行解析处理,选择方便处理账单文件的语言即可,对于事件205是对信息数值的匹配与判断,且涉及到页面信息的更改,可采用javascript编程实现,对页面信息的改变可通过javascript中对浏览器jquerry库对现有的页面信息进行覆盖,其具体实现方式为前端工程师的常识,在此不具体介绍。因此在上述的扩展事件中对数据的处理以及流程系统的信息展示,都是在流程界面和流程系统的提供的功能之上实现的。
在本发明的一些实施例中,根据所述配置信息运行所述可执行文件包括:同步执行多个扩展事件。多个扩展事件可同步执行。
在本实施例中,如图2所示,事件201为对报销单据审批的扩展事件,事件202到205为对账单转账的匹配验证的扩展事件,在事件201和事件202~205的配置信息中,事件201的配置信息的事件任务分类ID与事件202~205的事件任务分类ID则不同,流程系统在加载配置信息执行扩展事件时,对不同任务分类ID的扩展事件可同时执行,对于相同任务分类ID的扩展事件,将按照配置信息中的事件顺序信息,按顺序执行。
此外对于审批节点200后的扩展事件206~210,当审批节点200后的扩展事件对应前事件或审批操作完成时,且申批节点200存在正在执行的前事件也可同时执行审批节点200后的扩展事件。也即扩展事件的执行理论上可以全部同时,但当相对的扩展事件的执行需要其他扩展事件的执行结果时,则必须按照事件流的执行方式执行,关于事件的执行顺序以及是否可以与哪些扩展事件同时执行皆通过扩展事件的配置信息来控制。在同一不同任务分类ID的事件且其所在节点的前事件不对该事件有影响的情况下,事件课与其他事件同时执行。比如,事件206是与事件201对应的扩展事件,其主要实现的是对审核通过的审批单据的发起人发送通过邮件,则在事件201执行过程中,事件206无法执行。当201执行完成后,206的执行完全不受其他扩展事件的影响,根据流程系统的任务调度可与其他非互斥事件同时执行。
如图3所示,本发明的另一方面还提出了一种在工作流程中实现审批前后事件扩展的系统300,包括:
配置信息获取模块301,配置用于响应于工作流程处于所述事件扩展的审批节点,获取该审批节点的扩展事件的配置信息;
可执行文件获取模块302,配置用于根据所述扩展事件的配置信息获取所述审批节点的可执行文件;
扩展事件执行模块303,配置用于响应于获取到所述审批节点的可执行文件,根据所述配置信息运行所述可执行文件。
在本实施例中,配置信息获取模块301可以在审核人员的触发下获取当前审核人员待处理的任务的扩展事件的配置信息。再获取到扩展事件的配置信息后,根据审核人员访问流程系统的终端类型,将配置信息和终端类型发送给可执行文件获取模块302。
可执行模块302在获取到将要执行的扩展事件的配置信息以及终端类型后,根据配置信息中的可执行文件路径信息和终端类型,从指定路径获取用于实现该扩展事件的可执行文件。然后将可执行文件发送到执行环境。例如,若审核人员通过浏览器访问的流程系统,若存在以javascript实现的扩展事件的可执行文件,则将该可执行文件发送到审核人员正在使用的浏览器,由浏览器作为扩展事件的执行模块303,对于其他语言实现的扩展事件的可执行文件,可执行模块302则将可执行文件发送给扩展事件执行模块303。
扩展事件执行模块303在收到可执行文件后,在服务器上通过已经实现的对各种编程语言的可执行文件调用方式运行对应的可执行文件。因为对于调用各种编程语言的可执行文件对与本领域技术人员来说为公知常识,且现有技术中各种语言都有使用其他语言的功能,特别地还可以采用shell脚本的方式调用对应的可执行文件,在此不做详细描述。
此外,在扩展事件执行模块303在执行扩展事件时,将严格按照扩展事件的配置信息的事件顺序、事件任务分类ID以及扩展事件的事件执行状态来同时执行或按照顺序执行相应的扩展事件的可执行程序,对执行通过的事件,将其执行通过的状态更新到配置信息中。
如图4所示,本发明又一方面还提出了一种计算机设备400,包括:
至少一个处理器401;以及
存储器402,所述存储器402存储有可在所述处理器上运行的计算机指令,所述指令由所述处理器401执行时实现如上方法的步骤。
如图5所示,本发明的再一方面还提出了一种计算机可读存储介质500,所述计算机可读存储介质500存储有计算机程序502,所述计算机程序被处理器501执行时实现如上方法的步骤。
综上所述,通过本发明提供的上述方法及系统,可将用户提出的自定义需求选择合适的编程语言作为实现方式,并编译生成可执行文件。在审批节点的前后按照一定顺序执行相应的可执行文件。在不改变所述系统流程整体结构以及所述系统的其他模块的情况下,将多变的需求的解决方案转换为对应的独立于流程系统的可执行文件来实现用户的自定义需求。相比于现有技术至少具备以下有益效果:降低了与原有流程系统的耦合,减少对原有流程系统的结构依赖,进而使得扩展事件可以更灵活的运用,使得对流程系统功能的添加或者升级时,可以在不改变流程系统结构的前提下实现功能的扩展;同时,对一些无用的功能的扩展事件的修改或删除,不影响流程系统的运行的稳定性。此外,根据任务场景的不同,采用不同的编程语言的作为扩展事件的实现方式,可充分利用不同编程语言的优势,简单、便捷、高效地实现业务需求,更便于开发。
- 一种工作流程中的事件扩展的方法、系统、设备、介质
- 基于工作流引擎的任务事件处理方法、装置、设备和介质