Browse Source

first commit

xieshengjie 4 years ago
commit
4f4f33cbaf
29 changed files with 716 additions and 0 deletions
  1. 8 0
      .idea/.gitignore
  2. 18 0
      .idea/compiler.xml
  3. 7 0
      .idea/encodings.xml
  4. 85 0
      .idea/jarRepositories.xml
  5. 17 0
      .idea/misc.xml
  6. 90 0
      pom.xml
  7. 14 0
      src/main/java/cn/gyee/act/ActApplication.java
  8. 68 0
      src/main/java/cn/gyee/act/config/DemoApplicationConfiguration.java
  9. 61 0
      src/main/java/cn/gyee/act/controller/ActivitiController.java
  10. 66 0
      src/main/java/cn/gyee/act/utils/SecurityUtil.java
  11. 20 0
      src/main/resources/application.yml
  12. 61 0
      src/main/resources/processes/demo.bpmn
  13. 104 0
      src/test/java/cn/gyee/act/ActivitiTest.java
  14. 20 0
      target/classes/application.yml
  15. BIN
      target/classes/cn/gyee/act/ActApplication.class
  16. BIN
      target/classes/cn/gyee/act/config/DemoApplicationConfiguration.class
  17. BIN
      target/classes/cn/gyee/act/controller/ActivitiController.class
  18. BIN
      target/classes/cn/gyee/act/utils/SecurityUtil$1.class
  19. BIN
      target/classes/cn/gyee/act/utils/SecurityUtil.class
  20. 61 0
      target/classes/processes/demo.bpmn
  21. 4 0
      target/maven-archiver/pom.properties
  22. 5 0
      target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst
  23. 3 0
      target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst
  24. 1 0
      target/maven-status/maven-compiler-plugin/testCompile/default-testCompile/createdFiles.lst
  25. 1 0
      target/maven-status/maven-compiler-plugin/testCompile/default-testCompile/inputFiles.lst
  26. BIN
      target/test-classes/cn/gyee/act/ActivitiTest.class
  27. BIN
      target/workflow-1.0-SNAPSHOT.jar
  28. BIN
      target/workflow-1.0-SNAPSHOT.jar.original
  29. 2 0
      workflow.iml

+ 8 - 0
.idea/.gitignore

@@ -0,0 +1,8 @@
+# Default ignored files
+/shelf/
+/workspace.xml
+# Datasource local storage ignored files
+/dataSources/
+/dataSources.local.xml
+# Editor-based HTTP Client requests
+/httpRequests/

+ 18 - 0
.idea/compiler.xml

@@ -0,0 +1,18 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project version="4">
+  <component name="CompilerConfiguration">
+    <annotationProcessing>
+      <profile name="Maven default annotation processors profile" enabled="true">
+        <sourceOutputDir name="target/generated-sources/annotations" />
+        <sourceTestOutputDir name="target/generated-test-sources/test-annotations" />
+        <outputRelativeToContentRoot value="true" />
+        <module name="workflow" />
+      </profile>
+    </annotationProcessing>
+  </component>
+  <component name="JavacSettings">
+    <option name="ADDITIONAL_OPTIONS_OVERRIDE">
+      <module name="workflow" options="-parameters" />
+    </option>
+  </component>
+</project>

+ 7 - 0
.idea/encodings.xml

@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project version="4">
+  <component name="Encoding">
+    <file url="file://$PROJECT_DIR$/src/main/java" charset="UTF-8" />
+    <file url="file://$PROJECT_DIR$/src/main/resources" charset="UTF-8" />
+  </component>
+</project>

+ 85 - 0
.idea/jarRepositories.xml

