/* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.activiti.engine.test.bpmn;
import java.io.Serializable;
import java.util.HashMap;
import java.util.Map;
import org.activiti.engine.delegate.DelegateExecution;
import org.activiti.engine.delegate.JavaDelegate;
import org.activiti.engine.impl.persistence.entity.ExecutionEntity;
import org.activiti.engine.impl.test.PluggableActivitiTestCase;
import org.activiti.engine.runtime.ProcessInstance;
import org.activiti.engine.test.Deployment;
/**
* @author Joram Barrez
*/
public class StartToEndTest extends PluggableActivitiTestCase {
@Deployment
public void testStartToEnd() {
ProcessInstance processInstance = runtimeService.startProcessInstanceByKey("startToEnd");
assertProcessEnded(processInstance.getId());
assertTrue(processInstance.isEnded());
}
@Deployment(resources={"org/activiti/engine/test/bpmn/StartToEndTest.testStartToEnd.bpmn20.xml"})
public void testStartProcessInstanceWithVariables() {
Map<String, Object> varMap = new HashMap<String, Object>();
varMap.put("test", "hello");
ProcessInstance processInstance = runtimeService.startProcessInstanceByKey("startToEnd", varMap);
assertProcessEnded(processInstance.getId());
Map<String, Object> returnVarMap = ((ExecutionEntity) processInstance).getVariableValues();
assertEquals("hello", returnVarMap.get("test"));
}
@Deployment(resources={"org/activiti/engine/test/bpmn/StartToEndTest.testStartWithServiceTask.bpmn20.xml"})
public void testStartProcessInstanceWithServiceTask() {
Map<String, Object> varMap = new HashMap<String, Object>();
varMap.put("test", "hello");
ProcessInstance processInstance = runtimeService.startProcessInstanceByKey("startToEnd", varMap);
assertProcessEnded(processInstance.getId());
Map<String, Object> returnVarMap = ((ExecutionEntity) processInstance).getVariableValues();
assertEquals("hello", returnVarMap.get("test"));
assertEquals("string", returnVarMap.get("string"));
assertEquals(true, returnVarMap.get("boolean"));
assertEquals(25.5, returnVarMap.get("double"));
assertEquals(10L, returnVarMap.get("long"));
}
@Deployment(resources={"org/activiti/engine/test/bpmn/StartToEndTest.testStartWithSerializableVariables.bpmn20.xml"})
public void testStartProcessInstanceWithSerializbleVariables() {
Map<String, Object> varMap = new HashMap<String, Object>();
varMap.put("test", "hello");
ProcessInstance processInstance = runtimeService.startProcessInstanceByKey("startToEnd", varMap);
assertProcessEnded(processInstance.getId());
Map<String, Object> returnVarMap = ((ExecutionEntity) processInstance).getVariableValues();
assertEquals("hello", returnVarMap.get("test"));
Person person1 = (Person) returnVarMap.get("person1");
assertEquals("1", person1.getId());
assertEquals("John", person1.getName());
Person person2 = (Person) returnVarMap.get("person2");
assertEquals("2", person2.getId());
assertEquals("Paul", person2.getName());
}
public static class PrimitiveServiceTaskDelegate implements JavaDelegate {
@Override
public void execute(DelegateExecution execution) throws Exception {
execution.setVariable("string", "string");
execution.setVariable("boolean", true);
execution.setVariable("double", 25.5);
execution.setVariable("long", 10L);
}
}
public static class SerializableServiceTaskDelegate implements JavaDelegate {
@Override
public void execute(DelegateExecution execution) throws Exception {
execution.setVariable("person1", new Person("1", "John"));
execution.setVariable("person2", new Person("2", "Paul"));
}
}
public static class Person implements Serializable {
private static final long serialVersionUID = 1L;
protected String id;
protected String name;
public Person(String id, String name) {
this.id = id;
this.name = name;
}
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
}