本文中简单介绍如何开启Activiti工作流引擎,百度上已经有了N多环境搭建的栗子,这边就不再介绍。
在开始之前先看看下图,对整个对象结构有个了解,再结合下面的详细介绍理解。
核心 API
介绍
作用
ProcessEngineConfiguration |
流程引擎配置对象 |
添加数据库连接配置和数据库建表策略 |
ProcessEngine |
核心对象, 流程引擎对象 |
大管家, 管理各种服务 |
ProcessDefinition |
流程定义对象 |
规定了流程包含了哪些活动, 以及各种活动的执行顺序 |
ProcessInsctance |
流程实例对象 |
按照规则实际的一次执行 |
对以上有了解之后会更快的理解下面的内容
RuntimeService |
执行管理, 启动, 推进, 删除流程实例 |
API为我们提供了20种开启流程的方法,总有一种是你的菜。
startProcessInstanceById(String processDefinitionId) |
startProcessInstanceById(String processDefinitionId, Map<String,Object> variables) |
startProcessInstanceById(String processDefinitionId, String businessKey) |
startProcessInstanceById(String processDefinitionId, String businessKey, Map<String,Object> variables) |
startProcessInstanceByKey(String processDefinitionKey) |
startProcessInstanceByKey(String processDefinitionKey, Map<String,Object> variables) |
startProcessInstanceByKey(String processDefinitionKey, String businessKey) |
startProcessInstanceByKey(String processDefinitionKey, String businessKey, Map<String,Object> variables) |
|
startProcessInstanceByKeyAndTenantId(String processDefinitionKey, String tenantId) |
startProcessInstanceByKeyAndTenantId(String processDefinitionKey, String businessKey, Map<String,Object> variables, String tenantId) |
startProcessInstanceByKeyAndTenantId(String processDefinitionKey, String businessKey, String tenantId) |
startProcessInstanceByMessage(String messageName) |
startProcessInstanceByMessage(String messageName, Map<String,Object> processVariables) |
startProcessInstanceByMessage(String messageName, String businessKey) |
startProcessInstanceByMessage(String messageName, String businessKey, Map<String,Object> processVariables) |
startProcessInstanceByMessageAndTenantId(String messageName, Map<String,Object> processVariables, String tenantId) |
startProcessInstanceByMessageAndTenantId(String messageName, String tenantId) |
startProcessInstanceByMessageAndTenantId(String messageName, String businessKey, Map<String,Object> processVariables, String tenantId) |
startProcessInstanceByMessageAndTenantId(String messageName, String businessKey, String tenantId) |
开启流程相关代码
//设置流程开启人,这个是必要方法
Authentication.setAuthenticatedUserId(startUser);
//这边使用的是多租户 tenantId
//variables 是流程需要的集合变量
//id 是uuid 唯一
//key 是流程部署的key
ProcessInstance processInstance = runtimeService.startProcessInstanceByKeyAndTenantId(key, id, variables,tenantId);
//取得流程当前任务信息
Task task = taskService.createTaskQuery().processInstanceId(processInstance.getId()).taskTenantId(tenantId).singleResult();