工作流系统及其在流程运行期实现任务的方法

文档序号:6481033阅读:133来源:国知局
专利名称:工作流系统及其在流程运行期实现任务的方法
技术领域
本发明涉及工作流应用技术,具体涉及一种工作流系统及其在流程运行期 实现任务的方法。
背景技术
实现业务流程任务动态分配与完成的柔性最大化一直是每一个工作流产 品追求的目标,也是减少工作流二次开发成本、企业减少信息化投资源、提高 竟争力的一个有效手段。
在现有技术中,流程任务的分配方案主要有以下两种
1. 在流程建模期间,为流程的业务环节创建工作组,并将职能隶属于一 类的人员添加到一组中。在流程运行时,业务环节中每个工作组的人员都可代 表该工作组办理该业务环节中的任务。每个工作组间是并行办理的,待每个工 作组都处理完任务,该业务环节完成。这种方案不支持动态分配及完成任务的 功能。
2. 工作流系统本身不支持动态分配任务、完成任务的功能,但在企业应 用工作流时,根据具体业务规则对工作流系统进行二次开发,提供一些功能来 满足流程运行期动态分配任务、完成任务的需求。
以这样的业务规则为例要求允许业务环节的办理人员为其要处理的任务 创建子任务,并指定子任务的办理人员,等待其子任务处理完毕后才继续处理 自己的〗壬务。
在进行二次开发过程中,需要针对上述业务规则,修改引擎核心代码,在 引擎中为任务新增一种子任务类型,修改任务分配和完成的逻辑,使引擎执行 分配任务、完成任务操作时能够区分任务为正常任务和子任务两种,进而执行 不同的逻辑。
这种方法虽间接地支持动态分配任务、完成任务,但其代价是要修改流程 引擎内部结构和逻辑,会使流程引擎的结构和逻辑变得更加冗余、混乱,进而 导致更多问题,比如新增的任务类型和修改的逻辑可能不适用于其它应用场
5景,降低了引擎的可复用性和扩展性。

