BOS项目第09天

2019-08-19  本文已影响0人  KaveeDJ

9 BOS项目第09天

今天开始学习工作流activity

9.1 工作流概念

9.2 Activity简单介绍

9.3 在IDEA安装acti插件

image.png

9.4 Eclipse中activity工作流插件安装

9.4.1 网络安装activity插件

9.4.2 离线下载安装

9.5 了解activity的目录结构

image.png

9.6 activiti的入门教程

9.6.1 导入activiti所需要的数据表

9.6.2 了解数据库表前缀代表的函数

9.6.3 使用框架自动生成表(不建议)

  1. 创建一个java项目
  2. 导入activiti中wars程序的所有jar包
  3. 导入mysql的数据库驱动
  4. 提供一个配置文件,文件名必需为activiti-context.xml
<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">

    <!-- 1.流程引擎配置对象 -->
    <bean id="processEngineConfiguration"
          class="org.activiti.engine.impl.cfg.StandaloneProcessEngineConfiguration">
        <property name="jdbcDriver"  value="com.mysql.jdbc.Driver"/>
        <property name="jdbcUrl"  value="jdbc:mysql:///activiti_day1"/>
        <property name="jdbcUsername"  value="root"/>
        <property name="jdbcPassword"  value="root"/>
        <property name="databaseSchemaUpdate" value="true"/>
    </bean>

    <!-- 2.使用工厂创建流程引擎对象 -->
    <bean id="processEngine" class="org.activiti.spring.ProcessEngineFactoryBean">
        <property name="processEngineConfiguration" ref="processEngineConfiguration"/>
    </bean>

</beans>
  1. 写一个单元测试
    • 只要获取流程引擎对象,就会自动创建表
    • 可以添加示例程序的log4j.properties来查看日志里更多信息输出
    • 在activiti-engine-5.13.jar有数据库sql文件,用于自动创建数据库表
    @Test
    public void test1(){
        //1.获取默认的流程引擎对象
        ProcessEngine pe = ProcessEngines.getDefaultProcessEngine();
    }

9.6.4 设计一个请假流程图

9.6.5 部署流程定义

    @Test
    public void test2(){
        //1.把流程图保存到数据库
        ProcessEngine pe = ProcessEngines.getDefaultProcessEngine();

        //2.获取仓库
        RepositoryService rs = pe.getRepositoryService();

        //3.获取一个部署的构造器对象
        DeploymentBuilder db = rs.createDeployment();

        db.addClasspathResource("qjlc.bpmn");
        db.addClasspathResource("qjlc.jpg");

        //4.部署
        db.deploy();
    }

8.6.6 查询流程定义

    @Test
    public void test3(){
        ProcessEngine  pe = ProcessEngines.getDefaultProcessEngine();
        ProcessDefinitionQuery query = pe.getRepositoryService().createProcessDefinitionQuery();

        List<ProcessDefinition> list = query.list();
        for(ProcessDefinition pd : list){
            System.out.print("ResourceName-" +pd.getResourceName() + ": ");
            System.out.print("id-" + pd.getId() + ": ");
            System.out.print("key-" + pd.getKey() + ": ");
            System.out.print("name-" + pd.getName() + ": ");
            System.out.println();
        }
    }

8.6.7 根据流程定义启动流程实例

    @Test
    public void test5(){
        ProcessInstance pi = pe.getRuntimeService().startProcessInstanceById("myProcess_1:4:304");
        System.out.println("流程实例:" + pi.getProcessInstanceId());
        System.out.println("流程实例:" + pi.getId());
    }

8.6.8 查询个人任务

    @Test
    public void test7(){
        //查询个人任务
        TaskQuery tq = pe.getTaskService().createTaskQuery();
        tq.taskAssignee("zhangsan");
        tq.orderByTaskCreateTime().desc();//时间排序
        List<Task> tasks = tq.listPage(0, 10);//分页查询
        for(Task task : tasks){
            System.out.println("=================================");
            System.out.println("taskId:" + task.getId());
            System.out.println("taskName:" + task.getName());
            System.out.println("executionId:" + task.getExecutionId());
        }
    }

8.6.9 办理个人任务

    @Test
    public void test6(){
        //lisi审核任务
        String taskId = "602";
        pe.getTaskService().complete(taskId);
    }

8.6.10 部署流程定义的另一种方式zip文件

    @Test
    public void test8() throws FileNotFoundException {
        //创建部署构建器对象
        DeploymentBuilder db = pe.getRepositoryService().createDeployment();

        File file = new File("C:\\process.zip");
        FileInputStream fis = new FileInputStream(file);

        ZipInputStream zis = new ZipInputStream(fis);
        db.addZipInputStream(zis);

        //部署定义流程
        Deployment deployment = db.deploy();
        System.out.println(deployment.getId());
    }

8.6.11 删除流程定义

    @Test
    public void test8(){
        //pe.getRepositoryService().deleteDeployment("901");
        //加个true,删除process表相关记录,如果启动流程了实例,用下面的方法删除
        pe.getRepositoryService().deleteDeployment("901", true);
    }

8.6.12 6.12.查询部署对应的流程定义文件名称和输入流

    @Test
    public void test10(){
        String deploymentId = "301";
        List<String> names = pe.getRepositoryService().getDeploymentResourceNames(deploymentId);
        for (String name : names) {
            System.out.println(names);
            //可以还原成文件,默认流程定义文件存在了act_ge_bytearr表
            //InputStream in = pe.getRepositoryService().getResourceAsStream(deploymentId, name);
        }
    }

8.6.13 查询部署对应的流程定义图表

    @Test
    public void test11() throws IOException{
        String processDefinitionId = "qjlc:1:304";//流程定义id
        InputStream pngStream = pe.getRepositoryService().getProcessDiagram(processDefinitionId);
        FileUtils.copyInputStreamToFile(pngStream, new File("c:\\t\\abc.png"));
    }

8.6.14 删除流程实例

    @Test
    public void test12(){
        String processInstanceId = "401";
        String deleteReason = "不请假了";
        pe.getRuntimeService().deleteProcessInstance(processInstanceId , deleteReason );
    }
上一篇 下一篇

猜你喜欢

热点阅读