@@ -0,0 +1,85 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project version="4">
+  <component name="RemoteRepositoriesConfiguration">
+    <remote-repository>
+      <option name="id" value="spring-snapshot" />
+      <option name="name" value="Spring Snapshot" />
+      <option name="url" value="https://repo.spring.io/snapshot" />
+    </remote-repository>
+    <remote-repository>
+      <option name="id" value="rabbit-milestone" />
+      <option name="name" value="Rabbit Milestone" />
+      <option name="url" value="http://maven.aliyun.com/nexus/content/groups/public" />
+    </remote-repository>
+    <remote-repository>
+      <option name="id" value="rabbit-milestone" />
+      <option name="name" value="Rabbit Milestone" />
+      <option name="url" value="https://dl.bintray.com/rabbitmq/maven-milestones" />
+    </remote-repository>
+    <remote-repository>
+      <option name="id" value="central" />
+      <option name="name" value="Maven Central repository" />
+      <option name="url" value="https://repo1.maven.org/maven2" />
+    </remote-repository>
+    <remote-repository>
+      <option name="id" value="alimaven" />
+      <option name="name" value="aliyun maven" />
+      <option name="url" value="http://maven.aliyun.com/nexus/content/groups/public/" />
+    </remote-repository>
+    <remote-repository>
+      <option name="id" value="central" />
+      <option name="name" value="Central Repository" />
+      <option name="url" value="http://maven.aliyun.com/nexus/content/groups/public/" />
+    </remote-repository>
+    <remote-repository>
+      <option name="id" value="public" />
+      <option name="name" value="aliyun nexus" />
+      <option name="url" value="http://maven.aliyun.com/nexus/content/groups/public" />
+    </remote-repository>
+    <remote-repository>
+      <option name="id" value="spring-milestone" />
+      <option name="name" value="Spring Milestone" />
+      <option name="url" value="http://maven.aliyun.com/nexus/content/groups/public" />
+    </remote-repository>
+    <remote-repository>
+      <option name="id" value="nexus" />
+      <option name="name" value="nexus" />
+      <option name="url" value="http://nexus.hepengju.cn:8081/nexus/content/groups/public/" />
+    </remote-repository>
+    <remote-repository>
+      <option name="id" value="jboss.community" />
+      <option name="name" value="JBoss Community repository" />
+      <option name="url" value="https://repository.jboss.org/nexus/content/repositories/public/" />
+    </remote-repository>
+    <remote-repository>
+      <option name="id" value="alimaven" />
+      <option name="name" value="aliyun maven" />
+      <option name="url" value="http://maven.aliyun.com/nexus/content/groups/public" />
+    </remote-repository>
+    <remote-repository>
+      <option name="id" value="spring-snapshot" />
+      <option name="name" value="Spring Snapshot" />
+      <option name="url" value="http://maven.aliyun.com/nexus/content/groups/public" />
+    </remote-repository>
+    <remote-repository>
+      <option name="id" value="central" />
+      <option name="name" value="Central Repository" />
+      <option name="url" value="https://repo.maven.apache.org/maven2" />
+    </remote-repository>
+    <remote-repository>
+      <option name="id" value="nexus" />
+      <option name="name" value="nexus" />
+      <option name="url" value="http://maven.aliyun.com/nexus/content/groups/public" />
+    </remote-repository>
+    <remote-repository>
+      <option name="id" value="central" />
+      <option name="name" value="Central Repository" />
+      <option name="url" value="http://maven.aliyun.com/nexus/content/groups/public" />
+    </remote-repository>
+    <remote-repository>
+      <option name="id" value="spring-milestone" />
+      <option name="name" value="Spring Milestone" />
+      <option name="url" value="https://repo.spring.io/milestone" />
+    </remote-repository>
+  </component>
+</project>

+ 17 - 0
.idea/misc.xml

@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project version="4">
+  <component name="ExternalStorageConfigurationManager" enabled="true" />
+  <component name="JavaScriptSettings">
+    <option name="languageLevel" value="ES6" />
+  </component>
+  <component name="MavenProjectsManager">
+    <option name="originalFiles">
+      <list>
+        <option value="$PROJECT_DIR$/pom.xml" />
+      </list>
+    </option>
+  </component>
+  <component name="ProjectRootManager" version="2" languageLevel="JDK_1_8" project-jdk-name="1.8" project-jdk-type="JavaSDK">
+    <output url="file://$PROJECT_DIR$/out" />
+  </component>
+</project>

