一种动态产生和执行工作流流程的方法和装置与流程

文档序号:11178001阅读:318来源:国知局
一种动态产生和执行工作流流程的方法和装置与流程

本发明涉及计算机和计算机软件技术领域,特别地涉及一种动态产生和执行工作流流程的方法和装置。



背景技术:

工作流,是指业务过程的部分或整体在计算机应用环境下的自动化。在业务的自动化过程中,文档、信息或任务按照一定的过程规则流转,实现组织成员间的协同工作,以达到业务的整体目标。典型的工作流管理系统wfms(workflowmanagementsystem)至少由如下几个模块组成:业务流程建模定义工具、过程定义模块、工作流执行环境(引擎)、任务管理模块等。其基本原理是:按照业务预先定义好业务规则和流程,再通过工作流流程引擎进行业务的流转,并且可以清晰看到每个流程步骤。

工作流在企业应用中非常广泛,例如:办公自动化(officeautomation,简称oa)系统中的加班申请、请假申请、调休申请等等;财务系统中的出差申请、费用报销申请等等。在目前的企业应用中,通常是将每种业务的流程预先定义,然后根据企业的业务流程,采用开源的工作流引擎activiti,绘制公司的流程,生成流程定义文件,上传流程定义文件,并通过activiti引擎相关的应用程序编程接口api(applicationprogramminginterface)驱动流程的流转,例如:部署服务、运行时服务、任务服务、历史服务等等。

随着企业公司规模的不断壮大,企业的组织架构的升级,除了部门与部门之间有流程的协同,在上级公司和下级公司也有流程的协同,例如:费用报销一般会通过自己部门领导的审核,再到财务部门审核, 并且,每个部门之间,都有自己的流程;如果新成立一个公司,在采购费用上,只要超出一定金额就需要到总部流程上进行审核,等等。这样在新增部门和成立子公司时,必然要重新定义流程规则,这样就会带来流程规则的变更。

在现有常见的工作流运转过程中:业务流程需要预先定义好,并且整个过程都需要靠activiti引擎驱动业务的流转。对于公司的流程变更,需要研发人员或者运营人员重新绘制流程定义文件,难度相对比较高。在整个流程驱动环节,靠activiti流程引擎的api很难满足某些中国特色的流程需求,比如:父流程挂接子流程、子流程挂接父流程,动态加签、补签等等。

由此可以看出,现有的工作流实现方式具有以下的缺陷:

1、流程变更对于使用人员要求高;

2、流程定义文件不够灵活,每次业务流程变更都需要研发或者运营人员完成;

3、利用现有的工作流引擎很难满足个性化流程需求。

如果企业的组织结构复杂,那么流程定义也会很复杂。试想,如果我们将流程定义直接交给用户,用户直接控制流程,将一个复杂的流程拆分,按照部门或者按照分公司去拆分,部门和分公司去控制自己的流程,最后通过流程引擎去将部门、分公司、总公司的流程串连起来,这样,就会降低业务流程设计的复杂度,更能适应企业的发展需求。



技术实现要素:

有鉴于此,本发明提供一种动态产生和执行工作流流程的方法和装置,能够解决企业业务流程频繁变更以及企业不断壮大导致的流程规划越来越复杂的问题。通过将业务流程按照组织结构拆解,部门或分公司和公司可随意修改自己的流程,从而大大降低了流程复杂度, 内部流程和上级流程耦合性更低。

为实现上述目的,根据本发明的一个方面,提供了一种动态产生和执行工作流流程的方法。

一种动态产生和执行工作流流程的方法,包括:定义多个工作流子流程,所述子流程具有指定的执行顺序;由流程发起者指定初始子流程;通过流程引擎启动所述初始子流程,使得按照所述顺序执行所述子流程,其中,每个所述子流程在执行中,能够触发指定的另外子流程的执行。

可选地,每个所述子流程开始执行时,通过相应的触发器监视该子流程的规则的条件是否满足,当满足时,触发该规则中规定的另外子流程的执行。

可选地,每个所述子流程在执行中,该子流程的执行者能够自主触发另外子流程的执行。

可选地,所述另外子流程是加签子流程,即该另外子流程在触发该另外子流程的子流程之前执行。

