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>
//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通用数据
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)
bpmn图,assignee栏设置${assignee01}
Map = new hashMap
map.put("assignee01","张三")
runtimeService.startProcessInstanceByKey("processDefinitionKey",map)
设置在userTask上,设置在连线上condition
多个候选人用逗号隔开
2.归还任务:taskService.setAssignee(taskId,null)
查询任务的时候使用的是taskCandidateUser而不是taskAssignee
taskService.setAssignee(taskId,candidateUser)
排他网关exclusiveGateway、并行网关parallelGateway、包含网关inclusiveGateway
排他网关
即使两个分支条件都为true,也只会选择一条分支执行。
使用排他网关原因:多个分支都为true,同时都跑进去,分支都为false,会流程异常结束,分支都为false,排他网关也会抛异常
并行网关:fork与join,分支与汇聚
即使顺序流定义了条件也会被忽略,多个分支都完成了,才算是汇聚
包含网关,排他网关和并行网关结合体
可以走满足多个条件的分支,最后汇聚
start与end属于整个流程
take属于连线
start、end、take都是实现ExecutionListener接口
assignment:节点配置了处理人所以触发assignment事件监听,assignment事件比create先执行
complete:任务完成的时候,触发complete事件,因为任务完成之后,要从ACT_RU_TASK中删除这条记录,所以触发delete事件
Multi Instance:
SequenTial:false
Completion Condition
Collection
Element Variable
Assignee:对应ElementVariable
默认流程变量:nrOfInstances = nrOfCompletedInstances+nrOfActiviteInstances
serviceTask:调Java接口代码