+ 90 - 0
pom.xml

@@ -0,0 +1,90 @@
+<?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>cn.gyee</groupId>
+    <artifactId>workflow</artifactId>
+    <version>1.0-SNAPSHOT</version>
+    <parent>
+        <groupId>org.springframework.boot</groupId>
+        <artifactId>spring-boot-starter-parent</artifactId>
+        <version>2.1.0.RELEASE</version>
+        <relativePath/> <!-- 从存储库查找父级 -->
+    </parent>
+    <dependencies>
+        <dependency>
+            <groupId>org.springframework.boot</groupId>
+            <artifactId>spring-boot-starter-web</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.activiti</groupId>
+            <artifactId>activiti-spring-boot-starter</artifactId>
+            <version>7.0.0.Beta2</version>
+        </dependency>
+        <dependency>
+            <groupId>mysql</groupId>
+            <artifactId>mysql-connector-java</artifactId>
+            <version>5.1.45</version>
+        </dependency>
+        <dependency>
+            <groupId>org.springframework.boot</groupId>
+            <artifactId>spring-boot-starter-jdbc</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.springframework.boot</groupId>
+            <artifactId>spring-boot-starter-test</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.slf4j</groupId>
+            <artifactId>jul-to-slf4j</artifactId>
+            <version>1.7.25</version>
+        </dependency>
+        <dependency>
+            <groupId>org.projectlombok</groupId>
+            <artifactId>lombok</artifactId>
+        </dependency>
+    </dependencies>
+    <build>
+        <plugins>
+            <plugin>
+                <groupId>org.springframework.boot</groupId>
+                <artifactId>spring-boot-maven-plugin</artifactId>
+            </plugin>
+            <plugin>
+                <groupId>org.apache.maven.plugins</groupId>
+                <artifactId>maven-surefire-plugin</artifactId>
+                <version>2.22.1</version>
+                <configuration>
+                    <skipTests>true</skipTests>
+                </configuration>
+            </plugin>
+        </plugins>
+    </build>
+    <!-- 阿里云maven仓库 -->
+    <repositories>
+        <repository>
+            <id>public</id>
+            <name>aliyun nexus</name>
+            <url>http://maven.aliyun.com/nexus/content/groups/public/</url>
+            <releases>
+                <enabled>true</enabled>
+            </releases>
+        </repository>
+    </repositories>
+
+    <pluginRepositories>
+        <pluginRepository>
+            <id>public</id>
+            <name>aliyun nexus</name>
+            <url>http://maven.aliyun.com/nexus/content/groups/public/</url>
+            <releases>
+                <enabled>true</enabled>
+            </releases>
+            <snapshots>
+                <enabled>false</enabled>
+            </snapshots>
+        </pluginRepository>
+    </pluginRepositories>
+</project>

+ 14 - 0
src/main/java/cn/gyee/act/ActApplication.java

@@ -0,0 +1,14 @@
+package cn.gyee.act;
+
+import org.springframework.boot.SpringApplication;
+import org.springframework.boot.autoconfigure.SpringBootApplication;
+
+/**
+ * xiesj
+ */
+@SpringBootApplication
+public class ActApplication {
+    public static void main(String[] args) {
+        SpringApplication.run(ActApplication.class,args);
+    }
+}

+ 68 - 0
src/main/java/cn/gyee/act/config/DemoApplicationConfiguration.java

