activiti

目录

      • activiti.cfg.xml
      • helloworld
      • 数据库表命名
      • processEngine 与其Service介绍
      • 流程定义与流程实例关系
      • 流程的挂起与激活
      • 个人任务assignee
      • 流程变量
      • 组任务candidate user
      • 任务交接
      • 网关
      • 监听器
      • 会签
      • ServiceTask与UserTask区别

activiti.cfg.xml

activiti默认配置文件

1.数据源配置

2.activiti单独运行的ProcessEngine配置对象(processEngineConfiguration),
使用单独启动方式,默认情况下:bean的id=processEngineConfiguration
<bean id="processEngineConfiguration01" class="org.activiti.engine.impl.cfg.StandaloneProcessEngineConfiguration">
    <!--代表数据源-->
    <property name="dataSource" ref="dataSource"></property>

    <!--代表是否生成表结构-->
    <property name="databaseSchemaUpdate" value="true"/>
</bean>

helloworld

 //1.创建ProcessEngineConfiguration对象  第一个参数:配置文件名称  第二个参数是processEngineConfiguration的bean的id
ProcessEngineConfiguration configuration = ProcessEngineConfiguration
        .createProcessEngineConfigurationFromResource("activiti.cfg.xml","processEngineConfiguration01");
//2.创建ProcesEngine对象
ProcessEngine processEngine = configuration.buildProcessEngine();
//条件:1.activiti配置文件名称:activiti.cfg.xml   2.bean的id="processEngineConfiguration"。完成这步后创建了25张空表
ProcessEngine processEngine = ProcessEngines.getDefaultProcessEngine();
//2.得到RepositoryService实例
RepositoryService repositoryService = processEngine.getRepositoryService();
Deployment deployment = repositoryService.createDeployment()
				.name("请假申请单流程")
				.addClassPathResources("xxx.png")
                .addClassPathResources("xxx.bpmn").deploy();
或者:
Deployment deployment = repositoryService.createDeployment()
                .addZipInputStream(zipInputStream)
                .name("请假申请单流程")
                .deploy();

数据库表命名

ACT_RE_* : re表示repository,包含流程定义和 流程静态资源
ACT_RU_* : ru表示runtime,运行时的表,包含流程实例、任务,变量,异步任务,
等运行中的数据。activiti只在流程实例执行过程中保存这些数据,流程结束时就会删除这些记录
ACT_HI_* : history,历史数据
ACT_GE_* : general通用数据

processEngine 与其Service介绍

  • RepositoryService
  • RuntimeService
  • TaskService
  • HistoryService
  • ManagerService

流程定义与流程实例关系

  • 流程定义:
repositoryService.createDeployment()
                .addZipInputStream(zipInputStream)
                .name("请假申请单流程")
                .deploy();

涉及三张表:
act_re_deployment、act_re_procdef、act_ge_bytearray

  • 流程实例
    启动一次请假流程会创建一个新的流程实例
RuntimeService runtimeService = processEngine.getRuntimeService();

//3.创建流程实例  流程定义的key=holiday
ProcessInstance processInstance = runtimeService.startProcessInstanceByKey("holiday");

流程的挂起与激活

Boolean processDefinition.isSuspended()

repositoryService.activateProcessDefinitionById(processDefinitionID)

repository.suspendProcessDefinitionByID(processDefinitionID)

流程定义挂起后,不允许启动新的流程实例,该定义下所有流程实例挂起暂停执行

  • 单个流程实例的挂起与激活
processInstance.isSuspended()

runtimeService.activateProcessInstanceById(processInstanceID)

runtimeService.suspendProcessInstanceByID(processInstanceID)

个人任务assignee

  1. 固定写死assignee
  2. UEL表达式:unified expression language
    java EE规范一部分
bpmn图,assignee栏设置${assignee01}

Map = new hashMap
map.put("assignee01","张三")
runtimeService.startProcessInstanceByKey("processDefinitionKey",map)

流程变量

设置在userTask上,设置在连线上condition

组任务candidate user

多个候选人用逗号隔开

  • 组任务办理流程
    1.查询组任务
    2.拾取任务:taskService.claim(taskId,user)
    3.查询个人任务
    4.办理任务

2.归还任务:taskService.setAssignee(taskId,null)

查询任务的时候使用的是taskCandidateUser而不是taskAssignee

任务交接

taskService.setAssignee(taskId,candidateUser)

网关

排他网关exclusiveGateway、并行网关parallelGateway、包含网关inclusiveGateway

  • 排他网关
    即使两个分支条件都为true,也只会选择一条分支执行。
    使用排他网关原因:多个分支都为true,同时都跑进去,分支都为false,会流程异常结束,分支都为false,排他网关也会抛异常

  • 并行网关:fork与join,分支与汇聚
    即使顺序流定义了条件也会被忽略,多个分支都完成了,才算是汇聚

  • 包含网关,排他网关和并行网关结合体
    可以走满足多个条件的分支,最后汇聚

监听器

  • 流程监听器(ExecutionListener)
    event有:start、end、take(监控连线时候使用)
start与end属于整个流程
take属于连线
start、end、take都是实现ExecutionListener接口
  • 任务监听器(TaskListener ):也叫节点监听器
    event有:create、delete、complete、assignment、all
assignment:节点配置了处理人所以触发assignment事件监听,assignment事件比create先执行
complete:任务完成的时候,触发complete事件,因为任务完成之后,要从ACT_RU_TASK中删除这条记录,所以触发delete事件

会签

Multi Instance:
	SequenTial:false
	Completion Condition
	Collection
	Element Variable
Assignee:对应ElementVariable

默认流程变量:nrOfInstances = nrOfCompletedInstances+nrOfActiviteInstances

  • nrOfInstances(numberOfInstances):会签中总共的实例数
  • nrOfCompletedInstances:已经完成的实例数量
  • nrOfActiviteInstances:当前活动的实例数量,即还没有完成的实例数量

ServiceTask与UserTask区别

serviceTask:调Java接口代码

你可能感兴趣的:(技术)