eclipse-java-activiti工作流-極簡例子

那么多博客,我總覺都得沒說好如何快速在eclipse搭建跑起來。
一、安裝插件:
1:Help-》Install New Sofeware-》add
Name:Activiti Designer
Location:http://activiti.org/designer/update/
如圖:

image.png

image.png
image.png

然后安裝


image.png

重啟eclipse。。。

二、搭建工作流:
1、提供一個mysql
2、新建MAVEN工程:


image.png

image.png

3、添加resource文件夾:


image.png

image.png

4、pom.xml引入依賴
<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/maven-v4_0_0.xsd">
  <modelVersion>4.0.0</modelVersion>
  <groupId>com.open</groupId>
  <artifactId>activiti-demo01</artifactId>
  <version>1.0-SNAPSHOT</version>
  <packaging>jar</packaging>
  <name>activiti-demo01</name>
  <properties>
    <activiti-version>5.18.0</activiti-version>
  </properties>
  <dependencies>
    <dependency>
      <groupId>org.activiti</groupId>
      <artifactId>activiti-engine</artifactId>
      <version>${activiti-version}</version>
    </dependency>
    <dependency>
      <groupId>org.activiti</groupId>
      <artifactId>activiti-spring</artifactId>
      <version>${activiti-version}</version>
    </dependency>
    <dependency>
      <groupId>org.codehaus.groovy</groupId>
      <artifactId>groovy-all</artifactId>
      <version>2.4.3</version>
    </dependency>
    <!-- https://mvnrepository.com/artifact/mysql/mysql-connector-java -->
<dependency>
    <groupId>mysql</groupId>
    <artifactId>mysql-connector-java</artifactId>
    <version>8.0.13</version>
</dependency>
    
    <dependency>
      <groupId>com.h2database</groupId>
      <artifactId>h2</artifactId>
      <version>1.3.168</version>
    </dependency>
    <dependency>
      <groupId>org.slf4j</groupId>
      <artifactId>slf4j-api</artifactId>
      <version>1.7.6</version>
    </dependency>
    <dependency>
      <groupId>org.slf4j</groupId>
      <artifactId>slf4j-jdk14</artifactId>
      <version>1.7.6</version>
    </dependency>
    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>4.10</version>
    </dependency>
  </dependencies>
     <build>
    <plugins>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-compiler-plugin</artifactId>
           <version>2.3.2</version>
        <configuration>
             <source>1.6</source>
             <target>1.6</target>
           </configuration>
         </plugin>
         <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-eclipse-plugin</artifactId>
        <inherited>true</inherited>
        <configuration>
             <classpathContainers>
               <classpathContainer>org.eclipse.jdt.USER_LIBRARY/Activiti Designer Extensions</classpathContainer>
             </classpathContainers>
           </configuration>
         </plugin>
    </plugins>
     </build>
</project>

4、在resource下面,添加active-digrams


image.png

image.png

5、畫圖


直接導出.gif

然后

6、在resource下面編寫配置文件activiti.cfg.xml
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xmlns:context="http://www.springframework.org/schema/context"
    xmlns:tx="http://www.springframework.org/schema/tx"
    xmlns:jee="http://www.springframework.org/schema/jee"
    xmlns:aop="http://www.springframework.org/schema/aop"
    xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
       http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.0.xsd
       http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.0.xsd
       http://www.springframework.org/schema/jee http://www.springframework.org/schema/jee/spring-jee-3.0.xsd
       http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-3.0.xsd">

    <bean id="processEngineConfiguration"
        class="org.activiti.engine.impl.cfg.StandaloneProcessEngineConfiguration">
        <property name="jdbcDriver" value="com.mysql.jdbc.Driver"></property>
        <property name="jdbcUrl"
            value="jdbc:mysql://localhost:3306/voj?useUnicode=true&amp;characterEncoding=utf8"></property>
        <property name="jdbcUsername" value="root"></property>
        <property name="jdbcPassword" value="root"></property>
        <!-- 沒有表創(chuàng)建表 -->
        <property name="databaseSchemaUpdate" value="true"></property>
    </bean>

</beans>

7、java代碼測試

package com.open.activeti_demo01;

import java.util.List;

import org.activiti.engine.ProcessEngine;
import org.activiti.engine.ProcessEngines;
import org.activiti.engine.repository.Deployment;
import org.activiti.engine.runtime.ProcessInstance;
import org.activiti.engine.task.Task;
import org.junit.Test;

/**
 * Hello world!
 *
 */
public class App 
{
    ProcessEngine processEngine = ProcessEngines.getDefaultProcessEngine();
    /**
     * 部署流程定義
     */
    @Test
    public void deployment() {
        Deployment deployment = processEngine.getRepositoryService()//與流程定義和部署相關(guān)的Service
                .createDeployment()//創(chuàng)建一個部署對象
                .name("demoProcess")//添加部署的名稱
                .addClasspathResource("MyProcess.bpmn")//從classpath下加載資源,一次一個
                .deploy();//完成部署
        System.out.println("部署ID"+deployment.getId());//1
        System.out.println("部署名稱"+deployment.getName());
    }

    /**
     *啟動流程實例
     */
    @Test
    public void startProcessInstance() {
        String processDefinitionKey = "myProcess";
        ProcessInstance processInstance = processEngine.getRuntimeService()//與正在執(zhí)行的流程實例和執(zhí)行對象相關(guān)的Service
                .startProcessInstanceByKey(processDefinitionKey);//根據(jù)Key值來查詢流程,也可以根據(jù)ID
        System.out.println("流程實例ID:"+processInstance.getId());  //2501
        //對應數(shù)據(jù)庫act_ru_execution
        System.out.println("流程定義ID:"+processInstance.getProcessDefinitionId()); //helloword:1:4
        //對應數(shù)據(jù)庫act_re_deployment
    }

    /**
     * 查詢當前個人的任務
     */
    @Test
    public void fingByPerson() {
        String assignee = "user1";
        List<Task> list = processEngine.getTaskService()//與正在執(zhí)行的任務管理相關(guān)的Service
                .createTaskQuery()//創(chuàng)建任務查詢對象
                .taskAssignee(assignee)//指定個人任務查詢,指定代理人
                .list();//以list形式記錄對象
        if(list != null && list.size()>0) {
            for(Task task:list) {
                System.out.println("任務ID:"+task.getId());//22504
                System.out.println("任務名稱:"+task.getName());//提交申請
                System.out.println("任務的創(chuàng)建時間:"+task.getCreateTime());//:Wed Nov 14 17:02:43 CST 2018
                System.out.println("任務的代理人:"+task.getAssignee());//staff1
                System.out.println("流程實例ID:"+task.getProcessInstanceId());//22501
                System.out.println("執(zhí)行對象ID:"+task.getExecutionId());//22501
                System.out.println("流程定義ID:"+task.getProcessDefinitionId());//demoProcess:1:20004
            }
        }
    }

    /**
     * 完成個人任務
     */
    @Test
    public void complete() {
        String taskId = "32508";
        processEngine.getTaskService()
        .complete(taskId );
        System.out.println("完成任務ID:"+taskId);
    }

}

8、右鍵執(zhí)行測試結(jié)果


image.png

9、完成工程結(jié)構(gòu)


image.png
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

友情鏈接更多精彩內(nèi)容