activiti--6-------------------------------------连线(一般数据库表的查询顺序)
一、流程图

二、这次把流程图和Java类放在一个包下

三、代码
package com.xingshang.f_sequenceFlow; import java.io.InputStream;
import java.util.HashMap;
import java.util.List;
import java.util.Map; import org.activiti.engine.ProcessEngine;
import org.activiti.engine.ProcessEngines;
import org.activiti.engine.repository.Deployment;
import org.activiti.engine.runtime.ProcessInstance;
import org.activiti.engine.task.Task;
import org.junit.Test; public class SequenceFlowTest {
//工作引擎
ProcessEngine processEngine = ProcessEngines.getDefaultProcessEngine(); /**
* 部署流程定义(从inputStream)
*/
@Test
public void deploymentProcessDefinition_inputStream(){
InputStream inputStreambpmn = this.getClass().getResourceAsStream("sequenceFlow.bpmn");//在同一个包下,不用加/的其他路径
InputStream inputStreampng = this.getClass().getResourceAsStream("sequenceFlow.png");
Deployment deployment = processEngine.getRepositoryService()//与流程定义和部署相关的service
.createDeployment()//创建一个部署对象
.name("连线")//添加部署的名称
.addInputStream("sequenceFlow.bpmn", inputStreambpmn)//使用资源文件的名称(要求:与资源文件的名称要一致)和输入流来完成部署
.addInputStream("sequenceFlow.png", inputStreampng)//使用资源文件的名称和输入流来完成部署
.deploy();//完成部署
System.out.println("部署ID: " + deployment.getId());//
System.out.println("部署名称: " + deployment.getName());//
} /**
* 启动流程实例
*/
@Test
public void startProcessInstance(){
//流程定义的key
String processDefinitionKey = "sequenceFlow";
ProcessInstance pi = processEngine.getRuntimeService()//与正在执行的流程实例和执行对象相关的service
.startProcessInstanceByKey(processDefinitionKey);//使用流程定义的key启动流程实例,key对应HelloWorld.bpmn文件中id的属性值,使用key值启动,默认是按照最新版本的流程定义启动 System.out.println("流程实例ID: " + pi.getId());//流程实例ID
System.out.println("流程定义ID: " + pi.getProcessDefinitionId());//流程定义ID
} /**
* 查询当前人的个人任务
*/
@Test
public void findMyPersonalTask(){
String assignee = "习大大"; List<Task> list = processEngine.getTaskService()//与正在执行的任务管理相关的Sercice
.createTaskQuery()//创建任务查询对象
.taskAssignee(assignee)//指定个人任务查询,指定办理人
.list(); if(list != null && list.size() > 0){
for(Task task : list){
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());
System.out.println("执行对象ID: " + task.getExecutionId());
System.out.println("流程定义ID: " + task.getProcessDefinitionId());
}
}
} /**
* 完成我的任务
*/
@Test
public void completeMyPersonalTask(){ String taskId = "1603";
//完成任务的同时,使用流程变量,使用流程变量来指定完成任务后,下一个连线,对应sequenceFlow.bpmn文件中${message=='不重要'}
Map<String, Object> variables = new HashMap<String, Object>();
// variables.put("message", "不重要");
variables.put("message", "重要");//信息重要与不重要会选择两条不同的分支来运行,即对应的流程不一样
processEngine.getTaskService()//与正在执行的任务管理相关的Sercice
.complete(taskId, variables);
System.out.println("任务完成: 任务Id: " + taskId);
}
}
四、数据库表的查询顺序
#部署对象和流程定义相关的表
#select * from act_re_deployment #部署对象表 #select * from act_re_procdef #流程定义表 #select * from act_ge_bytearray #资源文件表 #select * from act_ge_property #主键生成策略表
##################################################
#部署实例,执行对象,任务
#select * from act_ru_execution #正在执行的执行对象表 #select * from act_hi_procinst #流程实例的历史表 #select * from act_ru_task #正在执行的任务表(只有节点是UserTask的时候,该表中存在数据) #select * from act_hi_taskinst #任务历史表(只有节点是UserTask的时候,该表中存在数据) #select * from act_hi_actinst #所有活动节点的历史表 ###################################################
#流程变量
#select * from act_ru_variable #正在执行的流程变量表
#select * from act_hi_varinst #历史的流程变量表
五、总结
1.一个活动中可以指定一个或多个SequenceFlow(Start中有一个,End中没有)
*开始活动中有一个SequenceFlow
*结束活动中没有SequenceFlow
*其他活动中有1条或多条SequenceFlow
2.如果只有一个,则可以不使用流程变量设置codition的名称

如果有多个,则需要使用流程变量设置codition的名称,message表示流程变量的名称,
‘不重要’表示流程变量的值,${}中间的内容使用boolean类型的表达式,用来判断应该执行的连线

3.如果将流程图放置在和Java类相同的路径,则需配置

