下载工具
官网链接:https://camunda.com/download/modeler/,选择如图,然后下载自己所需要
idea添加外部工具
idea中File -> Settings -> Tools -> External Tools里添加外部工具
开始绘图
右键项目,点击刚刚添加的外部工具
我们使用BPMN格式来绘图
注意右侧参数
提交申请
经理审批
审批条件,排他网关,选中箭头添加条件
字符串:${flag.equals('xxx')}
数字: ${flag==/>/< 数字}
布尔:${flag=false/true}
发送邮件通知
锁定一个java类,flag为false则会进入该类的execute()方法(下面会说)
最后点击画布的空白区域命名id为"studyCamunda",保存另存为该文件至Springboot工程resources/BPMN/study.bpmn20.xml(后缀固定下来)
创建项目
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.1.0.RELEASE</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
<java.version>1.8</java.version>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-jdbc</artifactId>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.4.5</version>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.27</version>
</dependency>
<!-- camunda -->
<dependency>
<groupId>org.camunda.bpm.springboot</groupId>
<artifactId>camunda-bpm-spring-boot-starter-webapp</artifactId>
<version>3.4.1</version>
</dependency>
</dependencies>
yml
camunda.bpm:
# 流程引擎name
process-engine-name: camundaEngine
# 历史级别
history-level: full
# 是否自动部署
auto-deployment-enabled: false
id-generator: strong
deployment-resource-pattern:
- classpath:BPMN/*.bpmn20.xml
job-execution:
enabled: true
authorization:
enabled: true
admin-user:
id: admin
password: password
spring:
datasource:
driver-class-name: com.mysql.jdbc.Driver
#新建数据库camunda
url: jdbc:mysql://127.0.0.1:3306/camunda
username: root
password: root
启动类需要加一点东西
import org.camunda.bpm.engine.RepositoryService;
import org.camunda.bpm.engine.repository.ProcessDefinition;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.CommandLineRunner;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import java.util.List;
@SpringBootApplication
public class App implements CommandLineRunner {
private final Logger logger = LoggerFactory.getLogger(App.class);
@Autowired
RepositoryService repositoryService;
public static void main(String[] args) {
SpringApplication.run(App.class, args);
}
@Override
public void run(String... args) throws Exception {
List<ProcessDefinition> processDefinitionList = repositoryService.createProcessDefinitionQuery().active().latestVersion().list();
logger.info("> 处于激活状态的最新版本的流程定义数量: " + processDefinitionList.size());
for (ProcessDefinition pd : processDefinitionList) {
logger.info("\t ===> Process definition: " + pd.getKey() + " 版本:" + pd.getVersion());
}
}
}
启动工程 访问localhost8080,可以看到Camunda的控制台了
账号:admin
密码:password
目前笔者已经部署了流程实例,第一次进入应该是没有正在运行的流程的
ok到这里我们的准备工作就做完了,接下来是实战了,会用到tasklistener,sendEmailTask,排他网关,兼容网关,同行网关,下期会详细介绍~
总结
工作流还在用activiti or flowable吗?醒醒,大清亡了