Activiti Workflow HelloWorld 示例与测试环境搭建
作者:Rock
出处:http://www.ecmkit.com/zh-hans/2012/03/21/activiti-workflow-hell
Activiti Workflow HelloWorld 示例与测试环境搭建
03/21/2012 - 12:55
我们都知道Alfresco 4.0以后采用了Activiti BPMN2.0 引擎(关于Activiti, 是一个open source 项目。 Alfresco从jBPM公司挖出了jBPM的创建人和若干核心人员,意欲创建一个基于Apache License的,并且遵循BPMN 2.0工作流标准的开源项目,看来Alfresco真是煞费苦心啊。不过Alfresco 4.0 中jBPM是仍然存在的,也就是说两套工作流引擎并存)。我们这里介绍一下怎样在eclipse中设计BPMN
2.0工作流定义的基本步骤。
1. Activiti问我们提供了Activiti BPMN 2.0, 这个工具是基于Eclipse所开发的工具,安装十分方便。在安装Activiti之前,我们要首先安装Maven Eclipse插件。
点击Help -> Install New Software,输入以下站点信息:
选中Maven进行安装。

2. 下一步安装Activiti,点击Help -> Install New Software,输入以下站点信息:

点击next,finish进行安装。

3. 安装完成后,我们就可以建立Activiti项目了。点击New-> Project… -> Activiti -> Activiti Project

输入项目的名称,点击Finish, 此时Eclipse会打开Activiti View,并生成如下项目:

4. 现在我们开始创建工作流。右键点击项目根目录,选择new -> others,选择Activiti -> Activiti Diagram

接下来输入项目名称,这里我们输入HellowWorld.activiti(看到HelloWorld是不是倍感亲切啊:))

点击Finish,最后Eclipse会生成一个新的HelloWorld.activit文件,并用Activiti Designer打开这个新生成的文件。如下图所示:

我们可以看到,左上侧最大的区域为设计区,用来放置我们的工作流元素,右上侧为工具区,Activiti提供了很多out of box的工作流元素,可以供我们搭建工作流。下方区域为配置区,当点击工作流中的某一个元素时,相应的属性面板会显示该元素的可配置属性。
5. 最后我们来搭建一个非常简单的工作流,仅有一个start event, 一个user task及一个end event。这里我不打算介绍太多BPMN 2.0,仅给大家一个基本的步骤。
如下图所示,拖动右侧红色框框所表示的1, 2, 3, 组成如下工作流

选择右侧最上方的”select”元素,再点击User Task元素,下方弹出属性面板。在属性面板上点击左侧的Main Config,然后Performer Type选择”Assignee”,Expression输入”kermit”。解释一下这个步骤的意思,这里我们配置该任务的执行者是某个用户,这个用户的名字是”kermit”。后面我们会用这个用户登录我们的测试环境。

