Repository: syncope Updated Branches: refs/heads/1_2_X 254a7b632 -> 949d2e62e
[SYNCOPE-769] Better fix for SYNCOPE-735, which avoids writing useless history entries rather than cleaning them up afterwards Project: http://git-wip-us.apache.org/repos/asf/syncope/repo Commit: http://git-wip-us.apache.org/repos/asf/syncope/commit/949d2e62 Tree: http://git-wip-us.apache.org/repos/asf/syncope/tree/949d2e62 Diff: http://git-wip-us.apache.org/repos/asf/syncope/diff/949d2e62 Branch: refs/heads/1_2_X Commit: 949d2e62e6dcdbe7f86854c75ac482c028f8134a Parents: 254a7b6 Author: Francesco Chicchiriccò <[email protected]> Authored: Thu Feb 18 16:23:53 2016 +0100 Committer: Francesco Chicchiriccò <[email protected]> Committed: Thu Feb 18 16:23:53 2016 +0100 ---------------------------------------------------------------------- .../common/services/UserWorkflowService.java | 13 ----- .../rest/controller/UserWorkflowController.java | 7 --- .../core/services/UserWorkflowServiceImpl.java | 5 -- .../syncope/core/workflow/WorkflowAdapter.java | 9 --- .../workflow/role/NoOpRoleWorkflowAdapter.java | 5 -- .../workflow/user/NoOpUserWorkflowAdapter.java | 5 -- .../activiti/ActivitiUserWorkflowAdapter.java | 58 -------------------- core/src/main/resources/workflow.properties | 1 + core/src/main/resources/workflowContext.xml | 1 + .../core/rest/UserWorkflowTestITCase.java | 39 ++----------- 10 files changed, 6 insertions(+), 137 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/syncope/blob/949d2e62/common/src/main/java/org/apache/syncope/common/services/UserWorkflowService.java ---------------------------------------------------------------------- diff --git a/common/src/main/java/org/apache/syncope/common/services/UserWorkflowService.java b/common/src/main/java/org/apache/syncope/common/services/UserWorkflowService.java index c3f7721..562789c 100644 --- a/common/src/main/java/org/apache/syncope/common/services/UserWorkflowService.java +++ b/common/src/main/java/org/apache/syncope/common/services/UserWorkflowService.java @@ -49,19 +49,6 @@ public interface UserWorkflowService extends JAXRSService { List<WorkflowFormTO> getForms(); /** - * Returns a list of all available workflow forms with matching name, for the given user id. - * - * @param userId user id - * @param name form name - * @return list of all available workflow forms with matching name, fir the given user id. - */ - @GET - @Path("forms/{userId}/{name}") - @Produces({ MediaType.APPLICATION_XML, MediaType.APPLICATION_JSON }) - List<WorkflowFormTO> getFormsByName( - @NotNull @PathParam("userId") final Long userId, @NotNull @PathParam("name") final String name); - - /** * Returns a list of available forms for the given user id. * * @param userId user id http://git-wip-us.apache.org/repos/asf/syncope/blob/949d2e62/core/src/main/java/org/apache/syncope/core/rest/controller/UserWorkflowController.java ---------------------------------------------------------------------- diff --git a/core/src/main/java/org/apache/syncope/core/rest/controller/UserWorkflowController.java b/core/src/main/java/org/apache/syncope/core/rest/controller/UserWorkflowController.java index 933d6a5..b7270ab 100644 --- a/core/src/main/java/org/apache/syncope/core/rest/controller/UserWorkflowController.java +++ b/core/src/main/java/org/apache/syncope/core/rest/controller/UserWorkflowController.java @@ -89,13 +89,6 @@ public class UserWorkflowController extends AbstractTransactionalController<Work return uwfAdapter.getForms(); } - @PreAuthorize("hasRole('WORKFLOW_FORM_READ') and hasRole('USER_READ')") - @Transactional(rollbackFor = { Throwable.class }) - public List<WorkflowFormTO> getForms(final Long userId, final String formName) { - SyncopeUser user = binder.getUserFromId(userId); - return uwfAdapter.getForms(user.getWorkflowId(), formName); - } - @PreAuthorize("hasRole('WORKFLOW_FORM_SUBMIT')") @Transactional(rollbackFor = { Throwable.class }) public UserTO submitForm(final WorkflowFormTO form) { http://git-wip-us.apache.org/repos/asf/syncope/blob/949d2e62/core/src/main/java/org/apache/syncope/core/services/UserWorkflowServiceImpl.java ---------------------------------------------------------------------- diff --git a/core/src/main/java/org/apache/syncope/core/services/UserWorkflowServiceImpl.java b/core/src/main/java/org/apache/syncope/core/services/UserWorkflowServiceImpl.java index 5e78fb3..a8ae181 100644 --- a/core/src/main/java/org/apache/syncope/core/services/UserWorkflowServiceImpl.java +++ b/core/src/main/java/org/apache/syncope/core/services/UserWorkflowServiceImpl.java @@ -57,9 +57,4 @@ public class UserWorkflowServiceImpl implements UserWorkflowService { public UserTO submitForm(final WorkflowFormTO form) { return controller.submitForm(form); } - - @Override - public List<WorkflowFormTO> getFormsByName(final Long userId, final String taskName) { - return controller.getForms(userId, taskName); - } } http://git-wip-us.apache.org/repos/asf/syncope/blob/949d2e62/core/src/main/java/org/apache/syncope/core/workflow/WorkflowAdapter.java ---------------------------------------------------------------------- diff --git a/core/src/main/java/org/apache/syncope/core/workflow/WorkflowAdapter.java b/core/src/main/java/org/apache/syncope/core/workflow/WorkflowAdapter.java index b5cf7d1..aa185eb 100644 --- a/core/src/main/java/org/apache/syncope/core/workflow/WorkflowAdapter.java +++ b/core/src/main/java/org/apache/syncope/core/workflow/WorkflowAdapter.java @@ -69,15 +69,6 @@ public interface WorkflowAdapter { List<WorkflowFormTO> getForms(); /** - * Gets all forms with the given name for the given workflowId(include historical forms). - * - * @param workflowId workflow id. - * @param name form name. - * @return forms (if present), otherwise an empty list. - */ - List<WorkflowFormTO> getForms(String workflowId, String name); - - /** * Get form for given workflowId (if present). * * @param workflowId workflow id http://git-wip-us.apache.org/repos/asf/syncope/blob/949d2e62/core/src/main/java/org/apache/syncope/core/workflow/role/NoOpRoleWorkflowAdapter.java ---------------------------------------------------------------------- diff --git a/core/src/main/java/org/apache/syncope/core/workflow/role/NoOpRoleWorkflowAdapter.java b/core/src/main/java/org/apache/syncope/core/workflow/role/NoOpRoleWorkflowAdapter.java index fa648ba..5519853 100644 --- a/core/src/main/java/org/apache/syncope/core/workflow/role/NoOpRoleWorkflowAdapter.java +++ b/core/src/main/java/org/apache/syncope/core/workflow/role/NoOpRoleWorkflowAdapter.java @@ -105,11 +105,6 @@ public class NoOpRoleWorkflowAdapter extends AbstractRoleWorkflowAdapter { } @Override - public List<WorkflowFormTO> getForms(final String workflowId, final String name) { - return Collections.emptyList(); - } - - @Override public WorkflowFormTO getForm(final String workflowId) throws NotFoundException, WorkflowException { http://git-wip-us.apache.org/repos/asf/syncope/blob/949d2e62/core/src/main/java/org/apache/syncope/core/workflow/user/NoOpUserWorkflowAdapter.java ---------------------------------------------------------------------- diff --git a/core/src/main/java/org/apache/syncope/core/workflow/user/NoOpUserWorkflowAdapter.java b/core/src/main/java/org/apache/syncope/core/workflow/user/NoOpUserWorkflowAdapter.java index 83924e4..c3e22b1 100644 --- a/core/src/main/java/org/apache/syncope/core/workflow/user/NoOpUserWorkflowAdapter.java +++ b/core/src/main/java/org/apache/syncope/core/workflow/user/NoOpUserWorkflowAdapter.java @@ -208,11 +208,6 @@ public class NoOpUserWorkflowAdapter extends AbstractUserWorkflowAdapter { } @Override - public List<WorkflowFormTO> getForms(final String workflowId, final String name) { - return Collections.emptyList(); - } - - @Override public WorkflowFormTO getForm(final String workflowId) throws NotFoundException, WorkflowException { http://git-wip-us.apache.org/repos/asf/syncope/blob/949d2e62/core/src/main/java/org/apache/syncope/core/workflow/user/activiti/ActivitiUserWorkflowAdapter.java ---------------------------------------------------------------------- diff --git a/core/src/main/java/org/apache/syncope/core/workflow/user/activiti/ActivitiUserWorkflowAdapter.java b/core/src/main/java/org/apache/syncope/core/workflow/user/activiti/ActivitiUserWorkflowAdapter.java index 0765cfa..a57723a 100644 --- a/core/src/main/java/org/apache/syncope/core/workflow/user/activiti/ActivitiUserWorkflowAdapter.java +++ b/core/src/main/java/org/apache/syncope/core/workflow/user/activiti/ActivitiUserWorkflowAdapter.java @@ -82,7 +82,6 @@ import org.apache.syncope.core.workflow.user.AbstractUserWorkflowAdapter; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.jdbc.core.JdbcTemplate; import org.springframework.transaction.annotation.Transactional; /** @@ -218,45 +217,6 @@ public class ActivitiUserWorkflowAdapter extends AbstractUserWorkflowAdapter { return result; } - protected void cleanupHistory(final SyncopeUser user) { - JdbcTemplate jdbcTemplate = new JdbcTemplate(dataSource); - - List<String> taskIds = jdbcTemplate.queryForList( - "SELECT TASK_ID_ FROM ACT_HI_VARINST WHERE NAME_='" + TASK_IS_FORM - + "' AND LONG_=1 AND PROC_INST_ID_='" + user.getWorkflowId() + "'", String.class); - - StringBuilder update = new StringBuilder(); - - update.append("DELETE FROM ACT_HI_VARINST WHERE PROC_INST_ID_='").append(user.getWorkflowId()).append("' "); - for (String taskId : taskIds) { - update.append("AND TASK_ID_<>'").append(taskId).append("' "); - } - jdbcTemplate.execute(update.toString()); - - update.setLength(0); - update.append("DELETE FROM ACT_HI_TASKINST WHERE PROC_INST_ID_='").append(user.getWorkflowId()).append("' "); - for (String taskId : taskIds) { - update.append("AND ID_<>'").append(taskId).append("' "); - } - jdbcTemplate.execute(update.toString()); - - update.setLength(0); - update.append("DELETE FROM ACT_HI_ACTINST WHERE PROC_INST_ID_='").append(user.getWorkflowId()).append("' "); - for (String taskId : taskIds) { - update.append("AND TASK_ID_<>'").append(taskId).append("' "); - } - jdbcTemplate.execute(update.toString()); - - List<String> byteArrayIds = jdbcTemplate.queryForList( - "SELECT BYTEARRAY_ID_ FROM ACT_HI_VARINST WHERE BYTEARRAY_ID_ IS NOT NULL", String.class); - update.setLength(0); - update.append("DELETE FROM ACT_GE_BYTEARRAY WHERE NAME_ LIKE 'hist.%' "); - for (String byteArrayId : byteArrayIds) { - update.append("AND ID_<>'").append(byteArrayId).append("' "); - } - jdbcTemplate.execute(update.toString()); - } - /** * Saves resources to be propagated and password for later - after form submission - propagation. */ @@ -332,8 +292,6 @@ public class ActivitiUserWorkflowAdapter extends AbstractUserWorkflowAdapter { Set<String> tasks = getPerformedTasks(user); - cleanupHistory(user); - return new WorkflowResult<Map.Entry<Long, Boolean>>( new SimpleEntry<Long, Boolean>(user.getId(), propagateEnable), propByRes, tasks); } @@ -375,8 +333,6 @@ public class ActivitiUserWorkflowAdapter extends AbstractUserWorkflowAdapter { postTasks.removeAll(preTasks); postTasks.add(task); - cleanupHistory(user); - return postTasks; } @@ -774,18 +730,6 @@ public class ActivitiUserWorkflowAdapter extends AbstractUserWorkflowAdapter { return forms; } - @Override - public List<WorkflowFormTO> getForms(final String workflowId, final String name) { - List<WorkflowFormTO> forms = getForms( - taskService.createTaskQuery().processInstanceId(workflowId). - taskName(name).taskVariableValueEquals(TASK_IS_FORM, Boolean.TRUE)); - - forms.addAll(getForms(historyService.createHistoricTaskInstanceQuery().processInstanceId(workflowId). - taskName(name).taskVariableValueEquals(TASK_IS_FORM, Boolean.TRUE))); - - return forms; - } - protected <T extends Query<?, ?>, U extends Object> List<WorkflowFormTO> getForms(final Query<T, U> query) { List<WorkflowFormTO> forms = new ArrayList<WorkflowFormTO>(); @@ -953,8 +897,6 @@ public class ActivitiUserWorkflowAdapter extends AbstractUserWorkflowAdapter { } } - cleanupHistory(user); - return new WorkflowResult<UserMod>(userMod, propByRes, postTasks); } } http://git-wip-us.apache.org/repos/asf/syncope/blob/949d2e62/core/src/main/resources/workflow.properties ---------------------------------------------------------------------- diff --git a/core/src/main/resources/workflow.properties b/core/src/main/resources/workflow.properties index 19ec32a..5817e92 100644 --- a/core/src/main/resources/workflow.properties +++ b/core/src/main/resources/workflow.properties @@ -16,5 +16,6 @@ # under the License. uwfAdapter=org.apache.syncope.core.workflow.user.activiti.ActivitiUserWorkflowAdapter rwfAdapter=org.apache.syncope.core.workflow.role.NoOpRoleWorkflowAdapter +historyLevel=activity jobExecutorActivate=true activitiVersion=${activiti.version} http://git-wip-us.apache.org/repos/asf/syncope/blob/949d2e62/core/src/main/resources/workflowContext.xml ---------------------------------------------------------------------- diff --git a/core/src/main/resources/workflowContext.xml b/core/src/main/resources/workflowContext.xml index e5367e5..2c6a810 100644 --- a/core/src/main/resources/workflowContext.xml +++ b/core/src/main/resources/workflowContext.xml @@ -46,6 +46,7 @@ under the License. <property name="jpaHandleTransaction" value="true"/> <property name="jpaCloseEntityManager" value="false"/> + <property name="history" value="${historyLevel}"/> <property name="jobExecutorActivate" value="${jobExecutorActivate}"/> <property name="customSessionFactories"> http://git-wip-us.apache.org/repos/asf/syncope/blob/949d2e62/core/src/test/java/org/apache/syncope/core/rest/UserWorkflowTestITCase.java ---------------------------------------------------------------------- diff --git a/core/src/test/java/org/apache/syncope/core/rest/UserWorkflowTestITCase.java b/core/src/test/java/org/apache/syncope/core/rest/UserWorkflowTestITCase.java index f65fe73..a848031 100644 --- a/core/src/test/java/org/apache/syncope/core/rest/UserWorkflowTestITCase.java +++ b/core/src/test/java/org/apache/syncope/core/rest/UserWorkflowTestITCase.java @@ -19,7 +19,6 @@ package org.apache.syncope.core.rest; import static org.junit.Assert.assertEquals; -import static org.junit.Assert.assertFalse; import static org.junit.Assert.assertNotEquals; import static org.junit.Assert.assertNotNull; import static org.junit.Assert.assertNull; @@ -235,7 +234,7 @@ public class UserWorkflowTestITCase extends AbstractTest { WorkflowFormTO form = userWorkflowService.getFormForUser(userTO.getId()); assertNotNull(form); - // 3. first claim ny bellini .... + // 3. first claim by bellini .... UserWorkflowService userService3 = clientFactory.create( "bellini", ADMIN_PWD).getService(UserWorkflowService.class); @@ -259,39 +258,9 @@ public class UserWorkflowTestITCase extends AbstractTest { assertEquals(preForms, userWorkflowService.getForms().size()); assertNull(userWorkflowService.getFormForUser(userTO.getId())); - // 7. search approval into the history as well - forms = userWorkflowService.getFormsByName(userTO.getId(), "Create approval"); - assertFalse(forms.isEmpty()); - - int count = 0; - for (WorkflowFormTO hform : forms) { - if (form.getTaskId().equals(hform.getTaskId())) { - count++; - - assertEquals("createApproval", hform.getKey()); - assertNotNull(hform.getCreateTime()); - assertNotNull(hform.getDueDate()); - assertTrue(Boolean.parseBoolean(hform.getPropertyMap().get("approve").getValue())); - assertNull(hform.getPropertyMap().get("rejectReason").getValue()); - } - } - assertEquals(1, count); - - userService.delete(userTO.getId()); - - try { - userService.read(userTO.getId()); - fail(); - } catch (Exception ignore) { - assertNotNull(ignore); - } - - try { - userWorkflowService.getFormsByName(userTO.getId(), "Create approval"); - fail(); - } catch (Exception ignore) { - assertNotNull(ignore); - } + // 7.check that no more forms are still to be processed + forms = userWorkflowService.getForms(); + assertEquals(preForms, forms.size()); } }
