jBPM学习(六)----Hello World JBPM @net -JavaEye技术社区

来源:百度文库 编辑:神马文学网 时间:2024/04/17 07:46:59
六、开发自己的工作流(Hello World)
1.         eclipse插件安装
jbpm提供了在eclipse下的一个可视化插件,通过它我们可以方便的定义工作流,打开jbpm-starters-kit-3.1.4jbpm-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 代码

xmlns="urn:jbpm.org:jpdl-3.1" name="HelloWorld">





















对照刚才的流程定义,我们很容易可以看出各个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定义工组流的基本过程,在后面的章节我们将进一步介绍更多的内容。