首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网站开发 > Web前端 >

JavaWeb Project 中使用JBPM,使用JUnit 四

2013-11-16 
JavaWeb Project 中使用JBPM,使用JUnit 4?2.?3.?PS:gpd.xml文件可能会报错,不用管,编码问题而已,也不需要

JavaWeb Project 中使用JBPM,使用JUnit 4

?

2.
JavaWeb Project 中使用JBPM,使用JUnit 四
?

3.
JavaWeb Project 中使用JBPM,使用JUnit 四
?

PS:gpd.xml文件可能会报错,不用管,编码问题而已,也不需要打开查看。

?

4.打开processdefinition.xml文件。开始画流程图

?

5.流程图的一些解释。

JavaWeb Project 中使用JBPM,使用JUnit 四
?
JavaWeb Project 中使用JBPM,使用JUnit 四
?

6.员工申请报销 流程的设置

Description那里写的是 staff.apply

JavaWeb Project 中使用JBPM,使用JUnit 四
?
JavaWeb Project 中使用JBPM,使用JUnit 四
?Assignment是指分派任务,Actor有可以指定作用域或者直接指定人名,例如Jack。

?

7.部门经理审批 的流程设置

Description那里写的是 manager.approve

JavaWeb Project 中使用JBPM,使用JUnit 四

JavaWeb Project 中使用JBPM,使用JUnit 四
?
JavaWeb Project 中使用JBPM,使用JUnit 四
?

这次的分配任务交给一个Java类来处理,选择Handler,这个类要实现AssignmentHandler这个接口。

?

8.财务审批 流程的设置


JavaWeb Project 中使用JBPM,使用JUnit 四
?
JavaWeb Project 中使用JBPM,使用JUnit 四
?
JavaWeb Project 中使用JBPM,使用JUnit 四
?这里也是直接指定财务人。

?

9.通知员工 的流程设置


JavaWeb Project 中使用JBPM,使用JUnit 四
?
JavaWeb Project 中使用JBPM,使用JUnit 四
?
JavaWeb Project 中使用JBPM,使用JUnit 四
?

这里的Actor所指定的角色必须要和 员工申请报销 流程里的Actor所指定的角色一样。

?

10.当设置好流程图的属性的时候,就可以开始部署了。


JavaWeb Project 中使用JBPM,使用JUnit 四
?

输入一个名字,然后按打开就行了。
JavaWeb Project 中使用JBPM,使用JUnit 四
?

接着,点击Save Without Deploying... 这个按钮,你就发现你所选择的目录里会多了一个.zip压缩包。

?

11.此时,需要一个Java类,把流程图的属性写入到数据库中

package org.jbpm.test;import java.util.List;import org.jbpm.JbpmConfiguration;import org.jbpm.JbpmContext;import org.jbpm.context.exe.ContextInstance;import org.jbpm.graph.def.ProcessDefinition;import org.jbpm.graph.exe.ProcessInstance;import org.jbpm.taskmgmt.exe.TaskInstance;import org.junit.BeforeClass;import org.junit.Test;/** * 测试员工报销 *  * @author miao *  */public class TestApplyMoney {@BeforeClasspublic static void setUpBeforeClass() throws Exception {}@Testpublic void testProcess() {// 1.员工提交申请submitForm("user1");// 2.部门经理审核//managerApprove("manager1");// 3.财务拨款//cashierApprove("ali");// 4.员工领款//getMoney("user1");}/** * 1.添加员工提交申请 *  * @param actorId */public void submitForm(String actorId) {JbpmContext jbpmContext = JbpmConfiguration.getInstance().createJbpmContext();try {ProcessDefinition pd = jbpmContext.getGraphSession().findLatestProcessDefinition("applyMoney");ProcessInstance pi = pd.createProcessInstance();ContextInstance ci = pi.getContextInstance();jbpmContext.setActorId(actorId);ci.setVariable("issueperson", actorId);TaskInstance ti = pi.getTaskMgmtInstance().createStartTaskInstance();ti.end();} catch (Exception e) {e.printStackTrace();} finally {jbpmContext.close();}}/** * 2.部门经理审批 *  * @param actorId */public void managerApprove(String actorId) {JbpmContext jbpmContext = JbpmConfiguration.getInstance().createJbpmContext();try {@SuppressWarnings("unchecked")List<TaskInstance> list = jbpmContext.getTaskList(actorId);for (TaskInstance taskInstance : list) {taskInstance.end();}} catch (Exception e) {e.printStackTrace();} finally {jbpmContext.close();}}/** * 3.财务拨款 *  * @param actorId */public void cashierApprove(String actorId) {JbpmContext jbpmContext = JbpmConfiguration.getInstance().createJbpmContext();try {@SuppressWarnings("unchecked")List<TaskInstance> list = jbpmContext.getTaskList(actorId);for (TaskInstance taskInstance : list) {taskInstance.end();}} catch (Exception e) {e.printStackTrace();} finally {jbpmContext.close();}}/** * 4.员工领款 *  * @param actorId */public void getMoney(String actorId) {JbpmContext jbpmContext = JbpmConfiguration.getInstance().createJbpmContext();try {@SuppressWarnings("unchecked")List<TaskInstance> list = jbpmContext.getTaskList(actorId);for (TaskInstance taskInstance : list) {taskInstance.end();}} catch (Exception e) {e.printStackTrace();} finally {jbpmContext.close();}}}

?

每测试一个方法,就会在数据库中的 JBPM_TASKINSTANCE 表看见相应的数据。

?

六、demo(该例子中也包含复杂一点的流程处理,带分支判断,流程开始时不带任务人)

E276-JBPM.zip

热点排行