Activiti实战03_Hello World
Hello World如此经典,以至于几乎学习没一门新的技术都是从Hello World开始,可能意味着开启了新世界的大门吧,接下来就让我们一起步入到Activiti的世界中吧!
本文所使用开发环境
JDK1.8、Maven、Eclipse(Version: Neon Release (4.6.0))
1:最简单的流程定义
1.1 Activiti项目创建
打开Eclipse -> File -> New -> Other -> 输入Activiti -> 选择Activiti Project -> 输入文件名

创建好的项目结构如图所示(典型的Maven项目结构):

项目建好了,就可以开始了,右键diagrams -> New -> Other -> Activiti Diagram ,选定后随便起个名字就行了。
进入文件后会看到在Eclipse的右边有一个控件栏一样的东西

创建一个最简单的流程定义,主要会用到Event控件,至于剩下的其他控件的使用,会在后续做出说明。然后选择一个StartEvent

在开始任务之后在选择一个结束任务(EndEvent),至此,一个最简单的流程定义就完成了,如下图所示:

其实Activiti的Bpmn流程图也是通过Xml进行描述的,右键该流程图 -> Open With -> XML editor
代码清单
<?xml version="1.0" encoding="UTF-8"?>
<definitions xmlns="http://www.omg.org/spec/BPMN/20100524/MODEL"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:activiti="http://activiti.org/bpmn"
xmlns:bpmndi="http://www.omg.org/spec/BPMN/20100524/DI"
xmlns:omgdc="http://www.omg.org/spec/DD/20100524/DC"
xmlns:omgdi="http://www.omg.org/spec/DD/20100524/DI"
typeLanguage="http://www.w3.org/2001/XMLSchema"
expressionLanguage="http://www.w3.org/1999/XPath"
targetNamespace="http://www.activiti.org/test">
<process id="myProcess" name="My process" isExecutable="true">
<startEvent id="startevent1" name="Start"></startEvent>
<endEvent id="endevent1" name="End"></endEvent>
<sequenceFlow id="flow1" sourceRef="startevent1" targetRef="endevent1"></sequenceFlow>
</process>
<bpmndi:BPMNDiagram id="BPMNDiagram_myProcess">
<bpmndi:BPMNPlane bpmnElement="myProcess" id="BPMNPlane_myProcess">
<bpmndi:BPMNShape bpmnElement="startevent1" id="BPMNShape_startevent1">
<omgdc:Bounds height="35.0" width="35.0" x="140.0" y="120.0"></omgdc:Bounds>
</bpmndi:BPMNShape>
<bpmndi:BPMNShape bpmnElement="endevent1" id="BPMNShape_endevent1">
<omgdc:Bounds height="35.0" width="35.0" x="250.0" y="120.0"></omgdc:Bounds>
</bpmndi:BPMNShape>
<bpmndi:BPMNEdge bpmnElement="flow1" id="BPMNEdge_flow1">
<omgdi:waypoint x="175.0" y="137.0"></omgdi:waypoint>
<omgdi:waypoint x="250.0" y="137.0"></omgdi:waypoint>
</bpmndi:BPMNEdge>
</bpmndi:BPMNPlane>
</bpmndi:BPMNDiagram>
</definitions>
代码清单解读:
1:<definitions></definitions>
在该标签之间的内容属于整个流程定义的所有信息
2:<process></process>(非常重要)
在该标签中的是流程相关信息,是能够在Properties中进行修改和添加的。
id:唯一标识符,如果id相同,表明是同一流程,Activiti将会对其进行升级部署
name:流程图名称
<startEvent id="startevent1" name="Start"></startEvent>
这段XML主要是对开始节点的命名和属性设置
<endEvent id="endevent1" name="End"></endEvent>
这段XML主要是对结束节点的命名和属性设置
<sequenceFlow id="flow1" sourceRef="startevent1" targetRef="endevent1"></sequenceFlow>
这段XML是对流程图中连线的解读,从哪开始,流向哪里:
sourceRef:连线的起点(对应相关节点的id)
targetRef:连线的终点(对应相关节点的id)
id:连线的标识
3:<bpmndi:BPMNDiagram></bpmndi:BPMNDiagram>(基本不需要关心)
该标签这个是为了给流程图中任务添加显示框所用的定位信息,标注了每个元素的位置信息。
在Activiti的开发中,有一个至关重要的窗口——Properties窗口,在这个窗口内包含了这个流程的所有基本信息,以及对这个流程的所有操作。
Properties窗口的调出方式:Window -> Show View -> Otehr -> Properties即可

2:测试
public class VerySimpleLeaveProcessTest {
@Test
public void testStartProcess(){
// 创建流程引擎,使用内存数据库
ProcessEngine processEngine = ProcessEngineConfiguration
.createStandaloneInMemProcessEngineConfiguration()
.buildProcessEngine();
// 部署流程定义文件
RepositoryService repositoryService = processEngine.getRepositoryService();
repositoryService.createDeployment()
.addClasspathResource("diagrams/ch02Leave.bpmn")
.deploy();
// 验证已部署的流程定义
ProcessDefinition processDefinition = repositoryService.createProcessDefinitionQuery()
.singleResult();
assertEquals("myProcess",processDefinition.getKey());
// 启动流程并返回流程实例
RuntimeService runtimeService = processEngine.getRuntimeService();
ProcessInstance instance = runtimeService.startProcessInstanceByKey("myProcess");
assertNotNull(instance);
}
}
输出结果,如果输出有结果,就说明你成功了:

Activiti实战03_Hello World的更多相关文章
- Activiti实战04_简单流程
在Activiti实战03_Hello World中我们介绍了一个中间没有任何任务的流程,实现了流程的部署与查阅,而在本章中,将会为流程添加任务节点,是流程能够像个流程,变得更加丰满起来. 在上一节的 ...
- activiti实战--第二章--搭建Activiti开发环境及简单示例
(一)搭建开发环境 学习资料:<Activiti实战> 第一章 认识Activiti 2.1 下载Activiti 官网:http://activiti.org/download.html ...
- activiti实战--第一章--认识Activiti
学习资料:<Activiti实战> 第一章 认识Activiti 内容概览:讲解activiti的特点.接口概览.架构等基本信息. 1.3 Activiti的特点 1.使用mybatis ...
- 2017.3.14 activiti实战--第二十章--REST服务
学习资料:<Activiti实战> 第二十章 REST服务 20.1 通信协议概述 略. 20.2 REST API概述 资源分类 资源基础URI 说明 Deployments manag ...
- 2017.2.28 activiti实战--第七章--Spring容器集成应用实例(五)普通表单
学习资料:<Activiti实战> 第七章 Spring容器集成应用实例(五)普通表单 第六章中介绍了动态表单.外置表单.这里讲解第三种表单:普通表单. 普通表单的特点: 把表单内容写在 ...
- 2017.2.28 activiti实战--第六章--任务表单(二)外置表单
学习资料:<Activiti实战> 第六章 任务表单(二)外置表单 6.3 外置表单 考虑到动态表单的缺点(见上节),外置表单使用的更多. 外置表单的特点: 页面的原样显示 字段值的自动填 ...
- 2017.2.28 activiti实战--第六章--任务表单(一)动态表单
学习资料:<Activiti实战> 第六章 任务表单(一)动态表单 内容概览:本章要完成一个OA(协同办公系统)的请假流程的设计,从实用的角度,讲解如何将activiti与业务紧密相连. ...
- 2017.2.28 activiti实战--第五章--用户与组及部署管理(三)部署流程及资源读取
学习资料:<Activiti实战> 第五章 用户与组及部署管理(三)部署流程及资源读取 内容概览:如何利用API读取已经部署的资源,比如读取流程定义的XML文件,或流程对应的图片文件. 以 ...
- 2017.2.28 activiti实战--第五章--用户与组及部署管理(二)部署流程资源
学习资料:<Activiti实战> 第五章 用户与组及部署管理(二)部署流程资源 内容概览:讲解流程资源的读取与部署. 5.2 部署流程资源 5.2.1 流程资源 流程资源常用的有以下几种 ...
随机推荐
- Windows下DNS ID欺骗的原理与实现
域名系统(DNS)是一种用于TCP/IP应用程序的分布式数据库,它提供主机名字和IP地址之间的转换信息.通常,网络用户通过UDP协议和DNS服务器进行通信,而服务器在特定的53端口监听,并返回用户所需 ...
- Java-Maven-pom.xml-project-packaging:packaging(war/jar)
ylbtech-Java-Maven-pom.xml-project-packaging:packaging(war/jar) 1.返回顶部 1.packaging 1.1 war <!-- 打 ...
- iOS开发之SceneKit框架--SCNParametricGeometry.h
1.SCNParametricGeometry简介 SCNParametricGeometry用于创建简单的3D模型,比如SCNPlane 平面.SCNPyramid 锥形(金字塔).SCNBox 立 ...
- 线程池_ThreadPool
using System; using System.Collections.Generic; using System.Drawing; using System.Drawing.Imaging; ...
- LightOJ-1007-Mathematically Hard-欧拉函数打表+前缀和+预处理
Mathematically some problems look hard. But with the help of the computer, some problems can be easi ...
- PKU Campus 2015
PKU Campus 2015 B 注意到竖着落下不改变列模 4 的结果.问题转化为:模 4 系下,给序列,可选长度为 4 子区间,区间加一,能否让所有元素相等. C.Rabbit's Festiva ...
- 简单搭建dubbo
为什么要用dubbo? 当网站规模达到了一定的量级的时候,普通的MVC框架已经不能满足我们的需求,于是分布式的服务框架和流动式的架构就凸显出来了. 单一应用架构 当网站流量很小时,只需一个应用 ...
- U-BOOT 对 Nand Flash 命令的支持
U-BOOT 对 Nand Flash 命令的支持 在 UBOOT 下对 Nand Flash 的支持主要是在命令行下实现对 nand flash 的操作.对 nand flash 实现的命令 为: ...
- Jmeter性能测试 入门【转】
Jmeter性能测试 入门[转] Jmeter是一款优秀的开源测试工具, 是每个资深测试工程师,必须掌握的测试工具,熟练使用Jmeter能大大提高工作效率. 熟练使用Jmeter后, 能用Jmeter ...
- MaxCompute安全管理指南-案例篇
通过<MaxCompute安全管理-基础篇>了解到MaxCompute和DataWorks的相关安全模型.两个产品安全方面的关联,以及各种安全操作后,本篇主要给出一些安全管理案例,给安全管 ...