点击保存,我们可以看到Activiti会自动生成该activit文件所对应的HelloWorld.bpmn20.xml文件,该文件内容如下:
<?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="HelloWorld" name="HelloWorld">
<documentation>Place documentation for the 'HelloWorld' process here.</documentation>
<startEvent id="startevent1" name="Start"></startEvent>
<userTask id="usertask1" name="User Task" activiti:assignee="kermit"></userTask>
<endEvent id="endevent1" name="End"></endEvent>
<sequenceFlow id="flow1" name="" sourceRef="startevent1" targetRef="usertask1"></sequenceFlow>
<sequenceFlow id="flow2" name="" sourceRef="usertask1" targetRef="endevent1"></sequenceFlow>
</process>
<bpmndi:BPMNDiagram id="BPMNDiagram_HelloWorld">
<bpmndi:BPMNPlane bpmnElement="HelloWorld" id="BPMNPlane_HelloWorld">
<bpmndi:BPMNShape bpmnElement="startevent1" id="BPMNShape_startevent1">
<omgdc:Bounds height="35" width="35" x="80" y="200"></omgdc:Bounds>
</bpmndi:BPMNShape>
<bpmndi:BPMNShape bpmnElement="usertask1" id="BPMNShape_usertask1">
<omgdc:Bounds height="55" width="105" x="190" y="190"></omgdc:Bounds>
</bpmndi:BPMNShape>
<bpmndi:BPMNShape bpmnElement="endevent1" id="BPMNShape_endevent1">
<omgdc:Bounds height="35" width="35" x="400" y="200"></omgdc:Bounds>
</bpmndi:BPMNShape>
<bpmndi:BPMNEdge bpmnElement="flow1" id="BPMNEdge_flow1">
<omgdi:waypoint x="115" y="217"></omgdi:waypoint>
<omgdi:waypoint x="190" y="217"></omgdi:waypoint>
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge bpmnElement="flow2" id="BPMNEdge_flow2">
<omgdi:waypoint x="295" y="217"></omgdi:waypoint>
<omgdi:waypoint x="400" y="217"></omgdi:waypoint>
</bpmndi:BPMNEdge>
</bpmndi:BPMNPlane>
</bpmndi:BPMNDiagram>
</definitions>
这里要提出的一点就是,由于Activiti Designer目前仍在研发,所以存在不少缺点。比如如果同时打开activiti文件和对应的bpmn20.xml文件,在对bpmn20.xml文件做修改后进行保存,eclipse的反应会很慢, 所以尽量关闭activiti文件。反过来如果保存activit文件,designer会覆盖bpmn20.xml,其覆盖结果可能会把你手都配置的bpmn20.xml打乱。我个人推荐用designer进行基本布局,然后保存生成bpmn20.xml文件,再手动去修改bpmn20.xml文件。最后在保存bpmn20.xml文件之前,删除原先的activiti文件及png文件,这样designer会根据bpmn20.xml文件重新生成这两个文件。
6. 搭建测试环境。Activiti为我们提供了一个out of box的测试环境。首先去activiti的官网上下载activiti-5.9.zip 文件。
确保你的机器上安装的JRE和ANT,并配置后JAVA_HOME和ANT_HOME。
解压zip文件到任意目录,这里我们用ACTIVITI_HOME代表解压目录。打开命令行窗口,跳转到ACTIVITI_HOME/setup目录,并输入ant demo.start命令,整个测试环境会自动搭建起来,我们需要做的就是喝茶,看着屏幕。
这里注意,第一次运行时,ant会执行很多命令,其中包括:
*安装H2数据库
*下载并安装tomcat
补充一点,如果你已经有现成的tomcat, 可以自己手动修改下build文件,这样可以避免重复下载,节约时间。如果懒得修改也可以,就让ant帮你把一切搞定。修改步骤如下:
与ACTIVITI_HOME同级目录建立文件夹” downloads”,如图:

拷贝你的tomcat压缩文件到此文件夹

修改ACTIVITI_HOME/ setup/build.properties文件:
注意这里的版本号要与你的tomcat压缩文件一致。
好了,接下来我们要做的就是启动ant任务了。打开cmd或者terminal窗口,跳转到ACTIVITI_HOME/setup目录下,输入

接下来就是等待。取决于你是否修改了tomcat的下载,修改的话只要1分钟不到,就会弹出浏览器,并显示系统登录页面:
这里我们用id: kermit, passwd: Kermit(这个账号是administrator)进行登录。登录后画面如下:

7. 剩下最后一步就是部署我们刚刚创建的工作流了。点击顶部的Manage,再点击Deployments -> Upload new

在弹出的文件选择对话框中选择我们上面创建的HelloWorld.bpmn20.xml文件, 部署结果如下:

