本申请属于工作流,尤其涉及一种基于flowable的工作流方法。
背景技术:
1、工作流(workflow),指“业务过程的部分或整体在计算机应用环境下的自动化”。是对工作流程及其各操作步骤之间业务规则的抽象、概括描述。
2、目前比较常用的开源流程引擎有:osworkflow、jbpm、activiti、flowable、camunda。上述流程引擎存在以下问题,1、无法重复使用,应用流程引擎开发个性化业务逻辑通常是与某具体流程相关,因此会与相关流程存在过于紧密的绑定,业务代码不方便进行复用。2、代码冗余,由于业务代码不能复用,当遇到功能类似但流程不同的情况时,只能针对新流程再次实现类似业务,造成了大量的代码冗余。3、无法灵活配置,由于业务代码不能复用,造成大量类似代码零散的存在于代码文件中,当业务变更时,修改非常麻烦,极不灵活。
技术实现思路
1、本申请实施例提供了基于flowable的工作流方法,可以解决现有的工作流引擎代码冗余、无法灵活配置的问题。
2、第一方面,本申请提供了一种基于flowable的工作流方法,包括:
3、存储流程处理策略类的代码,所述流程处理策略类的代码符合流程处理策略接口的流程处理方法,所述流程处理方法的入参包括任务实例id以及流程处理参数,所述流程处理参数为json字符串,返回值是object类型;
4、使用spring的@service注解将所述流程处理策略类注册为spring业务服务并存储于容器中;
5、将流程模型中的流程任务和流程处理策略类进行关联;
6、在web流程处理接口上调用所述容器中的spring流程处理策略业务服务。
7、进一步的,在步骤“将流程模型中的流程任务和策略类进行关联”中,具体包括以下步骤,
8、在流程模型列表中,通过任务配置模块接收用户输入的流程任务策略类关系参数,所述流程任务策略类关系参数包括任务id、策略类全名称以及任务扩展信息;
9、将所述流程任务策略类关系参数发送至所述流程任务处理策略配置接口;
10、校验所述流程任务策略类关系参数中的任务id所对应的任务是否存在;若存在则将任务id、策略类全名称以及任务扩展信息存入流程任务策略类关系表中。
11、进一步的,在步骤“在web流程处理接口上调用所述容器中的spring业务服务”中,具体包括以下步骤,
12、调用后端服务器的web流程处理接口;接口入参为任务实例id、流程处理参数json字符串;
13、所述web流程处理接口接收到入参后,校验任务实例是否存在;以及校验任务实例对应的任务是否存在;校验任务对应的任务策略类关系是否存在;
14、通过任务策略类关系中的类全名称,从spring容器中获取对应的流程处理策略服务;
15、执行所述流程处理策略服务的流程处理方法。
16、进一步的,在步骤“通过任务策略类关系中的类全名称,从spring容器中获取对应的流程处理策略服务”之前,还包括以下步骤,
17、根据登录的用户id以及任务实例对应的任务,校验所述用户id是否对所述任务具有处理权限。
18、本申请实施例与现有技术相比存在的有益效果是:本申请实现了将业务进行抽象并封装为流程处理策略类,只需将流程处理策略类与具体用户任务配置关联就可以进行复用,提高了代码复用率。另一方面,在流程处理策略类可以复用的前提下,不需要再重复进行开发,极大降低了代码冗余。
1.一种基于flowable的工作流方法,其特征在于,包括:
2.如权利要求1所述的方法,其特征在于,在步骤“将流程模型中的流程任务和策略类进行关联”中,具体包括以下步骤,
3.如权利要求1所述的方法,其特征在于,在步骤“在web流程处理接口上调用所述容器中的spring业务服务”中,具体包括以下步骤,
4.根据权利要求3所述的方法,其特征在于,在步骤“通过任务策略类关系中的类全名称,从spring容器中获取对应的流程处理策略服务”之前,还包括以下步骤,