关于springboot集成activiti6.0

自学了一段时间的activiti,发现网上有很多的demo都用不起。找了很多,都比较失望。所以今天自己写一个简单的基于springboot的activiti项目。

ok,开始

首先,我们需要先创建一个springboot项目。下面这个pom依赖。

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-web</artifactId>
</dependency>

<dependency>
    <groupId>com.alibaba</groupId>
    <artifactId>druid</artifactId>
    <version>1.1.9</version>
</dependency>

<dependency>
    <groupId>org.activiti</groupId>
    <artifactId>activiti-spring-boot-starter-basic</artifactId>
    <version>6.0.0</version>
</dependency>
<dependency>
    <groupId>com.google.guava</groupId>
    <artifactId>guava</artifactId>
    <version>24.0-jre</version>
</dependency>
<dependency>
    <groupId>mysql</groupId>
    <artifactId>mysql-connector-java</artifactId>
    <version>5.1.41</version>
</dependency>
<dependency>
    <groupId>org.projectlombok</groupId>
    <artifactId>lombok</artifactId>
    <optional>true</optional>
</dependency>
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-test</artifactId>
    <scope>test</scope>
</dependency>

这里注意一下 ,mysql的依赖包不应版本太高,否则无法自动建表。

然后在启动类上面加上这句话

@SpringBootApplication(exclude = SecurityAutoConfiguration.class)

 

接下来创建我们自己的流程文件,

在resource下面创建一个文件夹来存放对应的文件,当然这个命名随你喜好。

 

然后在配置文件里面加上

spring.datasource.type=com.alibaba.druid.pool.DruidDataSource
spring.datasource.driver-class-name=com.mysql.jdbc.Driver
spring.datasource.url=jdbc:mysql:///activitidb?serverTimezone=GMT%2B8
spring.datasource.username=root
spring.datasource.password=123456
spring.jpa.hibernate.ddl-auto=update
spring.jpa.show-sql=true


#spring.activiti.history-level=full
spring.activiti.database-schema-update=true
#spring.activiti.check-process-definitions=false
spring.activiti.process-definition-location-prefix=classpath:/processes/

最后,来写一段简单的代码

private static final Logger LOGGER = LoggerFactory.getLogger(UserServiceImpl.class);

@Autowired
private IdentityService identityService;

@Autowired
private RuntimeService runtimeService;

@Autowired
private TaskService taskService;


@Autowired
private FormService formService;

@Override
public String submitMsg() {
   // identityService.setAuthenticatedUserId("zhangsan");
    //获取当前执行的流程任务
    ProcessInstance processInstance = runtimeService.startProcessInstanceByKey("my-process");
    Task task = taskService.createTaskQuery().processInstanceId(processInstance.getId()).singleResult();
    LOGGER.info("task1 name = {}",task.getName());

    //完成第一个任务,为了让得到下面的usertask
    taskService.complete(task.getId());

    //获取当前处理人的节点
    List<Task> list = taskService.createTaskQuery()
            .processDefinitionKey("my-process")
            .taskCandidateUser("user1").list();
    for(Task task1:list)
    {
        LOGGER.info("user1处理的任务 = {}",task1.getName());
    }

    return null;
}

ok,然后在去访问对应的地址即可,控制层的代码我就不贴出来了  没什么意义。你也可以把这个写在单元测试类里面,还有就是我比较习惯手写一些简单的流程配置。所以格式是bpmn20.xml格式。

最后,是对应的流程文件

<?xml version="1.0" encoding="UTF-8"?>

<definitions xmlns="http://www.omg.org/spec/BPMN/20100524/MODEL"
   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:activiti="http://activiti.org/bpmn"
   xmlns:bpmndi="http://www.omg.org/spec/BPMN/20100524/DI" xmlns:omgdc="http://www.omg.org/spec/DD/20100524/DC"
   xmlns:omgdi="http://www.omg.org/spec/DD/20100524/DI" typeLanguage="http://www.w3.org/2001/XMLSchema"
   expressionLanguage="http://www.w3.org/1999/XPath" targetNamespace="http://www.activiti.org/test">

   <process id="my-process">

      <startEvent id="start" />

      <sequenceFlow id="flow1" sourceRef="start" targetRef="someTask1" />

      <userTask id="someTask1" name="User Task1"/>   <!--activiti:candidateGroups 候选组  activiti:candidateUsers 候选人-->

      <sequenceFlow id="flow2" sourceRef="someTask1" targetRef="someTask2" />


      <userTask id="someTask2" name="User Task2"
              activiti:candidateGroups="group1"
              activiti:candidateUsers="user1,user2" />   <!--activiti:candidateGroups 候选组  activiti:candidateUsers 候选人-->

      <sequenceFlow id="flow3" sourceRef="someTask2" targetRef="end" />

      <endEvent id="end" />

   </process>

</definitions>

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值