六、
开发自己的工作流(Hello World)
1.
eclipse插件安装
jbpm提供了在eclipse下的一个可视化插件,通过它我们可以方便的定义工作流,打开jbpm-starters-kit-3.1.4\jbpm-designer\jbpm-gpd-feature目录,我们可以看到下面有一个eclipse文件夹,这里我们通过link的方式为eclipse添加该插件。
在{eclipse_home}/link文件夹下新建jbpm-designer.link文件,用记事本打开该文件加入如下一行:
path=D:\\jbpm-starters-kit-3.1.4\\jbpm-designer\\jbpm-gpd-feature
后面的路径即为该插件的存放路径,根据个人情况修改。注意,这里的分隔符使用双斜杠
\\
。
2.
新建
jbpm
项目
主菜单“文件->新建->项目”,在弹出的对话框里,有“
Process Project
”项,如下图所示:
选上,单击“下一步”,工程起名“
myjbpm
”,点击下一步为此工程指定一个
jbpm location
,如果时第一次运行该插件,系统会提示你设置一个
jbpm location
。这里我们将
location
设置为
D:\jbpm-starters-kit-3.1.4\jbpm.3
。然后就可以单击“完成”了。然后就生成了如下图所示的一个项目结构:
这个项目和通常
Eclipse
的项目结构有点不同,不过这是一个现在非常流行的项目结构,
src/main/java
存放源文件,
src/test/java
存放相应的
JUnit
单元测试代码,
src/main/jpdl
存放我们定义的工作流文件。
项目创建起了,介绍一下里面的文件吧:
l
MessageActionHandler
,自动生成的一个
ActionHandler
。
l
hibernate.cfg.xml
jBPM
是用
Hibernate
进行工作流的数据存储的,这个就是
Hibernate
的配置文件。后面我们将讲到如何配置这个文件。
l
jbpm.cfg.xml
jbpm
本身的配置文件。现在是空的,它用的是缺省配置,你想知道有哪些配置就去看这个文件
D:\jbpm-starters-kit- 3.1.4\jbpm.3\src\java.jbpm\org\jbpm\default.jbpm.cfg.xml
l
log4j.properties
这个是日志
API
包
log4j
的配置文件,用过
log4j
的都知道。
l
SimpleProcessTest.java
这个是对最重要的流程配置文件的
processdefinition.xml
单元测试代码。
l
gpd.xml
用于生成流程图的定义文件。都是一些方框的坐标和长宽
l
processdefinition.xml
这个是对最重要的流程配置文件,以后写流程要经常和它打交道。
l
processimage.jpg
一个流程图
3.
简单工作流定义
展开
myjbpm
工程,选中
src/main/jpdl
包,单击鼠标右键,
new->other
,如下图:
新建一个
Process Definition
,
process
命名为
HelloWorld
,单击
finish
,结果如下图:
右面的窗口为工作流定义的可视化窗口。选中该窗口单击
eclipse
菜单栏
view->show Grid
为该窗口添加网格,方便后面开发。
1)
定义基本流程
分别向编辑区拖入,
start
、
task node
、
end
节点,用
transition
将他们依次连起来,并分别修改
task node
名为
show message
,
end
节点名为
end
,两个
transition
分别命名为
send
和
ok
,得到如下所示结果:
2)
定义泳道
(swimlane)
我们为该流程定义一个名为
user
的泳道
(swimlane)
,点击编辑窗口左下角的
swimlanes
按钮,得到添加泳道界面,单击
add
按钮,按照下图配置相关信息,这样我们就将用户
grover
加入到了泳道
user
中:
3)
定义节点任务
打开
eclipse
中的
outline
视图,我们可以看到一个名为
HelloWorld
的
process
节点,展开该节点,如下图:
右击
start
节点,选择
add task
我们看到
start
节点下多出了一个名为
task
的
task
节点:
双击该节点,打开节点编辑窗口,将该
task
改名为
input message
,如下:
选择左边的
controller
我们为该流程定义一个名为
message
的变量,这个变量就是我们后面要传递的信息,照下图配置该变量:
点击
ok
,完成
start
节点下的任务定义。
按照以上步骤,我们再为
message show
节点定义一个名为
show message
的任务,这里的变量名也为
message
,但是属性只有
read
,我们通过这个任务读取前面所输入的
message
信息。注意两个任务的变量名要相对应,如下图:
下来点击
assignment
菜单,配置该任务的分配方式,如下图所示,将该任务分配给名为
user
的
swimlane
,此
swimlane
包含了
grover
用户。结果如下图:
单击
ok
,我们就完成了该流程的任务定义。这里我们看到多出了两个
task
,如图:
4)
保存流程定义
单击保存按钮,我们保存该流程定义。保存成功后我们可以看到,在流程定义的包中多出了一个名为
processimage.jpg
的图像文件,该文件为我们定义流程的流程图,如下:
点击编辑窗口下的
source
按钮,我们可以查看通过图形编辑界面自动生成的该流程的
xml
定义,即
processdefinition.xml
中的内容。如下:
xml 代码
-
<?
xml
version
=
"1.0"
encoding
=
"UTF-8"
?>
-
<
process-definition
-
xmlns
=
"urn:jbpm.org:jpdl-3.1"
name
=
"HelloWorld"
>
-
<
swimlane
name
=
"user"
>
-
<
assignment
expression
=
"user(grover)"
>
</
assignment
>
-
</
swimlane
>
-
<
start-state
name
=
"start"
>
-
<
task
name
=
"input message"
>
-
<
controller
>
-
<
variable
name
=
"message"
access
=
"read,write,required"
>
</
variable
>
-
</
controller
>
-
</
task
>
-
<
transition
name
=
"send"
to
=
"message show"
>
</
transition
>
-
</
start-state
>
-
<
task-node
name
=
"message show"
>
-
<
task
name
=
"show message"
swimlane
=
"user"
>
-
<
controller
>
-
<
variable
name
=
"message"
access
=
"read"
>
</
variable
>
-
</
controller
>
-
</
task
>
-
<
transition
name
=
"OK"
to
=
"end"
>
</
transition
>
-
</
task-node
>
-
<
end-state
name
=
"end"
>
</
end-state
>
-
</
process-definition
>
对照刚才的流程定义,我们很容易可以看出各个
xml
标签所对应的意义。具体细节我们将在后面介绍。
5)
部署流程定义
首先我们要启动
jboss
服务,待服务启动成功后单击编辑窗口下的
deployment
按钮,按照下图配相应参数,然后点击
test connection
,如果弹出成功窗口,说明服务器连接正常,否则请检查你的参数设置。
测试连接成功后,我们点击下面的
deploy process archive
按钮,如果得到成功信息,恭喜你,说明我们定义的工作流已经成功的部署到了
jboss
上,如下图:
6)
使用工作流
打开
IE
浏览器,在地址栏中输入
http://localhost:8080/jbpm
,以
cookie monster
身份登陆系统。我们看到
Start New Process Execution
里面多了一项
Hello World
,这就是我们刚才部署过的工作流。
点击
input message
我们会看到以下画面:
注意到左面有个一名为
message
的文本框,这个文本框就是我们在流程定义里定义的变量
message
。右面是本流程的流程图,红色的框代表该流程现在运行到哪一步。我们在文本框内输入
Hello!Congratulations!
。然后点击
save and close task
按钮,提交该内容。之后页面跳转,我们会在上面看到这样一行提示信息:
A new task has been assigned to ‘grover’
。说明第一步流程已完成,将下一步任务委派给泳道
user
中的
grover
。我们点击屏幕左上角的
login as another user
。如图所示:
以
grover
身份登陆系统,我们可以看到在
grover
的主界面下的
tasklist
里多出了一项:
单击该任务,我们可以看到同样有一个名为
message
的文本框,但是他的内容是不可编辑的,这和我们定义工作流变量时的设置有关,并且里面的内容正是上一步中
cookie monster
用户所输入的内容。我们还可以注意到,右面流程图中标明该流程已经进入第二步。
继续点击
save and close task
按钮,页面跳转,得到信息:
The process has finished
。
并且
tasklist
中刚才的任务项也不存在了。至此,整个工作流程执行完毕。
7)
工作流管理
Jbpm
为我们提供了简单的工作流管理,单击左面菜单栏的
monitoring
进入
monitoring
界面,点击链接
Process Definitions list
,如下:
得到如下界面,这里我们可以看到目前为止所有的工作流定义以及他们所拥有的实例数。通过该图可以得知
Hello World
目前只有一个实例,即我们刚才执行过的那个实例。
我们点击实例数
1
,得到
Hello World
下所有的实例列表,如下图:
我们只初始化过一个实例,因此这里只有一项,
start
和
end
分别表示该实例开始和结束的时间,我们点击前面的
Id
号,查看该实例的详细信息:
其中,
task
列表列出了该实例所有的
task
,其中
name
表示
task
的名字,
actorId
表示由谁执行该
task
,
date
表示该
task
结束的时间。
Variables
列表列出了该
task
中所有的变量及其值。我们在流程定义里只定义了一项变量,因此这里只有
message
,它的值即为刚才输入的内容。我们还可以通过
update
按钮向列表中添加修改变量。
下面的图,即为该流程的流程图。红色的框标明此实例已经结束。
至此,一个简单的工作流就完成了,相信大家从中可以大致的了解
jbpm
定义工组流的基本过程,在后面的章节我们将进一步介绍更多的内容。
分享到:
相关推荐
通过这个“Mule + JBPM by Maven - HelloWorld”项目,开发者不仅可以学习到Mule和JBPM的基本用法,还能了解到如何通过Maven构建和管理项目,以及如何将两个强大的框架集成在一起,实现流程驱动的应用程序开发。...
Simple workflow hello World jBPM
JBPM通过使用XML来定义工作流,这种文件通常以.jpdl.xml为扩展名,就像压缩包中的"helloworld.jpdl.xml"。 在“Hello World”例子中,我们首先会看到"helloworld.jpdl.xml"文件。这个文件是流程定义的载体,它描述...
【Jbpm4HelloWorld】是基于JBPM(Java Business Process Management)框架的入门示例,这个项目旨在帮助初学者快速理解并掌握JBPM的基本用法。JBPM是一个开源的工作流管理系统,它允许开发者设计、执行和管理业务...
#### HelloWorld示例 本案例通过创建一个简单的BPEL文档,演示了从定义BPEL流程、部署流程定义到构建测试客户端的全过程,是初学者理解BPEL基本概念的理想起点。 #### 旅行预订系统 更进一步,旅行预订系统示例...
"HelloWorld"是学习任何新技术时的经典入门示例,Jbpm HelloWorld则是对Jbpm基础功能的初步探索。 在这个项目中,我们将深入理解Jbpm的核心概念和组件,以及如何通过编写简单的代码来实现一个工作流实例。Jbpm的...
### jBPM 4.4 开发环境搭建与 HelloWorld 实例详解 #### 一、jBPM 4.4 开发环境搭建 ##### 1.1 准备所需工具 为了构建一个完整的 jBPM 4.4 开发环境,我们需要准备以下工具: - **jBPM 4.4**: `jbpm-4.4.zip` - **...
【jbpm4之HelloWorld实例】是一个初学者入门教程,主要介绍了如何在Java环境中使用jbpm4(Business Process Management Suite 4)框架构建一个简单的"Hello World"流程应用。jbpm4是一个开源的工作流和业务流程管理...
jbpm4 helloworld,详细参考 《partner4java 讲述jBPM4》之第一步:jBPM4概念 & helloworld http://blog.csdn.net/partner4java
在这个测试类中,我们首先初始化流程引擎,然后通过`createDeployment()`方法创建并部署一个从类路径中读取的"helloworld.jpdl.xml"流程定义文件。部署成功后,我们可以查询当前部署的流程定义,并打印其ID。最后,...
2.2 、Hello World 例子 6 三、学习JPDL 11 3.1 、简介 11 3.2 、流程版本(Version) 11 3.3 、流程定义 12 3.3.1 process-definition(流程定义) 12 3.3.2 node(自动节点) 13 3.3.3 start-state(开始状态) 13 3.3.4...
通过简单的HelloWorld示例介绍如何快速启动并执行一个基本的JBPM流程。 #### 3.2 数据库示例 展示如何将JBPM与数据库集成,持久化流程实例和任务状态。 #### 3.3 上下文示例:流程变量 讲解如何在流程中使用变量,...
本示例主要介绍如何使用Maven3与JBPM4.4集成,并在MySQL数据库环境下实现一个简单的 HelloWorld 应用。JBPM(Java Business Process Management)是一个开源的工作流和业务流程管理系统,它提供了完整的BPM解决方案...
6. **示例项目**:jbpm3通常包含一些入门示例项目,如“hello world”流程。这些示例帮助初学者理解如何创建流程定义、启动流程实例以及执行任务。按照博客中的指导,导入示例项目到IDE(如Eclipse或IntelliJ IDEA)...
3. `helloworld.zip`:可能是一个示例项目或包含更多JBPM4配置和资源的压缩包。 **四、实验与实践** 在学习过程中,通过创建一个名为`com.linjw.helloworld`的项目进行实践是非常常见的。这个项目可能包括一个简单...
1. **HelloWorld**:最基本的示例,演示如何创建和执行一个简单的流程。 2. **TaskService**:展示了如何使用 Task Service API 来管理和完成任务。 3. **HumanTasks**:涵盖与人类参与者交互的业务流程,例如审批...
#### 六、动作:JBoss jBPM集成机制 ##### 6.1 创建Hello World Action 为了更好地理解如何在流程中集成Java代码,可以创建一个简单的“Hello World”Action作为示例。 - **创建Action类**:在Java项目中新建一个...