/* * This Source Code Form is subject to the terms of the Mozilla Public License, v. 2.0. * If a copy of the MPL was not distributed with this file, * You can obtain one at http://mozilla.org/MPL/2.0/. * Copyright (c) 2014, MPL CodeInside http://codeinside.ru */ package ru.codeinside.gses.activiti.forms.api.duration; import org.activiti.engine.repository.ProcessDefinition; import org.activiti.engine.runtime.ProcessInstance; import org.activiti.engine.task.Task; import org.junit.Rule; import org.junit.Test; import ru.codeinside.gses.activiti.InMemoryEngineRule; import java.io.InputStream; import java.util.HashMap; import java.util.Map; import java.util.logging.Logger; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertFalse; import static org.junit.Assert.assertNotNull; import static org.junit.Assert.assertTrue; /** * тесты для исследования возможности получения настроек длительности выполнения этапов и заявок */ public class DurationFormsTest { @Rule final public InMemoryEngineRule engine = new InMemoryEngineRule(); @Test public void testGetDurationRestrictionOnCurrentTask() { deployForm("without_defaults"); // запускаю процесс Map<String, Object> startFormValues = new HashMap<String, Object>(); startFormValues.put("result_systemParams", "any_value"); ProcessInstance processInstance = engine.getProcessEngine().getRuntimeService().startProcessInstanceByKey("duration_test", startFormValues); // получаю текущий этап Task task = engine.getProcessEngine().getTaskService().createTaskQuery().processInstanceId(processInstance.getId()).singleResult(); DurationPreference durationPreference = engine.getFormDefinition(task.getId()).getDurationPreference(); assertTrue(durationPreference.dataExists); assertFalse(durationPreference.workedDays); assertEquals(4, durationPreference.inactiveInterval); assertEquals(6, durationPreference.notificationInterval); assertEquals(8, durationPreference.executionInterval); } @Test public void testGetDefaultDurationRestrictionOnCurrentTask() { deployForm("default_form_restriction"); // запускаю процесс Map<String, Object> startFormValues = new HashMap<String, Object>(); startFormValues.put("result_systemParams", "any_value"); ProcessInstance processInstance = engine.getProcessEngine().getRuntimeService().startProcessInstanceByKey("duration_test", startFormValues); // получаю текущий этап Task task = engine.getProcessEngine().getTaskService().createTaskQuery().processInstanceId(processInstance.getId()).singleResult(); DurationPreference durationPreference = engine.getFormDefinition(task.getId()).getDurationPreference(); // ограничений в задаче нет assertFalse(durationPreference.dataExists); assertFalse(durationPreference.defaultDataExists); assertFalse(durationPreference.workedDays); // получаем по тек. этапу данные о стартовой форме процесса ProcessDefinition def = engine.getRepositoryService().createProcessDefinitionQuery().processDefinitionId(task.getProcessDefinitionId()).singleResult(); DurationPreference duration = engine.getStartFormDefinition(def.getId()).getDurationPreference(); assertTrue(duration.dataExists); assertFalse(duration.workedDays); assertEquals(4, duration.notificationInterval); assertEquals(6, duration.executionInterval); assertTrue(duration.defaultDataExists); assertEquals(5, duration.defaultNotificationInterval); assertEquals(11, duration.defaultExecutionInterval); } @Test public void testGetDurationRestrictionOnStartForm() { deployForm("start_form_restriction"); Logger.getAnonymousLogger().info("get definition"); ProcessDefinition def = engine.getRepositoryService().createProcessDefinitionQuery().processDefinitionKey("duration_test").singleResult(); DurationPreference duration = engine.getStartFormDefinition(def.getId()).getDurationPreference(); assertTrue(duration.dataExists); assertFalse(duration.workedDays); assertEquals(4, duration.notificationInterval); assertEquals(6, duration.executionInterval); assertTrue(duration.defaultDataExists); assertEquals(5, duration.defaultNotificationInterval); assertEquals(11, duration.defaultExecutionInterval); } private void deployForm(String form) { final String resource = "business_calendar/" + form + ".bpmn"; final InputStream is = getClass().getClassLoader().getResourceAsStream(resource); assertNotNull(resource, is); engine.getRepositoryService().createDeployment().addInputStream(resource, is).deploy(); } }