Kitey的学习历程之Activiti流程框架的简单使用

Activiti流程框架的简单使用(我是用的是Idea)

目录

  • Activiti流程框架的简单使用(我是用的是Idea)
    • 1. 首先在Idea上下载activiti流程构建的插件(用来画流程图)
    • 2. 在pom.xml中导入其依赖文件
    • 3. 在Junit测试类中进行activiti依赖表的创建
      • 3.1 流程表数据的初始化
    • 4. 创建流程图
      • 4.1 选择创建文件类型
      • 4.2 进行流程的编辑
      • 4.3 生成图片
    • 5. 在Junit中进行流程图的部署
    • 6.流程部署的删除方法
    • 7. 通过流程部署id去查询流程图片(可用于在线查看流程图)
    • 8. 总结

1. 首先在Idea上下载activiti流程构建的插件(用来画流程图)

我在idea的官网进行下载然后进行安装的:
搜索插件名称:
Kitey的学习历程之Activiti流程框架的简单使用_第1张图片

2. 在pom.xml中导入其依赖文件

下面只是activiti相关的依赖文件,还有spring依赖文件可以自行选择导入


        <dependency>
            <groupId>org.activitigroupId>
            <artifactId>activiti-engineartifactId>
            <version>5.15.1version>
        dependency>
        <dependency>
            <groupId>org.activitigroupId>
            <artifactId>activiti-springartifactId>
            <version>5.15.1version>
        dependency>
        <dependency>
            <groupId>org.activitigroupId>
            <artifactId>activiti-bpmn-modelartifactId>
            <version>5.15.1version>
        dependency>
        <dependency>
            <groupId>org.activitigroupId>
            <artifactId>activiti-bpmn-layoutartifactId>
            <version>5.15.1version>
        dependency>
        <dependency>
            <groupId>org.activitigroupId>
            <artifactId>activiti-bpmn-converterartifactId>
            <version>5.15.1version>
        dependency>
        <dependency>
            <groupId>org.activitigroupId>
            <artifactId>activiti-process-validationartifactId>
            <version>5.15.1version>
        dependency>

3. 在Junit测试类中进行activiti依赖表的创建

3.1 流程表数据的初始化

  1. 首先创建activiti.cfg.xml 配置文件
    databaseSchemaUpdate = ”true“ 表示:有表的话会进行使用,没有表的话在进行创建
    databaseSchemaUpdate = “false” (也是默认值) 表示:表示用户自己创建
    databaseSchemaUpdate = “create-drop” 表示:有表的话会进行删除,在进行创建
    其他的一些数据为数据库连接数据

<beans xmlns="http://www.springframework.org/schema/beans"
	xmlns:context="http://www.springframework.org/schema/context" 
	xmlns:tx="http://www.springframework.org/schema/tx"
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xsi:schemaLocation="http://www.springframework.org/schema/beans   
	http://www.springframework.org/schema/beans/spring-beans.xsd
    http://www.springframework.org/schema/context 
    http://www.springframework.org/schema/context/spring-context-2.5.xsd
    http://www.springframework.org/schema/tx      
    http://www.springframework.org/schema/tx/spring-tx-3.0.xsd">


	
	<bean id="processEngineConfiguration" class="org.activiti.engine.impl.cfg.StandaloneInMemProcessEngineConfiguration">
		<property name="databaseSchemaUpdate" value="true" />
		<property name="jdbcDriver" value="com.mysql.cj.jdbc.Driver" />
		<property name="jdbcUrl" value="jdbc:mysql://localhost:3306/oa?serverTimezone=UTC" />
		<property name="jdbcUsername" value="root" />
		<property name="jdbcPassword" value="25002500" />
	bean>
beans>
  1. 创建测试方法testActivitiInit
	@Test
    public void testActivitiInit(){       
        ProcessEngine defaultProcessEngine = ProcessEngines.getDefaultProcessEngine();
        System.out.println(defaultProcessEngine);
    }

运行后会在数据库生成23张表
Kitey的学习历程之Activiti流程框架的简单使用_第2张图片
下面为表的相关解释
3.1 资源库流程规则表

  1.    act_re_deployment        部署信息表
    
  2.    act_re_model               流程设计模型部署表
    
  3.    act_re_procdef             流程定义数据表
    

3.2:运行时数据库表

  1.    act_ru_execution           运行时流程执行实例表
    
  2.    act_ru_identitylink        运行时流程人员表,主要存储任务节点与参与者的相关信息
    
  3.    act_ru_task                   运行时任务节点表
    
  4.    act_ru_variable             运行时流程变量数据表
    

