activiti学习

核心组件介绍

  • 关键对象
    • Deployment:流程部署对象,部署一个流程时创建。
    • ProcessDefinitions:流程定义,部署成功后自动创建。
    • ProcessInstances:流程实例,启动流程时创建。
    • Task:任务,在Activiti中的Task仅指有角色参与的任务,即定义中的UserTask。
    • Execution:执行计划,流程实例和流程执行中的所有节点都是Execution,如UserTask、ServiceTask等。
  • 服务接口
    • ProcessEngine:流程引擎的抽象,通过它我们可以获得我们需要的一切服务。
    • RepositoryService:Activiti中每一个不同版本的业务流程的定义都需要使用一些定义文件,部署文件和支持数据(例如BPMN2.0 XML文件,表单定义文件,流程定义图像文件等),这些文件都存储在Activiti内建的Repository中。RepositoryService提供了对 repository的存取服务。
    • RuntimeService:在Activiti中,每当一个流程定义被启动一次之后,都会生成一个相应的流程对象实例。RuntimeService提供了启动流程、查询流程实例、设置获取流程实例变量等功能。此外它还提供了对流程部署,流程定义和流程实例的存取服务。
    • TaskService: 在Activiti中业务流程定义中的每一个执行节点被称为一个Task,对流程中的数据存取,状态变更等操作均需要在Task中完成。TaskService提供了对用户Task 和Form相关的操作。它提供了运行时任务查询、领取、完成、删除以及变量设置等功能。
    • IdentityService: Activiti中内置了用户以及组管理的功能,必须使用这些用户和组的信息才能获取到相应的Task。IdentityService提供了对Activiti 系统中的用户和组的管理功能。
    • ManagementService: ManagementService提供了对Activiti流程引擎的管理和维护功能,这些功能不在工作流驱动的应用程序中使用,主要用于Activiti系统的日常维护。
    • HistoryService: HistoryService用于获取正在运行或已经完成的流程实例的信息,与RuntimeService中获取的流程信息不同,历史信息包含已经持久化存储的永久信息,并已经被针对查询优化。

核心API

  • ProcessEngine:流程引擎
    • 加载方式:

      ProcessEnqine processEnqine = ProcessEnqine.getDefaultProcessEnqine();
    • 作用:
      • 产生RepositoryService

        RepositoryService repositoryService = processEnqine.getRepository();
      • 产生RuntimeService
      • 产生TaskService
  • 各个service的作用
    • RepositoryService:管理流程定义
    • RuntimeService:执行管理,包括启动,推进,删除流程实例等操作
    • TaskService:任务管理
    • HistoryService:历史管理(执行完的数据的管理)
    • IdentityService:组织机构管理
    • FormService:一个可选服务,任务表单管理
    • ManagerService
  • ProcessDefinition:流程定义类,可以获得资源文件
  • ProcessInstance:流程定义的执行实例,表示一个流程从开始到结束的最大流程分支
  • Execution:描述流程执行的每一个节点,在单线流程时,基本等同于ProcessInstance,多线流程总线路代表ProcessEnqine,风险中的每个活动代表Execution

一个Demo

  • 画流程图
  • 部署流程定义:使用RepositoryService部署流程定义
  • 启动流程实例:使用流程定义的key启动流程实例,这里使用RuntimeService启动流程实例
  • 查看个人任务:这里使用TaskService完成任务的查询
  • 完成个人任务:使用TaskService完成任务的查询

创建流程实例涉及到四张表

  • act_hi_actinst:正在活动的实例
  • act_hi_procinst:所有历史实例,正在执行的流程实例也在这张表中
  • act_hi_taskinst:历史任务,正在执行的任务也在这张表中
  • act_ru_execution:正在执行的流程实例表
  • act_ru_task:正在执行的任务表

流程变量使用

  • assign:设置候选人,#{userId}
  • condition:点击箭头->设置条件:${money > 100 && money < 500}
  • 在流程图中设置完成后,程序中必须设置流程变量variables

动态设置任务执行人

  • 设置taskListener,可以动态的设置任务执行人(通过取出流程变量中的值)

- 直接在程序中设置执行人,完成任务后,setAssign(username)

组任务

  • 流程图中填入condidate user
  • 候选人被存储在act_ru_identitylink(临时表),act_hi_identitylink表中(永久性的表)

sequenceflow(箭头,在箭头中设置条件)

- 用于设置多个出路,设置条件(格式$(days > 3) ,使用流程变量判断),根据流程变量选择出路

解决bpmn流程图乱码的问题

  • 在idea站桩目录下找到idea.exe.vmoptions和idea64.exe.vmoptions两个文件,在文件末尾添加-Dfile.encoding=UTF-8即可

设置流程变量

  • RuntimeService对象可以设置流程变量和获取流程变量
  • TaskService对象可以设置流程变量和获取流程变量
  • 流程实例启动的时候可以设置流程变量
  • 任务办理完成的时候可以设置流程变量
  • 流程变量可以通过名称/值的形式设置单个流程变量
  • 流程变量可以通过Map集合,同时设置多个流程变量
  • Map集合的key表示流程变量的名称
  • Map集合的value表示流程变量的值
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值