工作流开源框架

快速入门

BPMN

业务流程建模与标注(Business Process Model and Notation,BPMN) ,描述流程的基本符号,包括这些图元如何组合成一个业务流程图

自动创建

1
2
3
4
5
ACT_RE_*: repository。 流程定义和流程静态资源 (图片、规则等)
ACT_RU_*: runtime 运行时表(流程实例、任务、变量、异步任务等运行中的数据)。流程实例执行过程中保存, 流程结束时删除。 这样运行时表可以一直很小速度很快
ACT_ID_*: identity 身份信息(用户、组等)
ACT_HI_*: history 历史数据(历史流程实例、变量、任务等)
ACT_GE_*: general 通用数据, 用于不同场景下(资源文件)

idea插件

放在resources/processes目录

maven

1
2
3
4
5
<dependency>
    <groupId>org.activiti</groupId>
    <artifactId>activiti-spring-boot-starter-basic</artifactId>
    <version>5.22.0</version>
</dependency>

properties

1
2
3
4
# 自动部署,默认true
spring.activiti.check-process-definitions=false
#JobExecutor是管理一系列线程的组件,可以触发定时器,关闭可以避免与job发生冲突,JobExecutor对多线程处理比较缓慢
spring.activiti.job-executor-activate=false

API

1
2
3
4
5
6
7
8
@Autowired
private RepositoryService repositoryService;
@Autowired
private RuntimeService runtimeService;
@Autowired
private TaskService taskService;
@Autowired
private HistoryService historyService;

部署

1
2
3
4
5
public void deploy(String resource) {
    DeploymentBuilder deploymentBuilder = repositoryService.createDeployment();
    deploymentBuilder.addClasspathResource(resource);
    deploymentBuilder.deploy();
}

执行

1
2
3
4
5
6
7
8
9
public ProcessInstance start(String processDefinitionKey, Map<String, Object> variables) {
    ProcessInstance processInstance = Objects.isNull(variables) ?
            runtimeService.startProcessInstanceByKey(processInstanceByKey) :
            runtimeService.startProcessInstanceByKey(processInstanceByKey, variables);
    
    System.out.println("流程实例id:" + processInstance.getId());
    System.out.println("流程定义id:" + processInstance.getProcessDefinitionId());
    return processInstance;
}

查询任务

1
2
3
public List<Task> query(String assignee) {
    return taskService.createTaskQuery().taskAssignee(assignee).list();
}

处理任务

1
2
3
public void complete(String taskId) {
    taskService.complete(taskId);
}