@@ -0,0 +1,68 @@
+package cn.gyee.act.config;
+
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+import org.springframework.security.core.authority.SimpleGrantedAuthority;
+import org.springframework.security.core.userdetails.User;
+import org.springframework.security.core.userdetails.UserDetailsService;
+import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder;
+import org.springframework.security.crypto.password.PasswordEncoder;
+import org.springframework.security.provisioning.InMemoryUserDetailsManager;
+
+import java.util.Arrays;
+import java.util.List;
+import java.util.stream.Collectors;
+
+/**
+ *@ClassName DemoApplicationConfiguration
+ *@Description TODO
+ *@Author 谢生杰
+ *@Date 2021/1/3 21:17
+ *@Version 1.0
+ **/
+/**
+ * 设置用户和角色
+ */
+@Slf4j
+@Configuration
+public class DemoApplicationConfiguration {
+
+    /**
+     * 添加Security的用户
+     * @return
+     */
+    @Bean
+    public UserDetailsService myUserDetailsService(){
+//        把用户存储在内存中
+        InMemoryUserDetailsManager inMemoryUserDetailsManager = new InMemoryUserDetailsManager();
+//        构造用户的信息
+        String[][] usersGroupAndRoles= {
+                {"jack","password","ROLE_ACTIVITI_USER","GROUP_activitiTeam"},
+                {"rose","password","ROLE_ACTIVITI_USER","GROUP_activitiTeam"},
+                {"tom","password","ROLE_ACTIVITI_USER","GROUP_activitiTeam"},
+                {"jerry","password","ROLE_ACTIVITI_USER","GROUP_activitiTeam"},
+                {"other","password","ROLE_ACTIVITI_USER","GROUP_otherTeam"},
+                {"system","password","ROLE_ACTIVITI_USER"},
+                {"admin","password","ROLE_ACTIVITI_ADMIN"}
+        };
+
+        for (String[] users : usersGroupAndRoles) {
+//            用户的角色和组
+            List<String> authStrList = Arrays.asList(Arrays.copyOfRange(users, 2, users.length));
+
+            log.info("> Registering new user: {} with the following Authorities[{}]",users[0],authStrList);
+
+            inMemoryUserDetailsManager.createUser(new User(users[0],
+                    passwordEncoder().encode(users[1]),
+                    authStrList.stream().map(str -> new SimpleGrantedAuthority(str)).collect(Collectors.toList())));
+        }
+        return inMemoryUserDetailsManager;
+
+    }
+
+    @Bean
+    public PasswordEncoder passwordEncoder(){
+        return new BCryptPasswordEncoder();
+    }
+}

+ 61 - 0
src/main/java/cn/gyee/act/controller/ActivitiController.java

@@ -0,0 +1,61 @@
+package cn.gyee.act.controller;
+
+import cn.gyee.act.utils.SecurityUtil;
+import org.activiti.api.process.runtime.ProcessRuntime;
+import org.activiti.api.runtime.shared.query.Page;
+import org.activiti.api.runtime.shared.query.Pageable;
+import org.activiti.api.task.model.Task;
+import org.activiti.api.task.model.builders.TaskPayloadBuilder;
+import org.activiti.api.task.runtime.TaskRuntime;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+/**
+ *@ClassName ActivitiController
+ *@Description TODO
+ *@Author 谢生杰
+ *@Date 2021/1/3 22:16
+ *@Version 1.0
+ **/
+
+@RestController
+public class ActivitiController {
+    private Logger logger = LoggerFactory.getLogger(ActivitiController.class);
+    @Autowired
+    private ProcessRuntime processRuntime; // 实现流程定义相关操作
+    @Autowired
+    private TaskRuntime taskRuntime; //任务相关操作的类
+    @Autowired
+    private SecurityUtil securityUtil; // springSecurity相关的工具类
+
+
+    // 查询任务并完成
+    @RequestMapping("/hello")
+    public void testHello(){
+        // springsecurity的相关认证,相当于指定登录用户
+        // securityUtil.logInAs("ryandawsonuk");
+        // 分页查询任务列表
+        Page<Task> taskPage = taskRuntime.tasks(Pageable.of(0, 10));
+        // 判断是否有任务
+        if(taskPage.getTotalItems()>0){
+            for (Task task : taskPage.getContent()) {
+                System.out.println("任务:"+task);
+                //拾取任务
+                taskRuntime.claim(TaskPayloadBuilder.claim().withTaskId(task.getId()).build());
+                // 完成任务
+                taskRuntime.complete(TaskPayloadBuilder.complete().withTaskId(task.getId()).build());
+            }
+        }
+        // 任务完成后再次查询
+        taskPage = taskRuntime.tasks(Pageable.of(0, 10));
+        // 判断是否有任务
+        if(taskPage.getTotalItems()>0){
+            for (Task task : taskPage.getContent()) {
+                System.out.println("任务完成后的下一任务:"+task);
+            }
+        }
+    }
+}