发明内容
本发明实施例提供一种工作流系统及其在流程运行期实现任务的方法,以 实现业务流程任务的动态分配与完成,并保证流程引擎内核的稳定性。
为此,本发明实施例提供如下技术方案 一种工作流系统,包括
接口单元,用于获取参与人与任务的映射关系,所述映射关系包括组、 步骤、工作池和参与人,所述组为独立决策单位;
任务分配单元,用于按照所述映射关系为各参与人分配任务; 任务执行单元,用于执行所述任务;
判断单元,用于在所述任务执行单元完成当前任务后,按照所述映射关系 确定是否需要创建下一个任务;如果是,则通知所述任务分配单元;否则通知 组状态设置单元;
组状态设置单元,用于根据所述判断单元的通知,设置所述当前任务所属 组的状态为完成态。
优选地,所述接口单元包括
组获取子单元,用于分别获取所述映射关系中的各组;
步骤获取子单元,用于获取各组中的步骤;
工作池获取子单元,用于获取所述步骤包含的工作池;
参与人获取子单元,用于获取各工作池的参与人;
所述任务分配单元,具体用于为所述工作池生成对应的任务,并将所述任 务分配给所述工作池中的参与人。
优选地,所述任务执行单元,还用于在所述任务完成后将所述任务对应的 工作池的状态设置为完成态;
所述判断单元包括
关联工作池查找子单元,用于在所述任务执行单元执行完当前任务后,查 找所述任务对应的工作池所属的步骤内的其他工作池;
第一^r查子单元,用于检查所述其他工作池是否都处于完成态,如果否,则在所述任务执行单元执行完当前任务后继续^r查所述其他工作池是否处于 完成态;
第二^r查子单元,用于在所述第一4企查子单元^r查到所述其他工作池都处 于完成态后,检查所述任务对应的工作池所属的步骤是否为其所属组内的最后 一个步骤;如果否,则通知所述任务分配单元为所属组内的下一个步骤包含的 工作池生成对应的任务,如果是,则通知所述组状态设置单元。
优选地,所述系统还包括
组状态检查单元,用于在所述组状态设置子单元设置所属组的状态为完成 态后,检查其他各组是否均处于完成态;
业务通知单元,用于在所述组状态4企查单元4企查到其他各组均处于完成态 后,发送业务完成通知。
一种工作流系统在流程运行期实现任务的方法,包括
获取参与人与任务的映射关系,所述映射关系包括组、步骤、工作池和 参与人,所述组为独立决策单位;
按照所述映射关系为各参与人分配任务;
执行所述任务,并在当前任务完成后,按照所述映射关系确定是否需要创 建下一个任务;
如果是,则按照所述映射关系创建下一个任务; 否则,设置所述当前任务所属组的状态为完成态。
优选地,所述获取参与人与任务的映射关系包括分别获取所述映射关系 中的各组,各组中的步骤,以及所述步骤包含的工作池,以及各工作池的参与 人;
所述按照所述映射关系为各参与人分配任务包括为所述工作池生成对应 的任务,并将所述任务分配给所述工作池中的参与人。
优选地,所述方法还包括在所述任务完成后将所述任务对应的工作池的 状态设置为完成态;
所述按照所述映射关系确定是否需要创建下一个任务包括
查找所述任务对应的工作池所属的步骤内的其他工作池;
;险查所述其他工作池是否处于完成态;如果否,则在下一个任务完成后继续检查所述其他工作池是否都处于完成
态;
如果是,则检查所述当前任务对应的工作池所属的步骤是否为其所属组内
的最后一个步骤;
如果否,则确定是否需要创建下一个任务;
所述按照所述映射关系创建下一个任务具体为为所述当前任务所属组内
的下一个步骤包含的工作池生成对应的任务。 优选地,所述方法还包括
在所述设置所述当前任务所属组的状态为完成态之后,检查其他各组是否 均处于完成态;
如果是,则发送业务完成通知。
优选地,每个组包含至少一个步骤,每个步骤包含至少一个工作池,并且 当一个组只有一个步骤时,该步骤内只允许包含一个工作池。 优选地,不同工作池对应的^f壬务并^f亍处理。
本发明实施例工作流系统及其在流程运行期实现任务的方法,不仅解决了 工作流系统在流程运行期需要根据各种业务规则动态地分配任务、完成任务的 问题,还将各种业务规则这些不确定性的因素与流程引擎内核隔离开来,保证 了流程引擎内核的稳定性,提升了流程引擎的复用性和扩展性。
工作流系统为了满足流程运行期可以根据业务规则动态分配任务及完成 任务这一需求,进行二次开发时不必修改流程引擎内核的代码,只需调用系统 提供的接口建立参与人和任务的映射关系,大大降低了二次开发的难度和成 本。


