工作流笔记第一天_简单介绍activiti
1、什么是工作流?
工作流(Workflow),指“业务过程的部分或整体在计算机应用环境下的自动化”。是对工作流程及其各操作步骤之间业务规则的抽象、概括描述。
工作流是将一组任务组织起来以完成某个经营过程:定义了任务的触发顺序和触发条件,每个任务可以由一个或多个软件系统完成,也可以由一个或一组人完成,还可以由一个或多个人与软件系统协作完成。
2、工作流主要解决的主要问题是:
为了实现某个业务目标,利用计算机在多个参与者之间按某种预定规则自动传递文档、信息或者任务。
3.activiti中表介绍
activiti自带的表一共有23个。
ACT_GE_*:GE是general,通用的。
ACT_HI_*:HI是history,历史表,一个流程实例跑完就会插入历史表。
ACT_ID_*:ID是identity,与id相关的表。
ACT_RE_*:RE是repository,存储的是一些静态资源,如流程的资源。
ACT_RU_*:RU是run,存储的是一些运行时的信息。
4.activiti中的Service
5、在Eclipse中添加工作流的插件
在help-->install new softWare-->work with中直接搜索activiti然后选择安装即可,然后新建项目new-->other-->Activiti-->activiti project,要画工作流流程图new-->other-->Activiti-->activiti Diagram
6、入门程序
配置文件(aciviti.cfg.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">
<bean id="processEngineConfiguration"
class="org.activiti.engine.impl.cfg.StandaloneProcessEngineConfiguration">
<!-- 设置数据库连接 -->
<property name="jdbcDriver" value="com.mysql.jdbc.Driver" />
<property name="jdbcUrl"
value="jdbc:mysql://localhost:3306/activiti"/>
<property name="jdbcUsername" value="root" />
<property name="jdbcPassword" value="123" />
<!-- 设置创建表的方式 -->
<property name="databaseSchemaUpdate" value="true" />
</bean>
</beans>
代码实现:
package itheima.process1;
import java.util.List;
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 HelloWord {
// 获得工作流引擎对象
ProcessEngine processEngine = ProcessEngines.getDefaultProcessEngine();
/* 部署流程定义 */
@Test
public void deloymentProcessDefinition() {
Deployment deploy = processEngine.getRepositoryService()// 与流程定义相关的service
.createDeployment()// 创建部署对象
.name("helloWord入门程序")// 添加部署名称
.addClasspathResource("diagrams/helloWord.bpmn")// 从classPath的资源中加载,一次只能加载一个文件
.addClasspathResource("diagrams/helloWord.png").deploy();// 完成部署
System.out.println("部署id:" + deploy.getId());
System.out.println("部署名称:" + deploy.getName());
}
/* 启动流程实例 */
@Test
public void startProcessInstance() {
// 流程定义的key
String processDefinitionKey = "helloWord";
ProcessInstance processInstance = processEngine.getRuntimeService()// 与正在执行的流程实例和流程对象有关的service
.startProcessInstanceByKey(processDefinitionKey);
// 使用流程定义的key启动流程实例,key与helloWord.bpmn中的id值相同
System.out.println("流程实例id:" + processInstance.getId());
System.out.println("流程定义id:" + processInstance.getProcessDefinitionId());
}
/* 查询当前人的个人任务 */
@Test
public void findMyPersonalTask() {
String assignee = "张三";
List<Task> list = processEngine.getTaskService()// 获取与正在执行任务的service
.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());
}
}
}
}
转载于:https://www.cnblogs.com/smile-nn/p/7376004.html
工作流笔记第一天_简单介绍activiti相关推荐
- 微服务笔记:第一章_微服务简介|Eureka注册中心|Nacos注册中心|Nacos配置管理|Feign|Gateway服务网关
微服务笔记:第一章_微服务简介|Eureka注册中心|Nacos注册中心|Nacos配置管理|Feign|Gateway服务网关 1. 微服务简介 1.1 服务架构演变 1.2 SpringCloud ...
- Zephyr应用笔记:mcuboot引导程序简单介绍
本文对mcuboot(version 1.1.0)做一个简单介绍供参考,Github地址:https://github.com/runtimeco/mcuboot 以下内容都是针对(version 1 ...
- ⅰcp经济模型_简单介绍一下R中的几种统计分布及常用模型
统计学上分布有很多,在R中基本都有描述.因能力有限,我们就挑选几个常用的.比较重要的简单介绍一下每种分布的定义,公式,以及在R中的展示. 统计分布每一种分布有四个函数:d――density(密度函数) ...
- python中len用法_简单介绍Python中的len()函数的使用
简单介绍Python中的len()函数的使用 函数:len() 1:作用:返回字符串.列表.字典.元组等长度 2:语法:len(str) 3:参数:str:要计算的字符串.列表.字典.元组等 4:返回 ...
- 获取同花顺数据接口_简单介绍同花顺_数据获取方式(Excel VBA)
简单介绍同花顺_数据获取方式(Excel VBA) 2018-09-12 简单介绍数据获取方式(Excel VBA) 数据是量化的根本和原材料,数据的准确性非常重要.获得数据的方式各种各样,最小的单位 ...
- python协程异步原理_简单介绍Python的Tornado框架中的协程异步实现原理
Tornado 4.0 已经发布了很长一段时间了, 新版本广泛的应用了协程(Future)特性. 我们目前已经将 Tornado 升级到最新版本, 而且也大量的使用协程特性. 很长时间没有更新博客, ...
- python网站设计理念_简单介绍下python Django框架的历史,设计理念及优势_Django讲解2...
简单介绍下python Django框架的历史,设计理念及优势 Django是一个高层次的 Python Web 框架,它是一个鼓励快速开发和干净,实用的框架设计.Django可以更容易地快速构建更好 ...
- vcg函数值_简单介绍几种函数信号发生器的原理图及不同功能设计
简单介绍几种函数信号发生器的原理图及不同功能设计 前言 随着大规模集成电路的迅速发展,函数发生器的应用也逐渐广泛起来.函数信号发生器(函数信号发生器的使用)是一种在科研和生产中经常用到的基本波形产生器 ...
- java ear包_简单介绍Java 的JAR包、EAR包、WAR包区别
原标题:简单介绍Java 的JAR包.EAR包.WAR包区别 WAR包 WAR(Web Archive file)网络应用程序文件,是与平台无关的文件格式,它允许将许多文件组合成一个压缩文件.War专 ...
最新文章
- SpringBoot使用Socket向前端推送消息
- 图像抠图算法学习 - Shared Sampling for Real-Time Alpha Matting
- 深入浅出Yolo系列之Yolov3Yolov4Yolov5核心基础知识完整讲解
- 收银系统服务器数据库,收银系统服务器数据库
- 【Python小游戏】扫雷游戏竟有世界排行榜,中国90后00后霸占半壁江山?
- DPM2012保护sharepoint场
- 不是ESD保护二极管难买,是你没找到对的方法
- 计算机二级office函数日期,Excel函数-日期和文本函数-计算机二级Office
- 详解tensorflow数据读取-tf.train.string_input_producer和tf.train.start_queue_runners
- CodeMirror入门
- FydeOS v11 发布,全新 Linux 终端提供更多功能
- 苹果app(iOS app)比较常用的URL schemes,可以用于iOS应用间相互调用
- Z逆变换(2020.10.21)
- git diff 比较文件的工具 DiffMerge 安装配置使用
- 小米Note 3完美刷成开发版获取root权限的步骤
- Pycharm调试卡在“Collecting data...”
- 苹果手机连接Wifi认证机制
- Pr 视频速率与关键帧
- 优秀工程师必备的三大思维,你拥有哪些?
- 经济学人精读笔记10:员工休假居然对企业有好处?
热门文章
- Java里的字符串, String类简单介绍.
- php java if_phpjava(二)
- java 什么是哨兵_Java中的Redis 哨兵高可用性
- 深入剖析全链路灰度技术
- 我参与阿里巴巴 ASoC-Seata 的一些感悟
- 揭秘:如何为 Kubernetes 实现原地升级
- 迁移 Express 到函数计算
- mac安装软件管理Android手机,Mac如何管理Android手机:这方式很得体
- z390 黑苹果启动盘_不到800元买块1TB固态,折腾一下黑苹果的安装
- 小程序mysql+php测试,分享微信小程序的一些常见辅助测试功能:chance