简介
Activiti是由Alfresco软件在2010年5月17日发布的业务流程管理(BPM)框架,它是覆盖了业务流程管理,工作流,服务协作等领域的一个开源,灵活的,易扩展的可执行流程引擎。使用Activiti可以让我们开发时有更多的精力去关注业务逻辑。
流程引擎
ProcessEngine对象为流程引擎对象,该对象是工作流业务系统的核心,所有的业务操作都是由这个对象所派生出来的对象实现。
Activiti引擎提供了七大Service接口,均通过ProcessEngine获取:
- RepositoryService:流程仓库Service,用于管理流程仓库。如:部署、删除、读取流程资源。
- IdentifyService:身份Service,可以管理和查询用户、组之间的关系。
- RuntimeService:运行时Service,可以处理所有正在运行状态的流程实例、任务等。
- TaskService:任务Service,用于管理、查询任务。如:领取任务、办理、指派等。
- FormService:表单Service,用于读取和流程、任务相关的表单数据。
- HistoryService:历史Service,可以查询所有历史数据。如:流程实例、任务、活动、变量、附件等。
- ManagementService:引擎管理Service,和具体业务无关,主要是可以查询引擎配置、数据库、作业等。
使用Activiti
Activiti的使用比较简单,大致分为以下步骤:
- 部署Activiti
Activiti是一个工作流引擎,业务系统使用Activiti来对系统的业务流程进行自动化管理。Activiti只负责流程流转,而业务系统则只需要专注于业务逻辑。 - 流程定义
使用 Activiti流程建模工具定义业务流程(.bpmn文件) 。我们的流程中心绘制流程图,就是在定义流程。 - 流程定义部署
向 activiti部署业务流程定义(.bpmn文件) - 启动流程实例
启动一个流程实例代表开始一个业务流程的运行。与java中类和对象的关系一样,流程定义就是我们定义的java类,启动流程实例就是创建一个对象。 - 用户查询待办任务
业务流程都交给Activiti管理,Activiti当然也会为我们提供查询用户待执行的任务的API,查询到任务后,业务系统再将任务和业务逻辑结合起来,提供给前端展示。 - 完成任务
用户完成任务后,如果任务还需要其他人进行处理,Activiti会帮助我们指向下一待处理的人。 - 流程结束
当任务办理完成没有下一个任务节点了,这个流程实例就执行完成了。
我觉得学习Activiti最重要的是理解它的作用是什么,然后结合我们的流程中心,思考它与业务系统的关系,然后再尝试写demo,多尝试几次,可以方便我们更深入学习。