图l是本发明实施例工作流系统的一种结构示意图; 图2是本发明实施例中参与人与任务的映射关系示意图; 图3是本发明实施例工作流系统中判断单元的 一种结构示意图; 图4是本发明实施例在流程运行期实现任务的方法的流程图。
具体实施例方式
为了使本技术领域的人员更好地理解本发明实施例的方案,下面结合附图 和实施方式对本发明实施例作进一步的详细说明。
如图l所示,是本发明实施例工作流系统的一种结构示意图。
在该实施例中,所述系统包括
接口单元101,用于获取参与人与任务的映射关系,所述映射关系包括 组、步骤、工作池和参与人,所述组为独立决策单位;
任务分配单元102,用于按照所述映射关系为各参与人分配任务; 任务执行单元103,用于执行所述任务;
判断单元104,用于在所述任务执行单元完成当前任务后,按照所述映射 关系确定是否需要创建下一个任务;如果是,则通知所述任务分配单元;否则 通知组状态设置单元;
组状态设置单元105,用于根据所述判断单元104的通知,设置所述当前 任务所属组的状态为完成态。。
如图2所示,是本发明实施例中参与人与任务的映射关系示意图。
该映射关系包括组、步骤、工作池、参与人,其中
组为一个独立的决策单位,只要每个组所包含的任务都完成了,这个业务 环节即完成了。
组内包含至少一个步骤, 一个组是否完成取决于该组内的步骤是否依次完成。
步骤包含至少一个工作池,工作池是并行的,步骤内的所有工作池都完成 了,该步骤即完成了。
一个工作池对应一个任务,工作池内首先包含至少一个参与人,参与人可 以是人员也可以是角色,该工作池内的参与人都可以处理该工作池对应的任 务,且一人处理完毕提交,该任务即完成,该工作池即完成。
工作池内还可包含多个步骤,工作池中的步骤依次完成时,该工作池对应 的任务才可办理。
需要说明的是如果一个组内只有一个步骤,则该步骤内只可有一个工作池。
9在实际应用中,可以根据实际业务需要,建立参与人与任务的映射关系。 工作流系统通过所述接口单元101获取该映射关系。
所述接口单元ioi的一种优选结构包括以下几部分 组获取子单元,用于分别获取所述映射关系中的各组; 步骤获取子单元,用于获取各组中的步骤; 工作池获取子单元,用于获取所述步骤包含的工作池; 参与人获取子单元,用于获取各工作池的参与人。 所述工作流系统可以将上述各部分数据分别保存在不同区域,当然,也可
以将其保存在同一区域。
在具体应用时,上述各子单元可以通过提供不同的接口方法来获取相应的 信息。比如
所述组获取子单元提供接口方法createGroup,接收输入一个数字如3,然 后为业务环节创建3个组对象,并将这些对象信息存储到相应的数据源中;
所述步骤获取子单元提供接口方法createGroupStep,接收输入组ID和一 个数字如3,为该组创建3个步骤对象,并将这些对象信息存储到相应的数据 源中;
所述工作池获取子单元提供接口方法createSwimlane,接收输入步骤ID 和一个数字如2,为该步骤创建2个工作池对象,并将这些对象信息存储到相 应的数据源中;并提供接口方法createSwimlaneStep,接收输入工作池ID和一 个数字如l,为工作池创建l个步骤。
所述参与人获取子单元提供接口方法assignTask,接收输入工作池ID和
人员ID如张三,指定张三为工作池的参与人,并这些信息存储到相应的数据 源中。
这样,所述任务分配单元102,就可以根据上述这些接口方法得到的信息, 为所述工作池生成对应的任务,并将所述任务分配给所述工作池中的参与人。
具体地,可以首先通过业务ID从数据源中查找与其关联的组信息,然后 再通过这些组的ID从凄t据源中查找与其关联的第一个步骤的信息,然后再通 过这些步骤的ID从数据源中查找与其关联的工作池信息,最后对应各个工作 池创建任务并持久化任务的信息,这样即可建立起工作池与其参与人的对应关系,也就是说,完成任务分配。
在本发明实施例中,所述任务执行单元103,还可进一步用于在当前任务
完成后将所述当前任务对应的工作池的状态设置为完成态。
如图3所示,是本发明实施例中工作流系统中判断单元的一种优选结构, 包括
关联工作池查找子单元301 ,用于在所述任务执行单元103执行完当前任 务后,查找所述任务对应的工作池所属的步骤内的其他工作池;
第一检查子单元302,用于检查所述其他工作池是否都处于完成态,如果 否,则在所述任务执行单元103执行完当前任务后继续检查所述其他工作池是 否处于完成态;
第二检查子单元303,用于在所述第一检查子单元133检查到所述其他工 作池都处于完成态后,检查所述任务对应的工作池所属的步骤是否为其所属组 内的最后一个步骤;如果否,则通知所述任务分配单元为所属组内的下一个步 骤的工作池生成对应的任务,如果是,则通知所述组状态设置单元,以使所述 组状态设置单元将所述当前任务所属组的状态设置为完成态。
在本发明系统的另一实施例中,所述系统还可进一步包括组状态4企查单 元和业务通知单元。其中
所述组状态检查单元,用于在所述组状态设置子单元135设置所属组的状 态为完成态后,检查其他各组是否均处于完成态;
所述业务通知单元,用于在所述组状态检查单元检查到其他各组均处于完 成态后,发送业务完成通知。
本发明实施例工作流系统,能够封闭引擎内部结构逻辑且支持动态分配任 务、完成任务,通过获取参与人与任务的映射关系,并用这一映射关系将任务 的分配、完成等操作与各种不确定的业务规则隔离,进而保证流程引擎分配任 务、完成任务逻辑的稳定,从而保证了流程引擎内核的稳定性,提升了流程引 擎的复用性和扩展性。
本发明实施例工作流系统为了满足流程运行期可以根据业务规则动态分 配任务及完成任务这一需求,进行二次开发时不必修改流程引擎内核的代码, 只需调用系统提供的接口建立参与人和任务的映射关系,大大降低了 二次开发的难度和成本。
下面通过举例进一步说明利用本发明实施例工作流系统进行二次开发应 用的过程。
例如,某业务环节有A、 B、 C、 D、 E、 F、 G、 H八人参与办理,要求A、 B和C、 D依次串行办理(A办理完毕后B和C才开始办理,B和C都办理 完毕后D才开始办理),C和E沟通办理(C创建任务给E,根据E的办理结 果决定如何办理自己的任务)、F和G协同办理(F和G都可以办理该任务, j旦只需其中一人办理即可)、H独自办理。
针对这一业务规则,采用本发明实施例的工作流系统时,二次开发只需按 照实际业务需求建立任务与参与人的映射关系,具体如下
将任务分为三组
1. 第一组分三个步骤,其中 第一个步骤中有一个工作池,工作池的参与人是A; 第二个步骤中有两个工作池第一工作池的参与人是B;第二个工作池的
参与人是C,第二个工作池包含一个步骤,该步骤包含一个工作池,工作池的 参与人为E;
第三个步骤中有一个工作池,工作池的参与人是D。
2. 第二组分一个步骤,该步骤中有一个工作池,该工作池里的参与人是 F和G;
3. 第三组分一个步骤,该步骤中有一个工作池,该工作池里的参与人是H。
二次开发建立任务与参与人映射关系时,无需编写或修改引擎代码,只需 调用工作流系统提供的接口方法,调用接口方法的过程举例如下
调用createGroup,输入3,创建三个组分别为Group 1、 Group2、 Group3。
调用createGroupStep,输入Group 1和3,为Group 1创建3个步骤分别为 Step01、 Step02、 Step03;
调用createSwimlane,输入Step01和1,为Step01创建一个工作池 Swimlane001,然后调用assginTask,输入Swimlane001和A。指定参与人; 调用createSwimlane,输入Step02和2,创建两个工作池Swimlane011和Swimlane012 。 然后调用 assignTask , 输入Swimlane012和C;调用 createSwimlaneStep,丰lr入Swimlane012和1,为工作池Swimlane012创建一个 步骤。
由此可见,本发明实施例工作流系统,在实际应用中,可以通过二次开发 支持动态分配任务、完成任务的需求,无需修改引擎核心代码及逻辑关系,只 需调用工作流系统提供的接口,从而提高了流程引擎的可复用性和扩展性,降
低了二次开发的难度和成本。
基于上述工作流系统,本发明实施例还提供一种工作流系统在流程运行期 实现任务的方法。
如图4所示,是该方法的一种流程图,包括以下步骤
步骤401,获取参与人与任务的映射关系,所述映射关系包括组、步骤、 工作池和参与人,所述组为独立决策单位。
每个组包含至少一个步骤,每个步骤包含至少一个工作池,并且当一个组 只有一个步骤时,该步骤内只允许包含一个工作池;不同工作池对应的任务并
行处理。
具体地,可以分别获取所述映射关系中的各组,各组中的步骤,以及所述 步骤包含的工作池。比如,可以利用工作流系统提供的各种接口方法,分别获 取上述各信息及其关联关系,并将获取的这些信息分别存储到相应的数据库 中。
步骤402,按照所述映射关系为各参与人分配任务。
也就是说,为所述工作池生成对应的任务,并将所述任务分配给所述工作 池中的参与人。
步骤403,执行所述任务。
步骤404,在当前任务完成后,按照所述映射关系确定是否需要创建下一 个任务;如果是,则返回步骤402,按照所述映射关系创建下一个任务;否贝'J, 执行步骤405;
步骤405,设置所述当前任务所属组的状态为完成态。 在上述流程中,还可进一步包括以下步骤每个组中的所有步骤均完成后, 设置该组的状态为完成态,并检查其他各组是否均处于完成态;如果是,则发送业务完成通知;否则等待其他组进入完成态。
在上述步骤403之后,所述方法还包括以下步骤在所述任务完成后将所 述任务对应的工作池的状态设置为完成态。
这样,在步骤404中,按照所述映射关系确定是否需要创建下一个任务可 以按照以下步骤进行
首先,查找所述任务对应的工作池所属的步骤内的其他工作池,具体地, 可以通过该工作池ID查找到该工作池所属的步骤ID,通过该步骤ID即可找 到该步骤包含的其他工作池信息。
检查所述其他工作池是否处于完成态;
如果否,则在下一个任务完成后继续检查所述其他工作池是否都处于完成
态;
如果是,则检查所述当前任务对应的工作池所属的步骤是否为其所属组内 的最后一个步骤,如果否,则确定是否需要创建下一个任务。
所述按照所述映射关系创建下一个任务具体为为所述当前任务所属组内 的下一个步骤包含的工作池生成对应的任务。具体地,可以通过当前工作池ID 获得其所属的步骤ID,然后,通过该步骤ID可以进一步查找到其下一个步骤 包含的工作池信息。
可见,本发明实施例在流程运行期实现任务的方法,能够封闭引擎内部结 构逻辑且支持动态分配任务、完成任务,通过获取参与人与任务的映射关系, 并用这一映射关系将任务的分配、完成等操作与各种不确定的业务规则隔离, 进而保证流程引擎分配任务、完成任务逻辑的稳定,从而保证了流程引擎内核 的稳定性,提升了流程引擎的复用性和扩展性。
本发明实施例在流程运行期实现任务的方法,为了满足流程运行期可以根 据业务规则动态分配任务及完成任务这一需求,进行二次开发时不必修改流程 引擎内核的代码,只需调用系统提供的接口建立参与人和任务的映射关系,大 大降低了二次开发的难度和成本。
是可以通过程序来指令相关的硬件来完成,所述的程序可以存储于一计算机可 读取存储介质中,所述的存储介质,如ROM/RAM、磁碟、光盘等。
14以上对本发明实施例进行了详细介绍,本文中应用了具体实施方式
对本发
明进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及设备;同 时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式
及应用 范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。
权利要求
1、一种工作流系统,其特征在于,包括接口单元,用于获取参与人与任务的映射关系,所述映射关系包括组、步骤、工作池和参与人,所述组为独立决策单位;任务分配单元,用于按照所述映射关系为各参与人分配任务;任务执行单元,用于执行所述任务;判断单元,用于在所述任务执行单元完成当前任务后,按照所述映射关系确定是否需要创建下一个任务;如果是,则通知所述任务分配单元;否则通知组状态设置单元;组状态设置单元,用于根据所述判断单元的通知,设置所述当前任务所属组的状态为完成态。
2、 根据权利要求1所述的系统,其特征在于,所述接口单元包括 组获取子单元,用于分别获取所述映射关系中的各组; 步骤获取子单元,用于获取各组中的步骤; 工作池获取子单元,用于获取所述步骤包含的工作池; 参与人获取子单元,用于获取各工作池的参与人; 所述任务分配单元,具体用于为所述工作池生成对应的任务,并将所述任务分配给所述工作池中的参与人。
3、 根据权利要求2所述的系统,其特征在于,所述任务执行单元,还用于在所述任务完成后将所述任务对应的工作池的 状态设置为完成态; 所述判断单元包括关联工作池查找子单元,用于在所述任务执行单元执行完当前任务后,查 找所述任务对应的工作池所属的步骤内的其他工作池;第一检查子单元,用于检查所述其他工作池是否都处于完成态,如果否, 则在所述任务执行单元执行完当前任务后继续检查所述其他工作池是否处于 完成态;第二4全查子单元,用于在所述第一检查子单元^:查到所述其他工作池都处 于完成态后,检查所述任务对应的工作池所属的步骤是否为其所属组内的最后 一个步骤;如果否,则通知所述任务分配单元为所属组内的下一个步骤包含的工作池生成对应的任务,如果是,则通知所述组状态设置单元。
4、 根据权利要求1至3任一项所述的系统,其特征在于,所述系统还包括组状态检查单元,用于在所述组状态设置子单元设置所属组的状态为完成 态后,检查其他各组是否均处于完成态;业务通知单元,用于在所述组状态;险查单元^r查到其他各组均处于完成态 后,发送业务完成通知。
5、 一种工作流系统在流程运行期实现任务的方法,其特征在于,包括 获取参与人与任务的映射关系,所述映射关系包括组、步骤、工作池和参与人,所述组为独立决策单位;按照所述映射关系为各参与人分配任务;执行所述任务,并在当前任务完成后,按照所述映射关系确定是否需要创 建下一个任务;如果是,则按照所述映射关系创建下一个任务; 否则,设置所述当前任务所属组的状态为完成态。
6、 根据权利要求5所述的方法,其特征在于,所述获取参与人与任务的映射关系包括分别获取所述映射关系中的各 组,各组中的步骤,以及所述步骤包含的工作池,以及各工作池的参与人;所述按照所述映射关系为各参与人分配任务包括为所述工作池生成对应 的任务,并将所述任务分配给所述工作池中的参与人。
7、 根据权利要求6所述的方法,其特征在于,所述方法还包括在所述 任务完成后将所述任务对应的工作池的状态设置为完成态;所述按照所述映射关系确定是否需要创建下一个任务包括 查找所述任务对应的工作池所属的步骤内的其他工作池; 检查所述其他工作池是否处于完成态;如果否,则在下一个任务完成后继续检查所述其他工作池是否都处于完成态;如果是,则4企查所述当前任务对应的工作池所属的步骤是否为其所属组内 的最后一个步骤;如果否,则确定是否需要创建下一个任务;所述按照所述映射关系创建下一个任务具体为为所述当前任务所属组内的下一个步骤包含的工作池生成对应的任务。
8、 根据权利要求5至7任一项所述的方法,其特征在于,所述方法还包括在所述设置所述当前任务所属组的状态为完成态之后,检查其他各组是否 均处于完成态;如果是,则发送业务完成通知。
9、 根据权利要求5所述的方法,其特征在于,每个组包含至少一个步骤, 每个步骤包含至少一个工作池,并且当一个组只有一个步骤时,该步骤内只允 许包含一个工作池。
10、 根据权利要求9所述的方法,其特征在于,不同工作池对应的任务并 行处理。
全文摘要
本发明公开了一种工作流系统及其在流程运行期实现任务的方法,所述系统包括接口单元,用于获取参与人与任务的映射关系,所述映射关系包括组、步骤、工作池和参与人,所述组为独立决策单位;任务分配单元,用于按照所述映射关系为各参与人分配任务;任务执行单元,用于执行所述任务;判断单元,用于在所述任务执行单元完成当前任务后,按照所述映射关系确定是否需要创建下一个任务;如果是,则通知所述任务分配单元;否则通知组状态设置单元;组状态设置单元,用于根据所述判断单元的通知,设置所述当前任务所属组的状态为完成态。利用本发明,可以实现业务流程任务的动态分配与完成,并保证流程引擎内核的稳定性。
文档编号G06Q10/00GK101639904SQ200910013189
公开日2010年2月3日 申请日期2009年8月12日 优先权日2009年8月12日
发明者超 于, 刘长虹, 周进刚, 勇 纪 申请人:东软集团股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1