+ 66 - 0
src/main/java/cn/gyee/act/utils/SecurityUtil.java

@@ -0,0 +1,66 @@
+package cn.gyee.act.utils;
+
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Qualifier;
+import org.springframework.security.core.Authentication;
+import org.springframework.security.core.GrantedAuthority;
+import org.springframework.security.core.context.SecurityContextHolder;
+import org.springframework.security.core.context.SecurityContextImpl;
+import org.springframework.security.core.userdetails.UserDetails;
+import org.springframework.security.core.userdetails.UserDetailsService;
+import org.springframework.stereotype.Component;
+
+import java.util.Collection;
+
+
+@Component
+public class SecurityUtil {
+    private Logger logger = LoggerFactory.getLogger(SecurityUtil.class);
+
+     @Autowired
+     @Qualifier("myUserDetailsService")
+     private UserDetailsService userDetailsService;
+ 
+    public void logInAs(String username) {
+     UserDetails user = userDetailsService.loadUserByUsername(username);
+
+     if (user == null) {
+         throw new IllegalStateException("User " + username + " doesn't exist, please provide a valid user");
+     }
+     logger.info("> Logged in as: " + username);
+
+     SecurityContextHolder.setContext(
+             new SecurityContextImpl(
+                     new Authentication() {
+                         @Override
+                         public Collection<? extends GrantedAuthority> getAuthorities() {
+                             return user.getAuthorities();
+                         }
+                         @Override
+                         public Object getCredentials() {
+                             return user.getPassword();
+                         }
+                         @Override
+                         public Object getDetails() {
+                             return user;
+                         }
+                         @Override
+                         public Object getPrincipal() {
+                             return user;
+                         }
+                         @Override
+                         public boolean isAuthenticated() {
+                             return true;
+                         }
+                         @Override
+                         public void setAuthenticated(boolean isAuthenticated) throws IllegalArgumentException { }
+                         @Override
+                         public String getName() {
+                             return user.getUsername();
+                         }
+     }));
+     org.activiti.engine.impl.identity.Authentication.setAuthenticatedUserId(username);
+ }
+  }

+ 20 - 0
src/main/resources/application.yml

@@ -0,0 +1,20 @@
+spring:
+  datasource:
+    driver-class-name: com.mysql.jdbc.Driver
+    url: jdbc:mysql:///actspringboot?useUnicode=true&characterEncoding=utf8&serverTimezone=GMT
+    username: root
+    password: root
+  activiti:
+    #1.flase:默认值。activiti在启动时,对比数据库表中保存的版本,如果没有表或者版本不匹配,将抛出异常
+    #2.true: activiti会对数据库中所有表进行更新操作。如果表不存在,则自动创建
+    #3.create_drop: 在activiti启动时创建表,在关闭时删除表(必须手动关闭引擎,才能删除表)
+    #4.drop-create: 在activiti启动时删除原来的旧表,然后在创建新表(不需要手动关闭引擎)
+    database-schema-update: true
+    #activiti7默认不生成历史信息表,开启历史表
+    db-history-used: true
+    #记录历史等级 可配置的历史级别有none, activity, audit, full
+    #none:不保存任何的历史数据,因此,在流程执行过程中,这是最高效的。
+    #activity:级别高于none,保存流程实例与流程行为,其他数据不保存。
+    #audit:除activity级别会保存的数据外,还会保存全部的流程任务及其属性。audit为history的默认值。
+    #full:保存历史数据的最高级别,除了会保存audit级别的数据外,还会保存其他全部流程相关的细节数据,包括一些流程参数等。
+    history-level: full

