package org.activiti.standalone.cfg; import java.util.List; import java.util.Map; import org.activiti.engine.impl.cmd.AbstractCustomSqlExecution; import org.activiti.engine.impl.cmd.CustomSqlExecution; import org.activiti.engine.impl.test.ResourceActivitiTestCase; import org.activiti.engine.task.Task; /** * @author jbarrez */ public class CustomMybatisMapperTest extends ResourceActivitiTestCase { public CustomMybatisMapperTest() { super("org/activiti/standalone/cfg/custom-mybatis-mappers-activiti.cfg.xml"); } public void testSelectTaskColumns() { // Create test data for (int i=0; i<5; i++) { Task task = taskService.newTask(); task.setName(i + ""); taskService.saveTask(task); } // Fetch the columns we're interested in CustomSqlExecution<MyTestMapper, List<Map<String, Object>>> customSqlExecution = new AbstractCustomSqlExecution<MyTestMapper, List<Map<String, Object>>>(MyTestMapper.class) { public List<Map<String, Object>> execute(MyTestMapper customMapper) { return customMapper.selectTasks(); } }; // Verify List<Map<String, Object>> tasks = managementService.executeCustomSql(customSqlExecution); assertEquals(5, tasks.size()); for (int i=0; i<5; i++) { Map<String, Object> task = tasks.get(i); assertNotNull(getResultObject("ID", task)); assertNotNull(getResultObject("NAME", task)); assertNotNull(getResultObject("CREATETIME", task)); } // Cleanup for (Task task : taskService.createTaskQuery().list()) { taskService.deleteTask(task.getId()); historyService.deleteHistoricTaskInstance(task.getId()); } } public void testFetchTaskWithSpecificVariable() { // Create test data for (int i=0; i<5; i++) { Task task = taskService.newTask(); task.setName(i + ""); taskService.saveTask(task); taskService.setVariable(task.getId(), "myVar", Long.valueOf(task.getId()) * 2); taskService.setVariable(task.getId(), "myVar2", "SomeOtherValue"); } // Fetch data with custom query CustomSqlExecution<MyTestMapper, List<Map<String, Object>>> customSqlExecution = new AbstractCustomSqlExecution<MyTestMapper, List<Map<String, Object>>>(MyTestMapper.class) { public List<Map<String, Object>> execute(MyTestMapper customMapper) { return customMapper.selectTaskWithSpecificVariable("myVar"); } }; // Verify List<Map<String, Object>> results = managementService.executeCustomSql(customSqlExecution); assertEquals(5, results.size()); for (int i=0; i<5; i++) { Map<String, Object> result = results.get(i); Long id = Long.valueOf((String) getResultObject("TASKID", result)); Long variableValue = ((Number) getResultObject("VARIABLEVALUE", result)).longValue(); assertEquals(id * 2, variableValue.longValue()); } // Cleanup for (Task task : taskService.createTaskQuery().list()) { taskService.deleteTask(task.getId()); historyService.deleteHistoricTaskInstance(task.getId()); } } protected Object getResultObject(String key, Map<String, Object> result) { Object resultObject = result.get(key); if (resultObject == null) { // postgresql requires lower case resultObject = result.get(key.toLowerCase()); } return resultObject; } }