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

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

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

我在idea的官网进行下载然后进行安装的:
搜索插件名称:
在这里插入图片描述

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

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

<!-- activiti相关的jar包 与工作流相关的-->
        <dependency>
            <groupId>org.activiti</groupId>
            <artifactId>activiti-engine</artifactId>
            <version>5.15.1</version>
        </dependency>
        <dependency>
            <groupId>org.activiti</groupId>
            <artifactId>activiti-spring</artifactId>
            <version>5.15.1</version>
        </dependency>
        <dependency>
            <groupId>org.activiti</groupId>
            <artifactId>activiti-bpmn-model</artifactId>
            <version>5.15.1</version>
        </dependency>
        <dependency>
            <groupId>org.activiti</groupId>
            <artifactId>activiti-bpmn-layout</artifactId>
            <version>5.15.1</version>
        </dependency>
        <dependency>
            <groupId>org.activiti</groupId>
            <artifactId>activiti-bpmn-converter</artifactId>
            <version>5.15.1</version>
        </dependency>
        <dependency>
            <groupId>org.activiti</groupId>
            <artifactId>activiti-process-validation</artifactId>
            <version>5.15.1</version>
        </dependency>

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

3.1 流程表数据的初始化

  1. 首先创建activiti.cfg.xml 配置文件
    databaseSchemaUpdate = ”true“ 表示:有表的话会进行使用,没有表的话在进行创建
    databaseSchemaUpdate = “false” (也是默认值) 表示:表示用户自己创建
    databaseSchemaUpdate = “create-drop” 表示:有表的话会进行删除,在进行创建
    其他的一些数据为数据库连接数据
<?xml version="1.0" encoding="UTF-8"?>
<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张表
在这里插入图片描述
下面为表的相关解释
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
在这里插入图片描述

4.2 进行流程的编辑

在这里插入图片描述

4.3 生成图片

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

在这里插入图片描述
在这里插入图片描述
这样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());
    }

运行结果:
在这里插入图片描述
这时可以进入数据库进行数据查询
act_re_deployment: 部署的相关信息
在这里插入图片描述
act_re_procdef:
在这里插入图片描述
act_ge_bytearray
在这里插入图片描述

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);
        }
    }

生成的图片:
在这里插入图片描述

8. 总结

  1. activiti工作流是根据bpmn业务流程流转的
  2. 其中最重要的一个对象为:ProcessEngine
    该对象调用的最关键的四个方法
    1. getRepositoryService:流程定义相关的操作都可以通过该对象来执行
    2. RuntimeService:运行是修改的相关操作东可以通过它来执行
    3. TaskService: 任务修改的操作可以通过它进行操作
    4. HistoryService:查询历史记录可以通过该对象进行操作
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值