部署成功了,很开心。最后我们要做的就是启动这个HelloWorld,看看我们的劳动成果。当然这个懒惰的工作流什么也没做:(。点击顶部的Process,在左侧选择我们的HelloWorld工作流,再点击右上方的Start process:

这时候我们会发现画面自动切换到Tasks页面,并且在左上方的Inbox标题框上多了一个”1”,意思是多了一个新任务

这里唯一能做的事情就是把这个任务指派给其它用户,或者点击Complete task以完成该任务。
好了,整个过程到这里就结束了,大家可以试试看。
Activiti Workflow HelloWorld 示例与测试环境搭建的更多相关文章
- Linux测试环境搭建的学习建议
随着Linux应用的扩展许多朋友开始接触Linux,根据学习Windwos的经验往往有一些茫然的感觉:不知从何处开始学起.这里介绍学习Linux测试环境搭建的一些建议. 一.Linux测试环境搭建从基 ...
- 总结Selenium自动化测试方法(二)测试环境搭建
(接上期内容) 二.测试环境搭建 1.安装python 现在python3.0比python2.0多了一些改进的功能(详见http://zhidao.baidu.com/link?url=3sT1g7 ...
- https,https的本地测试环境搭建,asp.net结合https的代码实现,http网站转换成https网站之后遇到的问题
一:什么是https SSL(Security Socket Layer)全称是加密套接字协议层,它位于HTTP协议层和TCP协议层之间,用于建立用户与服务器之间的加密通信,确保所传递信息的安 ...
- 【转】https,https的本地测试环境搭建,asp.net结合https的代码实现,http网站转换成https网站之后遇到的问题
正需要这个,写的很好,就转过来了 转自: http://www.cnblogs.com/naniannayue/ 一:什么是https SSL(Security Socket Layer)全称 ...
- 【转2】Appium 1.6.3 在Xcode 8 (真机)测试环境搭建 经验总结
Appium 1.6.3 在Xcode 8 (真机)测试环境搭建经验总结 关于 Appium 1.6.3 在Xcode 8, 1真机上环境搭建问题更多,写此文章,供大家参考,让大家少走弯路. 在开始i ...
- 【转1】Appium 1.6.3 在Xcode 8, iOS 10.2(模拟器)测试环境搭建 经验总结
Appium 1.6.3 在Xcode 8, iOS 10.2(模拟器)测试环境搭建 经验总结 关于 Appium 1.6.3 在Xcode 8, 10.2 的iOS模拟器上的问题很多,本人也差点放弃 ...
- Android测试环境搭建
Android测试环境搭建 一.操作系统 使用Win7_64位操作系统.(可以用其他的系统,下面都是针对Win7 64位进行操作) 二.安装JDK 运行jdk-6u45-windows-x64.exe ...
- USDT(omniCore)测试环境搭建
一.测试环境搭建. 注:由于window版本的omni出现同步不了的问题,推荐使用linux系统进行usdt测试链的搭建. 1.下载omnicore: wget https://bintray.com ...
- igmp组播测试环境搭建
2.4G无线组播测试环境搭建: (1)组播源: VLC 或者 pixstream (2)无线: 2.4G AP (3)客户端PC: VLC播放器 有线直连 无线2.4G PC(组播源pixstream ...
随机推荐
- jemeter安装步骤
1.jmeter下载地址:http://jmeter.apache.org/download_jmeter.cgi 2.在安装jmeter之前首先要安装jdk1.8以上版本,朋友们,千万不要忘了 jd ...
- 如何在sublime上运行php
这个问题虽然随便一搜都能有很多答案,但是我当时都没有顺利解决我会详细地写出较为容易理解和操作的步骤第一步,配置PHP环境变量如图一所示1.找到 我的电脑 -属性2.高级系统设置3.环境变量4.找到“系 ...
- python之parameterized模块
parameterized扩展了py.test参数化测试,unittest参数化测试. <1>一个小练习 import unittest import math @parameterize ...
- 网络教程(12) TCP协议
IP协议的限制 IP协议需要 datalink帧来包装它 Ethernet或者PPP 一般都有1500byte字节或者大小的限制 可能会出现的问题 Packet loss – retransmit R ...
- BZOJ 3774 最优选择 (最小割+二分图)
题面传送门 题目大意:给你一个网格图,每个格子都有$a_{ij}$的代价和$b_{ij}$的回报,对于格子$ij$,想获得$b_{ij}$的回报,要么付出$a_{ij}$的代价,要么$ij$周围四联通 ...
- 02023_Arrays类的方法练习
1.定义一个方法,接收一个数组,数组中存储10个学生考试分数,该方法要求返回考试分数最低的后三名考试分数. public static int[] method(double[] arr){ Arra ...
- test/exec/match
1) test 检查指定的字符串是否存在var data = “123123″;var reCat = /123/gi;alert(reCat.test(data)); //true//检查字符是 ...
- python 并发编程入门
多进程 在Unix/Linux下,为我们提供了类似c中<unistd.h>头文件里的的fork()函数的接口,这个函数位于os模块中,相同与c中类似,对于父进程fork()调用返回子进程I ...
- Google C++ style guide——格式
1.行长度 每一行代码字符数不超过80. 例外: 1)假设一行凝视包括了超过80字符的命令或URL,出于复制粘贴的方便能够超过80字符: 2)包括长路径的能够超出80列,尽量避免: 3)头文件保护能够 ...
- Unity5.1 新的网络引擎UNET(七) UNET 单人游戏转换为多人
单人游戏转换为多人 孙广东 2015.7.12 本文档描写叙述将单人游戏转换为使用新的网络系统的多人游戏的步骤.这里描写叙述的过程是简化,对于一个真正的游戏事实上须要更高级别版本号的实际 ...