第一步:打开eclipse,并在eclipse安装Activiti designer插件
https://blog.csdn.net/qq_33556185/article/details/51672528
第二步:画流程图并进行配置
配置
(填写审批信息)
(主管审批)
(人事审批)
(填写审批信息-网关)
(主管审批-网关)
(人事审批-网关)
第三步:创建一个maven工程,配置pom.xml文件
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.imooc.activiti</groupId>
<artifactId>activiti-helloworld</artifactId>
<version>1.0-SNAPSHOT</version>
<dependencies>
<!--依赖引擎-->
<dependency>
<groupId>org.activiti</groupId>
<artifactId>activiti-engine</artifactId>
<version>6.0.0</version>
</dependency>
<!--表示单元测试在测试才使用,最后加了scope-->
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.11</version>
<scope>test</scope>
</dependency>
<!--添加日志,比较受欢迎的日志组件-->
<dependency>
<groupId>ch.qos.logback</groupId>
<artifactId>logback-classic</artifactId>
<version>1.1.11</version>
</dependency>
<!--做guava-->
<dependency>
<groupId>com.google.guava</groupId>
<artifactId>guava</artifactId>
<version>23.0</version>
</dependency>
<!--做h2database-->
<dependency>
<groupId>com.h2database</groupId>
<artifactId>h2</artifactId>
<version>1.3.176</version>
</dependency>
</dependencies>
</project>
第四步:在resources下引入logback.xml
<?xml version="1.0" encoding="UTF-8"?>
<configuration debug="false" scan="true" scanPeriod="30 seconds">
<property name="log.dir" value="target/logs" />
<property name="encoding" value="UTF-8" />
<property name="plain" value="%msg%n" />
<property name="std" value="%d{HH:mm:ss.SSS}[%thread][%-5level]%msg %X{user} %logger{10}.%M:%L%n" />
<property name="normal" value="%d{yyyy-MM-dd:HH:mm:ss.SSS}[%thread][%-5level] %logger{10}.%M:%L %msg%n" />
<!-- 控制台输出 -->
<appender name="stdout" class="ch.qos.logback.core.ConsoleAppender">
<encoder>
<pattern>${plain}</pattern>
<charset>${encoding}</charset>
</encoder>
</appender>
<!-- 时间滚动输出 level为 ALL 日志 -->
<appender name="file"
class="ch.qos.logback.core.rolling.RollingFileAppender">
<File>${log.dir}/file.log</File>
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<FileNamePattern>${log.dir}/file.%d{yyyy-MM-dd}.log</FileNamePattern>
<MaxHistory>30</MaxHistory>
</rollingPolicy>
<encoder>
<pattern>${std}</pattern>
<charset>${encoding}</charset>
</encoder>
</appender>
<logger name="root" >
<level value="ERROR"/>
</logger>
<logger name="com.imooc" >
<level value="DEBUG"/>
</logger>
<root>
<appender-ref ref="stdout" />
<appender-ref ref="file" />
</root>
</configuration>
第五步:将画好的流程图拷贝到resources下面
第六步:书写执行类
package com.imooc.activiti.helloworld;
import org.activiti.engine.ProcessEngine;
import org.activiti.engine.ProcessEngineConfiguration;
import org.activiti.engine.RepositoryService;
import org.activiti.engine.RuntimeService;
import org.activiti.engine.repository.Deployment;
import org.activiti.engine.repository.DeploymentBuilder;
import org.activiti.engine.repository.ProcessDefinition;
import org.activiti.engine.runtime.ProcessInstance;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
public class DemoMain {
//添加log
private static final Logger LOGGER = LoggerFactory.getLogger(DemoMain.class);
public static void main(String[] args){
LOGGER.info("启动我们的程序");
//第一步:创建流程引擎
ProcessEngineConfiguration cfg = ProcessEngineConfiguration.createStandaloneInMemProcessEngineConfiguration();
ProcessEngine processEngine = cfg.buildProcessEngine();
String name = processEngine.getName();
String version = ProcessEngine.VERSION;
LOGGER.info("流程引擎名称{},版本{}",name,version);
//第二步:部署流程定义文件
RepositoryService repositoryService=processEngine.getRepositoryService();
DeploymentBuilder deploymentBuilder=repositoryService.createDeployment();
deploymentBuilder.addClasspathResource("MyProcess.bpmn20.xml");
Deployment deployment=deploymentBuilder.deploy();
String deploymentId=deployment.getId();
ProcessDefinition processDefinition = repositoryService.createProcessDefinitionQuery().deploymentId(deploymentId).singleResult();
LOGGER.info("流程定义文件 {},流程ID {}",processDefinition.getName(),processDefinition.getId());
//第三步:启动运行流程
RuntimeService runtimeService=processEngine.getRuntimeService();
ProcessInstance processInstance=runtimeService.startProcessInstanceById(processDefinition.getId());
LOGGER.info("启动流程{}",processInstance.getProcessDefinitionKey());
//第四步:处理流程任务
LOGGER.info("结束我们的程序");
}
}