1、什么是工作流?

工作流(Workflow),指“业务过程的部分或整体在计算机应用环境下的自动化”。是对工作流程及其各操作步骤之间业务规则的抽象、概括描述。

  工作流是将一组任务组织起来以完成某个经营过程:定义了任务的触发顺序和触发条件,每个任务可以由一个或多个软件系统完成,也可以由一个或一组人完成,还可以由一个或多个人与软件系统协作完成。

2、工作流主要解决的主要问题是:

  为了实现某个业务目标,利用计算机在多个参与者之间按某种预定规则自动传递文档、信息或者任务。

工作流:
①指定流程:在指定流程的过程中,会经历很多版本。
②流程正式启动
③启动流程实例
④申请
⑤审批
⑥流程结束
注:虽然利用数据库也可以控制业务流程,但是设计的表通用性不强,根据业务可能需要经常性的进行变更。
学习JBPM重点在于:①流程定义文档XML②JBPM API③数据库的结构(重点)

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相关推荐

  1. 微服务笔记:第一章_微服务简介|Eureka注册中心|Nacos注册中心|Nacos配置管理|Feign|Gateway服务网关

    微服务笔记:第一章_微服务简介|Eureka注册中心|Nacos注册中心|Nacos配置管理|Feign|Gateway服务网关 1. 微服务简介 1.1 服务架构演变 1.2 SpringCloud ...

  2. Zephyr应用笔记:mcuboot引导程序简单介绍

    本文对mcuboot(version 1.1.0)做一个简单介绍供参考,Github地址:https://github.com/runtimeco/mcuboot 以下内容都是针对(version 1 ...

  3. ⅰcp经济模型_简单介绍一下R中的几种统计分布及常用模型

    统计学上分布有很多,在R中基本都有描述.因能力有限,我们就挑选几个常用的.比较重要的简单介绍一下每种分布的定义,公式,以及在R中的展示. 统计分布每一种分布有四个函数:d――density(密度函数) ...

  4. python中len用法_简单介绍Python中的len()函数的使用

    简单介绍Python中的len()函数的使用 函数:len() 1:作用:返回字符串.列表.字典.元组等长度 2:语法:len(str) 3:参数:str:要计算的字符串.列表.字典.元组等 4:返回 ...

  5. 获取同花顺数据接口_简单介绍同花顺_数据获取方式(Excel VBA)

    简单介绍同花顺_数据获取方式(Excel VBA) 2018-09-12 简单介绍数据获取方式(Excel VBA) 数据是量化的根本和原材料,数据的准确性非常重要.获得数据的方式各种各样,最小的单位 ...

  6. python协程异步原理_简单介绍Python的Tornado框架中的协程异步实现原理

    Tornado 4.0 已经发布了很长一段时间了, 新版本广泛的应用了协程(Future)特性. 我们目前已经将 Tornado 升级到最新版本, 而且也大量的使用协程特性. 很长时间没有更新博客, ...

  7. python网站设计理念_简单介绍下python Django框架的历史,设计理念及优势_Django讲解2...

    简单介绍下python Django框架的历史,设计理念及优势 Django是一个高层次的 Python Web 框架,它是一个鼓励快速开发和干净,实用的框架设计.Django可以更容易地快速构建更好 ...

  8. vcg函数值_简单介绍几种函数信号发生器的原理图及不同功能设计

    简单介绍几种函数信号发生器的原理图及不同功能设计 前言 随着大规模集成电路的迅速发展,函数发生器的应用也逐渐广泛起来.函数信号发生器(函数信号发生器的使用)是一种在科研和生产中经常用到的基本波形产生器 ...

  9. java ear包_简单介绍Java 的JAR包、EAR包、WAR包区别

    原标题:简单介绍Java 的JAR包.EAR包.WAR包区别 WAR包 WAR(Web Archive file)网络应用程序文件,是与平台无关的文件格式,它允许将许多文件组合成一个压缩文件.War专 ...

最新文章

  1. SpringBoot使用Socket向前端推送消息
  2. 图像抠图算法学习 - Shared Sampling for Real-Time Alpha Matting
  3. 深入浅出Yolo系列之Yolov3Yolov4Yolov5核心基础知识完整讲解
  4. 收银系统服务器数据库,收银系统服务器数据库
  5. 【Python小游戏】扫雷游戏竟有世界排行榜,中国90后00后霸占半壁江山?
  6. DPM2012保护sharepoint场
  7. 不是ESD保护二极管难买,是你没找到对的方法
  8. 计算机二级office函数日期,Excel函数-日期和文本函数-计算机二级Office
  9. 详解tensorflow数据读取-tf.train.string_input_producer和tf.train.start_queue_runners
  10. CodeMirror入门
  11. FydeOS v11 发布,全新 Linux 终端提供更多功能
  12. 苹果app(iOS app)比较常用的URL schemes,可以用于iOS应用间相互调用
  13. Z逆变换(2020.10.21)
  14. git diff 比较文件的工具 DiffMerge 安装配置使用
  15. 小米Note 3完美刷成开发版获取root权限的步骤
  16. Pycharm调试卡在“Collecting data...”
  17. 苹果手机连接Wifi认证机制
  18. Pr 视频速率与关键帧
  19. 优秀工程师必备的三大思维,你拥有哪些?
  20. 经济学人精读笔记10:员工休假居然对企业有好处?

热门文章

  1. Java里的字符串, String类简单介绍.
  2. php java if_phpjava(二)
  3. java 什么是哨兵_Java中的Redis 哨兵高可用性
  4. 深入剖析全链路灰度技术
  5. 我参与阿里巴巴 ASoC-Seata 的一些感悟
  6. 揭秘:如何为 Kubernetes 实现原地升级
  7. 迁移 Express 到函数计算
  8. mac安装软件管理Android手机,Mac如何管理Android手机:这方式很得体
  9. z390 黑苹果启动盘_不到800元买块1TB固态,折腾一下黑苹果的安装
  10. 小程序mysql+php测试,分享微信小程序的一些常见辅助测试功能:chance