File diff suppressed because it is too large
+ 61 - 0
src/main/resources/processes/demo.bpmn


+ 104 - 0
src/test/java/cn/gyee/act/ActivitiTest.java

@@ -0,0 +1,104 @@
+package cn.gyee.act;
+
+import cn.gyee.act.utils.SecurityUtil;
+import lombok.extern.slf4j.Slf4j;
+import org.activiti.api.process.model.ProcessDefinition;
+import org.activiti.api.process.model.ProcessInstance;
+import org.activiti.api.process.model.builders.ProcessPayloadBuilder;
+import org.activiti.api.process.runtime.ProcessRuntime;
+import org.activiti.api.runtime.shared.query.Page;
+import org.activiti.api.runtime.shared.query.Pageable;
+import org.activiti.api.task.model.Task;
+import org.activiti.api.task.model.builders.TaskPayloadBuilder;
+import org.activiti.api.task.runtime.TaskRuntime;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.boot.test.context.SpringBootTest;
+import org.springframework.test.context.ContextConfiguration;
+import org.springframework.test.context.junit4.SpringRunner;
+
+/**
+ *@ClassName ActivitiTest
+ *@Description TODO
+ *@Author 谢生杰
+ *@Date 2021/1/3 21:22
+ *@Version 1.0
+ **/
+@Slf4j
+@RunWith(SpringRunner.class)
+@SpringBootTest
+public class ActivitiTest {
+
+    @Autowired
+    private ProcessRuntime processRuntime; // 实现流程定义相关操作
+    @Autowired
+    private TaskRuntime taskRuntime; //任务相关操作的类
+    @Autowired
+    private SecurityUtil securityUtil; // springSecurity相关的工具类
+
+
+    // 查看流程定义信息 流程部署在activiti7与springboot整合后,会自动部署,前提是必须将bpmn文件放到resource/processes目录下
+    @Test
+    public void queryProcessDefined(){
+        // springsecurity的相关认证
+        securityUtil.logInAs("rose");
+        // 分页查询出流程定义信息
+        Page<ProcessDefinition> processDefinitionPage = processRuntime.processDefinitions(Pageable.of(0, 10));
+        System.out.println("可用的流程定义个数:"+processDefinitionPage.getTotalItems());
+        // 得到当前部署的每一个流程定义的信息processDefinitionPage.getContent()
+        for (Object pd : processDefinitionPage.getContent()) {
+            System.out.println("流程定义:"+pd);
+        }
+    }
+
+    /**
+     * 启动流程
+     */
+    @Test
+    public void startProcess(){
+//        设置登录用户
+        securityUtil.logInAs("system");
+        ProcessInstance processInstance = processRuntime.
+                start(ProcessPayloadBuilder.
+                        start().
+                        withProcessDefinitionKey("myDemo").
+                        build());
+        log.info("流程实例的内容,{}",processInstance);
+    }
+
+    /**
+     * 执行任务
+     */
+    @Test
+    public void doTask(){
+//        设置登录用户
+        securityUtil.logInAs("rose");
+//        查询任务
+        Page<Task> taskPage = taskRuntime.tasks(Pageable.of(0, 10));
+        if(taskPage != null && taskPage.getTotalItems()>0){
+            for (Task task : taskPage.getContent()) {
+                //        拾取任务
+                taskRuntime.claim(TaskPayloadBuilder.
+                        claim().
+                        withTaskId(task.getId()).
+                        build());
+                log.info("任务内容,{}",task);
+                //        完成任务
+                taskRuntime.complete(TaskPayloadBuilder.
+                        complete().
+                        withTaskId(task.getId()).
+                        build());
+            }
+        }
+        // 任务完成后再次查询
+        taskPage = taskRuntime.tasks(Pageable.of(0, 10));
+        // 判断是否有任务
+        if(taskPage.getTotalItems()>0){
+            for (Task task : taskPage.getContent()) {
+                System.out.println("任务完成后的下一任务:"+task);
+            }
+        }
+
+    }
+}

