工作流介绍
以公司的报销流程为例:
小明—>提交申请—>人事审批–>经理审批–>财务审批—>结束
我们先思考一下,需要实现这的一个需求我们需要怎么做?
我们可能需要去维护一个变量,来不断传递过去下一个处理者,或者是建相关的任务表之类的,如果需求不会变,没有什么条件处理,这样也好设计。
但是,如果有条件【不同职位员工审批方式不一样】,需求更改了【不需要人事审批了】,那么我们的代码就会乱,不好维护。
再来看这种问题就是一种流式的控制管理,基于这么一个原因,我们需要学习一个框架来帮我们完成并管理这样的报销流程,他可以在上级点击同意后自动将提交记录录到电脑并流转到下一节点,这就是我们这里要讲的工作流技术。
工作流(Workflow),就是“业务过程的部分或整体在计算机应用环境下的自动化”,它主要解决的是“使在多个参与者之间按照某种预定义的规则传递文档、信息或任务的过程自动进行,从而实现某个预期的业务目标,或者促使此目标的实现”
这里我们也可以比对出工作流的优点:
提高系统的柔性,适应业务流程的变化
实现更好的业务过程控制,提高顾客服务质量
降低系统开发和维护成本
工作流执行过程
我们以官网提供的示例包演示:
官网https://www.activiti.org/get-started下载对应的jar包,解压出来,在wars包目录下有个activiti-app.war,把这个包放到tomgcat运行(运行之前我把数据库配置改成我本地的mysql:WEB-INF\classes\META-INF\activiti-app\activiti-app.properties)
项目启动成功进入到首页
Kickstart App:主要用于流程模型管理、表单管理及应用(App)管理,一个应用可以包含多个流程模型,应用可发布给其他用户使用。
Task App:用于管理整个activiti-app的任务,在该功能里面也可以启动流程
Idenity management:身份信息管理,可以管理用户、用户组等数据
进入第三个菜单Identity management
新建用户:这边新建用户小明假设他为员工,王五是经理
定义流程
在主界面点击Kickstart App,点击create Process按钮弹出新建流程模型界面
上图中定义了一个开始事件、两个用户任务、一个结束事件。我们定义的请假业务,需要将该用户任务分配给 小明。点击第一个用户任务,并修改“Assignment”属性,将“提交申请”任务分配给“xiaoming”用户。保存成功后,再使用同样的方法将“部门经理审批”任务分配给 王五用户,保存流程模型后,就可以将流程发布。
发布流程
在 activiti-app 中,一个 App 可包含多个流程模型,因此在发布流程前,先新建一个 App并为其设置流程模型。点击 Apps 菜单,再点击“Creaea App”按钮,新建一个 App,该App就包含我们前面所设计的请假流程模型
建好之后需要为其设置流程模型
点击一下即可,在关闭
点击进入到app中,点击发布public进行发布
发布成功后使用小明账户登录,进入到首页可以看到
进入请假流程模型App并且点击“Processes”菜单,在界面左上角,可以看到“Start a process”按钮,点击启动请假流程后,可以看到界面如图所示
点击complete,完成,任务跳转到下一个执行人
直至整个流程审批完成,结束