activiti--6-------------------------------------连线(一般数据库表的查询顺序)的更多相关文章
- Activiti工作流 安装myeclipse activiti设计插件并生成数据库表
从零开始学习Activiti工作流,记录下学习过程. 关于工作流的简介没什么好介绍了,只能说是个很有用的东西,数据库中23张表分别有什么用网上也有很详细的介绍,这里也不多加说明.activiti开发中 ...
- activiti基础环境搭建创建数据库表及策略
博主使用为activiti5.22的版本. 1.创建maven工程. 2.在pom文件中引入所需要的包,如:activiti包.数据库包. 这是我引用的包: <dependencies> ...
- MySQL(三) 数据库表的查询操作【重要】
序言 1.MySQL表操作(创建表,查询表结构,更改表字段等), 2.MySQL的数据类型(CHAR.VARCHAR.BLOB,等), 本节比较重要,对数据表数据进行查询操作,其中可能大家不熟悉的就对 ...
- MySQL(2)数据库 表的查询操作
来源参考https://www.cnblogs.com/whgk/p/6149009.html 跟着源博客敲一遍可以加深对数据库的理解,同时对其中一些代码做一些改变,可以验证自己的理解. 本文改动了其 ...
- mysql数据库表的查询操作-总结
转自:https://www.cnblogs.com/whgk/p/6149009.html 序言 1.MySQL表操作(创建表,查询表结构,更改表字段等), 2.MySQL的数据类型(CHAR.VA ...
- 最全MySQL数据库表的查询操作
序言 1.MySQL表操作(创建表,查询表结构,更改表字段等), 2.MySQL的数据类型(CHAR.VARCHAR.BLOB,等), 本节比较重要,对数据表数据进行查询操作,其中可能大家不熟悉的就对 ...
- mysql数据库表的查询
一. 设有一数据库,包括四个表:学生表(Student).课程表(Course).成绩表(Score)以及教师信息表(Teacher).四个表的结构分别如表1-1的表(一)~表( ...
- 数据库表结构查询SQL
今天给大家送上两个SQL查询的方法,也许在项目中你都用过,但是,没关系,仅仅记录下,以便后面不用去查找.针对与经常写SQL的同行来说,应该是非常简单的. 查询表结构数据 SELECT t.COLUMN ...
- oracle数据库数据库表空间查询及扩充
1.查询表空间,及表空间的大小 SELECT t.tablespace_name, round(SUM(bytes / (1024 * 1024)), 0) ts_size FROM dba_tabl ...
随机推荐
- vscode - 更改emmet生成代码
有时候生成的代码,并不适用自己,所以想想改生成代码: 因为windows查找文件/文件内容非常慢,所以借用了一下Linux的搜索命令,查找了一下 ie=edge ,最后,找到了 expand-ful ...
- debounce 防抖动函数
http://lodash.think2011.net/debounce _.debounce(func, [wait=0], [options]) 创建一个防抖动函数. 该函数会在 wait 毫秒后 ...
- selenium从入门到应用 - 4,页面对象设计模式的实现
本系列所有代码 https://github.com/zhangting85/simpleWebtest 本文将介绍一个Java+TestNG+Maven+Selenium的web自动化测试脚本环境下 ...
- linux 文件&文件夹大小排序
按照当前文件夹的文件大小排序: ls -l | sort -k 5 -n -r 其中 sort 的几个参数: -k 5: 表示使用第五列字段排序, 当需要按照多个字段排序时, 可使用多个 -k 参数, ...
- Cent OS安装My Sql
因为公司的需要,所以就自己学习了一下在Linux上安装MySQL,但是翻查了好多博客,没有特别清楚,自己写下来好好总结一下 一.系统环境 CentOS-6.3-i386-bin-DVD1 二.下载My ...
- sessionStorage / localStorage
var referurl = document.referrer; //上级网址 if(referurl.indexOf('address_order')>0){ //判断是否是从上一级地址跳转 ...
- asp.net core mvc视频A:笔记3-4.母版页与部分视图
新建项目3.4, 新建一个共享文件,一般存放在Shared目录下方 选择 如果安装了Reshaper插件可以这样添加(插件在本人博客中找) 代码 创建一个空的控制器TestController 使用布 ...
- Android中常用布局单位
Android在UI布局时经常用到一些单位,对单位混用直接会影响UI的显示,要想正确的在布局中使用每种单位就必须先真正的熟悉它. UI显示效果的影响因素:屏幕尺寸.屏幕密度.分辨率:而android手 ...
- elasticsearch报错syncedb_path
一般默认syncdb_path在$HOME目录下隐藏文件,也可以自己指定一个文件,记住,这里只能指定文件,不能只写目录input { file { path => "/home/tom ...
- java.String中的方法
(String) str.trim() 该方法返回一个复制该字符串的开头和结尾的白色空格去掉,或字符串,如果它没有头或尾空白. (Boolean) str.contains(str1) 判断 str ...