+ 20 - 0
target/classes/application.yml

@@ -0,0 +1,20 @@
+spring:
+  datasource:
+    driver-class-name: com.mysql.jdbc.Driver
+    url: jdbc:mysql:///actspringboot?useUnicode=true&characterEncoding=utf8&serverTimezone=GMT
+    username: root
+    password: root
+  activiti:
+    #1.flase:默认值。activiti在启动时,对比数据库表中保存的版本,如果没有表或者版本不匹配,将抛出异常
+    #2.true: activiti会对数据库中所有表进行更新操作。如果表不存在,则自动创建
+    #3.create_drop: 在activiti启动时创建表,在关闭时删除表(必须手动关闭引擎,才能删除表)
+    #4.drop-create: 在activiti启动时删除原来的旧表,然后在创建新表(不需要手动关闭引擎)
+    database-schema-update: true
+    #activiti7默认不生成历史信息表,开启历史表
+    db-history-used: true
+    #记录历史等级 可配置的历史级别有none, activity, audit, full
+    #none:不保存任何的历史数据,因此,在流程执行过程中,这是最高效的。
+    #activity:级别高于none,保存流程实例与流程行为,其他数据不保存。
+    #audit:除activity级别会保存的数据外,还会保存全部的流程任务及其属性。audit为history的默认值。
+    #full:保存历史数据的最高级别,除了会保存audit级别的数据外,还会保存其他全部流程相关的细节数据,包括一些流程参数等。
+    history-level: full

BIN
target/classes/cn/gyee/act/ActApplication.class


BIN
target/classes/cn/gyee/act/config/DemoApplicationConfiguration.class


BIN
target/classes/cn/gyee/act/controller/ActivitiController.class


BIN
target/classes/cn/gyee/act/utils/SecurityUtil$1.class


BIN
target/classes/cn/gyee/act/utils/SecurityUtil.class


File diff suppressed because it is too large
+ 61 - 0
target/classes/processes/demo.bpmn


+ 4 - 0
target/maven-archiver/pom.properties

@@ -0,0 +1,4 @@
+#Created by Apache Maven 3.6.3
+version=1.0-SNAPSHOT
+groupId=cn.gyee
+artifactId=workflow

+ 5 - 0
target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst

@@ -0,0 +1,5 @@
+cn\gyee\act\utils\SecurityUtil$1.class
+cn\gyee\act\utils\SecurityUtil.class
+cn\gyee\act\config\DemoApplicationConfiguration.class
+cn\gyee\act\controller\ActivitiController.class
+cn\gyee\act\ActApplication.class

+ 3 - 0
target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst

@@ -0,0 +1,3 @@
+D:\work\ideawork\workflow\src\main\java\cn\gyee\act\utils\SecurityUtil.java
+D:\work\ideawork\workflow\src\main\java\cn\gyee\act\config\DemoApplicationConfiguration.java
+D:\work\ideawork\workflow\src\main\java\cn\gyee\act\ActApplication.java

+ 1 - 0
target/maven-status/maven-compiler-plugin/testCompile/default-testCompile/createdFiles.lst

@@ -0,0 +1 @@
+cn\gyee\act\ActivitiTest.class

+ 1 - 0
target/maven-status/maven-compiler-plugin/testCompile/default-testCompile/inputFiles.lst

@@ -0,0 +1 @@
+D:\work\ideawork\workflow\src\test\java\cn\gyee\act\ActivitiTest.java

BIN
target/test-classes/cn/gyee/act/ActivitiTest.class


BIN
target/workflow-1.0-SNAPSHOT.jar


BIN
target/workflow-1.0-SNAPSHOT.jar.original


+ 2 - 0
workflow.iml

@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<module type="JAVA_MODULE" version="4" />