KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > jbpm > graph > node > ProcessStateDbTest


1 package org.jbpm.graph.node;
2
3 import org.jbpm.db.AbstractDbTestCase;
4 import org.jbpm.graph.def.ProcessDefinition;
5 import org.jbpm.jpdl.par.ProcessArchiveDeployer;
6
7 public class ProcessStateDbTest extends AbstractDbTestCase {
8
9   public void testProcessStateName() {
10     ProcessDefinition processDefinition = ProcessDefinition.parseXmlString(
11       "<process-definition>" +
12       " <process-state name='subprocess' />" +
13       "</process-definition>");
14   
15     processDefinition = saveAndReload(processDefinition);
16   
17     ProcessState processState = (ProcessState) processDefinition.getNode("subprocess");
18     assertEquals("subprocess", processState.getName());
19   }
20
21   public void testProcessStateSubProcessDefinition() {
22     // create the subprocess
23
ProcessDefinition subProcessDefinition = new ProcessDefinition("sub");
24     // store the subprocess in the database
25
graphSession.saveProcessDefinition(subProcessDefinition);
26
27     // create the super process
28
ProcessDefinition superProcessDefinition = ProcessDefinition.parseXmlString(
29       "<process-definition name='super'>" +
30       " <process-state name='subprocess' />" +
31       "</process-definition>");
32     // resolve the reference to the subprocess
33
ProcessState processState = (ProcessState) superProcessDefinition.getNode("subprocess");
34     processState.setSubProcessDefinition(subProcessDefinition);
35   
36     // save and reload the superprocess
37
superProcessDefinition = saveAndReload(superProcessDefinition);
38   
39     processState = (ProcessState) superProcessDefinition.getNode("subprocess");
40     assertNotNull("sub", processState.getSubProcessDefinition().getName());
41   }
42
43   public void testProcessStateStartVariableMappings() {
44     ProcessDefinition processDefinition = ProcessDefinition.parseXmlString(
45       "<process-definition>" +
46       " <process-state name='subprocess'>" +
47       " <variable name='startsuperone' access='read,write' mapped-name='startsubone' />" +
48       " <variable name='startsupertwo' access='read,write' mapped-name='startsubtwo' />" +
49       " <variable name='startsuperthree' access='read,write' mapped-name='startsubthree' />" +
50       " </process-state>" +
51       "</process-definition>");
52     
53     processDefinition = saveAndReload(processDefinition);
54
55     ProcessState processState = (ProcessState) processDefinition.getNode("subprocess");
56     assertEquals(3, processState.variableAccesses.size() );
57   }
58
59   public void testSubProcessBindingByVersion() {
60     commitAndCloseSession();
61     ProcessDefinition processDefinition = new ProcessDefinition("the ultimate subprocess");
62     ProcessArchiveDeployer.deployProcessDefinition(processDefinition, getJbpmSessionFactory());
63     beginSessionTransaction();
64     
65     processDefinition = ProcessDefinition.parseXmlString(
66       "<process-definition>" +
67       " <process-state name='the sub process state'>" +
68       " <sub-process name='the ultimate subprocess' version='1' />" +
69       " </process-state>" +
70       "</process-definition>"
71     );
72     processDefinition = saveAndReload(processDefinition);
73
74     ProcessState processState = (ProcessState) processDefinition.getNode("the sub process state");
75     assertEquals("the ultimate subprocess", processState.getSubProcessDefinition().getName() );
76     assertEquals(1, processState.getSubProcessDefinition().getVersion() );
77   }
78
79   public void testSubProcessBindingWithLatestVersion() {
80     commitAndCloseSession();
81     ProcessDefinition processDefinition = new ProcessDefinition("the multiversion subprocess");
82     ProcessArchiveDeployer.deployProcessDefinition(processDefinition, getJbpmSessionFactory());
83     ProcessArchiveDeployer.deployProcessDefinition(processDefinition, getJbpmSessionFactory());
84     ProcessArchiveDeployer.deployProcessDefinition(processDefinition, getJbpmSessionFactory());
85     beginSessionTransaction();
86     
87     processDefinition = ProcessDefinition.parseXmlString(
88       "<process-definition>" +
89       " <process-state name='the sub process state'>" +
90       " <sub-process name='the multiversion subprocess'/>" +
91       " </process-state>" +
92       "</process-definition>"
93     );
94     processDefinition = saveAndReload(processDefinition);
95
96     ProcessState processState = (ProcessState) processDefinition.getNode("the sub process state");
97     assertEquals("the multiversion subprocess", processState.getSubProcessDefinition().getName() );
98     assertEquals(3, processState.getSubProcessDefinition().getVersion() );
99   }
100 }
101
Popular Tags