可选地,所述另外子流程是补签子流程,即该另外子流程在触发该另外子流程的子流程之后执行。

可选地,所述另外子流程是协办子流程,即该另外子流程与触发该另外子流程的子流程并行执行,并且这两个子流程都完成后,才开始原定的所述顺序的下一个子流程的执行。

可选地,所述协办子流程能够是并行执行的多个子流程。

可选地,通过所述流程引擎记录所述流程的实际执行轨迹。

根据本发明的另一方面,提供了一种动态产生和执行工作流流程的装置。

一种动态产生和执行工作流流程的装置,包括:流程定义模块,用于定义多个工作流子流程,所述子流程具有指定的执行顺序;流程发起模块,用于由流程发起者指定初始子流程;流程执行模块,用于通过流程引擎启动所述初始子流程,使得按照所述顺序执行所述子流程,其中,每个所述子流程在执行中,能够触发指定的另外子流程的执行。

根据本发明的又一方面,提供了一种动态产生和执行工作流流程的装置。

一种动态产生和执行工作流流程的装置,包括:存储器和处理器,其中,所述存储器存储指令;所述处理器执行所述指令用于:定义多个工作流子流程,所述子流程具有指定的执行顺序;由流程发起者指定初始子流程;通过流程引擎启动所述初始子流程,使得按照所述顺序执行所述子流程,其中,每个所述子流程在执行中,能够触发指定的另外子流程的执行。

可选地,所述处理器还用于:每个所述子流程开始执行时,通过相应的触发器监视该子流程的规则的条件是否满足,当满足时,触发该规则中规定的另外子流程的执行。

可选地,所述处理器还用于:每个所述子流程在执行中,该子流程的执行者能够自主触发另外子流程的执行。

根据本发明的技术方案,通过流程引擎控制流程的执行,流程引 擎根据当前任务节点配置的规则和当前任务的执行者是否自主触发另外任务,来决定是否启动一个新的子流程,并且可以将多个子流程进行灵活串接,从而能够支持流程定义多样化,以便更好的适应企业的个性化流程定制需求;并且,通过将复杂的跨部门、跨层级的流程分解后进行定义,从而降低了流程设计的复杂度和实施运维难度。

附图说明

附图用于更好地理解本发明,不构成对本发明的不当限定。其中:

图1是本发明实施例的动态产生和执行工作流流程的系统的总体框架示意图;

图2是根据本发明实施方式的动态产生和执行工作流流程的方法的主要步骤示意图;

图3是本发明实施例的工作流流程在不同业务场景的执行过程示意图;

图4是根据本发明实施方式的一种动态产生和执行工作流流程的装置的主要模块示意图;

图5是根据本发明实施方式的另一种动态产生和执行工作流流程的装置的主要模块示意图。

具体实施方式

以下结合附图对本发明的示范性实施例做出说明,其中包括本发明实施例的各种细节以助于理解,应当将它们认为仅仅是示范性的。因此,本领域普通技术人员应当认识到,可以对这里描述的实施例做出各种改变和修改,而不会背离本发明的范围和精神。同样,为了清楚和简明,以下的描述中省略了对公知功能和结构的描述。

根据本发明,将企业流程进行最小粒度的拆分(例如按照部门或分公司进行拆分),以降低企业流程的复杂度。流程定义可通过流程模板设计器(例如:通过flash等易编辑的图形用户界面等)来进行,流程发起者可根据部门或公司的业务规则,自定义流程定义文件。

根据本发明,在每个子流程节点上可配置相应的流程规则,例如,当规则的条件满足时,可触发另外的子流程,并且,每个子流程的执行者可以自主触发另外的子流程,从而达到业务的流转。在流程引擎启动流程实例之后,记录整个流程实例的步骤详细信息。

下面举例几种典型的业务场景,其中包括规则触发和自主触发的情况:

场景1:在项目费用报销申请中,设置规则,规定金额超过一定数额(例如:2万元)时,需要通过上级公司的流程进行审核。因此,审核过程中,当满足该规则规定的金额超过2万元的条件时,会自动启动上级公司的审核流程。上级公司的审核流程通过之后,则返回到当前流程中的任务节点。并且,在整个过程中,流程引擎会记录整个流程执行的结果及先后顺序等。

