01-07-2013 03:14 AM
package org.bpmwithactiviti.Part1ApplicationTest;
import static org.junit.Assert.*;
import org.activiti.engine.RuntimeService;
import org.activiti.engine.TaskService;
import org.activiti.engine.repository.ProcessDefinition;
import org.activiti.engine.task.Task;
import org.activiti.engine.test.ActivitiRule;
import org.activiti.engine.test.Deployment;
import org.junit.Rule;
import org.junit.Test;
public class XORAdvisorOrNot {
@Rule
public ActivitiRule activitiRule = new ActivitiRule();
@Test
// deploys process with form properties
@Deployment(resources = { "Part1Application.bpmn20.xml" })
public void testProjectDecision() {
// Test with input == true
RuntimeService runtimeService = activitiRule.getRuntimeService();
runtimeService.startProcessInstanceByKey("decideToBeTheAdvisorForTheStudent");
runtimeService.setVariableLocal("requestAccepted", "Do you accepted this request?", "Yes");
TaskService taskService = activitiRule.getTaskService();
Task task = taskService.createTaskQuery().singleResult();
assertEquals("XORAdvisorOrNot", task.getId());
task = taskService.createTaskQuery().singleResult();
assertEquals("PG1a", task.getId());
taskService.complete(task.getId());
// Test with input == false
runtimeService.startProcessInstanceByKey("decideToBeTheAdvisorForTheStudent");
runtimeService.setVariableLocal("requestAccepted", "Do you accepted this request?", "Yes");
task = taskService.createTaskQuery().singleResult();
assertEquals("XORAdvisorOrNot", task.getId());
task = taskService.createTaskQuery().singleResult();
assertEquals("searchAProfessorAsAdvisor", task.getId());
taskService.complete(task.getId());
}
}
Part1Application.bpm20.xml
<userTask id="decideToBeTheAdvisorForTheStudent" name="decide to be the advisor for the student"
activiti:candidateGroups="AdvisorGroup">
<documentation>advisor</documentation>
<extensionElements>
<activiti:formProperty id="requestAccepted"
name="Do you accepted this request?" required="true" type="enum">
<activiti:value id="true" name="Yes" />
<activiti:value id="false" name="No" />
</activiti:formProperty>
<activiti:formProperty id="comments" name="Comments">
</activiti:formProperty>
</extensionElements>
</userTask>
<sequenceFlow id="flow103" name="" sourceRef="decideToBeTheAdvisorForTheStudent" targetRef="XORAdvisorOrNot"> </sequenceFlow>
<exclusiveGateway id="XORAdvisorOrNot" name="" />
<sequenceFlow id="flow104" name="request is accepted" sourceRef="XORAdvisorOrNot" targetRef="PG1a">
<conditionExpression xsi:type="tFormalExpression">${requestAccepted == true}</conditionExpression>
</sequenceFlow>
<sequenceFlow id="flow105" name="request is refused"
sourceRef="XORAdvisorOrNot" targetRef="searchAProfessorAsAdvisor">
<conditionExpression xsi:type="tFormalExpression">${requestAccepted == false}</conditionExpression>
</sequenceFlow>
org.activiti.engine.ActivitiException: no processes deployed with key 'decideToBeTheAdvisorForTheStudent'
at org.activiti.engine.impl.persistence.deploy.DeploymentCache.findDeployedLatestProcessDefinitionByKey(DeploymentCache.java:63)
at org.activiti.engine.impl.cmd.StartProcessInstanceCmd.execute(StartProcessInstanceCmd.java:58)
at org.activiti.engine.impl.cmd.StartProcessInstanceCmd.execute(StartProcessInstanceCmd.java:31)
at org.activiti.engine.impl.interceptor.CommandExecutorImpl.execute(CommandExecutorImpl.java:24)
at org.activiti.engine.impl.interceptor.CommandContextInterceptor.execute(CommandContextInterceptor.java:42)
at org.activiti.engine.impl.interceptor.LogInterceptor.execute(LogInterceptor.java:33)
at org.activiti.engine.impl.RuntimeServiceImpl.startProcessInstanceByKey(RuntimeServiceImpl.java:47)
at org.bpmwithactiviti.Part1ApplicationTest.XORAdvisorOrNot.testProjectDecision(XORAdvisorOrNot.java:35)
…
How can I deploy this user case? What should I change?
01-08-2013 04:20 AM
01-09-2013 03:14 AM
@Rule
//public ActivitiRule activitiRule = new ActivitiRule("activiti.cfg-mem.xml");
public ActivitiRule activitiRule = new ActivitiRule();
@Test
// deploys process with form properties
@Deployment(resources = { "Part1Application.bpmn20.xml" })
public void testProjectDecision() {
// Test with input == true
RuntimeService runtimeService = activitiRule.getRuntimeService();
runtimeService.startProcessInstanceByKey("part1Application");
runtimeService.setVariableLocal("requestAccepted", "Do you accepted this request?", "Yes");
TaskService taskService = activitiRule.getTaskService();
Task task = taskService.createTaskQuery().singleResult();
assertEquals("XORAdvisorOrNot", task.getId());
task = taskService.createTaskQuery().singleResult();
assertEquals("PG1a", task.getId());
taskService.complete(task.getId());
// Test with input == false
runtimeService.startProcessInstanceByKey("part1Application");
runtimeService.setVariableLocal("requestAccepted", "Do you accepted this request?", "Yes");
task = taskService.createTaskQuery().singleResult();
assertEquals("XORAdvisorOrNot", task.getId());
task = taskService.createTaskQuery().singleResult();
assertEquals("searchAProfessorAsAdvisor", task.getId());
taskService.complete(task.getId());
}
}
<process id="part1Application">
<startEvent id="start">
<extensionElements>
<activiti:formProperty id="studentName" name="Studenten Name"
required="true" type="string" />
<activiti:formProperty id="emailAddress" name="Email address"
required="true" type="string" />
<activiti:formProperty id="dateFrom" name="Date from"
required="true" type="long" />
<activiti:formProperty id="dateToo" name="Date too"
required="true" type="long" />
<activiti:formProperty id="homeCountry" name="Home Country"
required="true" type="string" />
<activiti:formProperty id="homeUniversity"
name="Home University" required="true" type="string" />
<activiti:formProperty id="homeDepartment"
name="Home Department" required="true" type="string" />
<activiti:formProperty id="targetUniversity"
name="Target University" required="true" type="string" />
<activiti:formProperty id="targetDepartment"
name="Target Department" required="true" type="string" />
<activiti:formProperty id="research" name="Research"
required="true" type="string" />
<activiti:formProperty id="courseEnrollment"
name="Course Enrollment" required="true" type="string" />
<activiti:formProperty id="project" name="With project"
required="true" type="boolean" />
</extensionElements>
</startEvent>
<sequenceFlow id="flow114" sourceRef="start" targetRef="createRequest"></sequenceFlow>
<serviceTask id="createRequest" name="Create Request"
activiti:class="org.process1.CreateStudentApp"></serviceTask>
<sequenceFlow id="flow129" sourceRef="createRequest"
targetRef="PG1aa"></sequenceFlow>
<parallelGateway id="PG1aa" name=""></parallelGateway>
<sequenceFlow id="flow116" name="" sourceRef="PG1aa"
targetRef="requestOfEnrollingIsGivenToTheChairman"></sequenceFlow>
<userTask id="requestOfEnrollingIsGivenToTheChairman" name="request of enrolling is given to the chairman"
activiti:candidateGroups="DoEE C">
<documentation>chairman</documentation>
</userTask>
<sequenceFlow id="flow117" name=""
sourceRef="requestOfEnrollingIsGivenToTheChairman" targetRef="sendInformationToTheOoEE"></sequenceFlow>
<userTask id="sendInformationToTheOoEE"
name="send information to the office of electrical engineering"
activiti:candidateGroups="DoEE C">
<documentation>chairman</documentation>
</userTask>
<sequenceFlow id="flow68" sourceRef="sendInformationToTheOoEE"
targetRef="PG1bb"></sequenceFlow>
<!– XOR Project or not –>
<sequenceFlow id="flow115" name="" sourceRef="PG1aa"
targetRef="XORAProjectOrNot"></sequenceFlow>
<exclusiveGateway id="XORAProjectOrNot" name="" />
<sequenceFlow id="flow63" name="Project" sourceRef="XORAProjectOrNot"
targetRef="sendInformationsFromTheProfessors">
<conditionExpression xsi:type="tFormalExpression">${StudentAppInfo.project == true}</conditionExpression>
</sequenceFlow>
<sequenceFlow id="flow69" name="No Project" sourceRef="XORAProjectOrNot"
targetRef="XORBProjectOrNot">
<conditionExpression xsi:type="tFormalExpression">${StudentAppInfo.project == false}</conditionExpression>
</sequenceFlow>
<!– Send a email with a list of advisor to the student –>
<userTask id="sendInformationsFromTheProfessors" name="send informations from the professors"
activiti:candidateGroups="DoEE O">
<extensionElements>
<activiti:formProperty id="advisorList" name="Advisors"/>
</extensionElements>
</userTask>
<sequenceFlow id="flow1" name=""
sourceRef="sendInformationsFromTheProfessors" targetRef="searchAProfessorAsAdvisor"></sequenceFlow>
<userTask id="searchAProfessorAsAdvisor" name="search a professor as advisor"
activiti:candidateGroups="student">
<documentation>Student</documentation>
<extensionElements>
<!– displays the customer name and set field to read-only –>
<activiti:formProperty id="advisorList" name="List of advisors"
expression="${advisorList}" writable="false" />
<activiti:formProperty id="advisorName" name="Advisor"/>
</extensionElements>
</userTask>
<sequenceFlow id="flow2" name="" sourceRef="searchAProfessorAsAdvisor"
targetRef="askTheProfessorIfHeWouldBeAdvisor"></sequenceFlow>
<userTask id="askTheProfessorIfHeWouldBeAdvisor" name="ask the professor if he would be advisor"
activiti:candidateGroups="student">
<documentation>Student</documentation>
</userTask>
<sequenceFlow id="flow102" name=""
sourceRef="askTheProfessorIfHeWouldBeAdvisor" targetRef="decideToBeTheAdvisorForTheStudent"></sequenceFlow>
<userTask id="decideToBeTheAdvisorForTheStudent" name="decide to be the advisor for the student"
activiti:candidateGroups="AdvisorGroup">
<documentation>advisor</documentation>
<extensionElements>
<!– displays the customer name and set field to read-only –>
<activiti:formProperty id="studentName" name="Student name"
expression="${StudentAppInfo.studentName}" writable="false" />
<activiti:formProperty id="homeCountry" name="Home Country"
expression="StudentAppInfo.homeCountry" writable="false" />
<activiti:formProperty id="research" name="Research"
expression="StudentAppInfo.research" writable="false" />
<activiti:formProperty id="dateFrom" name="Date from"
expression="StudentAppInfo.dateFrom" writable="false" />
<activiti:formProperty id="dateToo" name="Date too"
expression="StudentAppInfo.dateToo" writable="false" />
<activiti:formProperty id="homeUniversity"
name="Home University" expression="StudentAppInfo.homeUniversity"
writable="false" />
<activiti:formProperty id="homeDepartment"
name="Home Department" expression="StudentAppInfo.homeDepartment"
writable="false" />
<!– Defines new requestApproved process variable –>
<activiti:formProperty id="requestAccepted"
name="Do you accepted this request?" required="true" type="enum">
<activiti:value id="true" name="Yes" />
<activiti:value id="false" name="No" />
</activiti:formProperty>
<activiti:formProperty id="comments" name="Comments"/>
</extensionElements>
</userTask>
<sequenceFlow id="flow103" name=""
sourceRef="decideToBeTheAdvisorForTheStudent" targetRef="XORAdvisorOrNot"></sequenceFlow>
<exclusiveGateway id="XORAdvisorOrNot" name="" />
<sequenceFlow id="flow104" name="request is accepted"
sourceRef="XORAdvisorOrNot" targetRef="PG1a">
<conditionExpression xsi:type="tFormalExpression">${requestAccepted
== true}</conditionExpression>
</sequenceFlow>
<sequenceFlow id="flow105" name="request is refused"
sourceRef="XORAdvisorOrNot" targetRef="searchAProfessorAsAdvisor">
<conditionExpression xsi:type="tFormalExpression">${requestAccepted
== false}</conditionExpression>
</sequenceFlow>
<parallelGateway id="PG1a" name=""></parallelGateway>
<sequenceFlow id="flow61" name="" sourceRef="PG1a"
targetRef="sendThisInfoToTheChairman"></sequenceFlow>
<sequenceFlow id="flow106" name="" sourceRef="PG1a"
targetRef="sendInfoToTheOoEE"></sequenceFlow>
<userTask id="sendThisInfoToTheChairman" name="send this information to the chairman"
activiti:candidateGroups="AdvisorGroup">
<documentation>advisor</documentation>
</userTask>
<sequenceFlow id="flow7" name="" sourceRef="sendThisInfoToTheChairman"
targetRef="PG1b"></sequenceFlow>
<userTask id="sendInfoToTheOoEE" name="send info to the Office of EE" activiti:candidateGroups="AdvisorGroup">
<documentation>advisor</documentation>
<documentation>chairman</documentation>
</userTask>
<sequenceFlow id="flow107" name="" sourceRef="sendInfoToTheOoEE"
targetRef="PG1b"></sequenceFlow>
<parallelGateway id="PG1b" name=""></parallelGateway>
<sequenceFlow id="flow124" name="" sourceRef="PG1b"
targetRef="XORBProjectOrNot"></sequenceFlow>
<exclusiveGateway id="XORBProjectOrNot" name=""></exclusiveGateway>
<sequenceFlow id="flow125" name="" sourceRef="XORBProjectOrNot"
targetRef="PG1bb"></sequenceFlow>
<parallelGateway id="PG1bb" name=""></parallelGateway>
<sequenceFlow id="flow126" name="" sourceRef="PG1bb"
targetRef="certificateTheEnrollingOfTheUniversity"></sequenceFlow>
<userTask id="certificateTheEnrollingOfTheUniversity" name="certificate the enrolling of the university"
activiti:candidateGroups="DoEE C">
<documentation>chairman</documentation>
</userTask>
<sequenceFlow id="flow71" sourceRef="certificateTheEnrollingOfTheUniversity" targetRef="studentGetTheCertificate"></sequenceFlow>
<userTask id="studentGetTheCertificate" name="student get the certificate" activiti:candidateGroups="student">
<documentation>Student</documentation>
</userTask>
<sequenceFlow id="flow130" sourceRef="studentGetTheCertificate" targetRef= "end"></sequenceFlow>
<endEvent id="end" />
</process>
</definitions>
01-09-2013 03:39 AM
01-10-2013 07:42 AM
01-10-2013 07:55 AM
Tags
Find what you came for
We want to make your experience in Hyland Connect as valuable as possible, so we put together some helpful links.