工作流处理方法、装置、计算机设备及存储介质
技术领域
本发明涉及计算机数据处理领域,尤其涉及一种工作流处理方法、装置、计算机设备及计算机可读存储介质。
背景技术
当今社会中,无论是工作还是生活都离不开人与人之间的协同工作。为了提升协同工作的效率,在计算机领域中工作流(Work Flow)的应用越来越广泛。工作流已广泛应用于办公室自动化系统,电子政务系统的审批流程中。工作流就是工作流程的计算模型,即将工作流程中的工作如何前后组织在一起的逻辑和规则在计算机中以恰当的模型进行表示并对其实施计算。工作流要解决的主要问题是:为实现某个业务目标,在多个参与者之间,利用计算机,按某种预定规则自动传递文档、信息或者任务。但是现有技术中的工作流引擎无法实现并发执行,导致工作流引擎功能单一,使用体验差等问题。
发明内容
本发明实施例提供了一种工作流处理方法、装置、计算机设备及存储介质,旨在解决工作流引擎无法实现并发执行的问题。
第一方面,本发明实施例提供了一种工作流处理方法,其包括:
创建工作流引擎,所述工作流引擎包括流程节点;
获取所述流程节点对应的节点状态,所述节点状态包括待执行状态以及正在执行状态;
若所述流程节点的节点状态由待执行状态转换为正在执行状态,获取所述流程节点对应的节点事件;
创建与所述节点事件对应的线程任务,并启动处理线程以执行所述线程任务。
第二方面,本发明实施例提供了一种工作流处理装置,其包括:
第一创建单元,用于创建工作流引擎,所述工作流引擎包括流程节点;
第一获取单元,用于获取所述流程节点对应的节点状态,所述节点状态包括待执行状态以及正在执行状态;
第二获取单元,用于若所述流程节点的节点状态由待执行状态转换为正在执行状态,获取所述流程节点对应的节点事件;
第二创建单元,用于创建与所述节点事件对应的线程任务,并启动处理线程以执行所述线程任务。
第三方面,本发明实施例又提供了一种计算机设备,其包括存储器、处理器及存储在所述存储器上并可在所述处理器上运行的计算机程序,其中,所述处理器执行所述程序时实现上述工作流处理方法。
第四方面,本发明实施例还提供了一种计算机可读存储介质,其中所述计算机可读存储介质存储有计算机程序,所述计算机程序包括程序指令,所述程序指令当被处理器执行时使所述处理器执行上述工作流处理方法。
本发明实施例提供一种工作流处理方法、装置、计算机设备及计算机可读存储介质。其中方法包括:创建工作流引擎,所述工作流引擎包括流程节点;获取所述流程节点对应的节点状态,所述节点状态包括待执行状态以及正在执行状态;若所述流程节点的节点状态由待执行状态转换为正在执行状态,获取所述流程节点对应的节点事件;创建与所述节点事件对应的线程任务,并启动处理线程以执行所述线程任务。实施本发明实施例,可实现工作流引擎并发执行,有利于提升工作效率以及用户体验感。
附图说明
为了更清楚地说明本发明实施例技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明一实施例提供的一种工作流处理方法的流程示意图;
图2为本发明一实施例提供的一种工作流处理方法的子流程示意图;
图3为本发明一实施例提供的一种工作流处理方法的子流程示意图;
图4为本发明一实施例提供的一种工作流处理方法的流程示意图;
图5为本发明一实施例提供的一种工作流处理方法的流程示意图;
图6为本发明一实施例提供的一种工作流处理方法的流程示意图;
图7为本发明一实施例提供的一种工作流处理方法的流程示意图;
图8为本发明一实施例提供的一种工作流处理装置的示意性框图;
图9为本发明一实施例提供的一种工作流处理装置中第二创建单元的示意性框图;
图10为本发明一实施例提供的一种工作流处理装置中第一计算单元的示意性框图;
图11为本发明一实施例提供的一种工作流处理装置的另一示意性框图;
图12为本发明一实施例提供的一种工作流处理装置的另一示意性框图;
图13为本发明一实施例提供的一种计算机设备的示意性框图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
应当理解,当在本说明书和所附权利要求书中使用时,术语“包括”和“包含”指示所描述特征、整体、步骤、操作、元素和/或组件的存在,但并不排除一个或一个以上其它特征、整体、步骤、操作、元素、组件和/或其集合的存在或添加。
还应当理解,在此本发明说明书中所使用的术语仅仅是出于描述特定实施例的目的而并不意在限制本发明。如在本发明说明书和所附权利要求书中所使用的那样,除非上下文清楚地指明其它情况,否则单数形式的“一”、“一个”及“该”意在包括复数形式。
请参照图1,其为本发明一实施例提供的一种工作流处理方法的流程示意图。该工作流处理方法可应用于服务器、台式电脑、手提电脑、平板电脑、个人数字助理(PDA)、智能手机(如Android手机、IOS手机等)等终端中。具体地,该方法包括步骤S110-S140。
S110,创建工作流引擎,所述工作流引擎包括流程节点。
具体实施中,该工作流引擎包括但不限于Shark、osworkflow、jbpm、Acitiviti等工作流引擎。具体地,假设该工作流引擎为Acitiviti工作流引擎。具体地,创建Acitiviti工作流引擎可通过如下任意一种方式实现:
(1)通过ProcessEngineConfiguration的createStandalone ProcessEngineConfiguration()方法建立工作流引擎。
(2)通过ProcessEngineConfiguration的createProcessEngineConfigurationFromResource()方法加载*.cfg.xml文件建立工作流引擎。
(3)通过ProcessEngines的getDefaultProcessEngine()方法获取默认的工作流引擎。
其中,所述工作流引擎可设置多个流程节点。流程节点是指当工程需若干个不同程序(流程)或分若干个阶段来完成时,某一程序或某一阶段结束,另一程序或某一阶段开始时的转接点类别点或时间点。
S120,获取所述流程节点对应的节点状态,所述节点状态包括待执行状态以及正在执行状态。
具体实施中,通过在所述工作流引擎中设置寄存器组,该寄存器组包括与各个流程节点一一对应的状态寄存器,该状态寄存器用于存放表示流程节点对应的节点状态的状态值。例如,假设状态值“0000000”表示待执行状态,状态值“00001111”表示正在执行状态。通过监控该寄存器组的各个寄存器的状态值,可实现对所述工作流引擎中的流程节点对应的节点状态的实时监控。
S130,若所述流程节点的节点状态由待执行状态转换为正在执行状态,获取所述流程节点对应的节点事件。
具体实施中,若所述流程节点对应的寄存器的状态值由“0000000”转换为“00001111”,则判定所述流程节点对应的节点状态由待执行状态转换为正在执行状态。若所述流程节点对应的节点状态由待执行状态转换为正在执行状态,获取所述流程节点对应的节点事件。
其中,每一个流程节点对应唯一的节点标识码,每一个节点事件对应唯一的事件标识码。通过读取预先存储于数据库中的映射表,可获取该节点标识码与事件标识码的映射关系。例如,流程节点A的节点标识码为11001,节点事件a的事件标识码为22001,通过读取映射表可获取到节点标识码11001对应的事件标识码为22001。若流程节点A的流程节点对应的节点状态由待执行状态转换为正在执行状态,则根据流程节点A的节点标识码以及映射表可确定对应的节点事件的事件标识码,从而获取到所述流程节点对应的节点事件为节点事件a。
S140,创建与所述节点事件对应的线程任务,并启动处理线程以执行所述线程任务。
具体请参照图2,其为本发明一实施例提供的一种工作流处理方法的子流程示意图。进一步地,步骤S140中的启动处理线程以执行所述线程任务包括步骤S141-S144。
S141,计算执行所述线程任务所需的预测时间。
具体请参照图3,其为本发明一实施例提供的一种工作流处理方法的子流程示意图。进一步地,步骤S141中的计算执行所述线程任务所需的预测时间包括步骤S1411-S1412。
S1411,获取已执行的线程任务所消耗的平均时间,以及获取所述线程任务的任务数量。
具体实施中,获取已执行的线程任务所消耗的平均时间具体可以为获取预设时间段内已执行的线程任务所消耗的平均时间。其中,该预设时间段可以为是当前时间与上一次处理线程数量调整时间的时间差值。其中,所述上一次处理线程调整时间为最近一次对处理线程作出调整的时间点。例如,假设当前时间为t,上一次线程数量调整时间为t-3000(毫秒),则该预设时间段为3000毫秒。又或者该预设时间段可根据用户实际需求进行设定,本发明实施例并不对预设时间段的长度进行限定。
具体地,预设时间段为3000毫秒,在预设时间段内已执行的线程任务数量为100个,则单个已执行的线程任务所消耗的平均时间为30毫秒。
S1412,根据所述平均时间以及所述任务数量计算执行所述线程任务所需的预测时间。
具体实施中,根据所述平均时间以及所述任务数量计算执行所述线程任务所需的预测时间具体为将所述平均时间与所述任务数量进行求积计算,将计算所得求积结果确定为所述预测时间。例如,假设单个已执行的线程任务所消耗的平均时间为30毫秒,且所获取到的线程任务的任务数量为500个,则通过计算所得出的预测时间为15000毫秒。
S142,判断所述预测时间是否大于预设的时间阈值。
具体实施中,该预设的时间阈值可根据用于实际需求进行设定。例如将预设的时间阈值设定为10000毫秒,若所述预设时间大于1000毫秒,则判定所述预测时间大于预设的时间阈值。
S143,若所述预测时间大于预设的时间阈值,计算所述预测时间与预设的时间阈值的时间倍数。
具体实施中,假设预测时间为15000毫秒,时间阈值为10000毫秒,则所述预测时间与预设的时间阈值的时间倍数为1.5。
S144,根据所述时间倍数计算需要启动的处理线程的总数量。
具体请参照图6,其为本发明一实施例提供的一种工作流处理方法的子流程示意图。进一步地,步骤S144中的根据所述时间倍数计算需要启动的处理线程的总数量具体可包括如下步骤:
S1441,获取当前已启动的处理线程数量;
S1442,根据当前已启动的处理线程数量以及所述时间倍数计算需要启动的处理线程的总数量。
具体实施中,根据当前已启动的处理线程数量以及所述时间倍数计算需要启动的处理线程的总数量具体为:将当前已启动的处理线程数量与所述时间倍数的乘积确定为需要启动的处理线程的总数量。例如,所述预测时间与预设的时间阈值的时间倍数为1.5,当前已启动的处理线程数量为10个,则需要启动的处理线程的总数量为15个。
S145,根据所述需要启动的处理线程的总数量启动处理线程以执行所述线程任务。
具体实施中,根据需要启动的处理线程的总数量启动处理线程以执行所述线程任务可以包括如下步骤:计算需要启动的处理线程的总数量与当前已启动的处理线程数量的线程差值,保留当前已启动的处理线程,并启动数量为线程差值的处理线程,以执行所述线程任务。例如,需要启动的处理线程的总数量为15个,当前已启动的处理线程数量为10个,经计算可获得线程差值为5个,则保留当前已启动的10个处理线程,并启动5个处理线程,以执行所述线程任务。
其中,处理线程的启动方式可通过以下任意一种方式实现:(1)继承Thread类;(2)实现Runnable接口;(3)实现Callable接口通过FutureTask包装器来创建Thread线程;(4)使用ExecutorService、Callable、Future实现有返回结果的多线程。
具体地,通过实现Runnable接口实现处理线程的启动包括如下步骤:1、定义类实现Runnable接口。2、覆盖接口中的run方法。3、创建Thread类的对象。4、将Runnable接口的子类对象作为参数传递给Thread类的构造函数。5、调用Thread类的start方法开启线程。通过实现Runnable接口实现多线程的创建,可避免继承Thread类的单继承局限性。
实施本发明实施,通过根据计算得出的预测时间,并根据预测时间以及预设的时间阈值判断是否需要增加处理线程。实施本发明实施例,解决了工作流引擎无法并发执行的问题,可实现工作流引擎处理线程的动态配置,防止出现节点事件因线程堵塞而造成的流转停滞,可提高工作效率以及用户体验。
具体请参照图4,其为本发明一实施例提供的一种工作流处理方法的子流程示意图。进一步地,所述方法还包括:
S210,判断所述节点事件是否满足异常判断条件。
具体实施中,判断所述节点事件是否满足异常判断条件具体包括如下步骤:判断所述节点事件对应的处理时间是否大于预设的处理时间阈值;若所述节点事件对应的处理时间大于预设的处理时间阈值,确定所述节点事件满足异常判断条件。
具体地,通过检测该执行节点事件对应的线程任务所消耗的时间,以获取所述节点事件对应的处理时间。预设的处理时间阈值可以根据实际需求进行设定。例如,预设的处理时间阈值可以设定为10分钟。若节点事件对应的处理时间大于10分钟,则判定所述节点事件满足异常判断条件。
S220,若所述节点事件满足异常判断条件,发送异常警告信息。
具体实施中,发送异常警告信息可通过邮件、短信、即时通讯信息等方式发送至管理人员。
实施本发明实施,通过判断所述节点事件是否满足异常判断条件,若所述节点事件满足异常判断条件,发送异常警告信息。实施本发明实施例可实现对工作流中的异常情况的自动发现,并可自动发送警告信息以便于管理人员快速响应。
具体请参照图5,其为本发明一实施例提供的一种工作流处理方法的子流程示意图。进一步地,所述方法还包括:
S310,在所述工作流引擎生成用于接收外部数据的数据保存类。
具体实施中,该外部数据储存于预设路径的文件夹中,通过数据保存类用于调用该预设路径中的指定文件。该外部数据可以为表格文件或者数据库文件等。该外部数据中至少存储有流程节点、流程节点对应的节点标识码、节点事件、节点事件对应的事件标识码等信息。
S320,通过所述数据保存类获取所述外部数据,并将所述外部数据转换为流程节点以及节点事件。
具体请参照图7,其为本发明一实施例提供的一种工作流处理方法的子流程示意图。进一步地,步骤S320中通过所述数据保存类获取所述外部数据,并将所述外部数据转换为流程节点以及节点事件包括如下步骤:
S321,获取所述外部数据中的流程节点标识码以及节点事件标识码,以及获取所述工作流引擎中的流程节点标识码以及节点事件标识码。
具体实施中,外部数据可以为数据库的数据文件,该外部数据存储有流程节点,该流程节点对应的节点标识码为11001;该外部数据还存储有节点事件,该节点事件对应的事件标识码为22001。通过检索工作流引擎中的数据,获取所述工作流引擎中的流程节点标识码以及节点事件标识码。
S322,判断所述外部数据中的流程节点标识码以及节点事件标识码与所述工作流引擎中的流程节点标识码以及节点事件标识码是否相同。
具体实施中,假设该流程节点对应的节点标识码为11001;该外部数据还存储有节点事件,该节点事件对应的事件标识码为22001。若所获取到的工作流引擎中的流程节点标识码为11001,所获取到的工作流引擎中的节点事件标识码为22001,则可确定所述外部数据中的流程节点标识码以及节点事件标识码与所述工作流引擎中的流程节点标识码以及节点事件标识码相同。
S323,若所述外部数据中的流程节点标识码以及节点事件标识码与所述工作流引擎中的流程节点标识码以及节点事件标识码相同,将工作流引擎中的流程节点标识码以及节点事件标识码对应的流程节点以及节点事件替换为外部数据中的流程节点标识码以及节点事件标识码对应的流程节点以及节点事件。
具体实施中,将工作流引擎中与外部数据对应的节点标识码相同的流程节点替换为存储于外部数据中的流程节点,以及将工作流引擎中与外部数据对应的事件标识码相同的节点事件替换为存储于外部数据中的节点事件。即将工作流引擎中节点标识码为11001的流程节点替换为存储于外部数据中节点标识码为11001的流程节点,以及将工作流引擎中事件标识码为22001的节点事件替换为存储于外部数据中事件标识码为22001的节点事件。
实施本发明实施,通过在工作流引擎生成数据保存类,并通过该数据保存类获取外部数据,然后通过将外部数据转换为流程节点以及节点事件,有利于流程节点数据的快速修改,同时降低了系统的耦合度。
请参照图8,其为本发明一实施例提供的一种工作流处理装置100的示意性框图。所述工作流处理装置100包括第一创建单元110、第一获取单元120、第二获取单元130以及第二创建单元140。
第一创建单元110,用于创建工作流引擎,所述工作流引擎包括流程节点。
具体实施中,该工作流引擎包括但不限于Shark、osworkflow、jbpm、Acitiviti等工作流引擎。具体地,假设该工作流引擎为Acitiviti工作流引擎。具体地,创建Acitiviti工作流引擎可通过如下任意一种方式实现:
(1)通过ProcessEngineConfiguration的createStandalone ProcessEngineConfiguration()方法建立工作流引擎。
(2)通过ProcessEngineConfiguration的createProcessEngineConfigurationFromResource()方法加载*.cfg.xml文件建立工作流引擎。
(3)通过ProcessEngines的getDefaultProcessEngine()方法获取默认的工作流引擎。
其中,所述工作流引擎可设置多个流程节点。流程节点是指当工程需若干个不同程序(流程)或分若干个阶段来完成时,某一程序或某一阶段结束,另一程序或某一阶段开始时的转接点类别点或时间点。
第一获取单元120,用于获取所述流程节点对应的节点状态,所述节点状态包括待执行状态以及正在执行状态。
具体实施中,通过在所述工作流引擎中设置寄存器组,该寄存器组包括与各个流程节点一一对应的状态寄存器,该状态寄存器用于存放表示流程节点对应的节点状态的状态值。例如,假设状态值“0000000”表示待执行状态,状态值“00001111”表示正在执行状态。通过监控该寄存器组的各个寄存器的状态值,可实现对所述工作流引擎中的流程节点对应的节点状态的实时监控。
第二获取单元130,用于若所述流程节点的节点状态由待执行状态转换为正在执行状态,获取所述流程节点对应的节点事件。
具体实施中,若所述流程节点对应的寄存器的状态值由“0000000”转换为“00001111”,则判定所述流程节点对应的节点状态由待执行状态转换为正在执行状态。若所述流程节点对应的节点状态由待执行状态转换为正在执行状态,获取所述流程节点对应的节点事件。
其中,每一个流程节点对应唯一的节点标识码,每一个节点事件对应唯一的事件标识码。通过读取预先存储于数据库中的映射表,可获取该节点标识码与事件标识码的映射关系。例如,流程节点A的节点标识码为11001,节点事件a的事件标识码为22001,通过读取映射表可获取到节点标识码11001对应的事件标识码为22001。若流程节点A的流程节点对应的节点状态由待执行状态转换为正在执行状态,则根据流程节点A的节点标识码以及映射表可确定对应的节点事件的事件标识码,从而获取到所述流程节点对应的节点事件为节点事件a。
第二创建单元140,用于创建与所述节点事件对应的线程任务,并启动处理线程以执行所述线程任务。
具体请参照图9,其为发明一实施例提供的一种工作流处理装置100中第二创建单元140的示意性框图。进一步地,所述第二创建单元140包括第一计算单元141、第一判断单元142、第二计算单元143、数量计算单元144以及启动单元145。
第一计算单元141,用于计算执行所述线程任务所需的预测时间。
具体请参照图10,其为发明一实施例提供的一种工作流处理装置100中第一计算单元141的示意性框图。进一步地,所述第一计算单元141包括第三获取单元1411以及第三计算单元1412。
第三获取单元1411,用于获取已执行的线程任务所消耗的平均时间,以及获取所述线程任务的任务数量。
具体实施中,获取已执行的线程任务所消耗的平均时间具体可以为获取预设时间段内已执行的线程任务所消耗的平均时间。其中,该预设时间段可以为是当前时间与上一次处理线程数量调整时间的时间差值。其中,所述上一次处理线程调整时间为最近一次对处理线程作出调整的时间点。例如,假设当前时间为t,上一次线程数量调整时间为t-3000(毫秒),则该预设时间段为3000毫秒。又或者该预设时间段可根据用户实际需求进行设定,本发明实施例并不对预设时间段的长度进行限定。
具体地,预设时间段为3000毫秒,在预设时间段内已执行的线程任务数量为100个,则单个已执行的线程任务所消耗的平均时间为30毫秒。
第三计算单元1412,用于根据所述平均时间以及所述任务数量计算执行所述线程任务所需的预测时间。
具体实施中,根据所述平均时间以及所述任务数量计算执行所述线程任务所需的预测时间具体为将所述平均时间与所述任务数量进行求积计算,将计算所得求积结果确定为所述预测时间。例如,假设单个已执行的线程任务所消耗的平均时间为30毫秒,且所获取到的线程任务的任务数量为500个,则通过计算所得出的预测时间为15000毫秒。
第一判断单元142,用于判断所述预测时间是否大于预设的时间阈值。
具体实施中,该预设的时间阈值可根据用于实际需求进行设定。例如将预设的时间阈值设定为10000毫秒,若所述预设时间大于1000毫秒,则判定所述预测时间大于预设的时间阈值。
第二计算单元143,用于若所述预测时间大于预设的时间阈值,计算所述预测时间与预设的时间阈值的时间倍数。
具体实施中,假设预测时间为15000毫秒,时间阈值为10000毫秒,则所述预测时间与预设的时间阈值的时间倍数为1.5。
数量计算单元144,用于根据所述时间倍数计算需要启动的处理线程的总数量。
进一步地,所述数量计算单元144具体用于获取当前已启动的处理线程数量;以及用于根据当前已启动的处理线程数量以及所述时间倍数计算需要启动的处理线程的总数量。
具体实施中,根据当前已启动的处理线程数量以及所述时间倍数计算需要启动的处理线程的总数量具体为:将当前已启动的处理线程数量与所述时间倍数的乘积确定为需要启动的处理线程的总数量。例如,所述预测时间与预设的时间阈值的时间倍数为1.5,当前已启动的处理线程数量为10个,则需要启动的处理线程的总数量为15个。
启动单元145,用于根据所述需要启动的处理线程的总数量启动处理线程以执行所述线程任务。
具体实施中,根据需要启动的处理线程的总数量启动处理线程以执行所述线程任务可以包括如下步骤:计算需要启动的处理线程的总数量与当前已启动的处理线程数量的线程差值,保留当前已启动的处理线程,并启动数量为线程差值的处理线程,以执行所述线程任务。例如,需要启动的处理线程的总数量为15个,当前已启动的处理线程数量为10个,经计算可获得线程差值为5个,则保留当前已启动的10个处理线程,并启动5个处理线程,以执行所述线程任务。
其中,处理线程的启动方式可通过以下任意一种方式实现:(1)继承Thread类;(2)实现Runnable接口;(3)实现Callable接口通过FutureTask包装器来创建Thread线程;(4)使用ExecutorService、Callable、Future实现有返回结果的多线程。
具体地,通过实现Runnable接口实现处理线程的启动包括如下步骤:1、定义类实现Runnable接口。2、覆盖接口中的run方法。3、创建Thread类的对象。4、将Runnable接口的子类对象作为参数传递给Thread类的构造函数。5、调用Thread类的start方法开启线程。通过实现Runnable接口实现多线程的创建,可避免继承Thread类的单继承局限性。
实施本发明实施,通过根据计算得出的预测时间,并根据预测时间以及预设的时间阈值判断是否需要增加处理线程。实施本发明实施例,解决了工作流引擎无法并发执行的问题,可实现工作流引擎处理线程的动态配置,防止出现节点事件因线程堵塞而造成的流转停滞,可提高工作效率以及用户体验。
请参照图11,其为本发明一实施例提供的一种工作流处理装置100中的另一示意性框图。进一步地,所述装置还包括第二判断单元210以及发送单元220。
第二判断单元210,用于判断所述节点事件是否满足异常判断条件。
具体实施中,第二判断单元210具体用于判断所述节点事件对应的处理时间是否大于预设的处理时间阈值;若所述节点事件对应的处理时间大于预设的处理时间阈值,确定所述节点事件满足异常判断条件。
具体地,通过检测该执行节点事件对应的线程任务所消耗的时间,以获取所述节点事件对应的处理时间。预设的处理时间阈值可以根据实际需求进行设定。例如,预设的处理时间阈值可以设定为10分钟。若节点事件对应的处理时间大于10分钟,则判定所述节点事件满足异常判断条件。
发送单元220,用于若所述节点事件满足异常判断条件,发送异常警告信息。
具体实施中,发送异常警告信息可通过邮件、短信、即时通讯信息等方式发送至管理人员。
实施本发明实施,通过判断所述节点事件是否满足异常判断条件,若所述节点事件满足异常判断条件,发送异常警告信息。实施本发明实施例可实现对工作流中的异常情况的自动发现,并可自动发送警告信息以便于管理人员快速响应。
请参照图12,其为本发明一实施例提供的一种工作流处理装置100中的另一示意性框图。进一步地,所述装置还包括生成单元310以及转换单元320。
生成单元310,用于在所述工作流引擎生成用于接收外部数据的数据保存类。
具体实施中,该外部数据储存于预设路径的文件夹中,通过数据保存类用于调用该预设路径中的指定文件。该外部数据可以为表格文件或者数据库文件等。该外部数据中至少存储有流程节点、流程节点对应的节点标识码、节点事件、节点事件对应的事件标识码等信息。
转换单元320,用于通过所述数据保存类获取所述外部数据,并将所述外部数据转换为流程节点以及节点事件。
进一步地,转换单元320具体用于获取所述外部数据中的流程节点标识码以及节点事件标识码,以及获取所述工作流引擎中的流程节点标识码以及节点事件标识码。
具体实施中,外部数据可以为数据库的数据文件,该外部数据存储有流程节点,该流程节点对应的节点标识码为11001;该外部数据还存储有节点事件,该节点事件对应的事件标识码为22001。通过检索工作流引擎中的数据,获取所述工作流引擎中的流程节点标识码以及节点事件标识码。
转换单元320还用于判断所述外部数据中的流程节点标识码以及节点事件标识码与所述工作流引擎中的流程节点标识码以及节点事件标识码是否相同;
具体实施中,假设该流程节点对应的节点标识码为11001;该外部数据还存储有节点事件,该节点事件对应的事件标识码为22001。若所获取到的工作流引擎中的流程节点标识码为11001,所获取到的工作流引擎中的节点事件标识码为22001,则可确定所述外部数据中的流程节点标识码以及节点事件标识码与所述工作流引擎中的流程节点标识码以及节点事件标识码相同。
转换单元320还用于若所述外部数据中的流程节点标识码以及节点事件标识码与所述工作流引擎中的流程节点标识码以及节点事件标识码相同,将工作流引擎中的流程节点标识码以及节点事件标识码对应的流程节点以及节点事件替换为外部数据中的流程节点标识码以及节点事件标识码对应的流程节点以及节点事件。
具体实施中,将工作流引擎中与外部数据对应的节点标识码相同的流程节点替换为存储于外部数据中的流程节点,以及将工作流引擎中与外部数据对应的事件标识码相同的节点事件替换为存储于外部数据中的节点事件。即将工作流引擎中节点标识码为11001的流程节点替换为存储于外部数据中节点标识码为11001的流程节点,以及将工作流引擎中事件标识码为22001的节点事件替换为存储于外部数据中事件标识码为22001的节点事件。
实施本发明实施,通过在工作流引擎生成数据保存类,并通过该数据保存类获取外部数据,然后通过将外部数据转换为流程节点以及节点事件,有利于流程节点数据的快速修改,同时降低了系统的耦合度。
上述装置100可以实现为一种计算机程序的形式,计算机程序可以在如图13所示的计算机设备上运行。
请参阅图13,图13是本发明实施例提供的一种计算机设备的示意性框图。该计算机设备500设备可以是终端。该终端可以是智能手机、平板电脑、笔记本电脑、台式电脑、个人数字助理和穿戴式设备等具有通信功能的电子设备。
该计算机设备500包括通过系统总线510连接的处理器520、存储器和网络接口550,其中,存储器可以包括非易失性存储介质530和内存储器540。
该非易失性存储介质530可存储操作系统531和计算机程序532。该计算机程序532被执行时,可使得处理器520执行一种工作流处理方法。
该处理器520用于提供计算和控制能力,支撑整个计算机设备500的运行。
该内存储器540为非易失性存储介质中的计算机程序的运行提供环境,该计算机程序被处理器520执行时,可使得处理器520执行一种工作流处理方法。
该网络接口550用于进行网络通信,如发送分配的任务等。本领域技术人员可以理解,该计算机设备的示意性框图仅仅是与本发明方案相关的部分结构的框图,并不构成对本发明方案所应用于其上的计算机设备500的限定,具体的计算机设备500可以包括比图中所示更多或更少的部件,或者组合某些部件,或者具有不同的部件布置。
其中,所述处理器520用于运行存储在存储器中的程序代码,以实现如下功能:
创建工作流引擎,所述工作流引擎包括流程节点;
获取所述流程节点对应的节点状态,所述节点状态包括待执行状态以及正在执行状态;
若所述流程节点的节点状态由待执行状态转换为正在执行状态,获取所述流程节点对应的节点事件;
创建与所述节点事件对应的线程任务,并启动处理线程以执行所述线程任务。
在一实施例中,处理器520在执行所述启动处理线程以执行所述线程任务的步骤时,具体执行如下步骤:
计算执行所述线程任务所需的预测时间;
判断所述预测时间是否大于预设的时间阈值;
若所述预测时间大于预设的时间阈值,计算所述预测时间与预设的时间阈值的时间倍数;
根据所述时间倍数计算需要启动的处理线程的总数量;
根据所述需要启动的处理线程的总数量启动处理线程以执行所述线程任务。
在一实施例中,处理器520在执行所述计算执行所述线程任务所需的预测时间的步骤时,具体执行如下步骤:
获取已执行的线程任务所消耗的平均时间,以及获取所述线程任务的任务数量;
根据所述平均时间以及所述任务数量计算执行所述线程任务所需的预测时间。
在一实施例中,所述处理器520还用于运行存储在存储器中的程序代码,以实现如下功能:
判断所述节点事件是否满足异常判断条件;
若所述节点事件满足异常判断条件,发送异常警告信息。
在一实施例中,所述处理器520还用于运行存储在存储器中的程序代码,以实现如下功能:
在所述工作流引擎生成用于接收外部数据的数据保存类;
通过所述数据保存类获取所述外部数据,并将所述外部数据转换为流程节点以及节点事件。
在一实施例中,处理器520在执行根据所述时间倍数计算需要启动的处理线程的总数量的步骤时,具体执行如下步骤:
获取当前已启动的处理线程数量;
根据当前已启动的处理线程数量以及所述时间倍数计算需要启动的处理线程的总数量。
在一实施例中,处理器520在执行所述通过所述数据保存类获取所述外部数据,并将所述外部数据转换为流程节点以及节点事件的步骤时,具体执行如下步骤:
获取所述外部数据中的流程节点标识码以及节点事件标识码,以及获取所述工作流引擎中的流程节点标识码以及节点事件标识码;
判断所述外部数据中的流程节点标识码以及节点事件标识码与所述工作流引擎中的流程节点标识码以及节点事件标识码是否相同;
若所述外部数据中的流程节点标识码以及节点事件标识码与所述工作流引擎中的流程节点标识码以及节点事件标识码相同,将工作流引擎中的流程节点标识码以及节点事件标识码对应的流程节点以及节点事件替换为外部数据中的流程节点标识码以及节点事件标识码对应的流程节点以及节点事件。
应当理解,在本发明实施例中,处理器520可以是中央处理单元(CentralProcessing Unit,CPU),该处理器520还可以是其他通用处理器、数字信号处理器(DigitalSignal Processor,DSP)、专用集成电路(Application Speci fic Integrated Circuit,ASIC)、现成可编程门阵列(Field-Programmable Gate Array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。其中,通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。
本领域技术人员可以理解,该计算机设备500的示意性框图并不构成对计算机设备500的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。
在本发明的另一实施例中提供一种计算机可读存储介质,该计算机可读存储介质存储有计算机程序,其中计算机程序包括程序指令。所述程序指令被处理器执行时实现如下步骤:
创建工作流引擎,所述工作流引擎包括流程节点;
获取所述流程节点对应的节点状态,所述节点状态包括待执行状态以及正在执行状态;
若所述流程节点的节点状态由待执行状态转换为正在执行状态,获取所述流程节点对应的节点事件;
创建与所述节点事件对应的线程任务,并启动处理线程以执行所述线程任务。
在一实施例中,所述程序指令被处理器执行以实现所述启动处理线程以执行所述线程任务的步骤时,具体实现如下步骤:
计算执行所述线程任务所需的预测时间;
判断所述预测时间是否大于预设的时间阈值;
若所述预测时间大于预设的时间阈值,计算所述预测时间与预设的时间阈值的时间倍数;
根据所述时间倍数计算需要启动的处理线程的总数量;
根据所述需要启动的处理线程的总数量启动处理线程以执行所述线程任务。
在一实施例中,所述程序指令被处理器执行以实现所述计算执行所述线程任务所需的预测时间的步骤时,具体实现如下步骤:
获取已执行的线程任务所消耗的平均时间,以及获取所述线程任务的任务数量;
根据所述平均时间以及所述任务数量计算执行所述线程任务所需的预测时间。
在一实施例中,所述程序指令被处理器执行时还实现如下步骤:
判断所述节点事件是否满足异常判断条件;
若所述节点事件满足异常判断条件,发送异常警告信息。
在一实施例中,所述程序指令被处理器执行时还实现如下步骤:
在所述工作流引擎生成用于接收外部数据的数据保存类;
通过所述数据保存类获取所述外部数据,并将所述外部数据转换为流程节点以及节点事件。
在一实施例中,所述程序指令被处理器执行以实现所述根据所述时间倍数计算需要启动的处理线程的总数量的步骤时,具体实现如下步骤:
获取当前已启动的处理线程数量;
根据当前已启动的处理线程数量以及所述时间倍数计算需要启动的处理线程的总数量。
在一实施例中,所述程序指令被处理器执行以实现所述通过所述数据保存类获取所述外部数据,并将所述外部数据转换为流程节点以及节点事件的步骤时,具体实现如下步骤:
获取所述外部数据中的流程节点标识码以及节点事件标识码,以及获取所述工作流引擎中的流程节点标识码以及节点事件标识码;
判断所述外部数据中的流程节点标识码以及节点事件标识码与所述工作流引擎中的流程节点标识码以及节点事件标识码是否相同;
若所述外部数据中的流程节点标识码以及节点事件标识码与所述工作流引擎中的流程节点标识码以及节点事件标识码相同,将工作流引擎中的流程节点标识码以及节点事件标识码对应的流程节点以及节点事件替换为外部数据中的流程节点标识码以及节点事件标识码对应的流程节点以及节点事件。
该计算机可读存储介质可以是U盘、移动硬盘、只读存储器(ROM,Read-OnlyMemory)、磁碟或者光盘等各种可以存储程序代码的介质。
本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。
所属领域的技术人员可以清楚地了解到,为了描述的方便和简洁,上述描述的装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
在本发明所提供的几个实施例中,应该理解到,所揭露的装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的。例如,各个单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式。例如一个以上单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。
本发明实施例方法中的步骤可以根据实际需要进行顺序调整、合并和删减。本发明实施例装置中的单元可以根据实际需要进行合并、划分和删减。
另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以是两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
该集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分,或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,终端,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。
以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到各种等效的修改或替换,这些修改或替换都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以权利要求的保护范围为准。