上一节已经把流程图画好,并且数据库也已经创建好了25张表,这节讲如何启动一个流程

  先新建一个包,并新建一个类。

  

/**然后定义一个成员属性,主要是因为每个方法都要用到这个引擎
* 获取默认流程引擎实例,会自动读取avtiviti.cfg.xml文件
* */

public class HelloWorldProcess {
private ProcessEngine processEngine=ProcessEngines.getDefaultProcessEngine();     //获取流程引擎

下一步开始部署流程定义,我们这里通过classpath加载方式来部署流程定义

//部署流程定义,把数据写到数据库中去,这种是通过classpath加载方式部署流程定义
@Test
public void deploy() {
  Deployment deployment = processEngine.getRepositoryService() //获取部署相关的service;
  .createDeployment() //创建部署
  .addClasspathResource("diagrams/HelloWord.bpmn") //加载资源文件
  .addClasspathResource("diagrams/HelloWord.png") //加载资源文件
  .name("HelloWorld流程") //流程名字
  .deploy(); //部署

  System.out.println("流程部署id:"+deployment.getId());
  System.out.println("流程部署Name:"+deployment.getName());
}

//和上面的进行比较,这种是通过zip加载方式部署流程定义,2种方式选择一种即可

@Test
public void deployWithZip() {
  InputStream inputStream = this.getClass() //取的当前class对象
  .getClassLoader() //获取类加载器
  .getResourceAsStream("diagrams/helloWorld.zip"); //指定文件资源流

  ZipInputStream zipInputStream=new ZipInputStream(inputStream); //实例化zip输入流
  Deployment deployment = processEngine.getRepositoryService() //获取部署相关的接口
  .createDeployment() //创建部署
  .addZipInputStream(zipInputStream)
  .name("HelloWorld流程") //流名称
  .deploy(); // 添加zip输入流
}

上面这个就相当于java中的一个类,通过这个请假模板,可以创建出无数个对象实例,意思是可以有无数个人请假

启动流程实例

/**
* 启动流程实例
* */
@Test
public void start() {
  ProcessInstance pi = processEngine.getRuntimeService() //运行service
  .startProcessInstanceByKey("myFirstProcess"); //流程定义表里面的key
  System.out.println("流程实例id:"+pi.getId());
  System.out.println("流程定义id:"+pi.getProcessDefinitionId());
}

查看节点任务

/**
* 查看任务,查看某个人的任务
* */
@Test
public void findTask() {
  List<Task> taskList = processEngine.getTaskService() //任务相关的service
    .createTaskQuery() //创建任务查询S
    .taskAssignee("登风") //指定某个人有没有任务
    .list();
  for (Task task : taskList) {
    System.out.println("任务ID:"+task.getId());
    System.out.println("任务名称:"+task.getName());
    System.out.println("任务创建时间:"+task.getCreateTime());
    System.out.println("任务委派人"+task.getAssignee());
    System.out.println("流程实例id"+task.getProcessInstanceId());
   }
 }

执行任务,当执行完任务后,所有运行时的表数据将全部被清空,但历史表数据还保留

/**
* 执行任务,执行的id是任务的id*/
@Test
public void complete() {
  processEngine.getTaskService() //任务相关
  .complete("35008"); //结束任务表id
}

}