场景2:一个流程实例已经启动,但是当前审核人,想要让其他部门或其他人一起协助审核,即协办。在通常的情况下,现有常见的工作流程引擎是做不到的。本发明的工作流程中,当前审核人可以选择需要协办的任务以及协办任务执行者,并启动协办任务。其中,协办执行者可以是人、岗位、部门等。在协办任务执行者和当前审核人都通过后,流程流转至原定的下个任务节点。在这里,如果协办任务者是部门,则需启动一个部门的子流程,并待该子流程结束后,协办任务才算结束。

场景3:一个流程实例已经启动,当前审核人审核时,想要有一个很重要的人在他审核之前做审核,即加签。加签任务结束之后,则回到当前节点。

场景4:增加任务环节。即在这个环节,审核人可以动态增加一个任务待办,任务待办者可以是一个普通节点(即:一个审核人), 也可以是一个部门等的子流程节点。比如:财务报销中,企业资源计划erp事业部,审核人在审核时,希望财务部门的人看看发票格式是否合格,这时在这个节点上可以增加一个财务部门的流程,那么财务部门的流程走完之后,才能完成业务的流转。

根据上述内容,本发明提出了一种动态产生和执行工作流流程的方法和系统。本发明是将复杂流程按照组织结构,即公司、分公司、部门等的维度进行拆分,根据实际应用,定义部门与部门之间、公司与部门之间、公司与公司之间的工作流流程,在执行流程的各任务时,每个任务可按照预定规则来触发另外任务或由任务执行者自主触发另外任务,以实现任务的动态串接。例如:假设一个工作流流程需要包含a公司总部、a公司下属的分公司a1、分公司a1的销售部和财务部共计3个层次维度。以分公司a1的销售部进行报销申请的流程为例,其中,若报销申请的金额超过2万元需要汇报到a公司总部。根据本发明,可定义包括三个任务的流程:销售部提交报销申请------财务部审核流程------分公司a1审核流程。并且当满足“金额超过2万元”的条件是,触发a公司总部审核任务。并且,在整个工作流流程的运行过程中,需要动态地将这四个任务节点串接起来。

下面将详细地描述本发明的技术实现。如图1所示,是本发明实施例的动态产生和执行工作流流程的系统的总体框架示意图。本发明的动态产生和执行工作流流程的系统主要包括:基础信息管理模块、流程定义管理模块和流程驱动执行模块。

基础信息管理模块主要用于按照企业或者公司的组织结构将不同业务的流程进行拆分。不同业务的流程在进行分类时,是根据业务内容的不同进行细粒度区分,比如:差旅报销、加班费用申请等。相应地,一个部门的业务流程即可分类为例如:销售部的差旅报销流程、销售部的加班费申请流程、销售部的项目经费申请等等。

流程定义管理模块主要用于通过流程模板设计器(可视化图形界面),将部门或分公司流程按照业务流程建模与标注bpmn(businessprocessmodelingnotation)2.0规范,生成xml字符串,并且还可以用版本来进行控制。流程模板设计器是客户自定义流程的客户端,可根据各个部门的业务定义流程。在进行流程定义时,可以编写该流程的流程触发规则和选择流程节点上的审核人员(根据需要,可以是一个或者多个人员)。其中,流程触发规则是在任务节点上配置的业务流转的一种规则,在工作流流程实例运行期间,会根据该规则的条件是否满足而决定是否要启动一个新的流程实例。例如:假设项目费用申请金额大于20万元时,需要总公司的相关人员进行审核,那么此时会根据该流程触发规则自动生成下一个审核任务,即:一个公司的子流程。

流程驱动执行模块,是系统的核心,主要用于驱动整个业务流程的运转。该模块会提供审核流的流转,通过读取流程上任务节点的配置的节点信息和流程规则,动态创建待办任务,并根据流程规则是否是部门流程或者公司流程,比如下达、上报等,也会包含任务追回、加签、补签、分发、协办等功能。其中,上报的规则例如:销售部提交一个项目经费申请,公司规定,当申请金额超过2万元时需要经过总公司审核才能通过,那么在当前流程执行结束之后,根据规则,会自动启动总公司的审核流程;下达的规则例如是总部发起的流程,根据规则判断是否要发起一个部门或者分公司的流程等。