3.3:历史数据库表

  1.    act_hi_actinst               历史节点表
    
  2.    act_hi_attachment          历史附件表
    
  3.    act_hi_comment            历史意见表
    
  4.    act_hi_identitylink         历史流程人员表
    
  5.    act_hi_detail                 历史详情表,提供历史变量的查询
    
  6.    act_hi_procinst              历史流程实例表
    
  7.    act_hi_taskinst              历史任务实例表
    
  8.    act_hi_varinst               历史变量表
    

3.4:组织机构表

  1. act_id_group           用户组信息表
    
  2. act_id_info              用户扩展信息表
    
  3. act_id_membership  用户与用户组对应信息表
    
  4. act_id_user             用户信息表
    

4. 创建流程图

4.1 选择创建文件类型

BpmnFile
Kitey的学习历程之Activiti流程框架的简单使用_第3张图片

4.2 进行流程的编辑

Kitey的学习历程之Activiti流程框架的简单使用_第4张图片

4.3 生成图片

  1. 首先复制Bpmn结尾文件,然后修改为xml文件

Kitey的学习历程之Activiti流程框架的简单使用_第5张图片
Kitey的学习历程之Activiti流程框架的简单使用_第6张图片
这样xml文件会转换为png文件

5. 在Junit中进行流程图的部署

创建流程部署测试方法:testDeployProcess()

  /**
     * 部署流程图
     */
    @Test
    public void testDeployProcess(){
        //1. 获取流程引擎对象
        ProcessEngine processEngine = ProcessEngines.getDefaultProcessEngine();
        //2. 获取流程定义的service
        RepositoryService repositoryService = processEngine.getRepositoryService();
        //3. 创建流程部署对象
        DeploymentBuilder deployment = repositoryService.createDeployment();
        //4. 部署资源文件
        deployment.addClasspathResource("Hello.bpmn");
        deployment.addClasspathResource("Hello.png");
        //5.设置部署名称
        deployment.name("第三次次署流程图");
        //6. 进行部署
        Deployment deploy = deployment.deploy();

        //7 输出信息
        System.out.println("部署名称: " + deploy.getName());
        System.out.println("部署id: " + deploy.getId());
        System.out.println("部署时间: " + deploy.getDeploymentTime());
    }

运行结果:
Kitey的学习历程之Activiti流程框架的简单使用_第7张图片
这时可以进入数据库进行数据查询
act_re_deployment: 部署的相关信息
Kitey的学习历程之Activiti流程框架的简单使用_第8张图片
act_re_procdef:
在这里插入图片描述
act_ge_bytearray
Kitey的学习历程之Activiti流程框架的简单使用_第9张图片

6.流程部署的删除方法

输入的501 为该流程的的 id 则为act_re_deployment 表中的id值

  	@Test
    public void testDeleteDeployProcess(){
        //1. 获取流程引擎对象
        ProcessEngine processEngine = ProcessEngines.getDefaultProcessEngine();
        //2. 获取流程定义的service
        RepositoryService repositoryService = processEngine.getRepositoryService();
        //3. 调用方法进行删除
        repositoryService.deleteDeployment("501");

    }

7. 通过流程部署id去查询流程图片(可用于在线查看流程图)

相关方法:
该方法通过getResourceAsStream方法获取流程图片的二进制文件,然后转换为图片存在跟目录下

 @Test
    public void testFindProcessInsPng(){
        //1. 获取流程引擎对象
        ProcessEngine processEngine = ProcessEngines.getDefaultProcessEngine();
        //2. 获取流程定义的service
        RepositoryService repositoryService = processEngine.getRepositoryService();
        //3. 根据部署id和资源名称
        InputStream ips = repositoryService.getResourceAsStream("601", "Hello.png");
        FileOutputStream ops  = null;
        try {
             ops = new FileOutputStream("./hello.png");
            IOUtils.copy(ips, ops);
            System.out.println("流程图片复制成功!");
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            IOUtils.closeQuietly(ops);
            IOUtils.closeQuietly(ips);
        }
    }

生成的图片:
Kitey的学习历程之Activiti流程框架的简单使用_第10张图片

8. 总结

  1. activiti工作流是根据bpmn业务流程流转的
  2. 其中最重要的一个对象为:ProcessEngine
    该对象调用的最关键的四个方法
    1. getRepositoryService:流程定义相关的操作都可以通过该对象来执行
    2. RuntimeService:运行是修改的相关操作东可以通过它来执行
    3. TaskService: 任务修改的操作可以通过它进行操作
    4. HistoryService:查询历史记录可以通过该对象进行操作

你可能感兴趣的:(每天的学习笔记)