四、activiti工作流-第一个HelloWorld的更多相关文章

  1. Activiti工作流学习(三)Activiti工作流与spring集成

    一.前言 前面Activiti工作流的学习,说明了Activiti的基本应用,在我们开发中可以根据实际的业务参考Activiti的API去更好的理解以及巩固.我们实际的开发中我们基本上都使用sprin ...

  2. Activiti工作流与spring集成

    一.前言 前面Activiti工作流的学习,说明了Activiti的基本应用,在我们开发中可以根据实际的业务参考Activiti的API去更好的理解以及巩固.我们实际的开发中我们基本上都使用sprin ...

  3. Activiti工作流(4):编写一个HelloWorld

    版权声明:本文为博主原创文章,未经博主允许不得转载. 1.使用eclipse的activiti插件画流程图 在resource文件夹下新建一个工作流diagram 右键——new——other...— ...

  4. Activiti工作流学习笔记(四)——工作流引擎中责任链模式的建立与应用原理

    原创/朱季谦 本文需要一定责任链模式的基础,主要分成三部分讲解: 一.简单理解责任链模式概念 二.Activiti工作流里责任链模式的建立 三.Activiti工作流里责任链模式的应用 一.简单理解责 ...

  5. 最近学习工作流 推荐一个activiti 的教程文档

    全文地址:http://www.mossle.com/docs/activiti/ Activiti 5.15 用户手册 Table of Contents 1. 简介 协议 下载 源码 必要的软件 ...

  6. Activiti工作流学习笔记一

    Activiti工作流 一:Activiti第一天 1:工作流的概念 说明: 假设:这两张图就是华谊兄弟的请假流程图 图的组成部分: 人物:范冰冰冯小刚王中军 事件(动作):请假.批准.不批准 工作流 ...

  7. activiti工作流框架简介

    常见的工作流框架:activiti, JBPM, OSWorkflow activiti框架基于23张基础的表数据, 基于Mybatis操作数据库. JBPM框架基于18张基础的表数据, 基于hibe ...

  8. 三分钟明白 Activiti工作流 -- java运用

    原文地址:https://blog.csdn.net/jiangyu1013/article/details/73250902 一. 什么是工作流 以请假为例,现在大多数公司的请假流程是这样的 员工打 ...

  9. Activiti工作流学习笔记

    先从工作流的启动开始讲,Activiti提供了四种工作流的启动方式 1.空启动事件 2.定时启动事件 3.异常启动事件 4.消息启动事件 空启动事件中标签内没有任何其他元素的定义 <startE ...

随机推荐

  1. tomcat设置开机自动启动

    windows下: 1 命令cmd 进入    磁盘: 回车 2 tomcat\bin目录   回车 3  service.bat install   (注:tomcat一定要有service.bat ...

  2. java 日志体系目录

    java 日志体系目录 1.1 java 日志体系(一)log4j1.log4j2.logback.jul.jcl.slf4j 1.2 java 日志体系(二)jcl 和 slf4j 2.1 java ...

  3. SpringBoot对注册用户密码进行Bcrypt密码加密

    一.注册用户时,用户的密码一般都是加密存储在数据库中.今天我要用到的加密方式是Bcrypt加密. 1.首先在SpringBoot项目的pom文件中,引入SpringSecurity相关依赖,目的是为了 ...

  4. mysql中的concat函数,concat_ws函数,concat_group函数之间的区别

    一.CONCAT()函数CONCAT()函数用于将多个字符串连接成一个字符串.使用数据表Info作为示例,其中SELECT id,name FROM info LIMIT 1;的返回结果为+----+ ...

  5. 模板引擎,中间件,spring AOP原理

    1. 主流模板引擎有哪些 https://blog.csdn.net/wangmx1993328/article/details/81054474 2. 解释模板引擎是个什么东西 https://ww ...

  6. Player2.0

    由于上次做的播放器实在是有点丑,加之这期间学习了许多关于页面排版的东西,这次做第二次作业就重新来了一遍“换汤不换药”的操作.其实刚开始看到的作业要求的时候,有点傻眼猫咪,但是做到现在这个程度,本人也是 ...

  7. MySQL中的latch(闩锁)详解——易产生的问题以及原因分析

    Latch 什么是latch: 锁是数据库系统区别与文件系统的一个关键特性.锁机制用于管理对共享资源的并发访问.Innodb存储引擎在行级别上对表数据上锁,这固然不错.但是Innodb也会在多个地方使 ...

  8. 使用mobx项目开发总结(不再更新)

      mobx的优点 1,使用@observer的组件真正实现按需更新,只有监听的数据发生变化,它才会re-render,尽管父组件发生更新,但是子组件只要有@observer,则不会触发更新,类似于实 ...

  9. PHP与Excel 笔记

    一:   PHP将数据导出Excel表中(投机型) 二: PHPExcel: Github上可以下载此插件包,用法如下: 前端: //上传阅卷员Excel文件 $("#upload_memb ...

  10. USB设备类学习笔记

    usb audio class 版本目前有3个版本  分别是1.0,2.0,3.0:1.0针对各个厂家的设备具有不同的描述符,而2.0则将它们统一简化,3.0则是最新的,还没有与2.0作进一步比较:因 ...