CN113656064A - 一种框架流程处理方法、系统、可读存储介质及装置 - Google Patents
一种框架流程处理方法、系统、可读存储介质及装置 Download PDFInfo
- Publication number
- CN113656064A CN113656064A CN202110901407.1A CN202110901407A CN113656064A CN 113656064 A CN113656064 A CN 113656064A CN 202110901407 A CN202110901407 A CN 202110901407A CN 113656064 A CN113656064 A CN 113656064A
- Authority
- CN
- China
- Prior art keywords
- thread
- asynchronous task
- processing
- core
- thread pool
- 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.)
- Granted
Links
- 238000000034 method Methods 0.000 title claims abstract description 200
- 238000005111 flow chemistry technique Methods 0.000 title claims abstract description 85
- 238000012545 processing Methods 0.000 claims abstract description 119
- 230000008569 process Effects 0.000 claims abstract description 33
- 238000012544 monitoring process Methods 0.000 claims description 30
- 238000004590 computer program Methods 0.000 claims description 9
- 238000001514 detection method Methods 0.000 claims description 8
- 238000003672 processing method Methods 0.000 claims description 8
- 238000004806 packaging method and process Methods 0.000 claims description 2
- 238000012856 packing Methods 0.000 claims description 2
- 230000001360 synchronised effect Effects 0.000 abstract description 14
- 230000007246 mechanism Effects 0.000 description 9
- 239000002699 waste material Substances 0.000 description 8
- 230000015556 catabolic process Effects 0.000 description 5
- 230000006870 function Effects 0.000 description 3
- 230000001960 triggered effect Effects 0.000 description 3
- 238000010586 diagram Methods 0.000 description 2
- 238000007726 management method Methods 0.000 description 2
- 239000000463 material Substances 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 230000003993 interaction Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 239000013307 optical fiber Substances 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/70—Software maintenance or management
- G06F8/71—Version control; Configuration management
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5027—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
- G06F9/5055—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering software capabilities, i.e. software resources associated or available to the machine
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computer Security & Cryptography (AREA)
- Management, Administration, Business Operations System, And Electronic Commerce (AREA)
Abstract
本发明提供一种框架流程处理方法、系统、可读存储介质及装置,所述方法包括:当获取到有异步任务投递时,检查核心处理线程池中整个工作流是否存在死循环;当所述核心处理线程池中整个工作流不存在死循环时,检查传入的所述异步任务中是否有监听器;当传入的所述异步任务中存在监听器时,将所述异步任务包装成一个线程,将所述线程投入所述核心处理线程池中处理。本发明将工作流处理配置融于代码逻辑里,更具灵活性,同时由于异步任务是针对同步任务而言的,因此该方法还能够处理同步任务。
Description
技术领域
本发明涉及人机交互技术领域,特别涉及一种框架流程处理方法、系统、可读存储介质及装置。
背景技术
在日常的JAVA编程中,因为现在数据量和业务结构越来越复杂,常常会出现任务要用异步处理的需求,因为机器的算力是有限的,而数据量和业务结构的复杂度是不可预测的,并且是不断上升的,所以异步处理是解决这种问题的最好的方案;但是现在的业务结构里,很多的流程和执行顺序是需要支持配置的,这样对整个处理流程的程序的灵活度要求更高;特别是上述两点需要结合的时候,对程序的编码者是有很大的挑战的。
现有的技术针对工作流的处理方式都相对单一,在指定的XML里进行配置,配置相对繁琐,局限性较强,当业务模型改变时则需要修改配置;而且配置比较复杂,需要有一定的基础;针对一些长时间执行的任务,不能很好的支持,需要程序员自己去实现,无疑是增大了程序员的负担。
发明内容
基于此,本发明的目的是提供一种框架流程处理方法、系统、可读存储介质及装置,用于解决现有技术中,针对工作流的处理方式都相对单一,在指定的XML里进行配置,配置相对繁琐,局限性较强的问题。
本发明提出一种框架流程处理方法,所述方法包括:
当获取到有异步任务投递时,检查核心处理线程池中整个工作流是否存在死循环;
当所述核心处理线程池中整个工作流不存在死循环时,检查传入的所述异步任务中是否有监听器;
当传入的所述异步任务中存在监听器时,将所述异步任务包装成一个线程,将所述线程投入所述核心处理线程池中处理。
另外,根据本发明上述提出的一种框架流程处理方法,还可以具有如下附加的技术特征:
进一步的,所述当获取到有异步任务投递时,检查核心处理线程池中整个工作流是否存在死循环的步骤之前,所述方法还包括:
当获取到工程任务启动指令时,检查应用属性文件中所配置的参数是否缺省,所述参数包括核心处理线程池中核心线程数;
若是,则根据CPU核心数默认配置所述核心处理线程池中核心线程数,同时启动所述核心处理线程池。
进一步的,所述参数还包括监听程序的最大监听时间,所述检查应用属性文件中所配置的参数是否缺省的步骤还包括:
检查所述监听程序的最大监听时间是否缺省;
若是,则默认所述监听程序的最大监听时间为2小时。
进一步的,所述当获取到有异步任务投递时,检查核心处理线程池中整个工作流是否存在死循环的步骤还包括:
检查所述异步任务中所有的下一节点的流程处理方法中的返回值是否均为null;
若是,则所述核心处理线程池中整个工作流不存在死循环。
进一步的,所述将所述异步任务包装成一个线程,将所述线程投入所述核心处理线程池中处理的步骤包括:
当传入的所述异步任务中存在监听器时,将所述异步任务实例化一个线程,并将所述线程投入所述核心处理线程池中;
控制所述线程执行业务流程方法,并输出第一返回值;
当所述第一返回值为true时,发送成功通知并执行下一节点的流程处理方法;
当下一节点的流程处理方法执行完成时,判断所述下一节点的流程处理方法的第二返回值是否为null;
若否,则以所述第二返回值为参数,重复执行上述控制所述线程执行业务流程方法,并输出第一返回值的步骤。
进一步的,所述控制所述线程执行业务流程方法,并输出第一返回值的步骤还包括:
当抛出异常时,区别所述异常的类型并实时记录日志。
进一步的,所述控制所述线程执行业务流程方法,并输出第一返回值的步骤之后,所述方法还包括:
当所述第一返回值为false时,发送失败通知或对所述线程执行回滚操作。
另外,根据本发明实施例的一种框架流程处理系统,所述系统包括:
第一检测模块,用于当获取到有异步任务投递时,检查所述核心处理线程池中整个工作流是否存在死循环;
第二检测模块,用于当所述核心处理线程池中整个工作流不存在死循环时,检查传入的所述异步任务中是否有监听器;
处理模块,用于当传入的所述异步任务中存在监听器时,将所述异步任务包装成一个线程,将所述线程投入所述核心处理线程池中处理。
本发明还提出一种可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现上述的框架流程处理方法。
本发明还提出一种框架流程处理装置,包括处理器、存储器以及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现上述的框架流程处理方法。
本发明当中的框架流程处理方法、系统、可读存储介质及装置,通过当获取到异步任务投递时,能够检查核心处理线程池中整个工作流的工作状态,根据不同的状态采用相应的处理方法,同时在工作流不存在死循环时,有效的注入监听程序,能够对整体工作流进行有效的监控,针对异步处理线程有完善的检查和监听机制,保证内存的安全性,进一步的,将工作流处理配置融于代码逻辑里,更具灵活性,同时由于异步任务是针对同步任务而言的,因此该方法还能够处理同步任务。
附图说明
图1为本发明第一实施例中框架流程处理方法的流程图;
图2为本发明第二实施例中框架流程处理方法的流程图;
图3为本发明第三实施例中框架流程处理方法的流程图;
图4为本发明第四实施例中框架流程处理系统的结构示意图;
图5为本发明第五实施例中框架流程处理装置的结构示意图;
主要元件符号说明:
处理器 | 10 | 第一检测模块 | 11 |
存储器 | 20 | 第二检测模块 | 12 |
计算机程序 | 30 | 处理模块 | 13 |
如下具体实施方式将结合上述附图进一步说明本发明。
具体实施方式
为了便于理解本发明,下面将参照相关附图对本发明进行更全面的描述。附图中给出了本发明的若干实施例。但是,本发明可以以许多不同的形式来实现,并不限于本文所描述的实施例。相反地,提供这些实施例的目的是使对本发明的公开内容更加透彻全面。
需要说明的是,当元件被称为“固设于”另一个元件,它可以直接在另一个元件上或者也可以存在居中的元件。当一个元件被认为是“连接”另一个元件,它可以是直接连接到另一个元件或者可能同时存在居中元件。本文所使用的术语“垂直的”、“水平的”、“左”、“右”以及类似的表述只是为了说明的目的。
除非另有定义,本文所使用的所有的技术和科学术语与属于本发明的技术领域的技术人员通常理解的含义相同。本文中在本发明的说明书中所使用的术语只是为了描述具体的实施例的目的,不是旨在于限制本发明。本文所使用的术语“及/或”包括一个或多个相关的所列项目的任意的和所有的组合。
实施例一
请参阅图1,所示为本发明第一实施例中的框架流程处理方法,所述方法具体包括步骤S101至S103:
S101,当获取到有异步任务投递时,检查核心处理线程池中整个工作流是否存在死循环;
在具体实施时,当获取到有异步任务时,程序员按需编码处理业务逻辑部分,以使异步任务形成工作流,进一步检查异步任务中所有的下一节点的流程处理方法(nextNode()方法)中是否有返回值是null的情况,这里只能是显性的检查,因为如果是隐性的通过执行去检查,如果代码有死循环,会直接触发。只有当返回值是null的情况整个工作流才有正常结束的条件,否则只能等待执行超时停止。
可以理解的,利用检查机制实现异步任务中的工作流情况,能够有效的防止程序长时间未有日志输入,同时也未完成任务,也不释放资源,避免造成系统内存的浪费,导致程序运行速度减慢甚至系统崩溃等严重后果。
S102,当所述核心处理线程池中整个工作流不存在死循环时,检查传入的所述异步任务中是否有监听器;
在具体实施时,当异步任务中所有的下一节点的流程处理方法(nextNode()方法)中返回值是null的情况时,检查所传入的异步任务中是否存在监听器,若是,则进行下一流程;若否,则注入默认监听程序。
需要说明的是,监听程序能够判断该异步任务是否处于假死状态,当超过预设的参数(缺省值为2小时)时,则走失败的处理逻辑。本发明通过设置监听程序,能够实时监测异步任务的状态,进一步的避免造成系统内存的浪费,导致程序运行速度减慢甚至系统崩溃等严重后果。
S103,当传入的所述异步任务中存在监听器时,将所述异步任务包装成一个线程,将所述线程投入所述核心处理线程池中处理。
在具体实施时,当所传入的异步任务中存在监听器时,程序员按照需求来编码,首先在框架内部定义一个接口A,同时传入接口A的各个实现类,并且定义编码了各个方法的对象实例。
将上述异步任务实例化一个新的进程,并且按照上述监听程序的超时时间,实例化一个超时监听器,监听此线程,将此线程投入核心线程池中。系统控制所述线程执行业务流程方法(exec()方法),当上述业务流程方法执行抛出异常时会实时记录日志,需要说明的是,所述日志会区别是超时抛出还是业务流程方法内部执行异常,以便于排查异常原因。
当上述业务流程方法执行完成后,会产生相应的返回值,程序员需要在自己的实现类的这个方法里实现自己的业务逻辑处理流程,这个方法是被上述监听程序(watchDog)监听的,此方法会抛出异常,返回值为布尔类型,用来表示是执行成功了还是失败了。当超时时会抛出执行超时的异常。
当所述返回值为true时,则执行正常的流程结算方法,在该流程结算方法中,向系统发送成功通知并获取下一个要处理的节点,执行下一节点的流程处理方法。例如,系统获取下一个要处理的节点,借助了单向链表的思想,相当于一个指针,指向下一个要处理的任务,一个个循环下去,完成一整个工作流的任务。此方法的返回值必须是A的一个实现类,保证安全性。若获取不到下一个节点或此节点返回为空,则任务整个工作流任务完成。需要指出的是,方法中完全可以由程序员定义获取下一个节点的方式,可以与DAO层结合,获取数据库里的数据进行组装配置等,最大程度的将程序员从繁琐的配置文件中解放出来。
当所述返回值为false时,则执行异常捕捉方法(onFail()方法),发送失败通知或用来做分布式事务的回滚等操作;
当上述正常的流程结算方法执行完成后,执行下一节点的流程处理方法(nextNode()方法),所述下一节点的流程处理方法会产生另一个返回值,当该返回值为null时则为最后一个节点,终止此工作流,若不为空,则以此该返回值为参数,控制所述线程重复执行业务流程方法、正常的流程结算方法、下一节点的流程处理方法,直到下一节点的流程处理方法的返回值为null,则为最后一个节点,终止此工作流。可以理解的,所述下一节点的流程处理方法实际上是一个递归的思想。
综上,本发明上述实施例当中的框架流程处理方法,通过当获取到异步任务投递时,能够检查核心处理线程池中整个工作流的工作状态,根据不同的状态采用相应的处理方法,同时在工作流不存在死循环时,有效的注入监听程序,能够对整体工作流进行有效的监控,针对异步处理线程有完善的检查和监听机制,保证内存的安全性,进一步的,将工作流处理配置融于代码逻辑里,更具灵活性,同时由于异步任务是针对同步任务而言的,因此该方法还能够处理同步任务。
实施例二
请参阅图2,所示为本发明第二实施例中的框架流程处理方法,所述方法具体包括步骤S201至S207:
S201,当获取到工程任务启动指令时,检查应用属性文件中所配置的参数是否缺省,所述参数包括核心处理线程池中核心线程数;
在具体实施时,当获取到工程任务启动指令时,程序员按需编码处理业务逻辑部分,检查应用属性文件中的核心处理线程池中核心线程数是否缺省。
S202,若是,则根据CPU核心数默认配置所述核心处理线程池中核心线程数,同时启动所述核心处理线程池;
在具体实施时,若缺省,缺省值为CPU核心数*2+1,另外,所述核心处理线程池中核心线程数也可以由程序员按需编码配置核心线程数的配置,根据计算机CPU调度策略,可大概率保证总有一个任务在CPU内处理。
S203,所述参数还包括监听程序的最大监听时间,检查所述监听程序的最大监听时间是否缺省;
在具体实施时,还需要对监听程序的最大监听时间进行配置,否者无法监测到异步任务的假死状态。
S204,若是,则默认所述监听程序的最大监听时间为2小时;
在具体实施时,若缺省,则默认所述监听程序的最大监听时间为2小时,同样,所述监听程序的最大监听时间也可以由程序员按需编码配置,确保一个异步任务线程在预设时间内能够处理完成,而未执行完成的认定该任务假死,走失败的处理逻辑。本发明通过设置监听程序,能够实时监测异步任务的状态,进一步的避免造成系统内存的浪费,导致程序运行速度减慢甚至系统崩溃等严重后果。
S205,当获取到有异步任务投递时,检查核心处理线程池中整个工作流是否存在死循环;
在具体实施时,当获取到有异步任务时,程序员按需编码处理业务逻辑部分,以使异步任务形成工作流,进一步检查异步任务中所有的下一节点的流程处理方法(nextNode()方法)中是否有返回值是null的情况,这里只能是显性的检查,因为如果是隐性的通过执行去检查,如果代码有死循环,会直接触发。只有当返回值是null的情况整个工作流才有正常结束的条件,否则只能等待执行超时停止。
可以理解的,利用检查机制实现异步任务中的工作流情况,能够有效的防止程序长时间未有日志输入,同时也未完成任务,也不释放资源,避免造成系统内存的浪费,导致程序运行速度减慢甚至系统崩溃等严重后果。
S206,当所述核心处理线程池中整个工作流不存在死循环时,检查传入的所述异步任务中是否有监听器;
在具体实施时,当异步任务中所有的下一节点的流程处理方法(nextNode()方法)中返回值是null的情况时,检查所传入的异步任务中是否存在监听器,若是,则进行下一流程;若否,则注入默认监听程序。
需要说明的是,监听程序能够判断该异步任务是否处于假死状态,当超过预设的参数(缺省值为2小时)时,则走失败的处理逻辑。本发明通过设置监听程序,能够实时监测异步任务的状态,进一步的避免造成系统内存的浪费,导致程序运行速度减慢甚至系统崩溃等严重后果。
S207,当传入的所述异步任务中存在监听器时,将所述异步任务包装成一个线程,将所述线程投入所述核心处理线程池中处理。
在具体实施时,当所传入的异步任务中存在监听器时,程序员按照需求来编码,首先在框架内部定义一个接口A,同时传入接口A的各个实现类,并且定义编码了各个方法的对象实例。
将上述异步任务实例化一个新的进程,并且按照上述监听程序的超时时间,实例化一个超时监听器,监听此线程,将此线程投入核心线程池中。系统控制所述线程执行业务流程方法(exec()方法),当上述业务流程方法执行抛出异常时会实时记录日志,需要说明的是,所述日志会区别是超时抛出还是业务流程方法内部执行异常,以便于排查异常原因。
当上述业务流程方法执行完成后,会产生相应的返回值,程序员需要在自己的实现类的这个方法里实现自己的业务逻辑处理流程,这个方法是被监听程序(watchDog)监听的,此方法会抛出异常,返回值为布尔类型,用来表示是执行成功了还是失败了。当超时时会抛出执行超时的异常。
当所述返回值为true时,则执行正常的流程结算方法,在该流程结算方法中,向系统发送成功通知并获取下一个要处理的节点,执行下一节点的流程处理方法。例如,系统获取下一个要处理的节点,借助了单向链表的思想,相当于一个指针,指向下一个要处理的任务,一个个循环下去,完成一整个工作流的任务。此方法的返回值必须是A的一个实现类,保证安全性。若获取不到下一个节点或此节点返回为空,则任务整个工作流任务完成。需要指出的是,方法中完全可以由程序员定义获取下一个节点的方式,可以与DAO层结合,获取数据库里的数据进行组装配置等,最大程度的将程序员从繁琐的配置文件中解放出来。
当所述返回值为false时,则执行异常捕捉方法(onFail()方法),发送失败通知或用来做分布式事务的回滚等操作;
当上述正常的流程结算方法执行完成后,执行下一节点的流程处理方法(nextNode()方法),所述下一节点的流程处理方法会产生另一个返回值,当该返回值为null时则为最后一个节点,终止此工作流,若不为空,则以此该返回值为参数,控制所述线程重复执行业务流程方法、正常的流程结算方法、下一节点的流程处理方法,直到下一节点的流程处理方法的返回值为null,则为最后一个节点,终止此工作流。可以理解的,所述下一节点的流程处理方法实际上是一个递归的思想。
综上,本发明上述实施例当中的框架流程处理方法,通过配置核心处理线程池中核心线程数,确保CPU内一直存在一个任务,当获取到异步任务投递时,能够检查核心处理线程池中整个工作流的工作状态,根据不同的状态采用相应的处理方法,同时,在工作流不存在死循环时,有效的注入监听程序,能够对整体工作流进行有效的监控,针对异步处理线程有完善的检查和监听机制,保证内存的安全性,进一步的,将工作流处理配置融于代码逻辑里,更具灵活性,同时由于异步任务是针对同步任务而言的,因此该方法还能够处理同步任务。
实施例三
请参阅图3,所示为本发明第三实施例中的框架流程处理方法,所述方法具体包括步骤S301至S311:
S301,当获取到工程任务启动指令时,检查应用属性文件中所配置的参数是否缺省,所述参数包括核心处理线程池中核心线程数;
在具体实施时,当获取到工程任务启动指令时,程序员按需编码处理业务逻辑部分,检查应用属性文件中的核心处理线程池中核心线程数是否缺省。
S302,若是,则根据CPU核心数默认配置所述核心处理线程池中核心线程数,同时启动所述核心处理线程池;
在具体实施时,若缺省,缺省值为CPU核心数*2+1,另外,所述核心处理线程池中核心线程数也可以由程序员按需编码配置核心线程数的配置,根据计算机CPU调度策略,可大概率保证总有一个任务在CPU内处理。
S303,所述参数还包括监听程序的最大监听时间,检查所述监听程序的最大监听时间是否缺省;
在具体实施时,还需要对监听程序的最大监听时间进行配置,否者无法监测到异步任务的假死状态。
S304,若是,则默认所述监听程序的最大监听时间为2小时;
在具体实施时,若缺省,则默认所述监听程序的最大监听时间为2小时,同样,所述监听程序的最大监听时间也可以由程序员按需编码配置,确保一个异步任务线程在预设时间内能够处理完成,而未执行完成的认定该任务假死,走失败的处理逻辑。本发明通过设置监听程序,能够实时监测异步任务的状态,进一步的避免造成系统内存的浪费,导致程序运行速度减慢甚至系统崩溃等严重后果。
S305,当获取到有异步任务投递时,检查核心处理线程池中整个工作流是否存在死循环;
在具体实施时,当获取到有异步任务时,程序员按需编码处理业务逻辑部分,以使异步任务形成工作流,进一步检查异步任务中所有的下一节点的流程处理方法(nextNode()方法)中是否有返回值是null的情况,这里只能是显性的检查,因为如果是隐性的通过执行去检查,如果代码有死循环,会直接触发。只有当返回值是null的情况整个工作流才有正常结束的条件,否则只能等待执行超时停止。
可以理解的,利用检查机制实现异步任务中的工作流情况,能够有效的防止程序长时间未有日志输入,同时也未完成任务,也不释放资源,避免造成系统内存的浪费,导致程序运行速度减慢甚至系统崩溃等严重后果。
S306,当所述核心处理线程池中整个工作流不存在死循环时,检查传入的所述异步任务中是否有监听器;
在具体实施时,当异步任务中所有的下一节点的流程处理方法(nextNode()方法)中返回值是null的情况时,检查所传入的异步任务中是否存在监听器,若是,则进行下一流程;若否,则注入默认监听程序。
需要说明的是,监听程序能够判断该异步任务是否处于假死状态,当超过预设的参数(缺省值为2小时)时,则走失败的处理逻辑。本发明通过设置监听程序,能够实时监测异步任务的状态,进一步的避免造成系统内存的浪费,导致程序运行速度减慢甚至系统崩溃等严重后果。
S307,当传入的所述异步任务中存在监听器时,将所述异步任务实例化一个线程,并将所述线程投入所述核心处理线程池中;
在具体实施时,当所传入的异步任务中存在监听器时,程序员按照需求来编码,首先在框架内部定义一个接口A,同时传入接口A的各个实现类,并且定义编码了各个方法的对象实例。
将上述异步任务实例化一个新的进程,并且按照上述监听程序的超时时间,实例化一个超时监听器,监听此线程,将此线程投入核心线程池中。系统控制所述线程执行业务流程方法(exec()方法),当上述业务流程方法执行抛出异常时会实时记录日志,需要说明的是,所述日志会区别是超时抛出还是业务流程方法内部执行异常,以便于排查异常原因。
S308,控制所述线程执行业务流程方法,并输出第一返回值;
当上述业务流程方法执行完成后,会产生相应的第一返回值。程序员需要在自己的实现类的这个方法里实现自己的业务逻辑处理流程,这个方法是被监听程序(watchDog)监听的,此方法会抛出异常,返回值为布尔类型,用来表示是执行成功了还是失败了。当超时时会抛出执行超时的异常。
S309,当所述第一返回值为true时,发送成功通知并执行下一节点的流程处理方法;
在具体实施时,当所述第一返回值为true时,则执行正常的流程结算方法,在该流程结算方法中,向系统发送成功通知并获取下一个要处理的节点,执行下一节点的流程处理方法。例如,系统获取下一个要处理的节点,借助了单向链表的思想,相当于一个指针,指向下一个要处理的任务,一个个循环下去,完成一整个工作流的任务。此方法的返回值必须是A的一个实现类,保证安全性。若获取不到下一个节点或此节点返回为空,则任务整个工作流任务完成。需要指出的是,方法中完全可以由程序员定义获取下一个节点的方式,可以与DAO层结合,获取数据库里的数据进行组装配置等,最大程度的将程序员从繁琐的配置文件中解放出来。
S310,当下一节点的流程处理方法执行完成时,判断所述下一节点的流程处理方法的第二返回值是否为null;
在具体实施时,当所述返回值为false时,则执行异常捕捉方法(onFail()方法),发送失败通知或用来做分布式事务的回滚等操作;
S311,若否,则以所述第二返回值为参数,重复执行上述控制所述线程执行业务流程方法,并输出第一返回值的步骤。
在具体实施时,当上述正常的流程结算方法执行完成后,执行下一节点的流程处理方法(nextNode()方法),所述下一节点的流程处理方法会产生另一个返回值,当该返回值为null时则为最后一个节点,终止此工作流,若不为空,则以此该返回值为参数,控制所述线程重复执行业务流程方法、正常的流程结算方法、下一节点的流程处理方法,直到下一节点的流程处理方法的返回值为null,则为最后一个节点,终止此工作流。可以理解的,所述下一节点的流程处理方法实际上是一个递归的思想。
综上,本发明上述实施例当中的框架流程处理方法,通过配置核心处理线程池中核心线程数,确保CPU内一直存在一个任务,当获取到异步任务投递时,能够检查核心处理线程池中整个工作流的工作状态,根据不同的状态采用相应的处理方法,同时,在工作流不存在死循环时,有效的注入监听程序,能够对整体工作流进行有效的监控,针对异步处理线程有完善的检查和监听机制,保证内存的安全性,进一步的,将工作流处理配置融于代码逻辑里,更具灵活性,同时由于异步任务是针对同步任务而言的,因此该方法还能够处理同步任务。
实施例四
本发明另一方面还提出一种框架流程处理系统,请查阅图4,所示为本发明第四实施例中的框架流程处理系统,所述系统包括:
第一检测模块11,用于当获取到有异步任务投递时,检查所述核心处理线程池中整个工作流是否存在死循环;
进一步的,所述第一检测模块11包括:
第一检查单元,用于当获取到工程任务启动指令时,检查应用属性文件中所配置的参数是否缺省,所述参数包括核心处理线程池中核心线程数;
第一配置单元,用于当所述应用属性文件中所配置的参数缺省时,根据CPU核心数默认配置所述核心处理线程池中核心线程数,同时启动所述核心处理线程池。
第二检查单元,用于当获取到工程任务启动指令时,检查应用属性文件中所配置的监听程序的最大监听时间是否缺省;
第二配置单元,用于当所述监听程序的最大监听时间缺省时,默认所述监听程序的最大监听时间为2小时。
第二检测模块12,用于当所述核心处理线程池中整个工作流不存在死循环时,检查传入的所述异步任务中是否有监听器;
处理模块13,用于当传入的所述异步任务中存在监听器时,将所述异步任务包装成一个线程,将所述线程投入所述核心处理线程池中处理。
进一步的,所述处理模块13包括:
第一处理单元,用于当传入的所述异步任务中存在监听器时,将所述异步任务实例化一个线程,并将所述线程投入所述核心处理线程池中;
第二处理单元,用于控制所述线程执行业务流程方法,并输出第一返回值;
第一传递单元,用于当所述第一返回值为true时,发送成功通知并执行下一节点的流程处理方法;
第三处理单元,用于当下一节点的流程处理方法执行完成时,判断所述下一节点的流程处理方法的第二返回值是否为null;
第四处理单元,用于当所述第二返回值不为null时,以所述第二返回值为参数,重复执行上述步骤。
上述各模块、单元被执行时所实现的功能或操作步骤与上述方法实施例大体相同,在此不再赘述。
综上,本发明上述实施例当中的框架流程处理方法,通过第一检查单元检查核心处理线程池中核心线程数,第一配置单元配置核心处理线程池中核心线程数,确保CPU内一直存在一个任务,当获取到异步任务投递时,能够检查核心处理线程池中整个工作流的工作状态,根据不同的状态采用相应的处理方法,同时,通过第二检查单元检查监听程序的最大监听时间,第二配置单元配置监听程序的最大监听时间,在工作流不存在死循环时,有效的注入监听程序,能够对整体工作流进行有效的监控,针对异步处理线程有完善的检查和监听机制,保证内存的安全性,进一步的,处理模块将工作流处理配置融于代码逻辑里,更具灵活性,同时由于异步任务是针对同步任务而言的,因此该方法还能够处理同步任务。
实施例五
本发明还提出一种框架流程处理装置,请参阅图5,所示为本发明第五实施例中的框架流程处理装置,包括处理器10、存储器20以及存储在存储器20上并可在处理器10上运行的计算机程序30,所述处理器10执行所述计算机程序30时实现上述的框架流程处理方法。
在具体实施时,当处理器10获取到有异步任务投递时,检查核心处理线程池中整个工作流是否存在死循环;
当所述核心处理线程池中整个工作流不存在死循环时,处理器10检查传入的所述异步任务中是否有监听器;
当传入的所述异步任务中存在监听器时,处理器10将所述异步任务包装成一个线程,将所述线程投入所述核心处理线程池中处理。
其中,处理器10在一些实施例中可以是电子控制单元(Electronic ControlUnit,简称ECU,又称行车电脑)、中央处理器(Central Processing Unit,CPU)、控制器、微控制器、微处理器或其他数据处理芯片,用于运行存储器20中存储的程序代码或处理数据,例如执行访问限制程序等。
其中,存储器20至少包括一种类型的可读存储介质,所述可读存储介质包括闪存、硬盘、多媒体卡、卡型存储器(例如,SD或DX存储器等)、磁性存储器、磁盘、光盘等。存储器20在一些实施例中可以是车辆的内部存储单元,例如该车辆的硬盘。存储器20在另一些实施例中也可以是车辆的外部存储装置,例如车辆上配备的插接式硬盘,智能存储卡(SmartMedia Card,SMC),安全数字(Secure Digital,SD)卡,闪存卡(Flash Card)等。进一步地,存储器20还可以既包括车辆的内部存储单元也包括外部存储装置。存储器20不仅可以用于存储安装于车辆的应用软件及各类数据,还可以用于暂时地存储已经输出或者将要输出的数据。
需要指出的是,图5示出的结构并不构成对停车管理装置的限定,在其它实施例当中,该停车管理装置可以包括比图示更少或者更多的部件,或者组合某些部件,或者不同的部件布置。
本发明当中的框架流程处理装置,通过当获取到异步任务投递时,能够检查核心处理线程池中整个工作流的工作状态,根据不同的状态采用相应的处理方法,同时在工作流不存在死循环时,有效的注入监听程序,能够对整体工作流进行有效的监控,针对异步处理线程有完善的检查和监听机制,保证内存的安全性,进一步的,将工作流处理配置融于代码逻辑里,更具灵活性,同时由于异步任务是针对同步任务而言的,因此该方法还能够处理同步任务。
本发明实施例还提出一种可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现如上述的框架流程处理方法。
本领域技术人员可以理解,在流程图中表示或在此以其他方式描述的逻辑和/或步骤,例如,可以被认为是用于实现逻辑功能的可执行指令的定序列表,可以具体实现在任何计算机可读介质中,以供指令执行系统、装置或设备(如基于计算机的系统、包括处理器的系统或其他可以从指令执行系统、装置或设备取指令并执行指令的系统)使用,或结合这些指令执行系统、装置或设备而使用。就本说明书而言,“计算机可读介质”可以是任何可以包含、存储、通信、传播或传输程序以供指令执行系统、装置或设备或结合这些指令执行系统、装置或设备而使用的装置。
计算机可读介质的更具体的示例(非穷尽性列表)包括以下:具有一个或多个布线的电连接部(电子装置),便携式计算机盘盒(磁装置),随机存取存储器(RAM),只读存储器(ROM),可擦除可编辑只读存储器(EPROM或闪速存储器),光纤装置,以及便携式光盘只读存储器(CDROM)。另外,计算机可读介质甚至可以是可在其上打印所述程序的纸或其他合适的介质,因为可以例如通过对纸或其他介质进行光学扫描,接着进行编辑、解译或必要时以其他合适方式进行处理来以电子方式获得所述程序,然后将其存储在计算机存储器中。
应当理解,本发明的各部分可以用硬件、软件、固件或它们的组合来实现。在上述实施方式中,多个步骤或方法可以用存储在存储器中且由合适的指令执行系统执行的软件或固件来实现。例如,如果用硬件来实现,和在另一实施方式中一样,可用本领域公知的下列技术中的任一项或它们的组合来实现:具有用于对数据信号实现逻辑功能的逻辑门电路的离散逻辑电路,具有合适的组合逻辑门电路的专用集成电路,可编程门阵列(PGA),现场可编程门阵列(FPGA)等。
在本说明书的描述中,参考术语“一个实施例”、“一些实施例”、“示例”、“具体示例”、或“一些示例”等的描述意指结合该实施例或示例描述的具体特征、结构、材料或者特点包含于本发明的至少一个实施例或示例中。在本说明书中,对上述术语的示意性表述不一定指的是相同的实施例或示例。而且,描述的具体特征、结构、材料或者特点可以在任何的一个或多个实施例或示例中以合适的方式结合。
以上所述实施例仅表达了本发明的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对本发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干变形和改进,这些都属于本发明的保护范围。因此,本发明专利的保护范围应以所附权利要求为准。
Claims (10)
1.一种框架流程处理方法,其特征在于,所述方法包括:
当获取到有异步任务投递时,检查核心处理线程池中整个工作流是否存在死循环;
当所述核心处理线程池中整个工作流不存在死循环时,检查传入的所述异步任务中是否有监听器;
当传入的所述异步任务中存在监听器时,将所述异步任务包装成一个线程,将所述线程投入所述核心处理线程池中处理。
2.根据权利要求1所述的框架流程处理方法,其特征在于,所述当获取到有异步任务投递时,检查核心处理线程池中整个工作流是否存在死循环的步骤之前,所述方法还包括:
当获取到工程任务启动指令时,检查应用属性文件中所配置的参数是否缺省,所述参数包括核心处理线程池中核心线程数;
若是,则根据CPU核心数默认配置所述核心处理线程池中核心线程数,同时启动所述核心处理线程池。
3.根据权利要求2所述的框架流程处理方法,其特征在于,所述参数还包括监听程序的最大监听时间,所述检查应用属性文件中所配置的参数是否缺省的步骤还包括:
检查所述监听程序的最大监听时间是否缺省;
若是,则默认所述监听程序的最大监听时间为2小时。
4.根据权利要求1所述的框架流程处理方法,其特征在于,所述当获取到有异步任务投递时,检查核心处理线程池中整个工作流是否存在死循环的步骤还包括:
检查所述异步任务中所有的下一节点的流程处理方法中的返回值是否均为null;
若是,则所述核心处理线程池中整个工作流不存在死循环。
5.根据权利要求1所述的框架流程处理方法,其特征在于,所述将所述异步任务包装成一个线程,将所述线程投入所述核心处理线程池中处理的步骤包括:
当传入的所述异步任务中存在监听器时,将所述异步任务实例化一个线程,并将所述线程投入所述核心处理线程池中;
控制所述线程执行业务流程方法,并输出第一返回值;
当所述第一返回值为true时,发送成功通知并执行下一节点的流程处理方法;
当下一节点的流程处理方法执行完成时,判断所述下一节点的流程处理方法的第二返回值是否为null;
若否,则以所述第二返回值为参数,重复执行上述控制所述线程执行业务流程方法,并输出第一返回值的步骤。
6.根据权利要求5所述的框架流程处理方法,其特征在于,所述控制所述线程执行业务流程方法,并输出第一返回值的步骤还包括:
当抛出异常时,区别所述异常的类型并实时记录日志。
7.根据权利要求5所述的框架流程处理方法,其特征在于,所述控制所述线程执行业务流程方法,并输出第一返回值的步骤之后,所述方法还包括:
当所述第一返回值为false时,发送失败通知或对所述线程执行回滚操作。
8.一种框架流程处理系统,其特征在于,所述系统包括:
第一检测模块,用于当获取到有异步任务投递时,检查核心处理线程池中整个工作流是否存在死循环;
第二检测模块,用于当所述核心处理线程池中整个工作流不存在死循环时,检查传入的所述异步任务中是否有监听器;
处理模块,用于当传入的所述异步任务中存在监听器时,将所述异步任务包装成一个线程,将所述线程投入所述核心处理线程池中处理。
9.一种可读存储介质,其上存储有计算机程序,其特征在于,该程序被处理器执行时实现如权利要求1至7任一所述的框架流程处理方法。
10.一种框架流程处理装置,包括处理器、存储器以及存储在存储器上并可在处理器上运行的计算机程序,其特征在于,所述处理器执行所述程序时实现如权利要求1至7任一所述的框架流程处理方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110901407.1A CN113656064B (zh) | 2021-08-06 | 2021-08-06 | 一种框架流程处理方法、系统、可读存储介质及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110901407.1A CN113656064B (zh) | 2021-08-06 | 2021-08-06 | 一种框架流程处理方法、系统、可读存储介质及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN113656064A true CN113656064A (zh) | 2021-11-16 |
CN113656064B CN113656064B (zh) | 2024-04-09 |
Family
ID=78490498
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110901407.1A Active CN113656064B (zh) | 2021-08-06 | 2021-08-06 | 一种框架流程处理方法、系统、可读存储介质及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113656064B (zh) |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111240812A (zh) * | 2018-11-28 | 2020-06-05 | 中国移动通信集团广东有限公司 | 任务执行方法及装置 |
CN112988356A (zh) * | 2021-03-30 | 2021-06-18 | 北京大米科技有限公司 | 异步调用方法、装置、存储介质及电子设备 |
-
2021
- 2021-08-06 CN CN202110901407.1A patent/CN113656064B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111240812A (zh) * | 2018-11-28 | 2020-06-05 | 中国移动通信集团广东有限公司 | 任务执行方法及装置 |
CN112988356A (zh) * | 2021-03-30 | 2021-06-18 | 北京大米科技有限公司 | 异步调用方法、装置、存储介质及电子设备 |
Also Published As
Publication number | Publication date |
---|---|
CN113656064B (zh) | 2024-04-09 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110737534B (zh) | 任务的处理方法、装置和服务器 | |
WO2021196074A1 (zh) | 任务调度方法及装置 | |
US9165136B1 (en) | Supervising execution of untrusted code | |
CN109871225B (zh) | 电子控制单元ecu升级方法及ecu | |
CN113468009B (zh) | 一种压力测试方法、装置、电子设备及存储介质 | |
CN104035536A (zh) | 一种嵌入式系统监控及复位控制方法 | |
CN110471790B (zh) | 计算机设备、产品及其数据任务的处理方法和装置 | |
CN105404559A (zh) | 在数据处理装置中进行除错 | |
CN107861715B (zh) | 一种业务组建系统及方法 | |
CN105824709B (zh) | 一种临界区访问方法及装置 | |
CN110704131B (zh) | 一种html5应用调用原生应用的方法和装置 | |
CN112068960A (zh) | 一种cpu资源分配方法、装置、存储介质及设备 | |
CN110716943A (zh) | 缺失数据补录方法、装置、计算机设备及存储介质 | |
CN113656064A (zh) | 一种框架流程处理方法、系统、可读存储介质及装置 | |
CN107870777A (zh) | 一种热补丁实现方法及装置、终端 | |
CN111241594B (zh) | 交易信息的加签方法、装置、计算机设备和存储介质 | |
CN112181388A (zh) | Sdk组件的初始化方法、装置、存储介质及控制终端 | |
CN104346306A (zh) | 高完整性dma操作的系统和方法 | |
CN114706733B (zh) | 切面程序异常的监控方法和装置 | |
CN113220495B (zh) | 一种进程异常事件处理方法、装置、电子设备及存储介质 | |
JP2017043166A (ja) | 車両制御装置 | |
CN114327981A (zh) | 一种功能安全机制的安全校验系统、方法及装置 | |
CN112506626A (zh) | 一种应用程序的启动方法、计算机设备及存储介质 | |
JP6874102B2 (ja) | 不正検知電子制御ユニット、車載ネットワークシステム及び不正検知方法 | |
CN110442404A (zh) | 一种对象释放方法、装置、设备和存储介质 |
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 |