本申请涉及审批
技术领域:
,特别涉及一种审批方法、装置、设备和介质。
背景技术:
:流程是公司员工在erp(企业资源计划,enterpriseresourceplanning)系统中常用的一个功能,相比在线下走流程,在erp系统中走流程,实现了信息化、无纸化,让办公不再受空间物理条件限制,随时随地都可以处理事务,将易损毁的纸质文件变为电子信息进行管理,高效安全,可以完整追溯整个流程的流转。在erp系统中,运维人员可以按照实际需要,设计多种多样的流程,每个流程可以有丰富的表单数据,不同的审批节点。每个流程可能会有很多的审批节点,为了让流程更高效,常规的方式是由系统开发人员,将取值、判断的代码,在系统运行之前,固定地、不可修改地写在系统的java代码中,且通用性较差,仅能用于简单的数据结构的表单项目。然而,随着业务的扩展,需求的变更,流程表单数据结构会变得越来越复杂,同时节点自动审批的预设条件也可能会改变,也许是取表单中另外一个数据进行判断,也许是用多个数据以一定格式组合起来进行判断,也许是表单中一部分数据与另一部分数据进行判断。每当有新的需求出现,如果现有系统无法满足新的需求,以常规思路,每次都需要修改系统的代码,在代码里修改或新增判断条件,再经历测试、上线。这一整个过程,需要不小的研发成本,频繁的改动系统代码,也会加大系统的不稳定性。因此,如何提供一种解决上述技术问题的方案是本领域技术人员目前需要解决的问题。技术实现要素:本申请的目的是提供一种审批方法、装置、电子设备和计算机可读存储介质,可实现灵活的审批脚本文件的上下线,当需要更新时,无需更改系统代码,只需要修改审批脚本文件,避免了相关技术中当需要更新时,频繁的改动系统代码造成的操作复杂和系统不稳定性的问题。其具体方案如下:本申请公开了一种审批方法,包括:读取当前审批节点对应的审批脚本文件;其中,所述审批脚本文件与预设审批条件对应;获取表单数据,并将所述表单数据输入所述审批脚本文件,以便判断所述表单数据是否符合所述预设审批条件;根据输出结果确定所述当前审批节点的审批结果。优选地,所述读取当前审批节点对应的审批脚本文件之前,还包括:获取所述当前审批节点的节点信息;根据所述节点信息判断是否存在所述审批脚本文件;若存在所述审批脚本文件,则执行所述读取所述当前审批节点对应的审批脚本文件的步骤。优选地,所述读取当前审批节点对应的审批脚本文件,包括:确定所述当前审批节点的所述预设审批条件;根据所述预设审批条件从审批脚本文件集中匹配所述审批脚本文件;读取所述审批脚本文件。优选地,所述读取当前审批节点对应的审批脚本文件,包括:确定所述当前审批节点的所述预设审批条件;根据所述预设审批条件修改标准脚本中的审批条件参数,得到所述审批脚本文件;读取所述审批脚本文件。优选地,所述读取当前审批节点对应的审批脚本文件,包括:当用户上传所述当前审批节点对应的所述审批脚本文件后,读取所述审批脚本文件。优选地,还包括:接收到脚本更新指令;根据所述脚本更新指令,更新所述审批脚本文件。优选地,还包括:在审批节点设置多个标签;其中,所述标签包括展示标签、可编辑标签和必要标签,其中,所述展示标签中的选择范围包括可编辑标签的选择范围,所述可编辑标签的选择范围包括所述必要标签的选择范围。本申请提供了一种审批装置,包括:读取模块,用于读取当前审批节点对应的审批脚本文件;其中,所述审批脚本文件与预设审批条件对应;获取与输入模块,用于获取表单数据,并将所述表单数据输入所述审批脚本文件,以便判断所述表单数据是否符合所述预设审批条件;审批结果确定模块,用于根据输出结果确定所述当前审批节点的审批结果。本申请提供了一种电子设备,包括:存储器,用于存储计算机程序;处理器,用于执行所述计算机程序时实现如上所述审批方法的步骤。本申请提供了一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现如上所述审批方法的步骤。本申请提供一种审批方法,包括:读取当前审批节点对应的审批脚本文件;其中,审批脚本文件与预设审批条件对应;获取表单数据,并将表单数据输入审批脚本文件,以便判断表单数据是否符合预设审批条件;根据输出结果确定当前审批节点的审批结果。可见,本申请在审批节点具有对应的审批脚本文件,将审批脚本文件与系统分离,可实现灵活的审批脚本文件的上下线,当需要更新时,无需更改系统代码,只需要修改审批脚本文件;当执行到当前审批节点时,直接读取对应的审批脚本文件,然后将获取的表单数据输入审批脚本文件中,得到审批结果,避免了相关技术中当需要更新时,频繁的改动系统代码造成的操作复杂和系统不稳定性的问题。本申请同时还提供了一种审批装置、电子设备和计算机可读存储介质,均具有上述有益效果,在此不再赘述。附图说明为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。图1为本申请实施例所提供的一种审批方法的流程图;图2为本申请实施例提供的一种读取审批脚本文件的流程示意图图3为本申请实施例提供的另一种读取审批脚本文件的流程示意图;图4为本申请实施例提供的一种当前审批节点的界面显示的示意图;图5为本申请实施例提供的一个请假流程的示例;图6为本申请实施例提供的一种审批装置的结构示意图。具体实施方式为使本申请实施例的目的、技术方案和优点更加清楚,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。随着业务的扩展,需求的变更,流程表单数据结构会变得越来越复杂,同时节点自动审批的预设条件也可能会改变,也许是取表单中另外一个数据进行判断,也许是用多个数据以一定格式组合起来进行判断,也许是表单中一部分数据与另一部分数据进行判断。每当有新的需求出现,如果现有系统无法满足新的需求,以常规思路,每次都需要修改系统的代码,在代码里修改或新增判断条件,再经历测试、上线。这一整个过程,需要不小的研发成本,频繁的改动系统代码,也会加大系统的不稳定性。为了不必经常改动erp系统代码,又能快速满足不断提出的需求,本申请实现了一种新的流程节点的控制方法,将判断流程表单数据是否满足条件、满足何种条件的部分代码,从erp系统的代码中剥离出,用javascript编写逻辑判断的代码,放到一个脚本文件中。在设计流程时,当一个审批节点需要设置成自动审批,只需用javascript语言编写好实现逻辑判断的审批脚本文件,上传审批脚本文件到该审批节点即可。每当触发该审批节点的自动审批时,erp系统就会获取该审批节点的审批脚本文件,调用其中的方法,传入流程表单数据,然后就能获得判断结果,是否要自动通过。该审批方法无需修改系统代码,仅需修改审批脚本文件,就能满足新的需求;javascript语法简单,非系统设计人员也能用它编写审批脚本文件本,降低系统维护人员的学习成本;审批脚本文件与erp系统分离,可灵活上下线,当发现某个审批脚本文件存在问题时,可以马上下线该审批脚本文件,避免造成更严重的后果。本实施例提供一种审批方法,具体请参考图1,图1为本申请实施例所提供的一种审批方法的流程图,具体包括:s101、读取当前审批节点对应的审批脚本文件;其中,审批脚本文件与预设审批条件对应;本实施例中的执行主体为当前审批节点,该审批节点对应的设备可以是手机、计算机、平板电脑中的任意一个。在一个完整的审批过程中可能会存在多个审批节点,以公司请假为例,可能需要申请人在申请节点填写相关信息、然后依次第一审批节点、第二审批节点、第三审批节点进行审批;再者,以项目审批为例,也需要申请人在申请节点填写相关信息、然后依次第一审批节点、第二审批节点、第三审批节点、第四审批节点进行审批。在一种可实现的实施方式中,请参考图2,图2为本申请实施例提供的一种读取审批脚本文件的流程示意图,s101,包括:s1011a、确定当前审批节点的预设审批条件;s1012a、根据预设审批条件从审批脚本文件集中匹配审批脚本文件;s1013a、读取审批脚本文件。其中,预设脚本文件集中包括多种审批条件对应的审批脚本文件。例如,预设脚本文件集中包括审批条件1对应的审批脚本文件1,审批条件2对应的审批脚本文件2,审批条件3对应的审批脚本文件3;当确定预设审批条件为审批条件2时,从审批脚本文件集中匹配审批脚本文件2,并读取该审批脚本文件2。在另一种可实现的实施方式中,请参考图3,图3为本申请实施例提供的另一种读取审批脚本文件的流程示意图,s101,包括:s1011b、确定当前审批节点的预设审批条件;s1012b、根据预设审批条件修改标准脚本中的审批条件参数,得到审批脚本文件;s1013b、读取审批脚本文件。可以理解的是,标准脚本中的审批条件与预设审批条件不一致,此时仅仅需要自动修改其中的审批条件参数即可得到审批脚本文件。该方法操作简单,避免了系统内大量存储多种审批脚本文件造成的内存剩余量少的问题。在另一种可实现的实施方式中,s101,包括:当用户上传当前审批节点对应的审批脚本文件后,读取审批脚本文件。当前审批节点对应有用户编写的审批脚本文件,编写审批脚本文件本,降低系统维护人员的学习成本;审批脚本文件与erp系统分离,可灵活上下线,当发现某个审批脚本文件存在问题时,可以马上下线该审批脚本文件,避免造成更严重的后果。进一步的,还包括:接收到示例脚本下载指令;根据下载指令,下载示例脚本。维护人员下载示例脚本,然后根据实际需求,参考示例脚本,重新编写出一个脚本文件,然后上传到该当前审批节点中保存。其中该示例脚本与当前审核节点唯一对应,此种方法在同一个节点中,可与常规的方法一起生效,为“或”关系,满足两者之一即可自动审批通过。脚本,是本新的控制方法中,存放“取值、判断、生成结果的javascript代码”的文件。s102、获取表单数据,并将表单数据输入审批脚本文件,以便判断表单数据是否符合预设审批条件;获取表单数据,表单数据可以以键值对的形式存储该当前审核节点在申请或者审批时的项目名称、填写内容,其中,填写内容可以包括审核数据、审核类别、审核佐证文件。例如,针对一个请假流程,它的表单项目有如表1所示的内容,表1请假时间请假天数请假类别理由描述申请人在erp系统的请假流程中填入了相关内容,得到表2;表2请假时间2020-11-0208:00:00~2020-11-0218:00:00请假天数1.0请假类别事假理由描述搬家之后发起了这个审核后,erp系统会将填写的表单内容以一定的格式存储在数据库中,得到表单数据,用于后续的审批、查询、统计等。表单数据将按下述形式存储:{"请假时间":"2020-11-0208:00:00~2020-11-0218:00:00","请假天数":"1.0","请假类别":"事假","理由描述":"搬家"}再比如,当进行数据更新时,表单数据的数据项变多,数据结构变复杂。申请人填写项目增加,当公司新规定,请病假要上传病假单的照片,那么表单要增加一项附件,变更后的表单数据如下所示:{"请假时间":"2020-11-0208:00:00~2020-11-0218:00:00","请假天数":"1.0","请假类别":"病假","理由描述":"感冒了","附件":"/文件路径/病假单.jpg"}再如,比如,公司新规定,请假天数将在选择开始结束时间后,由系统自动计算,不再需要手动输入。开发人员对系统进行升级,升级之后某个请假流程的表单数据下所示:{"请假时间":{"开始时间":"2020-11-0208:00:00","结束时间":"2020-11-0218:00:00","请假天数":"1.0"},"请假类别":"病假","理由描述":"感冒了","附件":"文件路径/病假单.jpg"}此处“请假时间”这一项的值,不再是简单的文本,而是同样是键值对形式。在生产环境的系统中,有些流程的表单数据的结构会比这更复杂。相关技术中,当表单数据的结构或者项数发生变化时,需要重新编写系统代码然后进行测试、上线,研发成本高,也容易造成系统的稳定性降低,然而,本申请是将表单数据输入审批脚本文件中,利用审批脚本文件判断表单数据是否符合当前的预设审批条件,得到输出结果,输出结果包括符合预设审批条件和不符合预设审批条件。此时,即使在表单数据的结构或者项数发生变化,都不需要重新编写代码进行研发,仅仅需要下线当前的审批脚本文件,进行脚本文件的修改,上传审批脚本文件到该审批节点即可,降低系统维护人员的学习成本;审批脚本文件与erp系统分离,可灵活上下线。s103、根据输出结果确定当前审批节点的审批结果。当输出结果是符合预设审批条件时,则审批结果是审批通过;当输出结果是不符合预设审批条件时,则审批结果是审批不通过。其中,当审批结果是审批通过时,执行下一节点的审批;当审批结果是审批不通过时,确定审批不通过,或发送提示信息以使审核人手动审批。基于上述技术方案,本实施例在审批节点具有对应的审批脚本文件,将审批脚本文件与系统分离,可实现灵活的审批脚本文件的上下线,当需要更新时,无需更改系统代码,只需要修改审批脚本文件;当执行到当前审批节点时,直接读取对应的审批脚本文件,然后将获取的表单数据输入审批脚本文件中,得到审批结果,避免了相关技术中当需要更新时,频繁的改动系统代码造成的操作复杂和系统不稳定性的问题。进一步的,读取当前审批节点对应的审批脚本文件,包括:获取当前审批节点的节点信息;根据节点信息判断是否存在审批脚本文件;若存在审批脚本文件,则执行读取当前审批节点对应的审批脚本文件的步骤。其中该节点信息包括:节点名称、节点是否包括审批脚本文件、节点标识。根据节点信息判断是否存在审批脚本文件,如果存在就执行审批脚本文件的自动化审批,如果不存在审批脚本文件,可以采用常规的方式进行审批或者人工进行审批,只要是能够实现本实施例的目的即可。可见,本实施例通过判定是否存在审批脚本文件以实现自动化审批,提高了当前审批节点的审批效率。进一步的,为了实现便捷的更新,该审批方法,还包括:接收到脚本更新指令;根据脚本更新指令,更新审批脚本文件。其中,脚本更新指令中包括增加的表单数据对应的项目、修改的表单数据对应的项目、删除的表单数据对应的项目、增加的审批条件中的任意一项或者多项。其中,根据脚本更新指令,更新审批脚本文件包括:将脚本更新指令发送至目标设备,以便目标设备对应的技术人员确定更新后的审批脚本文件;将更新后的审批脚本文件替换当前的审批脚本文件。可见,本实施例中当审批脚本文件需要更新时,由于审批脚本文件与erp系统分离,可灵活上下线,因此仅需要下线该审批脚本文件,然后将更新后的审批脚本文件上传即可。进一步的,该审批方法,还包括:在审批节点设置多个标签;其中,标签包括展示标签、可编辑标签和必要标签,其中,展示标签中的选择范围包括可编辑标签的选择范围,可编辑标签的选择范围包括必要标签的选择范围。请参考图4,图4为本申请实施例提供的一种当前审批节点的界面显示的示意图,在审批节点(事业总部)设置多个标签,当申请人进行申请时,可根据相应的标签进行填写信息。已知,申请人在发起流程时要填写一些项目(与标签对应的项目),随后由多个审批节点审批通过,流程结束。进一步的,展示标签:此流程表单的项目,在该审批节点可见的部分,每个审批节点单独配置。比如,在“申请人”节点取消勾选“理由描述”,则申请人看不到流程表单的“理由描述”这一项。又比如,在“事业部总”节点取消勾选“请假时间”这一项,此节点的审批人将看不到“请假时间”这一项及申请人填写的内容。可编辑标签:此流程表单的项目,在该审批节点可编辑的部分,每个审批节点单独配置,是否可见由前述“展示标签”决定。比如,在“申请人”节点取消勾选“理由描述”,则申请人无法输入“理由描述”这一项,他会认为不用他填写。又比如,在“事业部总”节点勾选“请假时间”,则此审批节点的审批人可以修改申请人填写“请假时间”这一项的内容。必要标签:此流程表单的项目,在该审批节点必填的部分,不填写无法提交或审批,每个审批节点单独配置,是否可见由前述“展示标签”决定,是否可填写由前述“可编辑标签”决定。比如,在“申请人”节点勾选“理由描述”,则申请人必须输入“理由描述”这一项,否则无法提交。又比如,在“事业部总”节点的必要标签勾选了“审批意见”这一项,则该审批节点的审批人必须输入“审批意见”才能进行审批通过或驳回。此三者在每个审批节点单独配置,各审批节点互不影响。同一审批节点,三者的选择范围是逐渐缩小的,展示标签可选流程表单所有项目,可编辑标签的选择范围只在展示标签的选择结果之内,必要标签的选择范围又在可编辑标签的选择结果之内。因此不存在因流程设计不当,导致表单某项目必填,但却不可见或不可编辑,使流程无法进行下去的情况。基于上述任意实施例,本实施例提供一种具体的审批方法,主要针对假期审批,主要涉及两个方面:系统中的java代码,系统外的javascript脚本文件。具体步骤如下:在流程节点实体类及数据库表中增加存放审批脚本文件的字段。创建一个文件,在其中用javascript编写进行判断的方法,方法参数为流程表单数据,返回值为判断结果。在流程设计页面的节点设计窗口,将审批脚本文件上传到审批节点中。1.开发人员在erp系统的工程项目中新建一个工具类,用于读取审批脚本文件,调用审批脚本文件其中的javascript方法。2.在流程审批的方法中,获取当前审批节点,如果当前审批节点中有审批脚本文件,使用工具类读取审批脚本文件,调用审批脚本文件中的方法,传入流程的表单数据。3.编写每种判断结果对应的java代码,根据调用审批脚本文件中方法的返回判断结果,执行对应的java代码,根据判断结果确定审批结果。图5为本申请实施例提供的一个请假流程的示例,可以看到流程发起之后,先由“部门领导”节点手动审批通过;随后的“事业部总”节点,满足了前述的节点设计中设置的条件,于是自动通过;最后的“总经理”节点,调用脚本文件中的方法,返回结果为满足条件,也自动通过。整个流程,实际上只有发起人和部门领导在参与。下面对本申请实施例提供的一种审批装置进行介绍,下文描述的审批装置与上文描述的审批方法可相互对应参照,参考图6,图6为本申请实施例所提供的一种审批装置的结构示意图,包括:读取模块210,用于读取当前审批节点对应的审批脚本文件;其中,审批脚本文件与预设审批条件对应;获取与输入模块220,用于获取表单数据,并将表单数据输入审批脚本文件,以便判断表单数据是否符合预设审批条件;审批结果确定模块230,用于根据输出结果确定当前审批节点的审批结果。优选地,还包括:节点信息获取模块,用于获取当前审批节点的节点信息;判断模块,用于根据节点信息判断是否存在审批脚本文件;执行模块,用于若存在审批脚本文件,则执行读取当前审批节点对应的审批脚本文件的步骤。优选地,读取模块210,包括:第一预设审批条件确定单元,用于确定当前审批节点的预设审批条件;匹配单元,用于根据预设审批条件从审批脚本文件集中匹配审批脚本文件;第一读取单元,用于读取审批脚本文件。优选地,读取模块210,包括:第二预设审批条件确定单元,用于确定当前审批节点的预设审批条件;审批脚本文件获得单元,用于根据预设审批条件修改标准脚本中的审批条件参数,得到审批脚本文件;第二读取单元,用于读取审批脚本文件。优选地,读取模块210,包括:第三读取单元,用于当用户上传当前审批节点对应的审批脚本文件后,读取审批脚本文件。优选地,还包括:更新指令接收模块,用于接收到脚本更新指令;更新模块,用于根据脚本更新指令,更新审批脚本文件。优选地,还包括:标签设置模块,用于在审批节点设置多个标签;其中,标签包括展示标签、可编辑标签和必要标签,其中,展示标签中的选择范围包括可编辑标签的选择范围,可编辑标签的选择范围包括必要标签的选择范围。由于装置部分的实施例与方法部分的实施例相互对应,因此装置部分的实施例请参见方法部分的实施例的描述,这里暂不赘述。下面对本申请实施例提供的一种电子设备进行介绍,下文描述的电子设备与上文描述的审批方法可相互对应参照。本实施例提供一种电子设备,包括:存储器,用于存储计算机程序;处理器,用于执行计算机程序时实现如上述审批方法的步骤。由于电子设备部分的实施例与审批方法部分的实施例相互对应,因此电子设备部分的实施例请参见审批方法部分的实施例的描述,这里暂不赘述。下面对本申请实施例提供的一种计算机可读存储介质进行介绍,下文描述的计算机可读存储介质与上文描述的方法可相互对应参照。本实施例提供一种计算机可读存储介质,计算机可读存储介质上存储有计算机程序,计算机程序被处理器执行时实现如上述审批方法的步骤。由于计算机可读存储介质部分的实施例与方法部分的实施例相互对应,因此计算机可读存储介质部分的实施例请参见方法部分的实施例的描述,这里暂不赘述。说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似部分互相参见即可。对于实施例公开的装置而言,由于其与实施例公开的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。专业人员还可以进一步意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请的范围。结合本文中所公开的实施例描述的方法或算法的步骤可以直接用硬件、处理器执行的软件模块,或者二者的结合来实施。软件模块可以置于随机存储器(ram)、内存、只读存储器(rom)、电可编程rom、电可擦除可编程rom、寄存器、硬盘、可移动磁盘、cd-rom、或
技术领域:
内所公知的任意其它形式的存储介质中。以上对本申请所提供的一种审批方法、装置、电子设备及计算机可读存储介质进行了详细介绍。本文中应用了具体个例对本申请的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本申请的方法及其核心思想。应当指出,对于本
技术领域:
的普通技术人员来说,在不脱离本申请原理的前提下,还可以对本申请进行若干改进和修饰,这些改进和修饰也落入本申请权利要求的保护范围内。当前第1页12