四、activiti工作流-第一个HelloWorld
上一节已经把流程图画好,并且数据库也已经创建好了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的更多相关文章
- Activiti工作流学习(三)Activiti工作流与spring集成
一.前言 前面Activiti工作流的学习,说明了Activiti的基本应用,在我们开发中可以根据实际的业务参考Activiti的API去更好的理解以及巩固.我们实际的开发中我们基本上都使用sprin ...
- Activiti工作流与spring集成
一.前言 前面Activiti工作流的学习,说明了Activiti的基本应用,在我们开发中可以根据实际的业务参考Activiti的API去更好的理解以及巩固.我们实际的开发中我们基本上都使用sprin ...
- Activiti工作流(4):编写一个HelloWorld
版权声明:本文为博主原创文章,未经博主允许不得转载. 1.使用eclipse的activiti插件画流程图 在resource文件夹下新建一个工作流diagram 右键——new——other...— ...
- Activiti工作流学习笔记(四)——工作流引擎中责任链模式的建立与应用原理
原创/朱季谦 本文需要一定责任链模式的基础,主要分成三部分讲解: 一.简单理解责任链模式概念 二.Activiti工作流里责任链模式的建立 三.Activiti工作流里责任链模式的应用 一.简单理解责 ...
- 最近学习工作流 推荐一个activiti 的教程文档
全文地址:http://www.mossle.com/docs/activiti/ Activiti 5.15 用户手册 Table of Contents 1. 简介 协议 下载 源码 必要的软件 ...
- Activiti工作流学习笔记一
Activiti工作流 一:Activiti第一天 1:工作流的概念 说明: 假设:这两张图就是华谊兄弟的请假流程图 图的组成部分: 人物:范冰冰冯小刚王中军 事件(动作):请假.批准.不批准 工作流 ...
- activiti工作流框架简介
常见的工作流框架:activiti, JBPM, OSWorkflow activiti框架基于23张基础的表数据, 基于Mybatis操作数据库. JBPM框架基于18张基础的表数据, 基于hibe ...
- 三分钟明白 Activiti工作流 -- java运用
原文地址:https://blog.csdn.net/jiangyu1013/article/details/73250902 一. 什么是工作流 以请假为例,现在大多数公司的请假流程是这样的 员工打 ...
- Activiti工作流学习笔记
先从工作流的启动开始讲,Activiti提供了四种工作流的启动方式 1.空启动事件 2.定时启动事件 3.异常启动事件 4.消息启动事件 空启动事件中标签内没有任何其他元素的定义 <startE ...
随机推荐
- redis---安装和开启和关闭
转redis---安装和开启和关闭 http://blog.csdn.net/xing_____/article/details/38457463 系统:centos6.4 redis下载:http: ...
- ubuntu 18.04输入法问题
ubuntu 18.04输入法IBus出现问题.打字的弹窗只选择数字1对应的汉字,选择2,3,4,5等数字对应的汉字,就会出现问题. 例如下图只能选择1 不能选择2 3 4 5. 删除了~/.cach ...
- .NET framework访问Oracle的几种方法
首先介绍下开发环境:WIn10 64bit+Visual Studio 2015+Oracle10ClientWin32(只是客户端,如果安装整个数据库也是可以的) 目前了解C#中连接Oracle数据 ...
- OO第二单元单元总结
总述 OO的第二单元主题是电梯调度,与第一单元注重对数据的输入输出的处理.性能的优化不同,第二单元的重心更多的是在线程安全与线程通信上.这此次单元实验之前,我并未对线程有过了解,更谈不上“使用经验”, ...
- CSS3背景相关新增属性
background-clip border-box:充满边框和内边距,内容. padding-box:充满内边距,内容 content-box:只充满内容 background-origin bor ...
- 前端 javascript
---恢复内容开始--- JavaScript JavaScript:是一门编译型的语言,比python语言还要弱类型的语言 JavaScript 分为三个部分:Ecmascript.dom.bom ...
- 与http协作的web服务器--代理、网关、隧道
一台服务器可以搭建多个web站点 代理: 接受客户端发送的请求,转发给其他服务器,然后接受服务器的返回结果(响应)再返回给客户端.每次经过代理服务器,就会追加写入via首部信息. 按两种基准分类.一种 ...
- Leetcode(三)无重复字符的最长子串
3. 无重复字符的最长子串 题目描述 给定一个字符串,请你找出其中不含有重复字符的 最长子串 的长度. 示例: 输入: "abcabcbb" 输出: 3 解释: 因为无重复字符的最 ...
- 安装MySQL5.7.19 网上的文章参考 并做了部分修改
1,从官方网址下载MySQL5.7.19源码包 http://dev.MySQL.com/downloads/mysql/#downloads 2,安装好CentOS6.7 64位操作系统. ...
- Windows 10 IoT Core 17127 for Insider 版本更新
昨天,微软发布了Windows 10 IoT Core 17127 for Insider 版本更新,本次更新只修正了一些Bug,没有发布新的特性.相比于17120,修复了一个已知的问题. 一些已知的 ...