在流程驱动执行的过程中,本发明的流程引擎会记录整个业务流转过程及结果。并且,本发明还可以提供查看流程实例历史、实例归档、归档历史信息等功能。

图2是根据本发明实施方式的动态产生和执行工作流流程的方法的主要步骤示意图。如图2所示,本发明的动态产生和执行工作流流程的方法主要包括如下的步骤s21至步骤s23。

步骤s21:定义多个工作流子流程,所述子流程具有指定的执行顺序;

步骤s22:由流程发起者指定初始流子程;

步骤s23:通过流程引擎启动初始子流程,使得按照顺序执行子流程,其中,每个子流程在执行中,能够触发指定的另外子流程的执行。

根据本发明的技术方案,每个子流程开始执行时,通过相应的触发器监视该子流程的规则的条件是否满足,当满足时,触发该规则中规定的另外子流程的执行。

每个子流程在执行中,该子流程的执行者能够自主触发另外子流程的执行。其中,另外子流程例如是加签子流程,即该另外子流程在触发该另外子流程的子流程之前执行。或者,另外子流程是补签子流程,即该另外子流程在触发该另外子流程的子流程之后执行。又或者,另外子流程是协办子流程,即该另外子流程与触发该另外子流程的子流程并行执行,并且这两个子流程都完成后,才开始原定顺序的下一个子流程的执行。并且,协办子流程能够是并行执行的多个子流程。

另外,本发明还可以通过流程引擎记录流程的实际执行轨迹。

图3是本发明实施例的工作流流程在不同业务场景的执行过程示意图。本发明的工作流流程执行是通过activiti的api启动流程实例,但在执行过程中,是通过流程引擎来驱动流程,并且,整个流程执行过程,流程引擎会记录这个流程实例的流程轨迹,可以达到如下所列业务场景时更为灵活的处理方式。

如图3所示,申请人启动初始流程后,在流程执行过程中,如果当前审核人的审核结果为“同意”,则业务正常流转,在流程引擎的 驱动过程中,流程引擎会查询该流程配置的流程规则中是否存在上报下达的规则,如果存在,则启动部门或者公司的子流程,并在子流程执行完后,到达下一个审核人。

当当前审核人的审核结果为“拒绝”时,由于流程待办任务是通过本发明的流程引擎来进行驱动的,每一个流程实例的步骤,流程引擎都会记录,因此,如果当前审核人的审核结果为“拒绝”,那么该流程可以退回到已经执行的流程步骤的任何一个环节。本发明中主要可以分为打回、终止、驳回三种情况。其中,“打回”指的是退回到上一个任务节点,即如果上个任务节点是普通节点,则直接将上个任务节点的状态激活,如果上个任务节点是触发一个子流程,则退回到该子流程的开始节点;“终止”指的是流程直接结束,流程实例结束,且不可以重新申请;“驳回”指的是流程直接结束,但是流程实例未结束,故可以重新申请。在使用过程中,用户可以根据自己的需要设置不同的拒绝状态。

另外,当前审核人,还可以将任务“分发”给其指定的人,在当前审核人指定人时可以自定义流转后任务节点的操作人员,被分发任务的操作人员在拿到待办任务之后进行审核,若审核通过,则正常流转到下个审核人。“分发”功能在实现时是通过在当前审核人任务之后动态添加任务待办,并指定添加的待办任务的审核人即可。

比较常用的业务场景还包括对审核信息的“撤销”,即:在当前审核人审核之后,发现审核信息有些问题,需要撤回刚才的审核信息,那么在下个审核人没有审核之前,该审核人,可以撤回审核的信息。一般是在下一个审核人还没有审核之前,将下一个待办任务失效,并将上一个待办任务激活,如果上一个待办任务是一个子流程,则将子流程的最后一个审核任务激活。

根据本发明的工作流流程可以实现一些现有的工作流技术无法实 现的功能,例如以下介绍的协办、加签、补签等业务场景。

