📄 taskassignmenttest.java
字号:
package com.sample;
import junit.framework.TestCase;
import org.jbpm.graph.def.ProcessDefinition;
import org.jbpm.graph.exe.ProcessInstance;
import org.jbpm.graph.exe.Token;
import org.jbpm.taskmgmt.exe.TaskInstance;
public class TaskAssignmentTest extends TestCase {
public void testTaskAssignment() {
// 下面显示的流程基于hello world流程的.状态节点被任务节点替换.
// 任务节点在JPDL中代表在流程继续执行前的等待状态和生成将要完成的任务的一个结点
ProcessDefinition processDefinition = ProcessDefinition
.parseXmlString("<process-definition name='the baby process'>"
+ " <start-state>"
+ " <transition name='baby cries' to='t' />"
+ " </start-state>"
+ " <task-node name='t'>"
+ " <task name='change nappy'>"
+ " <assignment class='com.lixineng.jbpm.NappyAssignmentHandler' />"
+ " </task>" + " <transition to='end' />"
+ " </task-node>" + " <end-state name='end' />"
+ "</process-definition>");
// 建立一个流程定义的执行
ProcessInstance processInstance = new ProcessInstance(processDefinition);
Token token = processInstance.getRootToken();
// 让我们开始流程执行,通过缺省的流程转向离开开始状态(start-state)
token.signal();
// 信号将阻塞流程执行,并进入等待状态,在本例中,也就是任务结点(task-node).
assertSame(processDefinition.getNode("t"), token.getNode());
// 当流程执行到任务结点时,任务"换尿布"被创建了,并且 NappyAssignmentHandler 被调用
// 来检查任务应该分配给谁. NappyAssignmentHandler 返回 'papa'.
// 在真实的环境中,任务将由 org.jbpm.db.TaskMgmtSession 类中的方法从数据库中被捕获.
// 因为我们不想将持久化的复杂性引入此例,我们只是处理流程实例的第一个任务实例
// (我们知道在测试环境中也只有一个)
TaskInstance taskInstance = (TaskInstance) processInstance
.getTaskMgmtInstance().getTaskInstances().iterator().next();
// 现在我们检查任务实例是否真正的赋给了 'papa'.
assertEquals("papa", taskInstance.getActorId());
// 现在我们假设爸爸已经完成了任务并标记任务完成了
taskInstance.end();
// 由于这是上一个任务要做的,任务触发继续流程实例执行.
assertSame(processDefinition.getNode("end"), token.getNode());
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -