/* 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.crystalball.simulator.impl.playback; import org.activiti.crystalball.simulator.impl.EventRecorderTestUtils; import org.activiti.engine.RepositoryService; import org.activiti.engine.history.HistoricProcessInstance; import org.activiti.engine.history.HistoricTaskInstance; import org.activiti.engine.repository.ProcessDefinition; import org.activiti.engine.task.Task; import org.activiti.engine.test.Deployment; import java.util.HashMap; import java.util.List; import java.util.Map; import static org.apache.commons.lang3.StringUtils.startsWith; /** * @author martin.grofcik */ public class PlaybackProcessStartTest extends AbstractPlaybackTest { public static final String SIMPLEST_PROCESS = "theSimplestProcess"; public static final String BUSINESS_KEY = "testBusinessKey"; public static final String TEST_VALUE = "TestValue"; public static final String TEST_VARIABLE = "testVariable"; @CheckStatus(methodName = "demoCheckStatus") @Deployment public void testDemo() { Map<String, Object> variables = new HashMap<String, Object>(); variables.put(TEST_VARIABLE, TEST_VALUE); processEngine.getRuntimeService().startProcessInstanceByKey(SIMPLEST_PROCESS, BUSINESS_KEY, variables); } public void demoCheckStatus() { final HistoricProcessInstance historicProcessInstance = historyService.createHistoricProcessInstanceQuery(). finished(). includeProcessVariables(). singleResult(); assertNotNull(historicProcessInstance); RepositoryService repositoryService = processEngine.getRepositoryService(); final ProcessDefinition processDefinition = repositoryService.createProcessDefinitionQuery(). processDefinitionId(historicProcessInstance.getProcessDefinitionId()). singleResult(); assertEquals(SIMPLEST_PROCESS, processDefinition.getKey()); assertEquals(1, historicProcessInstance.getProcessVariables().size()); assertEquals(TEST_VALUE, historicProcessInstance.getProcessVariables().get(TEST_VARIABLE)); assertEquals(BUSINESS_KEY, historicProcessInstance.getBusinessKey()); } @CheckStatus(methodName = "messageProcessStartCheckStatus") @Deployment public void testMessageProcessStart() { runtimeService.startProcessInstanceByMessage("startProcessMessage"); } public void messageProcessStartCheckStatus() { final HistoricProcessInstance historicProcessInstance = historyService.createHistoricProcessInstanceQuery(). finished(). singleResult(); assertNotNull(historicProcessInstance); assertTrue(startsWith(historicProcessInstance.getProcessDefinitionId(), "messageStartEventProcess")); } @Deployment @CheckStatus(methodName = "checkStatus") public void testSignals() throws Exception { runtimeService.startProcessInstanceByKey("catchSignal"); EventRecorderTestUtils.increaseTime(this.processEngineConfiguration.getClock()); runtimeService.startProcessInstanceByKey("throwSignal"); } public void checkStatus() { final List<HistoricProcessInstance> historicProcessInstances = historyService.createHistoricProcessInstanceQuery(). finished(). list(); assertNotNull(historicProcessInstances); assertEquals(2, historicProcessInstances.size()); } @Deployment @CheckStatus(methodName = "userTaskCheckStatus") public void testUserTask() throws Exception { runtimeService.startProcessInstanceByKey("oneTaskProcess", "oneTaskProcessBusinessKey"); Task task = taskService.createTaskQuery().taskDefinitionKey("userTask").singleResult(); EventRecorderTestUtils.increaseTime(processEngineConfiguration.getClock()); taskService.complete(task.getId()); } public void userTaskCheckStatus() { final HistoricProcessInstance historicProcessInstance = historyService.createHistoricProcessInstanceQuery(). finished(). singleResult(); assertNotNull(historicProcessInstance); assertEquals("oneTaskProcessBusinessKey", historicProcessInstance.getBusinessKey()); HistoricTaskInstance historicTaskInstance = historyService.createHistoricTaskInstanceQuery().taskDefinitionKey("userTask").singleResult(); assertEquals("user1", historicTaskInstance.getAssignee()); } }