协办:协办者的角色可以是人员、部门、岗位等,即当前审核人审核的时候可以向另外的人员、部门、岗位等发起发送任务,请求其公共审核该待办。“协办”功能在实现时,:在选取协办者的时候,如果协办者是人员,则在当前任务动态插入一个人员的待办任务;如果协办者是部门,则是启动该部门的流程实例;如果协办者是人员或岗位,则是插入多条任务待办,当添加的协办任务(包含子流程结束)都执行完毕之后,再正常流转到下一个审核人。

加签:当前审核人在审核该任务的时候,希望有一个人员希望能在他之前审核一下,这时候可以加签。加签之后,该加签的人员先进行审核,之后任务待办再次到达当前审核人。这是在企业中常见的业务场景,例如,流程已到当前审核人,但是有领导想看看该申请,则当前审核人就可以将该申请送给该领导。常见流程引擎,是不能处理这个需求的,因为流程已经到达当前审核人,当前的任务待办之前是不能再有新的待办任务产生的。而本发明对“加签”情况的处理方式,是在当前的任务待办之前,动态插入加签任务,并将当前审核人的待办任务状态失效。

补签:指的是增加新的任务流程。对于需要补签的情况,当前审核人可以动态增加一个任务待办,任务待办可以是一个审核人,也可以是一个部门或者公司的子流程。比如:财务报销中,企业资源计划erp事业部,审核人在审核时,希望财务部门的人看看发票类型是否合格,此时在这个任务节点上可以增加一个财务部门的子流程,且在财务部门的子流程走完之后,才能完成业务的流转。“补签”功能与加签、协办的处理方式基本上一样,也是动态添加任务节点,且任务节点可以是普通节点也可以是子流程节点。

然而,协办、加签和补签这三种不同业务场景在使用过程中还有 一些不同之处,主要表现在:

“协办”:是在当前任务添加,即当前任务和协办任务同时审核完成之后,才能到达下一个审核人;

“加签”:是在当前任务之前添加,并将当前任务状态失效,加签步骤执行完之后,重新回到当前节点;

“补签”:是在当前任务执行完毕之后,添加新的任务节点。

另外,本发明还提供了一种动态产生和执行工作流流程的装置。如图4所示,是根据本发明实施方式的一种动态产生和执行工作流流程的装置的主要模块示意图。本发明的一种动态产生和执行工作流流程的装置40主要包括流程定义模块41、流程发起模块42和流程执行模块43。

流程定义模块41用于定义多个工作流子流程,所述子流程具有指定的执行顺序;流程发起模块42用于由流程发起者指定初始子流程;流程执行模块43用于通过流程引擎启动所述初始子流程,使得按照所述顺序执行所述子流程,其中,每个所述子流程在执行中,能够触发指定的另外子流程的执行。

如图5所示,是根据本发明实施方式的另一种动态产生和执行工作流流程的装置的主要模块示意图。本发明的另一种动态产生和执行工作流流程的装置50主要包括存储器51和处理器52。

其中,存储器51存储指令;处理器52执行所述指令用于:定义多个工作流子流程,所述子流程具有指定的执行顺序;由流程发起者指定初始子流程;通过流程引擎启动所述初始子流程,使得按照所述顺序执行所述子流程,其中,每个所述子流程在执行中,能够触发指定的另外子流程的执行。

另外,处理器52还可以用于:每个所述子流程开始执行时,通过 相应的触发器监视该子流程的规则的条件是否满足,当满足时,触发该规则中规定的另外子流程的执行。

处理器52还可以用于:每个所述子流程在执行中,该子流程的执行者能够自主触发另外子流程的执行。

根据本发明实施例的技术方案,通过流程引擎控制流程的执行,流程引擎根据当前任务节点配置的规则和当前任务的执行者是否自主触发另外任务,来决定是否启动一个新的子流程,并且可以将多个子流程进行灵活串接,从而能够支持流程定义多样化,以便更好的适应企业的个性化流程定制需求;并且,通过将复杂的跨部门、跨层级的流程分解后进行定义,从而降低了流程设计的复杂度和实施运维难度。

上述具体实施方式,并不构成对本发明保护范围的限制。本领域技术人员应该明白的是,取决于设计要求和其他因素,可以发生各种各样的修改、组合、子组合和替代。任何在本发明的精神和原则之内所作的修改、等同替换和改进等,均应包含在本发明保护范围之内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1